🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
100 lines
3.1 KiB
Markdown
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
|
|
```
|