Repository navigation
DUDE 0.9.6 — the Path Tracing tier
A ray-tracing improvement release on top of 0.9.5.
0.9.5 was about speed; 0.9.6 is about the light. The top Vulkan tier is now a full ray-traced Path Tracing path: direct lighting is sampled and denoised with ReSTIR instead of rasterised; a ReGIR light grid and a multi-bounce irradiance cache make that affordable, and the whole stack has been retuned updating the presets so the nightmare path traced should roughly run at 60FPS on a RTX 3080 card at 1440p.
Changed since 0.9.5
Ray-traced direct lighting — the new Path Tracing tier
- ReSTIR direct illumination. At the Path Tracing tier (Vulkan, top
dude_rtxsetting) the scene's lights are sampled as area lights through reservoir resampling (ReSTIR DI) and denoised with NRD ReLAX, replacing the rasterised light loop. Soft, correct direct shadows and per-light shading, with the lights that are actually visible in the frame always entering the sample set. - ReGIR light grid (
r_rtLightGrid*): a world-space grid builds a small per-cell importance set of lights each frame, so the DI gather samples a handful of relevant lights per pixel instead of the whole scene — the single biggest cost cut on the tier (gather time ≈ −68%). Looked up with a per-pixel half-cell jitter to hide the grid, and ranked by each light's own falloff. - Multi-bounce irradiance cache: a hashed world-space cache stores bounce irradiance and feeds additional light bounces back into the gather (and serves the GI path tail), so light carries further through a scene for little extra cost. History and resets are tracked in time, not frames, and cells reset only when the DI gradient says the light really changed - flickering lights blend instead of restarting.
- SH bump detail (
r_rtReStirDISH, on at the tier): the denoised direct light is re-modulated per texel against the surface bump/normal, bringing back the fine relief that a reduced-resolution denoised buffer would otherwise flatten. - Material fidelity in the gather: skin and flesh get subsurface warmth at the terminator, a full-resolution specular re-shade sharpens highlights, death-fade crossfades blend instead of popping to black, and surfaces with no diffuse stage read black (not white) albedo. Decals no longer pick up a direct-light glint, and per-stage vertex colour is honoured for terrain blends.
Ray-traced GI, AO and shadows
- GI bounce sampling moved to an R2 low-discrepancy sequence, replacing the interleaved gradient noise whose 45° lattice streaked diagonally through the denoiser. RTAO got the same treatment. Cleaner GI and AO with no extra cost.
- RT shadows now scale from Medium up to Nightmare instead of only the top tier, and the soft grate shadows take the shape of the shadow-map caster (no more cage-sphere approximation) and soften under the same blur law as the rest of the RT shadows. RT shadow-blur intensity and falloff were retuned softer.
- Irradiance cache and eye adaptation enable wherever RTGI runs; the cache path tail stays Path-Tracing-only.
A retuned, hand-balanced baseline
- The ReSTIR DI, RTGI, light-grid, irradiance-cache, RTAO and RT-shadow defaults were all rebaked from my own dialed-in configuration — the cache/quality/frame-time balance that the Path Tracing tier actually ships at. Fresh installs now start from that balance rather than the raw code defaults. The quality presets still own the per-tier enables and resolutions; only the preset-independent "free knobs" were moved.
- The DI debug / tuning surface in the in-game menu was reorganised into clear groups with every ReLAX and GI denoiser knob exposed, and Film Grain got its own labelled switch + knob block.
Load time
- Level sounds now decode in parallel across the image/worker threads instead of synchronously inside material parsing — another cut to cold level-load time, on every backend.
Fixes
- The monster spawn-in flash is toned down and reddened (it was a blinding white pop), in both Doom 3 and Resurrection of Evil.
- AO bake: eyewear is excluded from the bake and refused at runtime, and translucent surfaces no longer occlude the bake.
- GPU skinning: the seam weld is decoupled from lighting (crack-free and cut-free), with a toggle in the GPU Offload settings group.
Emissive Mode — experimental, shipping OFF (incomplete)
0.9.6 includes a large amount of in-progress work on an Emissive Mode for the Path Tracing tier - a system that turns a level's self-illuminated surfaces (light fixtures, screens, glowing materials) into real emitters that light the scene directly, with a per-material emitter table and an in-game emitter editor. This feature is not finished and ships disabled by default. It
is not wired into any quality preset and is gated behind its own cvars ("r_rtEmissiveLighting", "r_rtEmissiveTable", "r_rtEmissivePhysical"); leave them off for the intended 0.9.6 experience. It is included only so the work is in the open — treat it as a preview that may change or break, not a supported feature.
Performance notes
The Path Tracing tier is demanding — it is a full ray-traced lighting path. Use it on a capable Vulkan GPU, and lean on FSR2 sub-native upscaling (Graphics → Upscaling, from 0.9.5) and the per-tier resolution/checkerboard controls to hit your frame-time budget. The ReGIR light grid and the irradiance cache are what make the tier playable; both are on automatically at the tier. Measure on your own GPU with the in-game benchmark ("com_timeDemoRealTime 1" then "timeDemo demo1").
Known limitations
- The Path Tracing tier — ReSTIR DI, the ReGIR light grid, the irradiance cache and the SH bump detail — is Vulkan-only. The OpenGL renderers get the load-time win and the spawn-flash and AO-bake fixes, but none of the ray-traced lighting.
- Emissive Mode is incomplete and ships off (see above).
- The retuned defaults only reach fresh installs or a graphics-config reset — an existing config keeps your current values. Delete your graphics settings (or use the in-game reset) to pick up the new baseline.
Setup notes (same as 0.9.5)
If the Vulkan renderer won't start (the OpenGL renderers are unaffected), update or reinstall your GPU driver - the Vulkan driver (the ICD the loader dispatches to) ships with it, and no bundled loader can substitute for a missing or Vulkan-incapable one. On Windows, "vulkan-1.dll" comes from your GPU driver; DUDE deliberately does not ship it. On Linux a current loader is bundled in lib/ as a fallback for old distro loaders, but it still needs your driver's ICD.
Optional download: baked ambient-occlusion pack
dude-0.9.6-baked-ao.zip: precomputed per-material AO maps for subtle contact shading on world surfaces, props and weapons. The world-surface pack was re-baked this release with the bake fixes above (translucent surfaces no longer occlude); the prop and weapon packs are unchanged from 0.9.5. Extract into your Doom 3 directory the same way. Entirely optional, and unused at the Path Tracing tier (ray-traced GI/AO replace it there).
DUDE is GPLv3 — source at https://github.com/Inkub0/dude.