设置几何体是否通过深度测试的条件。
深度测试可使具有 “Early-Z” 功能的 GPU 在管线早期拒绝几何体,并确保几何体的正确排序。通过改变深度测试的条件,您可以实现物体遮挡等视觉效果。
功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP |
---|---|---|---|---|
ZTest | 是 | 是 | 是 | 是 |
此命令会更改渲染状态。在 Pass
代码块中使用它可为该通道设置渲染状态,或者在 SubShader
代码块中使用它可为该子着色器中的所有通道设置渲染状态。
签名 | 示例语法 | 功能 |
---|---|---|
ZTest [operation] | ZTest Less | 设置几何体是否通过深度测试的条件。 |
参数 | 值 | 功能 |
---|---|---|
operation | Less | 绘制位于现有几何体前面的几何体。不绘制位于现有几何体相同距离或后面的几何体。 |
LEqual | 绘制位于现有几何体前面或相同距离的几何体。不绘制位于现有几何体后面的几何体。 这是默认值。 |
|
Equal | 绘制位于现有几何体相同距离的几何体。不绘制位于现有几何体前面的或后面的几何体。 | |
GEqual | 绘制位于现有几何体后面或相同距离的几何体。不绘制位于现有几何体前面的几何体。 | |
Greater | 绘制位于现有几何体后面的几何体。不绘制位于现有几何体相同距离或前面的几何体。 | |
NotEqual | 绘制不位于现有几何体相同距离的几何体。不绘制位于现有几何体相同距离的几何体。 | |
Always | 不进行深度测试。绘制所有几何体,无论距离如何。 |
此示例代码演示在 Pass 代码块中使用此命令的语法。
Shader "Examples/CommandExample"
{
SubShader
{
// 此处是定义子着色器的代码的其余部分。
Pass
{
// 将此通道中的所有像素的深度测试操作设置为 Equal
// 如果您想在已渲染的几何体所在的位置准确地渲染几何体,您通常会这样做
ZTest Equal
// 此处是定义通道的代码的其余部分。
}
}
}
此示例代码演示在 SubShader 代码块中使用此命令的语法。
Shader "Examples/CommandExample"
{
SubShader
{
// 将此通道中的所有像素的深度测试操作设置为 Equal
// 如果您想在已渲染的几何体所在的位置准确地渲染几何体,您通常会这样做
ZTest Equal
// 此处是定义子着色器的代码的其余部分。
Pass
{
// 此处是定义通道的代码的其余部分。
}
}
}