Skip to content

Post-processing & tone mapping

Rendering runs through an EffectComposer, so post-processing is a chain of opt-in passes configured under the environment’s postProcessing block (packages/engine/src/asset-formats/render-env.ts). Each effect has an enabled flag plus its own parameters.

EffectComposer chains AO, SSR/SSGI, bloom, color/lens/film, and SMAA after the render
A typical post-processing chain.

Independent of the effects, tone mapping maps HDR color to display range. toneMapping operators: none, linear, reinhard, cineon, aces, agx, with an exposure level. (The renderer defaults to ACES Filmic — see Rendering.)

All of these are available under postProcessing:

  • Glow & vignette — bloom (intensity, luminanceThreshold, luminanceSmoothing), vignette (darkness, offset).
  • Color grading — brightnessContrast, hueSaturation, sepia, colorDepth.
  • Lens — chromaticAberration, lensDistortion, depthOfField, tiltShift.
  • Film / retro — noise, scanline, dotScreen, grid, pixelation, glitch.
  • Distortion — shockWave.
  • Anti-aliasing — smaa.
  • Ambient occlusion — ssao, n8ao.
  • Screen-space — ssr (reflections), ssgi (global illumination), motionBlur.
  • Entity-referencing — godRays (from a light source), outline (highlight tagged entities).
  • Rendering — the composer and default tone mapping.
  • Environment — skybox/IBL that feeds reflections.