92 lines
6 KiB
YAML
92 lines
6 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/D3D11 host, HLSL renderer, input loop, live runtime boundary,
|
|
CultCache-backed state, and future diegetic UI/runtime integration.
|
|
|
|
current_model:
|
|
host:
|
|
window: src/Aquarium.Engine/Platform/Win32Window.cs
|
|
renderer: src/Aquarium.Engine/Render/D3D11Renderer.cs
|
|
shader: src/Aquarium.Engine/Render/Shaders/Aquarium.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
|
|
runtime_surface: docs/cult-runtime-surface.md
|
|
native_spine: docs/vortice-spine.md
|
|
sdf_field_renderer_plan: docs/sdf-field-renderer-plan.md
|
|
tsr_inspired_taa_spec: docs/tsr-inspired-taa-spec.md
|
|
input: docs/input.md
|
|
volumetrics_research: research/volumetrics/synthesis.md
|
|
recent_volumetrics_and_gpu_sdf: research/volumetrics/recent-volumetrics-and-gpu-sdf.md
|
|
volumetrics_transcript_addendum: research/volumetrics/transcript-addendum.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 camera zoom distance, not pitch/yaw/projection.
|
|
- Body anchors remain world-space and independent of the moving Grid window.
|
|
- World-space domains own Grid texture/weather sampling.
|
|
- SDF clouds are local world media, not skybox content; they can exist above, below, around, or enclosing the camera.
|
|
- 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.
|
|
- Live-runtime reload success requires host acknowledgement of the exact live DLL path, not merely a pointer update.
|
|
- Closed visible dev windows can be reopened from the last good slot without rebuilding.
|
|
|
|
renderer_state:
|
|
current:
|
|
- D3D11 swapchain through Vortice.
|
|
- Fullscreen HLSL raymarch for Grid terrain, Self, and planets.
|
|
- Deferred Grid height render target.
|
|
- Primitive froxel/bin table for body broad phase.
|
|
- Stable planet-local displaced SDF domains.
|
|
- DirectWrite overlay text after scene rendering.
|
|
- Direct2D/DirectWrite debug UI panel with code-first controls bound to renderer state.
|
|
- Global GraphicsSettings document feeding render debug, exposure, bloom intensity, bloom veil, and medium composite intensity.
|
|
- First field instance structured buffer feeding a half-resolution registered medium diagnostic/transport pass.
|
|
- Parallel D3D12 scaffold behind IAquariumRenderer proving device/queue/swapchain, per-frame command allocators, fences, static/transient descriptor arenas, upload ring constants, RTV/SRV/UAV render targets, tracked barriers, command events, resize descriptor-arena rebuild, and the first migrated Grid height pass.
|
|
- Splash screen with bundled app icon and GameCult typefaces.
|
|
next:
|
|
- Port the froxel/field resource upload path into D3D12 without cloning smoke-pass-local policy.
|
|
- Promote field instances from fixed renderer table to a CPU-owned registry with per-field debug controls.
|
|
- Extend explicit renderer debug modes for hits, normals, depth, bins, and lighting.
|
|
- Restore HDR scene target, gentle pre-tonemap bloom, and ACES as explicit passes.
|
|
- Add volumetrics as an explicit renderer-owned field pass, starting from Wronski/Hillaire-style frustum volume lighting with Self as the first emitter.
|
|
- Evolve solids and clouds toward one SDF field registry with material and medium regimes.
|
|
- Extend TSR-inspired temporal resolve with general animated-field velocity, richer reactive masks, and true volumetric history.
|
|
- Move Grid gradients into the Grid target for cheaper terrain normals.
|
|
- Rebuild lighting as an Aquarium-owned field before adding richer fog.
|
|
- Add diegetic labels and object-local menus after the 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.
|
|
- Use research/volumetrics/synthesis.md before designing fog, atmospheric scattering, clouds, or sparse volume storage.
|
|
- Use research/volumetrics/recent-volumetrics-and-gpu-sdf.md before designing GPU SDF, cloud traversal, learned field storage, or radiance caching.
|
|
- Check research/volumetrics/transcript-addendum.md before relying on slide decks as evidence; video transcripts can change the renderer lesson.
|
|
- Follow docs/sdf-field-renderer-plan.md when adding SDF solids, SDF clouds, or hybrid field objects.
|
|
- 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 jitter, history, stochastic coverage, or temporal rejection.
|
|
- Promote future runtime knobs into typed CultCache documents before they become process folklore.
|
|
- Port only proven synth concepts into C# when audio returns; keep external prototypes as references, not engine baggage.
|