Skip to content

OptiScaler + DLSS Neural Rendering v0.2.0

Latest

Choose a tag to compare

@Dagherbou Dagherbou released this 03 Sep 19:49

OptiScaler + DLSSNR v0.2.0


This bundles a ton of improvements ranging from bugs and crash fixes, and UI improvements to additional color correction methods and improved quality for those who are willing to trade a bit of performance for higher sharpness and less noise.

The "replace" proxy are known to cause issues on certain games, the issues look like flashing lights or even no lights where there should be.
The color strength slider is supports now values way too high than frankly nobody should be using, but this could be used as an atmosphere so keeping it. Be aware it could cause flickering when set to high.

The next couple updates will come as patches, so quick fixes. This means they'll come fast, maybe multiple times day. More significant updates will still be worked on and released.

What is it ?

OptiScaler with an extra pass: NVIDIA's Neural Rendering model (DLSS5), run over the upscaler's output
to synthesise detail. NVIDIA ships no public integration for it, so it is driven directly. Nothing here
is officially supported and none of it is documented by NVIDIA.

v0.2.0 is a colour-and-control release. The big one is a new proxy that stops the model being starved
in highlights, so it actually has detail to enhance where the old curve handed it flat white. On top of
that: multi-point exposure calibration so the white point holds as the light changes, a frame-hold mode
for comparing settings honestly, and a set of native Vulkan crash fixes. It also lets you run the model
above native, so supersampling it, then averaging the result back down for a cleaner, less noisy pass. Further more, thanks to hhkbble's contribution, it now reads the game's own exposure live, so the white point no longer lags a scene change.

What you need

  • Newest drivers for your GPU (minimum of 616.56). For architectures older than Blackwell, use a
    modded nvngx_dlssnr.dll.
  • A game that already uses an upscaler. Neural Rendering now runs on all of them DLSS, FSR and XeSS.
    Vulkan is supported natively; DX11 runs through the bridge, which now supports DLSS directly.
  • nvngx_dlssnr.dll, supplied by you. See below.

Install

  1. Extract everything into the game folder — the one with the game's .exe. It is not always the root.
  2. Run setup_windows.bat and answer its questions. It renames OptiScaler.dll to whatever the game
    will load and writes an uninstaller.
  3. Put nvngx_dlssnr.dll in that same folder.
  4. Launch, open the OptiScaler overlay, and enable Neural Rendering.

You can bind a key to it under Keybinds, "Neural Rendering" — unbound by default — to flick the pass on
and off without opening the menu.

About the model DLL

nvngx_dlssnr.dll is not in this archive and will not be. It is NVIDIA's, not mine to redistribute, and
requests for it will not be answered. It comes from a driver package, and you need one copy in each game
folder. There is no shared or system-wide location.

The forwarder that ships here (nvngx.dll_dlssnr.dll) is not the model. It exists only because the model
refuses calls from any module whose path does not contain nvngx.dll, so the forwarder is named to
satisfy that check.

Credit

The colour composition — how the model's answer is brought back into your frame — is taken from RenoDX's
DLSS 5 addon by clshortfuse (github.com/clshortfuse/renodx), used under its MIT licence. It is their
design and the reason the colour holds together. The new reversible proxy in this release is also
adapted from RenoDX's later work. See Licenses/RenoDX_ATTRIBUTION.txt.

Two ideas for running the model below native resolution come from hhkbble, from their pull request
against this fork: an exact-area box-filter downsample (so less aliasing reaches the model) and the
matched residual (lay only the model's low-res difference on the frame's own full-res proxy, instead
of composing a small picture against a large one). Both are selectable under Enlargement.

Removing it

Run the uninstaller setup_windows.bat wrote, or delete the files you extracted. Setting Enabled=false
under [DlssNr] in OptiScaler.ini turns off the pass while leaving OptiScaler working normally.

Reporting problems

Include OptiScaler.log, your GPU and driver version, the game, and whether Ray Reconstruction and frame
generation were on. File logging is off by default — set LogToFile=true under [Log] in
OptiScaler.ini before capturing a log. Issues is for clear, reproducible bugs; if you are unsure, use
Discussions.


