$npx -y skills add scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-bloomImplement production bloom in advanced Three.js scenes. Use for HDR signal ordering, bloom-node controls, dual selective bloom with guaranteed material restoration, scene-relative emissive hierarchy, and effect-isolation diagnostics.
| 1 | # Bloom |
| 2 | |
| 3 | Bloom is a camera/display response to bright HDR signal. Establish scene exposure and emissive luminance before tuning blur. |
| 4 | |
| 5 | ## Workflow |
| 6 | |
| 7 | 1. Inspect pre-tone-map luminance. |
| 8 | 2. Choose which scene values should bloom. |
| 9 | 3. Choose a single-node or dual selective-render ownership model. |
| 10 | 4. Calibrate threshold, radius, smooth width, and strength in HDR. |
| 11 | 5. Restore all substituted materials transactionally for selective passes. |
| 12 | 6. Composite before exposure/tone mapping. |
| 13 | 7. Validate base, contribution, and final views. |
| 14 | |
| 15 | Read [references/hdr-bloom-system.md](references/hdr-bloom-system.md) for the |
| 16 | HDR ordering, dual selective-bloom transaction, compact emissive hierarchy, |
| 17 | and the costs and limits of each ownership model. |
| 18 | |
| 19 | Apply the material substitution/restoration ownership pattern in the |
| 20 | reference before adding selective bloom to a composed scene. |
| 21 | |
| 22 | ## Failure conditions |
| 23 | |
| 24 | - bloom creates the only visible form of an effect; |
| 25 | - all bright materials share one arbitrary emission multiplier; |
| 26 | - threshold is tuned after tone mapping; |
| 27 | - selective bloom requires mutating scene materials every frame without restoration guarantees; |
| 28 | - transparent particles disappear from extraction because pass ownership is unclear; |
| 29 | - bloom radius changes wildly with resolution; |
| 30 | - highlights become gray because energy is clamped too early. |
| 31 | |
| 32 | ## Routing boundary |
| 33 | |
| 34 | Use `$threejs-exposure-color-grading` for metering, adaptation, tone mapping, |
| 35 | and LUTs. Load `$threejs-image-pipeline` only when bloom must be composed with |
| 36 | several shared image-space systems. |