scottstts/threejs-parallax-occlusion-mapping
Build silhouette-aware parallax occlusion mapping in Three.js WebGPU and TSL. Use for height-field ray marching, relief UVs, clipped flat or curved silhouettes, inflated shells, self-shadowing, relief-aware shadow depth, and height-derived normals.
npx skills add https://github.com/scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-parallax-occlusion-mapping
Treat relief as a coupled intersection, coverage, normal, and shadow system.
Do not stop at offsetting texture coordinates.
tangent frame and height convention
-> view-ray march and hit refinement
-> bounded or curved silhouette coverage
-> shared marched sampling
-> height-derived shading normal
-> light-ray self-shadow march
-> relief-aware cast/received shadow positions
Read references/silhouette-relief-contract.md
for the intersection contract, flat and curved silhouette modes, shell
inflation, shadow integration, quality controls, and diagnostics.
Read the
silhouette relief implementation
for the complete TSL march, binary hit refinement, gradient-safe sampling,
coverage, horizon trimming, curved sag, and self-shadow function.
Read the
complete bulkhead assembly
and its packed procedural height maps
for a wall, deck, relief columns, and overhead pipes using height-derived
normals, inflated cylinder shells, alpha-to-coverage, shadow-mask carving,
marched shadow depth, and received-shadow positions.
Use $threejs-procedural-materials when no ray-marched height intersection or
silhouette ownership is required. Use $threejs-procedural-geometry when the
silhouette must be actual mesh topology rather than a view-dependent relief.
Take scottstts/threejs-parallax-occlusion-mapping from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
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.