
Threejs Screen Space Ambient Occlusion
Implement a production GTAO path in Three.js.
Install
npx skills add scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-screen-space-ambient-occlusion -g -a claude-code -y- Repository
- scottstts/Threejs-Awesome-Graphics-Agent-Skills956
- Category
- Engineering
- Updated
- 13d ago
- License
- MIT
- Context cost
- Lightabout 298 tokens
- Runs scripts
- No, instructions only
What it does
Implement a production GTAO path in Three.js. Use for half-resolution horizon sampling, reversed-depth reconstruction, bent-normal encoding, full-resolution bilateral reconstruction, environment-light application, contact grounding, and halo diagnosis.
Screen-Space Ambient Occlusion
AO estimates missing ambient visibility. It must modulate indirect lighting, not repaint all scene color with a dark multiply.
Workflow
- Verify linear depth and view-space normals.
- Reconstruct view position consistently.
- Sample horizon visibility in a controlled radius.
- Estimate AO and optional bent normal.
- Denoise with depth/normal-aware filters.
- Apply to indirect diffuse and environment response.
Read references/gtao-bent-normal-pipeline.md.
Failure conditions
- direct light and emission are darkened;
- radius is specified only in pixels;
- foreground silhouettes cast thick screen-space halos;
- depth discontinuities are blurred together;
- AO remains strong at distances where its world radius is subpixel;
- bent normals are treated as ordinary geometric normals;
- the implementation claims temporal accumulation even though this path has none.
Routing boundary
This skill owns GTAO gathering, bent normals, denoising, and AO application.
Use $threejs-image-pipeline only when its depth/normal buffers or pass order
must be coordinated with other image-space systems.
