This document describes issues and known limitations that prevent truthful imaging of converted files.
As described in the initial PR, certain properties of the glTF shading model do not map to MaterialX:
- thickness: whether the material is thin-walled (thickness = 0) or volumetric (thickness > 0). Currently, only the volumetric case is implemented, and the input is ignored. (Issue #1936)
- occlusion: this concept does not exist in MaterialX. SSAO or ray traced ambient occlusion may be used instead.
glTF tangents have four components, with the last component denoting the handedness of the calculated bitangent.
For normal mapping, we would ideally want to use MaterialX's <normalmap>
node, however this node makes a hard assumption on the handedness of the bitangent.
A bitangent input has been proposed (Issue #945), but as a fallback, guc injects a flattened, patched version of this node.
Important
Resolved in MaterialX 1.39
MaterialX shading networks require geometric properties (normals, texture coordinates, tangents). These are stored as USD primvars, and the renderer needs to provide them accordingly.
As an implicit mapping relies on non-standardized heuristics that do not cover multiple texture sets, vertex colors or tangents, guc always uses explicit reading of these primvars using <geompropvalue>
nodes.
However, this functionality is known to not be supported by select render delegates.
The HdMtlx USD library provides functions which aid Hydra render delegates in supporting shading networks via MaterialX. The HdMtlxCreateMtlxDocumentFromHdNetwork
function is essential in that, as it translates Hydra shading networks to MaterialX documents. These documents are then processed by the renderer, and potentially used for code generation using a MaterialXGenShader backend.
One outstanding problem with the translation process is that color spaces are not copied from the Hydra network to the MaterialX document. This means that, for example, normal maps may be assumed to be encoded in the sRGB color space, leading to incorrect shading. (Issue #1523)
This issue affects a number of render delegates, including Pixar's HdStorm.
Important
Resolved in OpenUSD 23.11
Issue #3048 currently affects multiple cases of the guc test suite.
Converted assets may use such textures, but HdStorm is not able to render them. (Source code)
Important
Resolved in OpenUSD 24.08
In addition to the HdMtlx color space issue above, a heuristic defined by the UsdPreviewSurface spec is used to determine whether an image is to be interpreted as sRGB or not. This heuristic can not be disabled and incorrectly classifies normal maps and occlusion-roughness-metalness textures commonly used with glTF. (Issue #1878)
Important
Resolved in OpenUSD 23.11
HdStorm is a rasterizer and therefore handles translucent geometry differently than solid geometry. In order to detect whether a geometry's material is translucent or not, a heuristic is used. However, it is not yet adjusted to the MaterialX glTF PBR. (Issue #1882)
Important
Resolved in OpenUSD 24.08
Issue #2140.
Important
Resolved in MaterialX 1.38.8 / OpenUSD 24.05
Issue #3049.
Important
Resolved in OpenUSD 24.08
This causes normal maps to render incorrectly, for instance for the Open Chess Set. (Issue #2255)
Important
Resolved in OpenUSD 24.03
Apple's RealityKit (used for AR Quick Look) and SceneKit renderers only support a subset of USD's features. guc makes no compatibility efforts, and converted assets may not be displayed correctly.