# BVLE Voxels - Plan de travail

Fonctionnalites restantes et idees d'evolution, organisees par sujet.
Chaque sujet a un document d'implementation detaille dans `docs/`.

L'etat actuel du prototype est documente dans `CLAUDE.md` a la racine.

---

## Sujets restants de la specification originale

### 1. GPU Compute Surface Nets (Phase 5.3) ✅

Le mesher smooth fonctionne en GPU compute (2-pass: centroid CS + mesh CS).
Auto-bascule GPU/CPU. Shaders: `voxelSmoothCentroidCS.hlsl`, `voxelSmoothCS.hlsl`.

**Statut :** Termine.

### 2. LOD multi-resolution (Phase 5.4)

LOD 1 implementé : chunks 32³ couvrant 64³ world space, lodScale dans GPUChunkInfo,
VS multiplie localPos par lodScale. LOD 0 radius=6, LOD 1 ring radius=12 (480 chunks).
Pas de smooth/topings sur LOD 1.

Reste a faire : LOD 2+, skirts pour cacher les coutures, fog aux bords, LOD dynamique.

**Statut :** En cours. Voir `docs/plan-lod-skirts.md`.

### 3. Fallback Shadow Maps + SSAO (Phase 6.4)

Le ray tracing est obligatoire pour les ombres/AO. Les GPU sans RT (ou les configs
faibles) n'ont aucun eclairage directionnel. Le fallback devrait utiliser le pipeline
existant de Wicked Engine.

**Statut :** Non commence. Priorite basse (tous les GPU cibles supportent RT).

### 4. Connected Blocks / Tuyaux (idee spec)

Blocs contenant des modeles 3D customs avec jointure dynamique selon les voisins
identiques. Exemple : tuyaux qui se connectent automatiquement. Extension du systeme
de topings avec bitmask 6-faces au lieu de 4-adjacence.

**Statut :** Concept uniquement.

---

## Nouveaux sujets (inspires du talk Roblox SIGGRAPH 2020)

### 5. Deformation de vertices par materiau

Roblox definit des deformations procedurales par materiau sur les vertices Surface Nets :
shift (offset random), cubify (lerp vers centre cube), quantize (arrondi a 1/K),
barrel (cubify en Y), soft/hard edges. Donne du caractere visuel a chaque materiau
sans cout GPU.

**Statut :** Non commence. Voir `docs/plan-vertex-deformation.md`.

### 6. LOD avec skirts

Roblox utilise un mip pyramid par chunk + octree LOD. Les coutures entre niveaux LOD
sont resolues par des "skirts" (triangles de debordement + depth bias) au lieu du
stitching Transvoxel, qui est complexe. Solution elegante et simple.

**Statut :** Non commence. Voir `docs/plan-lod-skirts.md`.

### 7. Textures stylisees reelles

Passer des couleurs procedurales actuelles a de vraies textures (albedo + heightmap +
normal) dans un texture array. Triplanar mapping ameliore avec detiling (rotation/shift
par vertex a la Roblox). Height-based blending deja en place cote shader.

**Statut :** Infrastructure presente (texture array 5 layers, triplanar, height blend),
mais textures generees proceduralement. Voir `docs/plan-stylized-textures.md`.

### 8. Texture quilting (Roblox)

Alternative au triplanar : 1 plan de projection parmi 18 par vertex, encode dans le
vertex data. Reduit les fetches de 9-27 a 3. Technique a integrer dans le sujet
textures si le triplanar devient un bottleneck.

**Statut :** Non commence. Integre dans `docs/plan-stylized-textures.md`.

---

## Priorites suggerees

| Priorite | Sujet | Impact | Effort |
|----------|-------|--------|--------|
| 1 | Textures stylisees reelles | Visuel majeur | Moyen |
| 2 | Deformation vertices/materiau | Visuel fort, cout nul | Faible |
| 3 | LOD avec skirts | Scalabilite | Moyen-eleve |
| 4 | GPU Surface Nets | Performance smooth | Moyen |
| 5 | Fallback SM+SSAO | Compatibilite | Faible |
| 6 | Connected blocks | Gameplay | Eleve |
