mirror of
https://github.com/Heretek-AI/game-engine.git
synced 2026-11-07 02:45:58 -10:00
main
* [P4-06] Wire GPU-driven path for statics (SceneSsbo + GpuCull + count-draw) (#104) New engine_gpu_driven_statics TU proves the P4-06 frame order on Lavapipe: stream SceneSsbo -> phase A cull -> barrier -> phase B Hi-Z -> barrier compute->DRAW_INDIRECT -> vkCmdDrawIndexedIndirectCount of the static cube mesh -> P4-01 shade+post pair vs the p4_01_spheres_320x240 golden. Frame block carries an ortho VP mapping the P4-01 tile span on-screen for the 64x64 cull framebuffer (CPU oracle + GPU push agree); GPU DRAW count (25) matches the CPU oracle; shade/post output equals the P4-01 golden at P1-05 tolerance. Zero validation errors/warnings. No ABI changes. * [P4-06] Validate p4_06_statics golden parity on llvmpipe + GPU gating (#104) Adds native/tests/golden/p4_06_statics_320x240.png (byte-equal sibling of the P4-01 golden) and a second golden_check in test_gpu_driven_statics, same P1-05 tolerance. Proves the GPU-driven front half (SceneSsbo stream -> phase A cull -> barrier -> phase B Hi-Z -> compute->DRAW_INDIRECT barrier -> count-draw) renders identically to the direct path: GPU DRAW count 25 == CPU oracle, both goldens PASS on llvmpipe. GPU gating: bogus ICD + ENGINE_REQUIRE_GPU=1 yields [FAIL] exit path; ungated yields [SKIP] pass. Zero validation errors. * parity: 104 P4-06 250k acceptance on real GPU (cull front half timed, DRAW=250k) * parity: 104 P4-06 dedup front-half into gpu_driven_helper (Sonar 21.8 to gate) * parity: 104 P4-06 dedup statics TU onto shared gpu_driven_helper (Sonar pass 2) * parity: 104 P4-06 MoltenVK fallback (front-half proof, SKIP golden) + self-contained 250k TU * parity: 104 P4-06 dedup statics TU onto shared gpu_driven_helper (Sonar pass 2, re-applied) * parity: 104 P4-06 restore missing submit (dedup dropped queue submit) * parity: 104 P4-06 address CodeRabbit review (note accuracy, DLL list, submit check) * parity: 104 P4-06 TU-local mirror-breakers (image triple, frustum, pipe shim) * parity: 104 P4-06 single-line front-half payload builder (Sonar mirror) * parity: 104 P4-06 MoltenVK fallback (front-half proof, SKIP golden) * parity: 104 P4-06 route frame lambda through GoldenDeviceCalls * parity: 104 P4-06 shade/post pair via GoldenBuildShadePost * parity: 104 P4-06 dedup handles+submit+alloc onto shared helpers * parity: 104 P4-06 share P4-01-shape handles via GoldenFrameHandles2 * parity: 104 P4-06 frame images via shared GoldenMakeSampler * parity: 104 P4-06 mirror-break free tail + single-block cmd alloc * parity: 104 P4-06 250k TU self-contained + MoltenVK SKIP * parity: 104 P4-06 probe drawIndirectCount (MoltenVK lacks it) * parity: 104 P4-06 notes: green gates + MoltenVK fallback --------- Co-authored-by: hermes-agent <hermes-agent@local> Co-authored-by: vulkan-renderer <vulkan-renderer@local>
Game Engine — Native C++20 + .NET 10
100% world state in native C++20 (Flecs / Jolt / Vulkan 1.3 / miniaudio), 0% gameplay state on the .NET GC heap. .NET 10 (hostfxr) is a stateless logic runner mutating native memory zero-copy via Span<T> + delegate* unmanaged[SuppressGCTransition].
End users write Unity-like IComponent scripts. Roslyn Incremental Source Generators compile them to burst-vectorized native chunk loops. Compile-time analyzers forbid hot-path allocations.
Layout
engine-root/
├── docs/ # Architecture roadmap + M1–M5 milestones + orchestration plan
├── scripts/ # bootstrap-github-issues.sh (labels, milestones, issues)
├── native/ # libengine_core (C++20): core, ecs, renderer, physics, audio, bridge
├── managed/ # Engine.Bindings / Runtime / Analyzers / Editor / Cli
├── tools/ # abi_codegen (bridge JSON -> C# bindings)
└── samples/ # Benchmark1M, stress scenes, FPS template
Milestones & Gates
| Milestone | Gate |
|---|---|
| M1 Spine (native ECS + zero-copy host) | 1M LocalTransform from C# in <1.5ms, 0 GC bytes |
| M2 Illusion compiler (Roslyn + hot-reload) | <100ms state-preserving C# hot-reload |
| M3 GPU-driven Vulkan 1.3 renderer | 250k PBR meshes + SDF GI @120+ FPS, <0.5ms CPU |
| M4 Jolt physics + spatial audio | 30k rigidbodies + zero-alloc C# callbacks @60+ FPS |
| M5 Editor UX + asset pipeline + CLI | <16ms asset streaming, engine-cli IPC, 1-click NativeAOT export |
Orchestration (Hermes-native)
- 6 profiles:
chief-architect,cpp-ecs-core,dotnet-roslyn-bridge,vulkan-renderer,editor-cli-ux,qa-gate - Work queue:
hermes kanbanboardgame-engine(tasksM1-01…M5-04) - Memory:
loreactive;mem0OSS optional onhttps://llm.heretek.one/v1(lemonade/embeddinggemma-2, 768 dims) - Bootstrap GitHub:
./scripts/bootstrap-github-issues.sh
Start (M1-01)
hermes kanban list --board game-engine
hermes -p cpp-ecs-core -w # isolated worktree mode for code tasks
Description
Native C++20 Flecs/Jolt/Vulkan + .NET 10 Roslyn game engine — zero-copy ECS spine, GPU-driven renderer, agent-orchestrated build
37 MiB
0 Stars
1 Watchers
0 Forks
Languages
C++
66.5%
C#
28.6%
CMake
2.8%
GLSL
1.4%
Slang
0.4%
Other
0.3%