Release Notes

Current Release

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

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 webpage

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

Dependency graph of an extension.

This is a dependency graph of the omni.usd extension. On the left are extensions that depend on omni.usd. On the right are extensions that omni.usd depends on. You can click on the image to enlarge it.

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

1.2.3 or ^1.2.3

>=1.2.3, <2.0.0

Any SemVer-compatible version of at least the given value.

Tilde

~1.2

>=1.2.0, <1.3.0

Minimum version, with restricted compatibility range.

Equals

=1.2.3

=1.2.3

Exactly the specified version only.

Comparison

>1.1

>=1.2.0

Naive numeric comparison of specified digits.

Read more about dependency range support in the Kit Manual.

Extension Support Levels

The RTX Settings Window extension

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
A core extension

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
A core extension

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
A deprecated extension

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:

A deprecation message

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.

An example of AutoNode

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.

Creating an AutoNode

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.

This code snippet is in Python.
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.

An example of Fabric Scene Delegate with Fabric-native transform hierarchies.

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 (2024.1) is focused on stability and bug fixes.

To view Material release notes for Kit 106 and Composer 2024.1, see Materials Release Notes.

All Release Notes