-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
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
Unreal Sun Temple Reference Scene #75440
Comments
@yosoyfreeman I didn't use shadows for the omni lights since they rack up performance cost on that light type (as they would in any engine tbh) and aren't practical in a game when no shadows will usually do. The Unreal version used no shadows for the omnis either, so I just followed their example. SDFGI shows skylight leaking between many of the meshes on the closest cascade (visible in your examples on the ceiling, ground and ledges), and then leaks profusely on cascades further away. There's also quite a bit of noise, with random bright splotches appearing on the larger walls that aren't properly averaged away. |
Hi @WickedInsignia , you are totally right about performance cost. I didn't change them cause i wanted to keep close to the original setup, but in the case of not using shadows for those crucial elements a really open spotlight would work better in this particular scene. Fog was used just to add volumetric detail that unreal have by default. It is not hiding nothing :) The patches on the first image and second on the ceiling are not leaking but light coming from the back windows. The scene also used 1 light probe for the first statue and nothing more. Anyway, i tweaked the settings and the results all close to perfect now, even the construction of the scene have paper thin walls which are usually not a great idea. fixing a bit the walls would fix the minor issues left. It looks really cool in movement too! That said, the current SDFGI implementation have two big problems:
Edit: Some pictures of the scene with this config:
|
Maybe it'd make sense to create a camera flyby animation and render out a sequence in the movie maker mode to benchmark the visual quality in motion? |
i never touched the new movie maker and i don't have a powerful pc to do a good 4K render, but if someone is willing to i can finish tweaking some things and share it. It is not perfect, as i said, demonstration scenes are created specifically to showcase the strong points of an engine and hide the weak ones. I would not use walls so thin, but i think is a fair use case tho show pros and cons. It may help devs to improve SDFGI. |
I could try and make a camera flyby animation - I did this for Liblast already so I have figured out the quirks of doing a good one. |
@yosoyfreeman You have the reflection probes turned on in both the screenshots and video, which mask SDFGI entirely. I noticed you've increased the range on the omni lights well beyond the original spec too, the specular can be seen through the walls. The lights in the original file are tuned to avoid that. If I increase the omni light ranges similar to what you have, the leaks and splotches persist: |
If anyone intends to test this scene with SDFGI, please turn the reflection probes off OR set their Ambient Mode to disabled. SDFGI has no effect with them on. |
I tested the scene as well. I can confirm that SDFGI and VoxelGI are completetly unusables in this scene. LightmapGI with ReflectionProbes works really well. I put it to x4 in each Mesh and the leaks are reduced a lot. x8 should fix them all. In the future this will be posible globally in the Lightmap itself. Lightmap still the best GI solution and should be improved a bit more (bug fixed and feature completed) |
My experiences too. Unfortunately larger texel densities bloat the file sizes. x8 would fix everything, but it's also a huge memory resource and not practical when it's just being used for GI. UE5's Lumen handles this scene just fine, but that's expected and it's also much heavier than SDFGI. It goes to show that an SDFGI-style solution can work though. |
Just to clarify so people don't get confused: Reflection probes will not disable SDFGI effect if you set up them correctly as stated in the documentation. In this case, the ambient light parameter must be disabled so they only contribute as a static source of reflections to improve SDFGI. Edit: First image without reflection probes, second one with them. Both using SDFGI. The default normal and probe bias prioritize slopes over leaking. As described in the documentation, lower values will produce less leaking. Default values vs my values. The default ones produces way more leaking. Look at the center pillar, there is a gap with the defaults, not with my settings. |
@yosoyfreeman I've amended my comments to reflect this ambient mode exception, but that's not the way your second set of screenshots above were set up. There doesn't seem to be any SDFGI influence in those shots or the video at all. This is a reference scene where SDFGI objectively has issues. It's not helpful to spam screenshots where the probes are set to nullify SDFGI entirely among a multitude of changes (sun direction, skybox and light range) and then suggest you fixed it. That defeats the purpose of this body of work. |
Hi @WickedInsignia, you were right about the radius of the lights which were basically exploding light around everywhere. You are also correct about the fact that SDFGI have issues as I myself stated in my showcases. I also reduced the intensity and used 2 cascades if i remember well to force at least 30-35 meters on the first cascade and used physical blocker to prevent leaking. The results, tho, have low frequency in terms of detail. I'm not spamming anything. I'm just sharing my results the same way you did. I been experimenting with this tools since the firsts pre alphas and just pointed about Reflection probes and bias correct usage. I never claimed to have fixed nothing and already explained that didn't make any change that hides nothing. I just moved the sun to create a more balanced composition of the scene. The skybox is untouched. But anyway, here is the project with your default sun and lights settings with the exception of the two big lights that i kept shadows on. I think we can both agree that the results are still way nicer than you described as unusable. Grabacion.de.pantalla.desde.2023-03-30.14-14-56_compressed.1.mp4As i understood, (Correct me if I'm wrong) the purpose of this body of work is to test the behaviour and limitations of lighting methods in 3D scenes, especially complex ones like this in a way than can be used to improve them in the future. Now, for us to being able to do that we need to push for the limits of the technology. Is with that purpose that i took the time to do my test and share the results and the tweaks needed to push the SDFGI further and find the break point. As you may understand, i don't have an interest in hiding problems that affect us all. Here is the project so anybody can look at it or do whatever they feel with it: Download the scene: https://mega.nz/file/K50lxDSI#yy0R5pNMlmOITC_ykDicevnzGkmHagw5QVdvgSGENYU Note: SSIL randomly generates artifacts. I have to investigate that deeper. Quick approach to the scene: use the SDFGI as a low frecuency GI detail and a reduced range and doubled intensity of SSIL to simulate high frequency detail. Some reflection probes were added to the scene (adding more accurate ones would improve the results ). Used Volumetric fog to simulate a subtle light scattering. Mayor problems: While trying to get more detailed, high frequency detail from SDFGI the lack of control make it noise and unstable. The extra detail ends up reading as noise as the camera moves. This is inherent to the design of the feature: The cascade number, the first cascade and the maximum distance are tied. My personal recommendation: The problem here is one of usability. I can guess that those settings being tied was a design choice to keep a complex system simple and get to the "One click solution" Godot philosophy, but this causes serious problems in practice. Just as one would do with shadows, you need to be able to tweak resolution and cascade distance independently. You don't want to gain detail when you are at literal centimeters away from a surface. You want to maintain most of the detail on the first cascades and exponentially reduce it far away. Cascades should be configurable manually and detail and distance should not be tied. |
Most of that has already been explored with bug reports and proposals. If you want to help, please pursue reports that address issues that haven’t been identified. This is becoming patronising and I kindly ask you to please give it a rest. |
Sure! I already explained what it needed to. |
Apologies for the abrasive turn this took, everyone. Just to explain in more depth:
Thanks for your patience and please enjoy playing around with this project! |
Thanks for clearing it up. I think what took place was a misunderstanding. Possibly a language barrier issue as well? We all want to improve Godot :) If it'd be useful for evaluating the results in motion I could contribute a camera flyby feature for creating reproducible, easily comparable footage and evaluating changes that will be done to SDFGI. Maybe a few static cameras and a script to export screenshots from them would be useful as well? Let me know if I can be of help. |
A flyby cam would be great! So many of SDFGI's issues are talked about but can't be shown adequately with stills. Any tools to better help evaluate and provide records of issues/bugs/whatever are absolutely valuable. |
I do believe there was miscommunication there with YoSoy. I could've done a better job in explaining the goals of this project and accepting contributions outside of those goals, even if the reliability was a little shaky. You're completely right, everyone's here to support Godot and has good intent. |
Well, it just so happens that me and Yo Soy Freeman are working together on a game made with Godot, so I'm pretty sure that's going to be the case :) |
Hi there @WickedInsignia I'm totally sure this must been a misunderstanding. Just to clarify, i was not implying in any way that you did a bad work. In fact i praised it heavily and made sure to credit your awesome contribution in mastodon where i have my little community and any other place i published my results. I'm being totally sincere about that and I'm sorry i don't understand how i transmitted you the opposite feeling. My intention was not to nullify your claims. I was just trying to show that even when using it following strictly the recommendations made by the dev's (Mostly Reduzio in this case) about trying to compensate leaking with bigger walls do NOT works as it should. I believe that lots of the time the dev's in charge of a specific technology don't have too much time sometimes, so i wanted to avoid the situation in which they see it quickly, say that we try thicker walls and we have to wait until the next time they see it. I'm very sincere too when i say being misleading or hiding problems was not my intention as the entirety of my Godot contributions are based on finding and reporting problems and suggesting design changes for usability. What i do is finding problems, not hide them. Let me say again to be extremely clear: Thanks for your work, for your time and for contributing to this community. Misunderstandings happens, I myself find human communication a complex task sometimes so i probably responsible in that part. No hard feelings at all from me and i hope we can keep working for the good of us all. Hope this is more clear now, cause i think you did really useful work here and making you feel like i don't find value there is something that saddens me at a personal level. |
No worries at all @yosoyfreeman and thanks for explaining all of that. I'll admit I was a little fizzed out yesterday, and none of that should have fallen on you. I felt something had gone awry when reading this all back, and I apologize. I did mean it yesterday when I said the most productive course of action would be to follow up with bug reports and proposals though! I've been pursuing a lot of them myself. Remember to check if they haven't already been reported (I'm sure you'd be vigilant enough to ensure this already) and I don't think the exhaustive testing/validating you're keen to do would be wasted. |
I see, i been working hard on the game with Unfa and didn't knew they were proposals already. I thought this was the test project to making them so i think that is the point in which we didn't match. Happy to solve this in a good manner and sorry again for making you feel bad. I'll try to be less machine like cause i think i sometimes get read as sarcastic when I'm not haha Thank you again in general. |
Hi Folks, I thought I could help out by creating a comparison video for UE4/Godot. I rendered the same fly through in each. Github's file size limit is only 10MB, so please excuse the encoding artifacts. The only change I made to the Godot project was to enable MSAA 8x. I'm happy to make more comparison videos if there is something specific you want to look at or if there are other Godot settings to tweak. unreal_godot_comparison.mp4 |
Really nice work. It helps a lot. If is not much to ask can you do the inverse path so we can see the other part of each render? Also a fiew splitview images for each engine will be apreciated |
Besides quality-of-life and workflow related critiques, which are well addressed in @WickedInsignia's proposals, the lightmapper currently still suffers from light leakage ( #87815), and denoising often leads to seams/artifacts. These issues are particularly prevalent with modular environments, as shown by earlier comments in this post too, and in my opinion these are the biggest issues with the lightmapper at the moment. Once those issues are fixed, I'm confident achieving high-fidelity arch-viz type environments would be entirely feasible, those require very clean high resolution light bakes. Non ideal workflows can be lived with (though, don't get me wrong, they are hugely important to resolve), but unreasonable light-leakage or denoising artifacts will actively prevent a clean result from being achievable, and it isn't often possible, let alone ideal, for an artist to work around those issues. |
#87815 and the issue with the create image method to allow to bake bigger levels should be fixed to have a decent lightmapper to work with |
The modular one is a really bad issue. I'm forced to design my level in Blender, then Boolean or re-create areas that are made of modular units as one big mesh to avoid seams between tiles. The developer of Bakery for Unity said he was developing a light baker for Godot, not sure what the progress is on that, though. |
Where did you read that? |
He mentioned it on his Twitter: https://twitter.com/guycalledfrank/status/1701992867973997020 Also it's on his Discord devlog, but no new updates beyond what was provided. |
That isn't confirmation that he is working on it, just looking into it. Curbing some expectations before we all get too excited ;) In short it's not guaranteed. A robust in-engine solution would be best, rather than relying on a possible paid solution. |
Seems that he is not longer working on it |
Even baking in Blender has seam issues when using the denoiser. And you wouldn't get light probes in the game anyway if you did that. Maybe it'd be best to migrate to another engine for now if we really need functional light baking? |
There's a (supposedly quite capable) lightmapping addon available for Blender HERE. |
Unity has problems with seams too. seam stitching I also believe that baking lightprobes shoud be a separate process from baking lightmaps, especially when projects like LightmapProbeGrid exists. |
To my understanding most lightmappers experience this problem. Baked GI is still a reliable and important technique used commonly today, it's disappointing that more care hasn't been taken with Godot's solution and those capable of improving it have focused elsewhere on more experimental techniques. I hope the discussion here isn't dismissed by core team members as some sort of entitlement. Features which could actually help artists and have been successfully implemented elsewhere for over two decades are being neglected. I strongly believe these should have been developed to a robust state before prioritizing other unproven techniques (one of which is being deprecated and the other replaced). |
I also would like to chip in to vouch for the light-mapper getting some more love before other solutions are prioritized. It's currently in a state where it's not feasible to get reliable and solid results due to artifacts, inconsistencies between separated geometry, leakage, among issues shown in this thread. Building the light-mapper into a robust GI solution seems to me to be the most straightforward way right now to push the envelope of 3D graphics in Godot. It would be hugely beneficial for both high-end graphics and mobile platforms, thus affecting a very wide range of users and projects. Dynamic solutions such as HDDAGI are very very nice to have, impressive, and definitely useful in many scenarios, but ultimately they come with visual and performance tradeoffs for which there is no viable alternative at the moment. We shouldn't forget that so many games over the years, small and large alike, have utilized baked GI and static lighting to get the most bang-for-buck. I understand that with tech like RTGI and Lumen having become popular it is very enticing to offer a dynamic GI counterpart for these in Godot, but baked GI remains extremely relevant. Taking the visual fidelity it offers for the performance cost in mind, it still takes the cake. |
There is some hope: https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+lightmapgi There should be some way to support the people who are working on these topics. Unfortunately, looking at godot-proposals it looks like the majority of users are voting for another way to expand gdscript. My guess is that there are still too many people using Godot as a platform to learn programming rather than a game development engine. |
Features related to the art pipeline in Godot seem to be sidelined for a few reasons:
These are difficult points to work around as an art-focused contributor and have led to some unfortunate headbutting. Some are just the nature of things, while some others could certainly be acknowledged and improved. |
But there are also cases such as this: #62987
1 approval |
It's important to note that one feature being in development doesn't necessarily negate another feature also being in development. Additionally, GDScript-land is a different territory of the engine and would likely have different contributors working on it than those working on 3D rendering features like the lightmapper. Regarding @WickedInsignia's points, I agree that particularly on the art-side of the engine, from a UX and workflow standpoint it does seem that certain features lacked feedback from people who have a decent amount of experience with using those (or similar) features and the workflows that surround them. As an artist at least this seems very noticeable. It seems that if there was a better feedback loop with experienced users in the early stages of a feature, a lot of time could potentially be saved down the line. This is still tricky though, because reaching unanimity on things is generally impossible. In Blender this early feedback loop is tackled for a large part through their dogfooding based development model in collaboration with the Blender Studio, so they gain direct feedback from experienced individuals. While I know there was a dogfooding initiative started through W4games last year, besides the announcement article I haven't been successful in finding any other news or developments regarding this. |
It should also be noted that the efforts so far seem to be basic 2D games well within the scope of what Godot can easily achieve. A driving force behind Blender's dogfooding projects is that they push the engine and aim for quality, while keeping the scope manageable for a small team. |
IDK what should be a good step to follow to catapult this. Maybe to create a robust proposal for lightmap workflow and try to get as many attention as posible. Tho Godot bureaucracy makes things harder to implemement. Take for example the issue with #54679 The fix for issue has been spotted but the "no one wants to fix it" argument was raised. Some road to implement and fix things should be implemented in things like a lightmapper that has to work from A to Z |
Lots of work has been done on lightmaps for Godot 4.3! There certainly is lots more to do, and it'd be great if it improved faster, but support for lightmaps hasn't been totally stagnant.
I don't know if it fixes that issue or not, but the title of that issue is "Vulkan: Crash when baking lightmaps with LightmapGI if the resulting image is too large (due to CowData using 32-bit ints)", and in Godot 4.3 |
Thanks for the clarification here, it's easy to forget that implementing features usually isn't as simple as "just add the thing." Sometimes Godot's backend simply isn't capable of it and a bunch of different improvements need to be made before that feature is viable. There could be 5 things that need to happen before lightmapping can improve, but we're sort of left here guessing whether it's technical limitations or simply mismanagement. Contributors aren't left with many options when calls to improve communication are dismissed entirely by lead devs. |
This discussion shares many similarities with the Godot Jolt thread. On one hand, Godot 4 was launched with GDScript and the production workflow in the best possible stage. On the other hand, the physics engine and rendering are currently underperforming. Contributors are doing their best with the time they have, but despite the influx of funds, Juan continues to take on the work himself instead of hiring experts. |
That's not quite true, as several experts are sponsored by W4Games. The bigger problem is the time it takes for PR to be accepted for master. At the moment we have over 2366 PRs of which 2080 are awaiting review. Some of them have been hanging around for several years and certainly their authors have long since lost interest in them. |
He's publicly expressed a desire to take a crack at lightmapping. My experience suggests any intent to hire someone would be shelved as a result.
That doesn't negate AttackButton's point. What they hire people to work on will almost certainly take Juan's desires into account as co-founder and co-CEO.
This is a frustratingly demotivating problem. Without any form of public-facing prioritization or roadmapping (sensing a theme yet?) it's difficult to gauge just what is being prioritized, where work is most needed, and when one can expect their work to be merged. |
Okay, let the Community Manager intercept here. We will close this thread, as it (once again) derails too much from the original post, but do not take that as us squashing conversations that are certainly important to have - this simply is not the right space for them. That being said, to address a few basic things directly: you will be happy to hear that internally, we are currently re-structuring the entire production process as you know it. Not only to speed up development and create feedback pipelines, but also to fix some core legacy issues raised here. One of them will be a roadmap. Give us time to discuss details before going public with them however, we need to do this right and with care. |
Also to clarify, the technical issues raised in this thread are already being tracked by other bug reports which are aggregated in the LightmapGI tracker issue: #56033 We can't take action on a bug report that is literally hundreds of comments that are mostly arguing about unrelated things. A lot of this discussion is valuable (and to me, interesting). But this isn't the right place to have it. Getting so far off topic has turned this from a place to identify specific problems with this specific reference scene to place to vent frustration. Let's refocus our discussions on the particular bug reports for particular problems that need solving. That way contributors can more efficiently identify and fix issues. |
Godot version
4.0 Stable
System information
Windows 11, Nvidia RTX4070ti, AMD Ryzen7700x
Issue description
This is the Unreal Engine 4 Sun Temple example ported to Godot 4, utilizing files provided by Nvidia and donated by Epic Games.
It's a good showcase of a scene that combines interior & exterior lighting and modular assets. Most importantly though: Godot really struggles with this environment.
This scene is exceptionally clean in UE4, and it employs heavy use of repetitive modular meshes. This is a very common environment asset pipeline and something Godot should aim to accommodate.
Changes:
Issues:
As mentioned, Godot really struggles to resolve this scene's GI adequately. Here are my observations:
Here are some comparisons for reference. In all cases SSAO and SSR are active, and reflection probes are used in the LightmapGI shots:
LightmapGI was the most usable GI solution but exhibited a lot of leaking, such as in this first hallway. The walls are adequately thick and should be overlapping enough to properly obscure any exterior light:
Leaks also occurred in places that were otherwise manifold and absolutely no light should have been able to pass through. This ceiling has many leaks on the inside, even though the exterior is completely sealed. The leaks persisted at 2x the texel density and with Ultra quality bakes. This behavior isn't consistent with other lightmappers I've used, which handle even the thinnest manifold walls without leaks:
Steps to reproduce
N/A
Minimal reproduction project
Download the Godot project file HERE
Download the Blender file HERE
If all textures appear pink when the Blender file is opened, simply go to File > External Data > Find Missing Files and navigate to the Texture directory.
The text was updated successfully, but these errors were encountered: