Version: 2020.3
ShaderLab 命令:Cull
ShaderLab 命令:模板

ShaderLab 命令:Offset

设置 GPU 上的深度偏差。

深度偏差,也称为深度偏移,是 GPU 上的一个设置,决定了 GPU 绘制几何体的深度。调整深度偏差以强制 GPU 在具有相同深度的其他几何体之上绘制几何体。这可以帮助您避免不需要的视觉效果,例如深度冲突和阴影暗斑。

要为特定几何体设置深度偏差,请使用此命令或 RenderStateBlock 。要设置影响所有几何体的全局深度偏差,请使用 CommandBuffer.SetGlobalDepthBias。除了全局深度偏差之外,GPU 还为特定几何体应用深度偏差。

为了减少阴影暗斑,您可以使用 light bias 设置实现类似的视觉效果;但是,这些设置的工作方式不同,并且不会更改 GPU 上的状态。有关更多信息,请参阅阴影故障排除

渲染管线兼容性

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

用法

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

签名 示例语法 功能
Offset <factor>, <units> Offset 1, 1 根据给定的值,将几何体绘制得更靠近或更远离摄像机。

有效参数值

参数 功能
factor 浮点数,范围 –1 到 1。 缩放最大 Z 斜率,也称为深度斜率,以生成每个多边形的可变深度偏移。

不平行于近剪裁平面和远剪裁平面的多边形具有 Z 斜率。调整此值以避免此类多边形上出现视觉瑕疵。
units 浮点数,范围 –1 到 1。 缩放最小可分辨深度缓冲区值,以产生恒定的深度偏移。最小可分辨深度缓冲区值(一个 _unit_)因设备而异。

负值意味着 GPU 将多边形绘制得更靠近摄像机。正值意味着 GPU 将多边形绘制得更远离摄像机。

示例

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

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

        Pass
        {    
              // 设置此几何体的深度偏移,以便 GPU 将此几何图形绘制得更靠近摄像机
              // 您通常会这样做以避免深度冲突
              Offset -1, -1

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

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

Shader "Examples/CommandExample"
{
    SubShader
    {
         // 设置此几何体的深度偏移,以便 GPU 将此几何图形绘制得更靠近摄像机
         // 您通常会这样做以避免深度冲突
          Offset -1, -1

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

        Pass
        {    
              // 此处是定义通道的代码的其余部分。
        }
    }
}
ShaderLab 命令:Cull
ShaderLab 命令:模板