Skip to content
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

Closed
wants to merge 15 commits into from
Closed

New environment GI, HDDAGI #86007

wants to merge 15 commits into from

Conversation

reduz
Copy link
Member

@reduz reduz commented Dec 10, 2023

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 cascad
  • 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).
  • Darkening (occlusion) on some corners, just like SDFGI. I tried different techniques to see if any worked better. DDGI Octahedral VSM gets rid of them, but also leaks a lot more light, so I am unconvinced. Have other ideas to try, but I don't have infinite time :(
  • SDFGI spherical harmonics turned out to be buggy and not energy conserving. This makes GI look more saturated and have more light than in HDDAGI (which some people may appreciate more), but It's a bug 😢. Wondering how this can be compensated.
  • Still some further pending optimizations.

Future:

  • Dynamic object support.
  • High density mode (sub-probes).

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!
@Saul2022

This comment was marked as off-topic.

@jbromberg
Copy link

with these big performance improvements are there plans for mobile renderer support?

@mrjustaguy
Copy link
Contributor

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.mp4

Here's VoxelGI for comparison 64x64x64 low

2023-12-10.21-08-34.mp4

And the old SDFGI at default settings

2023-12-10.21-09-40.mp4

@jcostello
Copy link
Contributor

I get a crash in every scene I open with this branch

@mrjustaguy
Copy link
Contributor

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

@reduz
Copy link
Member Author

reduz commented Dec 10, 2023

@jcostello what is your GPU?

@mrjustaguy That is weird, the trilinear filter should work the same in old and new GI.
Can you share this scene? It shows the trilinear blending very clearly, maybe I can work on softening the transitions more.

@mrjustaguy
Copy link
Contributor

Old and new GI have the same issue, just voxelgi doesn't

@reduz
Copy link
Member Author

reduz commented Dec 10, 2023

@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.

@mrjustaguy
Copy link
Contributor

Um, the metalic human is the thing moving, and exhibiting the issue, so not sure how that'd help..

@Calinou
Copy link
Member

Calinou commented Dec 10, 2023

Visual and performance comparison out of the box at 4K on a RTX 4090:

SDFGI HDDAGI (this PR)
Screenshot_20231210_225152 Screenshot_20231210_225214

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 1.0 without risking issues with infinite feedback loops.

HDDAGI Bounce Feedback 0.75 HDDAGI Bounce Feedback 1.0
Screenshot_20231210_230548 Screenshot_20231210_230452

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:

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.dev.custom_build (db91139e2c6a1f1e15c1d259f0f078025b8bb9f9)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3e9a0) [0x7fcd22a4c9a0] (??:0)
[2] bin/godot.linuxbsd.editor.x86_64() [0x44fb6fc] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_rd/environment/gi.cpp:3301 (discriminator 1))
[3] bin/godot.linuxbsd.editor.x86_64() [0x37d9e00] (/home/hugo/Documents/Git/godotengine/godot/./core/object/ref_counted.h:222)
[4] bin/godot.linuxbsd.editor.x86_64() [0x37e4025] (/home/hugo/Documents/Git/godotengine/godot/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp:1978 (discriminator 2))
[5] bin/godot.linuxbsd.editor.x86_64() [0x3742c43] (/home/hugo/Documents/Git/godotengine/godot/./core/templates/paged_array.h:146)
[6] bin/godot.linuxbsd.editor.x86_64() [0x36267be] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_scene_cull.cpp:3343 (discriminator 1))
[7] bin/godot.linuxbsd.editor.x86_64() [0x362d12f] (/home/hugo/Documents/Git/godotengine/godot/./core/math/projection.cpp:935)
[8] bin/godot.linuxbsd.editor.x86_64() [0x35ee8a7] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:256)
[9] bin/godot.linuxbsd.editor.x86_64() [0x360aaa6] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:322)
[10] bin/godot.linuxbsd.editor.x86_64() [0x36ca75e] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:777)
[11] bin/godot.linuxbsd.editor.x86_64() [0x4a1f40] (/home/hugo/Documents/Git/godotengine/godot/core/config/engine.cpp:351)
[12] bin/godot.linuxbsd.editor.x86_64() [0x4a3a4a] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/os_linuxbsd.cpp:933 (discriminator 1))
[13] bin/godot.linuxbsd.editor.x86_64() [0x432a11] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/godot_linuxbsd.cpp:74)
[14] /lib64/libc.so.6(+0x2814a) [0x7fcd22a3614a] (??:0)
[15] /lib64/libc.so.6(__libc_start_main+0x8b) [0x7fcd22a3620b] (??:0)
[16] bin/godot.linuxbsd.editor.x86_64() [0x43e3c5] (??:?)
-- END OF BACKTRACE --
================================================================

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 = 0.05 here):

