GroveEngine/CLAUDE_NEXT_SESSION.md
StillHammer e004bc015b feat: Windows portage + Phase 4 SceneCollector integration
- Port to Windows (MinGW/Ninja):
  - ModuleFactory/ModuleLoader: LoadLibrary/GetProcAddress
  - SystemUtils: Windows process memory APIs
  - FileWatcher: st_mtime instead of st_mtim
  - IIO.h: add missing #include <cstdint>
  - Tests (09, 10, 11): grove_dlopen/dlsym wrappers

- Phase 4 - SceneCollector & IIO:
  - Implement view/proj matrix calculation in parseCamera()
  - Add IIO routing test with game→renderer pattern
  - test_22_bgfx_sprites_headless: 5 tests, 23 assertions pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 09:48:14 +08:00

4.5 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 (27 Nov 2025)

Portage Windows

Le projet compile maintenant sur Windows (MinGW/Ninja) en plus de Linux :

  • ModuleFactory.cpp et ModuleLoader.cpp : LoadLibrary/GetProcAddress
  • SystemUtils.cpp : Windows process memory APIs
  • FileWatcher.h : st_mtime au lieu de st_mtim
  • IIO.h : ajout #include <cstdint>
  • Tests integration (test_09, test_10, test_11) : wrappers grove_dlopen/grove_dlsym/grove_dlclose/grove_dlerror

Phases Complétées

Phase 1 - Squelette du module

  • libBgfxRenderer.so/.dll 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)

Phase 4 - SceneCollector & IIO Integration (NOUVEAU)

  • SceneCollector : collecte des messages IIO pour render:sprite, render:camera, etc.
  • Calcul des matrices view/proj avec support zoom dans parseCamera()
  • Test test_22_bgfx_sprites_headless : 23 assertions, 5 test cases passent
    • Validation structure sprite data
    • Routing IIO inter-modules (game → renderer pattern)
    • Structure camera/clear/debug messages

Fichiers Clés

modules/BgfxRenderer/
├── BgfxRendererModule.cpp   # Point d'entrée module + ShaderManager
├── 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 instancié
│   └── DebugPass.cpp        # Debug shapes
├── Frame/
│   ├── FramePacket.h        # Données immutables par frame
│   └── FrameAllocator.cpp   # Allocateur bump
└── Scene/
    └── SceneCollector.cpp   # Collecte messages IIO + matrices view/proj

Prochaine Phase : Phase 5

Objectif

Test visuel complet avec sprites via IIO.

Tâches

  1. Créer test_23_bgfx_sprites_visual.cpp :

    • Charger le module BgfxRenderer via ModuleLoader
    • Publier des sprites via IIO depuis un "game module" simulé
    • Valider le rendu visuel (sprites affichés à l'écran)
  2. Compléter la boucle render :

    • Appeler SceneCollector::collect() pour récupérer les messages IIO
    • Passer le FramePacket finalisé aux passes
    • S'assurer que SpritePass::execute() dessine les sprites
  3. Debug :

    • Ajouter les debug shapes (lignes, rectangles) si besoin

Build & Test

# Windows (MinGW + Ninja)
cmake -G Ninja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGROVE_BUILD_BGFX_RENDERER=ON -B build-bgfx
cmake --build build-bgfx -j4

# IMPORTANT: Sur Windows, ajouter MinGW au PATH pour ctest:
PATH="/c/ProgramData/mingw64/mingw64/bin:$PATH" ctest -R Bgfx --output-on-failure

# Tests actuels
./build-bgfx/tests/test_20_bgfx_rhi         # 23 tests RHI
./build-bgfx/tests/test_21_bgfx_triangle    # Test visuel triangle
./build-bgfx/tests/test_22_bgfx_sprites_headless  # 5 tests IIO/structure

Notes Importantes

  • Cross-Platform : Le projet compile sur Linux ET Windows
  • Windows PATH : Les DLLs MinGW doivent être dans le PATH pour exécuter les tests via ctest
  • 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
  • IIO Routing : Les messages ne sont pas routés vers l'instance émettrice, utiliser deux instances séparées (pattern game → renderer)