随记:渲染优化的手段与本质
2023-03-20 本文已影响0人
阿飞咯
-
原理:对于CPU而言,我们需要做的就是尽可能的减少渲染指令,所谓的渲染指令就是图形系统给到应用层的一个与硬件无关的API调用,在运行时通过相关驱动的转换成为GPU硬件的一个调用,而每一次这样的调用都会消耗一定的CPU时钟周期,关于dx指令耗时测试可以参阅。
命令缓冲区.png
运行态到内核态.png -
减少渲染命令
- 我们最常见的就有动/静态合批、GPUInstance、Unity推出的SRPBatcher。而我们还需要做的统一着色模型,我觉得这是一个大的前提,而PBR材质规范可以很大程度的帮我们实现这一特性。
-
剔除
- 常见的剔除的方式有视锥体剔除,遮挡剔除,背面剔除,小三角形剔除等。剔除是一个比较综合的影响,在CPU端进行剔除,可以减少无效的渲染命令,而对于GPU而言,剔除则可以减少顶点变换执行次数,也能一定程度减少像素的处理和计算(GPU也会通过EarlyZTest优化部分)。
-
内存与带宽
- 常见的优化带宽的方式有:整体来说可以优化渲染的分辨率,对于图片有mipmap,对于模型有Lod,上面的剔除也能减少物体的渲染,从而优化带宽。对于移动端来说减少RT切换以及正确的配置RT切换的参数对于带宽来说影响也是非常大。而内存就有我们常见的时间换空间方案,我们图片设置压缩格式。