此页面包含有关优化您的着色器在 GPU 上运行的程序。 更多信息
参见 术语表以提高运行时性能,尤其是在 GPU 性能有限的移动平台上。
例如,为避免复杂的计算,请执行以下操作
pow
、log
和 sin
。normalize
和 dot
)代替编写自己的函数。这可以确保驱动程序能够生成更好的代码。例如,为避免着色器重复计算,请执行以下操作
对于除世界空间坐标和纹理坐标以外的所有变量,请使用 half
代替 float
。有关更多信息,请参阅 在着色器中使用 16 位精度。
Unity 不支持后缀,因此像 2.0h
这样的值会变成完整的 float
。这意味着当 GPU 执行计算时,可能需要将其他值转换为 float
并转换回来。这可能会降低着色器的速度。
为避免这种情况,请使用强制转换而不是后缀。例如,使用 half(2.0)
代替 2.0h
。
为避免着色器速度变慢,请避免以下资源密集型方法
discard
方法。为了确保移动 GPU 可以使用早期深度测试来加快渲染速度,请不要在片段着色器中写入深度缓冲区一个内存存储,用于保存图像中每个像素的 z 值深度,其中 z 值是从投影平面到每个渲染像素的深度。 更多信息
参见 术语表。
有关深度测试的更多信息,请参阅 ShaderLab 命令:ZTest。