配置与 GPU 模板缓冲区相关的设置。
| 功能名称 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 |
|---|---|---|---|---|
| 模板 | 是 | 是 | 是 | 是 |
| 签名 | 示例语法 | 功能 |
|---|---|---|
Stencil{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>}请注意所有参数均为可选。 |
Stencil{Ref 2Comp equalPass keepZFail 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。 |