feat(world): triplanar seabed shader with procedural normal maps and detail shading

Rock is normal-mapped triplanar in world space at two scales, sand carries an
oriented ripple normal map on the xz plane, and a grain map drives detail
occlusion, albedo mottling and roughness. The three maps are seamless,
seeded, mipmapped textures built synchronously by SeabedDetailTextures, so
no asset is needed and builds are deterministic. The mesh has no tangents:
perturbed normals are computed in world space and written to NORMAL.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
OlivierandClaude Fable 5.1 committed 2026-10-06 23:05:33 +02:00
1 parent f22a5e69aa
commit 17f58912c1
12 files changed
+208 -16

No files matched your search

+9 -4
View File
@@ -251,10 +251,15 @@ de contacts existant les sépare du fond.
- Brouillard, lumière directionnelle et particules de la scène de test
actuelle sont conservés et réglés par site.
**Écart d'implémentation (graybox)** : le shader livré n'est pas triplanaire.
Il mélange sable et roche par la pente à partir de 20° (sable sous 20°, roche
au-dessus de 40°, fondu entre ; le matériau sonar bascule à 20°) et rend les
rides par modulation d'albédo, sans normal map. À revoir en tranche 6.
**État du 2026-10-06 (demande d'Olivier)** : le shader mélange sable et roche
par la pente à partir de 20° (sable sous 20°, roche au-dessus de 40°, fondu
entre ; le matériau sonar bascule à 20°). La roche est en normal map
**triplanaire** monde (deux échelles, 7 m et 1,7 m) ; le sable porte une normal
map de rides orientée par la houle sur le plan xz ; une carte de grain sert
d'occlusion de détail et de marbrure d'albédo. Les trois cartes sont
procédurales, sans asset, construites par `SeabedDetailTextures` (bruit seedé,
sans couture, mipmaps) dans la couche monde. Le maillage n'a pas de tangentes :
les normales perturbées sont calculées en espace monde dans le shader.
## 8. Architecture proposée