How the new features work

The reversible proxy (Colour → "Reversible proxy")

The model is never shown your frame directly. It is shown a tone-mapped proxy of it, and its answer is
transferred back. The old proxy (a soft knee) rolls highlights off so hard that a surface twice as bright
as white and one four times as bright arrive almost identical, so the model sees flat white and has
nothing to enhance there. The bright parts come back with light but no detail.

The reversible proxy uses an unclipped curve instead, where those same two land far apart, so the model
sees gradation everywhere and can actually work on it. Five settings:

  • Off (soft knee) — the previous behaviour, unchanged. Fine in soft-lit scenes, weak in bright ones.
  • Neutwo proxy + composed — the unclipped curve, then everything you already have (detail/colour
    strength, highlight guard, palette). It wins in bright scenes, but the curve compresses midtones too,
    so in soft-lit content it can be worse than Off, and it shifts the effective paper white (re-check
    paper white when you switch to it).
  • Neutwo proxy + replace — the model's answer straight back with none of that composition. A raw
    reference; gorgeous where there are no bright lights, but they flash in motion. A lever, not a setting.
  • Hybrid proxy + composed — the recommended one, and the best of both. Identity in the midtones
    (as good as Off there) and the unclipped roll only in the highlights, so it recovers the detail Off
    crushes without giving up the midtones Neutwo does. It barely shifts paper white.
  • Hybrid proxy + replace — the raw model like Replace, but on the hybrid curve, so the flashing is
    confined to genuinely bright highlights instead of everywhere. Most of Replace's detail, far more
    stable. If you love the Replace look but the flicker bothers you, this is the one.

Multi-point exposure anchoring (white point → "a buffer the scan found")

When the white point is driven by a scanned buffer, one calibration point is only correct near the
lighting where you set it, and drifts as the scene gets much brighter or darker. Now you can place
several: set paper white until a scene looks right and press Anchor, move to very different light and
do it again. The white point is interpolated between your points, so it holds across the whole range.
Click a row to fine-tune that point; × deletes it. One point behaves exactly as before, and the whole
table is saved per game.

Frame hold (Compare → "Hold frame")

Comparing two settings is impossible while the scene keeps moving. Hold frame freezes the frame the model
works on; while it is held, change paper white, the strengths, the reversible mode or the model preset,
and only that setting moves — the scene does not. Hide the menu and it stays held; untoggle to resume.
It cannot show upstream changes (DLSS/FSR/XeSS presets — the upscaler is not re-run on a held frame) or
freeze the game's own HUD and post-processing, and the white point holds its value while frozen.

While a frame is held you can also switch Apply the model off: the pass keeps running but outputs
the clean frame, so you see the same frozen frame with and without Neural Rendering. The cost readout
stays honest about it — "model running, edit hidden" — because the model is still doing its work.

Supersampling the model (Model resolution above 100%)

The model-resolution slider now goes past 100%. Above native the model runs supersampled — on a larger,
cleaner input — and its answer is averaged back down to your frame with a real downscaler (Lanczos and
friends, chosen in the dropdown that appears above 100%). A single-tap shrink would only alias the
model's detail back into noise; a proper area filter turns the extra resolution into less noise
instead. It is costly — the model's time grows with the area — so it is a quality lever for when you
have the headroom, capped at 2×. Works on DX12 and native Vulkan, and its downscaler is independent of
Output Scaling's, so you can supersample the model and downscale the whole frame at once.

Live exposure (white point → "the game's own exposure")

When the white point follows the game's exposure it used to arrive a few frames late — read back from
the GPU a beat behind the scene. It is now read inside the pass, the same frame, so a cut from dark to
bright no longer drags the white point behind it. DX12; if the exposure ever reads back wrong it falls
to the value it always used, so nothing regresses.


CHANGELOG (since v0.1.2)

