Optimal Particle Rendering on PowerVR#

Game developers like to use particle systems extensively to add effects such as smoke, dust, and dirt to their games. These particle systems usually consist of many 2D quads that sample a texture and use alpha blending to composite them. This can be a good solution for implementing some of these effects, but it can come with a significant performance impact if used carelessly. In particular, lots of alpha-blended particles can cause a massive overdraw issue, which means the GPU has to rasterize many more fragments for each pixel than usual. This issue may be present for even small amounts of particles if their on-screen size is large. PVRTune can be used to check the current overdraw value, which needs to be kept as low as possible.

If a performance bottleneck happens only due to an out-of-control overdraw issue, the following suggestions may help:

  • Reduce the number of particles used if possible.

  • Use meshes for particles that closely follow the opaque-transparent edges within the texture used, such as a circular mesh for a puff of smoke. This way, completely transparent parts will not be causing unnecessary overdraw.

  • For particles, it may not be important to have crisp textures in the distance, so anisotropic filtering could be disabled.