【翻译】优化加速像素着色器执行的方法
中文翻译
在回复我的 Twitter 私信时,我遇到了一个关于如何提高像素/片段着色器执行速度的问题。这是一个相当广泛的问题,具体取决于每个 GPU/平台和游戏内容的特性,但我在本帖中扩展了我“头脑风暴”式的回答,以便其他人也觉得有用。这不是一份详尽的清单,更像是一个高层次的指南,帮助你开始优化工作。
渲染引擎的性能应该从 整体角度 出发,使用如 Nsight 和 PIX 等工具(或目标平台支持的其他工具),自上而下地识别性能瓶颈,然后再专注于特定领域,例如像素着色器的成本。GPU 是一个由多个固定和可编程单元组成的流水线,每个单元根据我们推送的内容(例如三角形的数量和大小、实现的图形技术复杂度(光照模型、SSAO、SSR 质量)、渲染目标和纹理分辨率)对性能有不同的影响。尽管如此,在一帧中花费大量时间的通常是像素着色器,因此你很可能会花很多时间来优化它们。
与其他大多数优化努力一样,可以通过 两种方式 提高像素着色器的性能:
1. 如果可能的话,完全不运行它
第一步是 尽量避免渲染被遮挡的三角形,可以使用基于 CPU 或 GPU 的解决方案。视锥体外的三角形应被剔