simplescreenrecorder-2023-12-10_23.52.23.mp4

Moving 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.mp4
simplescreenrecorder-2023-12-10_23.18.21.mp4

It seems changing Cascade Format to any value other than the default causes lighting within GI to be black, even though reflections still render:

Default cascade format Modified cascade format
Screenshot_20231210_225449 Screenshot_20231210_225457

Restarting the editor doesn't fix this.


The project setting enum hint for HDDAGI Frames To Converge is broken:

image

Selecting the last value spams errors, while selecting the second-to-last value crashes the engine:

================================================================
handle_crash: Program crashed with signal 8
Engine version: Godot Engine v4.3.dev.custom_build (db91139e2c6a1f1e15c1d259f0f078025b8bb9f9)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3e9a0) [0x7f4c82e489a0] (??:0)
[2] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x37ae84a] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_rd/environment/gi.cpp:1113)
[3] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x37e7e14] (/home/hugo/Documents/Git/godotengine/godot/./core/object/ref_counted.h:222)
[4] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x3742c43] (/home/hugo/Documents/Git/godotengine/godot/./core/templates/paged_array.h:146)
[5] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x36267be] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_scene_cull.cpp:3343 (discriminator 1))
[6] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x362d12f] (/home/hugo/Documents/Git/godotengine/godot/./core/math/projection.cpp:935)
[7] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x35ee8a7] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:256)
[8] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x360aaa6] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:322)
[9] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x36ca75e] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_viewport.cpp:777)
[10] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x4a1f40] (/home/hugo/Documents/Git/godotengine/godot/core/config/engine.cpp:351)
[11] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x4a3a4a] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/os_linuxbsd.cpp:933 (discriminator 1))
[12] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x432a11] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/godot_linuxbsd.cpp:74)
[13] /lib64/libc.so.6(+0x2814a) [0x7f4c82e3214a] (??:0)
[14] /lib64/libc.so.6(__libc_start_main+0x8b) [0x7f4c82e3220b] (??:0)
[15] /home/hugo/Documents/Git/godotengine/godot/bin/godot.linuxbsd.editor.x86_64() [0x43e3c5] (??:?)
-- END OF BACKTRACE --
================================================================

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 PR

I get a crash when opening https://github.com/Calinou/godot-reflection with this branch (Linux, GeForce RTX 4090 with NVIDIA 545.29.06):

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.dev.custom_build (db91139e2c6a1f1e15c1d259f0f078025b8bb9f9)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3e9a0) [0x7f26c1e939a0] (??:0)
[2] bin/godot.linuxbsd.editor.x86_64() [0x37c6661] (/home/hugo/Documents/Git/godotengine/godot/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp:641 (discriminator 1))
[3] bin/godot.linuxbsd.editor.x86_64() [0x37e2c95] (/home/hugo/Documents/Git/godotengine/godot/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp:1753)
[4] bin/godot.linuxbsd.editor.x86_64() [0x3742c43] (/home/hugo/Documents/Git/godotengine/godot/./core/templates/paged_array.h:146)
[5] bin/godot.linuxbsd.editor.x86_64() [0x36267be] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_scene_cull.cpp:3343 (discriminator 1))
[6] bin/godot.linuxbsd.editor.x86_64() [0x362afde] (/home/hugo/Documents/Git/godotengine/godot/./core/object/ref_counted.h:209)
[7] bin/godot.linuxbsd.editor.x86_64() [0x362b7f3] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/renderer_scene_cull.cpp:3496)
[8] bin/godot.linuxbsd.editor.x86_64() [0x36c9d55] (/home/hugo/Documents/Git/godotengine/godot/./servers/rendering/rendering_server_default.cpp:91)
[9] bin/godot.linuxbsd.editor.x86_64() [0x4a27f9] (/home/hugo/Documents/Git/godotengine/godot/core/config/engine.cpp:351)
[10] bin/godot.linuxbsd.editor.x86_64() [0x4a3a4a] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/os_linuxbsd.cpp:933 (discriminator 1))
[11] bin/godot.linuxbsd.editor.x86_64() [0x432a11] (/home/hugo/Documents/Git/godotengine/godot/platform/linuxbsd/godot_linuxbsd.cpp:74)
[12] /lib64/libc.so.6(+0x2814a) [0x7f26c1e7d14a] (??:0)
[13] /lib64/libc.so.6(__libc_start_main+0x8b) [0x7f26c1e7d20b] (??:0)
[14] bin/godot.linuxbsd.editor.x86_64() [0x43e3c5] (??:?)
-- END OF BACKTRACE --
================================================================
[1]    35229 IOT instruction (core dumped)  bin/godot.linuxbsd.editor.x86_64 --path ~/Documents/Godot/godot-reflection/

