SEUS PTGI E9 Dev News 2 (Patreon)
Content
Hey everyone, sorry it's been a while since the last news post or update! Here's what's been going on.
So, I bought an AMD Radeon RX 580 GPU a few weeks ago and have been working on AMD GPU compatibility for SEUS PTGI E9. I was quite disappointed with the performance on this card, though, and after some investigation, I found the cause. Due to differences in hardware design, AMD GPUs tend to struggle with geometry shaders that have a lot of input geometry.
I utilize geometry shaders in order to allow for both voxelization for GI and sunlight shadows simultaneously. However, the work that was being done in this step wasn't much more than a simple copying of all geometry once, and so I started wondering if a different approach could be taken to avoid geometry shaders entirely.
After discussing it with the developer of OptiFine, the latest version of OptiFine for Minecraft 1.14.4 now has a new feature, which is the ability to tell OptiFine to render geometry in a certain stage more than once. Using this feature, I'm able to skip using geometry shaders entirely! This provides a very slight speedup on NVIDIA graphics cards, but offers huge speedups on the RX 580 (this should apply to other AMD cards as well)! At times I've seen a doubling of frame rate utilizing this new feature instead of geometry shaders!
So, I've been working on getting this new alternative approach to be as robust as the old geometry shaders approach, as well as generally working on AMD compatibility. There are a few visual bugs remaining that I can't seem to track down, but since it's been so long and they're relatively minor, I think I'll leave those for E10; I don't want to keep you guys waiting any longer!
More concerning about AMD compatibility is that I seem to encounter random crashes whenever SEUS PTGI's shaders are loaded. Sometimes I just have to try multiple times to successfully get in-game without a crash, and I can't seem to find the cause or figure out why it's just completely random. Has anyone else with an AMD GPU who has been testing SEUS PTGI out experienced this?
And of course, I've been finalizing the main new feature for E9, which is ray tracing that considers uniquely shaped blocks. Right now I've got all stair variants, all fence variants, all slab variants, and all door variants working, and I've got them working with reflection tracing as well as diffuse lighting tracing.
However, since I'm not using geometry shaders anymore, voxelization is a little more difficult to keep robust, so it's more sensitive to breaking when custom block models are used. I definitely don't like this limitation. I'll be working on seeing if I can get voxelization to be more robust to custom block models.
So, because E9 will use the new "instancing" feature of OptiFine instead of geometry shaders, it will only be compatible with Minecraft 1.14.4 until this feature is added to OptiFine for previous versions of Minecraft. Compatibility with 1.13 and 1.12 will come when this happens.
This update has turned out to be a really complicated one, thanks for hanging in there!