mcpbeat

Threejs Exposure Color Grading

scottstts/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.

2k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
527
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-exposure-color-grading

The instruction itself

4 sections, as written by the author

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

Read 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.

How to use it

Copy the folder

Take scottstts/threejs-exposure-color-grading from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.