-
-
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
Implements an initial version of GTAO for 3.x #53886
base: 3.x
Are you sure you want to change the base?
Conversation
8f5e1b0
to
238a6e1
Compare
@drcd1 Do you need someone to create a few scenes for testing? If so, I can do that. |
71cb8d3
to
c58391c
Compare
Thanks! |
Is this PR still alive? I'd love to see this in 3.x but it's been so long since the last update |
See godotengine/godot-proposals#3720 (comment). Temporal antialiasing won't be implemented in Godot 3.x, so I don't think this PR can be merged. |
4.0 has TAA, any chance this gets implemented? ( I haven't looked at the files yet so I wouldn't be surprised if this was not compatible with 4.0 anymore ) |
4.0.beta has ASSAO, which is a fast SSAO implementation that can be tweaked to look very good. It works well with or without TAA, although we don't jitter samples based on time when TAA is enabled yet. Doing so will allow making ASSAO look even better without increasing its performance cost. I don't think implementing GTAO makes much sense when you already have ASSAO available. |
I hate to give out an opinion based on "what's best for what I see", but im not familiar with the "technical differences" between each so, I'll just say that on my experience with both SSAO and GTAO, GTAO has far better visuals than SSAO, it looks correct and I find it extremely difficult to find the screen-space issues ( I can tell with SSAO where the AO starts at the edge of objects or the screen corner ), I have also tested the performance of both before and I can still confirm that GTAO is extremely expensive. Again, my bias towards it is based on what I saw comparing the two, I would like for an option in the project settings for either ASSAO ( cheap and average AO ) or GTAO ( expensive but the highest quality ) |
@SenhorPatolino Note that "SSAO" is a generic term, as there are many SSAO algorithms out there:
As a result, when a game displays a SSAO option, you cannot use its name to infer what technique it's using behind the scenes. Usually, only HBAO and RTAO are referred directly with their original names in the game's options. You also have to consider that shipping 2 SSAO implementations has a maintenance cost, along with a cost in the binary size itself (not huge in this case, but it's there). Both implementations need to be tested and have their bugs fixed, yet we only have so many rendering contributors available. Also, GTAO still can't perform ambient occlusion with what is located outside the camera. For that, you need overscan, which can be used with any screen-space technique. Overscan cannot cater for every situation though; raytraced ambient occlusion would be the most accurate option, but it's the most expensive one. At this point, it begs the question whether we should bother with GTAO at all and go straight for raytraced ambient occlusion, since both are going to be expensive options that require TAA to look good anyway. Raytraced ambient occlusion works even with fully off-screen objects and occluded objects (something overscan can't do). Lastly, with the PC GPU market and economy being in a dire situation, I wouldn't rush to add more high-end graphics features just yet 🙂 |
Apologies for not being more specific, by SSAO I meant SAO and ASSAO ( usually SAO is labeled as SSAO in games so I misunderstood that, also I can clearly see the difference between SAO and ASSAO and needless to say it is a major improvement ), im aware that GTAO doesn't perform on whats outside the camera view, but I found it to be so good at handling it that it feels like its actually raytraced ( still expensive but im sure not as expensive as RTAO ). I have not considered the maintenance part so my bad at that, as for the performance cost, while much higher than ASSAO I wouldn't consider it being unviable for any mid-low GPU to handle. I love how GTAO looks but with ASSAO being the new default one I think no one would miss it much, whenever I find out how to merge this pull request into a fork ( Github newbie talking ) I will definitively be comparing both |
An initial implementation of what was proposed here:
godotengine/godot-proposals#3223
GTAO
can now be used by enablingSSAO
and changing the propertyType
toGTAO
Here we can see a comparison between the default 3.x SSAO and GTAO:
SSAO (3.x) (with a finetuned combination of both
radius
andintensity
parameters:GTAO:
It still has a few problems, some of which are documented with
//TODO: ...
indrivers/gles3/ssao.glsl
. Namely:thickness_attenuation_blending_parameter
and 'distance_attenuation_start' (as well as the flags for enablingthickness_attenuation
anddistance_attenuation
) are not exposed to the user.intensity
,radius2
,intensity2
) shouldn't be visible whenGTAO
is used.