Update on Path-Traced Global Illumination Progress
Added 2018-08-26 09:49:54 +0000 UTCInspired by all the shiny new RTX stuff, I've been working more on SEUS PTGI and want to share my progress.
If you're a Gold patron, you've probably tested out SEUS PTGI E1, the first experimental version of SEUS with path-traced lighting. It was a good first attempt, but there were myriad problems that were visually unappealing and distracting.
SEUS PTGI E1 traced lighting at 1 sample-per-pixel at half-resolution for an effective 1/4 samples-per-pixel. You could argue that path-traced lighting is nearly useless at 1 spp, so it's a tremendous challenge to try to get a good result with 1/4th the samples. I think I did a decent job, but it still wasn't quite good enough to enjoy during real gameplay due to the artifacts, and I couldn't really get a much better result after a lot of effort.
So, I thought, if I'm going for path-traced GI that's enjoyable enough for real gameplay, I need to adjust my performance target and start from 1 spp instead. It's a super high-end feature, and limiting myself to what is acceptable performance for typical rendering doesn't make much sense, since the visual drawbacks were so severe and outweighed the visual benefits.
So, I improved performance of the path tracing itself slightly by making the volume data more spatially coherent and cache-friendly for the GPU. I also doubled the render distance of the path-traced lighting. Getting decent performance out of 1 spp at that point, I put a lot of work into the denoising filter. The filter now preserves harsh lighting transitions for better contact shadows while still eliminating a lot of noise. OptiFine just doubled the number of available composite render passes, so that allowed a lot of new options. I've also made it user-adjustable so the user can choose between better lighting details and more noise, or less noise but more aggressive blurring of the lighting and loss of details.
The result is something that runs at almost exactly half the frame rate as SEUS PTGI E1, but with 4x the samples-per-pixel, 2x the render distance, and it looks way more than 2x better, in my opinion. If the user wishes, they can still switch back to 1/4 spp tracing, but I think the performance impact is well-worth the visual improvement. If you want some of that performance back, you can decrease your render quality to 0.7x and still get a decent image thanks to TAA. Just don't expect a perfect 60 fps at 1080p unless you've got something better than a GTX 1080 (what I'm using and getting an average of 50 fps in typical scenes, sometimes dropping to 30 in really complex worlds).
I know it's hard to show in screenshots, but here's how it looks now.




My window size was 2560x1440 and Render Quality was set to 0.7x for an effective render resolution of 1792x1008--just shy of 1080p--for these screenshots. TAA isn't nearly as good as it is in the latest main versions of SEUS, since this is based on an old branch.
I'll put out a new version of SEUS PTGI soon with these improvements, and may upload a video of it as well.
Comments
That would be awesome
Danny Mountjoy
2020-08-11 17:05:46 +0000 UTCget vanilla normals renewed https://github.com/Poudingue/Vanilla-Normals-Renewed-1.12 it works with higher versions to
Ashton Erlandson
2019-07-01 00:36:27 +0000 UTCI think it broke water, though. Can't get any of my shaders to reflect light off the surface of it. Back to that dull vanilla water for now. :(
Jnutz
2018-10-19 08:58:21 +0000 UTCOptifine 1.13.1 released! Yey
KampfschaFF
2018-10-19 04:48:39 +0000 UTCCouldn't you do some modifications of the minecraft client itself to implement RT core support?
Descaii
2018-10-11 03:30:06 +0000 UTCThis is fantastic work.
Anorax
2018-08-29 01:31:32 +0000 UTCUnfortunately, we won't be able to leverage hardware acceleration with RT cores, since this is still just pixel shaders on the OpenGL API. Man, I wish we could!
Sonic Ether
2018-08-27 05:17:07 +0000 UTC