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

3.1 KiB

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

# 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