Kit 106.0 Release Highlights
Kit 106.0.3
Release Date: September 2024
Kit SDK 106.0.3 is a patch release of Kit 106.0.
For a full list of changes, see the Kit 106.0.3 Release Notes and RTX Rendering Release Notes.
Kit 106.0.1
Release Date: July 2024
Kit SDK 106.0.1 is a patch release of Kit 106.0. This release brings Kit SDK 106 out of Beta and is a full release.
For a full list of changes, see the Kit 106.0.1 Release Notes and RTX Rendering Release Notes.
New Default Extension Registry
To provide a more reliable user experience when using the Extension Manager, the kit/default extension registry URL has been updated.
The new URL is specific to the current major version of Kit SDK and only extensions compatible with Kit 106 are included.
The new default kit/default extension registry is:
https://ovextensionsprod.blob.core.windows.net/exts/kit/prod/106/shared
Important
When updating an existing Kit application to Kit 106.0.1, be sure to use the new URL to get the all the latest Kit extensions.
Previous Kit releases used the following default registry:
https://ovextensionsprod.blob.core.windows.net/exts/kit/prod/shared
Note
The previous default registry can be used to access older Kit 105 and older extensions, but there is no guarantee of compatibility.
Kit 106.0 Beta
Release Date: May 2024
Kit SDK 106.0 Beta is a major release and has significant updates to support and distribution. We have reduced the overall scope, size, and dependency chain of the SDK dramatically while simultaneously increasing the quality of core features such as Rendering, Physics, and OmniGraph. This means Kit 106 marks a significant shift in focus away from catering to reference applications, and towards serving developers’ needs.
With this update, the leaner SDK size makes it faster and more intuitive for you to build generative AI-enabled tools, applications, and services for industrial digitalization.
Kit Developer Experience
If you are new to Kit SDK, get started here: https://github.com/NVIDIA-Omniverse/kit-app-template
Kit Base Editor Improvements
Kit Base Editor is a sample kit application that is included with the SDK. With Kit 106, this app is built using only core extensions.
Additionally, you can run it without having to build it first. This allows you to quickly evaluate USD and RTX, or use it as a starting point for building a new Kit-based app.
The Base Editor includes the following extensions:
RTX Viewport
Render Settings
Stage Window
Property Editor
Content Browser
Console
Toolbar
Extension Docs Improvements
Developer documentation for core extensions has been improved been improved. For each of these extensions, we’ve added an overview describing the extension, usage examples, settings, default values, and docstrings for APIs.
Extension Dependency Cleanup
To give developers more control over the apps they build, extension dependencies have been dramatically reduced in Kit SDK. Each extension pulls in the minimal amount of dependencies in order to work, making it easier for you to control which extensions are included in an app.
Note
Upgrading Kit apps from Kit 105 to 106 may mean that some extensions need to be explicitly added to your app dependencies. For example, omni.usd.schema.audio
is now optional to omni.hydra.scene_delegate
- so extensions that depend on the Omniverse USD audio schema will need an explicit dependency added.
Dependency Operators
Developers now have more flexibility in specifying dependencies by using standard SemVer operators.
The following operators are now available:
Requirement |
Example |
Equivalence |
Description |
---|---|---|---|
Caret |
|
|
Any SemVer-compatible version of at least the given value. |
Tilde |
|
|
Minimum version, with restricted compatibility range. |
Equals |
|
|
Exactly the specified version only. |
Comparison |
|
|
Naive numeric comparison of specified digits. |
Read more about dependency range support in the Kit Manual.
Extension Support Levels
To better communicate the level of support for each extension, all extensions that we release with Kit SDK have been grouped into three different categories:
Core
Core extensions are meant as building blocks for any application. Many of the changes in this release are intended to bring these extensions to a higher level of quality. Improvements include better and more complete documentation and non-opinionated code architecture, which give you more control over your applications.
Sample
Sample extensions are intended only as developer examples. While we intend for these extensions to work as described, they are structured to be more opinionated for specific workflows and may not be appropriate for all applications. For this reason, we encourage our customers to take these extensions as-is and to fork them for their own use. We will not include these extensions in product roadmaps, nor do we plan on implementing feature requests for them.
Deprecated
Deprecated extensions are no longer supported and will be removed in a future version. A deprecated extension will display a deprecation message in the Extension manager. Please refer to the deprecation messages of individual extensions for migration purposes:
OmniGraph
With Kit 106, OmniGraph has been updated with quality of life improvements, making visual scripting in Omniverse easier and faster to work with.
AutoNode
Auto-generate custom node definitions from a Python function for immediate use in a graph editor. This workflow allows for rapid prototyping and iteration of custom node types.
By pasting a Python snippet into the script editor, you can convert that code to a native Omnigraph node that is immediately available in the graph editor. This will speed up prototyping and design of custom node authoring. It allows you to test and see your results right away.
Improved Wiring
Reverse wiring, re-wiring, and wire snapping make graph authoring much easier. Learn more about wiring.
Variable Improvement
More easily create, rename, manage, and search for variables in a graph. Learn more about graph variables.
USDRT Interface for Warp and Batch
The USDRT Scenegraph API has new support for efficiently processing sets of prims selected from the stage according to some criteria. The APIs support processing on CPU and GPU, in C++ and Python (using NVIDIA Warp). Possible uses include:
A physics system updating all physics meshes.
A clash detector finding collisions between all tagged meshes.
A renderer rendering all meshes.
An animation system updating all skeletons.
A shader compiler compiling all materials.
A procedural mesh system generating meshes for all prims containing input parameters.
Using the new APIs has the following advantages compared to the standard USDRT APIs for finding and iterating over prims.
By leveraging Fabric’s stage index, the new APIs find the set of prims in constant time, as opposed to visiting every prim on the stage using a traversal. For example, if you want to select 1000 prims from a stage of 1000000, the search cost is some constant k, not k*1000000 or even k*1000.
The new APIs give access to Fabric’s vectorized memory representation of the selected prims’ attributes, which allows fast, parallelizable access on CPU or GPU.
Accessing the N selected prims using the new APIs is faster than calling the existing APIs N times, as it allows USDRT to amortize overheads. This gives significant performance benefit with N as low as 100.
Learn more about the USDRT Scenegraph API here.
Standardized Transform Hierarchy with Fabric
Fabric Scene Delegate is the next-generation Omniverse scene delegate for Hydra. It leverages the power and performance of Fabric for a faster, more flexible, and streamlined rendering pipeline.
Fabric Scene Delegate now supports Fabric-native transform hierarchies when manipulating prims in Fabric using the new IFabricHierarchy interface. Writing a prim transform in Fabric will now affect the computed world transform of its descendant prims, even for prims that only exist in Fabric.
Learn more about Fabric-native transform hierarchies here.
import omni.kit.app
import omni.client
from omni.kit.async_engine import run_coroutine
import omni.usd
from usdrt import Gf, Sdf, Usd, Rt
import math
stage = Usd.Stage.Attach(omni.usd.get_context().get_stage_id())
# Note that we're transforming the /World prim, and this is inherited
# by its descendants entirely in Fabric
world_prim = stage.GetPrimAtPath("/World")
xformable = Rt.Xformable(world_prim)
i = 0
async def move_world():
for i in range(1000):
x = math.sin(math.radians(i*3)) * 100
m = Gf.Matrix4d(1).SetTranslate(Gf.Vec3d(x, 0, 0))
xformable.GetFabricHierarchyLocalMatrixAttr().Set(m)
e = await omni.kit.app.get_app().next_update_async()
run_coroutine(move_world())
You can see below how the entire Animal Logic ALAB scene is transformed by setting a local transform value on the root Xform prim in Fabric, using the USDRT API. All descendant prims inherit this transform in Fabric and their position in the viewport is updated accordingly with Fabric Scene Delegate.
RTX Rendering
The latest RTX Rendering release (RTX 106) is aimed at improving MDL materials and enhancing post processing capabilities.
To view the RTX Rendering release notes for Kit 106, see RTX Rendering Release Notes.
Materials
The latest release of Omniverse Materials (106.1) is focused on stability and bug fixes.
To view Material release notes for Kit 106.1, see Materials Release Notes.