Skills

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

  1. Verify linear depth and view-space normals.
  2. Reconstruct view position consistently.
  3. Sample horizon visibility in a controlled radius.
  4. Estimate AO and optional bent normal.
  5. Denoise with depth/normal-aware filters.
  6. 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.

More in Engineering