GroveEngine/CLAUDE_NEXT_SESSION.md
StillHammer 489c8b5adc docs: Add session successor prompt for Phase 4
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 16:49:29 +08:00

100 lines
3.1 KiB
Markdown

# GroveEngine - Session Successor Prompt
## Contexte Rapide
GroveEngine est un moteur de jeu C++17 avec hot-reload de modules. On développe actuellement le module **BgfxRenderer** pour le rendu 2D.
## État Actuel (26 Nov 2025)
### Phases Complétées ✅
**Phase 1** - Squelette du module
- `libBgfxRenderer.so` compilé et chargeable dynamiquement
**Phase 2** - RHI Layer
- `BgfxDevice` : init/shutdown/frame, création textures/buffers/shaders
- `RHICommandBuffer` : recording de commandes GPU
- `FrameAllocator` : allocateur lock-free per-frame
- `RenderGraph` : tri topologique Kahn pour ordonnancement des passes
- Tests : `test_20_bgfx_rhi` (23 tests passent)
**Phase 3** - Shaders & Triangle
- `ShaderManager` : chargement centralisé des shaders embedded
- Shaders pré-compilés : OpenGL, Vulkan, DX11, Metal
- Test visuel : `test_21_bgfx_triangle` - triangle RGB coloré (~567 FPS Vulkan)
### Fichiers Clés
```
modules/BgfxRenderer/
├── BgfxRendererModule.cpp # Point d'entrée module
├── RHI/
│ ├── RHIDevice.h # Interface abstraite
│ ├── BgfxDevice.cpp # Implémentation bgfx
│ ├── RHICommandBuffer.h # Command buffer
│ └── RHITypes.h # Handles, states
├── Shaders/
│ ├── ShaderManager.cpp # Gestion shaders
│ ├── vs_color.bin.h # Vertex shader embedded
│ └── fs_color.bin.h # Fragment shader embedded
├── RenderGraph/
│ └── RenderGraph.cpp # Tri topologique passes
├── Passes/
│ ├── ClearPass.cpp # Clear screen
│ ├── SpritePass.cpp # Rendu sprites (à compléter)
│ └── DebugPass.cpp # Debug shapes
├── Frame/
│ ├── FramePacket.h # Données immutables par frame
│ └── FrameAllocator.cpp # Allocateur bump
└── Scene/
└── SceneCollector.cpp # Collecte messages IIO
```
## Prochaine Phase : Phase 4
### Objectif
Intégrer le ShaderManager dans le module principal et rendre le SpritePass fonctionnel.
### Tâches
1. **Mettre à jour BgfxRendererModule.cpp** :
- Ajouter `ShaderManager` comme membre
- Initialiser les shaders dans `setConfiguration()`
- Passer le program aux passes
2. **Compléter SpritePass.cpp** :
- Utiliser le shader "sprite" du ShaderManager
- Implémenter l'update du instance buffer avec les données FramePacket
- Soumettre les draw calls instancés
3. **Test d'intégration** :
- Créer un test qui charge le module via `ModuleLoader`
- Envoyer des sprites via IIO
- Vérifier le rendu
### Build & Test
```bash
# Build avec BgfxRenderer
cmake -DGROVE_BUILD_BGFX_RENDERER=ON -B build-bgfx
cmake --build build-bgfx -j4
# Tests RHI
./build-bgfx/tests/test_20_bgfx_rhi
# Test visuel triangle
./build-bgfx/tests/test_21_bgfx_triangle
```
## Notes Importantes
- **WSL2** : Le rendu fonctionne via Vulkan (pas OpenGL)
- **Shaders** : Pré-compilés, pas besoin de shaderc à runtime
- **Thread Safety** : Voir `docs/coding_guidelines.md` pour les patterns mutex
## Commit Actuel
```
1443c12 feat(BgfxRenderer): Complete Phase 2-3 with shaders and triangle rendering
```