Skip to content

Compute shader voxel geometry computation and bug fixes

Latest

Choose a tag to compare

@postmemetic postmemetic released this 12 Jul 20:48

I spent a lot of time under the hood with this one, so most of the changes won't be visible in screenshots. The majority of the effort was to smooth out the work the engine does to prepare voxel geometry for rendering. The goal of this work was to make those runtime hitches/slowdowns less frequent and less severe. The new changes bring those worst case numbers way down, but there are some trade-offs, like monsters temporarily appearing wrong until the new geometry asynchronously resolves.

Ended up trying out a lot of different approaches that either didn't work or came with trade-offs that were too significant, which is what really slowed this release down. I did manage to get some other changes in, however! The big ones are:

  • Fixed that near constant light boiling problem when using the RELAX denoiser
  • Got self reflections back in metal and glass (broke this during the mirror updates a few minor revisions back)
  • Added in some voxel smoothing
TreeVoxelBevelSmooth50

How to install/run:

  1. Purchase and install Duke Nukem 3D: 20th Anniversary World Tour (or otherwise have it installed on your computer - you need a commercial version of Duke 3D to use with the Duke-RT engine fork)
  2. Download the .zip file in the assets section from this release
  3. Unzip Duke-RT to your computer
  4. Run launch-duke-rt.cmd in that folder
  5. Give it the path to your Duke 3D install (if it doesn't find it automatically)
  6. Let it grab the normal maps from Duke World Tour (if that's your Duke version, will still work without them)
  7. Let it open your browser to grab the voxels
  8. Download the voxels from that site
  9. Go back to the Duke-RT console window and hit enter
  10. Let it unpack the voxels into its own directory for you
  11. Proceed into the game
  12. Always run via launch-duke-rt.cmd in the future
47

New stuff (cumulative starting from 0.3.0:

  • Restored player reflections in metal and glass surfaces
  • Prevented frequent RELAX denoiser resets (was resulting in near constant light boiling)
  • Added voxel actor normal smoothing and procedural edge beveling
  • Fix for DRED and graphics API validation not turning on correctly
  • Fix for AMD buffer descriptor validation crashes
  • Octabrain projectile glow
  • Incremental loading system with clear budgets
  • Soft-shadow system for point (analytic) lights
  • Fixed bad path parsing when searching for Duke3D.GRP in invalid steam library paths
  • Enabled dropping duke3d_voxels.zip into Duke-RT during setup to skip the download
  • Added quick recovery on settings after crash, so you don't have to manually change everything
  • Episode 1, and 3 secret level lighting pass
  • Episode 3 main level lighting pass
    • New lights in dark spots
    • Some better emissives
  • Bloom system that makes light fixtures and emissive surfaces look much more natural
    • Turn it on and off in Display Options
    • Tweak detailed settings in advanced setting (Display Options>Render Options)
  • Real mirrors
    • Mirrors no longer use portals, but instead are replaced with proper reflective surfaces
    • Fixes issues around bad motion vectors, viewZ, and guides that caused blurring in mirrors
  • Improved loading system
    • Levels now finish loading properly before rendering first frame, improving choppy starts like E1L1
    • Big pass to improve load manifests and get enemies and some props loaded ahead of time
  • Episode 2 main level lighting pass
    • Added new lights throughout areas that had no visible light sources
    • Updated emissive behavior in some areas to make things sane and visually coherent
    • Fixed some busted materials
  • Settings profile system and simplified settings menus (advanced options still available)
  • Crash monitoring and settings recovery
  • Episode 1 re-light treatment
  • Added red glow effect to enemy laser fire
  • Fixed missing skyboxes on levels like E1L4 and E1L5
  • Fixed skyboxes looking deep-fried
  • Fixed flickering light effects from weapon impacts like the devastator
  • Reduced muzzle flash intensity and reach (cowards)
  • Even more launcher/installer simplification
46

What's coming up:

  • Fix for moving surface blurriness like sliding panels, rotating models, etc
  • Fix for black screen on launch and some crashes related to GPU memory pressure
  • Performance improvements
  • Volumetrics like weapon smoke
  • Better water