Changelog#

This document records all notable changes to the omni.rtx.spg extension.

The format is based on Keep a Changelog. The project adheres to Semantic Versioning.

[0.4.1] - 2026-10-08#

Changed#

  • Array, token, and asset value-inputs passed to cuda.array or slang.array reach the GPU without their elements being converted in Lua; reading .value still returns the elements

  • Consecutive CUDA nodes of a graph launch their kernels in node order in one CUDA interop section, so a chain of CUDA nodes costs about as much per frame as a single CUDA node; set /rtx/spg/cuda/mergeConsecutiveNodes to false to run each CUDA node in its own section

Fixed#

  • CUDA nodes ignored the block, grid, and shared memory size set in the launch configuration, and Slang nodes ignored the dispatch grid

  • A USD array input such as uint[] or float[] reached the kernel as 4 bytes instead of its full contents

  • cuda.static and slang.static ran a function written inline in the launch script again on every frame and filled the Lua memory over time

  • A half value given in a launch script reached the kernel as 0, a half value-input read in a launch script had a wrong value, and char, uchar, short, and ushort values given in a launch script made the node fail

  • A string value-input read in a launch script could contain bytes from past the end of the string

[0.4.0] - 2026-05-26#

Changed#

  • Scoped SPG node IDs with the spg: authoring prefix to avoid MaterialX and UsdPreview shader ID clashes

[0.3.0] - 2026-03-09#

Added#

  • Support for info:id attribute as the SPG node ID specification, enabling USD-native node type identification

  • NoOp passthrough node that copies its first input texture to its first output, useful for SPG node ID path testing

  • Support for USD token attributes in SPG shader parameters

  • Support for loading SPG assets from remote URIs (omniverse://) and local file URIs (file://)

  • Support for loading assets from compressed USD containers (.usdz)

  • Input constraints. Allow user to express input constrains.

  • Standard library of pre-built GPU processing nodes (rtx.spg.stdlib.plugin): Add, Multiply, Scale, Swizzle

Fixed#

  • Crash when instanceable non-SPG shaders were present in the scene (OMPE-85733)

Changed#

  • BREAKING: Unified inputs API — everything is input, no more ‘parameters’. Keep Lua interface backward compatible.

  • SPG and material shaders are now mutually exclusive during population