ShaderLab 语法:Pass
通道 (Pass) 块使对象的几何结构被渲染一次。
语法
- Pass { [Name and Tags] [RenderSetup] [TextureSetup] }
- 基本通道命令包含了渲染设置命令的可选列表,后面可跟随一系列纹理以供使用。
名称和标记
通道 (Pass) 可以定义其名称和任意数量的标记 - 名称/值字符串告知渲染引擎“通道”(Pass) 的目的。
渲染设置
通道可设置图形硬件的各种状态,例如,是否应打开 alpha 混合,是否使用雾化等。其命令如下:
- Material { Material Block }
- 定义在顶点光照管线中使用的材质。有关详细信息,请参阅材质页面
- Lighting On | Off
- 开启或关闭顶点光照。有关详细信息,请参阅材质页面
- Cull Back | Front | Off
- 设置多边形剔除模式。
- ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
- 设置深度测试模式。
- ZWrite On | Off
- 设置深度编写模式。
- Fog { Fog Block }
- 设置雾化参数。
- AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue
- 开启 alpha 测试。
- Blend SourceBlendMode DestBlendMode
- 设置 alpha 混合模式。
- Color Color value
- 如果顶点光照是关闭的,则设置使用的颜色。
- ColorMask RGB | A | 0 | any combination of R, G, B, A
- 设置颜色编写遮蔽图。编写 ColorMask 0 可关闭所有颜色通道的渲染。
- Offset OffsetFactor , OffsetUnits
- 设置深度偏移。请注意,从 Unity 3.0 版本起,该命令只接受常量(即:非着色器参数)。
- SeparateSpecular On | Off
- 打开或关闭顶点光照单独的高光颜色。有关详细信息,请参阅材质页面
- ColorMaterial AmbientAndDiffuse | Emission
- 计算顶点光照时使用逐顶点颜色。有关详细信息,请参阅材质页面
纹理设置
渲染状态设置后,您可以应用 SetTexture 命令指定要应用的多种纹理及其组合模式:
纹理设置可配置固定功能多层材质管线,并且如果使用自定义片段着色器,则纹理设置将被忽视。
详细信息逐像素光照
逐像素光照管线通过在多通道中渲染对象作用。Unity 渲染对象一次以获得环境光照和所有顶点光照。然后渲染每个影响独立附加通道内的对象的像素光照。有关详细信息,请参阅渲染器管线。
逐顶点光照
逐顶点光照是对每个顶点都进行了计算的标准的 Direct3D/OpenGL 光照模式。Lighting on 可打开光照。光照受 Material 块、ColorMaterial 和 SeparateSpecular 令影响。有关详细信息,请参阅材质页面。
另请参阅
有几个特别通道支持重复使用常用功能或实施各种高端特效:
UsePass 包含另一个着色器中的已命名通道。
GrabPass 捕获屏幕的内容并置入纹理,以供在之后的通道中使用。
小节
ShaderLab syntax: Color, Material, Lighting
ShaderLab 语法:剔除和深度测试 (Culling & Depth Testing)
ShaderLab 语法:纹理组合器 (Texture Combiners)
ShaderLab 语法:雾 (Fog)
ShaderLab 语法:Alpha 测试 (Alpha testing)
ShaderLab 语法:混合 (Blending)
ShaderLab 语法:通道标记 (Pass Tags)
ShaderLab 语法:名称 (Name)
ShaderLab 语法:绑定通道 (BindChannels)