ShaderLab: Pass
Pass代码块可以使游戏对象的几何模型渲染。
Syntax
Pass { [Name and Tags] [RenderSetup] }
基础的Pass命令,包含了一系列渲染状态设置命令。
Name and tags
一个Pass块可以定义它的 Name 和 任意数量的 Tags。通过这些 名/值 字符串,把Pass的意图传递给渲染引擎。
Render state set-up
一个Pass设置各种的显卡状态,比如是否 alpha混合应该打开,又或者是否该使用深度测试。
命令如下:
Cull
Cull Back | Front | Off
设置多边形剔除模式。
ZTest
ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
设置深度缓冲测试模式。
ZWrite
ZWrite On | Off
设置深度缓冲写入模式。
Offset
Offset OffsetFactor, OffsetUnits
设置z缓冲区深度偏移。 查看文档 Cull and Depth page 获取更多细节。
查看文档 Cull and Depth 获取更多关于 Cull, ZTest, ZWrite and Offset 的细节。
Blend
Blend sourceBlendMode destBlendMode
Blend sourceBlendMode destBlendMode, alphaSourceBlendMode alphaDestBlendMode
BlendOp colorOp
BlendOp colorOp, alphaOp
AlphaToMask On | Off
设置 alpha blending, alpha operation, and alpha-to-coverage modes. 查看文档 Blending 获取更多细节。
ColorMask
ColorMask RGB | A | 0 | any combination of R, G, B, A
设置颜色通道遮罩。 写入ColorMask 0来关闭渲染到所有颜色通道。Writing ColorMask 0 turns off rendering to all color channels. 默认模式会写入所有颜色通道(RGBA),但是对于一些特殊的效果,你可能希望不更改某些通道,或者完全禁止颜色写入。
当使用多重渲染目标(MRT)渲染, 可能会为每个渲染目标设置不同的彩色遮罩, 可以通过在末尾输入索引 (0–7)实现。例如,ColorMask RGB 3
将会渲染目标 #3 只写入其RGB通道。
Legacy fixed-function Shader commands
一些命令用于编写传统的固定管线Shader。这被认为是过时的功能, 比如 编写 Surface Shaders 或 Shader programs 允许更大的灵活性。 然而, 一些很简单的Shader, 使用固定管线方式编写有时会很简单, 所以在这里提供其命令。 注意,如果不使用固定管线Shader,那么以下所有命令都将被忽略.
Fixed-function Lighting and Material
Lighting On | Off
Material { Material Block }
SeparateSpecular On | Off
Color Color-value
ColorMaterial AmbientAndDiffuse | Emission
所有这些固定功能用来控制每个顶点的光照:它们打开它, 设置材质颜色, 打开镜面高光, 提供默认颜色 (如果顶点的光照时关闭的), 并控制mesh的顶点如何影响光照. 查看文档 Materials 获取更多细节。
Fixed-function Fog
Fog { Fog Block }
设置 固定管线 雾 参数. 查看文档 onFogging 获取更多细节.
Fixed-function AlphaTest
AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue
打开固定管线alpha测试. 查看文档 alpha testing 获取更多细节。
Fixed-function Texture combiners
在渲染状态设置后, 使用 SetTexture 命令来指定一些纹理和它们的混合模式:
SetTexture textureProperty { combine options }
Details
Shader passes 与Unity的渲染管线交互有几种方式; 例如, 一个Pass可以标示它只用于deferred shading 通过 Tags 命令。 某些 Pass 可以在同一个GameObject上运行多次; 例如, 在 forward rendering 中的 “ForwardAdd” pass 类型,会运行多次,基于有多少光作用于GameObject。查看文档 Render Pipeline 获取更多细节.