Description
When comparing Python pytest renders against C++ MaterialXTest baselines (both using the same _options.mtlx scope), several material categories produce visually different results. These failures occur identically in both TestRenderStdlibMaterials (no overrides) and TestRenderMetashadePassthru, confirming they are Python/C++ renderer differences, not Metashade override issues.
Failing materials
| Material |
Subtest |
Mean FLIP |
Category |
standard_surface_onyx_hextiled |
M_OnyxHextiled |
0.1813 |
Non-deterministic procedural |
flake |
test_flake2d |
0.0742 |
Non-deterministic procedural |
blur |
blur_cellnoise/out |
0.3178 |
Convolution |
heighttonormal |
vec_out |
0.1496 |
Convolution / normals |
heighttonormal |
ss_out |
0.0997 |
Convolution / normals |
heighttonormal |
usd |
0.0623 |
Convolution / normals |
color3_vec3_cm_test |
height_to_normal_cm/out |
0.1338 |
Color management |
Observations from visual inspection
heighttonormal subtests show what appears to be inverted or flipped normals relative to the C++ baseline
hextiled and flake show random pattern differences (likely non-deterministic seeds)
blur_cellnoise shows a completely different noise pattern
color3_vec3_cm_test failure is in the height_to_normal_cm subtest (same normal issue)
Potential causes
- Convolution / heighttonormal:
fileTextureVerticalFlip or coordinate convention difference between Python mxrenderer.py and C++ ShaderRenderTester
- Procedurals (flake, hextiled): GPU-side random seeds differ between render sessions — inherently non-deterministic
- Color management: may involve unsupported color space transforms (C++ logs show "Unsupported color space transform" warnings)
Note on add_additional_test_streams
The Python implementation of add_additional_test_streams differs from C++ in 10/11 stream fill algorithms, but none of the failing materials use those streams. They only depend on i_texcoord_0 from the OBJ loader. The stream differences would affect geompropvalue.mtlx and streams.mtlx (not in _options.mtlx scope).
Related
Description
When comparing Python pytest renders against C++ MaterialXTest baselines (both using the same
_options.mtlxscope), several material categories produce visually different results. These failures occur identically in bothTestRenderStdlibMaterials(no overrides) andTestRenderMetashadePassthru, confirming they are Python/C++ renderer differences, not Metashade override issues.Failing materials
standard_surface_onyx_hextiledflakeblurheighttonormalheighttonormalheighttonormalcolor3_vec3_cm_testObservations from visual inspection
heighttonormalsubtests show what appears to be inverted or flipped normals relative to the C++ baselinehextiledandflakeshow random pattern differences (likely non-deterministic seeds)blur_cellnoiseshows a completely different noise patterncolor3_vec3_cm_testfailure is in theheight_to_normal_cmsubtest (same normal issue)Potential causes
fileTextureVerticalFlipor coordinate convention difference between Pythonmxrenderer.pyand C++ShaderRenderTesterNote on
add_additional_test_streamsThe Python implementation of
add_additional_test_streamsdiffers from C++ in 10/11 stream fill algorithms, but none of the failing materials use those streams. They only depend oni_texcoord_0from the OBJ loader. The stream differences would affectgeompropvalue.mtlxandstreams.mtlx(not in_options.mtlxscope).Related