diff --git a/AGENTS.md b/AGENTS.md index fa25fe60..dd7f5549 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -45,13 +45,14 @@ in `src/AcDream.*` references it as a project dependency. `TextureCache`, `GlobalMeshBuffer`, shader infrastructure, and the EnvCell/portal/scenery/terrain-blending pipeline classes. -**Modern rendering path is MANDATORY** as of the N.5 ship amendment. -`WbFoundationFlag`, `InstancedMeshRenderer`, and `StaticMeshRenderer` -are deleted. Missing `GL_ARB_bindless_texture` or -`GL_ARB_shader_draw_parameters` throws `NotSupportedException` at -startup. There is no legacy fallback. Engineering cribs (WbMeshAdapter -seams, N.5 SSBO layout, translucency model, gotchas) live in -`memory/reference_modern_rendering_pipeline.md`. +**Modern rendering path is MANDATORY.** The N.5 ship amendment deleted +`WbFoundationFlag`, `InstancedMeshRenderer`, and `StaticMeshRenderer`; +Campaign V (`docs/plans/2026-07-27-vulkan-campaign.md`, closed +2026-07-29) then ported the renderer to Vulkan behind the RHI contract +and deleted the OpenGL backend outright — `AcDream.App` references only +`Silk.NET.Vulkan`. There is no legacy fallback. Engineering cribs +(WbMeshAdapter seams, N.5 SSBO layout, translucency model, gotchas) +live in `memory/reference_modern_rendering_pipeline.md`. Before re-implementing any AC-specific rendering or dat-handling algorithm, **read `docs/architecture/worldbuilder-inventory.md` FIRST**. @@ -78,17 +79,20 @@ and `~/.claude/projects/.../memory/` (the latter is browsable in Obsidian via the `claude-memory/` junction in the repo root; see `memory/reference_obsidian_vault.md`). -**UI strategy:** two coexisting presentation stacks over shared state, -ViewModels, events, and commands. ImGui.NET + -`Silk.NET.OpenGL.Extensions.ImGui` is the permanent -`ACDREAM_DEVTOOLS=1` developer stack using `IPanel`/`IPanelRenderer`. -Retail gameplay UI is the independent retained `UiHost`/`UiRoot` tree in -`AcDream.App/UI`, imported from LayoutDesc/DAT assets and bound by focused -controllers. The stable cross-stack seam is ViewModels/commands, not a backend -swap. `TextRenderer` + `BitmapFont` also serve D.6 world-space HUD elements -where ImGui cannot reach the 3D scene. Plugin gameplay UI uses the BCL-only +**UI strategy:** one presentation stack — the retained retail +`UiHost`/`UiRoot` tree in `AcDream.App/UI`, imported from LayoutDesc/DAT +assets and bound by focused controllers over shared state, ViewModels, +events, and commands (the ViewModels/commands seam from the earlier +two-stack era remains the stable boundary between state and +presentation). The ImGui.NET developer-tools frontend +(`AcDream.UI.ImGui`) and the OpenGL backend it required were deleted at +Campaign V slice V11 (`docs/plans/2026-07-27-vulkan-campaign.md`); +`ACDREAM_DEVTOOLS=1` now only selects the optional Vulkan +validation/debug-utils extensions (see the flag's log line in +`Program.cs`). `TextRenderer` + `BitmapFont` serve D.6 world-space HUD +elements in the 3D scene. Plugin gameplay UI uses the BCL-only `AcDream.Plugin.Abstractions.IUiRegistry.AddMarkupPanel` contract; plugins -never import App or ImGui namespaces. Full design: +never import App namespaces. Full design: [`docs/plans/2026-04-24-ui-framework.md`](docs/plans/2026-04-24-ui-framework.md). Memory cribs: `claude-memory/project_chat_pipeline.md` (chat pipeline as of Phase I), `claude-memory/project_input_pipeline.md` (input pipeline as of diff --git a/CLAUDE.md b/CLAUDE.md index 10ff8c2d..11e4a643 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -43,13 +43,14 @@ in `src/AcDream.*` references it as a project dependency. `TextureCache`, `GlobalMeshBuffer`, shader infrastructure, and the EnvCell/portal/scenery/terrain-blending pipeline classes. -**Modern rendering path is MANDATORY** as of the N.5 ship amendment. -`WbFoundationFlag`, `InstancedMeshRenderer`, and `StaticMeshRenderer` -are deleted. Missing `GL_ARB_bindless_texture` or -`GL_ARB_shader_draw_parameters` throws `NotSupportedException` at -startup. There is no legacy fallback. Engineering cribs (WbMeshAdapter -seams, N.5 SSBO layout, translucency model, gotchas) live in -`memory/reference_modern_rendering_pipeline.md`. +**Modern rendering path is MANDATORY.** The N.5 ship amendment deleted +`WbFoundationFlag`, `InstancedMeshRenderer`, and `StaticMeshRenderer`; +Campaign V (`docs/plans/2026-07-27-vulkan-campaign.md`, closed +2026-07-29) then ported the renderer to Vulkan behind the RHI contract +and deleted the OpenGL backend outright — `AcDream.App` references only +`Silk.NET.Vulkan`. There is no legacy fallback. Engineering cribs +(WbMeshAdapter seams, N.5 SSBO layout, translucency model, gotchas) +live in `memory/reference_modern_rendering_pipeline.md`. Before re-implementing any AC-specific rendering or dat-handling algorithm, **read `docs/architecture/worldbuilder-inventory.md` FIRST**. @@ -76,17 +77,20 @@ and `~/.claude/projects/.../memory/` (the latter is browsable in Obsidian via the `claude-memory/` junction in the repo root; see `memory/reference_obsidian_vault.md`). -**UI strategy:** two coexisting presentation stacks over shared state, -ViewModels, events, and commands. ImGui.NET + -`Silk.NET.OpenGL.Extensions.ImGui` is the permanent -`ACDREAM_DEVTOOLS=1` developer stack using `IPanel`/`IPanelRenderer`. -Retail gameplay UI is the independent retained `UiHost`/`UiRoot` tree in -`AcDream.App/UI`, imported from LayoutDesc/DAT assets and bound by focused -controllers. The stable cross-stack seam is ViewModels/commands, not a backend -swap. `TextRenderer` + `BitmapFont` also serve D.6 world-space HUD elements -where ImGui cannot reach the 3D scene. Plugin gameplay UI uses the BCL-only +**UI strategy:** one presentation stack — the retained retail +`UiHost`/`UiRoot` tree in `AcDream.App/UI`, imported from LayoutDesc/DAT +assets and bound by focused controllers over shared state, ViewModels, +events, and commands (the ViewModels/commands seam from the earlier +two-stack era remains the stable boundary between state and +presentation). The ImGui.NET developer-tools frontend +(`AcDream.UI.ImGui`) and the OpenGL backend it required were deleted at +Campaign V slice V11 (`docs/plans/2026-07-27-vulkan-campaign.md`); +`ACDREAM_DEVTOOLS=1` now only selects the optional Vulkan +validation/debug-utils extensions (see the flag's log line in +`Program.cs`). `TextRenderer` + `BitmapFont` serve D.6 world-space HUD +elements in the 3D scene. Plugin gameplay UI uses the BCL-only `AcDream.Plugin.Abstractions.IUiRegistry.AddMarkupPanel` contract; plugins -never import App or ImGui namespaces. Full design: +never import App namespaces. Full design: [`docs/plans/2026-04-24-ui-framework.md`](docs/plans/2026-04-24-ui-framework.md). Memory cribs: `claude-memory/project_chat_pipeline.md` (chat pipeline as of Phase I), `claude-memory/project_input_pipeline.md` (input pipeline as of