UsdPreviewSurface issues in 20.5?

   1095   9   1
User Avatar
Member
250 posts
Joined: Oct. 2014
Offline
(Known issue maybe?)

In versions prior to 20.5 we could use a Collect VOP to create a custom UsdPreviewSurface for display in Houdini GL. We could also pipe a UsdPreviewSurface shader directly into the 'next' port on the output node of a KarmaMaterialBuilder and get the same result.

In 20.5 (last few builds) this doesn't seem to be working the same way (or at all?). Even if I disable the Material Library's 'Auto-generate preview surface' option, I cannot get HoudiniGL to display my custom UsdPreviewSurface. It always wants to translate the Karma surface and display that rather than the UsdPrev one.

Attached image:
- green is the diffuse color of the mtlx shader
- blue is the Usd Preview Surface color
- Houdini GL ignores the latter and renders the former (but this seemed to work as expect in 20.0

Basically... I can't seem to author a custom UsdPreviewSurface in 20.5 and actually see it in GL.
Edited by Tim Crowson - Oct. 25, 2024 19:10:48

Attachments:
usdprev.PNG (411.5 KB)

- Tim Crowson
Technical/CG Supervisor
User Avatar
Member
200 posts
Joined: Nov. 2013
Offline
The default in 20.5 is Houdini VK - are you guys forcing Houdini GL through an ENV variable?
I am using Houdini VK and get the same result in both a USD Mtlx Builder and Karma Material builder.

Tim, in the case you're definitely using Houdini GL, can you try the following: Replace the Subnet Outputs node with a Collect vop (pic 1).
And/Or:
Add a collect vop outside the Karma Material Builder (pic 2)

Attachments:
pic_1.png (33.8 KB)
pic_2.png (29.1 KB)

User Avatar
Member
200 posts
Joined: Nov. 2013
Offline
I'd also test on a sphere or something that doesn't have a material and displayColor primvar already authored on it.
User Avatar
Member
250 posts
Joined: Oct. 2014
Offline
Thanks, Dave! In 20.5.370 I only get the expected result when using Storm. Otherwise I'm seeing my original problem under the following conditions:
  • Using Collect VOPs
  • Using KarmaMaterialBuilders
  • Using Vulkan

I'm attaching a simple repro scene. Oddly, this super simple scene has crashed twice on me when firing off a Karma CPU render. In this scene, orange=karma, blue=usdpreview. Switching to Storm correctly draws the usdpreview shader. Vulkan does not.
Edited by Tim Crowson - Oct. 28, 2024 17:03:52

Attachments:
usdprev_weirdness.hipnc (195.5 KB)

- Tim Crowson
Technical/CG Supervisor
User Avatar
Member
200 posts
Joined: Nov. 2013
Offline
I tested on 20.5.332 but couldn't get it to work, I get the same issue as you, but Storm doesn't display correctly like it did for you
User Avatar
Member
250 posts
Joined: Oct. 2014
Offline
Has no one else noticed this? Are Dave and I taking crazy pills?
- Tim Crowson
Technical/CG Supervisor
User Avatar
Member
8045 posts
Joined: Sept. 2011
Offline
Tim Crowson
Attached image:
- green is the diffuse color of the mtlx shader
- blue is the Usd Preview Surface color
- Houdini GL ignores the latter and renders the former (but this seemed to work as expect in 20.0

Basically... I can't seem to author a custom UsdPreviewSurface in 20.5 and actually see it in GL.

no, you cannot. The viewer will use the 'best' shader it knows how to render. Since the HoudiniGL viewer knows how to render a mtlx shader, it will use that.
User Avatar
Member
250 posts
Joined: Oct. 2014
Offline
I went back and retested this in 19.5 and indeed it seems that indeed Houdini GL completely ignores custom usdpreview shaders if a materialX shading network is found.

However, in 20.0, I get a different result: authoring a usdpreviewsurface inside a Karma Material Builder (and connecting to the builder's Outputs node) yields the result I was kind of expecting: Houdini GL renders my custom usdpreview surface, not the material x shading.
Edited by Tim Crowson - Nov. 20, 2024 19:35:55
- Tim Crowson
Technical/CG Supervisor
User Avatar
Member
250 posts
Joined: Oct. 2014
Offline
Follow-up: we're able to get around the problem by leveraging a native USD binding mechanism: authoring a preview material and binding it using 'Preview Render' purpose rather than the default 'All' or 'Full Render'. We essentially wind up binding two materials to the object, but with different purposes.
- Tim Crowson
Technical/CG Supervisor
User Avatar
Member
200 posts
Joined: Nov. 2013
Offline
Tim Crowson
Has no one else noticed this? Are Dave and I taking crazy pills?
We are but that is a separate issue
  • Quick Links