- The deliverable is a drop-in native
dxgi.dllproxy loaded by Bodycam during its normal Steam launch. Keep the install limited to the proxy,BodycamDLSSFG.yaml, runtime DLLs, and licenses. Do not add a launcher, shortcut, helper executable, service, scheduled task, resident process, ReShade, or separate configurator. - Force the real DLSS input path, NVIDIA DLSS Frame Generation, the configured 2x/3x/4x multiplier, and Reflex On + Boost independently of Bodycam's FSR/DLSS menu state. Smooth Motion and VR are out of scope for
main. - The Insert overlay is the user-facing configuration surface. Keep it compact and isolated from OptiScaler's general-purpose menu.
- Neural Rendering is optional and fail-open. Missing local NR files must not prevent DLSS, DLSSG, Reflex, or the base menu from working.
OptiScaler/is the vendored, directly buildable source tree. Bodycam-specific code lives beside the upstream code asOptiScaler/OptiScaler/Bodycam*.{cpp,h}; related integration points are edited in place. Do not recreate a generated source tree, patch pipeline, or source-overlay directory.build.ps1initializes the public dependency submodules and buildsOptiScaler/OptiScaler.slnas Release x64. The MSBuild project copies the finished proxy and default YAML tobin/.package.ps1downloads and verifies the pinned official Streamline archive, assembles the game-root ZIP, and optionally installs it into a Bodycam directory..build/is disposable download/staging output only; source must never live there.third_party/nvidia-dlss-nr/nvngx_dlssnr.dllandthird_party/renodx-dlss5/renodx-dlss5.addon64are exact ignored local inputs. Their directories and README files remain tracked.
- Keep all Bodycam-only behavior gated by the exact
Bodycam-Win64-Shipping.exeprocess name. - The NR compatibility host is not a general ReShade implementation. It exports only the ReShade API used by the RenoDX DLSS 5 add-on, loads both local NR files outside the loader lock, and advances event 74 once per real non-test Present.
- Do not introduce another DXGI/D3D12 wrapper. ReShade chaining previously caused
_nvngxaccess violations, invalid D3D12 command lists, recursion, and startup deadlocks. - Keep the Bodycam
NVSDK_NGX_D3D12_Shutdown/Shutdown1guard. Removing it reproduces an_nvngxaccess violation during Unreal shutdown while Streamline DLSSG is loaded. - Face censorship is controlled on the Unreal game thread through the native
ProcessEventhook and theCensor Facemesh components. Pattern-scan failure must disable only that toggle.
- Preserve the YAML keys
multiplier,neural_rendering,neural_preset,neural_style,neural_intensity, andface_censorship. Invalid or duplicate values fall back to defaults. Only the multiplier requires a restart; menu-controlled NR and censorship values persist immediately. - NVIDIA Streamline files come only from the official URL and SHA-256 in
versions.json. Do not substitute unrelated files from another game or SDK bundle. - Include Neural Rendering only when both ignored local files exist; a half-present pair is an error. Never generate a
.sha256sidecar. - Preserve third-party license files in the package and keep
THIRD_PARTY_NOTICES.mdaccurate.
This project intentionally has no unit-test suite or test harness. Do not add one. Use the smallest applicable set of real checks:
./build.ps1
./package.ps1 -Version dev
git diff --check- Build changes require a Release x64 build from
OptiScaler/OptiScaler.sln, no debug CRT dependency, and the tenReShade*compatibility exports when NR support changes. - Packaging changes require exact ZIP-path inspection and verification that the NR pair is either complete or absent.
- Runtime changes require one representative Bodycam run: responsive rendering, Steam overlay, expected DLSSG/Reflex/NR modules, working Insert menu, stable Present progression, and no newer Crash Reporter entry. Avoid repeating equivalent long runs once these invariants are established.
- Before committing, review the entire diff and
git status --short; remove dead helpers, stale fallbacks, temporary diagnostics, local absolute paths, logs, dumps, binaries, SDK archives, and generated outputs.
- Read
docs/agents/architecture.mdbefore changing source or layer ownership. - Read
docs/agents/runtime-lifecycle.mdbefore changing initialization, Present timing, or shutdown. - Read
docs/agents/neural-rendering-findings.mdbefore changing the NR host. - Read
docs/agents/dependencies.mdbefore updating or packaging runtimes. - Read
docs/agents/verification.mdbefore declaring a runtime change complete.