设置颜色通道写入遮罩,以防止 GPU 写入渲染目标中的通道。
默认情况下,GPU 写入所有通道 (RGBA)。对于某些效果,您可能希望不修改某些通道;例如,您可以禁用颜色渲染来渲染无色阴影。另一个常见的用例是完全禁用颜色写入,以便您在一个缓冲区中填充数据而无需写入其他缓冲区;例如,您可能需要在不写入渲染目标的情况下填充模板缓冲区。
| 功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 
|---|---|---|---|---|
| ColorMask | 是 | 是 | 是 | 是 | 
此命令会更改渲染状态。在 Pass 代码块中使用它可为该通道设置渲染状态,或者在 SubShader 代码块中使用它可为该子着色器中的所有通道设置渲染状态。
| 签名 | 示例语法 | 功能 | 
|---|---|---|
ColorMask <channels> | 
	ColorMask RGB | 
	写入默认渲染目标的给定通道。 | 
ColorMask <channels> <render target> | 
	ColorMask RGB 2 | 
	如上,但针对给定的渲染目标。 | 
| 参数 | 值 | 功能 | 
|---|---|---|
| render target | 整数,0 到 7。 | 渲染目标索引。 | 
| channels | 0 | 
	Disables color writes to the R, G, B, and A channels. | 
R | 
	启用对红色通道的颜色写入。 | |
G | 
	启用对绿色通道的颜色写入。 | |
B | 
	启用对蓝色通道的颜色写入。 | |
A | 
	启用对 Alpha 通道的颜色写入。 | |
R、G、B 和 A 的任意组合,无空格。例如:RB
 | 
	启用对给定通道的颜色写入。 | 
Shader "Examples/CommandExample"
{
    SubShader
    {
         // 此处是定义子着色器的代码的其余部分。
        Pass
        {    
              // 对此通道启用仅写入 RGB 通道,这会禁用向 Alpha 通道写入
              ColorMask RGB
              // 此处是定义通道的代码的其余部分
        }
    }
}
此示例代码演示在 SubShader 代码块中使用此命令的语法。
Shader "Examples/CommandExample"
{
    SubShader
    {
         // 对此通道启用仅写入 RGB 通道,这会禁用向 Alpha 通道写入
         ColorMask RGB
         // 此处是定义子着色器的代码的其余部分。
        Pass
        {    
              // 此处是定义通道的代码的其余部分。
        }
    }
}