UnityShader学习笔记(2)——UnityShader基础
Unity Shader 基础
(一)Unity Shader 使用流程
在Unity中我们需要配合使用材质(Material)和Unity Shader才能达到需要的效果。常见的流程为:
(1)创建一个材质;
(2)创建一个Unity Shader,并赋给上一步的材质;
(3)把材质赋给要渲染的对象;
(4)在材质面板中调整Unity Shader的属性。
(二)Unity Shader 的结构
基础结构:
Shader "ShaderName"{
Properties{
//属性
}
SubShader{
//显卡A使用的子着色器
}
SubShader{
//显卡B使用的子着色器
}
Fallback "VertexLit"
}
1.给Shader命名
每个Unity Shader文件的第一行给Shader命名,在名字前加“/”可以控制Unity Shader在面板列表中出现的位置(就像给文件指定文件夹)。以下Shader的位置就是Shader -> Custom -> MyShader。
Shader "Custom/MyShader"
2.材质和UnityShader的桥梁:属性(Properties)
定义:
Properties{
Name ("display name",PropertyType) = DefaultValue
Name ("display name",PropertyType) = DefaultValue
}
每个属性的名字(Name)通常由一个下划线开始。显示的名称(display name)是出现在材质面板上的名字。还需要为每个属性指定它的类型(PropertyType),另外还需指定默认值(DefaultValue)。
Properties语义块支持的属性类型
属性类型 | 默认值的定义语法 | 例子 |
---|---|---|
Int | number | _Int(“Int”, Int) = 2 |
Float | number | _Float(“Float”, Float) = 1.5 |
Range(min,max) | number | _Range(“Range”, Range(0.0,0.5)) = 3.0 |
Color | (number,number,number,number) | _Color(“Color”,Color) = (1,1,1,1) |
Vector | (number,number,number,number) | _Vector(“Vector”,Vector) = (2,3,6,1) |
2D | “defaulttexture”{} | _2D(“2D”,2D) = “”{} |