Skip to content

Latest commit

 

History

History
53 lines (33 loc) · 5.12 KB

Ecosystem_Limitations.md

File metadata and controls

53 lines (33 loc) · 5.12 KB

Ecosystem Limitations

This document describes outstanding issues and known limitations that prevent truthful imaging of converted files.

MaterialX

Hardcoded <normalmap> node handedness

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. I've proprosed a bitangent input (Issue #945), but for now, guc injects a flattened, patched version of this node.

Limitations of the MaterialX shading model and the glTF PBR implementation

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. The addition of thin-walled materials to MaterialX is being discussed. (Issue #864)
  • occlusion: this concept does not exist in MaterialX. SSAO or ray traced ambient occlusion may be used instead.

MaterialX in USD

MaterialX geometric property support in Hydra render delegates

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 this mapping is implicit, and primvar names for most purposes are not standardized, geometric nodes and their respective geometric properties (MaterialX 1.38 spec p.28) are currently poorly supported in renderers:

Geometric node HdStorm RadeonProRender
normal ⚠️ only world space
texcoord (set 0) ⚠️ 'UV0', 'st' / custom primvar ⚠️ 'st' + role-based detection
texcoord (set N)
geomcolor
tangent ⚠️ computed ⚠️ computed, only world space
bitangent
geompropvalue

To work around the lack of support for authored geometric properties, guc reads most primvars directly using <geompropvalue> nodes. Unfortunately, RPR does not support this feature, and it's neither implemented in the MaterialX MDL backend.

MaterialX in HdStorm

HdStorm supports MaterialX pretty well, and Pixar is continously working on improving the integration. However, there are still some remaining issues that need to be addressed.

Hardcoded transparent geometry detection

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)

One and two channel sRGB texture formats are unsupported

Converted assets may use such textures, but HdStorm is not able to render them. (Source code)

Apple RealityKit and SceneKit compatibility

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 are likely to not be displayed correctly.