New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New environment GI, HDDAGI #86007
New environment GI, HDDAGI #86007
Conversation
This is a new global illumination system meant to supersede SDFGI. Key advantages are: * Much, much faster. Significantly lower frame time, orders of magnitude faster cascade updates whem moving. * Generally higher quality (less arctifacting). * Much better occclusion (a _lot_ less light leaked). * Less memory usage. It is meant as a drop-in replacement. Should work as a replacement for SDFGI. Known issues: - [ ] For some reason gets DEVICE LOST on Intel GPUs. No idea why. - [ ] Sharp Reflections not always play good with TAA (wobbly). Future: - [ ] Dynamic object support. - [ ] High density mode (sub-probes). Please test and report issues!
This comment was marked as off-topic.
This comment was marked as off-topic.
with these big performance improvements are there plans for mobile renderer support? |
Statically, Looks much better, and the performance is nuts, However... I'm still getting this GI breaking issue like with SDFGI where moving objects have weird super distracting light transitions 2023-12-10.21-02-44.mp4Here's VoxelGI for comparison 64x64x64 low 2023-12-10.21-08-34.mp4And the old SDFGI at default settings 2023-12-10.21-09-40.mp4 |
I get a crash in every scene I open with this branch |
I found crashes if you have VoxelGI in scene active and turn off DynamicGI, also Volumetric fog with GI inject flashes white any time a cascade transition happens |
@jcostello what is your GPU? @mrjustaguy That is weird, the trilinear filter should work the same in old and new GI. |
Old and new GI have the same issue, just voxelgi doesn't |
@mrjustaguy Okay I guess I know how to fix this, but I somehow need to mark this object as static for the GI. Will have to talk to Clay on the best way to do this. |
Um, the metalic human is the thing moving, and exhibiting the issue, so not sure how that'd help.. |
Visual and performance comparison out of the box at 4K on a RTX 4090:
We can probably make HDDAGI look more vivid by increasing the default value of Bounce Feedback a bit. Given HDDAGI is energy-conserving, we should be able to get closer to a default of
Note that this property doesn't affect performance, FPS is fluctuating a bit due to me taking the screenshot. Making a baked VoxelGI node visible while DynamicGI is enabled will crash the engine:
The same occurs if you disable DynamicGI while a baked VoxelGI node is visible. Bright green voxels can occasionally appear in floor-wall intersections in godot-reflection. This is more noticeable at low cell sizes (using Min Cell Size = simplescreenrecorder-2023-12-10_23.52.23.mp4Moving the camera away from a cascade will occasionally cause black flickering artifacts to appear. These are most noticeable when using the DynamicGI Cascades debug draw mode: simplescreenrecorder-2023-12-10_23.14.28.mp4simplescreenrecorder-2023-12-10_23.18.21.mp4It seems changing Cascade Format to any value other than the default causes lighting within GI to be black, even though reflections still render:
Restarting the editor doesn't fix this. The project setting enum hint for HDDAGI Frames To Converge is broken: Selecting the last value spams errors, while selecting the second-to-last value crashes the engine:
I suggest renaming the HDDAGI project settings to DynamicGI, for consistency with the debug draw mode and Environment properties. Testing project: test_new_gi.zip Issues fixed in latest revision of this PRI get a crash when opening https://github.com/Calinou/godot-reflection with this branch (Linux, GeForce RTX 4090 with NVIDIA 545.29.06):
It renders a single frame before crashing: llvmpipe also crashes on the same project with the same backtrace, so this isn't a NVIDIA-specific issue. |
Tried on my own personal project with cory terrain and sdfgi now uses the occlusion setting and hdda all the probes,still performance need´s work with geometry and still cascades shift drop most of the fps, furthermore it seem´s that without moving in the first place dissabling and enabling it again it can get to similar sdfgi fps, but after moving it looses them , and i have to turn it off and on again . Also something i noticed was that the fps in the empty scene were lower than the older build i used. Furthermore, the context without them off in both scenes are the same 87 -90-100fps. |
Some comprehensive benchmarking in a controlled environment (same hardware config, exact same conditions, same scene, same viewpoint, minimal background processes, not in-editor...whatever could be considered a truly controlled comparison) is probably necessary to identify the performance gains. This shouldn't be lauded as a truly faster alternative than SDFGI until controlled tests can be referenced. If HDDAGI is noticeably faster in very trivial circumstances but equal or slower than SDFGI in most others, it wouldn't be right to promote it as faster overall. |
@WickedInsignia I will eventually when I'm done ironing out most bugs. |
@Saul2022 Its kind of pointless to do these kind of comparisons because you will get different values depending on different quality settings. I will do proper comparisons (and guidelines so you can do your own) when I am done. |
Sounds alright to me, i just tried doing them, because i honestly didn’t understand why this performance happen’s because as far as i tried, except in empty scene it didn’t improve. But it alright, you’re doing a great job. |
The simplest test you can do to compare performance is decrease the cell size in the settings and move the camera fast. Here is SDFGI when the camera moves, notice how FPS tank badly. sdfgi_motion.mp4In comparison HDDAGI, notice absolutely no difference when the camera moves: hddagi_motion.mp4Without doing anything, HDDAGI uses 2ms and SDFGI uses 3ms as base in this scene, so just sitting still you will not see much of a difference. This is why I said above, the difference is when you move, SDFGI becomes extremely taxing, while HDDAGI does not budge. |
Alright, got some seem`s like hddagi is faster , though still sadly my igpu can´t handle it at all. Video.sin.titulo.-.Screen.Recording.-.16_12_2023.18_34_52.webmsdfgi.mp4 |
@Saul2022 Min cell size of 1cm is a bit too small, that is going to update the whole thing, which is still going to hurt your GPU, the idea is that movement at reasonable cell sizes is fast. When using these GI methods you have to get used to seeing the probes of the first cascade on screen (with the debug probes option) to ensure they have a reasonable size to give you enough light detail. |
Actually I don't want to squash my working commits since there is a lot of interesting experimenting in there. Will close this PR and open a new one. |
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Superseded by #86267 |
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
sorry, not fimilar with pull request ? how would i download this feature to try on linux ? |
Usually you would go to 'Checks" above and then "Artifacts" on the top right to download a build but the builds for this PR have expired. No builds have been made for #86267 either, if you want to test this feature you'll have to build it yourself unless Juan builds another set of artifacts. |
oh okay , bummer, i will just wait it out, thanks for your help |
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
Supersedes godotengine#86007 This is a new global illumination system that is a full upgrade to SDFGI Key advantages are: * Significantly faster base frame time. * An order of magnitude faster updates (SDFGI drops frames very significantly when moving, as a consequence of having to redo its entire SDF even for a small motion). * Higher quality (less light leaks, properly energy conservation, much better reflections, others) * Occlusion remains the same as in SDFGI. I experimented with other systems (the one in DDGI) but everything has worse tradeoffs. It is meant as a drop-in replacement, so games using SDFGI should get HDDAGI transparently. TODO: - [ ] For some reason gets DEVICE LOST on Intel GPUs. Can´t figure out why. - [ ] Waiting for a PR fixing the normal buffer precision in order to fix some issues. TODO AFTER MERGING: - [ ] High density probes support. - [ ] Dynamic objects support. Known issues:
This is a new global illumination system meant to supersede SDFGI.
Key advantages are:
It is meant as a drop-in replacement. Should work as a replacement for SDFGI.
Known issues:
Future: