配置与 GPU 上的模板缓冲区存储每个像素 8 位值的内存存储区。在 Unity 中,您可以使用模板缓冲区标记像素,然后仅渲染通过模板操作的像素。更多信息
参见术语表相关的设置。
功能名称 | 通用渲染管线一系列操作,用于获取场景的内容并在屏幕上显示它们。Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。更多信息 参见术语表 (URP) |
高清渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 |
---|---|---|---|---|
模板 | 是 | 是 | 是 | 是 |
签名 | 示例语法 | 功能 |
---|---|---|
模板 { Ref <ref> ReadMask <readMask> WriteMask <writeMask> Comp <comparisonOperation> Pass <passOperation> Fail <failOperation> ZFail <zFailOperation> CompBack <comparisonOperationBack> PassBack <passOperationBack> FailBack <failOperationBack> ZFailBack <zFailOperationBack> CompFront <comparisonOperationFront> PassFront <passOperationFront> FailFront <failOperationFront> ZFailFront <zFailOperationFront> } 请注意,所有参数都是可选的。 |
模板 { Ref 2 Comp equal Pass keep ZFail decrWrap }
|
根据给定的参数配置模板缓冲区。 |
参数 | 值 | 功能 |
---|---|---|
ref | 一个整数。范围为 0 到 255。默认值为 0。 | 参考值。 GPU 使用在 comparisonOperation 中定义的操作将模板缓冲区的当前内容与此值进行比较。 此值将与 readMask 或 writeMask 进行掩码,具体取决于是否正在执行读取或写入操作。 如果 Pass、Fail 或 ZFail 的值为 Replace,则 GPU 还可以将此值写入模板缓冲区。 |
readMask | 一个整数。范围为 0 到 255。默认值为 255。 | GPU 在执行模板测试时使用此值作为掩码。 有关模板测试方程,请参见上文。 |
writeMask | 一个整数。范围为 0 到 255。默认值为 255。 | GPU 在写入模板缓冲区时使用此值作为掩码。 请注意,与其他掩码一样,它指定了哪些位包含在操作中。例如,值 0 表示操作中不包含任何位,而不是模板缓冲区接收值为 0。 |
comparisonOperation | 比较操作。有关有效值,请参见比较操作值。默认值为 Always。 | GPU 对所有像素执行模板测试的操作。 这定义了所有像素的操作,而不管方向如何。如果除了 comparisonOperationBack 和 comparisonOperationFront 之外还定义了此值,则此值将覆盖它们。 |
passOperation | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素同时通过模板测试和深度测试时,GPU 对模板缓冲区执行的操作。 这定义了所有像素的操作,而不管方向如何。如果除了 passOperationBack 和 passOperationFront 之外还定义了此值,则此值将覆盖它们。 |
failOperation | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素未通过模板测试时,GPU 对模板缓冲区执行的操作。 这定义了所有像素的操作,而不管方向如何。如果除了 failOperationBack 和 failOperationFront 之外还定义了此值,则此值将覆盖它们。 |
zFailOperation | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素通过模板测试但未通过深度测试时,GPU 对模板缓冲区执行的操作。 这定义了所有像素的操作,而不管方向如何。如果除了 zFailOperationBack 和 zFailOperationFront 之外还定义了此值,则此值将覆盖它们。 |
comparisonOperationBack | 比较操作。有关有效值,请参见比较操作值。默认值为 Always。 | GPU 执行模板测试的操作。 这仅定义了背面像素的操作。如果定义了 comparisonOperation,则该值将覆盖此值。 |
passOperationBack | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素同时通过模板测试和深度测试时,GPU 对模板缓冲区执行的操作。 这仅定义了背面像素的操作。如果定义了 passOperation,则该值将覆盖此值。 |
failOperationBack | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素未通过模板测试时,GPU 对模板缓冲区执行的操作。 这仅定义了背面像素的操作。如果定义了 failOperation,则该值将覆盖此值。 |
zFailOperationBack | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素通过模板测试但未通过深度测试时,GPU 对模板缓冲区执行的操作。 这仅定义了背面像素的操作。如果定义了 zFailOperation,则该值将覆盖此值。 |
comparisonOperationFront | 比较操作。有关有效值,请参见比较操作值。默认值为 Always。 | GPU 执行模板测试的操作。 这仅定义了正面像素的操作。如果定义了 comparisonOperation,则该值将覆盖此值。 |
passOperationFront | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素同时通过模板测试和深度测试时,GPU 对模板缓冲区执行的操作。 这仅定义了正面像素的操作。如果定义了 passOperation,则该值将覆盖此值。 |
failOperationFront | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素未通过模板测试时,GPU 对模板缓冲区执行的操作。 这仅定义了正面像素的操作。如果定义了 failOperation,则该值将覆盖此值。 |
zFailOperationFront | 模板操作。有关有效值,请参见模板操作值。默认值为 Keep。 | 当像素通过模板测试但未通过深度测试时,GPU 对模板缓冲区执行的操作。 这仅定义了正面像素的操作。如果定义了 zFailOperation,则该值将覆盖此值。 |
在 C# 中,这些值由Rendering.CompareFunction 枚举表示。
值 | Rendering.CompareFunction 枚举中的相应整数值 | 功能 |
---|---|---|
Never |
1 | 从不渲染像素计算机图像中最小的单位。像素大小取决于屏幕分辨率。像素灯光在每个屏幕像素处计算。更多信息 参见术语表。 |
Less |
2 | 当其参考值小于模板缓冲区中的当前值时渲染像素。 |
Equal |
3 | 当其参考值等于模板缓冲区中的当前值时渲染像素。 |
LEqual |
4 | 当其参考值小于或等于模板缓冲区中的当前值时渲染像素。 |
Greater |
5 | 当其参考值大于模板缓冲区中的当前值时渲染像素。 |
NotEqual |
6 | 当其参考值与模板缓冲区中的当前值不同时渲染像素。 |
GEqual |
7 | 当其参考值大于或等于模板缓冲区中的当前值时渲染像素。 |
Always |
8 | 始终渲染像素。 |
在 C# 中,这些值由Rendering.Rendering.StencilOp 枚举表示。
值 | Rendering.StencilOp 枚举中的相应整数值 | 功能 |
---|---|---|
Keep |
0 | 保留模板缓冲区的当前内容。 |
Zero |
1 | 将 0 写入模板缓冲区。 |
Replace |
2 | 将参考值写入缓冲区。 |
IncrSat |
3 | 递增缓冲区中的当前值。如果该值已经是 255,则保持为 255。 |
DecrSat |
4 | 递减缓冲区中的当前值。如果该值已经是 0,则保持为 0。 |
Invert |
5 | 否定缓冲区中当前值的所有位。 |
IncrWrap |
6 | 递增缓冲区中的当前值。如果该值已经是 255,则变为 0。 |
DecrWrap |
7 | 递减缓冲区中的当前值。如果该值已经是 0,则变为 255。 |