Skip to content

Commit

Permalink
Update Ecosystem Limitations document to reflect latest USD version
Browse files Browse the repository at this point in the history
  • Loading branch information
pablode committed Mar 9, 2024
1 parent 1659332 commit 7a10d28
Showing 1 changed file with 1 addition and 18 deletions.
19 changes: 1 addition & 18 deletions docs/Ecosystem_Limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,36 +33,19 @@ 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](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/blob/101208a8c7dbf100d050d88ca6124db4e260087e/deps/rprMtlxLoader/rprMtlxLoader.cpp#L887) this feature, and it's [neither implemented](https://github.com/AcademySoftwareFoundation/MaterialX/blob/ef1b933b5c5192403aa4ae2d493a2b450670c934/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl#L1170-L1285) in the MaterialX MDL backend. The [GeompropVis test](https://github.com/pablode/guc-tests/blob/main/tests/GeompropVis_mtlx.png) compares both approaches visually.

#### Image color spaces are not copied from Hydra shading networks to MaterialX documents

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](https://github.com/PixarAnimationStudios/USD/issues/1523))

This issue affects a number of render delegates, including Pixar's [HdStorm](https://github.com/PixarAnimationStudios/USD/blob/0c7b9a95f155c221ff7df9270a39a52e3b23af8b/pxr/imaging/hdSt/materialXFilter.cpp#L877).
Unfortunately, RPR [does not support](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/blob/101208a8c7dbf100d050d88ca6124db4e260087e/deps/rprMtlxLoader/rprMtlxLoader.cpp#L887) this feature, and it's [neither implemented](https://github.com/AcademySoftwareFoundation/MaterialX/blob/ef1b933b5c5192403aa4ae2d493a2b450670c934/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl#L1170-L1285) 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.

#### Incorrect automatic sRGB image detection and decoding
In addition to the HdMtlx color space issue above, a heuristic defined by the [UsdPreviewSurface spec](https://graphics.pixar.com/usd/release/spec_usdpreviewsurface.html#texture-reader) 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](https://github.com/PixarAnimationStudios/USD/issues/1878))

#### 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](https://github.com/PixarAnimationStudios/USD/issues/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](https://github.com/PixarAnimationStudios/USD/blob/3abc46452b1271df7650e9948fef9f0ce602e3b2/pxr/imaging/hdSt/textureUtils.cpp#L341-L345))

#### Materials with 1x1 images are not rendered correctly
Issue [#2140](https://github.com/PixarAnimationStudios/USD/issues/2140).

#### Tangent frame is not aligned to the UV space
This causes normal maps to render incorrectly, for instance for the Open Chess Set. (Issue [#2255](https://github.com/PixarAnimationStudios/OpenUSD/issues/2255))


## Apple RealityKit and SceneKit compatibility

Expand Down

0 comments on commit 7a10d28

Please sign in to comment.