threejs-exposure-color-grading
Build a measured exposure and grading path in Three.js. Use for a 64x36 encoded luminance meter, asynchronous readback, weighted log-average exposure, asymmetric adaptation, single tone-map ownership, and a generated 32-cube post-tone-map LUT.
Works with
--- name: threejs-exposure-color-grading description: Build a measured exposure and grading path in Three.js. Use for a 64x36 encoded luminance meter, asynchronous readback, weighted log-average exposure, asymmetric adaptation, single tone-map ownership, and a generated 32-cube post-tone-map LUT. license: MIT --- # Exposure and Color Grading Treat exposure, tone mapping, grading, and output conversion as distinct stages. Tune them from measured HDR signal, not by stacking compensating color operations. ## Order ```text HDR scene → luminance meter → adapted exposure → tone map → creative grade / 3D LUT → final output conversion ``` Read [references/scene-referred-color-pipeline.md](references/scene-referred-color-pipeline.md) for the exact 64x36 meter, encoded readback, adaptation constants, 32-cube LUT, and signal-ownership ambiguities. ## Failure conditions - tone mapping occurs in both materials and post; - exposure is used to repair physically inconsistent light ratios; - meter weighting and scene framing are not inspected; - adaptation speed is the same toward light and dark; - LUT input/output spaces are undocumented; - sRGB encoding happens twice; - a display-domain LUT is moved before tone mapping without being rebuilt. ## Routing boundary Use `$threejs-bloom` for HDR glow contribution and `$threejs-image-pipeline` when this color path must share ownership with AO, atmosphere, or effect-local render targets.
More AI & ML skills
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.

