70.性能优化-GPU-影响因素-其他因素
70.1 知识点
影响 GPU 性能的其他因素
目前已经了解了填充率、OverDraw、内存带宽、顶点/片元、缓存与显存、并行度与调度,这些因素都可能会对 GPU 造成性能影响。
除此之外,还应该注意以下一些因素。这些因素可能已经在以上内容中提及过,这里再次进行强调。
DrawCall
每个 DrawCall 都有 CPU 到 GPU 的指令调度开销。频繁切换材质、着色器、渲染目标会造成流水线停滞。
因此减少 DrawCall 不仅可以优化 CPU 性能,同样也可以优化 GPU 性能。
纹理采样
优化采样次数可以提高 GPU 性能
纹理查询是片元着色器的主要瓶颈之一,Mipmap、LOD 能减少带宽和缓存压力。有规律地进行采样,可以提高缓存命中率
如果片元访问的纹理坐标分布离散,纹理缓存命中率下降,会大量访问显存。应该有规律地连续采样。采样模式的复杂度越高,越消耗性能
在Inspector > Texture Import Settings里有一个 Filter Mode:- Point(最近点)
- Bilinear(双线性)
- Trilinear(三线性)
性能开销排序:三线性 > 双线性 > 最近点。
尽量减少多纹理绑定
过多材质切换也会增加开销。
着色器
着色器复杂度越高、分支越多,越耗性能。
应该避免或减少分支或循环的使用,减少高开销的内部函数调用。
精度和数据格式
- Shader 中尽量用低精度减少性能消耗
移动端使用half精度可大幅减少寄存器与能耗。 - RT 格式在满足需求的情况下,尽量选择精度低的格式
RGBA32F带宽和存储开销远高于RGBA8。 - 尽量在对应平台上使用合适的压缩格式
- 在顶点着色器中输出的结构体
v2f,应尽量避免在其中包含无意义数据
因为会进行插值计算,消耗性能。
后处理和特效
- 尽量减少全屏屏幕后处理效果
它们对带宽和片元算力消耗很大。 - 半透明效果会大幅提升 OverDraw
需要谨慎使用。 - 逐像素光照、多阴影贴图采样会显著增加片元着色开销
需要谨慎使用。
70.2 知识点代码
Lesson70_性能优化_GPU_影响因素_其他因素.cs
public class Lesson70_性能优化_GPU_影响因素_其他因素
{
#region 知识点 影响GPU性能的其它因素
//目前我们已经了解了
//填充率、OverDraw、内存带宽、顶点/片元、缓存与显存、并行度与调度
//这些因素都可能会对GPU造成性能影响
//除此之外,我们还应该注意以下一些因素
//这些因素可能已经被我们在以上因素中提及过
//我们在这里再次进行强调
#region 1.DrawCall
//每个 Draw Call 都有 CPU到GPU 的指令调度开销
//频繁切换材质、着色器、渲染目标会造成流水线停滞
//因此减少DrawCall不仅可以优化CPU性能
//同样也可以优化GPU性能
#endregion
#region 2.纹理采样
//1.优化采样次数可以提高GPU性能
// 纹理查询是片元着色器的主要瓶颈之一,Mipmap、LOD 能减少带宽和缓存压力
//2.有规律地进行采样,可以提高缓存命中率
// 如果片元访问的纹理坐标分布离散,纹理缓存命中率下降,会大量访问显存,我们应该有规律地连续采样
//3.采样模式的复杂度越高,越消耗性能
// 在 Inspector > Texture Import Settings 里有一个 Filter Mode:
// Point(最近点)
// Bilinear(双线性)
// Trilinear(三线性)
// 三线性 > 双线性 > 最近点
//4.尽量减少多纹理绑定
// 过多材质切换也会增加开销
#endregion
#region 3.着色器
//着色器复杂度越高,分支越多,越耗性能
//我们应该避免或减少分支或循环的使用
//减少高开销的内部函数调用
#endregion
#region 4.精度和数据格式
//1.Shader中尽量用低精度减少性能消耗
// 移动端使用 half 精度可大幅减少寄存器与能耗
//2.RT格式在满足需求的情况下,尽量选择精度低的格式
// RGBA32F 带宽和存储开销远高于 RGBA8
//3.尽量在对应平台上使用合适的压缩格式
//4.在顶点着色器中输出的结构体v2f,应该尽量避免在其中包含无意义数据
// 因为会进行插值计算,消耗性能
#endregion
#region 5.后处理和特效
//1.尽量减少全屏屏幕后处理效果
// 它们对带宽和片元算力消耗很大
//2.半透明效果会大幅提升OverDraw
// 需要谨慎使用
//3.逐像素光照、多阴影贴图采样会显著增加片元着色开销
// 需要谨慎使用
#endregion
//等等
#endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com