New

  • Reversible proxy — a better proxy so the model sees highlight detail instead of flat white.
    Five modes (default Off): Off, Neutwo composed, Neutwo replace, Hybrid composed — the
    recommended best-of-both (soft-knee midtones + unclipped highlights) — and Hybrid replace (raw
    detail with the flashing confined to real highlights). (Colour section.)
  • Multi-point exposure anchoring — calibrate the scanned white point at several lighting
    conditions; it interpolates between them and holds across the range. Saved per game.
  • Frame hold — freeze the frame to A/B settings honestly, in the new Compare section. "Apply the
    model" can be switched off while held to see the same frozen frame with and without the pass.
  • Supersampling — run the model above native (Model resolution past 100%, up to 2×) and average
    its answer back down with a downscaler of your choice, for a cleaner, less noisy pass. DX12 and
    native Vulkan; the NR downscaler is independent of Output Scaling's, so both can run at once.
  • Live (zero-latency) exposure — when the white point follows the game's exposure it is now read
    in-pass every frame instead of a few frames late, so it tracks scene changes without lag. (DX12.)
  • Colour strength past 1× — push saturation beyond the model's own colour without it clipping into
    flat peaks; it rolls off at the edge of the gamut instead of blowing out.
  • Native-Vulkan exposure scan — "a buffer the scan found" now works on Vulkan too, not only
    DirectX 12, for Vulkan games that compute an exposure but never hand it to the upscaler. Opt-in and
    experimental, like the DirectX 12 scan.
  • White-point source shows availability in colour — the dropdown paints "the game's own exposure"
    and "a buffer the scan found" green when they have real data and orange when they don't, so the
    right source is obvious before you open it. Paper white stays neutral — it always works.

Improved

  • Neural Rendering runs on all upscalers — DLSS, FSR and XeSS — not only DLSS.
  • Native Vulkan supported; DX11 runs through a bridge that now does DLSS directly.
  • Colour composition reworked (RenoDX-derived), with detail/colour strength, a two-sided highlight
    guard, and hue kept through the knee.
  • Reduced-resolution model options: exact-area box downsample and matched residual (hhkbble's), under
    Enlargement.
  • A key can be bound to toggle Neural Rendering (Keybinds → "Neural Rendering").

Fixed

  • Native-Vulkan crash moving the model-resolution slider (device removal / ERR_GFX_STATE on
    RDR2, Enshrouded) — a mid-flight resize freed resources still in use; it now drains first.
  • Native-Vulkan crash on a device change — resources were freed on the old, already-destroyed
    device; they are now abandoned safely.
  • Device-removal risk from an output/depth barrier assumption — the pass assumed the output was a
    UAV; it now reads the real state, so an FSR/XeSS title with a per-game barrier override is safe.
  • A stray "Trim (x the scan)" control no longer shows for the scan source when nothing is anchored.
  • Exposure-scan use-after-free that could remove the device on Ray-Reconstruction + Streamline
    titles (e.g. Cyberpunk 2077): the scan pinned a driver-owned resource whose memory was freed at
    feature teardown. It now releases its references first.

Experimental / known limits and issues

  • Vulkan games: OptiScaler hooks reliably through the game's DLSS call. Set the in-game
    upscaler to DLSS and choose your real upscaler with VulkanUpscaler in the ini (e.g. ffx for
    FSR) — selecting the game's own FSR/XeSS often isn't intercepted on Vulkan. Also, the _12 (bridged)
    Vulkan backends run the pass on D3D12, so the exposure scan can't reach a Vulkan game's exposure
    there — use a native backend (ffx, dlss, xess) if you want the scan.
  • The reversible Replace mode flashes on bright lights in motion by design — use Composed.
  • The exposure scan is opt-in (off by default). It does not find an exposure in every game — some
    titles (e.g. Cyberpunk 2077) compute exposure in a form the scan cannot see, in which case the white
    point falls back to the paper-white slider. This is a limitation, not a fault: the scan is only a
    fallback for games that do not hand their exposure to the upscaler.
  • The debug views currently don't show much more than a white screen.