Unity3D:ShaderLab 命令-Offset

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

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
        {    
              // 此处是定义通道的代码的其余部分。
        }
    }
}

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

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

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

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