Hi,
Thanks for the OpenPBR/MaterialX support in the glTF fileformat plugin. I've been testing 2026.07 for USD + MaterialX/OpenPBR to glTF/GLB and the conversion looks really promising.
This is not a bug report per se, just curious about a few of the currently supported node patterns and whether the restrictions are intentional, technical limitations, or just variants that haven't been implemented yet.
From layerReadMaterial.cpp the texture usage path seems to roughly be ND_texcoord_vector2, then optionally ND_place2d_vector2, into ND_image_vector4 / ND_image_color3 / ND_image_vector3 / ND_UsdUVTexture_23, with some optional node supports before it reaches OpenPBR.
For float inputs it looks like it goes through ND_image_vector4 into ND_separate4_vector4 before landing on the OpenPBR float input.
Would it make sense to also support the simpler ND_image_float feeding directly into something like OpenPBR.specular_roughness, rather than requiring the vector4 to separate4 route? I get that the latter matters for packed textures, but image_float seems like a pretty natural fit for standalone scalar maps.
Regarding normalmaps: Houdini and the MaterialX Graph editor both author the normalmap node as ND_normalmap_float. UsdMtlx seems to do the same, translating normalmaps to ND_normalmap_float by default. But the reader currently only expects ND_normalmap.
Any chance of supporting _float as well?
And then there's ND_tiledimage_*. Authored graphs commonly do ND_tiledimage_color3 straight into OpenPBR.base_color instead of place2d plus image. Would it be feasible to support ND_tiledimage_* by mapping its tiling and offset params into that same internal texture transform representation?
Curious how these three (ND_image_float, ND_normalmap_float, ND_tiledimage_*) would fit into everything!
Thanks!
Hi,
Thanks for the OpenPBR/MaterialX support in the glTF fileformat plugin. I've been testing
2026.07for USD + MaterialX/OpenPBR to glTF/GLB and the conversion looks really promising.This is not a bug report per se, just curious about a few of the currently supported node patterns and whether the restrictions are intentional, technical limitations, or just variants that haven't been implemented yet.
From
layerReadMaterial.cppthe texture usage path seems to roughly beND_texcoord_vector2, then optionallyND_place2d_vector2, intoND_image_vector4/ND_image_color3/ND_image_vector3/ND_UsdUVTexture_23, with some optional node supports before it reaches OpenPBR.For float inputs it looks like it goes through
ND_image_vector4intoND_separate4_vector4before landing on the OpenPBR float input.Would it make sense to also support the simpler
ND_image_floatfeeding directly into something likeOpenPBR.specular_roughness, rather than requiring the vector4 to separate4 route? I get that the latter matters for packed textures, butimage_floatseems like a pretty natural fit for standalone scalar maps.Regarding normalmaps: Houdini and the MaterialX Graph editor both author the normalmap node as
ND_normalmap_float. UsdMtlx seems to do the same, translating normalmaps toND_normalmap_floatby default. But the reader currently only expectsND_normalmap.Any chance of supporting
_floatas well?And then there's
ND_tiledimage_*. Authored graphs commonly doND_tiledimage_color3straight intoOpenPBR.base_colorinstead ofplace2dplusimage. Would it be feasible to supportND_tiledimage_*by mapping its tiling and offset params into that same internal texture transform representation?Curious how these three (
ND_image_float,ND_normalmap_float,ND_tiledimage_*) would fit into everything!Thanks!