Shader:ShaderLab命令 ColorMask

ShaderLab command: ColorMask

概述

ColorMask命令可以设置颜色的写入通道,可以选择哪些通道写入,也就是会阻止GPU将一些通道写入到RenderTarget当中。

默认情况下,GPU会写入所有的通道RGBA,但有时候实现一些效果的时候,我们不需要4个通道,比如我们可以在渲染阴影贴图时关闭所有的颜色通道,因为只需要深度图。还有一种常用的场景就是完全禁用颜色写入,以便我们可以在一个缓冲区中填充数据而无需写入其他缓冲区,例如在不写入渲染目标的情况下填充模板缓冲区。

该命令在各个渲染管线的支持

全都支持

管线 内置管线 URP HDRP SRP
是否支持 支持 支持 支持 支持

使用方法

这个命令会改变渲染状态,写在Pass块中使用是设置该Pass的渲染状态,或者写在SubShader块中会设置这个SubShader所有的Pass的渲染状态

写法 示例 说明
ColorMask ColorMask RGB 将指定的通道写入到RenderTarget
ColorMask ColorMask RGB 2 将指定的通道写入到指定的RenderTarget

具体参数设置

参数 可以设置的值 说明
channels 0 关闭所有的颜色写入
R 只写入R通道
G 只写入G通道
B 只写入B通道
A 只写入A通道
任意R、G、B、A的组合 写入指定组合的通道,比如RB是仅写入R和B通道 比如 RB
render target 0-7 render target的索引

使用示例

我们使用一个物体来进行测试

Pass
{
	ColorMask RGBA
	......
}

Shader:ShaderLab命令 ColorMask_第1张图片

Pass
{
	ColorMask R
	......
}

Shader:ShaderLab命令 ColorMask_第2张图片

Pass
{
	ColorMask G
	......
}

Shader:ShaderLab命令 ColorMask_第3张图片

Pass
{
	ColorMask RB
	......
}

Shader:ShaderLab命令 ColorMask_第4张图片

Pass
{
	ColorMask 0
	......
}

Shader:ShaderLab命令 ColorMask_第5张图片

测试版本

2019.4

参考

https://docs.unity3d.com/2019.4/Documentation/Manual/SL-ColorMask.html

你可能感兴趣的:(Shader,Shader,Unity,ShaderLab,ColorMask)