← 全部概念
性能优化 / 31
过度绘制
同一个像素,重复着色
交互演示
交互演示 · 移动指针或点击画面,观察变化
过度绘制指 GPU 在一帧内为同一个像素着色的次数。透明精灵无法遮住后方内容,所以叠在一起的烟雾每一层都需要着色,靠近镜头的大型精灵成本最高。过度绘制视图会统计每个像素的层数,用蓝色表示一层,用白色表示八层或更多。
适用场景
使用过度绘制视图排查包含大量透明精灵、烟雾层或 UI 表面的场景。即使纹理大部分看起来是空的,相互重叠的大型四边形也可能开销很高。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
for effect in visibleEffects:
effect.maxParticles = qualityBudget
effect.spriteBounds = tightBounds
renderHeavySmokeToHalfResolutionTarget()
compositeSmoke()常见错误
alpha 值为零,不一定意味着片元处理没有成本。贴合可见区域的几何、更少的重叠层,以及更低分辨率的效果,可能比减少绘制调用次数更重要。
内容原作 Nicolas Zullo · 中文整理与交互改编