UJITSO Derived Data Cache System#

UJITSO (Universal Just-In-Time Scene Optimization) is Omniverse’s derived data caching system designed to accelerate scene loading by caching pre-processed representations of textures, geometry and materials.

When UJITSO is enabled, assets are processed once and the results are stored in a cache. Subsequent loads of the same assets retrieve the cached data, significantly reducing loading times.

The system works transparently: when a scene is loaded, UJITSO automatically checks if a cached version of the derived data exists. If a cached version is found, the cached data is used directly. If not, the data is processed and stored in the cache for future use.

The key benefits of UJITSO include:

  • Faster scene loading: pre-processed assets load faster than processing them on-demand each time.

  • Reduced data transfer: certain source assets such as textures don’t need to be available locally and only metadata and an optimized representation needs to be transferred.

  • Automatic invalidation: when source assets change, the cache is automatically invalidated and rebuilt.

  • Deduplication: assets with identical contents will be cached once, reducing storage, transfer time and loading time.

Enabling UJITSO#

UJITSO is enabled by default. This is controlled by the setting:

Setting

Description

Default

/UJITSO/enabled

Global toggle to enable or disable the entire UJITSO system

true

When /UJITSO/enabled is set to false, all UJITSO processors are disabled regardless of their individual settings.

Quick Start#

Default Setup with Local Cache#

For single-user setups, the default configuration works well:

--/UJITSO/enabled=true
--/UJITSO/textures=true
--/UJITSO/materials=true

Using OmniHub#

For local caching with cross-application sharing:

--/UJITSO/enabled=true
--/UJITSO/datastore/allowHubDataStore=true

Enterprise Deployment with gRPC and DDCS#

For enterprise deployments with a centralized cache service:

--/UJITSO/enabled=true
--/UJITSO/datastore/allowGRPCDataStore=true
--/UJITSO/datastore/grpcDnsName="ddcs.ddcs.cluster.local:3010"
--/UJITSO/datastore/GRPCDataStore/useTLS=true

Clearing the Cache#

To clear the local derived data cache, simply delete the cache directory:

Default Cache Locations#

Windows

%LOCALAPPDATA%/ov/cache/DerivedDataCache

Linux

~/.cache/ov/DerivedDataCache

Alternatively, use /UJITSO/forceBuilds=true to rebuild without clearing the cache.

Processors#

UJITSO uses specialized Processors to transform source data into optimized runtime representations. Each processor type handles a specific category of assets. The output of a Processor is referred to as Derived Data.

Each available Processor can be enabled or disabled individually.

Available Processors#

Processor

Setting

Description

Default

Textures

/UJITSO/textures

Processes source textures into mip-mapped, GPU-optimized formats

true

Materials

/UJITSO/materials

Compiles and caches material shader bytecode

true

Geometry

/UJITSO/geometry

EXPERIMENTAL: processes mesh, curve and point geometry into optimized runtime formats

false

Texture Processor#

The texture processor converts source images into GPU-ready formats. When a texture is first encountered, UJITSO processes it into an optimized format with pre-generated mipmaps and stores the result in the cache. Future loads retrieve the processed texture directly.

To enable or disable texture processing:

--/UJITSO/textures=true

Material Processor#

The material processor compiles MDL materials into shader bytecode. This is particularly beneficial for complex materials that take significant time to compile.

To enable or disable material processing:

--/UJITSO/materials=true

Geometry Processor#

Warning

The geometry processor is currently experimental and not production-ready. It is disabled by default and will be enabled automatically when it reaches production quality.

The geometry processor handles mesh data, curves, and point clouds. It converts USD geometry into optimized runtime representations that can be loaded directly by the renderer.

When enabled, the geometry processor caches all geometry in the scene using a priority order based on camera distance. Near geometry is prioritized and can be streamed before all distant geometry has been cached. This enables progressive loading scenarios, such as point cloud streaming where caching and streaming happen continuously as new data arrives.

To experiment with geometry processing:

--/UJITSO/geometry=true

A persistent setting is also available that remembers your geometry processor preference across sessions:

--/persistent/UJITSO/geometry=true

Data Stores#

