Hydra Rendering and Scene Index
Hydra is USD's render-agnostic layer: it takes scene data and hands it to a delegate such as Storm, Arnold, or RenderMan. This domain tests how data reaches the renderer and how to debug what the renderer actually sees.
Core architecture
- HdRenderIndex is the retained scene graph holding Rprims (geometry), Sprims (lights, cameras, materials), and Bprims (buffers, textures).
- A render delegate (e.g.
HdStorm) implements task execution and drawing for one renderer. - Legacy delegates pull data through HdSceneDelegate (
Get,GetTransform, dirty bits). The modern path is HdSceneIndex: a pull-based tree queried withGetPrim,GetChildNames, andGetData, updated by invalidation messages rather than broad dirty lists. UsdImagingStageSceneIndexconverts a USD stage into a scene index;HdSceneIndexAdapterSceneDelegatebridges a scene index to delegate-based consumers.- Scene index filters chain between source and render index: merging, dependency-forwarding, and pruning filters.
What the renderer actually receives
Only prims surviving purpose and render-tag filtering matter. proxy and guide purpose geometry is skipped by default, and bounding boxes may substitute for it. Instanced geometry arrives as shared prototypes, so one prototype edit costs one update, not N.
Worked example
A cube looks stale after a script edits its Xform. In usdview, the Composition tab shows the opinion is authored in a sublayer that was never reloaded. Reload the layer. In a scene-index pipeline, also confirm the xform data source invalidation was emitted - otherwise the renderer keeps its cached transform even when composition is correct.
Traps
Blaming Hydra for composition bugs; expecting purpose = proxy geometry to render as final; and assuming scene-index updates are pushed - they are pulled after invalidation.