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

Compute SSAO at half resolution by default #49738

Merged

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Jun 19, 2021

Follow-up to #49736 (can be merged independently).

This provides a significant speedup for a small quality loss.

The quality loss is generally more noticeable during a project's early stages of development (e.g. in level blockouts) than it is in a finished project.

Some added rationale:

  • People with low-end or even mid-range GPUs may not know why an effect is slow, so it's better to default to a lower quality version that can reasonably run on such GPUs.
  • People with high-end GPUs will generally figure out how to increase graphics settings.
  • With the current GPU shortages, most people will not be able to upgrade their GPU until after Godot 4.0 is released. Some people will also have to "downgrade" their GPU due to their current GPU calling it quits and having to replace it with a much slower option (integrated graphics or low-end dedicated GPU).

@Calinou Calinou requested a review from a team as a code owner June 19, 2021 09:58
@Calinou Calinou added this to the 4.0 milestone Jun 19, 2021
@Calinou Calinou force-pushed the ssao-gi-default-half-resolution branch from e1096ca to 249706f Compare June 19, 2021 22:10
@Calinou Calinou requested a review from a team as a code owner June 19, 2021 22:10
@mrjustaguy
Copy link
Contributor

Personally, I think this is a bad idea. there is quite a visible downgrade, and if you don't have a GPU to run them properly, you probably don't have a GPU to run them well anyhow, and it'd make more sense to just have GI and SSAO off by default.

(and I'm not some rich boy that has an RTX 3090 or RX 6900 XT or anything modern, but like a nearly decade old card equivalent to a 2 gig GTX 650)

@Calinou
Copy link
Member Author

Calinou commented Jul 6, 2021

there is quite a visible downgrade

Which screen resolution are you using? In 1440p (a resolution increasingly common among gamers), computing GI/SSAO at half resolution means computing it in 720p, which isn't too bad. It's common for other game engines to compute this kind of effect at half resolution by default, leaving full resolution as a high-end option only.

Also, keep in mind that the visual difference becomes less and less noticeable as you add textures and complex materials to your scene.

@mrjustaguy
Copy link
Contributor

mrjustaguy commented Jul 6, 2021

1080p, which is also the more common resolution (if not lower, like 720p) by anyone running such crappy hardware to warrent this (by todays standards, and even the standards of Pre RTX era)

The Way I see it:
If you're running an IGPU you're not running 1440p.
If you're running an IGPU you don't expect to be able to use high quality settings (unless you've got modern high end APUs from like AMD)
If you're running a decade old low end machine, you don't expect to be able to run demanding things such as GI and SSAO (SSAO does however run just fine even on high settings on a decade old low end DGPU but not really worth it as from 200 fps you drop to 100-60 depending on SSAO settings at full res, and better results come from lowering the SSAO resolution compared to using half size SSAO)
If you've got a low end machine from the last 5 years, you've got an nvidia 1030-1050 level card, which can run SSAO just fine, and GI too, to some extent, at worst 30 fps (excluding SDFGI, as that can be quite demanding when switching cascades on lower end GPUs, sufficiently so to not be usable due to stutters, but being able to render even medium settings SDFGI when stationary at usable framerates, however 1050s could probably use it)

and yes, while adding Textures and materials makes the effects slightly less visible, it's still quite visible, and adds an effect that kind of feels like every mesh was cut out and then pasted on to the frame.

@mrjustaguy
Copy link
Contributor

Ok I've done some further testing and the issue with half res SSAO/GI giving a terrible visual downgrade is actually only really clearly visible without FXAA & Debanding (why Debanding seems to help a little I have no idea, really it shouldn't afaik) on, when running on a 1080p display... so I'd say half res is ok when running above 1080p resolution, or running 1080p with some AA settings turned on, and it does have an increasingly large performance improvement when going up with resolution relative to observable quality loss.

This provides a significant speedup for a small quality loss.

The quality loss is generally more noticeable during a project's
early stages of development (e.g. in level blockouts)
than it is in a finished project.
@Calinou Calinou force-pushed the ssao-gi-default-half-resolution branch from 249706f to 44af98c Compare February 14, 2022 17:53
@Calinou Calinou changed the title Compute SSAO and GI at half resolution by default Compute SSAO at half resolution by default Feb 14, 2022
@Calinou
Copy link
Member Author

Calinou commented Feb 14, 2022

We discussed this in a PR meeting last week. We decided that using half resolution by default for SSAO is a good idea, but it won't look good enough for GI at low resolutions. GI performance was already improved significantly by #54677 and #57707, so it's less important to render GI at half resolution to improve performance now.

I amended this pull request to only compute SSAO at half resolution by default.

@akien-mga akien-mga merged commit 5d23613 into godotengine:master Mar 18, 2022
@akien-mga
Copy link
Member

Thanks!

@Calinou Calinou deleted the ssao-gi-default-half-resolution branch March 18, 2022 16:27
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.

3 participants