Skip to content
Voro
  1. Geometry
  2. Render

Reconstruct

Reconstruct takes a render from Realtime Trace or Path Trace and returns a cleaner picture. Method chooses how:

  • DLSS Ray Reconstruction, the default, reads all ten of the renderer’s images and keeps history from frame to frame. It can upscale the render by 1.5, 2 or 3 times, or clean it at its own size.
  • OptiX Denoiser cleans each frame on its own from the picture, its albedo and its normals. It keeps no history and never changes the size.
  • Off passes the renderer’s fresh_beauty through at its own size, so you can compare.

Use DLSS Ray Reconstruction for a picture in motion and whenever you want a bigger output than you render. Because OptiX keeps no history, nothing from an earlier frame can smear into the current one.

The quick way is Add Reconstruct, on the Output page of Realtime Trace or Path Trace. It places Reconstruct beside the renderer, wires beauty and sets Sizing Mode to Scale at 1x, so the output follows the render’s size through every resize. Pulse it again to select the Reconstruct that is already attached.

You can also place Reconstruct from the Geometry view of the Voro menu, under Render, and wire the renderer’s beauty into its beauty. That one wire is enough. Reconstruct takes the other nine guides from the same renderer, and a guide you wire yourself is kept. Check its Sizing Mode, which decides the output size.

Look at Reconstruct’s output, not the renderer’s beauty.

The ten inputs take the renderer’s ten outputs of the same names. They must all come from one frame of one Path Trace or Realtime Trace. Those two renderers attach frame information Reconstruct checks. Behind Surface Renderer or any other image source, Reconstruct waits for guides that never come or stops with an error.

Reconstruct reads the renderer’s fresh_beauty, not its finished beauty, and does its own resolve over time. The renderer’s Exposure reaches Reconstruct. Its Display Transform does not, and neither does Realtime Trace’s temporal resolve.

beauty is the result, a GPU float32 image with the bottom row first. It is linear until Reconstruct’s own Display Transform, which is ACES by default.

Reconstruct page:

  • Method picks DLSS Ray Reconstruction, OptiX Denoiser or Off. Sizing Mode, Upscale Factor, Output Resolution and Output Size Preset only apply to DLSS Ray Reconstruction, and grey out otherwise.
  • Sizing Mode Scale makes the output the render’s size times Upscale Factor: 1x, 1.5x, 2x or 3x. It follows the render when the render is resized.
  • Sizing Mode Output Resolution fixes the output at Output Resolution, which Output Size Preset fills in. It must have the render’s aspect ratio, or Reconstruct waits and says the aspect differs. Larger than the render upscales. The same size cleans and anti-aliases at the render’s size, which the status calls DLAA. Smaller runs DLAA at the render’s size and then averages it down.
  • Effective Size is read only. It shows the incoming render size, the output size and the ratio between them, or “Waiting for input frame”.
  • RR Model Preset picks the DLSS Ray Reconstruction model: D (Transformer), the default, E (Latest Transformer), or the SDK Default.
  • Reset starts the history over.
  • Display Transform applies ACES or leaves the output linear. It runs after reconstruction, and the history stays linear. Set it to Linear when the output feeds a compositing chain with its own view transform.

Guides page:

  • Motion Scale, Flip Motion X and Flip Motion Y change how DLSS Ray Reconstruction reads the motion guide. Path Trace and Realtime Trace publish motion the way Reconstruct expects, so leave them at their defaults for those renderers.

History starts over on a camera cut, when the render is resized, when you change Method, the output size, Sizing Mode or RR Model Preset, and on Reset.

Motion blur is the renderer’s. With Shutter set on Realtime Trace’s Lens page, Reconstruct blurs its own output by the same amount after reconstructing and upscaling, because the reconstruction needs the unblurred frame. Set Shutter on the renderer only.

Reconstruct waits, and keeps its last picture, while it cannot make a trustworthy one: until every guide has arrived, while a guide’s size differs from beauty’s, while the images come from different frames, and until the renderer’s camera is ready. An output size DLSS Ray Reconstruction cannot produce also makes it wait, with the reason in its status. Output sizes run from 16 to 8192 on each axis.

The DLSS runtime installs with Voro. If it is missing, choosing DLSS Ray Reconstruction stops with an error saying the runtime is unavailable, and the other two Methods still work.

Inputs

  • beauty image required
    RGBA
  • depth image required
    single channel
  • normal image required
    RGBA
  • albedo image required
    RGBA
  • motion image required
    2 channels
  • specular_albedo image required
    RGBA
  • specular_hit_distance image required
    single channel
  • fresh_beauty image required
    RGBA
  • view_depth image required
    single channel
  • motion_reset image required
    single channel

Outputs

  • beauty image required
    RGBAlinear

Reconstruct

Method (Method) Menu op('reconstruct').par.Method
Default:
0
Options:
DLSS Ray Reconstruction, OptiX Denoiser, Off
Output Width (Resolution1) Int op('reconstruct').par.Resolution1
Default:
3840
Range:
16 to 8192
Output Height (Resolution2) Int op('reconstruct').par.Resolution2
Default:
2160
Range:
16 to 8192
Output Size Preset (Preset) Menu op('reconstruct').par.Preset
Default:
0
Options:
Custom, HD 1280x720, Full HD 1920x1080, QHD 2560x1440, UHD 3840x2160, Square 1080x1080, Square 2048x2048, Portrait 1080x1920, Portrait UHD 2160x3840
Sizing Mode (Sizingmode) Menu op('reconstruct').par.Sizingmode
Default:
0
Options:
Output Resolution, Scale
RR Model Preset (Rrpreset) Menu op('reconstruct').par.Rrpreset
Default:
0
Options:
D (Transformer), E (Latest Transformer), SDK Default
Upscale Factor (Upscalefactor) Menu op('reconstruct').par.Upscalefactor
Default:
2
Options:
1x, 1.5x, 2x, 3x
Reset (Reset) Pulse op('reconstruct').par.Reset
Default:
None
Display Transform (Displaytransform) Menu op('reconstruct').par.Displaytransform
Default:
1
Options:
Linear, ACES

Guides

Motion Scale (Rrmotionscale) Float op('reconstruct').par.Rrmotionscale
Default:
1
Range:
0 to 4
Flip Motion X (Rrmotionflipx) Toggle op('reconstruct').par.Rrmotionflipx
Default:
Off
Options:
Off, On
Flip Motion Y (Rrmotionflipy) Toggle op('reconstruct').par.Rrmotionflipy
Default:
Off
Options:
Off, On