80 lines
5.4 KiB
YAML
80 lines
5.4 KiB
YAML
project:
|
|
name: Aquarium Engine
|
|
root: E:\Projects\Aquarium-Engine
|
|
upstream: https://github.com/GameCult/Aquarium-Engine
|
|
purpose: >
|
|
Native C# engine core for the Epiphany Aquarium client. The engine owns the
|
|
Win32 host, D3D12 renderer, input loop, live runtime boundary,
|
|
CultCache-backed state, and diegetic UI/runtime integration.
|
|
|
|
current_model:
|
|
host:
|
|
rider_solution: Aquarium.Engine.sln
|
|
cli_solution: Aquarium.Engine.slnx
|
|
window: src/Aquarium.Engine/Platform/Win32Window.cs
|
|
renderer: src/Aquarium.Engine/Render/D3D12Renderer.cs
|
|
grid_shader: src/Aquarium.Engine/Render/Shaders/D3D12Grid.hlsl
|
|
scene_shader: src/Aquarium.Engine/Render/Shaders/D3D12Scene.hlsl
|
|
post_shader: src/Aquarium.Engine/Render/Shaders/D3D12Post.hlsl
|
|
overlay_text: src/Aquarium.Engine/Render/DirectWriteOverlay.cs
|
|
debug_ui: src/Aquarium.Engine/Render/Ui/DebugUi.cs
|
|
runtime_loader: src/Aquarium.Engine/Live/LiveRuntimeLoader.cs
|
|
dev_reload: scripts/dev-reload.ps1
|
|
dev_watch: scripts/dev-watch.ps1
|
|
live_runtime:
|
|
contracts: src/Aquarium.Engine.Contracts
|
|
implementation: src/Aquarium.Engine.Live
|
|
state_store: src/Aquarium.Engine.Live/State/AquariumCultStateStore.cs
|
|
state_document: epiphany.aquarium.live_state
|
|
graphics_settings_document: epiphany.aquarium.graphics_settings
|
|
dependencies:
|
|
cult_math: E:\Projects\CultMath
|
|
cult_lib: E:\Projects\CultLib
|
|
docs:
|
|
doctrine: docs/aquarium-engine-doctrine.md
|
|
renderer: docs/hlsl-renderer.md
|
|
agent_sdf_visual_language: docs/epiphany-agent-sdf-visual-language.md
|
|
runtime_surface: docs/cult-runtime-surface.md
|
|
native_spine: docs/vortice-spine.md
|
|
tsr_inspired_taa_spec: docs/tsr-inspired-taa-spec.md
|
|
input: docs/input.md
|
|
hdr_pbr_presentation: research/rendering/hdr-pbr-presentation.md
|
|
|
|
invariants:
|
|
- The camera target is the Grid center on the global XY plane.
|
|
- Grid radius follows twice the clamped camera zoom distance, then clamps to [20, 80]; pitch/yaw/projection do not resize it.
|
|
- Body anchors remain world-space and independent of the moving Grid window.
|
|
- Visible scene lighting is diegetic; no default ambient/global fill.
|
|
- Overlay text is DirectWrite final-pixel UI; scene text needs renderer-owned billboards.
|
|
- CultCache persists live app state through reload.
|
|
- Global GraphicsSettings persists renderer debug/HDR presentation knobs through restart and live reload.
|
|
- Failed shader/live-runtime reloads must leave the last good frame alive.
|
|
- Closed visible dev windows can be reopened from the last good slot without rebuilding.
|
|
|
|
renderer_state:
|
|
current:
|
|
- D3D12 default renderer behind IAquariumRenderer with explicit device/queue/swapchain, command allocators, fences, descriptor arenas, upload ring constants, tracked render targets, command events, resize rebuild, HDR/bloom/present, temporal diagnostics, and DirectWrite overlay bridge.
|
|
- Deferred scalar Grid height target rendered from additive brush passes.
|
|
- Self Grid brush uses a widened 17-world-unit gravity bowl plus an Aetheria-style radial cosine wave; CPU, Grid shader, scene placement, and temporal reprojection share the same brush equation.
|
|
- Direct-traced Grid surface is a terminating perfect mirror over the scalar height field, sampling Studio2 PMREM mip 0.
|
|
- SDF/analytic solids for Self, planets, and the cursor locator.
|
|
- Agent SDF visual language is documented against Epiphany's published CultNet surfaces: identity from agent memory, motion from heartbeat, posture from role/coordinator/result surfaces, pressure from reorient/pressure surfaces, and expression through bounded orbit wandering plus CPU-visible gravity-well pulses.
|
|
- Body light buffer feeds Self emission and direct body lighting; future other Selves should join this light lane, not a generic field-instance table.
|
|
- Studio2 PMREM and irradiance DDS cubemaps are loaded as D3D12 TextureCubes; PMREM serves roughness-mip specular, irradiance serves Lambertian diffuse IBL for non-metal bodies.
|
|
- DirectWrite/Direct2D debug UI panel with code-first controls bound to renderer state.
|
|
- Global GraphicsSettings document feeding render debug, exposure, bloom intensity, and bloom veil.
|
|
- Bundled blue-noise texture assets are retained for future dithering/noise work even though the removed medium path no longer samples them.
|
|
- D3D11 scene renderer, runtime volumetrics, cloud/fog research, medium/froxel render targets, and the SDF-field renderer plan are shelved and removed from live repo state.
|
|
next:
|
|
- Extend explicit renderer debug modes for hits, normals, depth, bins, and lighting.
|
|
- Promote bodies and body lights from fixed renderer tables to CPU-owned registries with typed controls.
|
|
- Add an AgentVisualState contract before replacing fixed sub-agent bodies with role-specific SDF organs.
|
|
- Add diegetic labels and object-local menus after renderer and text contracts are stable.
|
|
|
|
next_actions:
|
|
- Keep main as the live development branch.
|
|
- Verify publish output after every packaging-affecting change.
|
|
- Grow renderer debug controls through the Direct2D/DirectWrite overlay path.
|
|
- Follow research/rendering/hdr-pbr-presentation.md before changing HDR exposure, bloom, tonemapping, or display transforms.
|
|
- Follow docs/tsr-inspired-taa-spec.md when changing current temporal diagnostics.
|
|
- Promote future runtime knobs into typed CultCache documents before they become process folklore.
|