GLTF: Preserve the original bytes when extracting a texture while importing #79533
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before this PR, the GLTF importer will import images into an Image resource, and then use this to save a PNG file to disk. This means that JPG, WebP, etc images would be converted to PNG, using more disk space than necesssary, and being slower than necessary since it needs to re-encode the images.
As of this PR, when the importer wants to save the images to separate files, the image data in the GLTF will just be directly written to disk, for PNG and JPG always, and for other image formats it will save it into a file when the GLTFDocumentExtension defines
get_image_file_extension
to indicate what the file extension should be.To be clear, preserving the original bytes for new image formats is optional (for the extension programmer). If a GLTFDocumentExtension class wants to import images and have Godot save them as PNG, just don't define
get_image_file_extension
. When this method is not defined, Godot will save an Image resource as a PNG like before.Some test files I used with JPG/PNG/WebP all are extracted correctly: