KhronosGroup / KhronosGroup/glTF

KHR_texture_transform and combined texture maps

Open
#1,456 2 comments 0 reactions 0 assignees View on GitHub
needs discussion texture transform
Dominant language
HTML
Stars
7.8k
Forks
1.2k
Avg merge
17h 26m
Merged PRs (30d)
5

Description

We've recently run into an issue with this extension in the Adobe Dimension exporter. We support separate transforms for metal and roughness textures as well as for the base color texture and opacity texture.

Since the texture transform applies to the individual material property, it's currently not possible to specify this in glTF.

What are the solutions?

1. Modify the extension to make it possible to specify multiple transforms per texture, assigned to sets of channels.
2. Require exporters to bake out the texture, taking the different transforms into account.

Since option 2 can obviously result in a severe loss of quality in some situations, we would ideally go with option 1. However, option 1 does feel a bit awkward and is putting more onus on the runtime to handle this situation. It requires potentially sampling the texture multiple times in the shader, etc.

So, my feeling is that option 2 is probably the only real solution. However, I wanted to check with the community and see what others think. If runtimes were willing to take on this additional complexity, it would allow us to export maps without potentially destroying fidelity.

Contributor guide

Open the contributing guide

Research direction

Start by reading the KHR_texture_transform extension discussion and the examples involving combined metalness, roughness, base-color, and opacity maps. Determine whether the project wants multiple channel-specific transforms or requires exporters to bake transformed textures; done means the community agrees on one approach and its runtime/exporter implications.

Written by the indexing model from the issue text.

Assessment

Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.