cleanup
This commit is contained in:
parent
46e8f50f37
commit
abc640c2d0
3 changed files with 31 additions and 3 deletions
17
CLAUDE.md
17
CLAUDE.md
|
|
@ -155,8 +155,25 @@ Les shaders custom doivent respecter le **binding model de Wicked Engine** :
|
|||
- `DXGI_ERROR_DEVICE_HUNG` → shader en boucle infinie ou accès mémoire hors limites
|
||||
- Dialog bloquant avec `messageBox` → vient de `wi::helper::messageBox()`, ne pas confondre avec un crash
|
||||
|
||||
**⚠️ Détection de crash GPU depuis CLI (Claude Code)** : les crashs GPU (`DXGI_ERROR_INVALID_CALL`, device removed) affichent une **modale Windows bloquante** via `wi::helper::messageBox()`. `timeout` tue le process sans détecter le crash. Pour détecter correctement :
|
||||
1. **NE PAS utiliser `timeout`** pour tester — demander à l'utilisateur de lancer manuellement
|
||||
2. Vérifier `bvle_backlog.txt` après exécution (contient les erreurs DX12)
|
||||
3. Vérifier `bvle_crash.log` et `bvle_crash.dmp` pour les crashs SEH
|
||||
4. Lancer avec `debugdevice` pour obtenir les messages de validation D3D12 détaillés dans le backlog
|
||||
5. Un exit code non-zéro n'est PAS fiable : `timeout` renvoie 124, la modale attend indéfiniment
|
||||
|
||||
**Backlog Wicked** : `wi::backlog::SetLogFile("bvle_backlog.txt")` redirige les logs vers un fichier. Touche `~` (tilde) pour toggler la console à l'écran.
|
||||
|
||||
### Gestion des resource states DX12 (buffers)
|
||||
|
||||
**Wicked Engine ne fait AUCUN tracking automatique d'état pour les buffers.** Les `GPUBarrier::Buffer(buf, before, after)` sont passées directement à D3D12 sans validation. **Le `state_before` DOIT correspondre à l'état DX12 réel, sinon → DXGI_ERROR_INVALID_CALL.**
|
||||
|
||||
**Pièges critiques :**
|
||||
- `UpdateBuffer()` → appelle `CopyBufferRegion` sans aucune barrier. Le buffer **DOIT** être en COPY_DST (ou COMMON pour promotion implicite sur frame 1).
|
||||
- Après `DrawInstancedIndirectCount`, les buffers indirect restent en **INDIRECT_ARGUMENT**. Appeler `UpdateBuffer` dessus au frame suivant → crash car pas de transition INDIRECT_ARGUMENT → COPY_DST.
|
||||
- Les buffers créés avec `Usage::DEFAULT` démarrent en état **COMMON** (D3D12). COMMON supporte la promotion implicite vers COPY_DST, SRV, etc. mais **PAS vers UAV**.
|
||||
- Solution recommandée : **tracker l'état manuellement** avec un `mutable ResourceState` et faire des barriers explicites entre chaque usage.
|
||||
|
||||
**Mode debug face-color** : lancer avec `BVLEVoxels.exe debug` pour activer. Génère un monde de test (blocs isolés) et colore chaque face selon sa direction :
|
||||
- Bright Red / Dark Red = +X / -X
|
||||
- Bright Green / Dark Green = +Y / -Y
|
||||
|
|
|
|||
|
|
@ -49,3 +49,16 @@ add_custom_command(TARGET BVLEVoxels POST_BUILD
|
|||
${CMAKE_SOURCE_DIR}/engine/WickedEngine/shaders/voxel
|
||||
COMMENT "Copying voxel shaders to Wicked Engine shader source directory"
|
||||
)
|
||||
|
||||
# Delete stale compiled voxel shaders to force runtime recompilation.
|
||||
# Wicked Engine only compiles .hlsl → .cso when .cso is ABSENT (no timestamp check).
|
||||
# Without this step, .hlsl changes are silently ignored if old .cso files exist.
|
||||
add_custom_command(TARGET BVLEVoxels POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f
|
||||
$<TARGET_FILE_DIR:BVLEVoxels>/shaders/hlsl6/voxel/voxelVS.cso
|
||||
$<TARGET_FILE_DIR:BVLEVoxels>/shaders/hlsl6/voxel/voxelPS.cso
|
||||
$<TARGET_FILE_DIR:BVLEVoxels>/shaders/hlsl6/voxel/voxelCullCS.cso
|
||||
$<TARGET_FILE_DIR:BVLEVoxels>/shaders/hlsl6/voxel/voxelMeshCS.cso
|
||||
$<TARGET_FILE_DIR:BVLEVoxels>/shaders/hlsl6/voxel/voxelCommon.hlsli.cso
|
||||
COMMENT "Clearing stale voxel shader cache (forces recompilation from current .hlsl sources)"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ Prototype de moteur voxel hybride basé sur [Wicked Engine](https://github.com/t
|
|||
|
||||
Cible : **60+ fps en 1440p**, monde de 512×512×256 voxels visibles.
|
||||
|
||||

|
||||
|
||||
## Prérequis
|
||||
|
||||
| Outil | Version | Installation |
|
||||
|
|
@ -109,7 +107,7 @@ GPU: frustum cull compute → indirect args → DrawInstancedIndirectCount (1 ap
|
|||
## Phases de développement
|
||||
|
||||
- [x] **Phase 1** — Setup, meshing CPU, rendu basique
|
||||
- [x] **Phase 2** — GPU-driven pipeline, mega-buffer, culling, compute shaders
|
||||
- [ ] **Phase 2** — GPU-driven pipeline, mega-buffer, culling, compute shaders
|
||||
- [ ] **Phase 3** — Texture blending (triplanar, height-based)
|
||||
- [ ] **Phase 4** — Toping (rebords, bordures procédurales)
|
||||
- [ ] **Phase 5** — Rendu smooth (Surface Nets / Marching Cubes)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue