For this release, I tweaked settings and did yet another perf pass. On my RTX 5070 Ti, I reclaimed a couple more ms per frame on GPU! I also did a bunch of work on smoke to improve the way it receives light as well as get it performing a lot better. There are now smoke settings with low, medium, high, and ultra profiles. Don't use ultra.
How to install/run:
- 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)
- Download the .zip file in the assets section from this release
- Unzip Duke-RT to your computer
- Run launch-duke-rt.cmd in that folder
- Give it the path to your Duke 3D install (if it doesn't find it automatically)
- Let it grab the normal maps from Duke World Tour (if that's your Duke version, will still work without them)
- Let it open your browser to grab the voxels
- Download the voxels from that site
- Go back to the Duke-RT console window and hit enter
- Let it unpack the voxels into its own directory for you
- Proceed into the game
- Always run via launch-duke-rt.cmd in the future
New stuff:
- Attempted a fix for black screen on transition to maps
- Fixed issue where voxel actors would flicker out of existence for a single frame while a voxel variant loaded (really evident on switches)
- Lighting pass
- Brightened up E1L2 opening
- Brightened up parts of E1L3 and added a light to the chapel
- Made E2L3 elevator foyer brighter
- Smokestravaganza
- Smoke now has different quality profiles that map to amount of work done per frame
- Gunshot muzzle smoke and impact smoke generate analytic carriers that get simplified lighting and don't exhaust world smoke grid volume
- World smoke gets compacted on look-away to avoid permanent work scaling
- Added cool looking smoke all over E1L1
- 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
What's coming next:
- More smoke and lighting tweaks across the three main episodes
- Water and other fluids
- 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
- I already have a branch where it's kinda working but the additional indirection in the ray tracer is screwing up perf