godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Improve Textures VRAM Compression project settings descriptions (and maybe defaults) #7119

Open lostminds opened 1 year ago

lostminds commented 1 year ago

Describe the project you are working on

A 3d project using the mobile renderer, with exports both to desktop and mobile platforms.

Describe the problem or limitation you are having in your project

When setting up an export target to macOS I got a warning 246659007-13e5ec4a-a60d-429e-9962-69f67c4a121f So I found the corresponding setting by filtering on S3TC, but the description text of the setting made me very confused as to what enabling this would actually do, I even filed a bug (https://github.com/godotengine/godot/issues/78395) thinking it was incorrect.

246659062-6aa2742c-670f-4934-b65f-06c196f3297c

As I read this it sounded like the proper format would be used even if the setting was disabled (so it wasn't required) and that enabling it would make it incompatible with mobile since this was only supported on desktop.

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

I'd suggest some changes to the descriptions on this pair of settings to make it easier to understand, that you can combine them and that they are used to ensure availability of proper formats for exports to some platforms.

And it might also be worth considering enabling at least one of them by default based on if you pick Mobile or Forward+ when setting up a new project to get this right from the start.

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

Suggested new wording for descriptions, hopefully I've now understood how these work:

import_s3tc_bptc If true, the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm (DXT1-5) for lower quality textures and the BPTC algorithm (BC6H and BC7) for high quality textures. This will be used in and may be required for exports on PC desktop platforms and consoles.

Note: This setting is primarily for export purposes, the importer will always import to formats required by the platform the editor is running on as well regardless of this setting.

_Note: Changing this setting does not impact textures that are already imported. To apply these settings you need to re-import your textures. To re-import all textures, exit the editor, remove the .godot/imported/ folder located inside the project folder then restart the editor (see application/config/use_hidden_project_datadirectory).

and

import_etc2_astc If true, the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm for lower quality textures and normal maps and Adaptable Scalable Texture Compression algorithm for high quality textures (in 4x4 block size). This will be used in and may be required for exports on mobile platforms.

Note: This setting is primarily for export purposes, the importer will always import to formats required by the platform the editor is running on as well regardless of this setting.

_Note: Changing this setting does not impact textures that are already imported. To apply these settings you need to re-import your textures. To re-import all textures, exit the editor, remove the .godot/imported/ folder located inside the project folder then restart the editor (see application/config/use_hidden_project_datadirectory).

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

no

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

it's core settings

thygrrr commented 2 weeks ago

I think the underlying problem really is how Godot structures texture imports, including the (frankly, a bit comical, if it weren't so disruptive) "Detect 3D" feature at the very bottom of all the settings that can and will then retroactively change your prior settings without your knowledge.

Clearly exposing pixel formats, compression formats, and disambiguating between "Lossless", "Lossy", "VRAM Compressed" and "VRAM uncompressed" using either 2 separate dropdowns or a single dropdown with clear statements, such as: "Lossy on disk, uncompressed in VRAM" "Compressed on Disk and in VRAM" or the like.

And exposing a per-platform dropdown of compression formats and parameters that only show up for the relevant options. :)

Calinou commented 1 week ago

Clearly exposing pixel formats, compression formats, and disambiguating between "Lossless", "Lossy", "VRAM Compressed" and "VRAM uncompressed" using either 2 separate dropdowns or a > single dropdown with clear statements, such as: "Lossy on disk, uncompressed in VRAM" "Compressed on Disk and in VRAM" or the like.

Something like this?

Before After
image image

While it's much clearer, it's also a lot more verbose. None of the option values display in full anymore with the default Import dock width.