It renders a single frame before crashing:

Screenshot_20231210_222530 webp

llvmpipe also crashes on the same project with the same backtrace, so this isn't a NVIDIA-specific issue.

@Lasuch69
Copy link
Contributor

Works fine on my end.

Godot v4.3.dev unknown - Fedora Linux 38.20231205.0 (Silverblue) - Wayland - Vulkan (Forward+) - dedicated AMD Radeon RX 550 / 550 Series (RADV POLARIS12) () - AMD Ryzen 5 3400G with Radeon Vega Graphics (8 Threads)

image

@Saul2022
Copy link

Saul2022 commented Dec 16, 2023

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.

4 3

4 2

4 3empty

289577561-d145ab51-6012-4579-88eb-bf66d7de43b6

4 3moved

@WickedInsignia
Copy link

WickedInsignia commented Dec 16, 2023

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.
The performance differences throughout this thread are wildly varying.

This shouldn't be lauded as a truly faster alternative than SDFGI until controlled tests can be referenced.
Even the Blender foundation has controlled benchmark results produced before they announce major new features are faster than previous iterations in most circumstances.

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.

@reduz
Copy link
Member Author

reduz commented Dec 16, 2023

@WickedInsignia I will eventually when I'm done ironing out most bugs.

@reduz
Copy link
Member Author

reduz commented Dec 16, 2023

@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.

@Saul2022
Copy link

ñ. 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.

@reduz
Copy link
Member Author

reduz commented Dec 16, 2023

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.mp4

In comparison HDDAGI, notice absolutely no difference when the camera moves:

hddagi_motion.mp4

Without 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.

@Saul2022
Copy link

Saul2022 commented Dec 16, 2023

The simplest test you can do to compare performance is decrease the cell size in the settings and move the camera fast.

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.webm
sdfgi.mp4

@reduz
Copy link
Member Author

reduz commented Dec 16, 2023

@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.

@reduz
Copy link
Member Author

reduz commented Dec 17, 2023

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.

reduz added a commit to reduz/godot that referenced this pull request Dec 17, 2023
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:
@reduz reduz mentioned this pull request Dec 17, 2023
5 tasks
@reduz
Copy link
Member Author

reduz commented Dec 17, 2023

Superseded by #86267

@reduz reduz closed this Dec 17, 2023
@AThousandShips AThousandShips removed this from the 4.x milestone Dec 17, 2023
reduz added a commit to reduz/godot that referenced this pull request Dec 18, 2023
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:
reduz added a commit to reduz/godot that referenced this pull request Dec 19, 2023
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:
reduz added a commit to reduz/godot that referenced this pull request Dec 19, 2023
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:
@Voc007
Copy link

Voc007 commented Jan 5, 2024

sorry, not fimilar with pull request ? how would i download this feature to try on linux ?

@WickedInsignia
Copy link

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.

@Voc007
Copy link

Voc007 commented Jan 8, 2024

oh okay , bummer, i will just wait it out, thanks for your help

reduz added a commit to reduz/godot that referenced this pull request Jan 28, 2024
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:
reduz added a commit to reduz/godot that referenced this pull request Feb 14, 2024
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:
reduz added a commit to reduz/godot that referenced this pull request Feb 14, 2024
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:
reduz added a commit to reduz/godot that referenced this pull request Feb 24, 2024
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:
reduz added a commit to reduz/godot that referenced this pull request Mar 10, 2024
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:
fire pushed a commit to V-Sekai/godot that referenced this pull request Mar 31, 2024
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:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet