Kit 106.3 Release Highlights#
Release Date: October 2024
Kit SDK 106.3 is a Feature Branch, and a minor update release of Kit.
Fabric#
A significant change to Fabric Hierarchy landed in Kit 106.3 that improves performance with Fabric-based transform hierarchy updates. This clears a significant hurdle to enabling Fabric Scene Delegate in Physics-based scenarios and other large-scale simulations.
Much of the performance gain in this change comes from updates to Fabric’s Connectivity API.
New Connectivity Selection Caching#
Selection caching allows Fabric Hierarchy to cache a traversal selection and re-use it across multiple updates - this cache will be re-used indefinitely as long as the topology of Fabric does not change, as is often the case during simulation.
New Connectivity visitFrom APIs#
The new visitFrom
APIs allow you to efficiently start multiple visits from a cached selection. And most critically, the new purpose-built transformFrom
API incorporates the update of the modified prim itself from its unmodified parent, in addition to traversing its descendants. This removes a key bottleneck when doing hundreds or thousands of starts for transform updates across the scenegraph.
Exceeding OmniHydra Performance for Thousands of Hierarchical Changes per Frame#
The initial implementation of Fabric Hierarchy exceeded OmniHydra performance for small numbers of individual prim changes, resulting in large numbers of overall prim transform updates (ex: transforming the scene root). However, the known Achilles heel was hundreds or thousands of concurrent transform updates to mid-hierarchy prims across the scenegraph. This is no longer the case. In a test scene with 600k unique Mesh prims, Fabric Hierarchy can update 5000 mid-hierarchy Xform prims, each with 10 Xform children and a Mesh child of each of those Xforms, for a total of 21 prim updates per modified prim, at 27fps with Fabric Hierarchy. This nearly doubles the OmniHydra performance of 14fps for the same scenario with hierarchical changes applied in Fabric.
New Fast Leaf Update Mode Enabled by Default#
This change introduces a new setting, /app/usdrt/hierarchy/fastLeafUpdates
which is true by default. When this is enabled, the transform change list is scanned for leaf prims, and these have their world-space transform updated directly and in parallel using the Fabric Column API. In cases where only leaf prims had transforms updated, no hierarchical transform updates will be attempted after the leaf prims are processed. This change is useful in various scenarios but primarily targets workflows that use scenegraph instances instead of PointInstancers
. In a test scene with 600k Mesh instances or unique Mesh prims, 50k unique and varying per-frame Mesh or Mesh instance prims can be updated per frame at just over 30fps.
Progressive Ancestral _worldExtent
Updates#
When FSD (Fabric Scene Delegate) is enabled, the world-space extent of every Imagable
prim is stored in Fabric using the _worldExtent
attribute. For non-leaf prims, this represents the combined AABB (Axis-Aligned Bounding Box) of all descendant prims. This is primarily used for driving bounding box drawing during viewport selection when FSD is enabled, and shortcuts the expensive UsdGeomBBoxCache that would otherwise be required. Extent and _worldExtent
values are updated for prims during DFS visits as part of transform update. There is a separate step required to ascend the scenegraph from transformed prims in order to update the _worldExtent
value of all ancestor prims, combining the now-transformed AABBs of their children. Previously this would be completed in its entirety on each frame, but for large numbers of changes on large stages the cost was sometimes prohibitive. This change bounds the number of ancestral _worldExtent
values that will be updated per frame, and frames where no transforms occur will continue propagating these values upwards until all _worldExtent
values are correct.
Kit SDK#
For a full list of changes, see the Kit 106.3 Release Notes.
RTX Rendering#
To view the full RTX Rendering release notes for Kit 106.3, see RTX Rendering Release Notes.
Materials#
To view the full Materials release notes for Kit 106.3, see Materials Release Notes.