Skip to content

GLTFLoader: support MSFT DDS texture sources (MSFT_texture_dds)#265

Open
hzqst wants to merge 8 commits into
DiligentGraphics:masterfrom
hzqst:RTXPT
Open

GLTFLoader: support MSFT DDS texture sources (MSFT_texture_dds)#265
hzqst wants to merge 8 commits into
DiligentGraphics:masterfrom
hzqst:RTXPT

Conversation

@hzqst

@hzqst hzqst commented Jun 1, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support in the AssetLoader glTF pipeline for selecting DDS image sources declared via the MSFT_texture_dds extension, allowing DDS textures to be loaded when present (and reducing spurious “missing standard image” warnings when DDS is used as the supported alternative).

Changes:

  • Parse MSFT_texture_dds on tinygltf::Texture objects and prefer the extension-provided image source during texture loading.
  • Add warning post-processing to suppress tinygltf “missing standard image” warnings when DDS alternatives are available.
  • Introduce helper utilities for source validation, image availability checks, and warning string cleanup.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread AssetLoader/src/GLTFLoader.cpp
Comment thread AssetLoader/src/GLTFLoader.cpp Outdated
Comment thread AssetLoader/src/GLTFLoader.cpp Outdated
Comment thread AssetLoader/src/GLTFLoader.cpp Outdated
hzqst and others added 5 commits June 9, 2026 14:56
Treat GLTF images with loaded dimensions as available for MSFT_texture_dds so DDS sources selected through the resource manager or texture cache do not require decoded image bytes.

Decode image URIs before building file and cache paths, matching tinygltf external file resolution for percent-encoded names.

Add regression coverage for cached image metadata and encoded DDS URIs.

Co-Authored-By: GPT 5.5
Return early when EraseAll is asked to remove an empty substring so future callers cannot hang in a no-progress find/erase loop.

Co-Authored-By: GPT 5.5
RemoveWarnings() suppressed the missing-image warning for every texture
that had an available DDS alternative. When the same standard image was
also referenced by another texture without a DDS alternative, the still
actionable "file not found" warning was erased.

Classify standard images in a first pass: an image is superseded only
when every referencing texture has an available DDS alternative, and is
still needed otherwise. Suppress warnings only for fully superseded
images, iterating images directly since tinygltf emits one warning per
image.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The MSFT_texture_dds warning suppression only ever fired when a
superseded standard image was missing from the filesystem. That is a
legitimate warning: the GLTF declares an image that does not exist and
tinygltf reports it. A GLTF that ships DDS textures has no need to also
reference standard images, so masking the warning hid a real problem.

Remove RemoveWarnings and the now-unused EraseAll helper so tinygltf
warnings are logged verbatim. The DDS source-selection helpers
(GetSource/IsImageAvailable/IsValidImageSource) are retained, so
LoadTextures still prefers an available DDS source over the standard
image.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants