Examples

Post-Processing Stack

How to configure ECS-driven post-processing with ACES, bloom, vignette, grain, and exposure.

Reference Scenes

Current examples:

Nevo-base/game/levels/outside.json
Nevo-base/game/levels/nevo_image1.json

Post-processing is not a global config file. It is an ECS entity with a stack marker and effect components.

Minimal ACES Stack

{
  "id": 5,
  "components": [
    {
      "type": "Transform",
      "data": {
        "position": [0.0, 0.0, 0.0],
        "rotation": [0.0, 0.0, 0.0, 1.0],
        "scale": [1.0, 1.0, 1.0]
      }
    },
    {
      "type": "PostProcessingSystem",
      "data": {
        "enabled": true,
        "priority": 0
      }
    },
    {
      "type": "ACES",
      "data": {
        "enabled": true,
        "exposure": 1.0
      }
    }
  ]
}

The PostProcessingSystem component marks the entity as a stack. Effects on the same entity provide settings.

Outside Scene Stack

outside.json uses:

  • PostProcessingSystem
  • ACES
  • Vignette
  • Bloom
  • AutoExposure

Example settings:

{
  "type": "Bloom",
  "data": {
    "enabled": true,
    "threshold": 0.8,
    "intensity": 4.0,
    "radius": 4.0,
    "iterations": 8
  }
}
{
  "type": "AutoExposure",
  "data": {
    "enabled": true,
    "targetLuminance": 0.18,
    "minExposure": 0.25,
    "maxExposure": 4.0,
    "adaptationSpeed": 1.0
  }
}

Effect Defaults

EffectNeutral/default behavior
ACESEnabled by default, exposure 1.0.
ColorAdjustmentDisabled, neutral brightness/contrast/saturation/gamma.
VignetteDisabled, intensity 0.
ChromaticAberrationDisabled, intensity 0.
FilmGrainDisabled, intensity 0.
BloomDisabled, intensity 0.
ColorGradingLUTDisabled, intensity 1, no texture.
AutoExposureDisabled.

Keep v1 defaults neutral unless you intentionally want a stylized look.

Runtime Behavior

The render path captures scene color/depth into an offscreen target, restores the previous framebuffer/render target, then draws the fullscreen post-process pass.

ImGui, debug UI, gizmos, picking overlays, and editor overlays render after post-processing and should not be post-processed.

If post-process setup or application fails, rendering falls back to the direct path.

NVEditor Preview

The Game panel uses active-camera post-processing.

The Scene viewport preview is optional:

  • Window > Scene Post Processing
  • FX button in the Scene viewport overlay

Leave Scene viewport post-processing off when you need neutral scene inspection; turn it on to preview the final runtime look.