UnityShader 入门笔记
(一)属性
对于Int 、Float 、Range 这些数字类型的属性,其默认值就是一个单独的数字;对于Color 和Vector 这类属性,默认值是用圆括号包围的一个四维向量;对于2D 、Cube 、3D 这3种纹理类型,默认值的定义稍微复杂,它们的默认值是通过一个字符串后跟一个花括号来指定的,其中,字符串要么是空的,要么是内置的纹理名称,如“white”“black”“gray”或者“bump”。花括号的用处原本是用于指定一些纹理属性的,例如在Unity 5.0以前的版本中,我们可以通过TexGen CubeReflect 、TexGen CubeNormal 等选项来控制固定管线的纹理坐标的生成。但在Unity 5.0以后的版本中,这些选项被移除了,如果我们需要类似的功能,就需要自己在顶点着色器中编写计算相应纹理坐标的代码。
----UnityShader入门精要
属性定义语法格式
变量名(“展示给使用者的名称,或者释义” , 类型)=(默认值)
Properties 语块支持的类型
属性类型 | 默认值的定语语法 | 案例 |
---|---|---|
Int | number | _Int(“IntNum” , Int) = 2 |
Float | number | _Float(“FloatNum” , Float) = 2 |
Range(min,max) | number | _Range(“Range”,Range(0 , 100) = 50 |
Color | (number,number,number,number ) | _Color(“Color” , Color) = (1,1,1,1) |
Vector | (number,number,number,number ) | _Vector(“Vector” , Vector) = (2,3,45,4) |
2D | “defaultTexture”{} | _2D(“2D” , 2D)=“white”{} |
3D | “defaultTexture”{} | _3D(“3D” , 3D)=""{} |
Cube | “defaultTexture”{} | _Cube(“Cube” ,Cube)=“black”{} |
Shader "Custom/MyFirstShader" {
Properties {
//变量名("展示给使用者的名称,或者释义" , 类型)=(默认值)
_as("adf",Color)=(1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_Float("mFloat",Float)=1.5
_Int("mInt",Int)=2
_Range("mRange",Range(0,10))=1
_Color ("mColor2", Color) = (1,1,1,1)
_Vector("mVector",Vector)=(1,2,3,1)//xyzw
//texture
_2D("m2DTexture",2D)=""{}
_Cube("mCube",Cube)="white"{}
_3D("m3DTexture",3D)="black"{}
}
FallBack "Diffuse"
}
上述代码在Inspector显示结果