顶点/片元着色器的基本结构
模型数据从哪里来
Struct a2v
{
float4 vertex:POSITION;
float4 NORMAL:NORMAL;
float4 texcoord:TEXCOORD0;
}
- Unity支持的语义有:POSITION,TANGENT,NORMAL,TEXCOORD0,TEXCOORD1,TEXCOOD2,TEXCOORD3,COLOR等。
- 包含了顶点着色器的数据
- a表示应用(application),v表示顶点着色器(vertex shader),a2v的意思就是把数据从应用阶段传递到顶点着色器中。
- 一个模型通常包含了一组三角面片,每个三角由撒个顶点构成,而每个顶点有包含了一些数据,例如顶点位置,发现,切线,纹理坐标,顶点颜色等。
顶点着色器和片元着色器之间如何通信
struct v2f
{
float4 pos:SV_POSITION;
float4 color:COLOR0;
}
- v2f用于在顶点着色器和片元着色器之间传递信息
- 同样的,v2f中也需要指定每个变量的语义
- 在本例子中,我们使用了SV_POSITION和COLOR0语义
如何使用属性
Properties
{
_Color("Color Tint", Color) = (1, 1, 1, 1)
}
ShaderLab属性类型和Cg变量类型的批配关系
- ShaderLab属性类型——Cg变量类型
- Color,Vector——float4,half4,fixed4
- Range,Float——float,half,fixed
- 2D——sampler2D
- Cube——samplerCube
- 3D——sampler3D
unitform fixed4_Color;
unitform关键词是Cg修饰变量和参数的一种修饰词,它仅仅用于提供一些关于该变量和参数的一种修饰词,它仅仅用于提供一些关于该变量的初始值是如何指定和储存的相关信息,在Unity Shader中的,unitform关键词是可以省略的