# Layer post per-CanvasLayer post-processing (bloom the world, keep the HUD crisp). ```{raw} html ▶ Run in browser ``` **Tags:** `2d` `bloom` `post-processing` `canvaslayer` A CanvasLayer can carry its own ``environment`` (a WorldEnvironment), so its post effects apply to that layer's band ONLY. Here the game-world layer blooms while the HUD layer on top stays crisp -- the classic "glow the world, not the UI" case, with no manual masking. A layer with no ``environment`` is the shared/global path and costs nothing (the feature is zero-cost when unused). What to look for: - The world layer's bright shapes GLOW (its environment enables bloom). - The HUD layer's panel + text are CRISP (no environment -> no post on that band). - Toggle the world layer's bloom with B to compare. Controls: B - Toggle the world layer's bloom Escape - Quit Run: uv run python examples/features/2d/layer_post.py ## Source ```{literalinclude} ../../examples/features/2d/layer_post.py :language: python :linenos: ```