From 1c67e826337bd19c78ea4a466c1db1e76367ddfc Mon Sep 17 00:00:00 2001 From: Daniel Hirt Date: Wed, 7 Oct 2026 08:18:40 +0000 Subject: [PATCH] docs: reconcile runtime and plugin documentation with current evidence Correct SDK/overlay ABI, Unity SR/FG and lifecycle claims; distinguish the published AC7 SR package from current-source FG services. Scope historical research and retain unresolved acceptance gaps. Rationale and source evidence: docs/documentation-audit.md and docs/current-status.md. Validation: 79 Markdown files, 504 local targets/anchors, 19 JSON files, three plugin fingerprints, ABI/version checks, unchanged packaging behavior and INI defaults, symlink and whitespace checks. No new Windows, GPU or game test; documentation-only changes. --- .agents/skills/game-render-analysis/SKILL.md | 5 +- .../references/session-lessons.md | 4 + .../references/ac7-native-ownership.md | 4 + AGENTS.md | 33 +++--- README.md | 25 +++-- docs/current-status.md | 101 ++++++++++++++++++ docs/dependencies.md | 31 +++++- docs/design.md | 63 +++++++---- docs/documentation-audit.md | 68 ++++++++++++ docs/frame-generation-plan.md | 13 ++- docs/implementation.md | 27 +++-- docs/releases/ac7-install.md | 4 + docs/releases/ac7-third-party.md | 6 +- docs/releases/v0.1.0-ac7.md | 4 + docs/releases/v0.1.0.md | 4 + docs/representation-plan.md | 5 + docs/research/README.md | 26 +++-- docs/research/ac7-composed-scene-color.md | 4 + docs/research/ac7-consumer-session.md | 4 + docs/research/ac7-dlss-fg-20261003.md | 4 + docs/research/ac7-fg-cpu-boundaries.md | 4 + docs/research/ac7-frame-capture.md | 4 + .../ac7-graph-capture-crash-20260930.md | 4 + docs/research/ac7-lighting-shadow-20261004.md | 4 + docs/research/ac7-motion-depth-20261004.md | 4 + docs/research/ac7-motion-vectors.md | 4 + .../ac7-native-renderer-refactor-20261001.md | 4 + docs/research/ac7-overlay-device.md | 4 + docs/research/ac7-plane-artifacts-20261002.md | 4 + docs/research/ac7-render-frame-handoff.md | 4 + docs/research/ac7-renderer-roots-20260930.md | 4 + docs/research/ac7-stability-20261001.md | 4 + docs/research/ac7-translucent-depth.md | 4 + docs/research/ac7-ui-composition.md | 4 + docs/research/ac7-ui-extraction.md | 4 + docs/research/ac7-ui-hdr-20260930.md | 4 + docs/research/architecture.md | 4 + docs/research/d3d11-runtime-vtable-rewrite.md | 4 + docs/research/drag-n-wash-renderer.md | 4 + docs/research/ghidra-tooling.md | 4 + .../orchestrator-fg-implementation.md | 4 + .../research/orchestrator-latency-services.md | 4 + docs/research/orchestrator-sr-switching.md | 4 + docs/research/presentation-backends.md | 4 + docs/research/presentation-bridge.md | 4 + docs/research/project-wingman-renderer.md | 4 + docs/research/shared-fg-20261004.md | 10 ++ .../skills-session-update-20261002.md | 4 + .../sr-interop-performance-20261002.md | 4 + docs/research/sr-runtime-deployment.md | 4 + docs/research/ue-reflection-mapping.md | 4 + docs/research/ue418-hook-map.md | 4 + docs/research/unity-dx12-runtime-20261004.md | 9 ++ docs/research/unity-mono-plugin.md | 17 ++- docs/research/vendor-fg-contracts.md | 4 + .../windows-present-hook-coexistence.md | 4 + docs/review.md | 5 + docs/tooling.md | 21 ++-- eng/package-unity-sr.ps1 | 16 ++- games/README.md | 14 ++- games/ac7/README.md | 26 ++++- games/ac7/engine.json | 23 +++- games/drag-n-wash/README.md | 20 +++- games/drag-n-wash/engine.json | 34 ++++-- games/project-wingman/README.md | 5 +- games/project-wingman/engine.json | 10 ++ games/unity-mono/README.md | 21 +++- loader/README.md | 89 +++++++++------ loader/ReScaleFrame.ini.sample | 16 ++- runtime/backends/README.md | 27 +++-- runtime/graphics/README.md | 19 +++- runtime/orchestrator/README.md | 56 +++++----- sdk/game/README.md | 21 +++- ui/overlay/README.md | 30 +++++- 74 files changed, 867 insertions(+), 189 deletions(-) create mode 100644 docs/current-status.md create mode 100644 docs/documentation-audit.md diff --git a/.agents/skills/game-render-analysis/SKILL.md b/.agents/skills/game-render-analysis/SKILL.md index 8086846..515ccd3 100644 --- a/.agents/skills/game-render-analysis/SKILL.md +++ b/.agents/skills/game-render-analysis/SKILL.md @@ -124,8 +124,9 @@ resize and teardown. A clean aircraft with missing clouds is a regression. Update research, engine evidence and tracker with question, rationale, discovery, revisions, units, identities, lifetimes, failed attempts, runtime use and uncertainty. Separate source review, build, synthetic/device fixtures, captured game data and user-run visual acceptance. Numeric -fixtures do not prove moving-game quality, FPS gains or latency. FG/Reflex and missing-object -motion coverage remain separate work. +fixtures do not prove moving-game quality, FPS gains or latency. FG/Reflex acceptance and missing-object motion coverage require their own evidence. Current +AC7 DLSS-G and final Unity FG corrections have recorded acceptance; higher MFG, new AC7 vendor FG, +Claw and measured latency claims remain separate gaps. See [current status](../../../docs/current-status.md). Use focused checks for documentation. Native/SDK changes require `eng/verify.ps1`; Rust behavior also requires `cargo test --workspace --locked`. Verification must not alter a game installation. diff --git a/.agents/skills/game-render-analysis/references/session-lessons.md b/.agents/skills/game-render-analysis/references/session-lessons.md index c6eb2f7..164056b 100644 --- a/.agents/skills/game-render-analysis/references/session-lessons.md +++ b/.agents/skills/game-render-analysis/references/session-lessons.md @@ -1,5 +1,9 @@ # AC7 session lessons, 30 September to 2 October 2026 +Scope: this reference records AC7 SR findings through 2 October. Later FG/Reflex, shared Unity +services and unresolved lighting work are summarized in +[current status](../../../../docs/current-status.md). SR acceptance alone does not validate those paths. + These are AC7 findings, not universal engine or GPU rules. The parent transcript and current source were reviewed before this reference was written. On 2 October the user accepted clean wing/cloud rendering, then accepted the optimized SR bridge and FSR4 compatibility deployment. diff --git a/.agents/skills/ue418-render-integration/references/ac7-native-ownership.md b/.agents/skills/ue418-render-integration/references/ac7-native-ownership.md index ff6b19f..27bdd72 100644 --- a/.agents/skills/ue418-render-integration/references/ac7-native-ownership.md +++ b/.agents/skills/ue418-render-integration/references/ac7-native-ownership.md @@ -1,5 +1,9 @@ # AC7 native ownership on UE4.18 +Scope: this reference records AC7 SR findings through 2 October. Later FG/Reflex, shared Unity +services and unresolved lighting work are summarized in +[current status](../../../../docs/current-status.md). SR acceptance alone does not validate those paths. + This is the working AC7 integration's evidence map, not a portable binary patch recipe. Always read current guards and structures in source. Values below were checked against that source on 2 October 2026; private layouts depend on the fingerprinted executable. diff --git a/AGENTS.md b/AGENTS.md index b892737..d640f85 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -62,7 +62,8 @@ ctest --preset windows-debug ctest --preset windows-debug -R game_plugin_contract # a single test ``` -Binaries land in `build/windows-x64/bin//`. +Shared binaries land in `build/windows-x64/bin//`; the dedicated AC7 DirectInput carrier +lands in `build/windows-x64/ac7/bin//`. The Unity version alias is in `bin//carriers/`. ### Building off Windows @@ -87,14 +88,19 @@ Windows unless it was actually built there. ## Architecture -Three artifacts load into the game process, plus one out-of-process frontend: +The native targets have these roles. Current game entry uses a carrier; bootstrap and launcher +remain scaffolds. AC7 links runtime objects into its proxy, while Unity loads the runtime DLL: | Target | Output name | Role | | --- | --- | --- | -| `rsf_bootstrap` | `ReScaleFrame.Bootstrap.dll` | injected entry point, loads the orchestrator | +| `rsf_bootstrap` | `ReScaleFrame.Bootstrap.dll` | version-only scaffold for the intended injected entry | | `rsf_orchestrator` | `ReScaleFrame.Runtime.dll` | vendor SDKs, plugin lifecycle, GPU resources, presentation | -| `rsf_game_ac7` | `ReScaleFrame.Game.AC7.dll` | game plugin: detection, hooks, engine data | -| `rsf_launcher` | `ReScaleFrame.exe` | standalone launcher and profile frontend | +| `rsf_game_ac7` | `ReScaleFrame.Game.AC7.dll` | native AC7 detection, hooks and engine data | +| `rsf_game_project_wingman` | `ReScaleFrame.Game.ProjectWingman.dll` | exact-build detection scaffold, rendering refused | +| `rsf_game_unity_mono` | `ReScaleFrame.Game.UnityMono.dll` | shared Mono/Harmony URP DX12 adapter | +| `rsf_proxy_ac7` | `dinput8.dll` in `ac7/bin/` | dedicated AC7 carrier | +| `rsf_proxy_dinput8` | `ReScaleFrame.Loader.dll`, `carriers/version.dll` aliases | shared Windows shim; Unity drop-in carrier | +| `rsf_launcher` | `ReScaleFrame.exe` | help/version scaffold; launching and profiles pending | | `rsf_game_sdk` | `ReScaleFrame::GameSDK` (INTERFACE) | the C header both sides compile against | Working consequences of the ownership split above: @@ -146,13 +152,16 @@ Mechanics that the header and `tests/plugin_contract.cpp` jointly enforce: - Extend structs by appending fields and bumping `RSF_GAME_ABI_VERSION`, never by reordering. - Plugin-returned strings are immutable, plugin-owned, and valid until the DLL unloads. Probe strings are borrowed for the duration of the call. -- Frame callbacks are deliberately absent for now (their shape, ABI 2, is specified in - `docs/representation-plan.md` and lands with its M5). They land after the renderer experiments settle - their shape. - -The honesty rule is testable here: `rsf_game_info.rendering_ready` stays `0` and `status` stays -truthful until rendering works through the plugin lifecycle, and the contract test asserts it. The same applies to -prose. Built is not injected, recognized is not supported, and a higher presentation counter is not +- Current game ABI is 13. `game_renderer.h` defines leased rendering passes, CPU events and host + services; `game_frame.h` defines frame/camera ABI 1. The older ABI 2 sketches in the representation + plan are historical design, not the current contract. Native resource pointers cross under explicit + callback leases; frame identity alone does not establish final Present ownership. + +The honesty rule is testable here: all current plugins keep `rsf_game_info.rendering_ready` and +renderer status readiness at `0`, and contract tests assert it. AC7 and Unity implement lifecycle +rendering and have recorded acceptance for particular deployed paths; that does not imply broad +plugin readiness. Keep code-level flags, actual implementation and acceptance scope distinct in prose. +[Current status](docs/current-status.md) records those boundaries. Built is not injected, recognized is not supported, and a higher presentation counter is not lower latency. Do not soften README or status wording ahead of the code. ## Conventions diff --git a/README.md b/README.md index 15cadd4..d181704 100644 --- a/README.md +++ b/README.md @@ -18,18 +18,22 @@ The AC7 proxy loads the game plugin and shared runtime services. | Area | Status | | --- | --- | | DLSS Super Resolution / DLAA | Working in AC7 | -| Game detection and native SDK | Versioned C ABI, guarded AC7 engine hooks and renderer/resource ownership implemented; other games remain unsupported | -| Frame generation and latency | Planned; graphics interoperability research and shared-surface tests are in place | +| Game detection and native SDK | Game ABI 13 with lifecycle, CPU events and renderer callbacks; AC7 and Unity Mono paths implemented; Project Wingman remains a scaffold | +| Frame generation and latency | Current source implements DLSS-G, FSR3/4 FG, XeSS FG, Reflex/XeLL and live provider switching; AC7 DLSS-G and Unity corrections have user acceptance; broader hardware/scene and measured latency validation remain open | | FSR and XeSS | FSR 2/3/4 and XeSS SR available in AC7; optimized D3D11/D3D12 transfer; FSR 4 INT8 compatibility device-tested on RTX 4070 | | Standalone launcher and WSGM | Scaffolding and planned integration | +The published v0.1.0 AC7 ZIP provides SR and the overlay; it does not contain the later FG/Reflex +work on `main`. Unity currently has local test packages, not a published release. +See [current implementation and validation](docs/current-status.md) for evidence and remaining limits. + For downloads, supported builds, installation and controls, see the relevant game's README: -| Game | Released features | Guide | +| Game | Availability | Guide | | --- | --- | --- | | Ace Combat 7 | DLSS/DLAA, FSR 2/3/4, XeSS SR and overlay on Windows x64 | [AC7 README](games/ac7/README.md) | | Project Wingman | Scaffold and static UE4.27.2 research; rendering unsupported | [Project Wingman README](games/project-wingman/README.md) | -| Drag'n Wash | Experimental Unity Mono DX12 SR and shared overlay; Claw test package | [Drag'n Wash README](games/drag-n-wash/README.md) | +| Drag'n Wash | Unity Mono DX12 SR, shared overlay and runtime FG switching in source/local test builds; Claw acceptance pending | [Drag'n Wash README](games/drag-n-wash/README.md) | [Releases](https://github.com/KillerPixelCrew/ReScaleFrame/releases) · [Implementation tracker](docs/implementation.md) @@ -49,9 +53,9 @@ to the shared runtime. Loading that runtime is separate from activating a render | Game SDK | Keep the plugin/runtime boundary versioned and explicit through a C ABI | | Frontends | Configure sessions and show status through bounded IPC | -These are the framework's ownership boundaries. The current AC7 proxy still contains some glue -that will move into the plugin lifecycle; the working game path and that migration are tracked -separately. +The AC7 DirectInput carrier prepares the game plugin and links shared runtime objects into its +proxy. The Unity version shim loads the runtime DLL and shared Mono plugin. Bootstrap and launcher +remain scaffolds; frontend IPC is intended architecture rather than an implemented control route. Super resolution consumes scene colour before tonemapping. Frame generation needs a completed HUD-less image later in the frame. ReScaleFrame treats those as separate inputs and keeps frame/view @@ -84,7 +88,9 @@ All first-party components live in this monorepo and share one release version. ## Build and verify Windows/MSVC is the reference platform. You need Visual Studio C++ tools, a Windows SDK, CMake, -PowerShell and the Rust toolchain pinned in `rust-toolchain.toml`. +PowerShell and the Rust toolchain pinned in `rust-toolchain.toml`. Unity managed builds additionally +need .NET, Unity native headers and the researched player's Managed assemblies; see +[the Unity guide](games/unity-mono/README.md). ```powershell ./eng/verify.ps1 -Configuration Release @@ -93,7 +99,8 @@ cargo build --release --locked -p rescaleframe-overlay ``` Use `-VS2026` on the verification command if you have Visual Studio 2026 instead of 2022. -Native outputs are written to `build/windows-x64/bin/Release`; the Rust overlay is in `target/release`. +Shared native outputs are written to `build/windows-x64/bin/Release`; the dedicated AC7 carrier is +`build/windows-x64/ac7/bin/Release/dinput8.dll`. The Rust overlay is in `target/release`. The verification gate builds and tests the native tree, checks Rust formatting and runs Clippy. Rust tests use the separate command above. Verification never launches a game or changes an diff --git a/docs/current-status.md b/docs/current-status.md new file mode 100644 index 0000000..1cf7adc --- /dev/null +++ b/docs/current-status.md @@ -0,0 +1,101 @@ +# Current implementation and validation + +Documentation checked on 7 October 2026 against source commit +`fda5fd0f2730b40e5b96f419bc0a05cb0b73932b`, the recorded research and GitHub release metadata. +This is a source/documentation audit. No new game, GPU or Windows build was run for this audit. + +## Downloads and source builds + +The published [v0.1.0 AC7 release](https://github.com/KillerPixelCrew/ReScaleFrame/releases/tag/v0.1.0) +contains DLSS/DLAA, FSR 2/3/4 and XeSS SR, the AC7 plugin and Insert overlay. Its replacement +assets were uploaded on 2 October. FG and Reflex are absent from that package. Updating `main` +does not update a downloaded ZIP. Its included manifest and corresponding-source archive identify +the packaged code. There is no published Unity or Project Wingman release in the release listing +checked for this audit. + +Current source implements independent SR/FG selection and live FG provider replacement for AC7 +and the Unity Mono adapter. Build/deployment scripts and local test ZIPs are separate from a +published release. The Unity packager uses local Release artifacts and a deployed vendor payload; +it does not prove that a particular ZIP received game or Claw acceptance. + +## Game integrations + +| Integration | Implemented | Recorded validation and limits | +| --- | --- | --- | +| AC7, Steam build 9855922, D3D11 | Native renderer hooks and pre-tonemap SR; output-resolution UI/briefing; TrueSky correction; DLSS, FSR2/3/4, XeSS; D3D12 presentation facade and independent FG | User accepted corrected SR/UI/cloud rendering and DLSS-G. FSR3/XeSS FG have synthetic device activity; new AC7 vendor FG paths lack live acceptance. Briefing FG is deferred. Later low-resolution lighting defects and missing-object motion coverage remain open. | +| Drag'n Wash, Steam build 25286774, Unity 6000.3.14f1 Mono/URP RenderGraph, D3D12 | Shared shim, Mono/Harmony hooks, pre-DoF SR, overlay, DLSS/FSR/XeSS FG switching, pre-UI colour and temporal inputs independent of SR | Live SR execution and improved post-processing order recorded; user accepted XeSS/DLSS-G and the final FSR correction. General scene/resize/teardown coverage, other Unity players and MSI Claw acceptance remain unproven. | +| Project Wingman, researched UE4.27.2 build | Exact executable detection and ABI lifecycle scaffold | Contract-tested in a test process. Preparation/start refuse. No renderer, SR, FG, latency or VR integration. | + +All three native plugin APIs still report `rendering_ready = 0`. That conservative code-level +flag is distinct from recorded user acceptance of individual deployed paths; it must not be +rewritten in prose as either universal support or absence of all working rendering. Detection +checks executable basename, x64 machine and exact SHA256. Other builds remain unknown. + +Evidence: [AC7 consumer session](research/ac7-consumer-session.md), +[native renderer](research/ac7-native-renderer-refactor-20261001.md), +[SR/FSR4 acceptance](research/sr-interop-performance-20261002.md), +[AC7 FG and pacing](research/ac7-dlss-fg-20261003.md), +[shared FG corrections and final Unity acceptance](research/shared-fg-20261004.md), +[Unity SR](research/unity-dx12-runtime-20261004.md), +[lighting investigation](research/ac7-lighting-shadow-20261004.md) and +[Project Wingman research](research/project-wingman-renderer.md). + +## Runtime and controls + +SR consumes pre-tonemap scene colour. FG consumes the completed display-size frame and matching +normalized depth/motion, with optional HUD-less guides. AC7 preserves native UI composition; +its raw widget target is not proof of a vendor-compatible UI layer. Unity captures SDR colour +before screen-space UI; HDR output refuses that guide path. Full UI/moving-scene quality coverage +is not established for every provider. + +One physical presentation provider owns the chain at a time. Live replacement drains the old +owner and preserves engine buffers; unsupported requests retain the working provider. Insert +offers independent SR and FG choices, SDK-limited multipliers, Reflex and FPS controls. +FG provider preferences are saved separately from deployment defaults. Other controls' persistence +depends on the host; do not assume every setting survives restart. + +| FG provider | Capability in current source | Evidence limit | +| --- | --- | --- | +| DLSS-G | Fixed count and capability-gated Dynamic MFG in the runtime; SDK maximum queried; active generation requires effective Reflex at least On | Recorded RTX 4070 path generates one frame per source (2x). Higher counts and Dynamic MFG lack live acceptance. | +| FSR3 / FSR4 | Exact provider family requested; pinned swapchain API exposes one generated frame (2x) | FSR3 device activity and Unity user acceptance recorded. FSR4 FG refused the tested NVIDIA adapter; FSR4 SR INT8 success does not establish FSR4 FG support. | +| XeSS FG | XeLL pacing and SDK-queried interpolation maximum; count changes through the SDK | Device activity and Unity user acceptance recorded at 2x. Higher Intel MFG counts and Claw operation remain untested. | + +FSR2 and FSR1 are SR choices, not FG providers. Unity Off/FSR1 can still produce normalized FG +inputs. Pacing follows the FG provider; NVIDIA SR does not impose Reflex sleep on FSR/XeSS. +Rendered FPS and SDK/DXGI aggregate presented FPS are separate counters. Neither establishes +physical scanout, a latency reduction, or an in-game performance gain. + +## ABI, build and frontends + +| Contract | Current version | Source | +| --- | --- | --- | +| Game plugin lifecycle and renderer callbacks | 13 | `sdk/game/include/rescaleframe/game_api.h`, `game_renderer.h` | +| Frame/camera record | 1 | `sdk/game/include/rescaleframe/game_frame.h` | +| Vendor-neutral backend | 3 | `runtime/contract/include/rescaleframe/backend.h` | +| FG provider | 1 | `runtime/contract/include/rescaleframe/frame_generation.h` | +| Overlay | 9 | `ui/overlay/include/rescaleframe/overlay.h` | + +`VERSION` and the Cargo workspace both specify 0.1.0. Equal component versions do not imply equal +builds or ABI compatibility; deploy matched artifacts. SDK headers are optional, and absent headers +produce explicit unavailable stubs. Unity managed builds additionally require .NET, the researched +player's Managed assemblies, Harmony and Unity native headers. Those game assemblies are build +references and are not distributed. + +Windows/MSVC is the reference build. `eng/verify.ps1` builds/tests native code and runs Rust format +and Clippy. Rust tests need `cargo test --workspace --locked`; managed/device fixtures are separate. +Recorded test counts describe their dated runs and include opt-in skips. They are not fresh audit +results or proof that clean CI exercises SDK-enabled GPU code. + +The bootstrap DLL exports only a version; the launcher supports help/version without launching +or injection. Current game entry points are the AC7 DirectInput carrier and Unity version shim. +WSGM integration and frontend IPC remain planned. AC7 links shared runtime objects into its proxy; +Unity loads `ReScaleFrame.Runtime.dll`. See the [loader guide](../loader/README.md). + +## Reading the history + +[The implementation tracker](implementation.md) and research notes preserve dated failures, +experiments and later corrections. A pending statement in an earlier increment applies to that +increment. Follow its later correction and this status page for current claims. Plans describe +intended behavior; they are not feature or acceptance lists. Evidence JSON snapshots retain their +original measurements and hashes. Game `engine.json` summaries carry a separate current validation +summary so earlier observations remain attributable. diff --git a/docs/dependencies.md b/docs/dependencies.md index df132cb..c9782d7 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -3,7 +3,8 @@ ## Unity Mono DX12 adapter The managed helper uses Harmony 2.4.2 (MIT), pinned by its NuGet lockfile, with the executable -net472 assembly for the shipped Mono runtime. Unity assemblies are build references supplied +net472 Harmony assembly for the shipped Mono runtime. The RSF helper targets netstandard2.1. +Unity assemblies are build references supplied by the local game installation and are never included in the mod ZIP. The native adapter uses the public Unity rendering interfaces from NativeRenderingPlugin revision `522254181faf188efa8b50c3e3bf6fce720b26e4` under `vendor/unity-native/include`; those headers @@ -26,7 +27,7 @@ Vendor SDKs, reference checkouts, Epic source, and game binaries are kept outsid | --- | --- | --- | --- | | RenderDoc header and x64 DLL | 1.45 | `vendor/renderdoc/` | In-application capture | | Streamline headers | 2.14.1 | `vendor/streamline/include/sl.h` | Compile the DLSS adapter | -| Streamline/NGX x64 runtime | 2.14.1 release package | `vendor/streamline/bin/x64/` | Load and evaluate DLSS; `sl.dlss_g.dll`, `nvngx_dlssg.dll`, `sl.pcl.dll` and `sl.reflex.dll` are in the same package and are what frame generation will load | +| Streamline/NGX x64 runtime | 2.14.1 release package | `vendor/streamline/bin/x64/` | Load and evaluate DLSS; `sl.dlss_g.dll`, `nvngx_dlssg.dll`, `sl.pcl.dll` and `sl.reflex.dll` are in the same package and are loaded by current-source FG/Reflex | | FidelityFX SDK headers | `60f4ea81909200d8542eca14dccb2628b763a9a3` (SDK 2.3.0; FSR 2.3.4, 3.1.5 and hardware-dependent 4.1.1) | `vendor/fidelityfx/Kits/FidelityFX/api/include/` and `upscalers/include/` | Compile the FSR adapter | | FidelityFX x64 runtime | same | `vendor/fidelityfx/Kits/FidelityFX/signedbin/` | `amd_fidelityfx_loader_dx12.dll`, `amd_fidelityfx_upscaler_dx12.dll`, `amd_fidelityfx_framegeneration_dx12.dll` | | XeSS SDK headers | 3.0.2, `8fe81bdbbaf00b3c1b733fd0d830c333dc84e6f0` | `vendor/xess/inc/` (`xess/`, `xess_fg/`, `xell/`) | Compile the XeSS adapter | @@ -34,7 +35,8 @@ Vendor SDKs, reference checkouts, Epic source, and game binaries are kept outsid Without the headers, the checkout still builds; the relevant API reports that the feature is unavailable. `RSF_RENDERDOC_DLL`, `RSF_STREAMLINE_BIN`, `RSF_FFX_BIN`, per-family `RSF_FSR2_BIN` / `RSF_FSR3_BIN` / `RSF_FSR4_BIN`, and `RSF_XESS_BIN` select runtime locations. See [loader setup](../loader/README.md). The new SR adapters use the SDK checkout layouts above. A single current AMD package can provide all three FSR algorithms; separate runtime directories and explicit version overrides also permit side-by-side SDK releases. See [the switching evidence](research/orchestrator-sr-switching.md). Vendor checkouts remain untracked. -RenderDoc and Streamline source/header licenses are separate from the licenses covering NVIDIA runtime binaries such as `nvngx_dlss.dll` and `nvngx_dlssg.dll`. The FidelityFX signed DX12 DLLs carry the SDK release's bundled binary redistribution terms; ship `Kits/FidelityFX/docs/license.md` and `3rdpartynotice.md` beside them. The earlier statement grouping these signed binaries under MIT was incorrect for the inspected SDK 2.3 package. The XeSS headers and samples carry Intel's SDK licence and the `libxess*.dll` / `libxell.dll` binaries have separate Intel redistribution terms; confirm both against the shipped text before any redistribution. Check the exact release's included terms and notices in every case. The AC7 release includes the retail Streamline interposer/common/DLSS/PCL DLLs and NVIDIA DLSS 310.9.1.0, unmodified, with the SDK licenses and notices. The corrected AC7 package also includes FidelityFX SDK 2.3.0 upscaling (FSR 2/3/4) and XeSS SR 2.0.2 with their terms and notices. Frame generation and Reflex are not enabled. Vendor binaries stay untracked in Git. +RenderDoc and Streamline source/header licenses are separate from the licenses covering NVIDIA runtime binaries such as `nvngx_dlss.dll` and `nvngx_dlssg.dll`. The FidelityFX signed DX12 DLLs carry the SDK release's bundled binary redistribution terms; ship `Kits/FidelityFX/docs/license.md` and `3rdpartynotice.md` beside them. The earlier statement grouping these signed binaries under MIT was incorrect for the inspected SDK 2.3 package. The XeSS headers and samples carry Intel's SDK licence and the `libxess*.dll` / `libxell.dll` binaries have separate Intel redistribution terms; confirm both against the shipped text before any redistribution. Check the exact release's included terms and notices in every case. The AC7 release includes the retail Streamline interposer/common/DLSS/PCL DLLs and NVIDIA DLSS 310.9.1.0, unmodified, with the SDK licenses and notices. The corrected AC7 package also includes FidelityFX SDK 2.3.0 upscaling (FSR 2/3/4) and XeSS SR 2.0.2 with their terms and notices. Frame generation and Reflex are not included in that published SR package. Current-source +deployments use separate FG DLLs and shared latency services. Vendor binaries stay untracked in Git. The Skyrim and Fallout 4 Community Shaders presentation bridges, fo4test, OptiScaler and SpecialK were studied for the plan and not copied: they are GPL or carry their own exceptions, and `AGENTS.md` forbids copying reference code because it was useful to study. @@ -66,4 +68,25 @@ The package includes the proxy, AC7 game plugin, Rust overlay, retail Streamline FidelityFX upscaler DLL (FSR 2/3/4), XeSS SR DLL and their licenses and notices. The optional `--expected-proxy-sha256`, `--expected-plugin-sha256` and `--expected-overlay-sha256` require the exact validated binaries. FSR/XeSS runtime hashes are pinned to the tested SDK files. -The packager never reads or writes the game installation. +The packager never reads or writes the game installation. Its current input remains +`build/windows-x64/bin/Release/dinput8.dll` (the shared shim); the deployment helper uses the +dedicated AC7 carrier at `build/windows-x64/ac7/bin/Release/dinput8.dll`. Do not describe a new +package as matching the dedicated carrier without checking these inputs/hashes. The packager's +allowlist remains SR-only and omits `sl.dlss_g.dll`, `sl.reflex.dll`, `nvngx_dlssg.dll`, AMD FG and +XeFG/XeLL. Building new source does not make this script an FG release packager. + +## Current-source frame-generation runtime files + +DLSS-G requires matched Streamline interposer/common/DLSS-G/Reflex/PCL and NGX FG files; shared +DLSS SR also needs the SR plugin and NGX SR DLL. FSR3/4 FG uses +`amd_fidelityfx_framegeneration_dx12.dll` with the loader/upscaler set from the pinned SDK. XeSS +FG uses `libxess_fg.dll` and `libxell.dll`. Keep each SDK's notices with its runtime family. +FSR4 SR INT8 compatibility does not establish FSR4 FG support. + +`eng/deploy-unity-sr.ps1` copies all three SR/FG families even when its `-FrameGeneration` default +is Off. `eng/package-unity-sr.ps1` includes that allowlisted deployed vendor payload and local +Release first-party artifacts, with notices and file hashes. It preserves the deployed FG default, +while setting package SR Backend/Quality. Preference files are excluded. The generated README +therefore describes FG configuration independently of package defaults. This is a local test ZIP, +not a published or universally validated release. See [Unity guide](../games/unity-mono/README.md) +and [current status](current-status.md). diff --git a/docs/design.md b/docs/design.md index 6913f19..273301f 100644 --- a/docs/design.md +++ b/docs/design.md @@ -1,38 +1,59 @@ # Design -ReScaleFrame connects game-specific rendering hooks to shared upscaling and frame-generation backends. The current AC7 experiment runs DLSS through a `dinput8` research proxy. The design below describes the runtime that will replace that glue. +ReScaleFrame joins game-specific rendering hooks to shared SR, FG and latency services. Current +AC7 and Unity paths implement much of the native runtime; standalone loading and frontend IPC +remain intended architecture. [Current status](current-status.md) separates implementation and +recorded acceptance from plans and the published SR-only AC7 package. ## Ownership | Component | Owns | | --- | --- | -| Launcher or WSGM | Game selection, profile storage, early loading, session lifetime | -| Bootstrap | Loading the orchestrator at a safe boundary | -| Orchestrator | Plugin lifecycle, vendor SDKs, resources, settings, latency, presentation | -| Game plugin | Build recognition, engine hooks, frame data, SR output reinsertion | -| Game SDK | Versioned C contract between plugin and runtime | -| egui | Settings intents, effective status, inspection, and capture controls | - -These components share a repository and release version. C interfaces keep ownership explicit across DLLs. Game plugins do not load their own vendor runtimes. +| Launcher or WSGM, planned | Game selection, profile storage, early loading, session lifetime | +| Bootstrap, currently version-only | Intended general runtime-loading entry point | +| Current carriers | AC7 DirectInput entry and Unity version shim; runtime/plugin loading | +| Orchestrator | Plugin lifecycle, vendor SDKs, resources, settings, latency and presentation | +| Game plugin | Build recognition, engine hooks, frame data and SR reinsertion | +| Game SDK | Versioned C contract, currently game ABI 13, with leased native resources | +| egui | Settings intents, effective status and FPS display; inspection/capture expansion planned | + +First-party components share a repository and release version. C interfaces keep ownership explicit. +Plugins do not load competing vendor contexts. AC7 links runtime objects into its proxy; Unity +loads the shared runtime DLL. Loading/preparing a plugin precedes graphics activation. ## Frame flow -1. The plugin identifies the input/frame boundary and carries that identity through the game, render, and RHI threads. -2. At the reconstruction boundary, it supplies colour, depth, motion, jitter, camera/exposure state, and valid rectangles. -3. The runtime evaluates SR synchronously and returns the output to the plugin for downstream post-processing. -4. After scene processing, the plugin supplies output-resolution HUD-less colour and the available UI/final-frame data. -5. The runtime handles FG, UI composition, and presentation with matching resources and frame IDs. +1. The plugin identifies CPU frame/input boundaries and copies identity through renderer submission. +2. At reconstruction, it supplies pre-tonemap colour, depth, motion, jitter, camera state and rectangles. +3. The runtime evaluates SR at that execution boundary and feeds downstream native post-processing. +4. FG uses the completed display-size frame and matching normalized depth/motion, with available guides. +5. One presentation provider handles interpolation, pacing and actual presentation; stale or unmatched inputs refuse. -SR scene colour and FG HUD-less colour come from different stages. Retaining a texture keeps its allocation alive; it does not preserve its contents. Generated frames do not advance simulation. +SR and FG colour are different stages. Retaining a texture preserves its allocation, not contents. +Resource leases and GPU fences govern reuse. Generated frames do not advance simulation. -Step 4 is where AC7 departs from a stock engine: it rasterizes its interface at a fixed 1920x1080 and, on several screens, draws it as world-space widget quads into its own render-resolution layer before compositing. The runtime therefore does not receive a HUD-less image from the game; it makes one, by diverting every interface draw the plugin classifies into a mod-owned premultiplied `R8G8B8A8` layer at output resolution and compositing it back at present. The layer and the HUD-less copy are the same two inputs every frame generation SDK asks for. The frame record, the vendor-neutral backend contract, the facade over the swap chain, and the order of events per Present are specified in the [representation plan](representation-plan.md); the frame flow above is the summary of it. +AC7 keeps native UI raster/composition owners at output resolution. The earlier experiment diverting +widget composites to a mod-owned layer produced incorrect colour and processing and was superseded. +Full-resolution widgets are not proof of a compositable FG UI layer. Current source can copy eligible +native family colour before Slate as an optional guide, retaining unclassified-UI fallback. +Unity's SDR pre-UI hook captures completed colour after post-processing; HDR refuses that guide path. +Neither route establishes every provider's moving-scene/HUD quality. -## Backend and frontend choices +## Backends and frontends -The planned Claw path uses native DX11 XeSS-SR and a same-adapter DX12 presentation bridge for XeSS MFG/XeLL. Vulkan/DXVK remains an alternative to measure. The API findings are tied to the SDK revisions in [presentation research](research/presentation-backends.md) and the frame generation requirements of all three vendors are in [vendor contracts](research/vendor-fg-contracts.md). No frame generation SDK runs on D3D11, so the bridge is on every path, not only the Claw's; the order the plan builds the vendors in is FidelityFX, then DLSS-G, then XeFG, because that is the order they can be measured on the development machine. +AC7 keeps a D3D11-facing facade and uses same-adapter D3D12 services for D3D12-only SR/FG paths. +Drag'n Wash uses native D3D12. Native XeSS D3D11 SR remains unimplemented; the earlier proposed Claw +DX11 route is research history. Claw hardware acceptance and any alternative Vulkan/DXVK route need +separate evidence. -One provider owns FG/presentation at a time. Query capabilities from the actual device, driver, API, and SDK configuration, then report requested and effective settings separately. +SR and FG selection are independent. Live FG replacement drains the old provider and preserves +engine buffers. Query actual device/SDK capabilities; report requested, effective and active state +separately. DLSS-G uses Reflex, XeSS uses XeLL and FSR owns its pacing; one provider owns presentation. +The pinned AMD FG path is 2x; larger DLSS/XeSS counts are capability-gated and not proven here. -Standalone and WSGM use the same runtime. Each session has one profile persistence authority; IPC carries settings and status. The egui interface uses the game's window and rendering resources, with explicit input ownership and graphics-state restoration. +Standalone and WSGM are intended to use bounded configuration/status IPC, without GPU textures or +per-frame frontend loops. They are not implemented launch/control routes. The shared overlay uses +the game's window/resources with explicit input and graphics-state ownership. -See [architecture](research/architecture.md) for contracts, [validation](research/validation-plan.md) for acceptance criteria, and [the tracker](implementation.md) for implementation status. +See [architecture history](research/architecture.md), [FG design](frame-generation-plan.md), +[validation targets](research/validation-plan.md) and [the tracker](implementation.md). diff --git a/docs/documentation-audit.md b/docs/documentation-audit.md new file mode 100644 index 0000000..7cc95f4 --- /dev/null +++ b/docs/documentation-audit.md @@ -0,0 +1,68 @@ +# Documentation audit, 7 October 2026 + +## Question, method and scope + +Do the repository's user/developer guides accurately describe ReScaleFrame and its plugins? +Checked the current source at `fda5fd0f2730b40e5b96f419bc0a05cb0b73932b`, recorded research, +build/deployment/packaging scripts and the GitHub release listing. Source and dated acceptance +records were used because a component version, successful build or detection hash alone cannot +establish a shipped feature or working game path. The audit is documentation/source review, +not a fresh reverse-engineering experiment, Windows build or game/device test. + +[Current implementation and validation](current-status.md) is the maintained feature/acceptance +summary. Historical research retains its original results, addresses, source revisions and hashes. +No historical device or game acceptance was invented or extended to new hardware. + +## Corrections and evidence + +| Area | Correction | Evidence checked | +| --- | --- | --- | +| SDK and lifecycle | Replace metadata-only/planned ABI 2 claims with game ABI 13, renderer/CPU callbacks and leased resources; retain readiness zero | `game_api.h`, `game_renderer.h`, `game_frame.h`, three plugin implementations and `plugin_session.cpp` | +| AC7 source versus release | Published v0.1.0 is SR-only; current source includes FG/latency and live provider replacement; preserve new AC7 vendor FG gaps | GitHub release metadata; SR/FG runtime, AC7/shared FG research and release notes | +| Unity/Drag'n Wash | Remove unimplemented Mono/Harmony/SR/FG claims; explain pre-DoF SR, pre-UI guide, Off/FSR1 inputs, final user acceptance and remaining Claw/MFG coverage | Managed/native plugin, `unity_sr_host.cpp`, Unity SR/shared FG notes and scripts | +| Project Wingman | Keep detection/ABI scaffold distinct from unsupported rendering/VR | Plugin source, contract fixture and engine evidence | +| Overlay | Replace F5/ABI 3 with Insert/ABI 9; document separate SR/FG intents, queried counts and measured FPS counter scope | Overlay header/Rust panel, native host and Unity host | +| Ownership and design | Replace proposed UI diversion as the default with native AC7 UI owners; distinguish carriers/runtime from version-only bootstrap and launcher | Native renderer, loader CMake/shim, orchestrator CMake and launcher source | +| Dependencies and packaging | Clarify helper netstandard2.1 versus Harmony net472, FG payloads, local Unity ZIP defaults and AC7 packager/deployer carrier mismatch | Managed csproj, build/deployment scripts, both packagers and notices | +| Research and plans | Scope dated pending/failed claims; point to later corrections and current headers; reconcile implemented Unity tracker steps | Research/tracker chronology, current native/managed source and repository skills | + +The checked release listing has one published release, v0.1.0, with the AC7 Windows ZIP, +corresponding-source ZIP and SHA256SUMS. Its replacement assets were uploaded on 2 October 2026. +Its SR-only release description remains accurate. No Unity/Project Wingman release or GitHub Pages +site was listed. The enabled wiki flag does not establish a wiki: its Git endpoint returned +Repository not found, so no wiki contents were audited. + +## Inventory + +The audit covers repository Markdown, game evidence summaries, the INI sample's documentation +and the Unity packager's generated README. `CLAUDE.md` remains a symlink to `AGENTS.md`. + +| Documentation set | Treatment | +| --- | --- | +| Root README, AGENTS and game READMEs | Current user/build/ownership claims reconciled with source and acceptance | +| SDK, runtime, graphics, overlay and loader guides | Current contracts/routes/controls corrected; compatibility mechanisms clearly scoped | +| Design, dependencies, tooling and tracker | Current architecture and script behavior reconciled; dated test runs preserved | +| Release guides/notes | Explicitly scoped to the published corrected SR ZIP; FG availability is described separately | +| Research records and plans | Dated experiment/design scope explicit; later acceptance/current status linked; original evidence retained | +| Methodology, source map, validation targets, WSGM and tool guides | Reviewed for scope/link consistency; references and planned targets retained | +| Local repository skills/references | Stale FG status corrected or scoped to recorded SR lessons; technical patch anchors preserved | +| Game `engine.json` files | Separate current validation summaries added; AC7 fingerprint linked to recorded executable evidence; Unity live API/status clarified | +| Historical evidence JSON | Parsed for validity; original snapshots preserved | +| Generated Unity package README and AC7 INI sample | Prose/comments corrected without changing script behavior or configuration defaults | + +## Checks and remaining boundaries + +Focused checks cover local Markdown targets/anchors, JSON validity, all three executable fingerprints +against plugin source, current documented ABI versions, and `VERSION`/Cargo agreement. The Unity +packager diff is restricted to its README here-string, and active INI assignments are unchanged. +Whitespace validation uses `git diff --check`. + +Result: 79 Markdown files and 504 local targets/anchors checked without failures; all 19 tracked +JSON files parse. Fingerprints, ABI/version checks, unchanged packaging behavior, unchanged active +INI defaults, documentation-only scope and the agent-instruction symlink checks pass. + +The workspace does not have PowerShell for a parser/native gate. No native, SDK or Rust behavior +changed, so no new native/game/device result is claimed. Existing MSVC, GPU, Rust and shipped-Mono +results remain attributed to their dated notes. Licensed game/engine source, captures and private +Ghidra hook addresses were not independently reproduced by this audit. Open lighting, motion, +new-provider acceptance, higher MFG, Claw and measured latency questions remain explicit. diff --git a/docs/frame-generation-plan.md b/docs/frame-generation-plan.md index 3ac11b2..d8a905c 100644 --- a/docs/frame-generation-plan.md +++ b/docs/frame-generation-plan.md @@ -2,9 +2,12 @@ 30 September 2026. This document records the plan and source review. Subsequent implementation and device lifecycle evidence are recorded in [the implementation notes](research/orchestrator-fg-implementation.md). -Those checks do not establish enabled FG, game visuals or measured latency. +Later [AC7 DLSS-G](research/ac7-dlss-fg-20261003.md) and +[shared FG corrections](research/shared-fg-20261004.md) record activation and user acceptance. +[current status](current-status.md) separates implemented features from still-unproven targets, +including higher MFG counts, Dynamic MFG acceptance and measured latency reduction. -This is the current FG/latency plan. It replaces the corresponding assumptions and milestones in +This is the 30 September FG/latency design baseline. It replaces the corresponding assumptions and milestones in [the representation plan](representation-plan.md), while preserving that document's research trail. The working [SR orchestrator](research/orchestrator-sr-switching.md) is the starting point. @@ -19,9 +22,9 @@ the swapchain facade. A game plugin owns engine hooks, actual input/simulation b and resource identification, screen classification, renderer preparation and reinsertion. The frontends receive bounded commands and status, never textures or a per-frame graphics loop. -Shader replacement and motion-quality improvement are owned by the separately running agent. -This work consumes that output through a documented motion contract and tests its compatibility -with FG. It does not take ownership of shader replacement or duplicate that investigation. +Shader replacement and motion-quality improvement are distinct engine/graphics work. FG consumes +their output through an explicit motion contract. The original session's parallel agent assignment +was execution context, not a permanent ownership rule. ```mermaid flowchart LR diff --git a/docs/implementation.md b/docs/implementation.md index 11a972a..c1b0f50 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -1,5 +1,10 @@ # Implementation tracker +See [current status](current-status.md) for the source/release/acceptance summary checked on +7 October 2026. This tracker preserves dated increments, test counts and superseded failures; +earlier unchecked or pending entries are not automatically current blockers. No new game/device +experiment was performed for the documentation audit; [scope and checks](documentation-audit.md). + ## Shared frame generation, 4 October 2026 Current acceptance: the user confirms the final Drag'n Wash corrections resolved the FSR @@ -96,20 +101,22 @@ FSR4 remains a manual experimental choice. Claw hardware acceptance remains pend [Design and validation sequence](research/unity-mono-plugin.md). - [x] Add `rsf_game_unity_mono`, producing `ReScaleFrame.Game.UnityMono.dll` through the existing game-plugin ABI. The researched Drag'n Wash name/hash/architecture is the initial allowlist. - Preparation and activation refuse with `RSF_ERROR_NOT_READY`; no hooks or host-service - references are retained. Rendering readiness stays false. + The initial scaffold refused preparation/start without retaining services; it has since been + replaced by the Mono/Harmony lifecycle described above. Rendering readiness stays false. - [x] Build and synthetic-test the scaffold on Windows/MSVC with `eng/verify.ps1 -Configuration Release -VS2026`: the repository gate passed with six expected environment/vendor skips; Rust formatting and Clippy passed. The Unity fixture verifies detection, ABI/size guards, inactive lifecycle and repeated cleanup. This is not a Mono, Harmony, graphics-device or game test. -- [ ] Implement the managed bootstrap in the player's existing Mono domain, generic capability - discovery and guarded Harmony patches. The native scaffold does not establish these paths. -- [ ] Validate render-thread native copy-through, API state/fences, view/frame identity and graph - resource lifetime, then temporal inputs and output-resolution SR reinsertion. +- [x] Implement the managed bootstrap in the player's existing Mono domain and guarded Harmony + URP contracts for the fingerprinted player. Broad discovery across other players remains open. +- [x] Implement native copy-through, fences, frame identity, temporal inputs and output-resolution + SR reinsertion with managed/device fixtures and recorded live evaluation. General transitions + and resize/teardown acceptance remain separate coverage. - [ ] Game-test custom fluid/deformation coverage, scene/settings/resize transitions, HUD-less/UI boundaries, teardown, FG and latency. No game launch, injection or installation change - occurred during the static investigation. Built/synthetic/game/device readiness stays false. + occurred during the initial static investigation. Later live SR and user-accepted FG corrections + are recorded above; complete scene/resize/Claw coverage and broad readiness remain open. 2 October documentation: repository skills now separate general renderer analysis, shared Unreal 4 concepts, UE4.18/AC7 evidence and TrueSky production. The parent transcript, accepted @@ -415,7 +422,7 @@ this overlay preflight is not a gameplay test. - [x] AC7 view reader with matrix/size checks, main-view classification, pixel jitter, and unjittered projection. Recorded dataset: 50 recognized buffers, ten perspective views, secondary views marked. [Review](review.md) identifies remaining validation defects. - [x] `TemporalAAJitter` located at `0x720` by comparing pre/post-patch captures, then checked against projection entries and live pixel offsets. - [x] Orchestrator frame assembly converts plugin camera/resource data into a DLSS frame and rejects unusable combinations. Unit-tested without GPU work. -- [x] Live DLSS evaluation. Initial run: 2,176 recognized passes, 2,175 evaluations, no refusals. Mission run on 7 September: 7,917 evaluations, no refusals, 1024×576 input and 2048×1152 output. Recorded images show recovered detail and a complete scene; flight showed no obvious smearing. F7 is a debug display; reinsertion, grading, HUD, and controlled motion validation remain pending. [Evidence](research/ac7-frame-capture.md). +- [x] Live DLSS evaluation. Initial run: 2,176 recognized passes, 2,175 evaluations, no refusals. Mission run on 7 September: 7,917 evaluations, no refusals, 1024×576 input and 2048×1152 output. Recorded images show recovered detail and a complete scene; flight showed no obvious smearing. F7 is a debug display; reinsertion, grading, HUD, and controlled motion validation remain pending. [Evidence](research/ac7-frame-capture.md). - [x] Conditional composed-colour selection for the DLSS bridge. Persistent input watch and AC7 recombine rule are cross-built and synthetic-tested under Wine. Each frame falls back to the identified colour unless a matching composition is observed; no new per-frame allocations. @@ -436,7 +443,7 @@ this overlay preflight is not a gameplay test. quality level instead of being fixed. Going above the scene's resolution needs the engine to size the layer's depth to match, which four one-byte patches enable by narrowing `Scale < 1.f` to `Scale == 1.f`; they are no-ops for every scale the engine produces on its own. - Game-tested on 7 September: the briefing relief draws at 2048×1152 inside a 1024×576 scene + Game-tested on 7 September: the briefing relief draws at 2048×1152 inside a 1024×576 scene with a matching depth, and reaches the reconstruction. Flight, the post-mission replay and other heavy screens are unverified. [Evidence](research/ac7-frame-capture.md). - [x] Consumer session controls: automatic DLSS startup and deferred reinsertion; Insert opens an @@ -477,7 +484,7 @@ this overlay preflight is not a gameplay test. there and each failed differently, which is worth keeping because the failures were all the same mistake about bindings. - First run: nothing happened at all. The tail walk had taken a 2048×32 strip as the composite, + First run: nothing happened at all. The tail walk had taken a 2048×32 strip as the composite, a UI bar the final draw also reads, and promoted that. Zero gates opened, so F6 did precisely nothing. Fixed by rejecting any input less than half the height of the target it is drawn into. diff --git a/docs/releases/ac7-install.md b/docs/releases/ac7-install.md index c306a00..392bf18 100644 --- a/docs/releases/ac7-install.md +++ b/docs/releases/ac7-install.md @@ -1,5 +1,9 @@ # ReScaleFrame for Ace Combat 7 +Scope: the corrected published v0.1.0 AC7 **SR package**, replaced on 2 October 2026. +Later `main` includes FG/Reflex and Unity work; those features are absent from this ZIP. See +[current source status](https://github.com/KillerPixelCrew/ReScaleFrame/blob/main/docs/current-status.md). + DLSS, FSR 2/3/4 and XeSS upscaling for AC7, with the game's lighting, post-processing and interface kept intact. Menus, HUD and briefing rendering keep full output resolution. The cloud depth path preserves small aircraft details at reduced scene resolutions. diff --git a/docs/releases/ac7-third-party.md b/docs/releases/ac7-third-party.md index 2fd95e5..3663095 100644 --- a/docs/releases/ac7-third-party.md +++ b/docs/releases/ac7-third-party.md @@ -1,6 +1,10 @@ # Package notices -ReScaleFrame's first-party implementation is GPL-3.0-only. Its public Game SDK header is MIT. +Scope: the corrected published v0.1.0 AC7 **SR package**, replaced on 2 October 2026. +Later `main` includes FG/Reflex and Unity work; those features are absent from this ZIP. See +[current source status](https://github.com/KillerPixelCrew/ReScaleFrame/blob/main/docs/current-status.md). + +ReScaleFrame's first-party implementation is GPL-3.0-only. Its public Game SDK headers are MIT. The corresponding texts are included here. Source for this release is available at https://github.com/KillerPixelCrew/ReScaleFrame/tree/v0.1.0 and in the release's source archive. diff --git a/docs/releases/v0.1.0-ac7.md b/docs/releases/v0.1.0-ac7.md index 11be6fa..9441fda 100644 --- a/docs/releases/v0.1.0-ac7.md +++ b/docs/releases/v0.1.0-ac7.md @@ -1,3 +1,7 @@ +Release record: the corrected published v0.1.0 AC7 SR package, replaced on 2 October 2026. +FG/Reflex and Unity features on later `main` are outside this package. See +[current source status](../current-status.md). + The first AC7 release is ready. DLSS starts with the game, the UI stays sharp, and the briefing terrain and aircraft icons now render at full resolution without inheriting the scene's jitter. diff --git a/docs/releases/v0.1.0.md b/docs/releases/v0.1.0.md index e40daf2..53683c9 100644 --- a/docs/releases/v0.1.0.md +++ b/docs/releases/v0.1.0.md @@ -1,3 +1,7 @@ +Release record: the corrected published v0.1.0 AC7 SR package, replaced on 2 October 2026. +FG/Reflex and Unity features on later `main` are outside this package. See +[current source status](../current-status.md). + This replaces the original 0.1.0 package with the corrected AC7 integration. If you downloaded the earlier release, download this archive again and replace all included files. The engine integration now keeps menus, HUD and mission briefings at full resolution. Background/cloud jitter, low-resolution cloud blocks and the artifacts on small aircraft details are corrected. Lighting, reflections and post-processing are preserved. FSR and XeSS use an optimized D3D11/D3D12 transfer path, and FSR 4 INT8 compatibility is included for supported NVIDIA/Intel devices. diff --git a/docs/representation-plan.md b/docs/representation-plan.md index dd2c11c..2f6d7a3 100644 --- a/docs/representation-plan.md +++ b/docs/representation-plan.md @@ -1,5 +1,10 @@ # Plan: Representation — UI extraction, presentation bridge, SR+FG for DLSS, FSR and XeSS +Historical design and milestone record. ABI 2 sketches, UI diversion and planned deletion lists +below are not the current implementation. Game ABI is now 13, overlay ABI is 9, and native UI +ownership plus shared SR/FG services supersede earlier assumptions. See +[current status](current-status.md) and the current SDK headers for implementation and limits. + ## Context 30 September 2026: use [the frame-generation orchestrator plan](frame-generation-plan.md) for diff --git a/docs/research/README.md b/docs/research/README.md index b6a1446..882d108 100644 --- a/docs/research/README.md +++ b/docs/research/README.md @@ -1,19 +1,27 @@ # Rendering research +Use [current status](../current-status.md) for implemented/released features and acceptance limits. +These notes are dated evidence and development history. Older pending claims do not override later +corrections, and a source inspection is not a new runtime test. Published evidence snapshots keep +their original measurements, revisions and hashes. + Research began on 5 September 2026. The source comparisons are pinned to the revisions in [source-map.md](source-map.md) and `evidence/repositories.json`. Later AC7 captures and DLSS runs are recorded separately. -Current status, 2 October: the user accepted the native SR/UI path, corrected TrueSky wing/cloud -production and optimized SR bridge/FSR4 compatibility deployment. Earlier dated pending notes -preserve the investigation trail. Missing-object motion coverage, FG and latency integration -remain separate work. [Maintained skills and session corrections](skills-session-update-20261002.md) +Recorded SR acceptance, 2 October: the user accepted the native SR/UI path, corrected TrueSky wing/cloud +production and optimized SR bridge/FSR4 compatibility deployment. Subsequent AC7 DLSS-G and +shared Unity FG acceptance are recorded independently. Missing-object motion, higher MFG/Claw +coverage and measured latency remain open. Earlier pending notes preserve the investigation trail. [Maintained skills and session corrections](skills-session-update-20261002.md) route general Unreal 4, version-specific UE4.18 and TrueSky research. | Document | Read it for | | --- | --- | -| [Shared FSR/XeSS generation](shared-fg-20261004.md) | Independent SR/FG selection, shared D3D11/D3D12 presentation, Unity timing, hardware fixtures and remaining game validation | +| [Shared FSR/XeSS generation](shared-fg-20261004.md) | Independent SR/FG selection, live provider replacement, Unity input/pacing corrections, device fixtures and final user acceptance | +| [Unity DX12 SR runtime](unity-dx12-runtime-20261004.md) | Shared shim, Mono/Harmony contracts, live SR execution, jitter/order corrections and Auto policy | +| [AC7 motion/depth follow-up](ac7-motion-depth-20261004.md) | Dense motion, translucency hints, cloud depth and material mip bias with separate validation scopes | +| [AC7 lighting/shadow investigation](ac7-lighting-shadow-20261004.md) | Later unresolved low-resolution stippling, shader transforms and capture requirements | | [Shared Unity Mono plugin](unity-mono-plugin.md) | Reflection/Harmony adapters, existing-domain bootstrap, RenderGraph execution and lifecycle design | | [Drag'n Wash renderer](drag-n-wash-renderer.md) | First Unity case: 6000.3.14f1 Mono/URP, complete selected assembly decompiles, temporal/UI boundaries and unmeasured runtime limits | -| [AC7 DLSS-G/Reflex MVP](ac7-dlss-fg-20261003.md) | Shared presentation/SR host, frame identity, synthetic enabled FG, UE4.18.3 FID reference and pending game validation | +| [AC7 DLSS-G/Reflex MVP](ac7-dlss-fg-20261003.md) | Shared presentation/SR host, native CPU/Present identity, recorded flight/hangar activation, hybrid-laptop pacing investigation and limits | | [Project Wingman renderer](project-wingman-renderer.md) | UE4.27.2 fingerprint, Function ID results, temporal/widget hook map and remaining HUD/VR validation | | [Native AC7 renderer](ac7-native-renderer-refactor-20261001.md) | Native view/graph/UI ownership, copied RHI identity, shared-uniform crash correction and retirement | | [Reconstruction stability](ac7-stability-20261001.md) | Exact input rectangles, bloom/exposure order, TrueSky jitter and valid-zero motion | @@ -42,9 +50,9 @@ route general Unreal 4, version-specific UE4.18 and TrueSky research. The early SR input chain was game-tested on 7 September. The 2 October implementation uses engine-owned view sizing, a native SR/fallback graph node and coordinated UI/cloud producers; -the runtime supplies DLSS, FSR and XeSS plus ordered D3D11/D3D12 transfers. That accepted SR -path does not complete the presentation/FG/latency milestones in -[the representation plan](../representation-plan.md). The Claw target and standalone/WSGM +the runtime supplies DLSS, FSR and XeSS plus ordered D3D11/D3D12 transfers. That SR acceptance alone does not establish FG or latency. Later +[AC7 DLSS-G work](ac7-dlss-fg-20261003.md) and [shared FG corrections](shared-fg-20261004.md) +record runtime switching, device activity and Unity user acceptance separately. The Claw target and standalone/WSGM operation remain unproven as a complete combination. The interface investigation in [UI composition](ac7-ui-composition.md) and diff --git a/docs/research/ac7-composed-scene-color.md b/docs/research/ac7-composed-scene-color.md index 2aaba44..4b800d2 100644 --- a/docs/research/ac7-composed-scene-color.md +++ b/docs/research/ac7-composed-scene-color.md @@ -1,5 +1,9 @@ # AC7 composed scene colour selection +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 7 September 2026. Implementation based on repository revision `56ed05b` and the already established [briefing and hangar evidence](ac7-frame-capture.md#menu-screens-render-two-scenes-and-only-one-is-reconstructed). No new game run or capture replay was performed for this change. diff --git a/docs/research/ac7-consumer-session.md b/docs/research/ac7-consumer-session.md index c8158a6..c3cf6ef 100644 --- a/docs/research/ac7-consumer-session.md +++ b/docs/research/ac7-consumer-session.md @@ -1,5 +1,9 @@ # AC7 briefing isolation and consumer session controls +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 29 September 2026. Source review and implementation against `37360603681ce20e6afff86745384173872a5df0` plus the existing local gate tracing additions. No new binary addresses were discovered. The inherited AC7 evidence names Steam build 9855922, `Ace7Game.exe`, SHA-256 diff --git a/docs/research/ac7-dlss-fg-20261003.md b/docs/research/ac7-dlss-fg-20261003.md index 41d4ecf..4782438 100644 --- a/docs/research/ac7-dlss-fg-20261003.md +++ b/docs/research/ac7-dlss-fg-20261003.md @@ -1,5 +1,9 @@ # AC7 DLSS Frame Generation and Reflex, 3 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + ## Question and result How can AC7's D3D11 renderer use DLSS-G without a second physical swapchain, a second diff --git a/docs/research/ac7-fg-cpu-boundaries.md b/docs/research/ac7-fg-cpu-boundaries.md index e07f7ab..fa79f99 100644 --- a/docs/research/ac7-fg-cpu-boundaries.md +++ b/docs/research/ac7-fg-cpu-boundaries.md @@ -1,5 +1,9 @@ # AC7 frame-generation CPU boundaries +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 30 September 2026. Static source/binary inspection only. None of these sites is installed as an FG/latency hook, and no frame handoff or latency measurement is established by this note. diff --git a/docs/research/ac7-frame-capture.md b/docs/research/ac7-frame-capture.md index 87fe0e2..deeef63 100644 --- a/docs/research/ac7-frame-capture.md +++ b/docs/research/ac7-frame-capture.md @@ -1,5 +1,9 @@ # AC7 frame capture +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Evidence from 6–7 September 2026: 22 RenderDoc captures under Proton, Windows replay, live buffer dumps, and subsequent reduced-scale DLSS runs. Scenes included aircraft selection, camera pans, flight over ground/water, clouds, and screen droplets. Resource numbers below identify these captures, not objects that can be looked up by that number at runtime. ## Current result diff --git a/docs/research/ac7-graph-capture-crash-20260930.md b/docs/research/ac7-graph-capture-crash-20260930.md index 2a692f3..a0a2f9f 100644 --- a/docs/research/ac7-graph-capture-crash-20260930.md +++ b/docs/research/ac7-graph-capture-crash-20260930.md @@ -1,5 +1,9 @@ # AC7 graph capture and pause-menu crash, 30 September 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The question was whether the engine graph could identify the passes that still reduce the reconstructed image and UI, while preserving queued view identity. Process 215904 used the 19:29 capture build, proxy SHA-256 diff --git a/docs/research/ac7-lighting-shadow-20261004.md b/docs/research/ac7-lighting-shadow-20261004.md index 61337df..6e9611b 100644 --- a/docs/research/ac7-lighting-shadow-20261004.md +++ b/docs/research/ac7-lighting-shadow-20261004.md @@ -1,5 +1,9 @@ # AC7 close-ground shadow stippling, 4 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The user supplied a flight screenshot with regular dark stippling across the ground and aircraft, plus three F9 captures. The defect is already visible in the raw pre-SR scene colour. The investigation therefore follows native lighting production before changing diff --git a/docs/research/ac7-motion-depth-20261004.md b/docs/research/ac7-motion-depth-20261004.md index 01c7a3c..00ec81c 100644 --- a/docs/research/ac7-motion-depth-20261004.md +++ b/docs/research/ac7-motion-depth-20261004.md @@ -1,5 +1,9 @@ # AC7 motion and depth inputs, 4 October +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The question was what limits the motion and depth AC7 hands its upscalers after the native SR path settled, and which of the remaining gaps engine patches, shader work or 4.27 systems can close. The user also asked for the translucency hint buffers (`BiasCurrentColorHint`, diff --git a/docs/research/ac7-motion-vectors.md b/docs/research/ac7-motion-vectors.md index 500960f..5ec7d12 100644 --- a/docs/research/ac7-motion-vectors.md +++ b/docs/research/ac7-motion-vectors.md @@ -1,5 +1,9 @@ # AC7 motion vectors and shader replacement +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Investigation on 30 September 2026 against repository revision `0e2df170a9f2`. The question is whether engine and shader changes can improve independently moving geometry, particles and temporal reconstruction. The answer is yes, with two distinct tasks: correct the diff --git a/docs/research/ac7-native-renderer-refactor-20261001.md b/docs/research/ac7-native-renderer-refactor-20261001.md index 24ba0c8..c3eb88e 100644 --- a/docs/research/ac7-native-renderer-refactor-20261001.md +++ b/docs/research/ac7-native-renderer-refactor-20261001.md @@ -1,5 +1,9 @@ # AC7 native renderer refactor, 1 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Current status, 2 October: the user accepted the corrected native SR/UI path, hangar crash and wing/cloud result, followed by the GPU-fence bridge/FSR4 compatibility deployment. The build-only and pending notes below are the dated development trail. Later corrections preserve exact active diff --git a/docs/research/ac7-overlay-device.md b/docs/research/ac7-overlay-device.md index ed87cf4..1e4c0fe 100644 --- a/docs/research/ac7-overlay-device.md +++ b/docs/research/ac7-overlay-device.md @@ -1,5 +1,9 @@ # AC7 overlay device mismatch +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 7 September 2026. Investigated from RSF `c82772d` and the user's failing game run, then reproduced with the unchanged host in a synthetic process. Game identity: `Ace7Game.exe`, Steam build 9855922, recorded SHA-256 diff --git a/docs/research/ac7-plane-artifacts-20261002.md b/docs/research/ac7-plane-artifacts-20261002.md index 6f3346b..489681d 100644 --- a/docs/research/ac7-plane-artifacts-20261002.md +++ b/docs/research/ac7-plane-artifacts-20261002.md @@ -1,5 +1,9 @@ # AC7 aircraft composition artifacts, 2 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Final status: after the 21:24 deployment the user reports "Works. And is clean!" Native logs verify Texture2D/RG32F depth bindings, divisor 1 and replacement dispatch. The wing/cloud correction is accepted with volumetrics present. The latest depth/format findings are in diff --git a/docs/research/ac7-render-frame-handoff.md b/docs/research/ac7-render-frame-handoff.md index 12864e2..597b8c1 100644 --- a/docs/research/ac7-render-frame-handoff.md +++ b/docs/research/ac7-render-frame-handoff.md @@ -1,5 +1,9 @@ # AC7 CPU-to-render frame handoff +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 30 September 2026. Static binary/source inspection and synthetic runtime tests. No new AC7 hook is installed by this work, and association through the RHI thread, final HUD-less/UI export and Present remains unvalidated. diff --git a/docs/research/ac7-renderer-roots-20260930.md b/docs/research/ac7-renderer-roots-20260930.md index f819073..9177028 100644 --- a/docs/research/ac7-renderer-roots-20260930.md +++ b/docs/research/ac7-renderer-roots-20260930.md @@ -1,5 +1,9 @@ # AC7 renderer ownership audit, 30 September 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The question is whether ReScaleFrame can replace draw-pattern discovery and late texture promotion with the engine's own view, post-process graph and widget producer identity. The user reported missing reflections and lighting, plus UI that briefly changes size or sharpness. diff --git a/docs/research/ac7-stability-20261001.md b/docs/research/ac7-stability-20261001.md index 1cf92f7..e5f4539 100644 --- a/docs/research/ac7-stability-20261001.md +++ b/docs/research/ac7-stability-20261001.md @@ -1,5 +1,9 @@ # AC7 reconstruction stability, 1 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + ## Follow-up retest and producer ordering, 23:19 The user confirms both background and clouds are stable after the 22:52 build. Residual diff --git a/docs/research/ac7-translucent-depth.md b/docs/research/ac7-translucent-depth.md index fcd2a13..f5a6841 100644 --- a/docs/research/ac7-translucent-depth.md +++ b/docs/research/ac7-translucent-depth.md @@ -1,5 +1,9 @@ # AC7 translucent depth for camera motion +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + ## The path is complete, 7 September 2026 The replayed depth reaches the backend: 67,801 of 68,995 candidate draws replayed and 1,194 selected evaluations, with the swap logged each frame as `0x2FB41790 -> 0x30359A20 at 1024x576`. Nothing was selected until two bugs cleared, and both had been introduced by earlier fixes rather than found in the game. diff --git a/docs/research/ac7-ui-composition.md b/docs/research/ac7-ui-composition.md index a2cbcd3..3de2510 100644 --- a/docs/research/ac7-ui-composition.md +++ b/docs/research/ac7-ui-composition.md @@ -1,5 +1,9 @@ # Where render resolution belongs, and where the interface belongs +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Two questions, asked before writing any more reinsertion code: where 4.18 wants the render resolution cranked down without dragging the interface with it, and what the correct order of reconstruction, interface and presentation is once frame generation is in the picture. diff --git a/docs/research/ac7-ui-extraction.md b/docs/research/ac7-ui-extraction.md index 80eb41a..e686b7d 100644 --- a/docs/research/ac7-ui-extraction.md +++ b/docs/research/ac7-ui-extraction.md @@ -1,5 +1,9 @@ # AC7 UI extraction +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Design record for the interface work in the [representation plan](../representation-plan.md), written 7 September 2026 from the findings in [ac7-ui-composition.md](ac7-ui-composition.md), the UE 4.18.3 source, the AC7 SDK, and Skyrim Community Shaders. Per-screen measurements are appended diff --git a/docs/research/ac7-ui-hdr-20260930.md b/docs/research/ac7-ui-hdr-20260930.md index 186468f..76a86b9 100644 --- a/docs/research/ac7-ui-hdr-20260930.md +++ b/docs/research/ac7-ui-hdr-20260930.md @@ -1,5 +1,9 @@ # AC7 flight HUD and hangar HDR precision, 30 September 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Current status, 2 October: the user accepted native full-resolution UI and the corrected wing/cloud/colour result, followed by the SR compatibility deployment. This document preserves the SDR-display investigation and failed experiments. Native FP16 production and bounded GPU diff --git a/docs/research/architecture.md b/docs/research/architecture.md index a5d3d47..9e83dea 100644 --- a/docs/research/architecture.md +++ b/docs/research/architecture.md @@ -1,5 +1,9 @@ # Architecture +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Design from the source inspection begun on 5 September 2026. [The source map](source-map.md) pins the inspected revisions. [The tracker](../implementation.md) records implementation; the current AC7 DLSS research proxy does not yet implement this full lifecycle. ## Ownership and loading diff --git a/docs/research/d3d11-runtime-vtable-rewrite.md b/docs/research/d3d11-runtime-vtable-rewrite.md index 7f189e6..43accdc 100644 --- a/docs/research/d3d11-runtime-vtable-rewrite.md +++ b/docs/research/d3d11-runtime-vtable-rewrite.md @@ -1,5 +1,9 @@ # The Windows D3D11 runtime rewrites its own vtable +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Measured 26 September 2026 on Windows 11 Pro 26200 with the stock `d3d11.dll`, on a hardware device created with no flags, feature level 11.0. Nothing here is from a game; every number is from a scratch probe linked against the built `rsf_graphics` library. diff --git a/docs/research/drag-n-wash-renderer.md b/docs/research/drag-n-wash-renderer.md index af27581..19f5b63 100644 --- a/docs/research/drag-n-wash-renderer.md +++ b/docs/research/drag-n-wash-renderer.md @@ -1,5 +1,9 @@ # Drag'n Wash renderer investigation +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Examined on 3 October 2026. This is ReScaleFrame's third game research case and first Unity game. The intended implementation is a shared [Unity Mono plugin](unity-mono-plugin.md) using reflection and Harmony, with Drag'n Wash as its first URP RenderGraph validation case. diff --git a/docs/research/ghidra-tooling.md b/docs/research/ghidra-tooling.md index 761ea96..618114d 100644 --- a/docs/research/ghidra-tooling.md +++ b/docs/research/ghidra-tooling.md @@ -1,5 +1,9 @@ # AC7 binary analysis +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Inspection and runtime capture: 6 September 2026. The initial inspection read the executable and Ghidra project; the later capture ran AC7 under Proton with the research proxy. [The hook map](ue418-hook-map.md) identifies the researched build. ## Why the runtime image was needed diff --git a/docs/research/orchestrator-fg-implementation.md b/docs/research/orchestrator-fg-implementation.md index c7832ee..e915020 100644 --- a/docs/research/orchestrator-fg-implementation.md +++ b/docs/research/orchestrator-fg-implementation.md @@ -1,5 +1,9 @@ # Frame-generation runtime implementation +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 30 September 2026. Work in progress against `0e2df170a9f276e24c76b75039065393b760ccd7`. This records the implemented portion of the [FG plan](../frame-generation-plan.md), not completion of that plan or working frame generation in AC7. diff --git a/docs/research/orchestrator-latency-services.md b/docs/research/orchestrator-latency-services.md index 33d4ebc..36714e2 100644 --- a/docs/research/orchestrator-latency-services.md +++ b/docs/research/orchestrator-latency-services.md @@ -1,5 +1,9 @@ # Independent PCL and Reflex services +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 30 September 2026, following FG foundation commit `38e5aaf`. This extends the reusable runtime; it does not install AC7 input hooks or claim measured physical latency. diff --git a/docs/research/orchestrator-sr-switching.md b/docs/research/orchestrator-sr-switching.md index a773e2d..728f1f1 100644 --- a/docs/research/orchestrator-sr-switching.md +++ b/docs/research/orchestrator-sr-switching.md @@ -1,5 +1,9 @@ # Reusable SR orchestration, 29 September 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + ## Question and approach Can the working D3D11 reconstruction integration select FSR2, FSR3, FSR4 and XeSS at runtime, diff --git a/docs/research/presentation-backends.md b/docs/research/presentation-backends.md index cfc3165..27a8009 100644 --- a/docs/research/presentation-backends.md +++ b/docs/research/presentation-backends.md @@ -1,5 +1,9 @@ # Vulkan and DX12 presentation options +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Updated 5 September 2026 after inspecting Community Shaders' Vulkan branch and its pinned Streamline fork. ## The XeSS distinction diff --git a/docs/research/presentation-bridge.md b/docs/research/presentation-bridge.md index 6c85bd4..17bd72e 100644 --- a/docs/research/presentation-bridge.md +++ b/docs/research/presentation-bridge.md @@ -1,5 +1,9 @@ # The DX11 to DX12 presentation bridge +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Design record for the bridge in the [representation plan](../representation-plan.md), written 7 September 2026 before any of it was built. Measurements are added per milestone; until then every statement here is design, and the status section says so. diff --git a/docs/research/project-wingman-renderer.md b/docs/research/project-wingman-renderer.md index 5af7773..e861c9b 100644 --- a/docs/research/project-wingman-renderer.md +++ b/docs/research/project-wingman-renderer.md @@ -1,5 +1,9 @@ # Project Wingman renderer investigation +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Investigation: 2 to 3 October 2026. This is static executable, packaged-asset and matched-source analysis. No Project Wingman injection, instruction patch, frame capture or device validation was performed. The plugin scaffold only recognizes the examined build and refuses activation. diff --git a/docs/research/shared-fg-20261004.md b/docs/research/shared-fg-20261004.md index 452c084..f93089f 100644 --- a/docs/research/shared-fg-20261004.md +++ b/docs/research/shared-fg-20261004.md @@ -1,5 +1,15 @@ # Shared FSR and XeSS frame generation, 4 October 2026 +Latest recorded outcome: the user accepted Unity XeSS/DLSS-G and the final FSR image/switching +correction. Live provider replacement, pre-UI input capture, provider-owned pacing and SDK-limited +multipliers supersede the early restart-only and SR-dependent implementation below. New AC7 +FSR/XeSS FG acceptance, FSR4 FG hardware and higher MFG/Claw proof remain open. Follow +[the final correction](#final-fsr-correction-and-user-acceptance) and [current status](../current-status.md). + +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The user confirms the deployed AC7 DLSS-FG path now works well and requests FSR/XeSS generation as runtime services usable by AC7, Unity Mono and later plugins. diff --git a/docs/research/skills-session-update-20261002.md b/docs/research/skills-session-update-20261002.md index f1428ae..975e890 100644 --- a/docs/research/skills-session-update-20261002.md +++ b/docs/research/skills-session-update-20261002.md @@ -1,5 +1,9 @@ # Repository skills update, 2 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The user requested UE4.18 and TrueSky skills, an overhaul of existing repository skills from the session transcript, and a separate skill for general Unreal 4 knowledge. This fork handles skills and documentation; another session handles the startup hint and release package. diff --git a/docs/research/sr-interop-performance-20261002.md b/docs/research/sr-interop-performance-20261002.md index f39999c..e8ace47 100644 --- a/docs/research/sr-interop-performance-20261002.md +++ b/docs/research/sr-interop-performance-20261002.md @@ -1,5 +1,9 @@ # XeSS/FSR transfer cost and FSR4 compatibility, 2 October 2026 +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + The user confirms the wing/cloud build is clean, then reports DLSS Ultra Performance running about60 FPS faster than XeSS and FSR. The question is whether those backends execute at all, whether the transfer path adds stalls, and why selecting FSR4 refuses. diff --git a/docs/research/sr-runtime-deployment.md b/docs/research/sr-runtime-deployment.md index 72b5e26..501eb7b 100644 --- a/docs/research/sr-runtime-deployment.md +++ b/docs/research/sr-runtime-deployment.md @@ -1,5 +1,9 @@ # FSR and XeSS switching refusal: missing deployed runtimes +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + 30 September 2026. AC7 log inspection, signed-file deployment and a Windows hardware fixture. No new AC7 gameplay or visual validation was performed for this fix. diff --git a/docs/research/ue-reflection-mapping.md b/docs/research/ue-reflection-mapping.md index 1ac3f4e..cc8b35a 100644 --- a/docs/research/ue-reflection-mapping.md +++ b/docs/research/ue-reflection-mapping.md @@ -1,5 +1,9 @@ # Naming Unreal functions from reflection data +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Inspection: 7 September 2026, against the decrypted AC7 module dump described in [binary analysis](ghidra-tooling.md) and the Ghidra project `AC7Dump` (image base `0x140000000`, 161,554 functions). Engine source is the pinned `4.18.3-release` checkout, `0a14a8d537a3`. diff --git a/docs/research/ue418-hook-map.md b/docs/research/ue418-hook-map.md index 22bfe05..8ef4f7d 100644 --- a/docs/research/ue418-hook-map.md +++ b/docs/research/ue418-hook-map.md @@ -1,5 +1,9 @@ # UE4.18 source map for the AC7 plugin +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Current status, 2 October: the user accepted the corrected native SR/UI and TrueSky wing/cloud path. Historical build-only notes below retain the discovery trail; latest activation and validation are in [engine evidence](../../games/ac7/engine.json) and diff --git a/docs/research/unity-dx12-runtime-20261004.md b/docs/research/unity-dx12-runtime-20261004.md index c3625e0..aea5c55 100644 --- a/docs/research/unity-dx12-runtime-20261004.md +++ b/docs/research/unity-dx12-runtime-20261004.md @@ -1,5 +1,14 @@ # Unity Mono DX12 runtime and shared overlay +Current continuation: Mono/Harmony hooks, live DX12 SR and improved pre-DoF ordering are recorded +below. Subsequent independent FG, live switching and final user acceptance are in +[shared FG research](shared-fg-20261004.md). Earlier shimmer/pending notes retain their experiment +scope; broader scenes, resize, higher MFG and Claw acceptance remain unproven. + +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + This increment implements normal drop-in loading, native DX12 SR and shared overlay controls for Drag'n Wash. Mono/Harmony provides the inspected URP camera and graph hooks. The game plugin owns those hooks and resource leases; the orchestrator owns vendor contexts and UI. diff --git a/docs/research/unity-mono-plugin.md b/docs/research/unity-mono-plugin.md index 92e7db3..7e1661f 100644 --- a/docs/research/unity-mono-plugin.md +++ b/docs/research/unity-mono-plugin.md @@ -1,9 +1,15 @@ # Shared Unity Mono plugin +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Direction agreed on 3 October 2026: use a shared Unity Mono plugin, reflection for discovery, -and Harmony for managed method patches. Drag'n Wash is the first validation case. The native -game-plugin scaffold and contract fixture now exist; managed bootstrap, Harmony and rendering -remain unimplemented and untested in a game. +and Harmony for managed method patches. Drag'n Wash is the first validation case. The initial +scaffold was followed by implemented Mono/Harmony URP hooks, DX12 SR, shared overlay and FG. +Live SR and the final Unity FG corrections have recorded user acceptance. See +[runtime notes](unity-dx12-runtime-20261004.md) and [shared FG corrections](shared-fg-20261004.md). +The original design and validation sequence below retain their dated scope. ## Question and evidence @@ -27,8 +33,9 @@ Mono/CLR runtime or another orchestrator. Vendor SDKs, graphics interoperability, settings and presentation remain in `runtime/`. `ReScaleFrame.Game.UnityMono.dll` currently recognizes only the exact researched Drag'n Wash -x64 name and SHA256. It reports rendering readiness false, refuses `prepare` and `start` with -`RSF_ERROR_NOT_READY`, retains no host services and allows repeated cleanup. This exact allowlist +x64 name and SHA256. Its current lifecycle prepares the native bridge and managed helper, then +activates guarded hooks. Unsupported preparation refuses; quiesce/stop drain owned work. The +initial scaffold refused all activation. Readiness still stays false. This exact allowlist is deliberate: executable metadata alone cannot prove another Unity game's adapter compatibility. The synthetic contract fixture validates C ABI guards and lifecycle refusal. It does not load Mono, install Harmony patches or touch a graphics device. diff --git a/docs/research/vendor-fg-contracts.md b/docs/research/vendor-fg-contracts.md index 91d35c2..814d2c3 100644 --- a/docs/research/vendor-fg-contracts.md +++ b/docs/research/vendor-fg-contracts.md @@ -1,5 +1,9 @@ # Frame generation contracts: DLSS-G, FidelityFX, XeSS-FG +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Written 7 September 2026 from the vendored and referenced SDKs, not from summaries. Revisions: Streamline 2.12.0 (`vendor/streamline`, `references/Streamline`), FidelityFX SDK `60f4ea81909200d8542eca14dccb2628b763a9a3` (FrameGeneration 4.0.1), XeSS SDK 3.0.2 diff --git a/docs/research/windows-present-hook-coexistence.md b/docs/research/windows-present-hook-coexistence.md index 770fbfc..c2a388d 100644 --- a/docs/research/windows-present-hook-coexistence.md +++ b/docs/research/windows-present-hook-coexistence.md @@ -1,5 +1,9 @@ # Hooking Present on Windows next to Steam and RivaTuner +Research history: findings, hook addresses and pending statuses below apply to their recorded +experiments. Later increments can supersede earlier conclusions. See +[current implementation and validation](../current-status.md) before using this as a feature list. + Measured 26 September 2026 on Windows 11 Pro 26200, the first day this project ran in the game on Windows rather than under Proton. Every claim below is from the proxy's own log, its crash reporter, or a scratch probe linked against the built `rsf_graphics` library; none is from reading diff --git a/docs/review.md b/docs/review.md index 3502aa7..f34409e 100644 --- a/docs/review.md +++ b/docs/review.md @@ -1,5 +1,10 @@ # Repository review: 7 September 2026 +Historical review of `a9f3d5d`, not a fresh defect list for current `main`. Later fixes and remaining +checks are recorded in [the implementation follow-up](implementation.md#repository-review-follow-up). +[Current status](current-status.md) records the implemented lifecycle, rendering and FG paths. +Reproductions below retain their original revision and environment scope. + Reviewed code at `a9f3d5d` (the user's README-instructions commit; runtime code is unchanged from `a65e69a`). Scope: loader/proxy, diagnostics, AC7 plugin and view reader, graphics helpers, DLSS adapter/orchestrator, Rust input model and egui/FFI, analysis tools, native tests, build/CI, and documentation. The diagnostic DLSS path has recorded in-game results. It is not yet a complete plugin-driven integration: reinsertion, UI wiring, lifecycle, and target-device validation remain open. This change rewrites documentation and the shared agent skill; it does not fix runtime code. diff --git a/docs/tooling.md b/docs/tooling.md index 7ae4f46..e1c0a6e 100644 --- a/docs/tooling.md +++ b/docs/tooling.md @@ -10,7 +10,7 @@ The repository pins Rust in `rust-toolchain.toml` and selects Visual Studio 2022 | --- | --- | | [Git](https://git-scm.com/downloads) | Repository and reference revisions | | [Visual Studio / C++ Build Tools](https://visualstudio.microsoft.com/downloads/) | VS 2022 or 2026 C++ tools and Windows SDK for the reference x64 build | -| [CMake](https://cmake.org/download/) | 3.25+ for the checked-in presets. Configuring fetches [MinHook](https://github.com/TsudaKageyu/minhook) v1.3.4 (BSD-2-Clause) from GitHub for the Present and cursor detours, so the first configure needs the network | +| [CMake](https://cmake.org/download/) | A version supporting the selected VS generator (preset schema requires 3.25+; VS 2026 needs a newer generator-capable CMake). Configuring fetches [MinHook](https://github.com/TsudaKageyu/minhook) v1.3.4 (BSD-2-Clause) from GitHub for the Present and cursor detours, so the first configure needs the network | | [Streamline SDK](https://github.com/NVIDIA-RTX/Streamline/releases) | `sl.h` and its headers under `vendor/streamline/include` (untracked), or the DLSS backend compiles out and reports `RSF_DLSS_ERROR_NOT_COMPILED`; the game folder's `ReScaleFrame\streamline` holds the release's `bin/x64` | | [Rust via rustup](https://rustup.rs/) | Pinned Rust toolchain and egui tests | | [PowerShell](https://github.com/PowerShell/PowerShell) | `eng/verify.ps1` | @@ -18,6 +18,12 @@ The repository pins Rust in `rust-toolchain.toml` and selects Visual Studio 2022 Run `./eng/verify.ps1` and `cargo test --workspace --locked`. The script currently runs Clippy but does not execute Rust tests. Linux cross-builds additionally use MinGW-w64 and Wine; see [AGENTS.md](../AGENTS.md). +Unity managed builds also need a .NET SDK capable of building the netstandard2.1 helper, locked +Harmony 2.4.2, the researched game's Managed directory and Unity native rendering headers. +See [dependencies](dependencies.md) and [the build script](../eng/build-unity-sr.ps1). +SDK/GPU/managed fixtures are separate from a clean native CI run; availability depends on local +untracked dependencies. Recorded runs in research are not automatic results for this workspace. + ## Binary and frame analysis Use [Ghidra](https://github.com/NationalSecurityAgency/ghidra) with PyGhidra and the JDK required by the installed release. The repository's scripts target Ghidra 12+. [The Ghidra tooling guide](../tools/ghidra/README.md) covers DirectX types and compiler-derived archives. @@ -76,17 +82,18 @@ prefix is the one that lies. Wine's own D3D11 does not implement shared NT handl passes and the bridge is possible. A fixture that had only run in the default prefix would have reported the wrong answer about the only environment that matters. -Both presets are worth running. `texture_dump` currently passes under WineD3D and fails under DXVK -with the subprocess killed, reproducibly, which is unexamined and is the kind of difference the -second preset exists to surface. +The recorded September run found `texture_dump` passing under WineD3D and failing under DXVK +with the subprocess killed. That dated observation has not been rerun for this documentation audit; +check the actual environment before describing it as a current failure. ## Unreal source Recommend authorized [Unreal Engine GitHub access](https://www.unrealengine.com/en-US/ue-on-github) for Unreal research. The AC7 reference is stock `4.18.3-release`, recorded in [the hook map](research/ue418-hook-map.md). It explains engine behaviour but is not the game's exact source or a guarantee of matching offsets. -The checkout at `references/UnrealEngine` is a full clone whose default branch is 5.8.2. It is kept -checked out at `4.18.3-release` (`0a14a8d537a3`), and every read for this project must be at that -tag. The engine's structures are not stable across that gap: `FSimpleElementVertex` alone gained a +The recorded AC7 reference checkout at `references/UnrealEngine` was a full clone with newer +branches, checked out at `4.18.3-release` (`0a14a8d537a3`). AC7/UE4.18 reads must use that tag; +Project Wingman uses its separately pinned UE4.27.2 reference. Inspect current availability and +revision rather than assuming the reference checkout exists or is still on the recorded branch. The engine's structures are not stable across that gap: `FSimpleElementVertex` alone gained a `FDFVector4` position, which moves every offset after it, so a signature taken from the default branch matches nothing in the game and fails silently. If the shared checkout has moved, read through `git show 4.18.3-release:` rather than silently changing another task's checkout. diff --git a/eng/package-unity-sr.ps1 b/eng/package-unity-sr.ps1 index 074461b..a0d869d 100644 --- a/eng/package-unity-sr.ps1 +++ b/eng/package-unity-sr.ps1 @@ -99,7 +99,21 @@ support and image quality on your Claw have not been validated yet. This is a Unity Mono/URP DX12 test build for Steam build 25286774, Unity 6000.3.14f1. It refuses an unrecognized executable or native player. Temporal SR runs before DoF/blur, bloom and tone mapping. UI is drawn afterward. -Frame generation and Reflex are not implemented in this Unity path. +This build includes independent DLSS-G, FSR3/4 and XeSS FG selection in Insert, +with live provider changes and SDK-limited multiplier controls. The FG startup +default is inherited from the deployment INI; a fresh deployment defaults Off. +One generated frame means 2x. DLSS-G uses Reflex (effective mode at least On +while active), XeSS uses XeLL, and the pinned FSR path stays 2x. Unsupported +requests retain the working provider. FSR4 SR INT8 does not establish FSR4 FG. +Unity saves the FG provider in ReScaleFrame/preferences.ini; that file is not +included here. Other controls can remain session settings. SR Off/FSR1 can still +supply FG depth/motion inputs. + +Recorded 4 October user acceptance covers XeSS/DLSS-G and the final FSR image/ +switching correction. This does not validate every package, scene, resize or +hardware family. Higher DLSS/Intel MFG counts and MSI Claw acceptance are pending. +The HUD separates rendered FPS from SDK/DXGI presented counts; it does not +measure input latency or physical scanout. No original game file is included or needs replacing. If a different mod already owns version.dll, do not overwrite it. Remove or resolve that mod first. diff --git a/games/README.md b/games/README.md index 85f9547..c7f52fc 100644 --- a/games/README.md +++ b/games/README.md @@ -2,10 +2,16 @@ Each game directory holds its plugin and an `engine.json` evidence summary. Record the exact executable build and the source of each rendering claim. -[Unity Mono](unity-mono/README.md) is the shared engine plugin for reflection and Harmony adapters -across separate rendering pipelines. Its native DLL scaffold is built and contract-tested. -[Drag'n Wash](drag-n-wash/README.md) is the first recognized game and records build evidence -without a duplicated renderer DLL. Managed hooks and rendering support remain unimplemented. +[Unity Mono](unity-mono/README.md) supplies Mono/Harmony URP RenderGraph hooks, DX12 SR and +shared runtime FG for the fingerprinted [Drag'n Wash](drag-n-wash/README.md) player, without a +duplicated renderer DLL. Live SR execution and user acceptance of the final FG corrections are +recorded. Other Unity players, HDRP and built-in pipelines still need verified adapters. + +[AC7](ac7/README.md) has the accepted native SR/UI/cloud integration and DLSS-G path. +[Project Wingman](project-wingman/README.md) remains a detection/lifecycle scaffold with rendering +unsupported. All native plugin APIs retain `rendering_ready = 0`; that flag is separate from +individual deployed-path acceptance. [Current status](../docs/current-status.md) distinguishes +source features, downloads and remaining validation. - `measured`: observed in the game or a capture. - `inferred`: follows from evidence, with the reasoning recorded. diff --git a/games/ac7/README.md b/games/ac7/README.md index 30678e5..cf9ae01 100644 --- a/games/ac7/README.md +++ b/games/ac7/README.md @@ -4,9 +4,10 @@ The integration starts with the game and keeps the original lighting, post-processing and UI. Menus, HUD, briefing terrain and aircraft icons render at full output resolution, independently -of the selected quality preset. The corrected TrueSky depth path keeps clouds and aircraft details clean. +of the selected quality preset. The corrected TrueSky depth path has user acceptance for cloud +blocks and aircraft overlap; later low-resolution lighting/shadow defects remain under investigation. -[Download the AC7 release](https://github.com/KillerPixelCrew/ReScaleFrame/releases/latest) +[Download the AC7 v0.1.0 SR release](https://github.com/KillerPixelCrew/ReScaleFrame/releases/tag/v0.1.0) · [Installation details](../../docs/releases/ac7-install.md) · [Report an issue](https://github.com/KillerPixelCrew/ReScaleFrame/issues) @@ -19,7 +20,8 @@ of the selected quality preset. The corrected TrueSky depth path keeps clouds an The release includes all required SR runtime files and the overlay. The corrected build was accepted in game on RTX 4070 Laptop. Other GPU families, game builds and Proton have not received -the same AC7 visual validation. Frame generation and Reflex remain separate work. +the same AC7 visual validation. This published ZIP is SR-only. The current source also implements +FG and latency services; those features require a separately built and configured deployment. ## Install @@ -70,6 +72,19 @@ To uninstall, remove the three mod DLLs, `ReScaleFrame.ini` and the installed `R Restore any files you backed up. Delete `%LOCALAPPDATA%\ReScaleFrame\AC7.ini` if you also want to reset your saved preferences. +## Current-source frame generation + +Current `main` implements independent DLSS-G, FSR3, FSR4 and XeSS FG selection, live provider +replacement, SDK-limited multipliers, Reflex controls and rendered/presented FPS reporting. +AC7's earlier DLSS-G path is user-accepted. Additional FSR/XeSS FG paths have synthetic device +evidence, with AC7 moving-scene acceptance pending. Briefing generation is deferred. Higher MFG +counts and measured latency reductions are unproven; FSR4 SR compatibility does not imply FSR4 FG. + +Use [the current-source loader guide](../../loader/README.md#ac7-frame-generation) for configuration +and runtime files. The v0.1.0 installation steps above do not install FG/Reflex. See +[current status](../../docs/current-status.md) and +[shared FG evidence](../../docs/research/shared-fg-20261004.md) for validation limits. + ## Integration notes AC7 uses a modified UE4.18 renderer on D3D11. The proxy loads the game plugin, which owns guarded @@ -77,8 +92,9 @@ engine hooks, per-view resources and reconstruction insertion before bloom, expo The shared runtime owns vendor SDKs and the GPU-ordered D3D11/D3D12 SR bridge. The view reader handles the game's 4096-byte uniform buffer. Scene motion needs UE encoding -removal, and the engine's camera transform supplies camera motion. The integration promotes the -game's own UI/composition targets, preserving its grading and glow. Enlarged separate translucency +removal, and the engine's camera transform supplies camera motion. The native integration sizes the +game's own UI targets through engine owners, preserving grading and glow; texture promotion +remains a compatibility mechanism. Enlarged separate translucency uses matching view/depth selections and unjittered constants across VS, PS, HS, DS and GS. - [Accepted result and debugging history](../../docs/research/ac7-consumer-session.md) diff --git a/games/ac7/engine.json b/games/ac7/engine.json index adb4374..6fb11f2 100644 --- a/games/ac7/engine.json +++ b/games/ac7/engine.json @@ -1,4 +1,24 @@ { + "current_validation": { + "audited": "2026-10-07", + "source_commit": "fda5fd0f2730b40e5b96f419bc0a05cb0b73932b", + "scope": "Source/documentation review of recorded evidence; no new game or device test. Earlier dated observations below retain their original scope.", + "game_abi": 13, + "plugin_rendering_ready": false, + "current_status": "../../docs/current-status.md", + "sr": "Corrected native SR/UI/TrueSky and optimized bridge/FSR4 INT8 path user-accepted.", + "fg": "DLSS-G user-accepted; live shared FG replacement and additional FSR/XeSS providers implemented with device fixtures.", + "published_release": "v0.1.0 AC7 ZIP remains SR-only without FG/Reflex.", + "limits": [ + "new AC7 FSR/XeSS FG live acceptance", + "briefing FG deferred", + "later lighting/shadow defect", + "missing-object motion coverage", + "higher MFG and other GPU families", + "measured latency reduction" + ], + "research": "../../docs/research/shared-fg-20261004.md" + }, "game": { "title": "Ace Combat 7: Skies Unknown", "steam_appid": 502500, @@ -6,7 +26,8 @@ "executable": "Ace7Game.exe", "platform": "windows-x64", "render_api": "d3d11", - "examined": "2026-09-06" + "examined": "2026-09-06", + "sha256": "c7da97f5f8a807d4f1264adbb074146fcffe9bdc2ffa98791b822cd28e558f4f" }, "frame_generation_cpu_research": { "status": "guarded CPU, primary RHI and queued window hooks built; FG/Reflex connected in experimental cold profile; new game validation pending", diff --git a/games/drag-n-wash/README.md b/games/drag-n-wash/README.md index 8972594..1037a58 100644 --- a/games/drag-n-wash/README.md +++ b/games/drag-n-wash/README.md @@ -10,14 +10,26 @@ The shared Unity Mono adapter loads through an added `version.dll` shim and the folder. It provides DLSS, FSR1/2/3/4 and XeSS with the shared Insert overlay and quality controls. Temporal SR runs before DoF/blur, bloom and tonemapping; HUD remains afterward. The user confirms that correcting this order substantially improved static skyline stability. Broader image, -scene-transition and MSI Claw hardware acceptance are still pending. +scene-transition and MSI Claw hardware acceptance are still pending. These are source/local test +builds; no Unity release is listed on GitHub as of the documentation audit on 7 October 2026. Extract the test ZIP beside `DragNWash.exe`, preserving every original game file. Start normally through Steam on DX12 and press Insert. The Claw package defaults to Auto Quality: NVIDIA selects DLSS, Intel selects XeSS, and AMD selects FSR3 using the game's actual adapter. Unsupported providers report refusal and retain spatial fallback. DLSS needs supported NVIDIA hardware; the experimental FSR4 INT8 compatibility route is device-tested separately from the Claw. -No Unity frame generation or Reflex support is claimed. +Current source also implements independent DLSS-G, FSR3/4 and XeSS FG selection and live switches. +The user accepted XeSS/DLSS-G and the final FSR correction in the recorded 4 October session. +Reflex follows DLSS-G (effective mode at least On while active); XeSS uses XeLL. The pinned FSR +path is 2x. Higher DLSS/Intel MFG counts, FSR4 FG hardware, general scene/resize coverage and +Claw operation are not established by that acceptance. + +Select FG separately in Insert. Unity stores the provider choice in `ReScaleFrame/preferences.ini`. +Deployment defaults use `[UnitySR] FrameGeneration=0/1/3/4/5` (Off/DLSS/FSR3/FSR4/XeSS) and +`GeneratedFrames=1` for 2x. Off/FSR1 SR can still supply normalized FG inputs. Install matched +runtime/helper/overlay and vendor files; old SR-only ZIPs do not gain FG by changing their INI. +See [shared FG evidence](../../docs/research/shared-fg-20261004.md) and +[current status](../../docs/current-status.md). For builds and package generation, see [the plugin guide](../unity-mono/README.md). [Runtime evidence and corrections](../../docs/research/unity-dx12-runtime-20261004.md) separate @@ -25,5 +37,5 @@ source review, synthetic/device fixtures, live execution and user visual observa [Engine evidence](engine.json) records identity and capability limits. [Renderer research](../../docs/research/drag-n-wash-renderer.md) records the file/source findings, -temporal/UI boundaries, parser failures and pending live experiments. Rendering, SR, FG and -latency support remain unimplemented and untested for this game. +temporal/UI boundaries and parser failures from the initial static investigation. Its earlier +unimplemented/pending statements describe that investigation, before the subsequent runtime work. diff --git a/games/drag-n-wash/engine.json b/games/drag-n-wash/engine.json index 3d55736..168833e 100644 --- a/games/drag-n-wash/engine.json +++ b/games/drag-n-wash/engine.json @@ -1,4 +1,23 @@ { + "current_validation": { + "audited": "2026-10-07", + "source_commit": "fda5fd0f2730b40e5b96f419bc0a05cb0b73932b", + "scope": "Source/documentation review of recorded evidence; no new game or device test. Earlier dated observations below retain their original scope.", + "game_abi": 13, + "plugin_rendering_ready": false, + "current_status": "../../docs/current-status.md", + "sr": "Live DX12 SR execution and improved pre-DoF order recorded.", + "fg": "Shared DLSS-G, FSR3/4 and XeSS provider selection and live replacement implemented; recorded user acceptance of XeSS/DLSS-G and final FSR correction.", + "limits": [ + "MSI Claw acceptance", + "higher DLSS/Intel MFG counts", + "FSR4 FG hardware support", + "broader scene/resize/teardown coverage", + "other Unity players/pipelines", + "measured latency reduction" + ], + "research": "../../docs/research/shared-fg-20261004.md" + }, "game": { "id": "drag-n-wash", "title": "Drag'n Wash", @@ -15,7 +34,7 @@ "id": "unity-mono", "target": "rsf_game_unity_mono", "dll": "ReScaleFrame.Game.UnityMono.dll", - "status": "experimental native DX12 SR and shared overlay; live DLSS evaluations and vendor control requests confirmed; visual acceptance pending", + "status": "Mono/Harmony DX12 SR and shared overlay/FG implemented; live SR and final FG corrections have recorded user acceptance; broader coverage pending", "rendering_ready": false, "implemented": true, "built_windows_msvc": true, @@ -27,7 +46,7 @@ "prepare_result": "live lifecycle activation and provider preparation confirmed", "game_tested": true, "device_tested": true, - "validation_limit": "device evidence is synthetic SR readback; game evidence includes successful DLSS evaluations, overlay and settings requests; image quality and scene transitions pending", + "validation_limit": "Synthetic GPU fixtures and user-run SR/FG acceptance are recorded separately; higher MFG, Claw and broader scene/resize coverage remain unproven", "runtime_research": "../../docs/research/unity-dx12-runtime-20261004.md", "visual_issue": "User confirms much better after moving SR before DoF; broader acceptance pending", "default_backend": "Auto: actual D3D12 adapter selects NVIDIA DLSS, Intel XeSS, AMD FSR3; RDNA4 auto classification deferred" @@ -50,9 +69,10 @@ "Direct3D12", "Direct3D11" ], - "active_api": null, + "active_api": "Direct3D12", "native_player_pdb_matches": true, - "native_executable_pdb_matches": true + "native_executable_pdb_matches": true, + "active_api_evidence": "../../docs/research/unity-dx12-runtime-20261004.md" }, "packaged_defaults": { "pipeline_asset": "PC_RPAsset", @@ -93,7 +113,8 @@ "base camera without camera stack", "hardware dynamic resolution disabled", "renderer motion support" - ] + ], + "scope": "Initial packaged/static findings; live adapter execution and later corrections are in current_validation and runtime_research." }, "hud": { "serialized_canvas_count": 21, @@ -102,7 +123,8 @@ ], "completed_hudless_surface_verified": false, "source_sdr_overlay_order": "after post-processing and final blit on last base camera", - "other_runtime_ui_routes_verified": false + "other_runtime_ui_routes_verified": false, + "scope": "Initial asset/source evidence; the later SDR pre-UI guide implementation and acceptance are recorded in shared-fg-20261004.md." }, "custom_renderer_features": [ "ScreenSpaceAmbientOcclusion", diff --git a/games/project-wingman/README.md b/games/project-wingman/README.md index ff0c270..3615193 100644 --- a/games/project-wingman/README.md +++ b/games/project-wingman/README.md @@ -1,7 +1,7 @@ # Project Wingman The plugin is a Windows x64 scaffold. It recognizes the researched executable and exposes the -shared game-plugin ABI. Renderer hooks, upscaling, HUD separation, frame generation and VR +shared game-plugin ABI 13. Renderer hooks, upscaling, HUD separation, frame generation and VR integration are not implemented or game-tested. | Item | Value | @@ -42,3 +42,6 @@ ABI refusal, inactive status and cleanup, and does not modify or launch the game [Renderer investigation](../../docs/research/project-wingman-renderer.md) records the question, method, source revision, named functions and remaining runtime experiments. Candidate addresses remain research data rather than executable hook code. + +[Current status](../../docs/current-status.md) compares this scaffold with the implemented AC7 +and Unity paths; no new Project Wingman game/device validation was performed in the documentation audit. diff --git a/games/project-wingman/engine.json b/games/project-wingman/engine.json index 88c2aae..774b68e 100644 --- a/games/project-wingman/engine.json +++ b/games/project-wingman/engine.json @@ -1,4 +1,14 @@ { + "current_validation": { + "audited": "2026-10-07", + "source_commit": "fda5fd0f2730b40e5b96f419bc0a05cb0b73932b", + "scope": "Source/documentation review of recorded evidence; no new game or device test. Earlier dated observations below retain their original scope.", + "game_abi": 13, + "plugin_rendering_ready": false, + "current_status": "../../docs/current-status.md", + "status": "Exact-build detection and lifecycle scaffold; prepare/start return NOT_READY; rendering/SR/FG/latency/VR unimplemented.", + "research": "../../docs/research/project-wingman-renderer.md" + }, "game": { "id": "project-wingman", "title": "Project Wingman", diff --git a/games/unity-mono/README.md b/games/unity-mono/README.md index efd16f7..c72e289 100644 --- a/games/unity-mono/README.md +++ b/games/unity-mono/README.md @@ -17,21 +17,38 @@ Normal loading uses the shared RSF shim, dropped alongside original game files. `rendering_ready` remains zero while broader scene, resize and hardware acceptance is pending. Native contract fixtures verify identity, ABI guards and inactive cleanup in a test process. -The shipped-Mono fixture separately exercises managed packet layout, nine URP method contracts +The shipped-Mono fixture separately exercises managed packet layout, twelve URP method contracts and Harmony patch/unpatch. Native DX12 vendor readback and live game evidence are recorded in [the runtime notes](../../docs/research/unity-dx12-runtime-20261004.md). +Current source supplies independent DLSS-G, FSR3/4 and XeSS FG with live provider replacement, +SDK-limited multiplier controls and provider-owned Reflex/XeLL pacing. Unity's SDR pre-UI colour +and normalized depth/motion are captured separately; SR Off/FSR1 also supply FG inputs. Recorded +user acceptance covers XeSS/DLSS-G and the final FSR correction, without establishing higher MFG +counts, all scene/resize paths or Claw operation. See +[shared FG corrections and acceptance](../../docs/research/shared-fg-20261004.md). + ```powershell ./eng/verify.ps1 -Configuration Release -VS2026 ctest --preset windows-release-vs18 -R game_unity_mono_plugin_contract ./eng/build-unity-sr.ps1 -VS2026 -UnityManagedDirectory '/DragNWash_Data/Managed' -./eng/deploy-unity-sr.ps1 -GameDirectory '' +./eng/deploy-unity-sr.ps1 -GameDirectory '' -FrameGeneration FSR3 -GeneratedFrames 1 ./eng/package-unity-sr.ps1 -GameDirectory '' -Backend Auto ``` Use the Visual Studio 2022 preset on a machine that has VS 2022. The DLL lands under `build/windows-x64/bin//`. +The managed build requires .NET, the researched player's Managed references, Unity native headers +and locked Harmony 2.4.2; see [dependencies](../../docs/dependencies.md). Deployment defaults to +Auto/Quality with FG Off, backs up owned RSF files and checks original-file hashes. Run deployment +only against a closed game. It copies all FG runtime families even when the default is Off. +The version carrier goes beside `DragNWash.exe`; runtime/plugin/helper/overlay live in `ReScaleFrame/`. +The packager writes a local Claw test ZIP under `.local/packages`, keeps the deployed FG defaults +and excludes preferences, logs, backups and original game files. It does not publish a release. +Unity saves FG provider selection in `ReScaleFrame/preferences.ini`; SR choices remain session +settings over `[UnitySR]` defaults. [Current status](../../docs/current-status.md) records limits. + [Plugin design](../../docs/research/unity-mono-plugin.md) records the inspected methods, proposed bootstrap, semantic patch guards, native execution and lifecycle requirements. [First game evidence](../drag-n-wash/engine.json) keeps build identity separate from capability. diff --git a/loader/README.md b/loader/README.md index 1f06993..404bc15 100644 --- a/loader/README.md +++ b/loader/README.md @@ -1,6 +1,10 @@ # Loader and research proxy -`rsf_bootstrap` exports a version only. The product launcher, early-loading handshake, and plugin lifecycle are pending. Current AC7 experiments use `proxy/`, built as `dinput8.dll`, with helpers in `diagnostics/` and `runtime/`. +`rsf_bootstrap` exports a version only; product launching and frontend IPC remain pending. +Current game loading uses the AC7 DirectInput carrier and shared Unity version shim. Runtime-owned +plugin preparation/start/quiesce/stop and renderer/CPU callbacks are implemented. The published +v0.1.0 AC7 ZIP is SR-only; FG/Reflex below describe current source/development deployments. +See [current implementation and validation](../docs/current-status.md). ## Research setup @@ -16,8 +20,9 @@ deployment command with AC7 closed: ./eng/deploy-ac7-proxy.ps1 -GameDirectory 'D:/SteamLibrary/steamapps/common/ACE COMBAT 7' ``` -It builds both DLLs, checks the real overlay's ABI, Insert handling, rendering and resize, then -backs up and deploys the matching pair. Routine `eng/verify.ps1` does not touch the game installation. +It builds the dedicated AC7 carrier and matching Rust overlay, checks the real overlay's ABI, +Insert handling, rendering and resize, then backs up and deploys the proxy, game plugin, overlay +and SR runtimes. Routine `eng/verify.ps1` does not touch the game installation. Keep the separately obtained NVIDIA runtime in a directory visible to the game, for example `ReScaleFrame/streamline/` beside the executable. The tested set includes `sl.interposer.dll`, `sl.common.dll`, `sl.dlss.dll`, `sl.pcl.dll`, and `nvngx_dlss.dll`. See [dependencies](../docs/dependencies.md) for versions and terms. @@ -34,21 +39,23 @@ exists. The first few rendered frames identify the scene and its composition pat not require a capture directory or a developer hotkey. Missing backend support leaves DLSS inactive and reports the reason. -**Insert** opens or closes the overlay. Its only controls are **Enable DLSS** and the five presets. -The old function-key actions are removed. Disable restores 100% scene resolution, stops reinsertion +**Insert** opens or closes the overlay. Current controls include **Enable upscaling**, SR backend +and five presets, plus independent FG provider/multiplier, Reflex and FPS controls where available. +The old consumer function-key actions are removed; opt-in F9 motion capture remains. +Disable restores 100% scene resolution, stops reinsertion and closes the forced jitter gate. Native selects DLAA with reinsertion at output resolution. -The selected preset determines screen percentage through DLSS's render-size query, both at startup -and when changed. The setter accepts the last successfully applied value or the game's reset to -100%; it no longer assumes every preset change starts at 100%. A refused game write rolls the -backend mode back. Changes reset temporal history and wait for a fresh evaluated frame before -rebuilding reinsertion. The backend remains loaded while disabled so another preset can be selected. +The selected SDK supplies the render sizes at startup and on quality changes. Native mode sizes +engine-owned views; the compatibility setter accepts the last applied percentage or the game's +reset to 100%. A refused compatibility write rolls the mode back. Changes reset history and wait +for a fresh accepted frame before rebuilding reinsertion. The backend stays loaded while disabled. -Choices persist in `%LOCALAPPDATA%\ReScaleFrame\AC7.ini`, independently of the installation's -advanced settings. Without saved choices, DLSS starts enabled with Performance selected. +Enable, quality and FG provider choices persist in `%LOCALAPPDATA%\ReScaleFrame\AC7.ini`, +independently of the installation's advanced settings. SR backend choice remains per session. +Without saved choices, DLSS starts enabled with Performance selected. The briefing layer targets 100% of output resolution at every scene quality, using the -existing expected-byte-checked allocation-scale patch. It uses an unjittered view in both VS and PS +existing expected-byte-checked allocation-scale patch. It uses unjittered views across VS, PS, HS, DS and GS and is recombined after scene SR, before tonemapping. This replaces the default secondary DLSS integration. See [the implementation and validation limits](../docs/research/ac7-consumer-session.md). @@ -67,7 +74,11 @@ were [review findings](../docs/review.md) against the old parser. The vendor runtime is found at `ReScaleFrame\streamline` beside the proxy, and `renderdoc.dll` beside the proxy, so neither path normally needs setting at all. -## Environment settings +## AC7 environment settings + +These keys belong to the AC7 carrier. Several observer/promotion overrides describe the retained +compatibility path; the default native plugin sizes engine views/targets and inserts SR in its +post-process graph. Do not apply this flat AC7 configuration format to Unity's `[UnitySR]` INI. | Variable | Default / purpose | | --- | --- | @@ -108,7 +119,9 @@ beside the proxy, so neither path normally needs setting at all. The keys the [representation plan](../docs/representation-plan.md) introduces (`RSF_UI_*`, `RSF_POLICY_*`, `RSF_PRESENTATION`, `RSF_FG*`, `RSF_SR_VENDOR`, vendor runtime directories) are documented here as each milestone lands, not before. -Quality selection does not choose `RSF_SCREEN_PERCENTAGE` automatically; the [representation plan](../docs/representation-plan.md) derives the render scale from the vendor's plan per quality level. +Quality selection derives input dimensions from the selected SDK. Native mode sizes the renderer +through engine-owned views; compatibility mode applies the planned percentage. `RSF_SCREEN_PERCENTAGE` +is a legacy diagnostic override, not a second independent consumer quality setting. ## Startup and diagnostics @@ -118,15 +131,17 @@ a failing vendor runtime. Use Enable DLSS to retry after a failure. Renderer mai the render thread. Module dumps are opt-in; vendor informational spam is not forwarded to the log. Warnings, errors and state changes remain available in `rsf-dump.log`. -The proxy and overlay are still the research carrier, not the completed plugin lifecycle or product -installer. Synthetic Windows checks do not establish briefing image quality or flight regression. +The carriers implement current plugin lifecycle loading, while the general product bootstrap and +installer remain incomplete. Recorded game acceptance and synthetic/device checks have separate +scope; neither a build nor a successful deployment proves new game image quality. -## Development SR backend switching +## SR backend switching The current development overlay offers DLSS, FSR2, FSR3, FSR4 and XeSS after startup. Selection is applied on the render thread; a refused backend keeps the active one. Existing startup is DLSS-first. -The published 0.1.0 package contains DLSS only and is not automatically updated by these changes. -New FSR/XeSS paths are built and synthetic device-tested, not yet game-tested in AC7. +The corrected published v0.1.0 package includes DLSS, FSR2/3/4 and XeSS SR. The optimized bridge +and FSR4 INT8 SR path received user acceptance on 2 October. New source work does not update +that published ZIP; later FG/Reflex changes are separate. `RSF_FFX_BIN` selects the absolute directory containing `amd_fidelityfx_upscaler_dx12.dll`. It defaults to `ReScaleFrame\fidelityfx` beside the proxy. SDK 2.3.0 can supply all three FSR @@ -146,7 +161,7 @@ presentation/SR host while keeping the game-facing D3D11 renderer. `RSF_FG_MODE= independently of SR. The default is DLSS-G. FSR uses `RSF_FSR3_BIN` / `RSF_FSR4_BIN`, then `RSF_FFX_BIN`, then `ReScaleFrame/fidelityfx`; XeSS uses `RSF_XESS_BIN`, then `ReScaleFrame/xess`. Unsupported creation preserves original presentation. Change provider -in the overlay during play. FSR3 is 2x; FSR4 and XeSS capabilities come from the actual SDK/hardware query. +in the overlay during play. FSR3/4 are 2x in the pinned swapchain API; XeSS limits come from the SDK/hardware query. `RSF_REFLEX_MODE=0/1/2` selects Off/On/On + Boost. Sleep and PCL markers remain integrated in Off mode. Reflex controls apply to DLSS-G. XeSS uses XeLL. FSR does not apply the Reflex frame limiter. @@ -154,28 +169,34 @@ Insert exposes requested/effective/active FG and runtime Reflex controls. These settings include Show FPS overlay. The compact top-right HUD remains visible with the panel closed and separately displays real application/rendered FPS and SDK aggregate presented FPS. It never multiplies the rendered rate by a requested FG setting; the badge reports actual activity. -Reported presents are SDK/DXGI counters, not physical scanout or input-latency measurements. These -changes are session settings. `RSF_FRAME_LIMIT_FPS` limits rendered frames per second before +Reported presents are SDK/DXGI counters, not physical scanout or input-latency measurements. +FG provider choice is saved per user; mode, multiplier, Reflex and frame-limit changes are session +settings. `RSF_FRAME_LIMIT_FPS` limits rendered frames per second before generation, through Reflex's limiter; the panel's Frame limit control changes it while running. With 2x generation a limit of 80 presents up to 160. `RSF_REFLEX_LIMIT_US` is the same limit written as a microsecond interval between rendered frames. -Restart with `RSF_FG_ENABLE=0` to remove the presentation proxy. Default runtime mode is +Choose Off in Insert to stop generation through the stable facade. For a cold start, clear the +saved `[Rendering] FrameGeneration` choice to 0 as well as `RSF_FG_ENABLE=0`; saved provider choice +can override that default. Live provider changes no longer require restart. Default runtime mode is production; development requires `RSF_FG_DEVELOPMENT=1` and `RSF_STREAMLINE_BIN` pointing at development DLLs. `RSF_FG_DEBUG=1` records a bounded marker trace after tagged frames begin. The Reflex sleep waits for the previous frame's Present and still precedes input. `RSF_REFLEX_ASYNC=1` restores the earlier sleep that overlaps the previous frame, for comparison. The user accepts deployed DLSS-FG. FSR3/XeSS pass synthetic D3D11/D3D12 generation checks; -their AC7 moving-scene quality, HUD and pacing have not been game-tested. Other screens, -cuts, unmatched inputs and unsupported VSync suspend generation. HUD-less/UI guides remain open. +their AC7 moving-scene quality, HUD and pacing have not been game-tested. Cuts, unmatched inputs +and unsupported VSync suspend generation. Compatible native AC7 family +surfaces now supply optional pre-Slate HUD-less guides, with unclassified UI fallback retained. +That does not establish complete HUD separation or new vendor game acceptance. [Evidence, dependencies and limits](../docs/research/ac7-dlss-fg-20261003.md). Unity Mono uses `[UnitySR] FrameGeneration=0/1/3/4/5` and `GeneratedFrames=1` in `ReScaleFrame.ini`, independently of `Backend`. Install the matching vendor DLLs with `eng/deploy-unity-sr.ps1 -FrameGeneration FSR3` (or `DLSS` / `FSR4` / `XeSS`). The shared runtime consumes the completed backbuffer and same-frame normalized depth/motion. -Its CPU callbacks bracket EarlyUpdate through PreLateUpdate. These additions are built and -synthetic-tested; Drag'n Wash startup, pixels and pacing remain unverified. +Its CPU callbacks bracket EarlyUpdate through PreLateUpdate. SR Off/FSR1 also supply normalized +inputs. The user accepted XeSS/DLSS-G and the final FSR correction after the recorded runtime +switch/input/pacing repairs. General scene/resize coverage, higher MFG and Claw remain unverified. [Shared implementation evidence](../docs/research/shared-fg-20261004.md). Insert now exposes the frame-generation provider separately from the upscaler. Choose Off, @@ -183,8 +204,11 @@ DLSS-G, FSR3, FSR4 or XeSS in Unity. Requests replace the provider after a drain while the engine retains its render buffers. The selector shows the current and requested providers separately; GPU compatibility is checked when switching. Unity saves this choice in `ReScaleFrame/preferences.ini`, outside the deployment-owned INI. AC7's compiled selector -also includes DLSS-G and uses its existing per-user preferences file. Both development -installations contain this integration; live game switching acceptance is still pending. +also includes DLSS-G and uses its existing per-user preferences file. Unity live switching and +final corrections have recorded user acceptance; new AC7 FSR/XeSS FG acceptance remains pending. +Active DLSS-G applies effective Reflex at least On even if requested Off; XeSS uses XeLL and FSR +owns its pacing without an NVIDIA SR sleep. FSR3/4 stay 2x in the pinned API; higher DLSS/XeSS +counts follow SDK queries and lack device/game proof on the tested RTX 4070. # AC7 motion research capture Set `RSF_MOTION_CAPTURE=1` in the proxy INI before launching AC7. With the game focused, @@ -224,7 +248,8 @@ pause capture validation is pending; the nine completed sessions do not need rep The matching `ReScaleFrame.Game.AC7.dll` is deployed beside the proxy. The runtime prepares it after decryption and activates it after SR initialization. Expected-byte refusal uses the compatibility renderer. Native mode sizes renderer-owned views and inserts SR in the native graph; texture -promotion, constant-buffer rewriting and timed rediscovery are disabled there. It still needs live -AC7 validation. [Details and current limits](../docs/research/ac7-native-renderer-refactor-20261001.md). +promotion, constant-buffer rewriting and timed rediscovery are disabled there. The corrected native +SR/UI and TrueSky wing/cloud path has user acceptance; later lighting and +motion-coverage changes retain their own validation gaps. [Details and current limits](../docs/research/ac7-native-renderer-refactor-20261001.md). F9 records copied RHI scope/role/frame identity along with the existing paired images, GPU bindings, widget observations and screenshot. Native family IDs do not prove simulation/FG identity. diff --git a/loader/ReScaleFrame.ini.sample b/loader/ReScaleFrame.ini.sample index 00ffff7..c8479a9 100644 --- a/loader/ReScaleFrame.ini.sample +++ b/loader/ReScaleFrame.ini.sample @@ -18,7 +18,7 @@ RSF_DLSS_TONEMAP=1 # Briefing resolution is relative to output, never the reduced scene. # 100 renders the briefing at full output resolution, independently of the DLSS preset. RSF_TRANSLUCENCY_TARGET=100 -# Draw with an unjittered VS/PS view, then composite after scene SR. +# Draw with unjittered VS/PS/HS/DS/GS views, then composite after scene SR. # 0 selects the experimental jittered 1:1 layer resolve for comparison. RSF_TRANSLUCENCY_UNJITTER=1 @@ -39,3 +39,17 @@ RSF_TRANSLUCENCY_UNJITTER=1 # RSF_TRANSLUCENCY_SCALE=0 # overrides the output-relative target when nonzero # RSF_REINSERT_DEPTH=0 # existing overlay-depth policy # RSF_RENDERDOC=0 # cannot be used alongside DLSS in the observed setup + +# Current-source FG defaults. The published v0.1.0 SR ZIP has no FG/Reflex runtime payload. +# Saved [Rendering] FrameGeneration in the per-user AC7.ini can override the cold-start defaults. +# Insert offers live provider selection; changes do not require restart. +# RSF_FG_ENABLE=0 # no default FG; saved provider selection can still activate it +# RSF_FG_BACKEND=1 # 1 DLSS-G, 3 FSR3, 4 FSR4, 5 XeSS FG +# RSF_FG_MODE=1 # 0 Off, 1 fixed; cold-start default is fixed when FG is selected +# RSF_FG_GENERATED=1 # one generated frame per source = 2x; SDK maximum clamps it +# RSF_REFLEX_MODE=1 # 0 Off, 1 On, 2 Boost; active DLSS-G requires at least On +# RSF_FRAME_LIMIT_FPS=0 # requested rendered-frame limit before FG; 0 disables it +# RSF_REFLEX_LIMIT_US=0 # alternative microsecond interval when FPS override is zero +# RSF_FG_DEVELOPMENT=0 # production SDK by default +# RSF_FG_DEBUG=0 # bounded marker diagnostics +# RSF_REFLEX_ASYNC=0 # 1 restores the earlier overlapping sleep for comparison diff --git a/runtime/backends/README.md b/runtime/backends/README.md index 2709fbb..d111216 100644 --- a/runtime/backends/README.md +++ b/runtime/backends/README.md @@ -3,9 +3,9 @@ | Component | Purpose | Status | | --- | --- | --- | | `rsf-upscaler` | Rust quality, motion, and input-validation model | Unit-tested; no GPU calls | -| `dlss` | C++ Streamline adapter behind `rescaleframe/dlss.h` | Evaluates live AC7 frames | -| `fsr` | FFX DX12 SR provider with explicit FSR2/FSR3/FSR4 version selection | FSR2/FSR3 synthetic device-tested; FSR4 support queried and refusal tested; FG unavailable | -| `xess` | XeSS-SR DX12 provider | Synthetic device-tested; native D3D11, FG and latency unavailable | +| `dlss` | C++ Streamline adapter behind `rescaleframe/dlss.h` | D3D11/D3D12 SR, DLSS-G and Reflex/PCL implemented; recorded live AC7/Unity paths | +| `fsr` | FFX DX12 SR provider with explicit FSR2/FSR3/FSR4 version selection | FSR2/3/4 SR device evidence including guarded FSR4 INT8; FSR3/4 FG implemented with 2x maximum, exact hardware support queried | +| `xess` | XeSS-SR DX12 provider | DX12 SR and XeSS FG/XeLL implemented; native D3D11 SR unavailable; queried MFG limits | Without SDK headers, providers return `NOT_COMPILED`. With headers, `open` loads the runtime from an absolute configured directory, resolves entry points, creates the vendor context and checks @@ -13,13 +13,17 @@ support. Probe reports build capability without loading. Missing DLLs, unsupport failed evaluations remain different outcomes. Current AMD SDK 2.3.0 supplies actual FSR 2.3.4, 3.1.5 and hardware-dependent FSR4 providers; the family is never silently substituted. -The orchestrator owns shared resources and frame sequencing. Each backend owns its vendor context, capability queries, input requirements, and evaluation. Streamline stays in C++ so its versioned vendor types come from the official headers. No frame generation SDK runs on D3D11; the plan's presentation bridge is where every FG backend and the D3D12-only SR backends execute ([vendor contracts](../../docs/research/vendor-fg-contracts.md)). +The orchestrator owns shared resources and frame sequencing. Each backend owns its vendor context, capability queries, input requirements, and evaluation. Streamline stays in C++ so its versioned vendor types come from the official headers. No frame generation SDK runs on D3D11; the implemented D3D12 presentation/interop services host those paths ([vendor contracts](../../docs/research/vendor-fg-contracts.md)). ## Motion and frame data AC7's velocity texture is sparse: moving objects write values, while unwritten pixels carry a clear-value sentinel. UE4 stores velocity as `v * (0.499 * 0.5) + 32767/65535`. It needs decoding before submission; a scale alone cannot remove the bias. -The current DLSS path decodes this field and asks Streamline to resolve camera motion using depth and the engine's `ClipToPrevClip`. The engine already supplies the camera transform. Whether a reusable full-motion texture exists, and whether written vectors already include camera movement, still need controlled captures. +The native AC7 path decodes sparse velocity and resolves a dense motion field using device depth, +`ClipToPrevClip` and available cloud depth. Written-vector camera/jitter conventions and missing +independent object coverage are documented in [motion research](../../docs/research/ac7-motion-depth-20261004.md). +Earlier Streamline-only camera reconstruction below belongs to the diagnostic/compatibility path. +Camera reprojection cannot supply missing independent object motion. The Rust model defines motion-to-pixel and jitter conversions, plus an eight-sample base jitter sequence scaled by the output/input area ratio. The live C/C++ path does not use all those conversions. Reconciling their units, signs, and jitter treatment is an open [motion task](../../docs/implementation.md#ac7-motion-and-velocity-improvements). @@ -31,13 +35,20 @@ cargo test -p rsf-upscaler --locked The adapter loads `sl.interposer.dll` from the configured directory, uses manual hooking, accepts the existing D3D11 device, and queries support and render sizes. It supplies resource tags and per-frame constants before evaluation. NGX initialization uses the caller-supplied engine/project identity. -The recorded 7 September mission run evaluated 7,917 frames without refusal, rendering at 1024×576 and producing 2048×1152. Flight footage was reported free of obvious smearing. This exercises the path but does not establish motion conventions for every camera, object, or effect. See [capture evidence](../../docs/research/ac7-frame-capture.md). +The recorded 7 September mission run evaluated 7,917 frames without refusal, rendering at 1024×576 and producing 2048×1152. Flight footage was reported free of obvious smearing. This exercises the path but does not establish motion conventions for every camera, object, or effect. See [capture evidence](../../docs/research/ac7-frame-capture.md). -The accepted AC7 integration evaluates at the reconstruction gate and reinserts into the game pipeline; the Present path remains diagnostic. That DLSS acceptance does not validate FSR or XeSS in AC7. See [the backend switching evidence](../../docs/research/orchestrator-sr-switching.md). [The review](../../docs/review.md) records known code issues. +The accepted AC7 integration evaluates at the native reconstruction gate and reinserts before +post-processing. The optimized bridge and FSR4 INT8 SR correction later received user acceptance, +recorded in [interop research](../../docs/research/sr-interop-performance-20261002.md). +[Shared FG research](../../docs/research/shared-fg-20261004.md) records independent generation, +provider changes and final Unity acceptance. Those results do not establish AC7 FSR/XeSS FG, +FSR4 FG on the tested NVIDIA device, higher MFG counts, or measured latency reduction. +[Current status](../../docs/current-status.md) summarizes the limits; +[the September review](../../docs/review.md) retains historical findings. ## Wine development notes -The recorded support test used an RTX 4070 Laptop, driver 610.57, and the game's Proton prefix. It reported DLSS support and a 1024×576 Performance input for 2048×1152 output; the reported minimum driver was 512.15. +The recorded support test used an RTX 4070 Laptop, driver 610.57, and the game's Proton prefix. It reported DLSS support and a 1024×576 Performance input for 2048×1152 output; the reported minimum driver was 512.15. That setup needed DXVK, DXVK-NVAPI, vkd3d-proton, and the driver's NGX path. Even this D3D11 integration initialized a Streamline DX11-on-12 compute path. Missing D3D12 overrides caused a misleading unsupported result. diff --git a/runtime/graphics/README.md b/runtime/graphics/README.md index 7dbd763..7f42b6b 100644 --- a/runtime/graphics/README.md +++ b/runtime/graphics/README.md @@ -1,6 +1,6 @@ # Graphics helpers -D3D11 utilities shared by the research proxy and runtime. Game-specific view interpretation lives in `games/ac7`; vendor evaluation lives in `runtime/backends`. +D3D11 utilities shared by the carriers and runtime. Game-specific view interpretation lives in `games/ac7`; vendor evaluation lives in `runtime/backends`. | Module | Purpose | | --- | --- | @@ -8,21 +8,30 @@ D3D11 utilities shared by the research proxy and runtime. Game-specific view int | `resource_roles`, `frame_tap` | Classify resources, find candidate colour/depth/motion bindings, and describe the draws into a named target | | `resource_ref` | Retain and release COM resources across the C ABI | | `constant_buffer_read` | Stage and read a buffer with type/device checks | -| `motion_decode` | Convert biased velocity to float motion and preserve unwritten pixels | +| `motion_decode`, `motion_resolve` | Decode biased sparse velocity and resolve dense camera/object motion with validity/depth conventions | | `scene_promote` | Put a reconstructed scene back into the game's frame by promoting its composite, the interface layers the classifier names, and the chain between the tonemap and the interface composite, all to output resolution | | `depth_replay` | Replay the separate translucency layer's draws depth-only into an output-resolution copy of scene depth, for the backend's camera-motion resolve | | `d3d11_state` | Save everything the device context has bound, and put it back | | `texture_dump` | Read supported texture formats into diagnostic TGA/JSON files | | `present_blit` | Show reconstructed scene colour over the back buffer. Superseded by `fullscreen_pass` and kept only until the debug view moves across | -| `fullscreen_pass` | One triangle, four modes: copy, tonemap, premultiplied composite, and coverage as grey. The composite is `ui.rgb + (1 - ui.a) * dst`, which is what all three frame generation SDKs specify, so the picture we make and the picture a vendor makes cannot drift | +| `fullscreen_pass` | Fullscreen copy, tonemap, premultiplied composite and coverage modes; composite formula `ui.rgb + (1 - ui.a) * dst` does not by itself validate a game UI guide | | `ui_layer` | A double-buffered `R8G8B8A8_UNORM` surface at back-buffer extent, cleared to zero and never bound with a depth view, for interface draws to be diverted into | | `ui_identify` | Membership sets of pipeline objects held by address, with eviction before an address is reused, and Castagnoli hashes for naming a shader in a settings file | | `overlay_renderer`, `overlay_input` | Render egui meshes and collect window input | -The frame tap uses format and binding heuristics. It does not yet identify a verified AC7 shader, view, and frame. A retained texture can still be overwritten by the game; choose the consumption or copy point explicitly. +The frame tap is retained compatibility/diagnostic machinery using format and binding heuristics. +The default AC7 native plugin uses engine-owned views, graph roles and queued identity instead. A retained texture can still be overwritten by the game; choose the consumption or copy point explicitly. `rsf_frame_tap_watch_target` asks where the reconstruction goes back in. It names a render target and describes the next few draws into it: extent, the viewport actually in effect, the ordinal within the pass, indexed or not, and every pixel shader input with its slot. Pointed at the back buffer, the single texture that draw reads is the composite; pointed at that composite, the draw that reads scene colour is the tonemap. Neither fact is available from the captures here, because the exported action list records render-target bindings and not shader resource bindings. Each watch carries a draw budget: watching the back buffer holds a reference on it, which makes `ResizeBuffers` fail, so a permanent watch trades an answer for a later mode change that breaks. +## Historical compatibility mechanisms + +The extraction/promotion sections below describe the earlier D3D11 route and its limitations. +The accepted native AC7 integration sizes engine UI targets and routes bloom/exposure through its +SR graph; it does not rely on these heuristics as its default renderer. A widget target is not +inherently a premultiplied vendor FG UI guide. See [current status](../../docs/current-status.md) +and [the native refactor](../../docs/research/ac7-native-renderer-refactor-20261001.md). + ## Interface extraction, and why it is not the route it looked like The frame tap can divert a classified draw: retarget it to the UI layer through the original vtable @@ -40,7 +49,7 @@ process, and compositing it back at present skips that processing. So the mechanism stays and the insertion point changes: promote AC7's own interface layers and let the game composite them, which keeps the colour and the glow, and take the frame generation layer -from a promoted layer later, since it already holds premultiplied colour with coverage. See +from a promoted layer later, only after its alpha/effects conventions have been validated for that use. See [the extraction note](../../docs/research/ac7-ui-extraction.md) for the measurements and for the argument this reverses. diff --git a/runtime/orchestrator/README.md b/runtime/orchestrator/README.md index 535e0cd..10ea913 100644 --- a/runtime/orchestrator/README.md +++ b/runtime/orchestrator/README.md @@ -1,35 +1,39 @@ # Orchestrator -The reusable runtime owns backend sessions, selection, history continuity and graphics interop. -Game plugins own detection, hooks, renderer preparation, input conventions and reinsertion. -The SR APIs accept no game identifier, signature or engine address. +The reusable runtime owns plugin sessions, backend selection, history continuity, graphics interop, +latency services and presentation. Game plugins own detection, hooks, engine conventions and +reinsertion. Shared SR/FG APIs accept no game signature or private engine address. | Module | Purpose | | --- | --- | -| `sr_session` | C ABI over prepared D3D12 frames; transactional FSR2/FSR3/FSR4/XeSS selection and status | -| `sr_bridge` | Same-adapter D3D11/D3D12 copies, shared fences, resource states and synchronized SR output | -| `sr_legacy_adapter` | Private conversion from the existing pipeline into SDK records and prepared inputs | -| `dlss_pipeline` | Compatibility entry points for the working D3D11 path, including switching to the new backends | -| `frame_assembly` | Existing decoded-camera/resource validation; legacy camera type has a distinct name | -| `runtime` | DLL version entry point | +| `plugin_session` | Exact-build selection and prepare/start/quiesce/stop/status with game ABI 13 | +| `native_scene`, `native_window`, `native_cpu`, `render_links`, `frame_sequencer` | Associate engine CPU/view/submission/window events and reject mismatched or ambiguous frames | +| `native_sr`, `native_sr_d3d12`, `sr_session` | Prepare inputs and evaluate SR through D3D11/D3D12 routes | +| `sr_bridge`, `sr_legacy_adapter`, `dlss_pipeline` | Same-adapter shared transfers and compatibility SR entry points | +| `native_fg`, `native_fg_d3d12`, `fg_session`, `fg_providers`, `fg_leases`, `fg_choice` | Independent FG providers, drained live replacement, input retirement and saved provider choice | +| `native_composition`, `native_translucency` | Native composition and translucency inputs | +| `gpu_policy`, `unity_sr_host`, `overlay_d3d12` | Actual-adapter Auto policy, Unity hosting and shared overlay drawing | +| `runtime` | DLL version entry point; other services are exported by their own modules | -Direct sessions consume dense motion in previous-minus-current render pixels, device depth, -pre-tonemap scene color, jitter, exposure convention and matching SDK frame/view records. The -caller owns the resources and graphics thread. It must finish submitted D3D12 work before switching -or destroying a direct session. The bridge performs that synchronization for its D3D11 caller. +Direct SR sessions consume matching frame/view records, pre-tonemap colour, device depth, dense +previous-minus-current render-pixel motion, jitter and exposure conventions. Callers own resources +and the graphics thread, and must drain submitted GPU work before switching/destroying sessions. +The D3D11 bridge uses ordered shared fences and three command slots, with CPU waits at slot reuse +or retirement rather than a wait after every evaluation. Failure paths still preserve ordering. -A switch opens and plans the replacement before releasing the active backend. Failures retain the -old backend and are reported separately from evaluation failures. The next accepted frame resets -history after selection, gaps, refusals, view/session changes and resource-generation changes. -Separate paths and optional provider IDs let FSR SDK releases coexist; requested family and actual -provider version must agree. Native XeSS D3D11, FG and latency are not implemented here. +SR replacement is planned before releasing the active backend; refusal retains it. Accepted frames +reset history after switches, gaps, refusals and identity/resource changes. FSR family selection +must match the actual provider. Native XeSS D3D11 SR remains unimplemented; current XeSS SR uses DX12. -The Insert overlay switches the compatibility pipeline on its render thread. AC7 still starts DLSS -first. The carrier supplies its engine identity, world-unit scale, game hooks and output reinsertion. -The newer direct APIs can start on FSR or XeSS independently of DLSS. Moving plugin preparation, -tap ownership and settings into the public DLL/plugin lifecycle remains separate work. +The FG facade keeps engine buffers stable across provider replacement after a drained Present. +DLSS-G, FSR3/4 and XeSS are independent from SR. Unity Off/FSR1 can normalize FG inputs without +reconstructing colour. DLSS SR/FG share one Streamline owner with distinct Unity viewports. +Pacing follows the FG provider: Reflex for DLSS-G, XeLL for XeSS, no NVIDIA SR sleep for FSR/XeSS. +Requested settings, effective settings, SDK activity and presentation counters remain distinct. -The synchronous bridge has serialization overhead. FSR2/FSR3/XeSS have synthetic device evidence -on Intel UHD and RTX 4070 Laptop; the compatibility switch sequence also passed on the RTX. -FSR4 refusal is tested, but its evaluation requires compatible hardware. New AC7 backend image -quality and transition tests are pending. See [research and checks](../../docs/research/orchestrator-sr-switching.md). +AC7 links shared runtime objects into its DirectInput proxy; Unity loads the runtime DLL through +the version shim. Product bootstrap, standalone launching and WSGM IPC remain planned. +[Current status](../../docs/current-status.md) separates released SR, current source features and +recorded game/device acceptance. See [SR evidence](../../docs/research/orchestrator-sr-switching.md), +[bridge/FSR4 correction](../../docs/research/sr-interop-performance-20261002.md) and +[shared FG corrections](../../docs/research/shared-fg-20261004.md). diff --git a/sdk/game/README.md b/sdk/game/README.md index 1d7d9f1..fb2fdb4 100644 --- a/sdk/game/README.md +++ b/sdk/game/README.md @@ -1,9 +1,24 @@ # Game SDK -A small MIT-licensed C ABI between the orchestrator and game plugins. The current interface provides plugin metadata and executable recognition; renderer preparation and frame delivery are planned. +The MIT-licensed native C ABI joins the orchestrator and game plugins. Current game ABI is **13**, +defined in [game_api.h](include/rescaleframe/game_api.h). It includes executable recognition and +`prepare`, `start`, `quiesce`, `stop` and `status` hooks. [game_renderer.h](include/rescaleframe/game_renderer.h) +defines host services, CPU events and rendering callbacks; [game_frame.h](include/rescaleframe/game_frame.h) +defines frame/camera records with its own ABI version 1. Use fixed-width fields, `struct_size`, and ABI versions. Keep STL/Rust types and allocator ownership inside their DLLs. The header must compile as C and C++. -Recognition is separate from rendering support: AC7 currently reports `rendering_ready = 0` because the research proxy has not been integrated into this plugin lifecycle. +Call structures start with `struct_size` and use the version required by their contract. Embedded +metadata belongs to its enclosing ABI. Plugin strings are immutable and valid until DLL unload; +probe strings are borrowed for the call. Renderer callbacks carry opaque native resource pointers +with leases through the matching end callback. Frame identity alone does not prove Present ownership. -ABI 2 is specified in the [representation plan](../../docs/representation-plan.md): a `game_frame.h` beside this header with the frame record and the draw description, a hooks table the plugin fills (prepare, start, quiesce, stop, classify a draw, screen policy, apply render scale, fill camera), and host services the runtime provides. Textures never cross the SDK; the plugin says which draw is interface and what the camera is. `rendering_ready` flips only with the game run that proves the path. +The runtime selects and prepares the plugin before graphics activation. Quiesce stops producers; +queued work may still need to drain. Keep the DLL and host services alive when stop returns busy. +AC7 and Unity implement lifecycle/rendering paths; Project Wingman refuses preparation/start. +All three currently return `rendering_ready = 0`, even where individual deployed paths have user +acceptance. Recognition is separate from capability and validation. + +See [current status](../../docs/current-status.md) and [contract fixtures](../../tests/plugin_contract.cpp). +The ABI 2 sketches in the [representation plan](../../docs/representation-plan.md) are historical +design, superseded by these headers. diff --git a/ui/overlay/README.md b/ui/overlay/README.md index 079e47f..3589ceb 100644 --- a/ui/overlay/README.md +++ b/ui/overlay/README.md @@ -2,14 +2,26 @@ Rust/egui behind the C ABI in [overlay.h](include/rescaleframe/overlay.h). It produces meshes, texture updates, and settings intents. The C++ D3D11 renderer in `runtime/graphics` handles GPU work. -The DLL, renderer, and input hook are loaded and connected by `loader/proxy/overlay_host`, which builds the renderer against the presenting device and draws one frame per Present; F5 opens the panel and it is game-tested in AC7 with a mouse cursor. The planned Compare, Inspect, Capture, Performance, and Status views are in [the todo](../../docs/implementation.md#egui-development-and-validation-workflow). ABI 3, appended per the rule in the header, is specified in the [representation plan](../../docs/representation-plan.md): effective vendor, route and multiplier, UI layer and bridge state, and the intents to change them. +Current overlay ABI is **9**. AC7's proxy host and Unity's shared runtime host load the matched +Rust DLL; D3D11 and the D3D11-on-12 overlay route handle GPU drawing. **Insert** toggles the panel. +The AC7 startup hint lasts eight seconds and fades during the last second; opening Insert dismisses it. +The old F5 action and ABI 3 plan are historical. Planned inspection/capture views remain in +[the tracker](../../docs/implementation.md#egui-development-and-validation-workflow). | Layer | Files | Responsibility | | --- | --- | --- | | Safe core | `model.rs`, `panel.rs`, `overlay.rs` | Status, layout, input, intents, meshes | | C boundary | `abi.rs`, `ffi.rs` | ABI layouts, argument checks, panic handling, five exports | -The current panel shows enable/quality controls, actual input/output dimensions, input availability, motion/jitter status, evaluation/refusal counts, and backend errors. Unsupported controls show a reason. It does not measure latency or quality gains. +The panel exposes SR enable/backend/quality, independent FG provider and SDK-limited multiplier, +Reflex, frame-limit and Show FPS controls when the host supports them. It reports requested, +effective and active state plus refusals and input/evaluation facts. Live FG switching is requested +through a host capability bit; unsupported choices retain the provider. AC7 and Unity save the FG +provider in their own preference paths. Other settings may be session-only. + +The compact HUD separates rendered application FPS from SDK/DXGI aggregate presented FPS. It uses +observed counts, not a requested multiplier estimate. Neither count measures input latency or +physical scanout. [Current status](../../docs/current-status.md) records acceptance limits. ## Renderer contract @@ -31,6 +43,14 @@ cargo clippy -p rescaleframe-overlay --all-targets --locked -- -D warnings cargo fmt --all -- --check ``` -Tests exercise controls, mesh bounds, texture updates, and FFI argument/layout rules. Recorded builds include Linux and the Windows GNU DLL. Live game rendering, C/C++ calls into the DLL, and MSVC ABI verification remain unproven by these tests. The panic path has no deliberate panic test. - -ABI v1 has pointer position, button state, and wheel input, with no keyboard or controller events. Short clicks can be lost between frame samples; see [the review](../../docs/review.md). Real input, scrolling, focus recovery, and display scaling need in-game validation. +Rust tests exercise controls, independent SR/FG intent, multiplier mapping, mesh bounds, texture +updates and FFI layout/argument rules. Recorded Windows/MSVC fixtures load the real Rust DLL and +check Insert, hint/panel pixels and resize; native verification alone uses a panel fixture and does +not build the Rust release DLL. Actual game use and user acceptance are recorded separately in +[AC7](../../docs/research/ac7-consumer-session.md) and +[Unity/shared FG](../../docs/research/shared-fg-20261004.md). This audit adds no new device test. + +The input contract supplies pointer position, button state and wheel input, without keyboard text +or controller navigation. Short clicks between samples remain a review concern. Use mouse/drag +controls for frame limits; typed input is unavailable. The panic path has no deliberate panic test. +Broader focus, scrolling and display-scaling coverage remains separate validation.