Treat relief as a coupled intersection, coverage, normal, and shadow system. Do not stop at offsetting texture coordinates.
This skill contains exemplary examples and assets beyond descriptive guidance, they're worth studying, referencing, or even copying. Use them sufficiently when relevant and do NOT blindly skip them.
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.