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.
Start a fresh conversation. Replace the highlighted placeholders.
Use threejs-exposure-color-grading to implement a measured HDR exposure and color-grading path in [Three.js project or scene] for [desired grade], including a 64x36 luminance meter with asynchronous readback, asymmetric adapted exposure, one tone-map owner, and a generated 32-cube post-tone-map LUT with diagnostics for the signal stages.
Required inputs
[Three.js project or scene]
[desired grade]
User-approved starter prompt based on a pinned source version; check current skill requirements before running. Task evidence ↗
SKILL.md
name: threejs-exposure-color-gradingdescription: 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.
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
HDR scene
→ luminance meter
→ adapted exposure
→ tone map
→ creative grade / 3D LUT
→ final output conversion
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.