【Unity Shader 中Properties 相关介绍】
Shader "Unlit/NewUnlitShader"//第一行代码是shader在项目里的路径位置,类似建文件夹一样。当在Material选择shader时,根据自己定义的路径选择相应的shader,"/"表示文件的下一层。//下面是一个基础的无阴影的shader正文。{ Properties { //下面是属性面板,会显示到的Inspector, _MainTex ("Texture", 2D) = "white" {} //它的结构如下 //_Variable Name ("Inspector GUI Name", Type) = (Default Value) //_变量名 ("在Inspector面板显示的名称" 变量类型) = (变量的默认值) //下面是左到右的对应解释 //_Variable Name : 变量名,Pass结构里会用到,会起到相关联作用。 //Inspector GUI Name : 这个是在Inspector面板显示的名称,主要是方便使用和理解,像是对应的注解。 //Type :变量的类型。一般定义了变量名后,变量的类型可选择的就不是很多了,可以在网上找找Unity Shader变量类型。 //Default Value : 变量的默认值,不可省略哦。 //下面是可能会出现的 Properties 的结构 _2D("2D", 2D) = "" {} _Color("Color",Color) = (1,1,1,1) _Value("Value",Range(0,10)) = 2.5 _Float("Float",Float) = 0 _Vector("Vector",Vector) = (0,0,0,0) _Rect("Rect",Rect) = "" {} _Cube("Cube",Cube) = "" {} //_Color("Color",Color) = (1,1,1,1) = 白色,也即默认变量值是白色。 //_Value("Value",Range(0,10)) = 2.5这是常数,其中Range 是一个范围值,在Inspector面板显示的是一个滑动条,左小右大顺序。 //_Float("Float",Float) = 0 其中Float 是浮点数,可以输入数字的变量。 //_Vector("Vector",Vector) = (0,0,0,0) Vector是向量,(0,0,0,0)是个四维向量,在Inspector面板显示的是四个数字坑位。通常会跟相关联的变量做加减乘除数学运算,最终实现效果。 //_A("B",C) = (D) //等于号的右侧的一目了然,上面介绍得很清楚。 //等于号的左侧(D),为什么有的地方是 "" {} 这种形式,有的是 (1,1,1,1) 这种形式,有的直接是 数字 这种形式? /////////////////////////////////////////////////////////////////////////////////////////////////////// //例如 : _2D _Rect _Cube 这三个变量的默认值是这"" {}形式。 //其中 _2D 是图片, _Rect 是UV _Cube 是模型。 //根据不同的变量名类型造成的,变量名不一样,含义会有所变化。 //而这些图片、UV和模型都需要主存加载相应数据给显存的,渲染所需的数据从硬盘最终加载到显存。 //渲染中需要加载到显存中的数据非常复杂,如果数据全部读取或者存留, //这样加载的计算量巨大且耗时,需要通过CPU设置渲染状态,"引导"GPU执行的命令。 //也即CPU提供数据给GPU的部分,其中CPU添加命令 (应用阶段),GPU读取命令并且执行。 //上面这些是渲染流水线的基础知识,具体的细节可以参考第一篇里的书籍。http://t.csdn.cn/Dm8Hs ////////////////////////////////////////////////////////////////////////////////////// } SubShader 这一部分的内容留到下次介绍 ////////////////////////////////////////////////////////////////////////////////////// { ************************************** Pass { CGPROGRAM ************************************** } ENDCG } }}显示在Inspector面板上的内容
_MainTex ("Texture", 2D) = "white" {}
_2D("2D", 2D) = "" {}
_Color("Color",Color) = (1,1,1,1)
_Value("Value",Range(0,10)) = 2.5
_Float("Float",Float) = 0
_Vector("Vector",Vector) = (0,0,0,0)
_Rect("Rect",Rect) = "" {}
_Cube("Cube",Cube) = "" {}
对应的代码块,可以直观的对比一下。
页:
[1]