Unity3D:ShaderLab 命令-Conservative
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
ShaderLab 命令:Conservative
启用或禁用保守光栅化。
光栅化是一种渲染技术,通过确定哪些像素被三角形覆盖,将矢量数据(三角形投影)转换为像素数据(渲染目标)。通常情况下,GPU 通过对像素内的点进行采样,判断是否被三角形覆盖来确定是否对像素进行光栅化;如果覆盖范围足够,则 GPU 确定该像素被覆盖。保守光栅化是指 GPU 对被三角形部分覆盖的像素进行光栅化,无论覆盖范围如何。这在需要确定性时很有用,例如在执行遮挡剔除、GPU 上的碰撞检测或可见性检测时。
保守光栅化意味着 GPU 在三角形边上生成更多的片元;这会导致更多片元着色器调用,从而导致 GPU 帧时间增加。
渲染管线兼容性
功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP |
---|---|---|---|---|
Conservative | 是 | 是 | 是 | 是 |
用法
此命令会更改渲染状态。在 Pass
代码块中使用它可为该通道设置渲染状态,或者在 SubShader
代码块中使用它可为该子着色器中的所有通道设置渲染状态。
Check for hardware support using the SystemInfo.supportsConservativeRaster API. On hardware that does not support this command, it is ignored.
签名 | 示例语法 | 功能 |
---|---|---|
Conservative <enabled> | Conservative True | 启用或禁用保守光栅化。 需要 DX 11.3+,或 GL_NV_conservative_raster。 |
有效参数值
参数 | 值 | 功能 |
---|---|---|
enabled | True | 启用保守光栅化。 |
False | 禁用保守光栅化。 |
示例
Shader "Examples/CommandExample"
{
SubShader
{
// 此处是定义子着色器的代码的其余部分。
Pass
{
// 为此通道启用保守光栅化。
Conservative True
// 此处是定义通道的代码的其余部分。
}
}
}
此示例代码演示在 SubShader 代码块中使用此命令的语法。
Shader "Examples/CommandExample"
{
SubShader
{
// 为此子着色器启用保守光栅化。
Conservative True
// 此处是定义子着色器的代码的其余部分。
Pass
{
// 此处是定义通道的代码的其余部分。
}
}
}
由3D建模学习工作室整理翻译,转载请注明出处!