Overdraw is shading a pixel more than once per frame. Some is unavoidable; a lot of it is the most common GPU performance problem there is.
Opaque geometry is mostly fine
Depth testing rejects fragments hidden behind closer ones, and rendering front to back means most hidden surfaces are discarded before shading. Modern GPUs also do early depth rejection, which makes opaque overdraw cheap.
Transparency breaks all of that
A transparent surface cannot write depth — you can see through it — so nothing behind it is rejected, and everything is shaded. Stack ten transparent quads and you shade ten times.
The usual offenders
- Particle systems. Many large overlapping quads. The classic case.
- Foliage with alpha blending.
- UI over the scene.
- Layered effects — smoke over fire over sparks.
- Large transparent surfaces like windows and water.
Mitigations
- Alpha test instead of blend where the look allows. It writes depth and rejects properly.
- Smaller particles, fewer of them, dying sooner.
- Fewer layers. Two well-authored effects beat five stacked.
- Tighter geometry on transparent cards — a quad with a lot of empty alpha is a quad shading empty pixels. Fitting the geometry to the visible shape genuinely helps.
- Lower-resolution particle buffers, where the engine supports rendering particles at half resolution.
Measuring it
Most engines have an overdraw visualisation — a heat map where bright areas are shaded many times. It is the fastest way to find the problem, and the result is often surprising: a small effect near camera can dominate a frame.
On mobile
Tile-based GPUs make overdraw disproportionately expensive, and alpha testing has its own cost that can break the tile pipeline's early rejection. The desktop advice does not transfer cleanly — measure on the device.