UJITSO uses a data store to cache derived data. Only one data store is active at a time, selected based on configuration and availability.

UJITSO selects a data store to use based on configuration and availability in the following priority order:

  1. gRPC Data Store - if allowGRPCDataStore==true and grpcDnsName is set.

  2. OmniHub Data Store - if allowHubDataStore==true and OmniHub service is available.

  3. Local Data Store - fallback if allowLocalDataStore==true.

Local Data Store#

The local data store provides caching directly on the local filesystem. This is the current default when OmniHub is not available.

Local Data Store Settings#

Setting

Description

Default

/UJITSO/datastore/allowLocalDataStore

Enable the local filesystem cache

true

/UJITSO/datastore/localCachePath

Path to the local cache directory

${omni_cache}/DerivedDataCache

/UJITSO/datastore/localDataStore/largeChunkDiskBudgetMB

Maximum size of the disk cache for large data (textures, geometry) in megabytes

102400

Default Cache Locations#

Windows

%LOCALAPPDATA%/ov/cache/DerivedDataCache

Linux

~/.cache/ov/DerivedDataCache

OmniHub Data Store#

Warning

The OmniHub data store is currently experimental and not production-ready. It is disabled by default.

OmniHub is a local caching service that runs on your desktop. It enables sharing of cached data between multiple Omniverse applications running on the same computer.

OmniHub Data Store Settings#

Setting

Description

Default

/UJITSO/datastore/allowHubDataStore

Enable the OmniHub cache

false

When OmniHub is enabled and the OmniHub service is running, UJITSO will use it as the cache backend. This enables cross-application cache sharing, where multiple Omniverse apps on the same machine share the cache.

gRPC Data Store (with DDCS)#

For enterprise and cloud deployments, UJITSO supports a high-performance GRPC-based cache service. This is typically used with the Derived Data Cache Service (DDCS), a scalable caching service that can be deployed in your infrastructure. DDCS is designed to run with multiple shards for horizontal scaling.

gRPC Data Store Settings#

Setting

Description

Default

/UJITSO/datastore/allowGRPCDataStore

Enable the gRPC cache

true

/UJITSO/datastore/grpcDnsName

Endpoint address for the GRPC cache service

/UJITSO/datastore/GRPCDataStore/useTLS

Use TLS encryption for GRPC connections

true

Endpoint Configuration#

The grpcDnsName setting specifies the address of the DDCS service:

--/UJITSO/datastore/grpcDnsName="ddcs.ddcs.cluster.local:3010"

The format is hostname:port. In Kubernetes environments, this is typically a service DNS name within the cluster.

TLS Configuration#

For secure connections, TLS is enabled by default. When connecting to services that don’t require TLS (e.g., local testing):

--/UJITSO/datastore/GRPCDataStore/useTLS=false

For production deployments with TLS, ensure your DDCS service is configured with appropriate certificates.

Self File (NVCF Multi-Tenancy)#

When running in NVCF (NVIDIA Cloud Functions) clusters, multi-tenancy support requires authentication via a self file. NVCF provides a JWT token to the container through a file, which UJITSO reads to authenticate requests to DDCS.

Self File Settings#

Setting

Description

Default

/UJITSO/datastore/GRPCDataStore/selfFile/enabled

Enable reading authentication token from self file

false

/UJITSO/datastore/GRPCDataStore/selfFile/path

Path to the self file containing the JWT token

/var/run/nvcf/info/self

Debugging#

Force Rebuild#

To force UJITSO to rebuild all cached data (ignoring the cache):

--/UJITSO/forceBuilds=true

This is useful for debugging cache issues or ensuring fresh builds.

Build Logging#

UJITSO provides several settings to log build activity, which can be useful for debugging cache behavior.

Logging Settings#

Setting

Description

Default

/UJITSO/failedDepLoadingLogging

Log each time a build result is not found in cache (triggers a new build) - to debug cache misses

false

/UJITSO/logBuildResults

Log when build results are received

false

/UJITSO/logInSingleLine

Output logs in single-line format (useful for cloud/cluster logging)

false

/UJITSO/verboseHashLogging

Enable verbose logging of hash computations

false