Unity3D:ShaderLab 命令-ColorMask

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

ShaderLab 命令:ColorMask

设置颜色通道写入遮罩,以防止 GPU 写入渲染目标中的通道。

默认情况下,GPU 写入所有通道 (RGBA)。对于某些效果,您可能希望不修改某些通道;例如,您可以禁用颜色渲染来渲染无色阴影。另一个常见的用例是完全禁用颜色写入,以便您在一个缓冲区中填充数据而无需写入其他缓冲区;例如,您可能需要在不写入渲染目标的情况下填充模板缓冲区。

渲染管线兼容性

功能名称内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义 SRP
ColorMask

用法

此命令会更改渲染状态。在 Pass 代码块中使用它可为该通道设置渲染状态,或者在 SubShader 代码块中使用它可为该子着色器中的所有通道设置渲染状态。

签名示例语法功能
ColorMask <channels>ColorMask RGB写入默认渲染目标的给定通道。
ColorMask <channels> <render target>ColorMask RGB 2如上,但针对给定的渲染目标。

有效参数值

参数功能
render target整数,0 到 7。渲染目标索引。
channels0启用对 R、G、B 和 A 通道的颜色写入。
R启用对红色通道的颜色写入。
G启用对绿色通道的颜色写入。
B启用对蓝色通道的颜色写入。
A启用对 Alpha 通道的颜色写入。
RGB  A 的任意组合,无空格。例如:RB启用对给定通道的颜色写入。

示例

Shader "Examples/CommandExample"
{
    SubShader
    {
         // 此处是定义子着色器的代码的其余部分。

        Pass
        {    
              // 对此通道启用仅写入 RGB 通道,这会禁用向 Alpha 通道写入
              ColorMask RGB

              // 此处是定义通道的代码的其余部分
        }
    }
}

此示例代码演示在 SubShader 代码块中使用此命令的语法。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // 对此通道启用仅写入 RGB 通道,这会禁用向 Alpha 通道写入
         ColorMask RGB

         // 此处是定义子着色器的代码的其余部分。

        Pass
        {    
              // 此处是定义通道的代码的其余部分。
        }
    }
}


3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:ShaderLab 命令-BlendOp (mvrlink.com)

下一篇:Unity3D:ShaderLab 命令-Conservative (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号