1.1:Get Started with Unity Shaders
文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。
本系列原更新于作者的github博客,这里给出链接。
第1章开始正式进入Unity Shader的学习。
什么是Shader
本系列约定,如无特殊说明,文中出现的Shader均基于Unity Shaderlab
每一门编程语言的诞生都是为了方便人们和计算机进行更好地交互。Shader是一门着色器语言,它作用于计算机Rendering(绘制,通常译为渲染)流程的一部分。GPU从CPU获取到顶点信息后,会进入顶点着色器,随后进入片元着色器(在其他shader语言中,着色器名称可能不尽相同),经过一系列变换运算,最终呈现在屏幕上(渲染管线部分可以参考冯乐乐的《Unity Shader入门精要》第二章)。而本系列介绍的Shader是以Unity的shaderlab为基础的,shaderlab除了定制着色器以外,还提供了和Unity交互的途径,自带了Unity的优化,如批处理等。话不多说,直接进入正题。
第一个Shader
我们首先来看下面这个Shader例子:
Shader "MyShader" {
Properties {
_MyTexture ("My Texture", 2D) = "white" { }
// other properties like colors or vectors go here as well
}
SubShader {
// here goes the 'meat' of your
// - surface shader or
// - vertex and program shader or
// - fixed function shader
}
SubShader {
// here goes a simpler version of the SubShader
// above than can run on older graphics cards
}
FallBack "Diffuse"
}
有编程基础的可以看出一点端倪。
首先,整个Shader是包含在一个大括号里,其中“MyShader”是这个Shader在Unity工程中的标签名(注意与文件名区分开),语法是“[SubTagName/]ShaderName”。
接着,可以看到Shader下有两种代码块——Properties以及SubShader。
Properties:用于存放各个Shader的各个属性以及初始值,声明的属性用于暴露shader(着色器)实现过程中相关的参数值(如:材质的整体颜色等),暴露出来的属性参数可供Shader使用者进行调整、和脚本交互,以得到更多样的效果。
SubShader:SubShader是Shader代码的核心部分。由于运行终端的不同,其所能支持的渲染等级也是不同的,所以我们在必要时可以编写多个SubShader,Unity会为我们从上到下寻找并使用终端所能支持的第一个SubShader。在SubShader中,可以设置细节层级,渲染方式等,也可以插入Cg/HLSL代码块,这也是Shader核心中的核心。
最后则是FallBack, 顾名思义,这是我们唯一的退路,这是在上面所有SubShader都失效的情况下所使用的Shader。当然,我们可以通过FallBack Off禁用FallBack功能。
最后
通过上面的例子,我们就揭开了Shader的神秘面纱,在后续的分享中,会进一步讲述Shader中的各个细节。
1.1:Get Started with Unity Shaders的更多相关文章
- Unity Shaders 第一个默认程序分析
Unity Shaders 第一个默认程序 Shader "Custom/Shader" { Properties { _MainTex ("Base (RGB)&quo ...
- Unity Shaders and Effets Cookbook
Unity Shaders and Effects Cookbook 最近在读 <Unity Shaders and Effects Cookbook> 中文名称:<Unity 着色 ...
- 【Unity Shaders】学习笔记——SurfaceShader(十一)光照模型
[Unity Shaders]学习笔记——SurfaceShader(十一)光照模型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5664792.html ...
- 【Unity Shaders】学习笔记——SurfaceShader(十)镜面反射
[Unity Shaders]学习笔记——SurfaceShader(十)镜面反射 如果你想从零开始学习Unity Shader,那么你可以看看本系列的文章入门,你只需要稍微有点编程的概念就可以. 水 ...
- 【Unity Shaders】学习笔记——SurfaceShader(八)生成立方图
[Unity Shaders]学习笔记——SurfaceShader(八)生成立方图 转载请注明出处:http://www.cnblogs.com/-867259206/p/5630261.html ...
- 【Unity Shaders】学习笔记——SurfaceShader(七)法线贴图
[Unity Shaders]学习笔记——SurfaceShader(七)法线贴图 转载请注明出处:http://www.cnblogs.com/-867259206/p/5627565.html 写 ...
- 【Unity Shaders】学习笔记——SurfaceShader(六)混合纹理
[Unity Shaders]学习笔记——SurfaceShader(六)混合纹理 转载请注明出处:http://www.cnblogs.com/-867259206/p/5619810.html 写 ...
- 【Unity Shaders】学习笔记——SurfaceShader(五)让纹理动起来
[Unity Shaders]学习笔记——SurfaceShader(五)让纹理动起来 转载请注明出处:http://www.cnblogs.com/-867259206/p/5611222.html ...
- 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射
[Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...
随机推荐
- Elasticsearch Java API的基本使用
说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识. 客户端 你可以用Java客户端做很多事情: 执行标准的 ...
- Redis防止重複請求鎖功能
class Lock { const PREFIX_KEY = "MY_LOCK:"; static private $LOCKED = []; static public fun ...
- cocos2dx2.x&3.x部分函数对照表
| v2.1 names | v3.0 names | | ccp | Point | | ccpNeg | Point::- | | ccpAdd | Point::+ | | ccpSub | P ...
- layui---form表单模块
虽然对layui比较熟悉了,但是今天有时间还是将layui的form表单模块重新看一下. https://www.layui.com/doc/modules/form.html 一.更新渲染 layu ...
- Python Pandas 箱线图
各国家用户消费分布 import numpy as np import pandas as pd import matplotlib.pyplot as plt data = { 'China': [ ...
- maven deploy 上传jar包到私有仓库
mvn \ deploy:deploy-file \ -DgroupId=com.weibo.datasys \ -DartifactId=data-flow \ -Dversion=2.0.0 \ ...
- PPT文件太大时可以考虑另存为PPTX格式
遇到一个PPT文件有24M,30多页,里面主要有一些图片. 使用自带的图片压缩功能进行压缩,发现没有什么改变,后来找了一些工具软件压缩,最多也只能减少22%. 后来另存为PPTX格式,减小到1.74M ...
- x86汇编
● 实模式下32bit处理器,与8086兼容,例如loop 指令结束标志,只判断cx,而不是ecx ● IO端口 实际上是一些寄存器,在IO接口当中.向外设读写数据,要通过读写IO端口来实现. 有些计 ...
- 2016CCPC长春 - B/D/F/H/I/J/K - (待补)
目录: B - Fraction D - Triangle F - Harmonic Value Description H - Sequence I I - Sequence II B题:HDU 5 ...
- Luogu 1583 - 魔法照片 - [简单排序题]
题目链接:https://www.luogu.org/problemnew/show/P1583 题目描述一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...