跳到主要内容
← 全部概念
性能优化 / 31

过度绘制

同一个像素,重复着色

交互演示

交互演示 · 移动指针或点击画面,观察变化

过度绘制指 GPU 在一帧内为同一个像素着色的次数。透明精灵无法遮住后方内容,所以叠在一起的烟雾每一层都需要着色,靠近镜头的大型精灵成本最高。过度绘制视图会统计每个像素的层数,用蓝色表示一层,用白色表示八层或更多。

适用场景

使用过度绘制视图排查包含大量透明精灵、烟雾层或 UI 表面的场景。即使纹理大部分看起来是空的,相互重叠的大型四边形也可能开销很高。

实现示例

不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。

for effect in visibleEffects:
  effect.maxParticles = qualityBudget
  effect.spriteBounds = tightBounds
renderHeavySmokeToHalfResolutionTarget()
compositeSmoke()

常见错误

alpha 值为零,不一定意味着片元处理没有成本。贴合可见区域的几何、更少的重叠层,以及更低分辨率的效果,可能比减少绘制调用次数更重要。

内容原作 Nicolas Zullo · 中文整理与交互改编