Version: 6000.3
语言: 中文
ShaderLab 参考中的偏移命令
ShaderLab 参考中的 ZClip 命令

ShaderLab 参考中的模板命令

配置与模具缓冲区 保存每像素值 8 位的内存存储。在 Unity 中,可以使用模具缓冲区来标记像素,然后仅呈现为通过模具作的像素。更多信息
请参阅术语表
在 GPU 上。

渲染管线兼容性

功能名称 普遍渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(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 2
    Comp equal
    Pass keep
    ZFail decrWrap
}
根据给定的参数配置模具缓冲区。

参数

参数 价值 功能
裁判 整数。范围 0 到 255。默认值为 0。 参考值。

GPU 使用 comparisonOperation 中定义的作将模具缓冲区的当前内容与此值进行比较。

此值使用 readMask 或 writeMask 进行屏蔽,具体取决于是否正在发生读取或写入作。

如果 Pass、Fail 或 ZFail 的值为 Replace,GPU 还可以将此值写入模板缓冲区。
读取掩码 整数。范围 0 到 255。默认值为 255。 GPU 在执行模具测试时将此值用作掩码。
有关模板测试方程,
请参阅上文。
写掩码 整数。范围 0 到 255。默认值为 255。 GPU 在写入模具缓冲区时使用此值作为掩码。

请注意,与其他掩码一样,它指定作中包含哪些位。例如,值 0 表示写入作中不包含任何位,而不是模具缓冲区接收值 0。
比较作 比较作。有关有效值,请参阅比较作值。默认值为“始终”。 GPU 为所有像素的模具测试执行的作。

这定义了所有像素的作,无论朝向如何。如果除了 comparisonOperationBack 和 comparisonOperationFront 之外还定义了此值,则此值将覆盖它们。
通过作 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素同时暂停模具测试和深度测试时,GPU 对模具缓冲区执行的作。

这定义了所有像素的作,无论朝向如何。如果除了 passOperationBack 和 passOperationFront 之外还定义了此值,则此值将覆盖它们。
失败作 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素未通过模具测试时,GPU 对模具缓冲区执行的作。

这定义了所有像素的作,无论朝向如何。如果除了 failOperationBack 和 failOperationFront 之外还定义了此值,则此值将覆盖它们。
zFail作 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素通过模具测试但未通过深度测试时,GPU 对模具缓冲区执行的作。

这定义了所有像素的作,无论朝向如何。如果除了 zFailOperationBack 和 zFailOperationFront 之外还定义了此值,那么此值将覆盖它们。
比较作返回 比较作。有关有效值,请参阅比较作值。默认值为“始终”。 GPU 为模具测试执行的作。

这仅定义了背面像素的作。如果定义了 comparisonOperation,则该值将覆盖此值。
passOperation返回 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素同时暂停模具测试和深度测试时,GPU 对模具缓冲区执行的作。

这仅定义了背面像素的作。如果定义了 passOperation,则该值将覆盖此值。
failOperationBack 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素未通过模具测试时,GPU 对模具缓冲区执行的作。

这仅定义了背面像素的作。如果定义了failOperation,则该值将覆盖此值。
zFailOperationBack 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素通过模具测试但未通过深度测试时,GPU 对模具缓冲区执行的作。

这仅定义了背面像素的作。如果定义了 zFailOperation,那么该值将覆盖此值。
比较作前线 比较作。有关有效值,请参阅比较作值。默认值为“始终”。 GPU 为模具测试执行的作。

这仅定义了对正面像素的作。如果定义了 comparisonOperation,则该值将覆盖此值。
通过作前线 模具作。有关有效值,请参阅模具作值。默认值为 Keep。 当像素同时暂停模具测试和深度测试时,GPU 对模具缓冲区执行的作。

这仅定义了对正面像素的作。如果定义了 passOperation,则该值将覆盖此值。
失败作前线 模具作。有关有效值,请参阅模具作值。默认值为 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。

其他资源

ShaderLab 参考中的偏移命令
ShaderLab 参考中的 ZClip 命令