UsdPreviewSurface vs. Karma - prrimvar override behavior

   1814   3   3
User Avatar
Member
9 posts
Joined: 8月 2015
Offline
Hey folks, before I file this as a bug, I wanted to make sure there's no Usd-based explanation for this behavior.

In the project below, I have a SOP Create node with a geometry in it, assigned to a material in SOPs and imported into LOPs.

The resulting LOP has three USDShade Shader bindings (Surface + Displace, linked to VOPs and a UsdPreviewSurface).

Adding “Material Variation” (primvar override) nodes diverges in behavior between Karma and the GL renderer according to whether or not the GeomSubset has been disabled:

1. When varying baseColor (VOP Material Property)

Karma: replaces (red)
GL: does nothing (teal)
GL + GeomSubset deactivated: no assignment (white)

2. when varying displayColor (USD spec property):

Karma: multiplies (black)
GL: does nothing (teal)
GL + GeomSubset deactivated: multiplies or overrides no assignment - not sure (red)

3. when varying diffuseColor (USDPreviewSurface property):

Karma: does nothing (teal)
GL: does nothing (teal)
GL + GeomSubset deactivated: no assignment (white)


Is there an explanation or a setting in the GL renderer that needs to change?
Thanks
Omer

Attachments:
GLColorBug.hip (277.5 KB)
GLColorBug.png (40.2 KB)

User Avatar
スタッフ
5156 posts
Joined: 7月 2005
Offline
It's a known issue that usd preview surfaces generated from a principled shader don't create a primvar reader for diaplayColor, which is why you're getting that behavior. There is a bug logged for it already, but it may take some time to fix.
User Avatar
Member
1 posts
Joined: 9月 2020
Offline
I see a behavior in h19 that seem similar to what @omerShapira outlines here. In my case I attempt to write diffuseColor as a primvar but can't seem to get this picked up by a usdpreviewsurface.

Is this bug fixed or am I running into the same one?

Thanks
Johan
User Avatar
Member
7733 posts
Joined: 9月 2011
Online
jthorngren
In my case I attempt to write diffuseColor as a primvar but can't seem to get this picked up by a usdpreviewsurface.

Usdpreviewsurface doesn't pick up primvars, usdprimvarreader does. This is not a bug.
  • Quick Links