Skip to content

Replay DLSS-NR matched residual and GPU paper white onto dlss-neural-rendering - #14

Open
hhkbble wants to merge 4 commits into
Dagherbou:dlss-neural-renderingfrom
hhkbble:dlssnr-onto-upstream
Open

Replay DLSS-NR matched residual and GPU paper white onto dlss-neural-rendering#14
hhkbble wants to merge 4 commits into
Dagherbou:dlss-neural-renderingfrom
hhkbble:dlssnr-onto-upstream

Conversation

@hhkbble

@hhkbble hhkbble commented Sep 3, 2026

Copy link
Copy Markdown

Summary

  • Replay hhkbble matched-residual corrections and D3D12 GPU game-exposure paper white onto today's dlss-neural-rendering.
  • Rebuild both precompiled shader blobs from the composed HLSL; clang-format 20 the composed C++/H.
  • Keep origin dropdown/scan/Vulkan-CPU source 1; only D3D12 WhitePointSource == 1 uses a same-frame t4 PaperWhite() Load. Review leftovers: warm courier stays on source-1 enable; dead calib/ResolveWhitePoint removed.

Test plan

  • Both host fixtures (white_point_decision_fixture, exposure_fixture) PASS via cl /W4
  • D3D12 source 1 usable HDR: picture follows this-frame exposure; menu courier may lag
  • D3D12 hole + held E: trim * GameWhite, no t4 Load; switching to source 1 does not wipe the courier
  • Source 0 / 2 and native Vulkan source 1 stay CPU; Vulkan UseGameExposure remains 0
  • In-game spec §10 picture / Vulkan / bridge rows

hhkbble and others added 4 commits September 3, 2026 22:53
… onto dlss-neural-rendering.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@hhkbble
hhkbble marked this pull request as ready for review September 3, 2026 15:28
Dagherbou added a commit that referenced this pull request Sep 3, 2026
White-point source 1 (the game's own exposure) previously copied the game's
1x1 exposure texture on the GPU, read it back to the CPU (3-4 frame lag), and
computed the white point on the CPU. Now, on D3D12, the composition shader
samples that exposure directly at t4 and computes the white point in-shader
each frame (WhitePoint(): gExposurePreMul / exposure, gExposurePreMul =
preExposure * trim), removing the readback latency. The CPU meter/readback
path stays as the fallback the shader uses when the live sample is missing or
absurd, so gWhitePoint still carries a valid value.

- Bound at t4 (DispatchPass's InPrevEdit SRV slot -- previously unread; no
  root-sig change). Only WhitePoint() reads it, gated on gUseGameExposure.
- Vulkan is compiled out (#ifndef VK_MODE): no eighth descriptor, the live
  branch absent, gUseGameExposure never set -> Vk white point unchanged.
- Two trailing cbuffer/struct scalars (gUseGameExposure, gExposurePreMul),
  appended in lockstep (23 == 23, verified). Both shaders recompiled.

Adversarially reviewed CLEAN: layout parity walked field-by-field, Vulkan
proven byte-identical, default-identical when off, formula algebraically
equal to the CPU path, passthrough untouched, no new resource-state assumption.
Harvests the idea from hhkbble PR #14, reimplemented on our exposure/anchor path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant