About threejs-bloom
A Three.js skill for tuning bloom as a response to bright HDR signals. It guides scene exposure, selective bloom ownership, compositing order, and validation of the base and final views.
Key features
- 01Inspect pre-tone-map luminance
- 02Choose bloom signal and ownership model
- 03Calibrate threshold, radius, and strength
- 04Restore substituted materials for selective passes
- 05Composite before exposure and tone mapping
Use cases
- 01Tuning glow from emissive scene elements
- 02Adding selective bloom to a composed scene
- 03Checking bloom contribution against the base view
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ scottstts/ threejs-awesome-graphics-agent-skills --skill threejs-bloomAfter installing, type/threejs-bloomin Claude Code to confirm it loaded.
Bundled filesagents/openai.yamlreferences/hdr-bloom-system.md
Details
From the project READMEBloom
Bloom is a camera/display response to bright HDR signal. Establish scene exposure and emissive luminance before tuning blur.
Workflow
- Inspect pre-tone-map luminance.
- Choose which scene values should bloom.
- Choose a single-node or dual selective-render ownership model.
- Calibrate threshold, radius, smooth width, and strength in HDR.
- Restore all substituted materials transactionally for selective passes.
- Composite before exposure/tone mapping.
- Validate base, contribution, and final views.
Read references/hdr-bloom-system.md for the HDR ordering, dual selective-bloom transaction, compact emissive hierarchy, and the costs and limits of each ownership model.
Apply the material substitution/restoration ownership pattern in the reference before adding selective bloom to a composed scene.
Failure conditions
- bloom creates the only visible form of an effect;
- all bright materials share one arbitrary emission multiplier;
- threshold is tuned after tone mapping;
- selective bloom requires mutating scene materials every frame without restoration guarantees;
- transparent particles disappear from extraction because pass ownership is unclear;
- bloom radius changes wildly with resolution;
- highlights become gray because energy is clamped too early.
Routing boundary
Use $threejs-exposure-color-grading for metering, adaptation, tone mapping,
and LUTs. Load $threejs-image-pipeline only when bloom must be composed with
several shared image-space systems. A per-pixel ray integrator that owns its own
reduced-resolution target and accumulation history keeps its bloom internal;
route that to $threejs-raymarched-space-effects.