什么是shaderLab
更高一层的渲染抽象层。

Properties 属性--出现在材质面板,可配置。

SubShader
定义一些列pass以及可选的状态(RenderSetup)和标签(tag)的设置,每个pass定义了一次完整的渲染流程。
- Cull: Cull Back|Front|Off 设置剔除模式,剔除背面/正面/关闭剔除
- ZTest: ZTest Less Greater|LEqual|GEqual|NotEqual|Always 深度测试时使用的函数
- ZWrite: ZWrite On|Off 开启|关闭深度写入
- Blend: Blend SrcFactor DstFactor 开启并设置混合模式
-
Offset:OffsetFactor, OffsetUnits Set Z buffer depth offset
-
ColorMask: RGB | A | 0 | any combination of R, G, B, A 写入颜色通道,0关闭颜色通道的写入
https://docs.unity3d.com/Manual/SL-Pass.html
SubShader中的标签指明是如何渲染这个对象。

Pass语义块
定义name后,可通过UserPass进行引用 UserPass "路径/NAME"
Pass{
name
Tags
RenderSetup
.....
CGPROGRAM
......
ENDCG
}
pass中的标签指明怎么渲染物体。
- LightMode:定义该pass在unity的渲染流水线中的角色。Tag{"LightMode"="ForwardBase"}
Always: Always rendered; no lighting is applied.
ForwardBase: Used in Forward rendering, ambient, main directional light, vertex/SH lights and lightmaps are applied.
ForwardAdd: Used in Forward rendering; additive per-pixel lights are applied, one pass

本文介绍了Unity中的ShaderLab基础知识,包括Properties属性、SubShader和Pass的使用,如Cull、ZTest、ZWrite等状态设置。此外,详细讲解了Shader中的语义,如系统数值语义SV_POSITION,以及如何通过优化降低Shader性能的影响,如避免分支和循环。了解这些内容有助于提升Unity渲染效果的控制和性能优化。

1832

被折叠的 条评论
为什么被折叠?



