Shader知识要点
-
SV_POSITION与POSITION
SV 是 System Value的意思
POSITION 顶点的坐标
SV_POSITION 是默认固定的系统值,不得改变
-
SV_Target与Color
COLOR 顶点颜色
SV_TARGET 是系统值,表示该函数返回的是用于下一个阶段OutPut Merger的颜色值,这里只简单的做了颜色值得传递。
-
Billboard
顶点矩阵转换
mul(UNITY_MATRIX_P,mul(UNITY_MATRIX_MV,float4(0,0,0,1)) + float4(IN.vertex.x,IN.vertex.y,0,0)); -
ZWRITE && ZTEST
ZWRITE表示是否将深度写入GBuffer中
- ZWRITE ON 表示写入
- ZWRITE OFF 表示不写入
ZTEST表示是否将颜色写入GBUFFER中
ZTEST将要渲染物体的深度与ZWRITE中写入的深度进行比较,符合要求则渲染,不符合则不渲染
- Less
- Greater
- LEqual
- GEqual
- Equal
- NotEqual
- Alway
-
Alpha Blend
混合公式:
float4 result = SrcFactor * fragment_output + DstFactor * pixel_color;
fragment_output 是指片段着色器输出的颜色值
pixel_color 是指颜色缓存中已经存在的颜色值
Blend One Zero One代表SrcFactor等于一,DstFactor等于零
相当于 Blend float4(1.0) * fragment_color + float4(0.0) * pixel_color,
因此只会输出当前片段着色器的颜色值等多代号
选项代号 与之等价的代码 One float4(1.0) Zero float4(0.0) SrcColor fragment_output SrcAlpha float4(fragment_output.a) DstColor pixel_color DstAlpha float4(pixel_color.a) OneMinusSrcColor float4(1.0) - fragment_output OneMinusSrcAlpha float4(1.0 - fragment_output.a) OneMinusDstColor float4(1.0) - pixel_color OneMinusDstAlpha float4(1.0 - pixel_color.a) -
Time && _SinTime && _CosTime
_Time && _SinTime && _CosTime float4类型,xyzw分别代表不同的值
字段 类型 描述与分量取值 _Time float4 Time (t/20, t, t2, t3), use to animate things inside the shaders. _SinTime float4 Sine of time: (t/8, t/4, t/2, t). _CosTime float4 Cosine of time: (t/8, t/4, t/2, t).