State:New|TargetRelease:No Target|icon_bug|icon_katana|database:public|Resolution:Fixed|BugID:352267|
Problem summary
When using a ViewerPluginExtension plug-in using the onApplyTerminalOps() method, and adding a terminal Op to set a Hydra material on target locations, this doesn't work as expected, as the shader compilation seems to fail to compile and error. Using the exact same Op in the nodegraph directly works as expected.
If the shader has been loaded at least once in the scenegraph (e.g. Material + MaterialAssign) and the affected locations have been displayed (forcing the shader compilation), before the BaseViewerPluginExtension plug-in's Op is evaluated, then the shader gets successfully compiled and when viewing locations that run through the terminal Op, we get the expected result in the Viewer.
Customer reported version
3.0__3.0v1_beta
Customer reported platform
centos7
Steps to reproduce
Linux reproduction:
export KATANA_RESOURCES=$KATANA_RESOURCES:/path/to/hydra_vpe/Resources
Result: Hydra displays grey mesh, the following error is thrown:
[WARN plugins.HydraViewer.LoggerDelegate]: ../pxr/imaging/lib/hd/glslProgram.cpp: Link: 180: Failed to link shader: Fragment info ------------- 0(991) : error C3002: call to undefined function "vec4 surfaceShader(vec4, vec3, vec4, vec4);" Workaround
No known workaround.
Reproduced by support
This bug has been reproduced in:
Katana3.0v1
Earliest version tested
- This feature did not exist before this version ( Hydra Viewer )
Expected behaviour
Hydra displays plane mesh with UV checker texture applied.
Actual behaviour
Hydra displays grey mesh, the following error is thrown:
[WARN plugins.HydraViewer.LoggerDelegate]: ../pxr/imaging/lib/hd/glslProgram.cpp: Link: 180: Failed to link shader: Fragment info ------------- 0(991) : error C3002: call to undefined function "vec4 surfaceShader(vec4, vec3, vec4, vec4);" Notice that the shader and the script used in the VPE seems to work fine as shown in the 'debug' branches in the attached scene.
We're sorry to hear that
Please tell us why