github postmemetic/Duke-RT 0.4.0
Speed and smoke

2 days ago

Bumping the minor version up to 4 on this one, because the performance is now at a point where most users should be able to enjoy fast and consistent frame rates, finally. I had to dive into engine internals yet again. It was a pain in the ass, but on one of the less performant maps, I saw my CPU frame times drop from 28ms to 12ms! I also improved actual trace performance, as the CPU improvements resulted in GPU bottlenecking for the first time in a while. Perhaps even more important than steady state performance, however, is the batch of improvements I got in to reduce hitching and other frame pacing issues. The experience should now present far fewer stutters and hitches on appearance of fresh voxel variants during gameplay.

9

Don't worry though, I wouldn't just give you a bunch of free frames! This release also includes smoke, which is experimental and will take back a bunch of that GPU performance pretty much immediately. It also doesn't look exactly how I'd like, with various issues around smoke grid allocation (causes hard edges or cut-offs of some smoke), but I'll iterate on it over the next few releases. All forms of light affect the smoke and that part already looks pretty damn cool. There will be a big optimization pass on it once I think the visuals are really where I'd like them.

16

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
17

New stuff:

  • Removed REBLUR from denoiser options, as there might be some issue with the inputs I'm feeding it, resulting in extreme graininess
  • Now building map chunk identity more directly from engine for better caching and reuse
  • Stripped material payload CPU waits for new voxel variants out of the hot path
  • Added a whole smoke system with grid-based densitites, temperatures, buoyancy, albedo, etc.
    • Smoke includes a very simplistic fluid sim that will cause smoke to migrate based on heat and density over time
    • World-space radiance pooling that lets smoke take light from all sources
    • Temporal accumulation for radiance affecting smoke
    • Added a bunch of rules for smoke triggered by things like fire, rocket projectiles, explosions, etc
  • Added a map smoke editing system, so I could start adding atmospheric smoke emitters to maps
15

What's coming next:

  • Improved smoke visuals and optimizations
  • Water and other fluid surfaces (in planning phase, already have some cool ideas)
  • Complete overhaul of spatial partition management
    • The current approach mostly gets Build portal behavior working with BLAS/TLAS-driven ray acceleration
    • But it includes a bunch of band-aids and has some weird issues, like unlit areas from room-over-room encroachment in E1L1
    • And it precludes neat features like smooth ray transport between spaces above and below water, preventing refraction
    • I just want to fix it once and for all and stop fighting with it

Don't miss a new Duke-RT release

NewReleases is sending notifications on new releases.