Unity3D:ShaderLab 命令-ZTest

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

ShaderLab 命令:ZTest

设置几何体是否通过深度测试的条件。

深度测试可使具有 “Early-Z” 功能的 GPU 在管线早期拒绝几何体,并确保几何体的正确排序。通过改变深度测试的条件,您可以实现物体遮挡等视觉效果。

渲染管线兼容性

功能名称内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义 SRP
ZTest

用法

此命令会更改渲染状态。在 Pass 代码块中使用它可为该通道设置渲染状态,或者在 SubShader 代码块中使用它可为该子着色器中的所有通道设置渲染状态。

签名示例语法功能
ZTest [operation]ZTest Less设置几何体是否通过深度测试的条件。

有效参数值

参数功能
operationLess绘制位于现有几何体前面的几何体。不绘制位于现有几何体相同距离或后面的几何体。
LEqual绘制位于现有几何体前面或相同距离的几何体。不绘制位于现有几何体后面的几何体。

这是默认值。
Equal绘制位于现有几何体相同距离的几何体。不绘制位于现有几何体前面的或后面的几何体。
GEqual绘制位于现有几何体后面或相同距离的几何体。不绘制位于现有几何体前面的几何体。
Greater绘制位于现有几何体后面的几何体。不绘制位于现有几何体相同距离或前面的几何体。
NotEqual绘制不位于现有几何体相同距离的几何体。不绘制位于现有几何体相同距离的几何体。
Always不进行深度测试。绘制所有几何体,无论距离如何。

示例

此示例代码演示在 Pass 代码块中使用此命令的语法。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // 此处是定义子着色器的代码的其余部分。

        Pass
        {    
              // 将此通道中的所有像素的深度测试操作设置为 Equal
              // 如果您想在已渲染的几何体所在的位置准确地渲染几何体,您通常会这样做
              ZTest Equal
            
              // 此处是定义通道的代码的其余部分。
        }
    }
}

此示例代码演示在 SubShader 代码块中使用此命令的语法。

Shader "Examples/CommandExample"
{
    SubShader
    {
        // 将此通道中的所有像素的深度测试操作设置为 Equal
        // 如果您想在已渲染的几何体所在的位置准确地渲染几何体,您通常会这样做
        ZTest Equal

         // 此处是定义子着色器的代码的其余部分。

        Pass
        {    
              // 此处是定义通道的代码的其余部分。
        }
    }
}

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:ShaderLab 命令-GrabPass (mvrlink.com)

下一篇:Unity3D:ShaderLab 命令-ZWrite (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号