v0.4.0: Direct3D 11/12 backends, in-game renderer selection, per-run logging
- ra3.dx: D3D11 and D3D12 presentation backends (runtime HLSL via d3dcompiler); 2D image blit and the GPU heightfield terrain raymarch, with the corner minimap/FPS overlays. Non-Windows builds link a null fallback. - ra3.display: preferred backend plus ordered fallback (Vulkan/D3D11/D3D12/SDL); menu gains a Renderer option and the CLI gains --dx11/--dx12/--sdl, which the render command now honours too. - vendor libenderlog (MIT): every run writes openra3.log next to the exe and archives the previous run's log; records at warn and above carry a call stack (native fallback, since libc++ has no <stacktrace>). - Windows crash reporter writes openra3_crash.log (faulting module + backtrace); D3D/DXGI diagnostics are routed through the logger.
This commit is contained in:
+22
-5
@@ -62,9 +62,9 @@ umbrella module re-exports the SDK; applications import `ra3` only.
|
||||
| \ |
|
||||
| \ v
|
||||
| ra3.display (backend pick)
|
||||
| / \
|
||||
v ra3.ui ra3.vulkan
|
||||
| (SDL3) (Vulkan)
|
||||
| / | \
|
||||
v ra3.ui ra3.vulkan ra3.dx
|
||||
| (SDL3) (Vulkan) (D3D11/12)
|
||||
---------------------------------------------------------------------------
|
||||
v
|
||||
L2 simulation ra3.logic ra3.modules ra3.combat ra3.movement
|
||||
@@ -80,7 +80,8 @@ umbrella module re-exports the SDK; applications import `ra3` only.
|
||||
|
||||
The current concrete modules (`ra3.core`, `ra3.logic`, `ra3.data`,
|
||||
`ra3.skirmish`, `ra3.fs`, `ra3.map`, `ra3.terrain`, `ra3.render`, `ra3.ui.*`,
|
||||
`ra3.vulkan.*`, `ra3.display`, `ra3.game`, `ra3.client`) are the **seeds** of the
|
||||
`ra3.vulkan.*`, `ra3.dx.*`, `ra3.display`, `ra3.game`, `ra3.client`, and the
|
||||
vendored `ender.log`) are the **seeds** of the
|
||||
target modules below. `ra3.skirmish` and `ra3.game` will be absorbed into
|
||||
`ra3.ai` / `ra3.match`; new modules are added as their subsystems are recovered.
|
||||
|
||||
@@ -557,7 +558,8 @@ Mirrors SAGE `GameEngine/Common`. Everything else speaks this.
|
||||
- `[x]` window, streaming-texture blit, input polling
|
||||
- `[ ]` gamepad support `(v0.8)`
|
||||
- **F3 Backend selection (`ra3.display`)** `[D]`
|
||||
- `[x]` try Vulkan → SDL → report failure for offscreen fallback
|
||||
- `[x]` preferred backend + ordered fallback (Vulkan / D3D11 / D3D12 / SDL)
|
||||
- `[x]` in-game Renderer option; report failure for offscreen fallback
|
||||
- **F4 Input mapping** `[~]`
|
||||
- `[x]` keyboard/mouse state, modifier masks
|
||||
- `[ ]` rebindable keybinds, mouse capture, scroll wheel events `(v0.6)`
|
||||
@@ -578,6 +580,21 @@ Mirrors SAGE `GameEngine/Common`. Everything else speaks this.
|
||||
- **F4 Null fallback** `[D]`
|
||||
- `[x]` report failure when no Vulkan loader is present
|
||||
|
||||
### M18b `ra3.dx` — Direct3D 11 / 12 backend `[P]`
|
||||
|
||||
- **F1 Device & swapchain** `[D]`
|
||||
- `[x]` SDL3 window → HWND, DXGI flip-model swapchain, resize
|
||||
- `[x]` runtime HLSL via `d3dcompiler_47` (no build-time shader compiler)
|
||||
- **F2 2D image path** `[D]`
|
||||
- `[x]` BGRA scene texture + fullscreen-triangle blit (D3D11/D3D12)
|
||||
- **F3 Terrain presentation** `[D]`
|
||||
- `[x]` GPU heightfield raymarch (HLSL port of `terrain.frag`), D3D11 and D3D12
|
||||
- **F4 Root signatures / PSOs (D3D12)** `[~]`
|
||||
- `[x]` root constants, descriptor tables, static samplers, barriers
|
||||
- `[ ]` shared RHI with Vulkan (see M16 F1) `(v0.6)`
|
||||
- **F5 Null fallback** `[D]`
|
||||
- `[x]` non-Windows builds link a stub that fails `init`
|
||||
|
||||
### M19 `ra3.audio` — audio `[ ]`
|
||||
|
||||
- **F1 SFX** `[ ]`
|
||||
|
||||
Reference in New Issue
Block a user