taskforce

2026.05 - On-Tile Post-Processing for Mobile & XR

June 1, 2026 · 5 min read

Post-processing on mobile is still a trap

You add color grading. A little vignette. Maybe film grain and bloom.

Nothing that looks dangerous.

Then the Quest build starts losing frame time.

No extra enemies. No massive particle storm. No crazy shadows.

Just post-processing.

The problem is not the checkbox. The problem is bandwidth.

Traditional post-processing usually treats the rendered frame like a big texture. Render the image, store it, sample it again, run the effect, write it back. Desktop GPUs can often absorb that. Standalone XR and mobile hardware are less forgiving because tile-based GPUs are designed around the opposite idea: keep small tiles close to the GPU and avoid unnecessary trips through external memory.

When your post stack forces full-frame stores, loads, blits, or sampled intermediate textures, you are paying for polish with memory traffic.

That cost is not only frame time.

It is heat. Battery. Thermal throttling. The build that feels fine for the first few minutes and then slowly gets worse.

Unity 6.3 gives URP a better option for a narrow but useful case: On-Tile Post-Processing.

The idea is simple. If an effect can work with the current pixel or tile, keep it there. Do not push the whole rendered image through the normal full-screen post path unless the effect actually needs that.

That does not mean “free bloom”. Bloom still needs broader image data. Same story for depth of field, motion blur, chromatic aberration, and other neighbor-heavy effects.

The useful set is smaller: color adjustments, tonemapping, vignette, film grain, and dithering-related work.

Start with this:

  • Use URP on a supported mobile/XR path. For this lesson, that means Vulkan.
  • Disable the renderer’s traditional built-in post-processing path.
  • Add the On Tile Post Processing renderer feature.
  • Enable Tile-Only Mode if your URP version exposes it.
  • Only use effects that the on-tile path actually supports.

Then prove it.

Do not trust the checkbox. Open the Render Graph Viewer or Frame Debugger and look for the shape of the frame. Extra post passes, final blits, sampled intermediate textures, or a missing input-attachment/framebuffer-fetch path usually mean you fell back to the expensive version.

Producer translation: this is how you give artists some image polish on Quest/mobile without quietly turning it into an engineering and thermal problem.

The members-only lesson below has the full walkthrough: the exact setup, what the warning means, which effects are safe, how to prove the path is really on-tile, what breaks it, and the audit checklist I would run on a real mobile/XR project.