Skip to content

MPCVR-DLSS5-v1.2

Choose a tag to compare

@HumbleUser33 HumbleUser33 released this 18 Sep 14:08
· 250 commits to dlss5 since this release

MPC Video Renderer with DLSS 5 Neural Rendering — 1.2

Changes since 1.1.

New

  • Three network upscalers for the luma: FSRCNNX 8, FSRCNNX 16 and RAVU-zoom. They sit at the
    end of the main page's Upscaling list and enlarge the picture the way mpv's prescalers do.
    They are ordinary Direct3D 11 shaders: no NVIDIA DLL, no RTX card, and they work in the
    32-bit filter as well
    — any GPU at feature level 11.0, AMD and Intel included.
    • What they are worth, on seven 4K film frames reduced and enlarged again, as PSNR on the most
      detailed quarter of the picture, against Catmull-Rom:

      Method 1080p→4K 720p→4K 1080p→4K, compressed
      FSRCNNX 16 +1.80 dB +2.65 dB −0.33 dB
      FSRCNNX 8 +1.33 dB +2.36 dB −0.42 dB
      RAVU-zoom +1.26 dB +1.68 dB −0.02 dB
      Jinc2m −4.87 dB −1.65 dB −2.21 dB

      They restore edges close to the original's sharpness (0.96 to 0.97, where the original is 1.00
      and Catmull-Rom 0.90) without the halos and the aliasing Jinc2m adds at 1.13.

    • Cost on the luma, 1080p to 4K on an RTX 3050: RAVU-zoom 2.8 ms, FSRCNNX 8 4.6 ms,
      FSRCNNX 16 16.6 ms. Render ahead (below) keeps them on the audio clock.

    • The colour still comes from Catmull-Rom, which also covers the scale the networks leave and
      stands in wherever they cannot run — below 1.3×, on Direct3D 9, on older hardware, and while
      DLSS Super Resolution is enlarging the picture.

  • RAVU-zoom for the chroma. A fourth entry in Chroma upsampling brings Cb and Cr to the
    luma size with the same shader, each plane on its own and placed where the video's chroma siting
    puts it. On film none of the network methods beats Catmull-Rom on chroma — RAVU-zoom is about a
    decibel under it and a little better only on colour edges — so Catmull-Rom stays the default and
    this entry is there to be judged by eye. It runs on 4:2:0 through the shader video processor.
  • Defaults changed for a fresh installation: Upscaling is Jinc2m and Chroma upsampling
    Catmull-Rom. Settings already saved in the registry are left alone.
  • Render ahead covers the new upscalers too, and moved: it is now
    Render ahead to keep audio sync, at the bottom right of the Settings page, where the
    32-bit filter reaches it as well. Its saved value is kept.
  • The DLSS 5 page is now the DLSS page.
  • The lists say what they are for. Chroma upsampling, Upscaling and Downscaling are greyed when
    the hardware video processor leaves them nothing to do — it converts the formats ticked under
    Use for:, chroma included, and resizes too when Use for resizing is on. The greying follows
    what the renderer is really doing with the picture being played, so a file that falls back to the
    shaders (Dolby Vision, YCgCo, RGB on Nvidia) keeps its lists live.
  • Statistics (Ctrl+J): the processor line says converts chroma when the hardware video
    processor does the chroma itself, which is why no chroma upsampler is listed next to it; the
    Prescale (ms) line shows what the new upscalers cost.

Fixed

  • The statistics box no longer runs out of room. It was sized once, when the font was created,
    so the lines that come and go — DLSS, prescalers — ran past the grey background, and the green
    scrolling marker sat on the last line. The box now follows the text in both directions, marker
    included.
  • Upscaling stayed greyed after DLSS Super Resolution was switched off on the other page, until
    the properties window was closed. Both pages now follow each other while they are open.

For developers

  • dlssnr_harness.exe --tchroma measures the chroma upsamplers, and --tmpvport checks the
    filter's prescaler runner against the harness's, chroma siting included.
  • playback_test.exe --scalers [--vp] plays a still picture through each Upscaling and Chroma
    upsampling method and compares the results; --mainpage, --dlsspage and --click <id> show a
    property page of the built filter and capture it, which is how the greying is checked.
  • Shaders/mpv/mpv_shaders.py translates mpv user shaders to HLSL offline, through glslang and
    SPIRV-Cross — the route libplacebo itself takes on Direct3D 11.

All of it is described in README-DLSS5.md.

Requirements

  • The new upscalers: Direct3D 11 at feature level 11.0. Nothing else — no NVIDIA card, no DLL.
  • DLSS 5 NR and DLSS Super Resolution: an NVIDIA RTX GPU with a recent driver, Windows 10 1703 or
    later, and x64. They need nvngx_dlssnr.dll and nvngx_dlss.dll. Neither is included: they
    are NVIDIA's property and cannot be redistributed.

Upgrading from 1.1

  1. Close the player.
  2. Replace the files with the ones in this archive, keeping the dlss folder next to
    MpcVideoRenderer64.ax.
  3. Run Install_MPCVR_64.cmd again as administrator.

Your settings are kept, including render ahead, which changed page but not registry key.

New installation

  1. Close the player and extract the archive to a permanent folder. Keep the dlss folder next to
    MpcVideoRenderer64.ax: it holds a small nvngx.dll the filter needs.
  2. For DLSS, put nvngx_dlssnr.dll next to MpcVideoRenderer64.ax or in its dlss folder, or set
    its path on the DLSS page. Do the same with nvngx_dlss.dll for DLSS SR. The new upscalers need
    neither.
  3. Run Install_MPCVR_64.cmd as administrator.
  4. Select MPC Video Renderer as the player's video renderer and open its properties. The upscalers
    are at the end of the Upscaling list on the Settings page; DLSS 5 NR is on the DLSS page,
    where Enable turns it on and F12 toggles it during playback.

See README-DLSS5.md for how it works, every setting and the measurements.