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

Add project rendering quality presets #7991

Open
TheColorRed opened this issue Oct 5, 2023 · 4 comments
Open

Add project rendering quality presets #7991

TheColorRed opened this issue Oct 5, 2023 · 4 comments

Comments

@TheColorRed
Copy link

Describe the project you are working on

3D shooter

Describe the problem or limitation you are having in your project

Game quality settings a set low by default having to change all the settings for every new game takes time especially if you have no idea what any of the settings will do or where they are located or what they are called.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

There are lots of settings under the Rendering project settings, it would be nice to have a Presets section that would allow you to select a rendering preset, maybe with these settings:

  • Low
  • Medium
  • High
  • Ultra

Once one is selected, it would update all the related settings under Rendering/*/* (* being a wildcard subcategory/setting). You could also expose this at runtime so users can select a quality setting during gameplay.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

In the project settings window, users would navigate to Rendering/Presets, in there there would be two preset options, one for 2D and one for 3D.

When the user selects one the settings will update and the user can then also fine tune them by manually changing things.

If this enhancement will not be used often, can it be worked around with a few lines of script?

No need for script, you would just need to understand what each setting does and where is located to achieve a specific level of detail.

Is there a reason why this should be core and not an add-on in the asset library?

It would be nice to have it out of the box instead of having to get an asset to do it.

@Calinou
Copy link
Member

Calinou commented Oct 5, 2023

The issue with presets is that different settings have different performance implications. For instance, setting soft shadow quality to High will not have the same performance impact as setting SSR roughness quality to High. This is why I discourage blanket presets that set all values to a given preset. It often leaves performance (and quality) on the table, because you aren't choosing the presets that best suit your individual project. If you look at modern AAA games, it's rare for optimized settings to follow a blanket preset.

Instead, you should tailor presets in your game to match its presentation – some visual features will be more noticeable than others depending on how your game looks. One size doesn't fit all 🙂

Unreal Engine has scalability groups that do the exact thing you're requesting, and they're a common target of criticism among players.

@Calinou Calinou changed the title Project Rendering Presets Add project rendering quality presets Oct 5, 2023
@Calinou Calinou removed the topic:3d label Oct 5, 2023
@yosoyfreeman
Copy link

I understand and agree with that creating presets for all fits is not reasonable, but i would love to see some quality of life improvements to at least be able to create them ourselfs. Is my believe that right now there is no way to easily handle different texture qualities or sizes without adding them to the project as separate assets and creating some kind of code to handle the change. I think that when most people arrive at godot and search for presets is not so much to use them as they are but to quickly adjust them.

It is possible that this is waiting to be a part of the texture streaming system?

@Calinou
Copy link
Member

Calinou commented Oct 11, 2023

Is my believe that right now there is no way to easily handle different texture qualities or sizes without adding them to the project as separate assets and creating some kind of code to handle the change.

This is a separate concern, which requires implementing support for texture streaming first to be viable.
(Note that reducing texture quality barely improves performance, but it does reduce memory utilization – which is generally not much of an issue in indie games. It should only be decreased as a last resort.)

@AndreVallestero
Copy link

AndreVallestero commented Nov 30, 2023

Additionally, I think the presets should affect defaults of meshes / materials / textures, which should inherit the preset default.

Example properties are:

  • received shadows
  • casted shadows
  • shading mode (unshaded)
  • sampling filter
  • enable/disabled specular

For my use case of making a physics simulation, rendering quality doesn't matter at all. As a result, I had to manually go in and change the above settings for each material and mesh on my scene, netting a 2x rendering performance increase. In the "low" quality rendering mode, these should be disabled by default to optimize frametimes.

Furthermore, I would suggest having 3 presets instead:

  • Performance
  • Balanced
  • Quality

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants