1.8 KiB
1.8 KiB
D3D12 Migration
Aquarium is moving to D3D12 before the transparent stochastic surface pipeline gets real machinery. D3D11 remains the reference renderer until the D3D12 path has feature parity.
Current State
--renderer d3d11is the default renderer and owns the live scene.--renderer d3d12creates a D3D12 device, command queue, flip-discard swapchain, RTV heap, per-backbuffer command allocators, command list, fence-backed present loop, shader-visible CBV/SRV/UAV descriptor arena, per-frame upload buffers, fullscreen root signature, and a smoke-test PSO.- The D3D12 path currently draws a diagnostic fullscreen pass. It exists to prove backend lifecycle, shader compilation, root signature creation, descriptor-table binding, per-frame constant upload, PSO creation, render target binding, and draw submission before real scene passes migrate.
IAquariumRendereris the host boundary. The host should not learn backend internals as the D3D12 renderer grows teeth.
Migration Order
- Keep D3D11 as the visual reference.
- Move shared renderer contracts behind explicit backend-neutral types.
- Replace the smoke-only descriptor/upload code with general ring-buffer and resource lifetime helpers.
- Port the existing passes in visible order: grid height, froxel volume, scene, bloom, resolve, overlay/debug.
- Build the transparent stochastic surface pipe in D3D12 once descriptor and candidate-buffer ownership is explicit.
Invariants
- No hidden D3D11 dependency should leak into shared renderer contracts.
- D3D12 work must be validated by actual headless runs, not just compilation.
- D3D11 output remains the comparison target until D3D12 fully renders the scene.
- Transparent surfaces are still events/candidates, not canonical depth.