ID 352267 - Hydra Viewer - glsl shaders fail to compile if material is applied in ViewerPluginExtension

Follow

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:

  1. Extract Attached .zip file, copy UVTextureChecker to /tmp
  2. Add the plugin and shader to Katana resources: 
    
    export KATANA_RESOURCES=$KATANA_RESOURCES:/path/to/hydra_vpe/Resources
  3. Open repro scene: hydra_vpe_repro.katana
  4. View from the 'AS_faceset' node
  5. Expand the scenegraph
  6. View from the 'AS_texturePath' node  

 

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