First, let me thank you gentlemen for taking the time to give such thorough replies—​They are much appreciated.
=========================================
Hi Nick,
It is good to run into you here! Hope all is going well with you at Pixar.
Thank you for the links and overviews—It caught an oversight on my part. I did have a cursory read of the UsdRender and UsdGeom documentation, during my first pass through the documentation. But I did somehow overlook an adequately deep dive into the Hydra (2.0) documentation. Thank you for pointing me to it. It is probably going to take me a few reads to get my head completely around it though.
Yeah, I have had a good read of the UsdPreviewSurface specification/documentation, which I found well thought out.
In general, the parts of the documentation you have pointed out are definitely helpful.
Perhaps I was too general in my initial inquiry (or perhaps I don’t have a good enough grasp of USD to ask inquiry well). Maybe a more concrete problem statement will help to clarity and narrow my inquiry.
At Blizzard (Cinematics), I inherited a pipeline with two renderers: RenderMan and Redshift. Both renderers are PBR path tracers, which will have a number of overlapping renderer settings/options and renderer object settings/attributes. For example, both PBR path tracing renderers have an object setting/attribute to enable/disable visible to camera rays. I guess I naively (or idealistically) thought I would be able create one UsdGeomPrimvar that could drive camera rays enable/disable in both renderers, like so (please forgive the following crude Python)
# A generic path tracing prmvar for camera rays
model = stage.DefinePrim("/world/group/model", "Xform")
model.SetMetadata('kind', 'component')
primvar = UsdGeom.PrimvarsAPI(model.GetPrim()).CreatePrimvar('visibility:camera', Sdf.ValueTypeNames.Int).Set(0)
# Would get converted to UsdRi when rendering with PRMan
riStatements = UsdRi.StatementsAPI.Apply(model.GetPrim())
attr = riStatements.CreateRiAttribute("camera", "int", "visibility").Set(0)
# Would get converted to UsdRedshift (a USD Redshift Schemas I just made up, as I don't think Redshift has one currently) when rendering with Redshift
redshiiftStatements = UsdRedshift.StatementsAPI.Apply(model.GetPrim())
attr = redshiftStatements.CreateAttribute("primary_ray", "int", "visible").Set(0)
Hopefully, that clarifies and narrows my inquiry.
=========================================
Hi Paolo,
It is nice to see you here too! Hope the winter is not too bad for you in Wellington (the winter wind there was scary at times).
Yeah, I definitely need to spend more quality time with the Hydra docs and source code—it appears to be the missing piece of the puzzle for me.
Yeah, I agree with you. It appears that some plugins and DCCs are more advanced and adhere to the reference implementation more than others. I guess that is to be expected at this time, as many developers are still relatively new to USD—Me included!
It will just take some time for us all to sort it out and converge to the specification.
Thank you for your additional comments and good luck on your new endeavor.
=========================================
Hi Mark,
Thank you for sharing your insight. We are currently using Katana. However, we did meet with our SESI representatives about Solaris and Karma. I must say we were impressed. Solaris has made some great progress with USD. Once we set up a basic USD pipeline in Katana. we are definitely going to have a deeper look at Solaris and Karama. I have read and bookmarked that HDK page for future reference. Thank you!
Kind regards,
Ryan Heniser
Senior (Shading/Rendering) Cinematics Technical Director II
Blizzard Entertainment