NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4596 most downloaded on PyPI
Pixar's Universal Scene Description
Last release 2 months ago
20 Jul 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 25 of 27 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
27 releases · first in 2020
One column per quarter.
Deprecated support for Python 3.9 and 3.10
We anticipate moving to the VFX Reference Platform CY2025 in the next release of OpenUSD.
Deprecated support for Python 3.9 and 3.10
Increased minimum CMake version to 3.27 (PR: #4111)
Python modules are now installed under lib/pythonX.Y/site-packages on Linux
and MacOS and Lib/site-packages on Windows by default. This location can be
customized via the --python-install-dir argument in build_usd.py or
PXR_PYTHON_INSTALL_DIR when running cmake.
(Issue: #30)
build_usd.py updates:
Enabled building as an Apple Framework or XCFramework. These build OpenUSD as
a monolithic shared library with TBB and OpenSubdiv linked as static
libraries. Framework builds are enabled by default for embedded Apple OS
builds and can be toggled via the PXR_BUILD_APPLE_FRAMEWORK option when
running cmake or the --build-apple-framework flag when running build_usd.py.
See README.md for more details.
(PR: #3713,
#3715)
The pxrConfig.cmake package configuration file no longer requires consumers to use the exact same Python patch version as what was used during the initial build. (PR: #3759)
Added support for applying ctest labels to tests in pxr_register_test for
use in CI and other contexts.
(PR: #4054,
#4055)
Executables now explicitly link against Python when
PXR_PY_UNDEFINED_DYNAMIC_LOOKUP is enabled to avoid missing symbol errors.
(Issue: #2371,
#2568,
#3031,
PR: #3577)
Various fixes and cleanup in the build system. (PR: #3941, #3940)
Various fixes for compiler warnings and errors. (PR: #3955, #4031, #4032, #4036, #4038, #4071)
Avoid using homebrew-installed dependencies when building OpenImageIO (Issue: #3870)
Important: As part of the process to deprecate binary .usd and .usdc
files older than version 0.8.0, the PXR_USDC_EMIT_DEPRECATION_WARNINGS
environment variable is now enabled by default.
Important: Added the usdupdatecrate utility for updating older .usd
and .usdc binary files to newer versions. See
FAQ page entry
for more details.
Improved async-signal-safety in libArch crash handling code.
Added support for long filenames on Windows to arch/fileSystem.h routines.
(PR: #2239)
Stubbed out TfPyLock to do nothing in Python-disabled builds, so calling code
can use TfPyLock transparently whether Python support is enabled or not. (PR:
#4068)
Changed TfDiagnosticTrap::Dismiss() to re-post trapped TfErrors, not just
re-report them. This lets TfErrorMarks active at the time of dismissal
catch them. Changed libWork dispatcher & loops utilities to use
TfDiagnosticTrap and TfDiagnosticTransport to uniformly convey all
diagnostics back to the calling/waiting thread.
Various TsSpline updates:
TsExtrapolation parameter loopBoundaryTime for looped
extrapolation.TsSpline::SetTimeValued in favor of using native GfTimeCode
value type during spline construction.TsExtrapolation constructor that takes
TsExtrapMode and "double".TsSpline evaluation using knot preTangent width, which was
previously flipped.Removed tsTest framework from ts C++ library to ensure ABI compatibility between builds with and without tests enabled. (PR: #4060)
Added optimized support for constructing and assigning VtValue with rvalue
held-types, moving them into internal storage.
Added the ability for types outside Vt to register for VtVisitValue &
VtVisitValueType dispatch.
Added VtDictionary::insert_or_assign and VtDictionary::try_emplace.
Replaced SdfTimeCode with GfTimeCode. SdfTimeCode continues to work as an alias for GfTimeCode but is deprecated and will be removed in a subsequent release.
Added a custom glob-pattern matcher for SdfPathExpression, yielding 5x-20x
speedups over the previous implementation in microbenchmarks.
Split SdfLayer::Export() and Save() cleanly into distinct code paths, and
stopped treating Export(this-resolved-path) as Save().
Bumped .usda file format version to 1.3 and crate file format version to 0.15.0 to support updates for spline loopBoundaryTime and GfTimeCode value type support.
Allow SdfPathExpression::ReplacePrefix to accept empty paths as the new
prefix. If the new prefix is empty, expression references and path patterns
containing the old prefix will be removed from the returned path expression.
Numerous performance optimizations for composition aimed at asset structures involving deep chains of references, inherits, and relocates. In one particularly heavy production rig, load time dropped from 8 minutes to 98 seconds (-80%) and memory usage dropped from 4.7GB to 1.7 GB (-63%).
Added notice dispatch for dynamic validator/suite registration in UsdValidationRegistry. For plugin validators and suites, registry initialization is sufficient for clients to query their metadata, but for dynamically registered validators/suites, clients can listen to these notices to discover newly registered validators or suites and update their UI or validation context accordingly.
UsdNamespaceEditor is officially ready for use. This release includes the following updates:
Various value clip related changes:
primPath value in the clips dictionary differed from the path of the
prim where the dictionary was authored.UsdNotice::ObjectsChanged::GetChangedFields now includes the "timeSamples"
field when changing an attribute's time samples.
Made UsdAttribute::SetSpline a const method for consistency.
Various fixes to usdGenSchema:
Added a new matches_regex function for use in variable expressions. This
function uses regular expressions to perform pattern matching and supports the
extended POSIX regular expression grammar. It can operate on a single string
or array of strings.
Fixed testUsdCreateProperties to verify authored path only in order to avoid any false positives. (Issue: #4094, PR: #4123)
Added usdzUtils.UsdzScanIterator for fast read-only iteration & inspection
of .usdz package contents, and usdzUtils.UsdzUpdateIterator for modifying
.usdz packages.
Fixed an issue that could potentially result in a large amount of warnings about failing to resolve paths being omitted when creating USDZ files or localizing assets.
UsdUtils dependency related functions now evaluate expression variables in asset paths.
Removed previously deprecated UsdUtils.ComplianceChecker. Clients are expected to migrate to the UsdValidation framework.
Various fixes with UsdGeomSubset validation. (Issue: #4061)
Updated UsdGeomLinearUnits to include "decimeters" as a valid unit. (PR: #4059)
Added back plate support to USD. More details can be found in the back plate proposal. (Issue: #1939)
Implemented Level-of-Detail schemas as described in the proposal Level of Detail (LOD) API for USD. Support for LOD must be implemented in the renderer. Hydra support is under development.
Added UsdProfiles, which provides infrastructure for capability-based profile compatibility queries in USD scenes. Profiles represent named, coherent sets of capabilities for a specific platform or pipeline target, such as a versioned studio release target or a platform conformance level. Profiles allow content authors to declare on behalf of a consumer what capabilities are necessary to work with the content. See USD Profiles proposal for more details.
Updated UsdLuxLightFilter to respect UsdShadeConnectableBehavior encapsulation rules. Previously we allowed connecting a light filter across multiple lights, which breaks encapsulation. This is now disallowed and checked for via a new validator in the usdLuxValidators plugin. (Issue: #3908)
Fixed UsdPhysics parsing utility to correctly parse primvars:width for
Points colliders. Previously, the parsing utility would only look for the
native widths attribute.
(PR: #4089)
Added HydraRenderPassAPI, an API schema on UsdRenderPass with a
hydra:rendererName attribute designating a Hydra renderer plugin if not
otherwise specified.
Added more validators to UsdPhysicsValidators:
Various Hydra 2.0 related changes:
UsdImagingUsdSceneIndexInputArgsSchema is now
UsdImagingSceneIndexCreateArgsSchema,
HdRendererPlugin::GetSceneIndexInputArgs() is now
HdRendererPlugin::GetSceneIndexCreateArgs().HdRendererCreateArgsSchema forHdRendererPluginRegistry::GetDefaultPluginId,
HdRendererPlugin::IsSupported, HdRendererPlugin::CreateRenderer, and
HdRenderDelegateAdapterRenderer::HdRenderDelegateAdapterRenderer. Old
overloads removed.HdRendererPlugin::GetSceneIndexCreateArgs() for all renderers.HD_ENABLE_SCENE_INDEX_EMULATION env vars.HdxTaskController) or methods
(such as methods on UsdImagingGLEngine) as deprecated.Renamed HdRenderIndex ctors for clarity, deprecating use outside of
emulation.
HdsiRenderPassPruneSceneIndex now prunes instances matched by the prune
collection.
HdxPickFromRenderBufferTask now accounts for camera framing policy when
mapping pick NDC to the framebuffer, resolving incorrect pick results when a
camera mask is applied.
Added geomSubset path in the log to help with debugging. (PR: #4073)
Fixed an issue with native instancing in Hydra. (Issue: #4040)
Hydra Scene Browser now shows primType in notice logger.
Improved Hydra point picking by allowing explicitly setting point sizes and depth bias in HdxPickTask.
Revised the static ::New() function created by the HD_DECLARE_DATASOURCE
macro to use single-allocation of shared pointers via std::allocate_shared.
No changes to existing data source implementations are required, but data
source implementors are encouraged to avoid using the new operator to
construct data sources, implementing redundant ::New() functions, or
exposing public constructors. Use HD_DECLARE_DATASOURCE_ABSTRACT only for
data sources with pure-virtual functions not intended for direct instantiation.
Improved the stability of HdDataSourceHash().
Added HdInstanceProxyViewSceneIndex which unrolls leaf instance prims
that aren't under an instancer prim to present instance proxy prims similar to
a USD instance proxy traversal.
We now generate a more readable name when registering the terminal scene index
with the HdSceneIndexNameRegistry in backend emulation.
HdMtlx node names generated by HdMtlxCreateNameFromPath now use the full
path to prevent naming conflicts.
Added cardVisibility to UsdGeomModelAPI to allow invising cards in the stage's upAxis direction.
Fixed regression which could produce incorrect blend shape weights. (PR: #4126)
Made a change to not dirty a material if the only changes are UI changes on a descendant prim.
Added support for time-varying render settings and render product attributes.
UsdImagingRerootingSceneIndex uses a PcpMapFunction for more comprehensive
namespace remapping capabilities.
UsdImagingDataSourceAssetPathAttribute keeps a single-entry cache for
shutterOffset==0.0, to prevent repeated invocation of the path resolver for
SdfAssetPath-valued material parameters when updating materials in response to
invalidation.
Made a change to send invalidation when a material terminal connection is changed from one shader prim to another. (PR: #4053)
Made a change to no longer send invalidations on materials when an xform is changed. (PR: #4088)
UsdImagingDataSourcePointInstancer skips emitting prototypes into Hydra when every instance is made inactive via inactiveIds metadata.
Made a fix for proxy path translation when point instancers and scenegraph instances are interleaved. (Issue: #4056)
Added guards against dependency cycles among UsdGeomPointInstancer prototypes. (Issue: #942)
Made a fix to avoid a crash when numJoints == 0. (Issue: #1037)
Reworked the logic of the instanceProxyPathTranslationSceneIndex (Issue: #4056, PR: #4058)
Introduced UsdImagingSceneIndex which encapsulates the chain of scene
indices created by UsdImaging in favor of the deprecated
UsdImagingCreateSceneIndices.
Removed USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX_OBSERVER_RENDERER env var.
Fixed various inconsistencies in how instances were indexed between the
HdxSelectionSceneIndexObserver and the UsdImagingSelectionSceneIndex.
Implemented usdExecImaging scene index, which overlays the xforms of
ExecIrJointScope guides and UsdGeomXformable prims with values computed by
OpenExec.
USDIMAGINGGL_ENGINE_ENABLE_EXEC_SCENE_INDEX=1.USDEXECIMAGING_ENABLE_USDGEOM_XFORMABLE_ADAPTER=0.Added UsdImagingMotionAPIAdapter. UsdGeom's MotionAPI can now be applied to arbitrary prims, with MotionAPI parameters available in Hydra. (PR: #3974)
Improved the stability of propagated instance prototype paths.
Added support for evaluating the set of USD predicate functions in
UsdGetCollectionPredicateLibrary().
Fixed a bug in querying the child prim paths of an instance proxy prim path.
Storm now applies the active render pass visibility collection to instances.
Added initial back plate support. Features not yet supported in Storm: visibility toggles, opacity, color grading, depth map, animated materials, unlit materials.
Performance improvements in order-independent transparency shader compilation and buffer layout.
Added option to further decrease OIT memory use by packing transmission,
depth, and color, with some precision loss. Set environment variable
HDX_ENABLE_OIT_PACKED_DATA true to enable OIT packing. Disabled by default.
(PR: #3888)
Added an HdSt rprim and shaders for rendering spheres natively in Storm using
a billboarded quad. This feature is guarded by the
HDST_ENABLE_NATIVE_SPHERES env var.
Enabled by default the use of fragment shader barycentric coordinates for sampling of texture coordinates and other surface parameterization. This previously was enabled by default for Metal and now also for Vulkan and OpenGL.
Fixed evaluation of displacement shading on triangulated quads for Vulkan and OpenGL.
Added RenderMan energy filter support to Hydra, UsdImaging, and HdPrman. Energy filters (new in RenderMan 27) apply per-filter multipliers and LPE expressions to gathered energy, enabling effects like color grading or selective energy clamping on specific light path expressions.
Made a change to generate stable and legible identifiers for the id, id2, and identifier attributes.
Made a change to apply the active render pass collections to instances, including matte, cameraVisibility, and renderVisibility. This currently only works for outer-most instances.
Adjusted plugin order so implicit surfaces can be both consumed by and produced by HdGp procedurals, and be tessellated subsequently.
Disabled parallel sprim sync for display filters and sample filters because the underlying HdPrmanRenderParam code is not safe for concurrent access.
Unified type dispatch for material parameters and object attributes, fixing certain less common cases such as arrays of integer GfVec types.
Added ability to allow interactive rendering using a RenderSettings prim.
Fixed a bug that prevented logging of progress messages during batch renders.
Fixed a bug that could cause nested instanced lights to become frozen.
Fixed a bug that caused a spurious warning about grouping:membership being unsupported in prototype groups (nested instancing).
RtxHioImage plugin will now use the texture's authored mip pyramid when present.
Removed legacy MeshLightAdapter and VolumeLightAdaptor from HdPrman.
Restored user-authored grouping:membership on lights.
Fixed a bug where instanced lights were not correctly updated interactively following a transform.
Removed "hider:type" in interactive mode to prevent a crash if set to "bake".
Finalized the mesh light's Sprim before its Rprim to avoid Riley warning W01001.
We no longer issue R10043 __lightFilterParentShader unknown or mismatched input parameter error if light filter is not PxrBarnLightFilter,
PxrCookieLightFilter or PxrGoboLightFilter.
Fixed a bug that caused the camera aspect ratio conform policy not to work in H21 Solaris' viewport.
Added support for ri:dofaspect.
Made updates to get projection working in H22 Solaris' viewport.
Fixed a crash when projection prim isn't valid.
Add Rendering and Display Color Space Scene Index Plugins to convert colors from source color spaces into the rendering color space, and the rendering color space into the display color space.
Added UsdTransformColor OSL shader to support color space conversion.
Added support to nano color for the G24Rec709 color space.
OpenExec invertible rigs support.
OpenExec now supports invertible rigs functionality, useful for posing model skeletons for animation authoring workflows where invertibility and switching between rigs is important. Controllers and computations are provided to allow for forward computed pose transforms from inputs, as well as inverting from pose transforms to inputs.
Note that the pertinent schemas and APIs are limited in functionality, subject to change, and not yet ready for production use.
This release includes the following features to support invertible rigs:
Added a new example "irExample" demonstrating invertible rigs functionality.
Includes a plugin for usdview that allows authoring to avars and switching
between rigs with compensation. Plugin can be enabled by setting the
USDVIEW_ENABLE_OPENEXEC_DEMO_PLUGIN env var to 1. Documentation is
available here.
Allow general callable objects, including lambdas with capture, as computation
callbacks. Before, only function pointers were allowed. Callbacks must be pure
functions that are safe to invoke in parallel and can only access input values
through the VdfContext parameter.
Added core exec support for connection dataflow over a single connection. Note that multiple connections, or a single connection that targets any object other than a valid attribute of the same type are not yet supported. In any of these unsupported cases, the resulting computed value is the resolved value of the attribute that owns the connection.
ExecIr schemas are no longer codeless schemas.
usdrecord consults HydraRenderPassAPI for the renderer plugin to use if a
--renderer argument is not provided.
usdrecord reports Tf errors but no longer treats them as fatal unless the
new --abortOnError argument is provided.
Made various quality-of-life improvements: Open File dialog starts in the current file location, a new application icon was added, and PNG icons were replaced with SVG icons for better scalability. (PR: #3985)
Added --viewportSize argument for launching with a specific viewport size.
Fixed Validation Widget to correctly populate all validators, including non-plugin validators during initialization.
Updated Validation Widget to listen to notices for dynamic validator/suite registration and update itself to include newly registered non-plugin validators.
Made various improvements to the Hydra Scene Debugger:
Updated default MaterialX version to 1.39.5.
Refactored HdStMaterialXShaderGen to reduce code duplication. (PR: #3898)
Improved support for UsdPrimvarReader with MaterialX in Storm. (PR: 4091)
Fixed handling of MaterialX Spotlights and light attenuation in Storm.
Updated contribution guidelines with notes about AI assistance. Incorporates some clarifications on general guidelines. (PR: #4027)
Updated Time and Animated Values user guide to include information on value resolution, time samples, splines, and value clips.
Various small updates to Namespace Editing user guide.
Updated the Preview Surface Spec clarify handling of opacity and opacityMode.
Various broken link fixes and updates for using doxygen 1.12.
.usdc reader for malformed oversize array-like
reads, and guards to range check arithmetic against possible overflow.
security advisory on github<details open> <summary><b>Previous Releases</b></summary>
Applied several security fixes from upstream OpenEXR repository to hioOpenEXR. (PR: #4028, #4030)
Various fixes and changes to build_usd.py:
Removed support for Python 3.8 and added support for Python 3.14 for the usd-core PyPI package.
Updated build to use Ptex's cmake package config file. (PR: #3938)
Updates to GitHub CI:
Updated OpenSubdiv build configuration to support access to GLSL patch shader source on all platforms, and removed some no longer needed OpenSubdiv related build definitions.
Addressed minor warnings during build. (Issue: #3341, PR: #3872, #3889)
Enabled the use of ccache and other compiler cache utilities. (PR: #3142)
Important: Started the process to deprecate binary .usd and .usdc files
older than version 0.8.0. The environment variable
PXR_USDC_EMIT_DEPRECATION_WARNINGS can be set to "1" to cause USD to emit a
warning when opening these files. We anticipate enabling this warning by
default in the next release.
Added Windows-specific code that retries atomic-rename attempts when saving or
exporting files. The Windows-specific env settings
PXR_WINDOWS_FILE_ATOMIC_RENAME_RETRIES and
PXR_WINDOWS_FILE_ATOMIC_RENAME_RETRY_WAIT_MS can be used to control this
behavior.
(Issue: #2141,
PR: #2570)
Improved the reliability of stack trace output on Windows. (PR: #3926)
Added deferred acquisition and movability to TfSpin(RW)Mutex::ScopedLock and
tightened atomic memory orderings.
Added TfDiagnosticTrap, a scoped diagnostic interceptor, and
TfDiagnosticTransport for cross-thread diagnostic propagation.
Avoided a deadlock by running only the registry functions associated with the
requested type on SubscribeTo() rather than populating a global list that
any thread can draw from and execute.
Fixed a bug where concurrent threads racing to initialize TfSingleton<T>
instances could access them before their constructors had completed.
Added an env var, TF_DEBUG_EMIT_CODE_NAMES_WITH_MESSAGES, that if set to a
truthy value causes TfDebug to prepend the debug code name onto each message
emitted. Code that calls TfDebug::Helper directly will emit '<< no debug
code >>', and can be fixed by passing a code to the helper if desired, like
TfDebug::Helper(MY_CODE).Msg(...).
Fixed an off-by-one bug in a TfSpan DEV_AXIOM() that prevented callers
from subspan()ing to empty.
Replaced use of malloc/free with raw operator new/delete for TfSmallVector,
TraceEventContainer, and MallocTag, such that users can provide their own
DLLs that implement new/delete to promote memory safety across DLL boundaries.
(Issue: #1712)
Optimizations for trace tree building -- testTraceReportPerf shows ~2x
speedup.
Augmented VtVisitValue() to accept additional arguments and forward them to
the visitor. Also added VtVisitValueType() that instantiates a provided
class template with the value's held type T and calls a static member
function.
Fixed a failed assert in WorkSetConcurrencyLimit when building against a
debug version of oneTBB by clamping the thread limit to the same value that
oneTBB would use.
(Issue: #4020)
Resolved a deadlock in ArResolver initialization. (Issue: #3986)
Improved SdfPath parser's error messages.
Fixed a bug in SdfPathExpression incremental search related to eager
short-circuiting.
Added SDF_ERROR_ON_FAILED_LISTOP_COMPOSE TF_DEBUG flag which can be
enabled to output the spec path and file that caused a list op composition
to fail.
Added an overload for SdfLayer::SplitIdentifier that returns a pair of
strings: layer path and file format arguments.
Fixed a bug where layer offsets for internal reference and payload arcs were incorrectly applied twice. (Issue: #3863)
Fixed a bug where dynamic payloads nested in namespace could lead to an infinite loop in composition.
Fixed a bug with native instancing where opinions due to implied arcs pointing to children of instances were not being ignored per instancing's restrictions on overrides on those prims.
Reduced memory used by map function computations for implied inherits. Memory use decreased by around 8% in production rigs used for testing; in one extreme case it decreased by 17% (from 4.7G to 3.9G).
Improved performance of map function creation. In a large production rig involving many relocates and classes, load time decreased 5% (from 485s to 460s).
The "and" and "or" functions in variable expressions now short-circuit; later arguments are not evaluated if an earlier argument evaluates to False or True, respectively.
Added an explicit 'mode' selection attribute to UsdCollectionAPI schema that
lets users explicitly specify whether a collection should use
relationship-mode or expression-mode, rather than relying on inference from
authored properties.
Added a new prim flag to detect if a prim has the class specifier.
(PR: #3830)
Namespace editor changes and bug fixes:
UsdNamespaceEditor::CanApplyEdits() that returns a
struct with both errors and warnings.Added UsdPrimDefinition::FindAbstractPrimDefinition to retrieve definition
for abstract schemas.
Added UsdPrimDefinition::GetLocallyDefinedPropertyNames() API to retrieve
"local" builtin property names defined on the most-derived schema type
(specified in the schema definition file like schema.usda). This excludes
properties which are inherited from base schema types or composed from applied
API schemas, unless they are explicitly marked as an API schema override.
Fixed SdfResolveAssetPathRelativeToLayer, UsdUtils Dependency computation
and asset localization to strip file format arguments before resolving asset
paths.
(Issue: #3785,
PR: #3999)
Include paths returned by SdfLayer::GetExternalAssetDependencies when
localizing assets.
(Issue: #3959)
Fixed a bug where flattening a layer stack with references and/or payloads with different time offsets would result in a layer that did not match how the original layer stack was composed. (Issue: #3811)
Validation changes and updates:
Deprecated old API and added new API to support implementation of Sdr's new categorization semantics. Refer to Sdr API docs for more info.
SdrRegistry::GetShaderNodesByFamily -> GetShaderNodesByFunctionSdrShaderNode::GetFamily -> SdrShaderNode::GetFunctionSdrNodeFieldKey->Family -> SdrNodeFieldKey->FunctionSdrShaderNodeMetadata "domain", "subdomain", "context", "targetRenderer",
and "collections".
SdrShaderNode constructor with the "context" argument omitted.
"context" belongs to metadata now.SdrNodeMetadata->Category, SdrNodeMetadata->Departments,
SdrNodeMetadata->Pages, SdrNodeMetadata->Target, and their associated
convenience APIs on SdrShaderNodeMetadata and SdrShaderNode.SDR_SHADER_NODE_LEGACY_GET_ROLE, true by default. This
controls the behavior of SdrShaderNode::GetName. Legacy behavior returns
SdrShaderNode::GetName when a role doesn't exist. Target behavior returns
empty TfToken when a role doesn't exist. This env var will be defaulted to
false in an upcoming release.Deprecated SdrShaderNode contents based on SdrParserPlugins shipped with USD.
UsdLux_LightDefParserPlugin-derived shader nodes' shadingSystems will be
modified from "USD" to "abstract" in a future release.SdrOslParserPlugin-derived and RmanOslParserPlugin-derived shader nodes'
"context" metadata are currently "OSL" by default. This value will be
removed or updated to a more semantically meaningful value in a future
release.UsdShadeShaderDefParserPlugin-derived shader nodes' "context" metadata are
currently "usda", "usdc" and "usd". These values will be removed or updated
to more semantically meaningful values in a future release.SdrGlslfxParserPlugin-derived shader nodes' "context" metadata are
"glslfx" by default; this value will be removed or updated to a more
semantically meaningful value in a future release.UsdMtlxParserPlugin-derived shader nodes' deprecated
SdrShaderNode::GetCategory will return an empty token instead of the type
of the mtlx nodeDef in a future release. Sdr node custom metadata item
"mtlxNodeType" now contains this value.Added UsdGeomXformable::XformQuery::TransformMightHaveEffect().
Deprecated CustomUsdPhysicsTokens in favor of UsdPhysicsCustomTokens, and LoadUsdPhysicsFromRange in favor of UsdPhysicsLoadStageFromPrimRange.
Fixed Rigid Body mass computation to include colliders under instance proxies. (Issue: #4005, PR: #4014)
Fixed a bug in UsdPhysicsParsingUtility which could cause a race condition and crash when parsing multiple colliders under the same rigid body in a multi-threaded context. (PR: #4002)
Updated UsdUtilsComplianceChecker to warn when used. This has been marked as deprecated in prior releases and will be removed in a future release. Clients are expected to migrate to the UsdValidation framework.
Introduced a JSON metadata-based system for declaring scene index plugin
ordering, as an alternative to the existing C++ registration API. Added a
plugin ordering policy enum that can be configured via the env var
HD_SCENE_INDEX_PLUGIN_ORDERING_POLICY_DEFAULT, currently set to "Hybrid".
"Hybrid" computes a topological ordering of the scene index plugins based on
both the C++ registration constraints (insertion phase and order, preserving
previous registration-based ordering) and the new JSON fields. The scene
index plugin registry provides debug information for any ordering problems
(cycles, etc.) via the HD_SCENE_INDEX_PLUGIN_ORDERING debug flag.
Added virtual API HdSceneIndexPlugin::_IsEnabled to allow scene index
plugins to configure whether they should be consulted for their contribution
to the scene index graph. This follows the improvements to scene index plugin
ordering and is the recommended way to express this behavior.
Changes to light/shadow counts should no longer trigger shader recompilation.
HdxEffectsShader will no longer create empty HgiResourceBindings, this fixes a potential crash in HgiVulkan. (PR: #3896)
Safety checks in Hgi implementions (OpenGL, Metal, Vulkan) have been moved to the base Hgi class.
VMA (Vulkan Memory Allocator) statistics can now be dumped to disk at runtime
using the debug flag HGIVULKAN_DUMP_VMA_STATS.
HgiVulkanCommandQueue::Flush can signal timeline semaphores.
HgiVulkanDevice::WaitForIdle() now calls HgiVulkanCommandQueue::Flush on
the graphics queue.
Added support for GfBBox3d as a data source type.
Introduced HdsiLocatorCachingSceneIndex. This is useful for caching specific
computations known to be evaluated repeatedly during scene index evaluation.
See the class documentation for more discussion of motivation and caching
scenarios.
HdDependencyForwardingSceneIndex now blocks upstream dependencies from being
seen by observers. The dependency forwarding scene index takes responsibility
for dependency invalidation so there is no need for observers to act again on
those same dependencies.
HdFlattenedPrimvarsDataSourceProvider now uses the common pattern of
avoiding creating a new overlay data source when the child data source does
not exist.
Fixed ownership and lifetime semantics in Hydra data sources. They must not retain ref-counts to scene indexes; they must use weak pointers instead. This addresses problems where async destruction of Hydra data sources caused unintended interaction with the scene index graph.
Added runtime verification to HdSceneIndexAdapterSceneDelegate to guard
against invalidation during Sync().
Hydra Scene Debugger now supports all registered core Vt value types rather than a hard-coded subset.
Updated HdsiLegacyDisplayStyleOverrideSceneIndex to allow per-prim specified
refineLevel to be treated as a stronger opinion than the globally specified
fallback value.
Added HdGpGenerativeProceduralFilteringSceneIndex::SetAllowedProceduralTypes
which updates the set of allowed procedural types. When the allowed types
change, the scene index sends PrimsAdded notices for all prims in the input
scene so that downstream observers re-evaluate prim types accordingly.
Added a new hdsi ParticleFieldConversion scene index filter which converts
particleFields to points.
Added HdVisitSampledDataSourceType which calls a user-specified visitor with
the type of the HdSampledDataSource as an argument. Also added
HdCopySampledDataSourceType which creates a new data source with the type of
the input HdSampledDataSource.
Applied several security fixes from upstream OpenEXR repository to hioOpenEXR. (PR: #4028, #4030)
Added SPZ to USD converter for particle field data. (PR: #4003)
Added rayHitDistance option to sortingModeHint enum for
ParticleField3DGaussianSplat.
(PR: #4004)
Added camera, disableMotionBlur, and disableDepthOfField to
HdRenderSettingsSchema.
Added legacyRenderSettings to HdSceneGlobalsSchema.
HdRenderSettingsSchema.shutterInterval has been renamed to
unionedSamplingInterval. It now also considers the RenderSettings prim's own
camera and disableMotionBlur opinions where appropriate.
Added HdSceneIndexPluginRegistry::GetPluginInsertionMetadataForSceneIndex()
allowing retrieval of insertion metadata (renderer name, registering plugin
name, insertion phase) for a given scene index.
Added HdsiUtilsGetBoundMaterial() that returns the path of the material
bound to a HdSceneIndexPrim, if any.
Fixed instance offset for defer-skinned usdSkel prototypes in point instancer.
Replaced ad-hoc internal caching in UsdImagingDataSourceMaterial with
HdsiLocatorCachingSceneIndex.
UsdImaging caches material network connections seen during traversal, avoiding unnecessary extra access to USD data structures.
UsdImaging's material adapter now sends invalidation for modified shader nodes. Previously it only sent invalidation on terminals, which is insufficient if downstream observers cache the material (and therefore rely on correct invalidation).
UsdImagingDataSourceMaterial handles fixed terminal names (i.e. light and
lightFilter) better and no longer generates a response for any renderContext
queried.
UsdImagingDataSourceAttribute now supports all Sdf value types rather than a
hard-coded subset.
UsdImagingDataSourcePrim now skips emitting purpose when it is the UsdGeom
default, and emitting primvars when they are empty.
Fixed scene index lifetime issues in UsdImagingNiPrototypePropagatingSceneIndex
found by Address Sanitizer.
Added support for volume filters to UsdImaging and the RenderMan Hydra Plugin.
UsdRenderSettings prim-level camera, disableMotionBlur, and
disableDepthOfField attributes are now preserved into Hydra at the
HdRenderSettingsSchema level.
UsdImagingGLEngine will now automatically set the free camera's Hydra path
as the primaryCameraPrim in HdSceneGlobalsSchema when the free camera is in
use.
Calls to UsdImagingGLEngine::SetRendererSetting() are now mirrored into
Hydra so they are visible to scene indices. They may be found under
legacyRenderSettings on HdSceneGlobalsSchema.
UsdRiPxrImaging is now part of the Hydra RenderMan plugin, and will only
build with the latter.
The HdStCubemapTextureObject, HdStDynamicCubemapTextureObject, and
HdStCubemapSamplerObject interface objects have been removed, and their
usage replaced with HdStUvTextureObject, HdStDynamicUvTextureObject, and
HdStUvSamplerObject. Cubemap support remains in Storm.
Fixed rendering of BasisCurves at very high complexity with HgiMetal. (Issue: #4023)
Fixed rendering of wireframe meshes with HgiMetal. (Issue: #3978)
Fixed a bug where prims would be dropped from the shadow render due to the "occludedSelectionShowsThrough" display style flag.
Fixed crash in HdPrmanLight::Finalize() when switching renderers.
Consolidated various scene index plugins to clarify the ordering requirements and ease maintenance by grouping related scene indices into the same plugin.
UsdRiPxrImaging is now part of the Hydra RenderMan Plugin instead of
UsdImaging. It will now build only when the Hydra RenderMan Plugin is built.
Added support for IES profile evaluation on UsdLux lights. (PR: #3193, #3194)
Added distant light support. (PR: #3191)
Fixed a dependency issue when building testVdfSpeculation by moving
EfExecutor and EfSubExecutor to Vdf.
(Issue: #3871)
Added ExecIrControllerBuilder API used to register attributes for invertible
controllers, including input, output, switch, and pass-through attributes.
Updated IrFkController to use the new API.
Added the IncomingConnections computation input parameter, which allows
computations to take input from computations on attributes that have
connections that target the consuming computation's provider object.
Added the 'computePath' builtin computation, which returns the provider's scene path.
Added the ExecUsdSystem::ComputeWithOverrides API.
Added support for attribute expressions. Attribute expressions are registered
by invoking self.AttributeExpression(...) in the body of
EXEC_REGISTER_COMPUTATIONS_FOR_SCHEMA.
Fixed the UsdGeomXformable computation computeLocalToWorldTransform to now
consume the local transformation matrix from the xformOp:transform attribute,
instead of the xformOps:transform attribute.
Fixed usage of --includeKeywords to be a comma-separated list of keywords
represented as a single string argument. Multiple specification of
--includeKeywords has been removed for simplicity.
Removed deprecated --arkit command line option.
Fixed usdview --memstats option, inadvertently broken in a prior change.
Activating a render pass now also activates the associated render settings.
Fixed a bug in usdview's automatic clipping-plane computations that would sometimes entirely clip away very small-extent scenes (on the order of a single unit) when zooming in.
Ported usdzip to C++. (PR: #2101)
Removed deprecated --arkit command line option.
Updated default MaterialX version to v1.39.4.
Fixed geometry_opacity type in OpenPBR material tag check. (PR: #3917)
Added Time and Animated Values user guide. This guide covers TimeCodes and layer offsets, with updates for animated data forthcoming.
Various small updates to the "Namespace Editing" and "Collections and Patterns" user guides on openusd.org.
Updated UsdGeomSubset API documentation of the indices attribute.
Updated the Preview Surface Spec
details around the "presence" opacityMode to match current behavior.
Formatting and wording improvements to the Hydra 2 Getting Started guide.
Updated UsdValidation API docs to include information for registering validators from Python.
Added documentation of encapsulation rules for UsdLux lights and light filters. (Issue: #3908)
Important: Python 3.8 support is deprecated in this release. Support for Python 3.8 will be removed in the following release.
Important: Python 3.8 support is deprecated in this release. Support for Python 3.8 will be removed in the following release.
Important: Added support for pxr/usd libraries and tests under wasm32 and wasm64.
Various fixes and changes to build_usd.py:
Fixed Windows static monolithic builds by ensuring TARGET_PDB_FILE is only
used on shared lib builds.
(PR: #3906)
Deprecated the use of pxr_install_test_dir. Test directory installation is now
handled by pxr_register_test. The behavior of the TESTENV parameter to
pxr_register_test has changed to ensure that an install rule is created for
the required test directory. Added a deprecation warning message to
pxr_install_test_dir. In the uncommon event that a test requires a specific
destination path a TESTENV_DEST parameter was added.
Updated the usd-core PyPI package to use the C++11 ABI beginning with the 26.03 release. (PR: #3852)
Fixed issue with usd-core PyPI package where files needed by the Sdr library were not included in the package. (Issue: #3983)
OpenUSD now builds with the /permissive- (strict standards conformance) flag when building with Visual Studio. Clients must also enable this flag when building code against OpenUSD. (Issue: #2340)
Numerous fixes for warnings in clang builds on MacOS.
Numerous fixes for warnings in Visual Studio builds on Windows. Test builds on Visual Studio 2022 show no warnings. (PR: #3777, #3885)
Miscellaneous build fixes. (Issue: #3279, PR: #2999, #3280, #3799, #3953, #3972)
Added support for CMake 4.0.
Various source tree restructuring changes:
Re-enabled /Zc:inline for Visual Studio builds, reducing binary sizes
significantly.
(Issue: #1279,
PR: #3631)
Important: Implemented the Sparse Array-Edit Overrides proposal. This work required a significant rewrite of USD's core value resolution code, for both metadata and attribute values.
Important: Added the UsdVolParticleField schema family. In particular, added the UsdVolParticleField3DGaussianSplat schema for representing 3D Gaussian Splat data as proposed by the AOUSD Emerging Geometry IG. (PR: #3716)
Added pre-processor definitions for LLVM sanitizers. (PR: #2994)
Timing routines in Arch now prefer std::chrono to custom assembler code to
avoid issues on hardware that did not support the necessary instructions.
(Issue: #3613)
Fixed core filesystem file read/write to support reading large .usda files on macOS. (Issue: #3582, PR: #3934)
GfQuaternion, GfQuat, and GfDualQuat now behave like GfVec & GfMatrix types and builtin types with respect to value-initialization (fill with zero) and default-initialization (perform no initialization). Previously these types performed no initialization when value-initialized.
Changed GfNumericCast such that conversions to/from bool do not perform
bounds checks and match C++ behavior. Also changed GfIntegerCompareLess to
no longer handle bool values. As a result, UsdAttribute::Set and other
authoring APIs accept values besides 0 and 1 for bool-valued attributes.
(PR: #3855)
Updated PlugPlugin::Load() to do an early return if the plugin is already
loaded. This helps avoid a potential deadlock during plugin loading.
Fixed a bug where an exception thrown within a TfNotice handler would cause an accumulation of state leading to performance issues.
Various TsSpline updates:
TsSpline::Diff() to compare two splines or regions of 2
splines.Package file formats like .usdz files no longer require a lower-case extension, matching behavior with other USD file formats. (PR: #3843)
Deprecated PcpComposeSiteHasPrimSpecs in favor of new function
PcpComposeSiteHasSpecs. The functionality is unchanged -- it always worked
for any specs, not just prim specs, and now the naming reflects that.
Fixed a bug in native instancing where in certain cases inherit and specializes arcs could cause additional prototypes to be created unnecessarily.
Optimized computation of dependencies in composition node graphs, improving stage load times. In one production shot, load time decreased by ~11% (from 3.5s to 3.1s).
Fixed incorrect processing of changes to variable expressions that do not change the evaluated asset path.
Fixed a data race in the Sdf_Identity registry.
(Issue: #3856)
SdfPrimSpec::New() no longer substitutes AnyType for an empty typename.
Fixed a bug in ZipFileWriter where adding large files could result in invalid archives. (Issue: #3098)
Disallow direct edits of attributes on Sdf.Payload.
(Issue: #3809,
PR: #3840)
Fixed performance issue when adding or removing .usdc sublayers with relationships with many targets or attributes with many connections. In the reported repro case, the time to add a sublayer containing a relationship with 10000 targets dropped from 20 seconds to 0.1 seconds.
Added SdrShaderNode management features:
ParseAll, GetAllShaderNodes.SdrRegistry::RunQuery, SdrShaderNodeQuery
and SdrShaderNodeQueryResult classes,
SdrShaderNodeQueryUtils::GroupQueryResults (for nested UI display).SdrShaderNodeMetadata, SdrShaderPropertyMetadata classes to
replace SdrTokenMap. These classes have strongly typed API for named
metadata whose expected semantics are well understood.SdrShaderNode, SdrShaderProperty constructors ingesting the deprecated
SdrTokenMap metadata.SdrShaderNode::GetMetadata in favor of
SdrShaderNode::GetMetadataObject.SdrShaderProperty::GetMetadata in favor of
SdrShaderProperty::GetMetadataObject.SdrPropertyMetadata->Hints, SdrPropertyMetadata->Options,
SdrPropertyMetadata->Tag, SdrPropertyMetadata->Target.IsTruthy, StringVal,
TokenVal, IntVal, StringVecVal, TokenVecVal,
CreateStringFromStringVec, IsPropertyAnAssetIdentifier.Various usdgenschemafromsdr updates:
Updated SdrShaderNode and associated HdPrman code to populate displayGroupsShownIf UI hints from shader metadata.
Removed Python bindings for sdrOsl plugin.
Exposed relocate arcs in PrimCompositionQuery. GetIntroducingPrimPath now
returns the pseudo-root prim path for relocates arcs, since they're
considered authored at the layer metadata. Removed PcpComposeSiteRelocates
from pcp/composeSite.
(PR: #3819)
Added the ability for property namespace edits to propagate downstream to registered dependent stages that consume the targeted layerStack.
Added UsdNamespaceEditor::GetLayersToEdit which returns the list of layers
that will be modified if the current edit is applied.
(Issue: #3834)
UsdPrimDefinition::GetPropertyNames now respects property order to match the
behavior of UsdPrim::GetPropertyNames.
usdGenSchema now issues a warning if reflectedAPISchemas array includes a multiple-apply API schema and skips reflecting that schema.
Added GetFallbackValue() API to UsdAttribute and UsdAttributeQuery, to
retrieve schema provided fallback value of an attribute.
Fixed an issue with UsdPhysics parsing utility which was incorrectly not including builtin API Schemas. (PR: #3962)
Added usdRi utility for identifying RenderMan attributes that use its set-specification algebra syntax, such as grouping:membership.
Updated UsdRiStatementsAPI::GetRiAttributes() such that authored old-style
Ri attributes will win out over new-style primvars that are not authored.
Changed the "priority" attribute on UsdUIAccessibilityAPI from uniform to varying, to allow accessibility priority to vary over time, in case particular segments of animated data would benefit from temporal adjustments to their priority. (PR: #3886)
Fixed a bug in asset localization which could result in non-unique temporary file names when running localization operations in parallel.
Various Validation related updates:
UsdValidationError::GetMetadata() to
UsdValidationError::GetData().Defined skinning input tokens in hd. Added the HdSkinningSettings API.
Added the HD_ENABLE_DEFERRED_SKINNING environment variable to control
skinning via extComputations (unset) or defer skinning to the renderer and
emit skinning inputs as primvars (HD_ENABLE_DEFERRED_SKINNING=1).
Improved the Material Override Resolving Scene Index to support material overrides on geometry prims. Geometry prims that only have materials bound with purposes other than "full" or "allPurpose" will be ignored during material override resolution. If a geometry prim has both local material overrides and is bound to a material with overrides, the geometry overrides will be layered on top of the material level overrides, with the geometry overrides taking precedence if there are conflicts.
HdDirtyList no longer assumes pre-sorted render tags.
HdMaterialSchema::GetMaterialNetwork(renderContext) now retrieves the
material for the provided render context only, and does not implicitly fall
back to the universal context. This is to avoid confusion when implementing
scene indexes that modify materials.
HdPrimvarSchema::BuildRoleDataSource() now provides a static const data
source for the common case of an empty role, which can save memory.
HdGpGenerativeProceduralTokens gained missing HDGP_API flags.
(Issue: #3960)
Removed use of the OIIO_NAMESPACE_USING macro in favor of using the
namespace directly.
(PR: #3839)
HdsiMaterialPrimvarTransferSceneIndex can now take a delegate function to
customize how transferred material primvars are combined with those of the
geometry binding the material.
Fixed HduiDataSourceTreeWidget update problem where only first item and
descendants were checked when a dirty notice arrived.
Added Color Space attribute to HdPrimvarSchema and
UsdImagingDataSourcePrimvar.
HdChangeTracker now translates custom bits on rprims, in support of Maya's
vp2RenderDelegate.
HdxTokens->renderIndexVersion has been deprecated and removed from use.
HdLegacyRenderControlInterface and
HdRenderIndexAdapterSceneIndex::RenderDelegateInfo gained a flag to indicate
coord sys support, to mitigate performance fallout from UsdImagingDelegate.
Added scene index to filter available render contexts on material data sources.
Added the hdParticleField reference Gaussian splat renderer to the imaging examples directory (in extras/imaging/examples/hdParticleField). (PR: #3716)
Improved HdDependencyForwardingSceneIndex notice semantics. Added support for
prim resync via PrimsAdded, and fixed hierarchy expansion in PrimsRemoved.
Vectorized notice processing, threaded work where applicable, optimized
dependency map iteration order, and added fast paths for clearing the whole
scene.
Optimized primvar access in HdsiMaterialPrimvarTransferSceneIndex. Transferred primvars are now computed lazily, so as not to add a tax to all primvar access.
Optimized HdSceneIndexAdapterSceneDelegate::GetPrimvarDescriptors. Use the
improved granularity of locators to avoid flushing the primvar descriptor
cache when unnecessary.
Optimized HdPrefixingSceneIndex by adding a bidirectional cache of ReplacePrefix results.
Optimized HdFlatteningSceneIndex notice handling by multi-threading the hierarchical expansion of dirty notices.
Important: UsdImaging's scene delegate mode is now deprecated in favor of
scene index mode. Accordingly, USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX
defaults to 1, and a single-shot deprecation notice will be issued if this is
overridden back to 0. The deprecation warning can be suppressed by overriding
USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX_DEPRECATION_WARNING to 0.
Changed UsdImagingRootOverridesSceneIndex ctor from private to protected so
that client code can derive from this class.
Made change to no longer emit a primvar role data source in the common case where the role is empty.
Explicitly-invisible instance prototypes now remain invisible
UsdImaging's light filter adapter now handles updates to its child shader nodes, dirtying the 'material' locator.
Added UsdImagingGeomXformVector schema, holding the result of
UsdGeomXformCommonAPI::GetXformVectorsByAccumulation(), which includes pivot
information that may be useful to certain scene indexes.
UsdImagingPiPrototypePropagatingSceneIndex now uses a hash of the string
representation of SdfPath, rather than of the memory address of the internal
SdfPath node, when generating names for instancers, in order to provide more
stable results run-to-run.
Made change to use UsdColorSpaceAPI to compute the color space on DataSource Attributes.
Added support for applying skinning transforms to meshes with authored
normals and which use a "none" subdivision scheme. This is guarded by an
environment variable USDSKELIMAGING_ENABLE_NORMAL_COMPUTATIONS which
defaults to being off.
(PR: #3663,
#3664,
#3841)
UsdSkelImaging provides a rest transform if the animation is empty.
Fixed a reported crash with UsdSkelImaging when iterating over a map modified in the loop itself.
UsdImaging now uses inputArgs to consistently configure its scene indices, with a new Hydra-side schema UsdImagingUsdSceneIndexInputArgsSchema.
Updated UsdImagingGLEngine to not use HdxPickHit::instancerId and
HdRenderIndex::GetSceneDelegateAndInstancerIds (unless there is no terminal
scene index because scene index emulation is turned off) and marked these as
deprecated.
UsdLuxLightAPI's materialSyncMode parameter now supports time samples.
Updated UsdImagingDataSourceAttribute::GetTypedValue to retrieve schema
defined fallback value if typed value can not be retrieved. If schema does
not provide a fallback, a zero-initialized value is returned for the requested
type.
Added explicit HgiBufferUsageUpload for buffers with data that will be
produced by CPU and consumed by GPU, in order to minimize overhead in
HgiVulkan "staging" buffers. The user is expected to track when these are
safe to re-use either through waits or cycling through multiple buffers.
Queue submits/command buffer lifetime tracking now uses timeline semaphores to reduce synchronization overhead and simplify management of these objects.
Queue submits from HgiVulkanCommandQueue::SubmitToQueue are now buffered
when called with HgiSubmitWaitTypeNoWait to reduce CPU overhead. These calls
are flushed whenever HgiVulkanCommandQueue::Flush is called.
Vulkan debug extensions/naming can now be used without validation by setting
HGIVULKAN_DEBUG >= 2.
VkSamplers are now named through the debug extension.
Added support for VK_EXT_host_image_copy, enabling creation/uploading of
texture resources to no longer require an intermediary or "staging" copy.
Disabled by setting HGIVULKAN_ENABLE_HOST_IMAGE_COPY == 0.
(PR: #3818)
Implemented support for depth bias on graphics pipelines. (PR: #3858)
Group labels and markers now support color. These are set by default for compute/blit/graphics commands.
Storm now uses texture fallback values as specified by MaterialX shading networks. This is implemented by binding a fallback 1x1 or 1x1x1 texture filled with the node's defined fallback value in cases where a texture path is not defined or fails to load.
Fixed minor compilation issues involving change to use cubemaps for dome lights. (Issue: #3875)
Added vertex shader-based skinning prototype for UsdSkel to support true
"bind-state" instancing. Used by Storm (when environment variable setting is
HD_ENABLE_DEFERRED_SKINNING=1) to perform skinning and deformation per
instance in the vertex shader. Note that in some environments large assets
(e.g. HumanFemale_Group in the
UsdSkel examples)
can cause cetain GL drivers to hang -- the current workaround is setting
hgi to Vulkan.
Fixed shader compilation errors when using UDIM or Ptex textures with HgiMetal. (Issue: #3890)
Updated SPIR-V target and environment to version 1.6 along with enabling corresponding physical device features for HgiVulkan.
Added target memory for the dome light textures and a new render setting to adjust the size of the computed cubemap and pres-processed textures for the dome light. (PR: #3383)
Made change to account for the absence of a valid material network when computing the material tag.
Added a warning and early out when Storm tries to apply loop subdivision to a mesh with non-triangular faces. The early out avoids a crash issue on certain assets. (Issue: #1934)
Fixed uninitialized local variables being passed to HdStUpdateInstancerData, resulting in undefined behavior when processing certain instancer invalidations. (PR: #3921)
Optimized resource registry buffer resolve to be significantly faster for buffers that don't require resolution.
Optimized mesh update to support targeted invalidation of 'xform', 'extents', 'points', 'normals', etc. without triggering a full primvar update.
Added support for set-specification syntax when transferring attributes from materials to geometry. The common case of this is a material using PxrSurface's subsurfaceSubset attribute.
HdPrman's HdPrman_WorldOffsetSceneIndexPlugin now pays attention to the
scene-defined render settings to define the world offset mode. This is
commonly used for improved render precision by translating the scene to put
the camera at the origin.
Added light filter shadow linking support.
Fixed an invalidation bug in the HdPrman_DependencySceneIndexPlugin by replacing the lazy cached container data source with one wherein the value is computed each time on query.
Updated RenderMan args parser to use sdrIgnoreStr instead of sdrSuppressProperty.
testHdPrman now supports RenderMan variants with the --variant (-v) option.
Added a workaround for an issue that would cause left-handed geometry using UsdPreviewSurface to render incorrectly with RenderMan 26+.
Adjusted the priority of certain legacy parameters for controlling velocity motion blur.
Updated CameraProjectionAPIAdapter to use ri:projection relationship instead
of deprecated outputs:ri:projection connection (in usdRiPxr schema available
in RenderMan 27). LEGACY_PXR_CAMERA_PROJECTION_TERMINAL_ALLOWED_AND_WARN is
added and is set to "True" to allow for backward compatibility.
Updated rmanUsdValidators to include a fixer for "PxrRenderTerminalsAPIRelationships" validator. Also added a new validator "PxrCameraProjectionAPIRelationships", along with a fixer.
Added reference utility code for processing IES files, derived from the Cycles IES implementation. (PR: #3192)
Added utilities for cone sampling, derived from the PBRT project. (PR: #3190)
Added support for UsdLuxDomeLight. (PR: #3188)
Added an IrFkController schema with computations that implement the beginnings of invertible rigging capabilities. The functionality here is extremely limited and not for production use yet. It provides the underlying math for forward and inverse computations for an FK controller that takes scalar translate and rotate attribute values as input, along with a parent space, and produces a posed space.
Cycle detection/handling improvements:
TF_ERROR is now emitted with an error code value of
ExecValidationErrorType::DataDependencyCycle, and control is now returned
to the client instead of aborting the process. Computations that depend on
data cycles may evaluate to incorrect values. To programmatically determine
if compilation detected a cycle, use a TfErrorMark.ExecUsdRequest contains value keys that depend on a data cycle,
those value keys will now be invalidated by the
ExecRequestComputedValueInvalidationCallback for every scene change until
the cycle has been resolved.Removed the previously deprecated UsdUtilsComplianceChecker from usdchecker. usdchecker now only uses the validation framework.
Deprecated --arkit flag for usdchecker.
Added a --includeKeywords option to usdchecker, which can be used to select
validators from a specific set of keywords.
usdview can now be opened without specifying a file. (PR: #3321)
Hydra Scene Debugger (formerly Scene Browser) updates:
Fixed broken handling for --ff and --lf arguments.
(Issue: #3942)
Added new debug options and messages to HdMtlx and Storm's MaterialX Filter.
Updated HdMtlx displacement handling to create either a surface shader or displacement shader depending on the terminal node type.
Fixed edge cases for locally defined custom nodes.
Fixed accessibility issues with openusd.org CSS. (Issue: #3654)
Fixed ReadTheDocs's narrow viewport layout issues. (PR: #3883)
Fixed API documentation for TfGetPathName and TfGetBaseName. (PR: #2138)
Various documentation updates:
Important: Removed deprecated Usd file format related items: UsdCrateInfo, UsdUsdFileFormat, UsdUsdaFileFormat, UsdUsdcFileFormat, UsdUsdzFileFormat,…
UsdImaging now defaults to using the Hydra 2 scene index code path.
USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX is now enabled by default.
Various fixes and changes to build_usd.py:
Updated the Vulkan SDK version to 1.4.321.0
Enabled building a subset of OpenUSD with the emscripten compiler. Current support is limited to pxr/base and a subset of the C++ based tests. Work in this area is ongoing and will continue in forthcoming releases.
Restructured monolithic build to avoid building a static library first, which
could fail due to library size constraints on Windows. Monolithic builds now
respect the value of BUILD_SHARED_LIBS.
(Issue: #2396,
#3462,
#3747)
Various changes to default gcc/clang compiler flags.
class-memaccess warning.-Wmismatch-tag flag.Removed oneTBB & Embree build guard and obsolete patches for older Embree3 version.
Updated some libraries to use TBB::tbb target for linking to TBB. (PR: #3783)
Added previously missing source files to the explicit lists of source files in various CMakeLists.txt. (PR: #3278)
Important: Removed deprecated Usd file format related items: UsdCrateInfo, UsdUsdFileFormat, UsdUsdaFileFormat, UsdUsdcFileFormat, UsdUsdzFileFormat, UsdZipFile. Clients should use Sdf counterparts for these objects.
Important: Deprecated APIs for displayName, displayGroup, and hidden
metadata. These values are relocating into the new uiHints dictionary. Client
code should start using UsdUIObjectHints and UsdUIPropertyHints to read
and write these values instead. The following environment variables were added
to support this deprecation.
SDF_LEGACY_UI_HINTS_WARN_ON_WRITE (false by default). When true, the
deprecated "set" API for displayName, displayGroup, and hidden will issue
warnings. This variable will be enabled by default in a future release.USDUI_WRITE_LEGACY_UI_HINTS (true by default). When true, the new hints
API (UsdUIObjectHints et al.) will write the deprecated metadata to both
the new and legacy locations.USD now aborts at startup with an error message if the required plugins
providing the .usda and .usdc file formats or the default asset resolver
are not found.
Fixed library load on file paths with non-ASCII characters on Windows. (PR: #3546)
Fixed a crash on Windows that was caused by improper invocation of the
DeviceIoControl() Windows API function.
(PR: #3627)
Fixed a bug where TfNotice listeners that were revoked concurrently with
other TfNotice activity would not be fully cleaned up until their associated
notice(s) were next sent.
Added quiet option for Python diagnostics that doesn't provide function or filename information. (PR: #3609)
Removed unused TfTemplateString.
Ensured that directory separators are preserved in the list of paths that are used to bootstrap Plug's discovery of plugInfo JSON files. (PR: #3684)
Various TsSpline and spline-related updates.
TsSpline::Sample() fails to generate samples
for curved segments that occur in time-reversed oscillating extrapolation
loops. Also fixed issue where Sample() fails to produce samples for
sections of a curved segment if the sampled section is much smaller than
the curved segment.TsSpline.
BakeInnerLoops() modifies the spline in place to replace inner loops
with explicit knots.GetKnotsWithInnerLoopsBaked() is the same algorithm but returns the
explicit knots in a TsKnotMap.GetKnotsWithLoopsBaked() returns a TsKnotMap with knots from both
inner and extrapolation loops but only over a specific time interval.TsSpline::Breakdown() and CanBreakdown() have been added. Breakdown()
inserts a new knot into the spline at the provided time while minimizing
spline changes. This will either split one of the segments of the spline
into two segments or add an additional segment to one of the ends of the
spline. CanBreakdown() will test if Breakdown() would succeed without
emitting an error message.SdfAttributeSpec::HasSpline().Trace events are now more compact, making it possible to use Trace with larger
scenes. TraceEventNode is half the size and stores infrequently-used fields
externally. TraceEventId has been removed (previously deprecated).
Added support for reading and writing VtArrayEdit opinions to .usda and
.usdc files, and allowing authoring VtArrayEdits to array-valued attribute
defaults and time samples.
Removed the ability for VtArrayEdit to represent dense VtArrays in favor
of letting the composition operator work directly on VtArray.
Added VtArray::MakeUnique() that checks if the VtArray is unique and if not
creates a copy of the data.
Removed unused coerceToWeakerOpinionType parameter from
VtDictionaryOverRecursive().
Fixed MSVC macro nest depth by splitting VT_VALUE_TYPES in two, and provided
VT_FOR_EACH_VALUE_TYPE() that applies a given macro across both preprocessor
lists.
Added WorkParallelForTBBRange in order to reinstate looping over subranges of
containers given a TBB range type object. If
WORK_IMPL_HAS_PARALLEL_FOR_TBB_RANGE is not defined, then this function will
default to a provided WorkDispatcher-based implementation.
Added another alternative work implementation example that uses libdispatch under pxr/extras/usd/examples.
Replaced remaining uses of TBB parallel algorithms with libWork equivalents in crate file format to support custom task management systems.
Fixed bug where opinions from value clips for a given prim would be ignored when the clip metadata was authored in a location that provided no opinions about that prim either directly or across a composition arc.
Fixed regression in composition that changed the strength ordering in structures involving specializes and local reference arcs.
Made performance improvements to dependency computations during composition. In one production test shot this reduced stage load time by ~12% (3.4s to 3.0s).
Removed support for negative layer offset scale. This was previously
deprecated and the PCP_ALLOW_NEGATIVE_LAYER_OFFSET_SCALE environment
variable has been removed.
Set SDF_FILE_FORMAT_LEGACY_IMPORT environment variable to "warn" by default.
Legacy .sdf file format header support will be removed in a future release.
Optimized Sdf_PathNode::GetPathToken() by avoiding an unnecessary memory
allocation.
(PR: #3312)
Added sdf and sdr value parser utilities to extract a VtValue from a string
given a desired SdfValueTypeName. String representations are expected to
follow the usda format.
Fixed an issue where multi-threaded plugin loading could result in some spec type registrations not completing before being needed, resulting in unexpected spec conversion failures. (Issue: #3529)
Added SdfVariableExpression::Make... family of functions for
programmatically creating variable expressions.
Added SdfVariableExpressionAST. This class and its related nodes can be used
to programmatically inspect and modify variable expressions.
Added environment variable USD_POPULATE_LEGACY_ALLOWED_TOKENS (true by
default) for backwards compatibility. When true, usdgenschemafromsdr will
continue to write allowedTokens, in addition to the new valueLabels hint, when
a shader property provides labeled values.
Added the "arraySizeConstraint" metadata field to UsdAttribute, an integer
that encodes information about array length and tuple length.
Various namespace editing fixes.
Enabled dictionary-valued metadata to compose recursively for single-apply API schemas. This already works for typed schemas and will potentially be added in the future for multiple-apply API schemas.
Enabled the "propertyOrder" metadata field to merge with weaker field values. Weaker values of propertyOrder (following the order of applied API schemas) will be appended after the stronger list.
Added UsdAttribute::AnimationBlock() to author an animation block on an
attribute.
Various Validator updates.
UsdValidationFixer, which represents a fix that can be applied
to fix a specific validation error. Fixers provide functions to determine if
they can be applied to a specific error, and to apply the fix on a provided
UsdEditTarget. Appropriate APIs are provided on UsdValidationError and
UsdValidationValidator to retrieve fixers. UsdValidationRegistry APIs
have been updated to register fixers along with validators.UsdValidationError to have a VtValue metadata member, which
clients can use to pass additional data from the validation error to fixers.Implemented the UsdPhysics proposal for allowing nested rigid bodies and articulation for kinematic bodies. Mass Computation, parsing utility and validators are updated to support the same. (PR: #3827, #3828)
Fixed an issue which resulted in coding errors being reported with benign duplicate connectable behavior registration in usdShade. (Issue: #3547)
Fixed UsdShadeShaderDef to allow Int2, Int3 and Int4 shader property types.
Various UI hints and UI hints related updates.
UsdUIObjectHints, UsdUIPrimHints, UsdUIPropertyHints, and
UsdUIAttributeHints for reading and writing the uiHints dictionary.SdfBooleanExpression for representing boolean expressions for shader
UI hints.Added the dictionary-valued "limits" metadata field to UsdAttribute. This is
intended to hold sets of minimum and maximum values ("hard" limits, "soft"
limits, and otherwise), for both UI and non-UI purposes. Added
UsdAttributeLimits and associated APIs on UsdAttribute for reading and
writing limits values.
Removed "Help" displayGroup from ui:nodegraph:node:docURI in the NodeGraphNodeAPI schema.
Important: Breaking API change from HD_API_VERSION 84 to 85 for
"interfaceMappings" on HdMaterialNetwork schema:
HdMaterialNetworkSchema::GetInterfaceMappings().HdMaterialNetworkSchema::GetInterface().HdMaterialInterfaceSchema, HdMaterialInterfaceParameterSchema.TaskControllerSceneIndex construction now has an isForStorm parameter,
replacing a renderer plugin name check.
Added GetReverseInterfaceMappings() to HdMaterialInterfaceSchema. This
builds and returns a map of reversed interface mappings structured as
nodePath -> (inputName -> publicUIName).
Added support for Parameter Edits to HdsiMaterialOverrideResolvingSceneIndex.
Updated MaterialOverrideSchema to add the parameterValues data source. parameterValues is a sibling of the existing interfaceValues data source and is used to collect overrides authored on shader nodes' parameters, using the following structure: materialOverride.parameterValues.<shaderNodeName>.<parameterName>.value -> value.
Fixed dirty bits translation on materials when a locator for "material/{renderContext}" is invalidated. If the locator does not specify a specific terminal in the material, it invalidates the entire material.
Various efficiency improvements in notice processing for the Hdsi light linking scene index, Hdsi render pass prune scene index, and HdGp generative procedural scene indexes.
Exposed the HdPrimOriginSchemaTokens->primOrigin data source through the
base draw mode prim source to allow HdxPrimOriginInfo::FromPickHits to
properly resolve draw mode standin prims to the original USD prims they
represent.
Hydra schema code-generation now emits a doxygen class header.
Removed HdPrimDataSourceOverlayCache, a disused cache from early
Hydra 2 development.
Added overloaded versions of HdRendererPlugin's IsSupported() and
GetDefaultPluginId() that take a struct, allowing for more extensible
support checking. Added an "hgi" member used to query support for a specific
pre-existing Hgi instance.
Fixed dirty bits translation of the universal set. _FindLocator() now
matches all locators instead of just the first.
Fixed HdsiRenderPassPruneSceneIndex dirty prim handling to notify about
dirty prims.
The TRACE_DISABLE preprocessor define has been renamed to TRACE_ENABLE.
Additionally a new HD_PERF_ENABLE preprocessor define has been added to
allow disabling the performance logging in Hydra. Both tracing and performance
logging remain enabled by default.
(PR: #3645)
Eliminated usage of deprecated ImageBuf constructor. (Issue: #3685)
Added a scene index for applying prune rules of the scene globals' active render pass. This scene index is added to the RenderMan and Storm scene index chain before procedurals are expanded.
Added a scene index for applying render visibility rules of the scene globals' active render pass.
Updated SceneMaterialsPruningSceneIndex to use the new HdBuiltinMaterialSchema.
Added a sentinel token __containerDataSource for data source locators
indicating that the container data source needs to be re-fetched even though
the contained data sources have not changed]. Updated HdCachingSceneIndex and
HdFlatteningSceneIndex to re-fetch container data source.
Fixed issues with scene index prims. For correctness, made
HdSceneIndex::GetPrim() return a non-null data source for a prim whose
existence was previously implied through, for example, having a child. For
performance, no longer query GetChildPrimPaths() to determine whether a prim
exists.
Made HdMergingSceneIndex optimizations to _RebuildInputsPathTable() and
vectorized implementation of RemoveInputScenes().
Removed unused HdSceneIndexAdapterSceneDelegate::AppendDefaultSceneFilters().
Added HdRenderIndex constructor to use render index just for the "back-end" emulation (using the terminal scene index to populate a render delegate).
For clarity, renamed several "container" and "vector" schemas, for example,
HdTypedContainerSchema was renamed to
HdContainerOfTypedSampledDataSourcesSchema.
Moved HdxTask::IsConverged() to HdTask and added
HdEngine::AreTasksConverged().
Made change in HdRenderSettingsSchema to use HdSampledDataSourceContainerSchema for namespaced settings, indicating container data source is not nested.
Fixed expansion of varying and indexed-vertex primvars for pinned curves.
Upgraded version of OpenEXR bundled with Hydra to OpenEXR 3.4. This upgrade addresses crucial security, performance, and bug fixes. Note that although OpenEXR 3.4 introduced support for High Throughput JPEG-2000 (HTJ2K), the bundled OpenEXR does not include support for that codec. Users wishing to use HTJ2K should rely on the OpenImageIO plugin with OpenEXR enabled during the OpenImageIO build.
Ported fix for OpenEXRCore's fix for CVE 2023 5841. (PR: #3784)
Added the ComputeDirtyLocators() utility method to
HdContainerDataSourceEditor that computes the set of locators to invalidate on
a prim when a retained data source is set or overlaid.
Expanded empty tokens under the material and material binding container data sources representing the universal render context and the all purpose binding.
Added custom translator hook points from dirtybits to locator set (and vice versa) for Rprims. (PR: #3722)
Fixed SampleExtComputationInput() in backend emulation for non-varying
computation inputs.
(PR: #3704)
Fixed handling of USD prim schema-defined purpose fallback overrides, to support the UsdGeomImageable semantics for fallback purpose.
Fixed handling of the !resetXformStack! modifier from UsdGeom.
Instance aggregation now incorporates the UsdImagingModelSchema in order to
provide the model schema asset info to back GetModelAssetName(). This
enables asset-relative ptex texture path resolution within prototypes.
Made change so that if a prim has a fixed terminal,
UsdImagingDataSourceMaterial::GetNames() returns the
set of render contexts for which material networks were built.
Made change to set cards material as "final" and "builtin" so it will not get overridden with the fallback material in renderers like Storm.
Made fixes for UsdSkelImaging transforms when using native instancing, added some missing invalidation.
Made fixes for native instancing to include prototypes when repopulating, process SdfAssetPaths during instance aggregation, send the correct type with prims, and add notices from Ni prototype scene index.
Made draw mode fix to include the same purposes for authored extentsHint as UsdImagingDelegate.
Made change to block authored normals to match UsdImaging 1.0 behavior. (PR: #3700)
Fixed an issue where UsdSkel would introduce an extraneous and incorrect time sample if the shutter window didn't start or end with T=0. (PR: #2956)
Added an additional sync to HgiInteropVulkan to fix validation errors.
Added UMA and ReBAR support for HgiVulkan for devices where this
configuration is supported. Enabled on UMA devices by default and disabled
on ReBAR devices by default. Controllable with environment variables:
HGIVULKAN_ENABLE_UMA and HGIVULKAN_ENABLE_REBAR.
(PR: #3763)
HgiVulkanBeginLabel supports inputting color. Graphics/Compute/Blit debug
groups are now colored according to type.
Added AllocateTempRenderBuffer to HdStResourceRegistry, allowing RenderBuffers to be re-used between render graphs for transient data. See example usage in HdStSimpleLightingShader.
OIT buffers now only re-allocate when size grows, rather than on every resolution change.
Added some missing pipeline debug name information, to improve validation layer support. (PR: #3792)
Enabled synchronization validation when HgiVulkan debug is enabled.
Fixed some memory barrier issues: added missing memory barriers and fixed incorrect image layout transitions. (PR: #3761)
Fixed a hash collision issues between textures with the same shader prim name by including the referencing material ID in the texture hash. (Issue: #3416)
Added a fast path for triangle meshes in HdMeshUtil. If the input mesh is already a triangle mesh, don't triangulate. (PR: #3745)
Improved GL error reporting: added line numbers to GL error checks, and added GL error checks to more places in HgiGL.
Suppress translucent prims and volumes when rendering non-color AOVs such as primId. This change is a stopgap to avoid having blatantly incorrect behavior.
Updated HdStRendererPlugin::IsSupported to use the passed in "hgi" instead
of constructing a new (platform default) one.
Added Cubemap support to Storm. Additionally, dome lights now convert latlong dome light textures to cubemaps. This addresses some visual artifacts and will likely result in some visual differences when using dome lights. (Issue: #2776)
Fixed skydome rendering to properly handle attachment clear state.
Replaced a coding error on failed shader compile with a warning.
Important: Set LEGACY_PXR_RENDER_TERMINALS_API_ALLOWED_AND_WARN to
"false". Connections to specify display filters, sample filters, and
integrators on RenderSettings are no longer allowed. Relationships are
expected instead.
Added preliminary RenderMan 27.0 support.
Added support for projection plugins (PxrPanini/PxrCylinderCamera/etc.)
Fixed a bug with incorrect handling of primvars on geometry subsets that would cause subsets to disappear from the render.
HdPrman now supports specifying pixel filter parameters
(Ri:PixelFilterName and Ri:PixelFilterWidth) in scene-provided render
settings, such as UsdRenderSettings prims. Currently, scene-provided render
settings require either HD_PRMAN_RENDER_SETTINGS_DRIVE_RENDER_PASS=1 or
HD_PRMAN_INTERACTIVE_RENDER_WITH_RENDER_SETTINGS=1.
HdPrman no longer includes its own generative procedural resolving scene index
plugin. Instead, like other renderers, it requires that the application
provide procedural resolution within the scene index. A universal version of
this is available with HDGP_INCLUDE_DEFAULT_RESOLVER=1.
HdPrman's render pass scene index is now faster for first-time scene population.
The mesh light resolving scene index now scans added prims for mesh lights in parallel.
Added support for handling a new "idMap" render product type, which outputs the prim path to ID mapping to a file, for non-interactive renders.
Changed the implicitSurfacesSceneIndexPlugin to tessellate implicit surfaces for XPU. This means spheres, cones, and cylinders are no longer missing for XPU when using Hydra 2.0.
Progress reporting in HdPrman now works for XPU.
Fixed bugs when registering dependencies from a light to its connected light filters and in the overridden data source provided for a light prim.
Added HdPrman_RenderParam::SetDefaultIntegratorOverride() as a runtime
mechanism for setting the default/fallback integrator. See code comments in
HdPrmanRenderDelegate::_Initialize() for the priority order HdPrman uses
when determining which integrator to use.
Added HdPrman_RenderParam::RegisterRileyOptionsCallback() for
runtime-registration of a callback that can be used to modify the options
sent to RenderMan's Riley::SetOptions(). Callbacks run in the order
registered and just before the call to SetOptions().
Fixed the orientation of PxrEnvDayLight. (PR: #3675
Added UsdLux reference implementation, controllable by the "enableLighting" render setting. This modifies HdEmbree to support direct lighting via UsdLux light types, and aims to be a readable spec-compliant implementation of UsdLux. This implementation should be useful for conformance testing, but makes no attempt to implement indirect lighting or importance sampling. This reference implementation is a work in progress; please refer to hdEmbree/light.h for a list of which types/attributes are supported. (PR: #3186)
Added rect light light texture support. (PR: #3187)
Added support for UsdLux.inputs:diffuse. (PR: #3197)
Added support for lighting double-sided meshes. (PR: #3195)
Added HDEMBREE_LIGHT_CREATE debug code.
(PR: #3196)
Fixed a case of uninitialized reads in vdf for types whose default constructors do not initialize member variables by default-constructing them in-place.
Added plugin attribute computations, including dispatched attribute computations. Plugin attribute computations are analogous to plugin prim computations, but found on provider attributes rather than prims.
Added the following computation input parameters:
Added the Prim object accessor, used for providing inputs to attribute computations sourced from computations on the owning prim, or on sibling properties.
Fixed a problem in computation registration where it was easy to register a callback where the result value would be ignored when the result value required conversion to the declared result type.
Fixed compilation of executorDataVector.cpp on Linux on arm64. (Issue: #3711, PR: #3764)
Added preliminary support for cycle detection in the compiled exec network. In cases where exec compilation would hang indefinitely due to computations that mutually depend on one another, OpenExec now aborts the process with a message that a cycle was detected.
Fixed an issue with the relationship forwarding implementation in
EsfRelationship. Targeted relationships should not be included among
forwarded targeted objects.
Important: Updated usdchecker to use the new validation framework by
default. Clients can still use the old and deprecated compliance checker
interface by providing a --useOldComplianceCheckerInterface flag.
Updated usdchecker to provide information if there are fixers available for a reported validation error.
--resolverContext option to specify if usdrecord should use a
resolver context based on the root layer (the default) or inherit the resolver
context from the environment.Lofted time to "create first image" metric in usdview from glDraw to paintGL, removing GL initialization time from the metric. macOS now reports "create first image" timing data.
The spline viewer now displays knots and tangents.
Fixed "Enable Scene Materials Toggle" in usdview when using UsdImaging 2.0 (Issue: #3573)
Added context menu for render settings and render pass prims to set them as active for the usdview render session.
Fixed issue where usdview would try to import a non-existent Python module repeatedly, potentially impacting performance during playback and other cases. (Issue: #3831)
Added a USD Validation widget to run validation on an opened stage in usdview
using the validation framework. In usdview's Python interpreter, validation
errors can be retrieved via usdviewApi.validationErrors or
usdviewApi.selectedValidationErrors.
Made update to copy relative paths for the MaterialX standard library files for all platforms. (PR: #3797)
Added config:mtlx:materialTag input to allow for custom material tags in Storm.
Fixed a version upgrade bug for normal map nodes where we were losing the 'space' parameter.
Updated the texture information passed to shadergen to ensure the generated Storm MaterialX shaders are consistent across platforms. (PR: #3728)
Added debug messages to Storm's MaterialX filter, as well as a debug flag to save out the generated Storm MaterialX glslfx shader.
Fixed a broken link in UsdGeom documentation for handling of left handed coordinate systems. (PR: #3564)
Updated work API developer documentation to describe in more detail how the granularity of a granular thread limiting implementation is determined by the user.
Fixed omitted documentation for ArchVStringPrintf. (PR: #3724)
Updated TF_DECLARE_PUBLIC_TOKENS macro documentation to clarify differences between the two and three argument versions. (PR: #3791)
Updated UsdLux schema user documentation for the inputs:ies:angleScale formula to include a missing +pi term. (PR: #3753)
Updated openusd.org Terms and Concepts pages with information on splines, animation blocks, and associated changes to value resolution.
Added user documentation for UsdUI UI Hints APIs.
Added SIGGRAPH 2025 BOF and USD Basics slides to openusd.org Downloads page.
Updated openusd.org Contributors page to be "historical", and switched to using sphinx_design over sphinx_panels for formatting various pages.
Improved API documentation for HdContainerDataSourceEditor to call out the additional invalidation responsibility for clients that use it with a retained-style data source.
Important: As noted in an earlier release, Ndr was deprecated in favor of Sdr. This release removes Ndr.
This release includes the preview release of OpenExec. See more details in the OpenExec section below.
Various fixes and changes to build_usd.py:
Modernized TBB CMake setup and added additional targets for TBB components. (PR: #3207)
Various PyPi build changes:
Important: As noted in an earlier release, Ndr was deprecated in favor of Sdr. This release removes Ndr.
Renamed TF_THROW to PXR_TF_THROW to avoid possible naming conflicts with other libraries.
Disable TF_DECLARE_PUBLIC_TOKENS macro expansion to avoid Intellisense hangs. (PR: #3732)
Tf.ScopeDescription can now be used as a decorator in Python, making
it easier to annotate functions or methods.
Fixed matrix multiplication order issue with color transforms in GfColor.
Fixed colorspace accuracy issues in GfColorSpace. (Issue: #3697)
Various TsSpline updates.
TsSpline::Sample reading uninitialized memory.TsSplineSamplesWithSources.IsSupportedValueType static method.Added VtArray::insert() to match std::vector.
Added ability to provide an alternate task management system for the Work library in place of the default TBB-based implementation. Please refer to the developer docs and "Custom Task Management System" notes in BUILDING.md for more details. An example custom backend is provided in extras/usd/examples/workTaskflowExample.
Added WorkTaskGraph to migrate code that relies on deprecated TBB API. This
enables building USD and OpenExec with oneTBB and continues to support
tbb::task usage with older TBB versions.
(Issue: #3650)
Reimplemented specializes arc in composition. The new implementation is simpler, fixes several bugs, and provides noticeable performance improvements. In one production shot, memory usage to open a stage decreased 21%, from around 2500 MB to 1975 MB. (Issue: #3244)
Disabled support for negative layer offset scale by default. Support can be re-enabled using the PCP_ALLOW_NEGATIVE_LAYER_OFFSET_SCALE env var, which will be removed in a future release.
Added work-around for a deadlock bug in some versions of glibc between the shared library loader and TLS lock, and the function static guard variable lock. (Issue: #3652)
Improved performance opening small (under 1 kb) .usda files by reading them completely into a heap buffer instead of mapping them.
Added bounds checking for .usdc files when read via pread() or ArAsset to
match the bounds checks we were already doing in mmap() mode.
Dynamic file formats now correctly resolve asset paths when provided as file format arguments. (Issue: #3488)
Deprecated the .sdf file format extension in favor of .usda. Related deprecations will be removed in a future release. (Issue: #3012)
SDF_FILE_FORMAT_LEGACY_IMPORT to "error". Support for .sdf
files will be fully removed in a future release.SdfLayer::CreateAnonymous now creates layers backed by the .usda file
format.SdfTextFileFormat in favor of SdfUsdaTextFileFormat.UsdCrateInfo, UsdUsdFileFormat,
UsdUsdaFileFormat, UsdUsdcFileFormat, UsdUsdzFileFormat, UsdZipFile
are deprecated in favor of SdfUsdFileFormat, SdfUsdaFileFormat,
SdfUsdcFileFormat, SdfUsdzFileFormat, SdfZipFile respectively.Fixed a bug in Sdf-level namespace editing to work correctly with multiple variantSets that have variants of the same name. (Issue: #3658)
Added USD_WRITE_NEW_USDA_FILES_AS_VERSION env var for specifying the default
version used for new .usda files. This is similar to the
USD_WRITE_NEW_USDC_FILES_AS_VERSION env var for .usdc files. By default this
is set to 1.0, but files will be written out as newer versions when needed.
Note that the layer version when read is preserved if possible when the layer
is saved via SdfLayer::SaveToFile.
Made Zipfile.cpp validate content length for zip32. An error will be triggered if the size of the archive exceeds the maximum size allowed. (PR: #3618)
An SdfLayer whose resolved path is changed due to a call to SetIdentifier
will now be marked dirty.
(Issue: #3386)
SdfLayer now uses ArResolver during Save to determine if the asset
already exists instead of assuming the asset is a file. If the asset does not
exist, the layer will be written out even if it has not been modified.
(Issue: #3386)
Various UsdAnim related updates.
SdfAnimationBlock that represents a special value type that can be
used to explicitly author an opinion for an attribute's default value. Updated
USD's value resolution to use SdfAnimationBlock to block animation,
spline, or time sample values from stronger layers but let weaker default
values through.GetSpline(), SetSpline(), and ClearSpline() APIs on
SdfAttributeSpec.GetSpline() and HasSpline() APIs on UsdAttributeQuery.UsdFlattenLayerStack to handle Spline and stronger defaults
correctly.Made a change to store only a single UsdStageRefPtr per stage in a
UsdStageCache.
(Issue: #3629)
Fixed a bug where UsdStage::GetObjectAtPath('/') did not return the stage's
pseudo-root prim.
Various changes to support schema property order.
SdrShaderNode::GetShaderInputNames() and
SdrShaderNode::GetShaderOutputNames().Added the "reflectedAPISchemas" customData field used by usdGenSchema that allows the user to specify which of a schema's builtin APIs should be reflected directly into the schema's interface for codegen.
UsdStage will now dispatch finer grained change notifications for sublayer
operations such as sublayer insertion/removal and layer muting/unmuting. This
feature can be toggled via the PCP_ENABLE_MINIMAL_CHANGES_FOR_LAYER_OPERATIONS
env var (default is on).
Fixed a bug in UsdGeomTetMesh::FindInvertedElements when examining face
normals.
UsdUtilsComputeAllDependencies will trigger a warning if it encounters a
layer that fails to open.
(PR: #3467)
Add handling for int64listop values in UsdUtilsStitchLayers.
Reduced allocations in UsdSkel and instances by removing unnecessary or hidden
VtArray copies.
(PR: #3549)
Fixed linker issues where usdValidation symbols could not be imported on Windows. (PR: #3735)
Added new reprs "solidWireOnSurf" and "refinedSolidWireOnSurf" to support drawing translucent mesh surfaces with opaque wireframes. Bumped HD_API_VERSION as a result.
Fixed bug when executing pick task while using HdxTaskControllerSceneIndex.
Updated HdsiCoordSysPrimIndex to use prim paths for generated prims, rather
than property paths.
Made change to disable work-in-progress caching scene index and associated HD_ENABLE_TERMINAL_CACHING_SCENE_INDEX env var in renderer configurations.
Adjusted HdLegacyGeomSubsetSceneIndex to only run on emulated prims, for
correctness/performance.
Optimized HdSceneIndexAdapterSceneDelegate traversal of prim hierarchy
around geom subsets.
Optimized HdMergingSceneIndex lookups for large input scene counts (such as
those found in instance processing).
Updated HdPrimGather to process iteratively rather than recursively, so that
large input prim lists don't run out of callstack.
Add IsValid() to HdRenderParam.
Added vectorized API to HdMergingSceneIndex to insert scene indices and
optimize lookups for large input scene counts (e.g., instance processing).
Made change to HdGetMergedContributingSampleTimesForInterval to drop sample
times outside of startTime and endTime.
Deprecated methods to manage tasks in HdRenderIndex. All subclasses or
re-implementations of HdxTaskController are expected to be turned into
scene indices.
Removed all uses of HdChangeTracker::MarkAllRprimsDirty by using
dependencies in scene indices.
Upgraded AOM to 3.12.1. (PR: #3297)
Fixed dirty bit translation of the empty locator for Sprims in backend emulation.
Minor code cleanup and removal of unused code. (PR: #3521)
Fixed various build issues with testHdSortedIds. (Issue: #3339, PR: #3527, #3539)
Added HioImageIO plugin for image loading through ImageIO on macOS. (PR: #3148)
Fixed an issue in Hydra 2.0 that broke materials when they were descendants of a point instancer and in certain other instancing topologies. (Issue: #3307)
Fixed an issue in HdDirtyBitsTranslator that prevented camera binding
changes on draw targets from being properly communicated to render delegates.
Fixed UsdImaging 2.0 support for transporting relationships targeting
instanced prims into Hydra, via the
UsdImaging_InstanceLocationTranslationSceneIndex. This addresses recent
issues with material and skeleton bindings pointing at instanced prims.
Fixed UsdImaging 2.0 primvar enumeration to use UsdGeomPrimvarsAPI, to
support UsdGeom primvar filtering behavior.
Added a unit test verifying correct UsdImaging 2.0 interpretation of reported nested instancing issues. (Issue: #3064).
Addressed performance problems with native instancing in UsdImaging 2.0
(using scene indices). The code now batches operations in the
UsdImagingNiPrototypePropagatingSceneIndex and uses the new vectorized API
on the HdMergingSceneIndex.
Addressed performance problems with selection in UsdImaging 2.0 by only adding prims to selection that correspond to former rprims.
Addressed correctness problems when using instancing with draw modes in UsdImaging 2.0.
Introduced HdsiDomeLightCameraVisibilitySceneIndex to make dome light camera
visibility work with UsdImaging 2.0.
Made various fixes to release the Python GIL to avoid deadlocks when using UsdImaging 2.0.
Various performance improvements to reduce loading, unloading, and selection times with UsdImaging 2.0.
Fixed an issue in UsdImaging 2.0 that broke light filter updates.
Addressed an out-of-sync issue that could arise when changing the material binding on a skeletal mesh. (PR: #3542)
Added guard against de-referencing a null pointer when an animation prim is removed that is still referred to elsewhere. (PR: #3544)
Added guard against referencing an invalid skinned prim that could arise when deactivating and reactivating a prim. (PR: #3630)
Fixed a bug where the instance aggregation scene index would report an incorrect instancer topology when queried from notices that the aggregation scene index originated.
Added batching/filtering of redundant updates to change processing and
population in UsdStageSceneIndex.
Removed a duplicate/unnecessary prim-level enumeration of primvars from
UsdImagingDataSourcePrimvars, since that operation can be quite expensive on
large scenes.
Deleted a spurious PrimsRemoved when the input UsdStage was null, and
therefore nothing had been populated in Hydra.
Updated initialization order of structures in UsdImagingGLEngine to avoid
various redundant populate and immediately update scenarios on stage load.
Fixed a bug where UsdImagingDrawModeSceneIndex::GetPrim returned a
non-trivial result when it shouldn't have.
Switching UsdImagingGLEngine from the HdxTaskController to the
HdxTaskControllerSceneIndex by switching the default value of env var
USDIMAGINGGL_ENGINE_ENABLE_TASK_SCENE_INDEX. Note that this is independent of
the env var USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX to switch to UsdImaging 2.0.
Added a new parameter to the UsdImagingGLEngine constructor to toggle
UsdGeomModelAPI draw mode support.
Storm now validates primvars supplied against types specified in material network.
Vulkan->OpenGL interop now uses extensions on supported platforms (Windows/Linux). This is controlled via the HGIVULKAN_ENABLE_NATIVE_INTEROP env var.
Skydome visualization shader now uses only Mip 0 to avoid ddx/ddy discontinuities along UV seams.
basisCurves no longer over-tesselate when using width-affecting properties.
Fixed indexing of zero-length basis curves.
Updated Storm with HgiGL to draw round points via the shader codepath (rather than natively) when MSAA is enabled, controlled by env var HGIGL_ENABLE_NATIVE_ROUND_POINTS.
Made change to use Vulkan extension VK_KHR_line_rasterization to get Bresenham line rasterization, matching OpenGL.
Added support for multiple textures in a single HgiTextureBindDesc, to
describe an array of textures.
Several fixes for Vulkan validation errors. (PR: #3589)
Fixed dome light shading differences between GL and Vulkan.
Added debug code to dump Vulkan device memory properties. Reduced GPU memory usage of testHdStBarAllocationLimit and testHdStBufferAggregation. (PR: #3503)
Disabled alpha-to-coverage for Vulkan and Metal when the sample count is 1 to match GL behavior.
Added code to properly transition shadow maps to the correct layout before and after shadow render passes.
Fixed a bug when using forceOpaqueEdges setting in HdMeshReprDesc.
Added drawingCoordBufferBinding to hash computation of ResourceBinder
metadata.
(PR: #3585)
When using UsdPreviewSurface, "presence" opacity mode will scale all color components by opacity and "transparent" opacity mode will scale only the diffuse component by opacity.
Added HGI_API_VERSION in pxr/imaging/hgi/version.h to track Hgi related API updates.
Removed use of SPIR-V Reflect from HgiVulkan.
Removed Python wrapping for Garch.GLPlatformDebugContext.
Fixed calculation of compute work group size for HgiVulkanComputeCmds.
(Issue: #3666,
PR: #3678)
Fixed inline function declarations for several Hgi comparison operators. (PR: #3682)
Add scene index plugin to prune unbound materials.
Added support for camera exposure compensation. Storm will use
HdCamera::GetLinearExposureScale to compute a brightness multiplier for the
scene, modelling collector sensitivity. To use this, applications need to set
exposure attributes on the active camera. The feature can be turned off with
the "enableExposureCompensation" render setting (default on).
(PR: #3464)
Added "domeLightCameraVisibility" to the reflected render settings.
Added a virtual Hgi::GarbageCollect and ensured it gets called on Storm
tear-down. Added a malloc tag around GL driver texture allocations.
Added support for per-subset primvars, which may originate from Hydra operations that, for example, add displacement to a subset.
Added necessary dome/portal scene index dependencies to portalLightResolvingSceneIndex.
Added a separate loader (HdPrmanXpuLoader) for launching RenderMan XPU.
Fixed a bug where nodes with multiple file texture parameters, like
MtlxTriplanarProjection, that require some handling to invoke an RTX
plug-in, would only handle one such parameter rather than all of them.
Fixed a bug where OSL shader compilation would fail on Windows when there were spaces in the include paths.
When rendering interactively, force the limits:threads setting to leave some threads for the UI.
Made change to handle addition/removal of mesh light status in the mesh light resolver.
Removed an unnecessary call to MarkAllRprimsDirty on certain edits to volume
prims.
Fixed an issue affecting primvar inheritance on geom subsets. A primvar specified on the subset will now properly override the same primvar authored on the parent mesh.
OpenExec preview release:
OpenExec supports efficient computation of values that are derived from data encoded in USD scenes. Computational behaviors can be published for USD schemas. OpenExec uses these computations, along with the composed scene, to compute and cache values, and supports invalidating cached values in response to scene changes.
This preview release includes a minimal feature set that introduces the basic capabilities of OpenExec, which will be expanded in coming releases. These features include:
For more details, see: OpenExec.
Fixed a bug where usdview would not bind the asset resolver context when opening the specified root layer. (PR: #3616)
Updated default value of the "--camera" argument to improve support for combining camera and render settings arguments on the command line.
Updated property legend to include Spline values, with a turquoise blue color and italicized text for interpolated spline values.
Added SplineViewer widget to usdview for visualizing spline-valued attributes. The SplineViewer samples spline data over a time range set by usdview's begin/end time ranges. SplineViewer also supports playhead and value at the current frame. It can be used as an embedded attribute viewer or as a floater widget.
Updated to ensure that the render settings camera path and the scene globals camera path match.
Added the "--disableDrawMode" command line flag, which, when set will cause usdrecord to ignore all USD draw modes.
Updated UsdMtlx so generated USD files pass usdchecker. (PR: #3243)
Fixed a CMakeList typo that made it so the HdMtlx tests weren't buildable. (PR: #3633)
Added MaterialX library as resources in UsdMtlx. (PR: #2904)
Fixed an error where Storm was losing primvar information from MaterialX networks.
Added support for locally defined custom surface shader nodes in Storm. (Issue: #2078)
Updated support for locally defined custom nodes. (Issue: #3674)
Important: OpenUSD is planning to upgrade to Embree 4.x and will remove Embree 3.x support in a future release. For client code still linking to Embree 3.x, see the Embree notes on upgrading: https://github.com/RenderKit/embree?tab=readme-ov-file#upgrading-from-embree-3-to-embree-4.
Fixed an uninitialized std::atomic value in hdEmbree.
Fixed hdEmbree not respecting PXR_WORK_THREAD_LIMIT. (PR: #3198, #3370)
Added schema user doc for UsdMedia and UsdRender schemas. See Schema Domains for current schema user docs.
"doc" metadata content for schema classes and properties has been replaced with "userDocBrief" custom metadata content in the schema registry. When generating generatedSchema.usda, usdGenSchema will use "userDocBrief" (falling back to the first sentence of "doc" if "userDocBrief" is not authored). Note that "doc" content is still used by usdGenSchema to produce the doxygen code-comments for generated code.
Fix GfColor construction when converting color spaces.
Fix GfColor construction when converting color spaces.
Fixed crash when sampling a float or half-valued TsSpline. (Issue: #3614
Fixed bug where UsdStage would not update when a sublayer was added or removed. (Issue: #3615
USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX.Removed deprecated boost::python support. Python bindings now exclusively use the internal pxr_boost::python library. As noted in an earlier release,…
We anticipate moving to the VFX Reference Platform CY2023 in an upcoming release.
Various fixes and changes to build_usd.py:
Bumped CMake minimum to 3.26 on all platforms.
Added support for building on Windows ARM64 devices. (PR: #3430)
Removed deprecated boost::python support. Python bindings now exclusively use the internal pxr_boost::python library. As noted in an earlier release, the PXR_USE_BOOST_PYTHON CMake option has been removed.
Removed dependency on the deprecated distutils package. (Issue: #3389, PR: #3417)
Fixed GCC 15 build issues. (PR: #3487)
Removed usage of Boost_NO_BOOST_CMAKE from USD builds, except for OpenImageIO, which requires Boost_NO_BOOST_CMAKE to be set, otherwise it sets it to ON. (Issue: #3601, PR: #3485)
Replaced find_package with find_dependency calls in pxrConfig.cmake.in. (PR: #3205)
Made pxrTargets.cmake relocatable (when built with TBB and OpenSubdiv) (PR: #3441)
Updated LibPNG to 1.6.47 to prepare for an upcoming compiler change for Clang (PR: #3552)
Made change to support building OpenUSD against oneTBB 2022.0.0 (PR: #3392)
Enabled GitHub Actions CI to run non-imaging tests on pull requests.
Important: Deprecated the Ndr library in favor of Sdr. Ndr will be removed in the following release.
Important: Changed the default version for newly created binary .usd files
from 0.10.0 to 0.8.0. In the future we intend to adopt this as the minimum
supported version and eventually deprecate and retire support for earlier
versions. As ever, the USD_WRITE_NEW_USDC_FILES_AS_VERSION env var may be
set to control this.
Modified ArchGetFileName on Windows to return full paths that include the prefix drive letters -- previously the prefix was not included. (PR: #3361) (PR: #3545) (PR: #3611)
Made change to explicitly include size_t in gf, required by an upstream change to Clang. (PR: #3535)
Color space names declared in GfColorSpace are now aligned with those published in the Color Interop Forum Recommendations.
Fixed infinite recursion on Windows writing to removable drives mounted to NTFS folders. (PR: #3415)
Fixed TfMallocTag.Tls.Find static method on Darwin. All modern versions of
Apple's Clang should have support for thread_local so we no longer need to
disable it and have removed all uses of ARCH_HAS_THREAD_LOCAL.
(PR: #3292)
Made a change to emit TfDebugSymbolEnableChangedNotice when the debug flag value changes.
Added conversion for std::tuple to/from Python tuples. Added support for std::tuple to TfHash.
Various TsSpline and UsdAnim related updates:
Added GetPreviousTimeSampleForPath to SdfAbstractData to get previous time sample from the lower bracketing time sample. Clients are encouraged to provide an override catering to their data model, which SdfLayer::GetPreviousTimeSampleForPath can use. SdfData, CrateData, and usdAbc plugin have already been updated accordingly.
Introduced support for pre-time value resolution for time samples. The returned value is the limit when the time is approached from the left. Clients can query for a pre-time value by using the UsdTimeCode::PreTime(time).
Changed VtDictionary::erase to return an iterator, matching std::map. (PR: #3553)
Suppressed C4275 warnings in VtArrayBase and VtArray on Visual Studio, reducing the number of warnings emitted by a third on Windows. (Issue: #3036)
Improved ArFileSystemAsset's handling of opening assets that resolves to a directory by returning a nullptr instead of a seemingly valid asset.
Fixed a bug in SdfPathExpression evaluation where we failed to test bare
predicates following // against the prior path element. For example,
/foo//{pred}/bar should match /foo/bar if /foo passes {pred}.
Reinstated the per-thread prim path cache in SdfPath, which appeared to have been unintentionally removed.
Muted SdfLayers can now be saved, writing the (hidden) muted contents.
Updated SdfAssetPath to distinguish between the authored path and the evaluated path. The authored path is the raw path as authored in the layer, while the evaluated path is the original asset path with any variable expressions evaluated. SdfAssetPath::GetAssetPath() will now return the evaluated path if present, otherwise it will return the raw authored path.
Added python bindings for VtArray<SdfPathExpression> objects. (Issue: #3046, PR: #3309)
Fixed a bug where changes to variants (or their dependencies) would cause resyncs and recomposition of prims that do not actually depend on the changed variant.
Adding or removing an unused variant in a variant set now sends a ObjectsChanged changedInfoOnly notice for prims that could use that variant instead of resyncing those prims.
Reverted dynamic payload behavior to take weaker opinions when composing params. The goal of this change is to have the params be the same value whether payloads are loaded or not, which should be more intuitive to users.
Fixed a crash when adding/removing a sublayer results in a cycle. (Issue: #3493)
Fixed an issue which was causing a coding error when performing a sublayer operation on a layer whose file format is a package. Current approach will result in a slower recomposition for this scenario.
Improved handling of change notification for inert prims to avoid unnecessary resyncs during layer stack changes like unmuting or inserting layers.
Fixed a bug with strength ordering and dependencies that can occur for certain ancestral specializes setups.
Added tests for specializes and variants for cases where expected opinions from variants are missing. These tests currently just show the existing incorrect behavior, which will be fixed in a subsequent release. (Issue: #3244)
Removed support for legacy standin behavior. This legacy behavior was
deprecated in 2017 and was guarded by the
MENV30_ENABLE_NEW_DEFAULT_STANDIN_BEHAVIOR env var, which is
also now removed.
Deprecated negative layer offset scale on a composed layer -- negative layer
offset scale can lead to incorrect or non-intuitive results, especially with
spline evaluation and pre-time value time sample resolution. A new environment
variable PCP_ALLOW_NEGATIVE_LAYER_OFFSET_SCALE was introduced
which currently defaults to true, allowing the use of negative layer offset,
with a warning. In a future release this will be disabled and negative layer
offset scale on a composed layer will result in a composition error.
Fixed a bug where we could sometimes evaluate a membershipExpression for non-expression-mode collections.
Treat UsdCollectionAPI expansionRule "explicitOnly" the same as "expandPrims" for expression-mode collections.
Various updates for namespace editing:
Fixed a bug where UsdPrim::ComputeExpandedPrimIndex was not computing the prim index in USD mode, causing it to ignore instancing restrictions. (Issue: #3526)
Created a new script, usdInitSchema, that allows users to quickly set up a new module. It generates the CMakeLists.txt, init.py, module.cpp, schema.usda, and schemaUserDoc.usda.
Fixed a regression by reintroducing the behavior of emitting empty ObjectsChanged and StageContentsChanged notices when muting or unmuting empty sublayers. Note that this is in an intermediate state, which will be addressed in a following release.
Moved usdShaders from pxr/usdImaging to pxr/usd/plugin. This allows the "shipped" shaders like UsdPreviewSurface to be available for queries via Sdr in builds with the imaging component disabled. The .glslfx and .osl implementations for these shaders have also been moved to keep them next to the corresponding .usda definition file. However, the code that parses the .glslfx files and the sdrGlslfx parsing plugin still live in pxr/imaging. This assumes that clients that want to consume the shader implementation will need to have imaging enabled. (Issue: #3055)
Deprecated UsdShadeShaderDefUtils's GetNodeDiscoveryResults and GetShaderProperties in favor of GetDiscoveryResults and GetProperties, respectively.
Fixed schemaTypes in UsdShadeValidators, which was preventing correct validators to be retrieved in a validation context with UsdShade schemas.
Added physically-based exposure controls to UsdGeomCamera. Add Hydra transport of new computed exposure value. Behavior of existing exposure controls is unchanged unless the new controls are used. (PR: #3085)
Introduced a new UsdPhysics schema parsing utility. Clients can use the LoadUsdPhysicsFromRange and provide a UsdPhysicsReportFn callback to parse UsdPhysics data. For more details refer to https://openusd.org/release/api/usd_physics_page_front.html#USD. (PR: #3347)
Added UsdPhysicsValidators to validate various UsdPhysics schema domains. (PR: #3347)
Moved the matte and cameraVisibility collections from UsdRiRenderPassAPI to UsdRenderPass, and removed UsdRiRenderPassAPI.
Removed denoise:enable attribute on UsdRenderPass. Production denoisers generally require configuration attributes that are best provided by an applied API schema.
Added deprecation notices for UsdRi coordinate system API entrypoints. Coordinate systems should use UsdShadeCoordSysAPI instead.
Introduced a multi-apply AccessibilityAPI schema to usdUI schema domain. Details for the same can be found in the proposal. (PR: #3271)
Fixed an invalid escape sequence that is a syntax error in Python 3.12. (PR: #3586)
Added HdxTaskControllerSceneIndex, a Hydra 2.0 re-implementation of the
HdxTaskController. It is only used if the env var
USDIMAGINGGL_ENGINE_ENABLE_TASK_SCENE_INDEX is set to true (default is
false).
Added HdDebuggingSceneIndex, a filtering scene index that detects inconsistencies in a scene index. For example, if GetPrim(/Foo) returns a different prim type from a previous call without a remove/add prim entry being sent.
Updated HdPrefixingSceneIndex to also descend into vector data sources.
Added a Render Context called 'all' to materials' data sources. This render context contains all shader nodes present in the material it represents, regardless of whether they are connected to a terminal. Terminal nodes in this context do not have the render context prefix stripped from their name. Current clients won't see a change in the render contexts they use to render.
Added primaryCameraPrim and timeCodesPerSecond to Hydra's scene globals schema. The primary camera is intended for use by scene indexes that want to do camera-dependent scene transformations, filtering, or generation.
Fixed a crash when a malformed material network has an empty terminal path.
Fixed UDIM path resolution for scene index plugins. (Issue: #3492, PR: #3494)
Added InsertSceneIndex and RemoveSceneIndex (by position).
Fixed race condition in Hydra selection.
Added specific material terminal dirtying (only for scene indices). RenderDelegate dirty flags now specify if the surface, volume, or displacement has changed.
Added an optional scene state ID to scene globals, a custom value that represents a specific state of the scene. Client code can set this ID using HdsiSceneGlobalsSceneIndex::SetSceneStateId(). This value is eventually made available in the render index once the scene is processed. Additionally added new virtual methods for getting and setting arbitrary values to HdRenderParam.
Added better Int16 support to HdFormat helpers. (PR: #3498)
Added typeName to the materialNetworkInterface data source.
Made change to flatten the attributes stored in the Material config dictionary.
Made renderSettingsPrimPath stored on HdsiSceneGlobalsSceneIndex std::optional so that we fallback to the upstream scene index's opinion. (Issue: #3367)
Reworked widget-style drawing to be driven by material tag instead of purpose (render tag). Added the "displayInOverlay" Hydra display style and Storm material tags to identify prims that are to be rendered in style typical for direct manipulation, e.g. widget handles as opaque where unoccluded and transparent where occluded. Note that an equivalent render task for drawing these prims is not yet provided.
The HioAVIF plugin now uses the colorimetry found in an AVIF file.
Fixed a bug in the HioAVIF plugin where non-square textures encoded as AVIF resulted in corrupted textures.
Added HdsiPrefixPathPruningSceneIndex which prunes prims based on exclude prefix paths.
Updated HdsiVelocityMotionResolvingSceneIndex to calculate velocity motion based on timeCodesPerSecond from scene globals.
Fixed HdsiVelocityMotionResolvingSceneIndex to correctly freeze instance scales under velocity-based motion on point instancers.
Important: UsdImagingStageSceneIndex now has feature parity with UsdImagingDelegate. Users of the UsdImaging library are encouraged to try switching to UsdImagingStageSceneIndex (via the USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX flag, if they use UsdImagingGL) and report any issues. Pixar intends to switch usdview to the new API later in the year, and deprecate UsdImagingDelegate.
Added UsdSkelImaging Hydra 2.0 implementation as prim adapters and filtering scene indices that resolve the skeleton. This adds UsdImagingSceneIndexPlugin as a way for libraries providing prim adapters to also provide filtering scene indices to UsdImaging.
Extended UsdImagingDataSourceMapped to also work for relationships.
Reworked scene index data layout for USD material bindings.
Added support for resolving collection-based material bindings.
Return prim type "light" for the primary Hydra prim when UsdLuxLightAPI is applied on a USD prim type that doesn't have a registered imaging adapter.
Various fixes to UsdImaging instancing:
Added support for fallback cullstyle when using scene index mode.
Removed "enableIdRender" from UsdImagingGLRenderParams, in favor of using the primId AOV.
Introduced UsdImagingGLEngine::GetRendererHgiDisplayName, which returns the Hgi name (like "Metal", "Vulkan", "OpenGL"). Changed UsdImagingGLEngine::GetRendererDisplayName to return the render plugin name, with special handling to map "GL" to "Storm". (PR: #3516)
Increased several UsdImagingGL test image diff thresholds to allow them to pass with Metal and Vulkan (Lavapipe). (PR: #3461)
Changed basis curves wireframe mode to shade like the curve's midpoint.
Fixed texture sampling of sky dome textures to use the supplied sampler.
Fixed an issue with shaders compiled with Metal and GLSL version string separators. (PR: #3467)
Fixed a bug with Hgi Resource Registry static lifetime destruction. (PR: #3557)
Changed HgiGL provoking vertex from default (last) to first to better match behavior of other backends.
Added support for round points rendering for HgiVulkan and HgiMetal (PR: #3463)
Fixed Vulkan validation errors for pick task. (PR: #3507)
Fixed testHdStTextureHandleRegistry image copy by specifying binary mode for binary data. (PR: #3500)
Disable testUsdImagingGLPopOut when not using HgiGL. (PR: #3480)
Updated the preview surface GLSLFX shader behavior to be more in line with the UsdPreviewSurface specification with regards to opacity. In particular, this includes respecting opacity mode, and applying opacity scaling to diffuse textures.
Updated GLSLFX code generation to create an additional function to get texture data without having any scaling or biasing applied, and an additional function to apply texture scaling and biasing.
Fixed a bug where the background buffer was not being cleared when on iOS. (PR: #3505)
Various instancer-related improvements: Storm now properly supports instancer visibility. Storm no longer forces an instance to be created if an instancer has no primvars.
Updated to handle upcoming changes in RenderMan 27's PxrRenderTerminalAPI to provide relationships to sample filters, display filters, and integrators instead of UsdShade-like connections. For this update, LEGACY_PXR_RENDER_TERMINALS_API_ALLOWED_AND_WARN provides backward compatibility that will be removed in a later release, RenderMan USD validators have been added to warn on legacy connections, and usdfixbrokenpixarschemas has been updated to provide a fixer, which clients can use to rewrite connections as relationships on PxrRenderTerminalAPI.
Fixed a bug in AOV output name setup. UsdRenderVar specifies that the prim name drives the name of the output the renderer produces. Now HdPrman consistently uses the renderVar prim name as the output name.
Fixed several issues with RenderMan portal lights.
Fixed a bug where non-native texture formats were being flipped when used in lights.
MaterialX displacement bounds for HdPrman now uses the official RenderMan PxrPrimvarsAPI schema.
Updated light/shadow linking logic for portal/dome lighting in hdPrman. If light/shadow linking exists on the portal light itself, that wins. Otherwise, we fall back to the values set on the dome light.
Added color space handling with MaterialX. Note that since we use PxrSurface as the terminal node this color space handling is limited to the nodegraph portion of a material.
Fixed parallel sync issues with sample and display filters.
Updated GetDefaultAovDescriptor() to work in batch mode.
Updated to use HdsiVelocityMotionResolvingSceneIndex to resolve velocity-based motion.
Updated HdPrman's interpretation of the custom primvars object:ri:geosamples and object:ri:xformsamples to more closely align with Karma behavior.
Added environment setting HD_PRMAN_ALL_LIGHTS_FIXED_SAMPLE_COUNT to
facilitate testing. This setting forces all eligible and active lights in the
scene to use the specified fixed number of samples, overriding importance
sampling.
Added environment setting HD_PRMAN_DISABLE_ADAPTIVE_SAMPLING to facilitate
testing. This setting forces the integrator to use fixed sample counts rather
than using pixel variance to evaluate convergence.
Fixed a bug that could cause the fallback RenderSettings datasource to be malformed.
Made testusdview tests UI scale independent. (PR: #3517)
Updated Usdview to show renderer and Hgi name. (PR: #3516)
Added "Storm" as valid argument to the "--renderer" param for usdview and usdrecord.
Added support for MaterialX v1.39.3, and made this the default version.
Fixed issues causing build failures with MaterialX v1.39.3.
Added fix for Metal shader errors with MaterialX v1.39. (PR: #3519)
Made change to handle deleted MaterialX 1.38 swizzle nodes. (PR: #3568)
Made fixes for mtlx:version so the authored value makes it through to Hydra.
Added fix for color space diff in testUsdImagingGLMaterialXCustomNodes_customMaterial (PR: #3482)
Corrected typos in docstrings of wrapRelationshipSpec and wrapAttributeSpec. (Issue: #3034, PR: #3319)
Fixed doc string in HdxTaskController::SetRenderBufferSize. (PR: #3465)
Updated BUilDING.md Alembic Plugin docs as PXR_ENABLE_HDF5_SUPPORT currently defaults to OFF/FALSE.
Added more detailed explanations of UsdLux schema behaviors to API docs. (PR: #3182)
Added schema user doc for UsdUI schemas and UsdLux schemas. See Schema Domains for current schema user docs.
Added user doc for primvars, see Primvars.
Added explanation for timeCodesPerSecond and framesPerSecond behavior to Terms and Concepts page under Time Codes Scaled to Real Time.
Added documentation for color spaces in USD, see Color User's Guide and Programmer's Guide to Color.
Fixed checklist formatting in github pull request template. (PR: #3522)
Nothing published for this version
Reverted deprecation of SdfLayer time sample methods.
Various fixes and changes to build_usd.py:
--no-zlib option to disable building zlib, for developers that need
to supply their own version of the library.
(PR: #2988,
#3130)--(no-)usdValidation option to enable/disable building the USD
validation framework. USD validation is enabled by default.Fixed various issues in pxr_boost::python when building against Python 3.11. (Issue: #3384)
Fixed issue with missing headers causing build failures with Visual Studio 2022. (Issue: #3433)
Fixed issues with precompiled headers when using Visual Studio and Ninja. (Issue: #3408, PR: #3204)
Various fixes for compilation issues and warnings.
Fixed various link visibility issues.
Increased the default version for newly-created binary files to 0.10.0. USD
release 23.11 and newer support this file version. This can be overridden with
the USD_WRITE_NEW_USDC_FILES_AS_VERSION env var.
Added UsdColorSpaceAPI for specifying the color space for a prim subtree.
Added UsdColorSpaceDefinitionAPI for defining custom color spaces.
Fixed issue where ArchDebuggerIsAttached would return false positives on some
Linux distributions.
(PR: #3014)
Fixed ArchGetFileName to return a full path on Windows.
(PR: #3361)
Simplified and made the TfScriptModuleLoader thread-safe.
Added TfNotice::RevokeAndWait() to allow thread-safe revocation of notification.
Fixed issue where saving numeric data to text .usda layers could be formatted differently depending on the system locale. (Issue: #3214, PR: #3222)
Fixed an incorrect memory deallocation in TsRegressionPreventer.
Added WorkDispatcher::IsCancelled, which returns true if WorkDispatcher::Cancel has been called.
Removed flag PCP_DISABLE_TIME_SCALING_BY_LAYER_TCPS. Time sample scaling is
always enabled.
Enabled change processing optimization for muting/unmuting and adding/removing
sublayers. This can be disabled by setting the environment variable
PCP_ENABLE_MINIMAL_CHANGES_FOR_LAYER_OPERATIONS to 0. See 24.11 release
notes for more details.
Removed SdfPropertySpec::GetTimeSampleMap in favor of SdfAttributeSpec::GetTimeSampleMap.
Reverted deprecation of SdfLayer time sample methods.
Identifiers passed to SdfLayer::Find or FindOrOpen now have file format arguments removed before being resolved by ArResolver to keep resolver implementations from seeing unexpected values.
Made all SdfListOp setter methods enforce uniqueness by removing duplicates in explicit setter methods. Deprecated ModifyOperations(callback, removeDuplicates) as removeDuplicates is now assumed true.
Added SdfCreateAttributeInLayer and SdfCreateRelationshipInLayer.
Updated UsdNamespaceEditor to properly update the defaultPrim on affected layers when necessary.
Updated UsdUtilsModifyAssetPaths to preserve SdfAssetPath metadata. This was a fix to a regression introduced in 23.11.
Disabled UDIM resolution for ExtractExternalReferences, which addresses a behavior introduced in 23.11 where UDIM paths were not being resolved. (Issue: #3173)
The schema registry now throws a coding error if a schema is registered without a schemaIdentifier.
Updated usdGenSchema to only write out aliases to plugInfo if the prim type name does not match the class name.
Fixed updateSchemaWithSdrNote to add shaderId property appropriately for all shader nodes.
Fixed a bug in SdrShaderProperty where int arrays would always default to zero.
Added NdrRegistry.AddDiscoveryResult Python binding.
Various UsdValidation updates:
Added support for scalar translate and scale xformOps. Added translateX, translateY, translateZ, scaleX, scaleY and scaleZ xformOps to correspond to translation along X, Y and Z and scale along X, Y and Z respectively. Also added APIs to UsdGeomXformable to allow to add the above mentioned xforms to UsdGeomXform.
Removed deprecated OpenImageIO APIs from hioOiio to support OpenImageIO 3.0.0.x. (PR: #3418)
Improved diagnostics when rejecting primvars due to invalid interpolation values.
HdxAovInputTask no longer reads from an invalid memory address when converting a Float32Vec3 texture to a Float32Vec4 texture.
Fixed a regression that could result in assert failures in the aovInputTask when using some renderer plugins on macOS systems with discrete GPUs. (Issue: #3470)
Added the ability to only load Hydra Scene Index Plugins for a given set of apps, using the new "loadWithApps" HdSceneIndexPlugin type registration field. Plugin types can limit which apps will auto-load the plugin. When creating a scene index, an app name can be provided to load only specific plugins. Not specifying (or providing an empty) loadWithApps means all existing plugins will continue to be loaded normally.
Fixed a bug in HdMergingSceneIndex where it would not send out the proper notices when removing a prim. (Issue: #3261, #3471, PR: #3263)
Added scene index emulation support for tasks. Also added HdxFreeCameraPrimDataSource. The intention together with scene index emulation support for tasks is to make HdxTaskController a scene index.
Added an overload of HdEngine::Execute taking task paths, rather than task pointers.
Added API UsdviewqHydraObserver::GetNestedInputDisplayNames and TargetToNestedInputSceneIndex to see nested input scene indices.
Added HdsiSceneMaterialPruningSceneIndex which can implement material specific behaviors that the existing HdsiPrimTypePruningSceneIndex used for the same purpose cannot.
Fixed a case of over-invalidation in dirty bits emulation where repr and display style were invalidating each other.
Fixed dependency bugs in HdsiMaterialPrimvarTransferSceneIndex.
Fixed HdMapContainerDataSource producing output entries for keys with no input entry.
Fixed a bug in the dependency forwarding scene index to clear and recompute the dependency table entries for a prim when its dependencies are dirty.
Fixed propagation of light linking dirty bits for instancers in backend emulation.
Fixed unitTestHelper byteSize field. (PR: #3374)
Made correctness fix for HdRenderIndex::RemoveInputScene. (PR: #3304)
Implemented a vectorized version of HdxPrimOriginInfo::FromPickHit. (PR: #3413)
HdLegacyGeomSubsetSceneIndex will now properly clear its cache of descendants when an ancestor prim is removed.
HdSceneIndexAdapterSceneDelegate will now use the render delegate's material binding purpose when retrieving material bindings. (Issue: #3320, PR: #3352)
Important: Deprecated UsdImagingGLRenderParams::enableIdRender setting in favor of using primId AOV. This setting will be removed in the following release.
UsdPreviewSurface's shader now computes a BRDF based on clearcoat roughness for the indirect lighting clearcoat component.
UsdPreviewSurface's shader now applies opacity to all components of the color, instead of only to the diffuse component.
Added a new opacityMode input to the Preview Surface spec to control whether or not fully transparent materials receive a specular response. HdPrman's implementation of PreviewSurface also updated to match the updated spec.
Improved type coverage of UsdImagingDataSourceAttribute. (Issue: #3298)
Made change to ensure HdSceneIndexAdapterSceneDelegate::GetMaterialResource considers all contexts. (Issue: #3286, PR: #3288)
Added a 2 * epsilon gap between opposing axis faces of drawMode cards cross geometry to avoid issues due to co-planarity. This significantly improves the stability of rendering, particularly with RenderMan.
Made various improvements to prim id rendering in Storm.
Fixed Vulkan crashes due to missing extensions and layers, and added reporting of missing layers and extensions. (PR: #3420)
Added a null GL context to use when X11 isn't available, so tests can still run when not using HgiGL. (PR: #3391)
Added OpenGL 3.1/GLSL 1.4 support to HgiInterop and use a VertexArray, as required by Apple OpenGL. (PR: #3391)
Added HGIVULKAN_VERIFY_VK_RESULT macro that verifies result of Vulkan call and prints result string if it fails. (PR: #3333)
Fixed a bug in HgiVulkanBlitCmds::CopyBufferCpuToGpu. (PR: #3382)
Fixed various HdSt and HgiVulkan build errors on Windows. (PR: #3411)
Updated HdSt test outputs and baselines so test outputs can be compared using
FC.exe on Windows without any additional flags.
(PR: #3409)
Various fixes to HdSt tests to enable their passing when using HgiVulkan with Lavapipe. (PR: #3170)
Dome light environment texture sampling now converts infinite or NaN values in any channel of a pixel to zero.
Added a dependency between rprim material binding and bound material.
Set GL_UNPACK_ALIGNMENT=1 to avoid texture distortion for single channel textures. (Issue: #3260, PR: #3262)
Improved diagnostics when issuing warnings about specific material networks.
HdPrman now avoids deleting and re-creating light instances in more cases when editing lights.
HdPrman now enables parallel sync for additional Hydra prim types, including
materials and coordinate systems. This can be turned off with the environment
setting HD_PRMAN_ENABLE_PARALLEL_PRIM_SYNC, which defaults to enabled.
Added scene index HdPrman_PreviewSurfacePrimvarsSceneIndex that adds primvar displacementbound:sphere to material primvars of materials using UsdPreviewSurface (to be transferred to the gprim later by the HdsiMaterialPrimvarTransferSceneIndex).
Updated args parser to support "sdrIgnore" and "sdrUsdDefault". "sdrIgnore" can be set to shader properties in the args file to suppress the property from getting added to its sdr representation. "sdrUsdDefault" can be used to set a specific default value for USD schema purposes.
Added support for more kinds of terminal nodes for material networks that use MaterialX patterns. Also, more than one node can make up the bxdf part of the network, e.g. if layering is involved.
Added code to force hider:incremental to be enabled for interactive renders.
Fixed a bug where the code that maps common USD names of AOVs, like 'normal', to RenderMan style names, like 'Nn', would inadvertently happen even when the AOV already had an associated 'lpe'. Now we only do the mapping if the sourceType wasn't already specified to be 'lpe' or 'primvar'.
Improved robustness if the scene provides a primvar schema without a value datasource.
Made change to register dependencies from a light on its targeted light filters to forward invalidations when the prims are backed by a non-emulated scene index.
Made optimizations to HdPrman_UpdateObjectSettingsSceneIndex to avoid unnecessary computation.
Removed Python bindings from rmanArgsParser.
Added the environment setting HD_PRMAN_ALL_LIGHTS_FIXED_SAMPLE_COUNT
(int, default: -1). When set to a value > -1, hdPrman will set
fixedSampleCount to the given value on all visible supported lights it
encounters, overriding any value that might be authored on the light. This
setting is intended to aid with testing, and should not be used in production.
Reduced pre-allocation of time sample arrays within instanced hierarchies to improve memory performance on scenes with heavy instancing.
Added experimental legacy mesh light support: PxrMesh and PxrVolume schemas now derive from their respective geometry classes rather than Light.
Lights will now properly depend on and update with their targeted light filters.
Role information for certain integrator, projection, and display and sample filter parameters is now retrieved by inspecting the relevant shader via SdrRegistry, rather than relying on lookup tables previously in projectionParams.h/cpp.
Added support for role lookup of integrator parameters set via RenderSettings & Integrator prims.
Fixed an issue when geometry prototype creation fails for an instanced gprim. Previously, this situation led to a fatal error about a missing light shader. Now we issue a non-fatal warning with an accurate message.
Fixed an issue that caused ri:hider:jitter to be ignored when authored in RenderSettings.
Allow for USD to be run with either MaterialX v1.38 or v1.39. (PR: #3159)
Added MaterialXConfigAPI and dataSourceAttributeTypeName to help support USD files that were written with v1.38 MaterialX nodes but run with MaterialX v1.39 (PR: #3157)
Fixed crash referencing image NodeDef. (PR: #3344)
Resolved labels are now displayed in a new "Resolved Labels" row in the attribute editor. Labels are resolved for prims and ancestors using the usdSemantics schema and APIs. (PR: #3300)
Removed unexposed "enableIdRender" setting from usdview.
Ported usdchecker to C++ and enabled it to use the new validation framework.
Clients can use the --useNewValidationFramework flag to use the new
validation framework. All the core USD validators available in the old
UsdUtilsComplicanceChecker are ported to the new validation framework.
This option will be made default in a subsequent OpenUSD Release.
Source for usdchecker has been migrated to pxr/usdValidation/bin/usdchecker.
New flags (--variantSets, variants, disableVariantValidationLimit) added
to provide more control over variant validation. These flags are only valid
when --newValidationFramework is used.
--tracedir arg.Added a basic overview with examples for the relocates composition arc to the Terms and Concepts page. Updated the Namespace Editor user guide to demonstrate how the namespace editor uses relocates when necessary.
Added example asset that demonstrates using the UsdSemantics schema, available
in extras/usd/examples/usdSemanticsExamples/bookshelf.usda.
(PR: #3390)
Updated documentation of HdSceneDelegate::SamplePrimvar(), SampleTransform(), and related methods to reflect new behavior with respect to interval bracketing samples introduced in 24.08.
Updated usdchecker documentation to include the new validation framework options.
Various documentation updates:
VERSIONS.md to note that OpenUSD requires v3.0 or greater of the
Jinja2 package.
(PR: #3314)Added Security Policy with details on reporting security vulnerabilities with USD.
Removed boost dependency from OpenUSD. Note that boost must still be supplied when OpenVDB support is enabled due to its use of boost in headers.
OpenUSD now uses its own internal pxr_boost::python library for generating Python bindings instead of boost::python.
PXR_USE_BOOST_PYTHON=ON when running CMake. This option is for testing and
transition purposes; it is deprecated and will be removed in a future release.Added "--boost-python" option to build_usd.py for building OpenUSD's Python bindings with boost::python. This option is for testing and transition purposes; it is deprecated and will be removed in a future release. Note that the build script will continue to build boost if it's needed by optional dependencies. These include OpenImageIO and OpenVDB.
Enabled support for imaging and usdImaging on Apple embedded platforms. (PR: #3215)
OpenUSD's internal namespace now includes the patch version to help distinguish releases within the same year. (PR: #3167)
Removed support for usd-core PyPI package for Python 3.6 and deprecated support for Python 3.7.
Updated Tf file utilities to ignore reparse points on network file systems on Windows. Reparse points on these systems are unlikely to be accessible from the remote machines. (PR: #2934)
Updated pxrTslRobinMap to latest release, 1.3.0, using erase_fast instead of erase when the returned iterator is not needed. (PR: #3253, #3255)
Added support for named color spaces from the Color Interchange Forum to GfColorSpace.
Added Gf.Color and Gf.ColorSpace Python bindings.
Removed overloads of GfMatrix4d::Transform, GfMatrix4d::TransformAffine, GfMatrix4d::TransformDir, and GfRotation::TransformDir that take and return GfVec3f, as they can potentially result in loss of precision. Matrix-vector multiplication operators for double precision matrix types and single precision vector types have also been removed. These were deprecated in 24.05.
Exposed Python bindings for ArAsset, enabling operations such as ArResolver.OpenAsset(resolvedPath) to allow reading ArAsset buffers from Python. (PR: #3318)
Various updates and fixes made for relocates.
Improved how Pcp generates changelists for muting/unmuting layers and adding/removing sublayers, improving performance especially in large stages. Change notifications to external clients remain unaffected, and legacy behavior is retained for layers that may contain relocates. This optimization is still in development and is disabled by default. It can be enabled by setting the environment variable PCP_ENABLE_MINIMAL_CHANGES_FOR_LAYER_OPERATIONS = 1.
Deprecated time sample related methods on SdfLayer, to be removed in the next release. SdfAttributeSpec now owns these time sample related methods.
Converted NdrSdfTypeIndicator from a std::pair to a full class.
Removed residual member function declaration for SdfPath. (PR: #3254)
Enhanced SdfCopySpec() to handle overlapping source/destination by copying the source to a temporary anonymous layer first, then copying that temporary to the destination. (Issue: #3095)
Initial work done on animation curves in USD.
Fixed performance issue writing .usdc files with high time sample counts. (Issue: #3249)
Reimplemented .usda text file parser using PEGTL. This removes a dependency on lex/yacc and also provides some performance improvements. (PR: #3005, #3293, #3294)
Fixed bugs in the namespace-editing code that caused unnecessary and incorrect edits to children defined by upstream composition dependencies.
Various updates for new Validation framework:
Added support for BlockCollection() and ResetCollection() to
UsdCollectionAPI for expression-mode collections. Also added
IsInExpressionMode() and IsInRelationshipsMode() convenience APIs.
usdGenSchema now adds a schemaIdentifier field to schema plugInfo metadata. When present, this field will be used as the schema's identifier in the schema registry. If not, the alias under UsdSchemaBase will be used.
Updated usdGenSchema to generate helper files used in the build so that when
adding a new schema class to a schema library, users will just need to re-run
usdGenSchema instead of having to name the generated files manually in
CMakeLists.txt
Updated sdrOslParser to provide metadata (usdSchemaDef_* and sdrGlobalConfig_*) used for schema generation via usdgenschemafromsdr. This allows clients to generate USD schema from OSL shader definitions which are registered via sdr.
Added a new usdSemantics module which includes a SemanticsLabelsAPI schema
for labeling prims with tokens. The implementation diverges slightly with
the proposal
with the taxonomy being after "labels" instead of before in the property name
(e.g., semantics:labels:<taxonomy> instead of semantics:<taxonomy>:labels).
In addition to the schema, UsdSemanticsLabelsQuery provides a reference for
how ancestor labeling is expected to work and inherit.
(PR: #3103)
Added support for elementType "segment" to UsdGeomSubset, where "segment" refers to a segment of a UsdGeomBasisCurves object.
Updated UsdLuxCylinderLight bounds computation to use X axis as major axis. (Issue: #3233, PR: #3246)
Removed RenderDenoisePass from usdRender schemas.
Fixed crash in UsdSkelAnimQuery::ComputeJointLocalTransformComponents when translate, rotate, or scale attributes are not present.
Updated UsdUtils.UpdateSchemaWithSdrNode to populate the shaderId attribute for all shaderNodes across sourceTypes for the same identifier.
Added Python performance module under extras directory in support of local performance testing and for tracking performance over OpenUSD releases. See usdmeasureperformance.py and documentation for more details.
Storm and HdPrman lighting/shading have been updated to be more consistent when combining different material types and light types. Physically based lighting and physically based materials have not changed; nor have camera lights and fallback materials. However, camera lights and physically based materials will appear brighter, and physically based lights and fallback materials will appear darker, in order to produce correct lighting response.
Made change to allow the generative procedural resolving scene index to be more easily toggled (via a new switchingSceneIndex).
Added a new filtering scene index: HdsiPrimTypeAndPathPruningSceneIndex. One use case is to switch between camera and scene lights by changing the path predicate.
Fixed a problem with motion blur when using HdRenderIndex::InsertSceneIndex, where the shutter interval was not communicated from the render delegate to emulation. Hence, emulation called GetContributingSampleTimesForInterval on an HdSampledDataSource returned by the inserted scene index with a bad startTime/endTime.
Overhauled HdExtComputationSchema and related schemas. In particular, introduced HdExtComputationCpuCallback and changed the CPU callback data source to return the new type.
Added typed getters and setters to HdExtComputationContext.
Introduced HdsiExtComputationDependencySceneIndex which clients can use together with the HdsiExtComputationPrimvarPruningSceneIndex to evaluate and invalidate ext computation primvars.
Added the WithOrientation method to PxOsdMeshTopology which behaves similar to the WithScheme and WithHoleIndices methods. It returns a copy of the mesh topology object except with the orientation set to the given orientation.
Added GeomUtilDiskMeshGenerator for generating disk-shaped meshes.
Fixed the GeomUtilCapsuleMeshGenerator so that the height, bottom radius, and top radius of the cylindrical portion of the capsule is retained and the spheres are adjusted to maintain continuity with the cylinder sides, as defined in the documentation for UsdGeomCapsule.
Altered how the numCapAxial parameter works for GeomUtilCapsuleMeshGenerator when the radii are different. When the radii differ, the numCapAxial parameter is doubled and the number of cross-sections are divided between the top and bottom hemispheres relative to the angle that each portion uses. This makes the density of the mesh more even between the bottom and top when the radii difference is large.
Added normals generation to the various mesh generation utility classes. Similar to the point generation, the classes provide a method that returns the number of normals and a method for generating the normals into a provided container iterator. In addition, the interpolation mode of the normals can be requested.
Made improvements to the light linking scene index. Added support for non-nested native and point instancers and significantly improved invalidation performance.
Prefixed predicate expressions with "hd" for clarity and deprecated existing predicates.
Added render index API to allow batching of notices sent by the merging scene index.
Fixed a subtle bug in the generative procedural resolving scene index to not cook procedurals in response to scene queries.
Added RecipeMaterialOverride schema.
Added HdsiMaterialOverrideResolvingSceneIndex to resolve material overrides.
Fixed bug with loading monochrome .exr images. (PR: #3343)
Added support for UsdGeomPlane in Scene Index mode.
Added UsdImagingModelSchema for any prim that has UsdModelAPI data in Scene Index mode, including models demoted to act as subcomponents within other models.
Fixed a bug causing spurious warnings about "implementationSource" for lights.
Fixed an invalidation bug so that when a material is edited, prims with that material bound will have their primvars correctly invalidated. (Issue: #2382)
Fixed DeprecationWarning in usdviewq/appController.py caused by a regex containing an invalid escape sequence. (PR: #2955)
Added AOV light adapter for transporting USD AOV lights to Hydra.
Fixed Vulkan buffer leaks in HdSt_PipelineDrawBatch. (PR: #3313)
Improved Lavapipe support, enabling the Vulkan driver as a software rasterizer on macOS. (PR: #3121)
Added support for configurable anisotropic filtering in Storm and Hgi. We now disable anisotropy for certain texture/sampler uses such as dome light textures and AOVs. (PR: #3216)
Fixed deadlock when Vulkan command buffers are consumed faster than they are executed. (PR: #3170)
Updated simpleLights to increase the brightness when used with physically based materials (for example, UsdPreviewSurface or MaterialX).
Updated fallback shading to decrease the brightness when used with physically based lights (like UsdLux), for consistency with physically based materials.
Fixed displacement shading when using vertex or varying displacement parameterization with Metal. (Issue: #3248)
Updated drawing of selected mesh edges to eliminate the need to apply a depth offset in the geometry shader.
Exposed an option in HdMeshReprDesc to enable generation of surface edge ids for surface and hull geom styles which do not otherwise draw edges. This option is disabled by default which avoids enabling geometry shader stages for more use cases. (PR: #3071)
Shaders for basis curves rprims that are rendered as ribbons are now provided with a texture coordinate that varies over the width of the curve, via the patchCoord argument to the shader terminal.
Fixed potential texture memory leak by explicitly calling garbage collection of the necessary subsystem from resource registry's garbage collection.
Storm draw target clients no longer need to call HdChangeTracker::MarkStateDirty when a draw target gets disabled and enabled. Storm automatically does the necessary invalidation by tracking the version number of the active draw target set in HdStRenderParam.
Fixed the deep selection resolve mode for the "pickPointsAndInstances" pick target.
Fixed missing include in glslProgram. (PR: #3283)
Important: Removed hdPrman for RenderMan 25. This was deprecated in USD 24.08
usdRiPxr schemas for rman26.3 are not bundled with OpenUSD and instead will be installed during a OpenUSD build from the specified RenderMan location.
Added support for the official RenderMan PxrPrimvarAPI schema in HdPrman.
Fixed a bug with missing invalidation of time-varying primvars in Scene Index mode. This would manifest as a stale primvar value after changing the input scene time during a render.
Added HD_PRMAN_INTERACTIVE_RENDER_WITH_RENDER_SETTINGS which adds the render settings' products to the task's AOV bindings in the render view.
Updated simpleLights (that is, lights set via HdxTaskController::SetLightingState) to increase the brightness when used with or without materials.
Added many preprocessor directives as needed to support compiling against USD versions back to 22.05.
hdPrman now respects an env var called RMAN_XPU_GPUGCONFIG that can be set with a comma delimited list of the indexes of the selected GPUs.
Updated the use of ri:checkpoint:exitat to work independently of ri:checkpoint:interval being set.
Updated to use "Shutter settings" on the camera and ignore ri:shutter render setting.
Updated PxrBakeTexture to correctly write to non tex files which exist on disk.
Fixed a bug where switching between VDB volumes that kept the same path name would not update in the interactive render.
Fixed a bug where interactively editing the Material Sync Mode of a PxrMeshLight would not trigger the expected update of the mesh light geometry's visibility. Note that mesh light support is still in active development and will be enabled in a future release.
Fixed a crash that could happen when switching between RenderMan Hydra delegates in Katana.
Added support for environment variable HD_PRMAN_TEX_EXTS that accepts a colon-separated list of extensions known to be tex compatible, e.g. "tex:txr".
Fixed a bug where UDIM textures used by the USDUvTexture node would be flipped incorrectly.
Updated Volume prims with primvar named "vel" or "velocity" to infer the type to be vector rather than float.
Support for the PRMAN_OSL_BEFORE_RIXPLUGINS environment variable to allow resolving OSL shaders before C++.
Support finding MaterialX search paths at runtime based on a DCC install location.
Support naming the hdPrman delegate something other than "Prman".
Support Ri:PixelFilterName and Ri:PixelFilterWidth options.
Various updates to SideFX Solaris support.
</_UsdImaging_>
or </husk_headlight> to be camera-invisible, as a temporary measure to
support Solaris.Improved hdPrman compatibility with the Hush SideFX command line rendering utility.
More work on hdPrman Hydra 2.0 transition. The following assumes a recent USD version but does not require HD_PRMAN_EXPERIMENTAL_RILEY_SCENE_INDEX_OBSERVER. The HdPrman_RileyGlobalsSceneIndex filtering scene index now computes some of the Riley options to add a riley:globals prim. hdPrman's HdsiPrimManagingSceneIndexObserver picks up the options on the riley:globals prim and makes them contribute to the Riley::SetOptions call.
Fixed a bug where rendering a product without vars led to a crash in RenderMan.
Added support for PxrEnvDayLight.
Small performance cleanup for purpose-based visibility.
Made a change to how MaterialX node names are constructed from material network node paths to support Solaris. This change only affects hdPrman built as part of a DCC.
Fixed issue with Storm when rendering custom nodes that use the <texcoord> node in their defining nodegraph, and either re-use that node's output or are a multi-output node.
Fixed divide by zero issue in the calculation of a light's intensity value inside Storm's MaterialX glslfx shader.
Added support for custom texture nodes in hdPrman.
Switched the USD name of surface shader nodes to use the MaterialX node name instead of the NodeDef name. (Issue: #3100, PR: #3147)
Fixed shadow support for MaterialX materials in Metal. (Issue: #3176, PR: #3264)
Fixed testUsdMtlxFileFormat.py. (PR: #3147)
Added more function tracing in UsdMtlx. (PR: #2806)
Fixed a bug in HdEmbree random number generation. (PR: #3211)
Added HDEMBREE_RANDOM_NUMBER_SEED to facilitate stable image testing. (PR: #3183)
Typo fix and refactoring of ray hit code. (PR: #3185)
Made a fix to correctly handle device pixel ratio with multi-display setups.
Added applied API schema data to the usdview "Meta Data" tab. (Issue: #1431)
Added new performance metrics page to docs, used to publish metrics for each release, and describe how metrics are measured.
Various documentation updates:
SIGGRAPH 2024 BoF slides PDF added to Downloads page.
Contributing to USD page updated with instructions to use when making major changes.
Added Security Policy with details on reporting security vulnerabilities with USD.
Switched .dox files in pxr/usd/usd to Markdown files (which addressed some formatting issues), and renamed enclosing directory to "docs". We recommend Markdown for new modules, as this makes the documentation more portable.
Updated URL to USD Assets Working Group "Primvar Interpolation" asset in the Rendering with USD user guide. (PR: #3110)
Added support for Python 3.12 and deprecated support for 3.6 for usd-core PyPI package.
OpenUSD is now licensed under the Tomorrow Open Source Technology license. This is a renaming of the license, but the terms and conditions are the same as before. See this forum post for details.
boost is now an optional dependency that is only required for building Python bindings. (PR: #3028)
Added support for optionally building with oneTBB. (PR: #2457, #2458, #2459, #2462, #2463, #2464, #2465, #2466)
Various fixes and changes to build_usd.py:
Added support for Python 3.12 and deprecated support for 3.6 for usd-core PyPI package.
Added the build type to the absolute path used to store the PCH result, preventing Debug/Release PCH files from over-writing each other causing linker issues. (PR: #2698)
Fixed absolute paths to GL libraries and libm.so in pxrConfig.cmake. (PR: #2827, #2796)
Added support for MSVC's standards-conformant preprocessor. (PR: #2990)
Added the ability to set a string prefix for test run temp directory names.
Continued progress on namespace editing:
Various updates for UsdCollectionAPI and path expressions:
Completed the first phase of the UsdValidation framework. Users can now register UsdValidator validation functions with the UsdValidationRegistry. Validation functions can be invoked by UsdValidator::Validate() and will return any UsdValidationErrors. The following validators were also added:
Added TraceReporter::LoadReport(), which can be used to read reports generated by TraceReporters.
Added TfMallocTag::CallTree::LoadReport(), which can be used to read malloc tag reports generated by calling TfMallocTag::CallTree::Report().
Changed TfNormPath's and TfRealPath's behavior to match Python os.normpath and os.realpath. In particular, the casing of drive letters on Windows will be retained instead of forced to lower-case. (Issue: #3020)
Deprecated functions on GfMatrix{2,3,4}d and GfRotation that take and return GfVec3f values as they can potentially result in loss of precision. These functions will be removed in a subsequent release.
Added GfColor and GfColorSpace to represent colors and provide color space transformations. This includes a set of built-in color spaces that are always known to USD. Note that as before, USD represents colors in scene description as float3, and properties and attributes may have an associated color space token.
URI schemes used by Ar URI resolvers must now conform to the character set requirements in RFC2396. Support for the environment variable PXR_AR_DISABLE_STRICT_SCHEME_VALIDATION has been removed. Support for non-compliant schemes was deprecated in 23.11. (PR: #2997)
Added support for sub-root default prims. (Issue: #2951)
Added a named sentinel value that is returned from SdfListProxy::Find when the value is not present in the list of operations.
Fixed an issue in PcpMapFunction where some functions wouldn't compose correctly.
Compose dynamic file format arguments through all non-dynamic arcs, which allows variant selections to impact dynamic payload arguments.
Added SdrShaderNode::CheckCompliance static method which checks if the same named properties of a given SdrShaderNode have matching types and default values.
usdGenSchema now correctly generates code when namespaces are used in a propertyNamespacePrefix. (PR: #3090)
We are deprecating the inclusion of API documentation in the "documentation" field of the schema prim and property definitions. This will be fully removed in 24.11.
Fixed issue with concurrent schema registry initialization and the Python GIL. (Issue: #3087)
Added UsdStage::GetAllCompositionErrors() for retrieving composition errors for all prims and layer stacks on the stage.
Added UsdGeomBasisCurves::ComputeSegmentCounts().
Fixed the code for calculating mesh points on Capsule_1 prims with different bottom and top radii. (PR: #3129)
UsdRenderPass schema refinements:
Added 'deepRaster' to the allowed tokens list for the UsdRenderProduct's productType attribute.
Added an option to UsdUtilsModifyAssetPaths which will preserve the length of asset array attributes/metadata when empty paths are present or the modify function returns an empty string. (Issue: #3060, PR: #3063)
Important: HgiGL now defaults to using nearest sampling and not enabling anisotropic filtering for depth and stencil textures.
Important: Fixed a bug in the HdMergingSceneIndex that was not properly re-adding prims when removed in another input scene.
Added native support for .avif image files via the new hioAvif plugin. This plugin only supports reading these image files.
Optimized removal of rprims from HdRenderIndex. These changes improved many of the examples in the performance test by more than 100x.
HdxSelectionSceneIndexObserver::SetSceneIndex() now populates its initial selection in parallel, improving performance for consumers such as HdxColorizeSelectionTask::Prepare().
Certain Hdx task types now internally retain the GLSLFX form of their shaders to avoid re-parsing them each time a task is constructed. This improves render startup time.
Made change to ensure that HdsiPinnedCurveExpandingSceneIndex does not pull on the basisCurves schema when asked for unrelated scene index keys. This was causing a performance hit in the presence of generative procedurals producing curve data.
The Hydra Scene Browser can now display SdfPathVector values.
Added Hydra schema for render passes. Added activeRenderPassPrim to HdSceneGlobals schema. Added render pass support to UsdImaging (when in scene index mode).
HdxFullscreenShader now supports specifying samplers for any textures bound to it.
HdGetSamplerParameters has a new overload that operates on a std::map.
Added current frame to the scene globals scene index and render settings schemas, and updated Prman to use this ri:Frame attribute.
Fixed the transformation of camera lights when using a scene camera for renderers other than Storm.
Updated TetMesh to use surfaceFaceVertexIndices instead of the tetVertexIndices.
Removed down cast of world space hit point in HdxPickHit.
Added HdUtils::ConvertHdMaterialNetworkToHdMaterialSchema() and ConvertHdMaterialNetworkToHdMaterialNetworkSchema().
Added HdEncapsulatingSceneIndex. The mix-in class allows inspection tools to traverse the directed acyclic graph of scene indices at different levels of detail. Note that hdui is not (yet) aware of encapsulating scenes and thus their use is protected by an env var. The use of encapsulating scene indices will eventually make env vars such as USDIMAGING_SHOW_POINT_PROTOTYPE_SCENE_INDICES unnecessary.
In HdSceneDelegate added overloads of SampleFOO methods explicitly taking the sampling interval as startTime and endTime. HdSceneIndexAdapterSceneDelegate is passing these arguments to HdSampledDataSource::GetContributingSampleTimesForInterval. This will allow us to get rid of HdPrman_MotionBlurSceneIndexPlugin::SetShutterInterval and the associated global variables in the future.
Moved HdTextureType out of Hydra core into Storm.
Added support to provide finer grained invalidation for light filter prims in emulation.
Added HdsiLightLinkingSceneIndex to implement light linking semantics in a scene index.
Fixed a bug in the evaluation of path expressions for collections with pruning semantics.
Fixed backend emulation handling of PrimsAdded messages for already-populated prims, to properly resync them.
Fixed a theoretical bug in HdDirtyList that would leave stale render tag prim state if Sync() was called without any render tags activated.
Fixed a linking error some builds would hit related to HdRenderIndex::InsertTask<T>. (PR: #3000)
Added missing <algorithm> include to several files. (PR: #3021)
Fixed a comment on the struct definition of HdDisplayStyle. (Issue: #3033)
Made HdRendererPluginRegistry more consistent about setting display name correctly, and added an HD_RENDERER_PLUGINS debug flag.
Added API tags to the pxr/imaging/hdui library. (PR: #2689)
Added a debug flag to provide detail when Hgi::IsBackendSupported() returns false.
Optimized HdSceneIndexAdapterSceneDelegate's usage of SdfPathTable to be more correct and cache-friendly.
Added deep picking support to HdxPickTask, via the "resolveDeep" resolve mode which is similar to "resolveUnique" but also includes results that are occluded in a typical id-render. (PR: #3044).
Updated stb_image to 2.29, and stb_image_resize to 2.07. (PR: #2880)
Added defensive coding in HioOIIOImage and switched int for size_t where appropriate (PR: #3119)
When calling HdSceneDelegate::SamplePrimvar() for a time-varying primvar when the time sampling interval's start or end time falls between authored sample times, the bracketing authored sample times are now included in the output. Previously, only authored sample times within the interval were included, along with interpolated values at the interval start and end, as needed. For example, if the primvar has authored values at T = [1, 2, 3], and the sampling interval is [1.5, 2.5], the new behavior provides the authored values at T = [1, 2, 3], whereas the old behavior would provide values at T = [1.5, 2, 2.5], with the values at 1.5 and 2.5 being linear interpolations between the adjacent authored values.
The behavior of HdSampledDataSource::GetContributingSampleTimesForInterval() for data sources coming out of UsdImaging has been corrected consistent with the change to HdSceneDelegate::SamplePrimvar() described above.
HdsiVelocityMotionResolvingSceneIndex, a reference implementation of USD velocity-based motion, has been added to the Hydra scene index library. It has been added to the Storm renderer, but is not a part of the UsdImaging default scene index stack.
HdGeomSubsetsSchema (plural 'Subsets') has been removed. In Hydra 2, geom subsets are no longer properties of the parent geometry. They now traverse the Hydra 2 scene indices as child prims of the parent geometry, so this schema is no longer required. This change should be transparent to consumers of the legacy HdSceneDelegate interface, but authors of Hydra 2 scene indices that need to be subset-aware will need to revise their implementations.
HdGeomSubsetSchema (singular 'Subset') now has a non-empty default locator, consistent with subsets' promotion from properties to prims. Data sources for geom subset fields will now be found under the "geomSubset" property of the geom subset prim, rather than at the top level of the prim. This change should be transparent to consumers of the legacy HdSceneDelegate interface.
Fixed an issue when scene lights are enabled and disabled.
Made fix to assign ReplacePrefix() return value to newLocators when changing directMaterialBindings locators to materialBindings locators.
Made sure the results of UsdImagingStageSceneIndex's GetPrim and GetChildPrim are consistent by using the same prim predicate.
UsdImagingDataSourceCustomPrimvars no longer stores attribute queries in a map but creates it every time a particular primvar is queried. This fixes a bug where a client would not see a primvar that has an authored value now but had no authored value when the primvars container was retrieved by the client. More generally, it also fixes bugs where the resolution info in the previous attribute query is no longer valid.
Replaced UsdImagingDataSourceSchemaBased with the more flexible UsdImagingDataSourceMapped.
Transport USD collections as data sources when using the stage scene index.
Fixed performance issue where UsdImagingFieldAdapter would unnecessarily compute the total number of time samples for attributes, which could cause all value clip layers to be loaded.
Fixed sizing of result array when calling GetScenePrimPaths with some invalid instance indices. (PR: #2960)
Added imaging transport for uniform and constant primvars on UsdGeomPointInstancer, and fixed transport of "velocities", "accelerations", and "angularVelocities" on point instancers. (PR: #1731, #1734)
Added null-prim checks when computing Hydra materials. (PR: #2930)
Fixed incorrect API tags in UsdSkelImaging and UsdVolImaging. (PR: #2691)
Added StageSceneIndex support for UsdLuxCylinderLight, and fixed support for UsdGeomSubset.
Fixed UsdImagingGLEngine::TestIntersection instancing-related out-params when using StageSceneIndex.
Ratcheted usdImagingGL test thresholds. (PR: #2970)
Fixed a bug where UsdImagingDelegate would sometimes end up with duplicate primvar entries. (PR: #2096)
Added StageSceneIndex invalidation support for UsdVolField prims.
Fixed UsdImagingGLEngine::DecodeIntersection when using StageSceneIndex
Added a new version of UsdImagingGL::TestIntersection that takes resolve mode, and returns a result vector instead of a single result. (PR: #3044)
UsdImagingPrimAdapter::SamplePrimvar() now includes bracketing authored sample times in certain scenarios, similar to the updated behavior of HdSceneDelegate::SamplePrimvar() described above.
Point instancer prototype prims are now relocated as children of the point
instancer, rather than properties of it. Previously, each drawable leaf prim
within the prototype of a point instancer was relocated as a direct child of
the point instancer, but with a property path of the form
.proto0_<name>_id0. This property form of path precluded the relocated
prototype prim from having child prims of its own. The promotion of geom
subsets from properties to prims therefore required also promoting the
relocated prototype prims from property paths to prim paths.
Updated the default compute shader local size to (64, 1, 1) for compute shaders executed for GPU ext computations and the frustum culling compute pipeline.
Improved shader interstage slot calculation for Hgi resource generation, reducing the total number of interstage locations needed, and accounting for resources that take up more than one slot. Fixed adaptive subdivision shader compilation when using HgiVulkan.
Added function Hgi::CreateNamedHgi, which can be used to create a specific Hgi instance given a valid Hgi token. (PR: #2850)
Use HgiHandle unique id in hashes rather than the pointer address, as the latter can be reused between different objects.
Added tests testHgiGL and testHgiVulkan.
Various HgiVulkan fixes and improvements:
Fixed the behavior of HgiSubmitWaitTypeWaitUntilCompleted when submitting command buffers on Metal. (PR: #2794)
Fixed shading with Metal when geometry is flipped (e.g. scale -1,1,1). (Issue: #2536)
Fixed MaterialX shader gen for EDF type declarations. (Issue: #3049, #3105, PR: #3106)
Fixed Ptex GLSL layout sampler declaration and binding.
Fixed adaptive tessellation of subdivision surfaces to avoid under-tessellation artifacts. (Issue: #2981)
Fixed subdivision surface refinement of faceVarying primvar to avoid crashes when the faceVarying primvar topology is invalid.
Fixed an issue pulling fallback values from Sdr that was affecting material wrap modes, among others. (PR: #2519)
Fixed incorrect GPU skinning of meshes with blendshapes but no skeleton. (Issue: #2425, PR: #2696)
Added NAN guards to dome light convolution shader. (PR: #2383)
Fixed a bug where some BasisCurves pipelines were applying color overrides twice. (PR: #3124)
Storm now supports velocity-based motion of points-based geometry and point instances consistent with the USD velocity motion specification. Velocity-based motion will now be correctly applied to geometry points and to point instance positions and rotations at subframe sample times. Note that velocity-based motion is intended primarily for subframe sampling and should not be used as a physics engine or as a substitute for definitive, authored, per-frame position data. (Issue: #2571)
hdPrman for RenderMan 25 is deprecated. Support for hdPrman for RenderMan 25 will be removed in the 24.11 release.
Updated usdRiPxr to include schemas for Renderman 26.1. Also updated usdRiPxr CMakeLists to gather bundled schemas from yet to be released Renderman 26.2 and above.
Added code to take advantage of new display APIs for RenderMan 26 and also add #ifdefs so that building against RenderMan 25 still works.
Fixed an issue where gprim Sync() would cause extra rounds of edit requests to the Riley API, stopping & restarting the render even when there were no actual edits required.
RenderMan requires Ri:Frame to be an integer so force it to int(floor(time)).
This ensures that it produces an independent sampling sequence per integer
frame.
HdPrman now supports field-less RiVolume primitives. These are used for homogeneous fog volumes which do not require voxel data. Field-less volumes need the standard RenderMan parameters, Ri:type and Ri:Bounds.
HdPrman now applies the render pass specified byHdSceneGlobalsSchema using an internal RenderPassSceneIndex.
Fixed a bug where a crash could occur when AOV names are received as a string rather than a TfToken.
Added support for usdRiPxr's PxrCameraAPI schema. This required a corresponding adapter in usdRiPxrImaging as well as removing the default values for shutterOpen/shutterClose/shutterOpening in hdPrman. The old default values were hard-coded and different between the interactive and non-interactive modes.
Removed code to dirty all rprims in HdPrmanRenderDelegate::SetRenderSetting("renderCameraPath", value). This is a performance improvement when switching cameras. However, it also means that clients of hdPrman need to invalidate all animated primvars if the shutter interval between the old and new camera is different. Note that even before the change, clients need to invalidate all animated primvars if the shutter interval changes for reasons other than the camera path changing. This behavior of hdPrman might be revisited in the future.
Register scene index plugin to perform light linking when the light linking collections are transported. For legacy clients (e.g. UsdImagingDelegate) that don't transport collections, light linking is performed at the scene delegate end and this scene index should not affect that behavior.
Improved determination of the display driver to factor the product type.
Renamed rtx_glfImage to rtx_hioImage.
Added RMAN_DISPLAYPATH environment variable to populate 3rd-party RenderMan display driver search paths.
Added HDPRMAN_TESSELLATE_IMPLICIT_SURFACES environment variable to make hdPrman tessellated implicit surfaces into meshes rather than use builtin representations.
PxrPathTracer support for purpose-based visibility has been temporarily removed, as it could cause unexpected problems for lights. An improved approach to this feature is now available via PbsPathTracer and will be applied to PxrPathTracer in a future release of RenderMan.
Added support for MaterialX v1.38.10.
Added the ability to control Dome Light intensity with MaterialX materials.
Fixed MaterialX shader generation for simple surface shaders like ND_convert_color3_surfaceshader. (PR: #3045)
Added traces to hdMtlx. (PR: #2665)
Fixed MaterialX shader objects getting garbage collected too early. (PR: #3051)
Fixed MaterialX material tag detection for glTF PBR. (Issue: #1882, PR: #3069)
Optimized MaterialX shader generation and reuse; improved material tag detection; added support for triplanar texture nodes. (Issue: #2330, #3004, PR: #3073)
Updated to support specifying an active render pass, which is set in HdsiSceneGlobalSceneIndex for use within Hydra.
Updated to use the startTimeCode from the USD stage as the default time code.
Changed default dome light camera visibility to false, and added an "--enableDomeLightVisibility" flag. (PR: #2352)
Added the 'bboxStandin' command line argument to allow for unloaded prims to be displayed by their bounding boxes. (Issue: #2720)
Added workaround for issue in PySide that can cause the viewport to render incorrectly. (Issue: #2996, #3009)
Added a keyboard shortcut (Ctrl + Shift + R) to reload stage.
Refactored Usdviewq.Launcher to make it easier to extend, e.g. by testusdview.
Fixed a bug in layer stack view when the root layer stack contained both muted and unloaded sublayers.
Fixed an issue where the OCIO menus would occasionally select an invalid colorspace, for certain OCIO configurations. (PR: #3017)
Added infrastructure and usdVol example content for a new schema user documentation process. User documentation can be added to schema definition files, using Markdown format. User documentation will be processed by usdGenSchema and added to the schema registry. User documentation can also be generated into HTML output using a script that generates Sphinx-compatible content files. See "Generating Schema User Docs" in docs/README.md for more details.
Added new testing guidelines and code guidelines to documentation.
Added new Collections and Patterns user guide to documentation.
Made clarifications to Hydra 2.0 Getting Started Guide.
Revised UsdCollectionAPI documentation to explain what makes an instance be in relationship-mode vs expression-mode, and how the built-in properties affect membership determination in each mode.
Support for URI schemes in Ar URI resolvers that do not conform to RFC2396 is deprecated. This support and the PXR_AR_DISABLE_STRICT_SCHEME_VALIDATION…
Various fixes and changes to build_usd.py:
Improved Vulkan build support. (PR: #2735)
Fixed a build issue in sdrOsl plugin when building against an OSL build that uses Imath instead of IlmBase. (Issue: #2977, PR: #2604)
Cleaned up unnecessary uses of CREATE_FRAMEWORK in various libraries. (PR: #2953)
Added initial support for iOS and other Apple embedded operating systems. (PR: #2949)
Updated pxOsd to link only with CPU OSD libraries.
Initial work on adding relocates to USD in support of non-destructive namespace editing of objects that are defined across composition arcs in remote layerStacks. This is a work-in-progress, future releases will provide more complete functionality and documentation.
Fixed issue that prevented processes from having different release versions of the USD libraries loaded at the same time. (PR: #2861)
We now default to measurement based computation of NanosecondsPerTick when CNTFRQ_EL0 is unreliable for arch platforms. (PR: #2929)
Reduced memory usage associated with specializes arcs in composition. In one production test case that makes heavy use of specializes, memory use decreased from 2.2 GB to 1.4 GB, a 36% improvement.
Added PythonGarbageCollectionCallback callback for tracing Python garbage collection, using Trace.Collection.
Support for URI schemes in Ar URI resolvers that do not conform to RFC2396 is
deprecated. This support and the PXR_AR_DISABLE_STRICT_SCHEME_VALIDATION
environment variable will be removed in a subsequent release.
Added ArGetRegisteredURISchemes() function for retrieving the list of URI schemes for which resolvers are registered.
Updated the implementation of ArDefaultResolver::SetDefaultSearchPath to trigger ArNotice::ResolverChanged notifications when the search path is updated. (Issue: #2925)
Various fixes and changes to support Boost dependency removal
Fixed a bug calculating umask in certain cases when creating USD files. (PR: #2933)
Fixed a bug where an incorrect bounds calculation could lead to a possible buffer overflow when writing .usdc files. (PR: #2631)
Fixed an SdfPathExpression parser bug that incorrectly rejected namespaced property names.
Fixed an SdfPathExpression evaluator bug where patterns that end in // did
not always correctly report constancy over descendants.
Removed the requirement to provide an object-to-path function in SdfPathExpression evaluator.
Added the ability for file format implementations to distinguish "Save" operations that update the layer's backing store from "Export" operations that write the layer's data to an independent asset, via a new optional virtual function SdfFileFormat::SaveToFile().
Changed .usdc file output to properly use Ar 2.0 API in conjunction with implementing SdfFileFormat::SaveToFile in UsdUsdFileFormat and UsdUsdcFileFormat so we can reliably detect "Export" operations. Enabled the testUsdFileFormats_asset test on Windows now that this is fixed. (Issue: #2773)
Added cast-to-bool null check for pxr.Pcp.NodeRef and graceful handling of calling methods on null pxr.Pcp.NodeRef. (PR: #2943)
Fixed a bug where attributes authored in variants were ignored when processing dynamic file formats.
Fixed a bug where ancestral payloads of internal subroot reference paths were not always being loaded.
Improved performance when adding or removing sublayers to a stage with many prims. (PR: #2937)
Restored behavior of dependency analysis functions to recursively analyze existing .usdz archives, allowing for discovery of assets in archives which are not self contained. (Issue: #2636, PR: #2637)
Updated UsdRenderComputeSpec() to treat attribute connections as stronger than
local attribute values, consistent with UsdShade conventions. It also strips
out the outputs: prefix where present so that callers no longer need to
include it with requested namespaces.
Updated UsdRenderSpecComputeNamespacedSettings() to only collect attributes that exist in a namespace. If specific namespaces are provided, only those are used; if none are provided, any namespace is accepted.
Added GetSourceTypes function to UsdShadeNodeDefAPI and UsdShadeShader to retrieve all source types for both sourceCode and sourceAsset implementations.
Updated UsdShadeShaderDefParser to always add sdrUsdDefinitionType metadata for all sdrShaderProperties. This is important to maintain SdfValueTypeName round-tripping for shader specs represented by UsdShadeShaderDefs. For example, previously "token" property types in the USD shader spec were reported as "string" from sdrProperty::GetTypeAsSdfType.
Added UsdGeomTetMesh::FindInvertedElements to detect inverted tetrahedral elements with respect to its orientation attribute.
Updated UsdGeomBoundable::ComputeExtent API for const correctness.
Important: Removed HD_USE_DEPRECATED_INSTANCER_PRIMVAR_NAMES. In 23.11, we introduced new names for the internal instancer primvars Hydra uses for instance transforms. The rename was important to avoid accidental collisions between custom authored primvars and the internal ones. At the same time, we introduced the HD_USE_DEPRECATED_INSTANCER_PRIMVAR_NAMES option to allow authors of Hydra render delegates time to update their implementations. We announced that the setting would be removed in 24.05. Render delegate authors who need more time to update their code should not adopt 24.05 until they have completed the transition.
Added HdGpGenerativeProceduralFilteringSceneIndex, which filters Hydra procedural prims against a list of allowed procedural types. Skipped procedurals have their primType changed to skippedHydraGenerativeProcedural, keeping them from being evaluated by a subsequent Resolving index but otherwise leaving them intact.
Adjusted the order of how scene index plugins concatenate, making phase the most significant ordinal component. Previously, all renderer-agnostic phases were first appended, followed by all renderer-specific phases. As a result there was no way for a renderer-specific plugin to run before a renderer-agnostic one, regardless of their relative phase.
HdImageShader now supports having an associated material network.
Added support for motion blur in pinned basis curves by updating functionality for respective scene index plugin.
Hydra schema generation tool hdGenSchema.py is now available.
Various Hydra schema clean-up changes: made getter's const, deprecated BuildRetained (unless schema has "GENERIC_MEMBER" in hdSchemaDefs.py), added consistent capitalization (in, e.g., UsdImagingGeomModelSchema token data source builders).
Fixed memory corruption on macOS when using HgiMetal in an external project whose automatic reference counting (ARC) setting differed from the setting used when building OpenUSD.
Added predicate library and path expression evaluator to evaluate SdfPathExpression-style queries on prims in a scene index.
Added schemata to represent collections. A collection has a name and path expression, allowing scene indices to implement membership-based behavior using the HdCollectionExpressionEvaluator.
Fixed a potential crash when updating skinned primitives. (PR: #2931)
Added Hydra2 support for geom subsets (also added to UsdImaging2).
Important: Made changes to make adapter hijacking more transparent. Delegate queries for information about prims whose adapters are masked by the instancing and draw mode adapters will no longer fail when made during prim insertion. Note that the following methods of the UsdimagingPrimAdapter API are no longer const-qualified. Authors of custom prim adapters that override these methods will need to remove the const qualifier:
Added support for light filters in scene index mode. Note that light filter linking is not yet implemented.
Added support for "orientationsf" attribute on UsdGeomPointInstancer. (Issue: #2529)
Added Hydra 2.0 imaging support for UsdGeomTetMesh.
Fixed a bug in UsdImagingCoordSysAdapter where transform variability was marking the wrong dirty bit.
Improved draw mode support in UsdImaging 2.0.
Updated "wrapS" and "wrapT" shader properties to be of token types for UsdUVTexture OSL shader spec, to conform to UsdShadeShaderDef specification.
Added bits to HdBufferArrayUsageHint to convey whether the associated buffer should be used as an SSBO, UBO, etc., allowing for more precise specification of the HgiBufferUsage during buffer array allocation.
Added support for interpolation/storage qualifiers on shader block members. (PR: #2493)
Disabled alpha to coverage for id renders, fixing id rendering for HgiVulkan.
Fixed HgiVulkanBlitCmds::CopyTextureGpuToCpu such that it copies the depth aspect when provided a depth-stencil texture. (PR: #2852)
HdStResourceRegistry now supports the notion of a sub-resource registry. A sub-resource registry is an additional HdResourceRegistry defined externally that can manage resources whose definitions and implementations are not known to HdStResourceRegistry, but whose lifetime is tied to an HdStResourceRegistry. HdStResourceRegistry will invoke Commit and GarbageCollect on any sub-resource registries it has ownership of whenever those functions are invoked on it.
Added support for primvars with the same name but different types in HdStInstancer. (Issue: #2529)
Fixed a Metal API validation error that could occur when using tessellation with MSAA. (PR: #2949)
Fixed shader code gen of primvar accessor methods to work correctly when a shader parameter has the same name as a primvar. (PR: #2789)
Improved draw batch aggregation to reduce draw times when using GL indirect draw batches for drawing scenes with a high ratio of textures to drawn geometry such as can occur when drawing geometry as texture card proxies.
Improved performance of HgiGL buffer allocation to skip unneeded mapping of buffers designated for use as storage buffers.
Important: Removed hdPrman for RenderMan 24. This was deprecated in USD 23.11
Updated usdRiPxr codeless schemas with updated concepts from RenderMan 25 (Feb 2024)
Updated the d_openexr display driver by providing a default value for the
parameter asrgba of 1.0, matching the default specified in d_openexr.args in
RenderMan. This ensures that exr's produced by RenderMan better conform to EXR
conventions.
Updated interactive mode to avoid interactive renders from halting
prematurely, by only filtering options that make sense for batch renders,
such as exitat.
Updated rendering progress by emitting classic RenderMan-style percentage progress to the terminal during batch renders.
Updated HdPrman to add support for ad hoc EXR metadata coming from USD, in the
form of ri:exrheader:namespace:name attributes. This is mapped to
"namespace/name".
Fixed a bug where MaterialX shaders were not correctly generated when an upstream node was both part of a pattern network and also directly connected to the terminal node.
Updated the render delegate to include the default paths for the various search paths, even if the override environment variable path (e.g. RMAN_SHADERPATH) does not include it.
Added support for UsdGeomTetMesh.
Added support for camera parameters such as shutterOpenTime,
shutteropening, and apertureNSides.
Added a --renderPassPrimPath argument.
Updated --disableCameraLight option to prevent the default camera light from being inserted into the scene.
Added support for motion blur (need to use a valid render settings prim, and indicate a frame number).
Added Hydra developer documentation, including a "Hydra 2.0 Getting Started Guide". See "Hydra Guides" listed on this page: https://openusd.org/release/api/_developer__guides.html
Added "MaterialX In Hydra and USD Architecture Guide", see: https://openusd.org/release/api/_page__material_x__in__hydra__u_s_d.html
Added "Namespace Editing User Guide", see: https://openusd.org/release/user_guides/namespace_editing.html
Added documentation for USD_DEFAULT_FILE_FORMAT (Issue: #2922, PR: #2924)
Various documentation fixes and updates.
Deprecated UsdGeomSubset::ValidateSubsets in favor of ValidateFamily.
Added support for Python 3.11. (PR: #2742)
Various fixes and changes to build_usd.py:
Builds on macOS now avoid hard-coding specific SDK versions for system library dependencies. (Issue: #2771, PR: #2772)
Updated CMakeLists for usdImaging tools (usdrecord and usdBakeMtlx) to skip building if GPU and/or OpenGL are unavailable. (PR: #2468)
CMake fixes to find OpenImageIO and OpenEXR when building for debug. (PR: #2079)
Made build of extras/imaging/examples conditional on PXR_BUILD_EXAMPLES. (PR: #2630)
Improved error message when uic is not found during the build. (Issue: #2582)
Added support for Unicode identifiers. UTF-8 encoded characters may now be used in prim, property, and variant names, and dictionary keys. Support for serializing these identifiers has been added to the .usda and .usdc (crate) file formats. Note that files containing UTF-8 identifiers are not backwards-compatible with older versions of OpenUSD. See the proposals page for more details. (PR: #2378, #2673, #2751, #2788, #2830, #2848, #2855, #2856, #2857, #2858, #2867, #2883, #2888, #2889, #2890, #2906)
Added initial version of Ts library. This will be the open-source version of Presto's libAnim. It implements animation splines. For details, see the Spline Animation proposal. This version builds, but isn't used by anything yet. It's a first milestone that will allow us to begin co-developing with external partners and collecting public feedback. Much work remains, see ts/README.md for a rough list of tasks.
Add initial version of UsdNamespaceEditor. This object supports basic prim and property edits, with property target path fixing, in the local layer stack only. This is a work-in-progress, future releases will provide more complete functionality and documentation.
Fixed broken validation of allowed characters in Ar URI resolver schemes. (PR: #2859)
Refactored Arch_ComputeNanosecondsPerTick to empirically calculate nanoseconds per tick. (Issue: #2719)
Added thread-safety, size, and performance improvements to TfRefBase, TfRefPtr, and TfToken.
Updated DoubleConversion version to v3.3.0 in Tf. (Issue: #2218)
Fixed bugs not properly decrementing Python exception state reference counts, and not properly saving/restoring exception state in some corner cases.
Added workaround for "insufficient permissions" errors that occurred on
Windows when saving files to a network drive. By default, filesystem
permissions are no longer checked before saving files on Windows. This avoids
cases where permissions are incorrectly reported by the system. On Linux and
macOS permissions are still checked, maintaining previous behavior.
This behavior can be overridden by setting the environment variable
TF_REQUIRE_FILESYSTEM_WRITE_PERMISSION. This setting defaults to
true on Linux and macOS, and false on Windows.
(Issue: #849)
Fixed Python DLL loading order on Windows (PR: #2595)
Numerous changes to remove boost usage. (PR: #2353, #2681, #2682, #2684, #2701, #2707, #2709, #2711, #2714, #2715, #2718, #2748, #2750, #2752, #2754, #2761, #2763, #2764, #2765, #2778, #2781, #2785, #2786, #2802, #2810, #2811, #2823, #2831, #2833, #2834, #2835, #2842, #2843, #2864, #2874)
Various fixes and changes for SdfPathExpression:
SdfChangeList now provides a more precise list of layer edits.
Added exception throwing and handling to avoid corrupted file reads during SdfLayer setup. (PR: #2552)
Ensured that SdfAbstractData::HasDictKey returns false if the provided value's type does not match the valueType.
Fixed bug in SdfBatchNamespaceEdit where certain sequences of operations would erroneously be flagged as invalid.
Initial work on reimplementing the .usda parser to remove dependencies on flex and bison. (PR: #2822, #2819)
Fixed an issue in SdfAssetPath::_ReadUTF8 where certain multibyte unicode characters would not be decoded correctly. (Issue: #2560)
Increased default version for newly created crate files to 0.9.0. (PR: #2838)
Updated SdrShaderProperty to support int2, int3, and int4, which conforms to SdfValueTypeNamess->int2, SdfValueTypeNames->int3, SdfValueTypeNames->int4. Users do not have to specify sdrUsdDefinitionType for int2, int3, and int4 SdrShaderProperties now.
Added the ability to pass a traversal predicate to UsdStage attribute connection/relationship target finders, and UsdStage::ExpandPopulationMask().
Made "kind" a disallowed field for metadata in schemas.
Changed UsdCollectionMembershipQuery behavior to use either the path expansion rule map form, or the membership expression form, preferring the rule map form if authored. Provided a way for callers to determine whether or not the expression form was used to match. Also fixed some API export tag names.
UsdFlattenLayerStack now handles add/reorder statements as described in the docs for the case where there's only one opinion.
Added guard to gracefully handle NULL stage pointers. (Issue: #2721)
Fixed unnecessary VtArray copy-on-writes during attribute creation. (PR: #2816)
Validate UsdCollectionAPI before accessing in UsdShadeMaterialBindingAPI::ComputeBoundMaterial. (PR: #2501)
Improved performance for computing variant selections during prim composition. For example, in a synthetic test case involving a prim with 1000 references, adding 500 variant sets to that prim previously took ~25.5 seconds; it now takes ~6.8 seconds. (Issue: #1957, #2010)
Fixed bug where variant selections authored at implied sites would be ignored when composing prims with composition arcs pointing to subroot prims.
Fixed bug where incorrect sites would be checked for opinions during dynamic payload argument composition.
Fixed bug where the wrong inclusion state for ancestral payloads would be computed when composing prims with composition arcs pointing to subroot prims.
Fixed bugs in UsdInherits::GetAllDirectInherits where the results would be incomplete or include paths in non-local layer stacks.
Added UsdGeomTetMesh schema.
Added support for elementTypes "point", "edge", and "tetrahedron" in UsdGeomSubset.
Added single precision orientationsf to UsdGeomPointInstancer, which, if
authored, takes precedence over half-precision orientations.
(Issue: #2529)
Deprecated UsdGeomSubset::ValidateSubsets in favor of ValidateFamily.
Added change to avoid de-referencing iterators of an empty set when validating UsdGeomSubset families with no indices. (PR: #2733)
Updated UsdGeomPrimvar::ComputeFlattened() to consider elementSize.
Added a null pointer check in UsdGeomBBoxCache::_Resolve. This brings behavior in line with other UsdGeomBBoxCache operations and prevents crashing in certain multi-threaded situations. (PR: #2905)
Improved the UsdObj handling of .obj files with 'g' statements. (PR: #2092)
Updated usdRiPxr codeless schemas with updated concepts from RenderMan 25.
Updated UsdShadeOutput::GetAttr to return const reference for consistency. (Issue: #2617)
Updated UsdShadeOutput::IsOutput to check attribute validity, to match UsdShadeInput::IsInput behavior. (Issue: #2876, PR: #2877)
Added a new method UsdUtilsLocalizeAsset which will localize an asset to a directory on disk. It also introduces the concept of a user processing function which allows users to provide a function which can modify asset paths and dependencies while leveraging built in asset discovery and traversal code.
Added an optional UsdUtilsProcessingFunc parameter to UsdUtilsComputeAllDependencies. This allows users to inject custom logic into asset discovery.
Updated NormalMapTextureChecker to use GetValueProducingAttributes. (PR: #2885)
Updated ARKit conformance checks to match spec from WWDC 2023. (https://developer.apple.com/documentation/realitykit/validating-usd-files) (PR: #2863, #2875)
Replaced use of GetValueProducingAttribute() API, which had been deprecated and was emitting warnings.
Added imaging support for UsdGeomTetMesh in Hydra 1.0.
Added support for Material Nodegraph edits when using the stage SceneIndex.
Added DataSourceAttributeColorSpace to lazily populate the color space metadata in Hydra 2.0.
Added forceDirtyingTimeDeps flag to UsdImagingStageSceneIndex::SetTime(). This can be used to force render delegates into resampling all primvars in response to, e.g., the camera and thus the shutter interval changing.
Fixed a bug where time-sampled attributes on lights, light filters, and cameras were not detected as time-varying. (PR: #2734)
Added support for asynchronous Hydra processing in UsdImagingGLEngine and usdview, activated with the --allow-async flag in usdview.
Added support for asset[]-valued attribute data sources.
Removed include of dispatcher.h in public header to reduce transitive includes of TBB headers. (PR: #2616)
Published HdSt and Hdx tests, available on Linux.
Enabled Hgi resource generation for non-HgiGL Hgi backends by default.
Fixed a bug where creation of HgiSampler in various backends will always enable anisotropy. (PR: #2492)
Fixed a typo in hgiInterop CMakeLists.txt. (PR: #2641)
Added ability to support both HgiGL and HgiVulkan in single build. (PR: #2564)
Added new unit test for HgiGL and HgiVulkan. (PR: #2851)
Added memory barrier between CPU-GPU copy and GPU-GPU copies in HdStStagingBuffer::Flush.
Various correctness and stability improvements to HgiVulkan, including:
Enabled multi-threaded buffer source resolve to improve performance when executing buffer source computations during resource commit.
Updated to use improved OpenSubdiv shader source mixins to reduce shader source size and improve compatibility when compiling GLSL to SPIR-V for Vulkan.
Updated to include implementations of SPIRV-Reflect and VMA (Vulkan Memory Allocator) directly from the Vulkan SDK instead of maintaining copies of these within the hgiVulkan implementation. (PR: #2563)
Added a version guarded workaround to avoid a performance regression when rendering order independent transparency (OIT) on some recently released Metal devices.
Removed the use of CoreVideo texture caches from hgiMetal to simplify the implementation and fix a memory leak. (PR: #2828)
Added change to support float type matrix (GfMatrix4f) for instance transforms. (PR: #2724)
Added support to provide visual feedback for broken material shaders.
Fixed determination of screen space point size when using authored widths.
Improved the performance of shader generation when certain non-standard primvar names are present.
Refactored HdSt_CodeGen to take metaData as constructor arg. This allows us to delay the construction of the codeGen object since the hash can be computed from the constructor args. With this change there is approx 50% speedup in HdStExtCompGpuComputation::Execute.
Fixed a bug that could lead to crashes in HdsiPrimTypePruningSceneIndex.
Hydra now supports inserting asset names into material networks.
Made HdImageShaderSchema constants return a schema instead of a container data source.
Made HdSceneIndexAdapterSceneDelegate handle image shaders correctly.
Made HdImageShaderSchema filePath a string, not an asset path.
Moved material node sampler parameter extraction into the standalone function HdGetSamplerParameters.
Added disableDepthOfField bool to RenderSettings.
Included <optional> to fix external build error. (PR: #2907)
Changed Metal's swizzle so single channel texture reads follow the UsdPreviewSurface spec of repeating the single channel on the r, g, and b channels with 1.0 in the alpha channel. (Issue: #2731)
Updated color correction task to support building against OpenColorIO 2.3.0. (PR: #2651)
Updated DataSourceMaterial and added HdMaterialNodeParameterSchema for colorspace handling in both Hydra 1.0 and 2.0.
Added UnderlyingDataSource to HdSchema and HdVectorSchema. This allows folding HdVectorSchemaBasedContainerSchema into HdSchemaBasedContainerSchema.
Deprecated hd/vectorSchemaTypeDefs.h in favor of the more generic hd/schemaTypeDefs.h
Deprecated BuildRetained Hydra schema in favor of Builder.
Added more typing to Hydra schemas by replacing container/vector data sources with appropriate schemas. This was done for HdMaterialBindingsSchema, HdMaterialSchema, HdMaterialNetwork, HdMaterialNode, HdRenderProductVectorSchema, and HdRenderVarVectorSchema.
Added GetFlattenedPrimvarValue for HdPrimvarSchema.
HdGeomSubsetsSchema::GetIds is now GetGeomSubsetNames.
Fixed implementation of GetContributingSampleTimesForInterval in HdDataSourceLegacyPrim to include the samples just before or just after the given shutter interval.
Added HdRenderDelegate::GetCapabilities, used to indicate motion blur support.
Introduced HdsiPrimTypeNoticeBatchingSceneIndex and HdsiPrimManagingSceneIndexObserver. Future render delegates can be implemented by observing the terminal scene index (HdRenderDelegate::SetTerminalSceneIndex) and providing an appropriate prim factory.
HdRenderPassState::SetOverrideWindowPolicy now takes std::optional instead of std::pair (similar for related classes).
Improved loading of multichannel OpenEXR files.
Enabled decompression of dwaa and dwab OpenEXR files.
OpenEXR code is now MinGW and Neon compatible.
Added support for monochrome OpenEXR images and swizzling for luminance channels. (Issue: #2800)
Added utility to write out scene index to file.
Removed 'bindingStrength' from HdMaterialBindingSchema.
Added support for asynchronous processing in Hydra generative procedurals, through the new SystemMessage scene index API. Procedural implementations need to implement the new asynchronous API to take advantage of this, and the host application will need to send periodic asyncPoll messages.
Added Hydra schema support for public interface mappings on material prims.
Prims with self-dependencies will no longer be signaled as dirty after they are removed.
Fixed a situation where both smooth and flat normals were being computed for HdMeshes for representations where only one of the two was needed. This is expected to remove about 10ms per unintended invocation.
Added multithreaded sync for HdExtComputations. Added a work parallel loop in Hd_PrimTypeIndex::SyncPrims enabled only for Prim types that opt-in. Opted "extComputation" into threaded prim sync by default. With this there is an order of magnitude performance improvement for use cases which have a significant number of HdExtComputations.
Added Hydra schemata to transport direct and collection-based material bindings, and a scene index to compute the resolved binding. Current support is limited to direct material bindings.
LPE AOV's now use the RenderVar name rather than the LPE expression as the channel name. This both gives expected output names in EXR channels, and fixes name collisions when the same LPE is used with multiple summary statistics, such as variance and mse.
Fixed crash when UsdRenderProduct's orderedVars points at a target prim that does not exist.
HdPrman now supports TfToken-typed parameters.
HdPrman now has a scene index filter, HdPrman_UpdateObjectSettingsSceneIndex, that will upgrade certain attributes used in older RenderMan versions to their modern representation.
Reduced overhead of portalLightResolvingSceneIndexPlugin.
Fixed handling of coordinate systems for light filters, which would give incorrect results in some circumstances.
Added support for single precision rotations for point instancers in HdPrman. Note that half precision rotations are still supported but are cast to floats. (Issue: #2529)
Added PxrMesh adapter to help mesh lights work on older versions of USD which do not have scene index support.
Added change to use the 'disableDepthOfField' RenderSettings option in HdPrman.
Added change to query and use shutter curve parameters if available.
Made various improvements to enable usage of a render settings prim to drive render pass execution. Current support is limited to generation of multiple render product artifacts in batched (i.e., non-interactive) mode.
Improved determination of the Riley shutter interval and its use for motion blur.
Improved instancing stability & performance.
All motion blur handling has been consolidated into a single scene index. Motion blur is now more consistently supported across the entire scene.
Motion blur will better respect the shutter settings of the active camera.
ExtComp is now compatible with motion blur.
Replaced deprecated QFontMetrics.width with horizontalAdvance. (PR: #2625)
Updated usdview selection processing to maintain correct selection highlighting after switching variants or prim activation and avoid some errors that could occur at startup when using PySide6 on Linux or Windows.
Updated camera transforms for usdrecord to make sure small objects are not unexpectedly culled by the clipping planes. (Issue: #2556)
Updated CMakeLists for usdrecord to skip building if GPU and/or OpenGL are unavailable. (PR: #2468)
Fixed name collision with MaterialX inputs and built-in uniforms in Storm. (PR: #2807)
Fixed OIT issues for MaterialX when using Metal. (PR: #2614)
Added HdMtlxGetStdLibraries to cache the MaterialX::LoadLibraries step. (PR: #2666)
Added change to allow matrix33 default values in UsdMtlx. (PR: #2554)
Fixed testUsdImagingGLMaterialXCustomNodes_customColor failure. (PR: #2728)
Fixed Tangent vector calculation for MaterialX NormalMaps. (Issue: #1585)
Updated MaterialXMatfilt to handle normalMaps with PreviewSurface Materials. (Issue: #1585)
Fixed shader compile error when using MaterialX's :heighttonormal nodes. (Issue: #2281, PR: #2474)
Fixed a bug where the "fileprefix" attribute was not being applied to filenames. (Issue: #974, PR: #2660)
Updated CMakeLists for usdBakeMtlx to skip building if GPU and/or OpenGL are unavailable. (PR: #2468)
Updated doc for UsdStage::Traverse() comments regarding PrimRange. (Issue: #222)
Updated UsdPreviewSurface Specification, added information about transparent black for texture wrap mode border color, clarified clearcoat inputs. (Issue: #2659, #2770)
Updated "Products Using USD" docs page with new Unity packages. (PR: #2884)
Updated UsdSkel documentation with fixed examples. (Issue: #2621, PR: #2697)
Updated Python docstring generation scripts:
Fixed UsdShadeMaterialBindingAPI example. (PR: #2726)
Removed the deprecated UsdSkelPackedJointAnimation class.
Updated C++ standard version to C++17 per VFX Reference Platform CY2022.
Various fixes and changes to build_usd.py:
Fixed a bug on Windows where loading Python modules would fail if the PATH environment variable contained a relative path. (PR: #2409)
Numerous changes to remove uses of boost throughout the source tree. (Issue: #2202, #2211, #2226, #2228, #2247, #2250, #2296, #2305, #2311, #2634, PR: #2212, #2227, #2232, #2233, #2234, #2235, #2269, #2280, #2297, #2308, #2312, #2328, #2333, #2349, #2389, #2390, #2496, #2503, #2505, #2506, #2509, #2510, #2522, #2524, #2527, #2528, #2530, #2532, #2532, #2533, #2534, #2535, #2540, #2541, #2542, #2543, #2548, #2549, #2567, #2584, #2585, #2588, #2589, #2590, #2592, #2645, #2652, #2655, #2656, #2657, #2667, #2672, #2685, #2699, #2700, #2703, #2704, #2705, #2706, #2708, #2710, #2713, #2716)
Fixed various build errors and warnings. (Issue: #2183, PR: #2321, #2322, #2350, #2611, #2643, #2646,
Fixed build errors when the path to the source tree or the install location contains whitespace.
Improved cmake performance when performing a monolithic build.
Made 12.6.3 as the minimum macOS requirement (with compatible Xcode version being 13.3) we test against.
Fixed VtArray declarations of extern template instantiations. (PR: #2415)
Made change to use correct integer compression working space size when decompressing. (PR: #2435)
Fixed a bug where crash could occur on Python shutdown.
The initial deployment of pattern-based collections is now feature complete. This includes the following feature work on pattern-based collections: SdfPathExpression attribute values, composition support, a new membershipExpression attribute on UsdCollectionAPI, and UsdCollectionMembershipQuery support.
Added VtValue::(Unchecked)Mutate<T>(), which lets callers mutate the held object.
Added GetNodeSubtreeRange function to PcpPrimIndex that returns an iterator range for traversing all nodes in prim index subtree starting at a particular node.
Added methods to UsdGeomXformable to retrieve individual UsdGeomXformOps.
Cleaned up wrapSchemaClass.cpp by specifying args and checking names for
multipleApply classes. Regenerating schemas under this version will update
Python wrappings for multiple-apply API schemas to add named arguments to
constructors.
Removed the deprecated UsdSkelPackedJointAnimation class.
Added UsdLuxDomeLight_1 schema, a new version of the UsdLuxDomeLight schema that introduces a "poleAxis" property that affects the dome's final rendered orientation.
Fixed a dangling pointer bug in TfType that could lead to crashes on program exit.
URI schemes used for Ar URI resolvers are restricted to ASCII alphanumeric
characters plus +, ., and - to conform to the URI/IRI specification in
RFC2396. By default, URI resolvers associated with non-compliant schemes are
ignored, but may be enabled by setting the environment variable
PXR_AR_DISABLE_STRICT_SCHEME_VALIDATION to 1.
(PR: #2453,
#2467)
When flattening a stage, asset paths with unresolvable URI schemes will be treated as absolute paths. (Issue: #2480)
Allow loading plugins from file paths that contain Unicode characters. (PR: #1987)
Updated the UsdLuxPortalLight schema to add "width" and "height" and remove "extent".
Extended stage variable expression language:
Added "resolved asset path resyncs" to UsdNotice::ObjectsChanged. This new category of changes indicates that asset paths in a subtree have been invalidated and may now resolve to a different location, even though the authored asset paths have not changed. This may occur due to asset resolver changes, or expression variable changes.
Client code that cares about changes to resolved asset paths must be updated to accommodate this new category of changes. The simplest way to do this is to treat all resolved asset path resyncs as full object resyncs. This is what UsdStage had done previously.
Fixed a bug where calls to ArResolver::RefreshContext that affected the resolution of sublayer asset paths would not cause affected prims to be resynced.
Fixed a bug where UsdNotice::ObjectsChanged::ChangedInfoOnly would incorrectly indicate that descendants of prims with info changes also had info changes.
Fixed a bug where UsdStage would not send notices for changes to instancing prototype in response to instances being loaded or unloaded.
Fixed a bug that caused crashes when calling UsdObject::GetDescription on expired UsdPrims.
Added GetKind and SetKind APIs to UsdPrim.
Added IsComponent and IsSubComponent APIs to UsdPrim. Note that subcomponent query is not cached because we only cache model-hierarchy-related information, and therefore this query will be considerably slower than other kind-based queries.
Added APIs to query model, group, assembly, component, and subcomponent to libKind.
Fixed TfPathUtils test by using TfNormPath instead of TfRealPath on Windows. (PR: #2476)
Versioned up and introduced UsdGeomCapsule_1 and UsdGeomCylinder_1 schemas to provide top and bottom radii. (PR: #2596)
Fixed SupportedFile error handling in complianceChecker. (PR: #2429)
A previous release moved HdModelSchema out of UsdImagingModelSchema. This change has been reverted.
Fixed missing refresh when editing nodegraph attributes (PR: #2168)
Introduced UsdImagingCreateSceneIndices. Clients are encouraged to use this new API which abstracts creating the UsdImagingStageSceneIndex and the other scene indices necessary to resolve various USD behaviors such as instancing. Using the new API will hopefully isolate clients from future changes to the topology of filtering scene indices that are necessary to process a USD stage.
Made various fixes to the scene indices resolving USD native instancing and draw modes. In particular, draw modes authored on instances are now inherited and handled correctly and some subtle bugs with xforms authored on the prototype of a point instancer are fixed.
Moved code to handle UsdGeomModelAPI (when using scene indices) to its own API adapter.
Renamed usdRiImaging to usdRiPxrImaging since the corresponding schemata are in usdRiPxr (shipping with the Hydra RenderMan plugin).
Updated fallback purpose to "guide" so a bone mesh will not always show up when rendering skinned geometry.
Fixed UsdImaging 2.0 handling of requests to resync "/". The incorrect behavior was causing issues when changing the layer stack of a UsdStage, but behavior should now match UsdImagingDelegate.
Changed the UsdPreviewSurface spec's UDIM support to advertise handling of UDIM tiles from [1001,1100], instead of ending at 1099. This allows artists to use up to a 10x10 grid. Changed usdImaging/hdStorm UDIM handling to match.
Fixed an issue where the UsdImaging 2.0 configuration of UsdImagingGLEngine would lose root transform and visibility overrides on renderer change.
Bounding boxes representing prims with unloaded payloads are now instanced correctly. (PR: #2408)
Primvars with type 'asset' are now supported on native instances. (PR: #2521)
HdxSelectionTask and HdxColorizeSelectionTask no longer have the "enableSelection" parameter. This has been replaced with "enableSelectionHightlight" and "enableLocateHighlight" to allow separate control of selection and locate (rollover) highlighting with these tasks.
Added "includeSchemaFamily" option to the usdImaging pluginInfo.json, to allow one adapter to be used to render multiple different schema versions. (PR: #2596)
Added error handling for calls to OCIO in HdxColorCorrectionTask.
Removed unused SetLightingStateFromOpenGL and SetLightingState methods from HdStSimpleLightingShader.
Changed rebuilding of HdxSimpleLightTask buffer sources to happen only when needed.
Added scalar accessor for primvar redirects in HdSt_CodeGen even if primvar shares name with shader parameter.
Added argument to specify buffer usage when creating standalone buffer resources, allowing for correct specification of the drawIndirectResult buffer as a storage buffer.
Removed codegen of element primvar data for GPU frustum culling pipeline.
Fixed pipeline draw batch GPU frustum culling counting mechanism to wait for compute work rather than blit work.
Removed colorResolveAttachmentDescs and depthResolveAttachmentDesc fields from HgiGraphicsPipelineDesc and replaced them with boolean "resolveAttachments".
Added relevant geometric shader values to graphics pipeline hash computation.
Added OpenSubdiv shader source to geometry shader when using Hgi resource generation.
Added explicit default stencil value in HdStRenderDelegate::GetDefaultAovDescriptor, now used in Hgi backends.
Only fill color or depthStencil value of VkClearValue union in HgiVulkanGraphicsPipeline.
Various small cleanups to Hgi resource destruction.
HdSt_ResourceLayout has been moved and renamed to HioGlslfxResourceLayout.
HdStRenderPassState::ComputeImageToHorizontallyNormalizedFilmback is now accessible via the public API.
Improved shader program cache hit rate by reducing render pass shader variants stemming from different numbers of clip planes.
Added modelPath, kind, and asset{Identifier,Name,Version} to the Hydra modelSchema, corresponding to UsdModelAPI.
Hydra's material network editor interface now provides GetModelAssetName().
For the data source material implementation, this is backed by the Hydra
modelSchema
Added a Tf scope description to inform the user while the app is waiting for a renderer to Stop()
Added HdxEffectsShader, a new base class for HdxFullscreenShader that provides functionality for image shaders creating and managing an HgiGraphicsPipeline instance.
HdxFullscreenShader's BindBuffers and BindTextures function signatures have changed, and the method used for determining binding points for buffers and textures has changed as well.
HdImageShader is a new prim type that has been added to represent image shaders in Hydra.
The RenderColorWithOccludedSelection render pass now takes non-opaque colors into account.
HdxAovInputTask now cleans up the intermediate depth texture it may have created when it is destroyed.
Fixed a bug that caused HdxColorCorrectionTask to not work correctly when using OpenColorIO 2.x with OpenGL on Linux.
Fixed race condition in HdGpGenerativeProceduralResolvingSceneIndex.
Introduced HdMakeStaticCopy used to make a copy of a data source.
Added built-in support for .exr (OpenEXR) image files in Hio. You no longer need to compile additional plugins to get OpenEXR support. See Working with Image File Formats: OpenEXR for more details.
Fixed scene transport of portal lights.
Added HdRenderDelegate API SetTerminalSceneIndex and Update to allow a render delegate to observe the terminal scene index and process change notices directly, aiding the transition to the Hydra 2.0 OM.
Added "shutterInterval" as a computed field on the render settings schema. Extended the render settings filtering scene index to compute and invalidate it based on the targeted camera and motion blur opinions of the render products.
Updated Hydra 2.0 stage scene index to sparsely invalidate in response to resolved asset path resyncs.
Added doxygen documentation about the HioImage plugin interface to help integrators writing their own HioImage plugins for texture loading.
Fixed Hydra 2.0 handling of transform flattening for non-zero shutter offsets.
The internal synthesized primvars used by Hydra instancers to communicate instance transforms to render backends have been renamed. Custom backend authors should update to the new tokens. An environment variable (HD_USE_DEPRECATED_INSTANCER_PRIMVAR_NAMES) is provided for the next 2 releases for those who need to continue using backends that have not yet been updated. Hydra backends for RenderMan, Storm, and Embree have been updated. See the post titled "Hydra synthesized instancer primvars renamed in release 23.11" in the Hydra channel in the AOUSD forums for more details.
HdMeshReprSpec adds the parameter 'forceOpaqueEdges' which, when true, signals that wireframe and hull opacity signals should be ignored.
Updated HdCyclinderSchema and HdCapsuleSchema in accordance with new Cylinder_1 and Capsule_1 schemas. Deprecated radius attribute and added radiusBottom and radiusTop attributes.
hdPrman for RenderMan 24 is deprecated. Support for hdPrman for RenderMan 24 will be removed in a future release.
Added support for array-valued inputs on shader nodes. (Issue: #1710)
Changed UsdPrimvarReader_float3 OSL shader "fallback" param to be float array instead of color. (Issue: #1683)
Added support during Riley shading node creation for shader parameters holding a GfVec3f with type SdrPropertyTypes->Float, treating them as a float array. (Issue: #1683)
Fixed a bug in MatfiltConvertPreviewMaterial where it could potentially iterate nodes multiple times, due to HdMaterialNetworkInterface::GetNodeNames not removing duplicates. Duplicates happen when there are multiple outputs being used on the material, like surface and displacement for UsdPreviewSurface.
We previously added sampleCount XPU rendering pixel information normalized in the renderer as opposed to normalized by display drivers. To enable backward compatibility, we've made a change that preserves the previous Rebind() API and just has a dead parameter, "weightsOffset". We rely on display drivers to ignore invalid offsets and only do sampleCount normalization when a valid sampleCount offset is provided.
Motion blur improvements for legacy motion blur support when scene index plug-ins aren't available:
Motion blur improvements for the velocity blur scene index plug-in:
The MtlxStandardSurface shader had an incorrect default for fuzzGain (it should be 0, not 1). Changed the default in the OSL StandardSurfaceParameters adapter pattern that gets wired up to PxrSurface when MtlxStandardSurface is being translated.
Added code pathway to allow HdPrman_RenderPass to use the Render Settings prim for non-interactive rendering with a valid Render Settings prim. Note that a Render Settings prim is considered valid if there is at least one Render Product and a camera relationship.
Added support for portal lights, including a resolver for managing their dome light relationship.
Removed "prmanParams" Sprim in favor of "renderSettings".
Added various improvements to improve determinism of test runs and reduce run times.
Reworked initialization of Riley scene options by composing opinions from various sources and allowing it to be deferred until render settings prim sync time to correctly handle immutable scene options.
The testHdPrman test shim will now produce noisier, but faster and more stable renders by default.
In response to a recent change to RenderMan, HdPrman will now enable rendering of volume aggregates by default when there is no authored integrator in the scene.
Edited the "Select Camera" menu in usdview to provide a popup dialog box that displays all cameras if there are more than 15 cameras in the scene.
Fixed a bug that prevented auto-complete from working correctly in the Python interpreter when using PySide6.
When authoring drawMode on a prim, apply UsdGeomModelAPI to the respective prim. Note that the scene index implementation of UsdImaging ignores the drawMode on a prim unless the prim has UsdGeomModelAPI.
Added change to process authored color spaces by HdMtlx and Storm, making the default color space 'raw' instead of 'auto' (Issue: #1523, #1878)
Updated MaterialX imaging tests.
Added error handling for MaterialX to avoid crashes when the shader is unable to be created.
Updated USD Products entry for NVIDIA Omniverse. (PR: #2546)
Added Rendering with USD user guide. Use this guide to help build a robust USD pipeline and configure your assets for rendering.
Added details on OpenEXR support in USD to the USDZ specification and the Rendering with USD docs.
Added Variable Expression guide for using the new Variable Expressions feature.
Various documentation updates:
Various updates to python doc strings generation:
<USD module>_API type name prefixes
(PR: #2580)Removed support for PySide 1.x. This had been deprecated in the 22.08 release.
We anticipate moving to the VFX Reference Platform CY2022 and C++17 in an upcoming release. Note that as part of the migration to C++17, some API signatures will change from using boost to using the std equivalent.
Made numerous changes to remove uses of boost from parts of USD and usdImaging
as part of ongoing effort to remove boost throughout the code base.
(Issue: #2203,
#2250,
#2257,
#2272,
#2243,
#2318,
#2211,
#2236,
#2203,
PR: #2205,
#2207,
#2208,
#2209,
#2214,
#2237,
#2244,
#2251,
#2252,
#2253,
#2259,
#2261,
#2270,
#2271,
#2273,
#2285,
#2292,
#2293,
#2294,
#2295,
#2309,
#2320,
#2345)
Added a new build_usd.py command line option --cmake-build-args which will
propagate arguments to all CMake invocations during the build process.
(PR: (#2484)
Updated pxrConfig.cmake to add the Python version used at build time for downstream projects to find during their cmake build configuration step. (PR: #2093)
Removed support for PySide 1.x. This had been deprecated in the 22.08 release.
Sublayers are now loaded in parallel during UsdStage composition.
Fixed a bug in VtArray Python binding where setting values at index -1 would do nothing. (Issue: #2327)
UsdFlattenLayerStack now only adds a ".usda" extension if the tag provided is empty. This allows client code to flatten to their desired schema/format.
Deprecated spec-based functions on UsdPrimDefinition in favor of new property definition accessors.
Changed some behaviors of API schema composition in prim definitions.
Added a function to PcpDynamicFileFormatContext that allows dynamic file formats to also compose and use attribute default values when determining the file format arguments for a dynamic payload.
Updated UsdUtilsComputeAllDependencies and UsdUtilsExtractExternalReferences to now work correctly with anonymous layer identifiers. (Issue: #2073
Fixed bug where UsdUtilsComputeAllDependencies would return layers with unexpected identifiers. (Issue: #2074
Fixed an issue in which nested usdz packages could result in additional dependencies being processed. (Issue: #2134
Fixed an issue to prevent asstInfo:identifier metadata from triggering an additional dependency when creating usdz archives. (Issue: #2135
Fixed a regression in UsdUtilsModifyAssetPaths to preserve explicit declaration of an empty SdfAssetPath.
Fixed a bug where UsdUtils.UsdzAssetIterator would change the process' current working directory.
Updated UsdSkel to remove warnings when UsdSkel attributes are authored on a prim but the UsdSkelBindingAPI schema is not applied. Please ensure that prims that have authored UsdSkel attributes have the UsdSkelBindingAPI schema applied.
Added stage variable expressions feature. The initial implementation supports
string-valued variables and expressions with string substitutions
(e.g., "asset_${NAME}".usd) in sublayer, reference, and payload asset paths,
variant selections, and asset and asset[]-valued attributes and metadata.
Additional work slated for an upcoming release include:
Fixed error messages for invalid specs in SdfCopySpec. (PR: #2440)
Removed the use of USD_SHADE_MATERIAL_BINDING_API_CHECK environment variable. Updated UsdShadeMaterialBindingAPI application check by adding a supportLegacyBindings argument to relevant APIs, which currently defaults to true. Note this default will be updated when Hydra 2.0 is enabled by default.
Fixed thread-safety issues that could lead to crashes in UsdSkel computations. (Issue: #1742, PR: #2369)
Added UsdImagingPrimAdadpter::GetFullModelDrawMode and UsdImagingDelegate::GetModelDrawMode to support access of model draw mode from Hydra scene delegate.
Disabled shadows on the "simple" headlight. (PR: #2373)
Added various updates and fixes to UsdImagingStageSceneIndex. This class is being developed as a replacement for UsdImagingDelegate and is missing support for UsdSkel, UsdGeomSubset, and material binding collections. Code that wants to try the new implementation can add it to a render index by following the example of UsdImagingGLEngine, or enable it in UsdImagingGLEngine (and usdview) with the USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX env var.
Updated UsdImagingGLEngine to use the scene globals scene index to set the active render settings prim.
Fixed a performance regression in HdLight::Sync. (Issue: #2416)
Allow population of instanced USD materials as uninstanced Hydra materials.
While Hydra doesn't directly support instanced materials yet, this allows
scenes to make use of instancing at the USD level and still render correctly.
If a UsdShadeMaterial is natively instanced on the UsdStage, it will share the
potentially numerous UsdShadeShader nodes, and the material-level parameter
interface (which can be connected to shader parameters) can be overridden on
each instance.
Fixed issues where certain authored transforms were being lost in certain cases where point instancers were being instanced by native instancers, or where transforms were authored on a point instancer's non-imageable prototype root. (Issue: #1663, #2359)
UsdImaging now returns material networks by render context, and strips render context namespace from the terminal names. Consequently we no longer need HdsiTerminalsResolvingSceneIndex. Saved 30+ seconds of production shot Storm load time by keeping Storm from traversing RenderMan-specific USD material networks only to then immediately discard them.
Made change so UsdImagingDataSourceMaterial now strips the material path prefix from names of the nodes in the network. This both makes networks more concise to inspect and removes an unnecessary source of superficial variation in otherwise-matching materials recurring across models, enabling more effective de-duplication of matching material networks across assets.
Made UsdImaging_PiPrototypeSceneIndex performance improvements, reducing load time of a production shot from 67 sec to 13 sec.
Moved UsdImagingModelSchema to HdModelSchema.
Fixed value of aspectMask in HgiVulkanTexture::CopyBufferToTexture. (PR: #2442)
Fixed a bug with GPU instance frustum culling prims with geom subsets. (Issue: #1892)
Updated HdStRenderPassState::ComputeViewport to use _GetFramebufferHeight when computing the viewport.
Made various fixes for Metal backend:
Cleaned up HdStRenderPassState setup of face cull mode. (PR: #2433)
Cleaned up codeGen mixins related to OpenSubdiv to reduce the size of compiled shader source.
Moved several Storm specific implementation aspects from lib/hd to lib/hdSt including: smoothNormals, flatNormals, vertexAdjacency, bufferArrayRegistry, strategyBase, resource, bufferResource, computation, extComp, drawItem BAR accessors.
Updated Basis curves shader to use difference rather than tangent vector when the latter is degenerate. This prevents artifacts where the last segment during tessellation is dropped when pinning curves (having the last points of a cubic curve all equal).
Fixed rendering of pinned catmullRom curves to include the first and last segments when drawn as lines. (Issue: #2445)
Optimized shader processing in Storm to provide stable shadertext to the GPU. This allows some GPU drivers to fully utilize shader compilation caches, significantly reducing the time spent compiling and linking GLSL shaders. In one production shot, this time went from 5+ seconds to 60 ms.
HdsiPrimTypePruningSceneIndex now nulls out the primType and dataSource of pruned prims without also pruning the subtree beneath them. This allows application-supplied renderBuffers, drawTargets, etc. that are children of pruned prim types to survive.
HdFlatteningSceneIndex now lazily populates its cache of flattened data sources using a two phase scheme that more efficiently accommodates both scene updates and concurrent traversal.
Fixed HdRenderIndex::GetSceneDelegateAndInstancerIds for prims that don't contain a "delegate" data source.
Added API for accessing model draw mode data in HdSceneDelegate.
Fixed alpha channel blending in hgiInterop composite functions.
Added lens distortion, focus, and split diopter parameters to HdCamera.
Updated fullscreen shader to use the correct texture sampling function for the depth texture.
Updated HdxAovInputTask to create and manage a "depthIntermediate" texture to facilitate ping-pong behavior for image shaders.
Added legacy and Hydra 2.0 support for the render terminals in PxrRenderTerminalsAPI
Made HdFlatteningSceneIndex modular by allowing clients to give a container data source mapping names of data sources to instances of HdFlattenedDataSourceProvider which a client can implement to provide additional flattening policies. Some other fixes and potential performance improvements to HdFlatteningSceneIndex.
Updated HdFlatteningSceneIndex to additionally flatten coordinate system bindings and constant primvars.
Introduced HdsiPrimTypePruningSceneIndex which generalizes HdsiMaterialPruningSceneIndex and is also used to prune scene lights.
Renamed HdMaterialBindingSchema to HdMaterialBindingsSchema and made it contain a schema rather than just a path to the material to bind. This is to facilitate material binding strength in usdImaging.
Added GetSchemaToken to Hydra schemas where appropriate.
Made shading nodes with implementation source code work with scene indices. Updated HdRenderPassState to make the calls to set the camera, override window policy, and framing/viewport orthogonal.
Added scene index to manage global scene data such as the active render settings prim.
Added scene index that provides dependency registration and namespace filtering functionality in service of render settings prims.
Removed query of "material" data source for HdSceneIndexAdapterSceneDelegate::GetLightParamValue as it has significant overhead.
Updated to return light parameters within "light" data source from UsdImagingStageSceneIndex in order to satisfy render delegates which don't make use of GetMaterialResource for lights.
Added display names and tags for scene index instances (in service of user interfaces).
Added renderInstanceId on HdRenderIndex (used for application-specific tracking and in service of user interfaces).
Added scene index plug-in registry support for closure-based registration for application-specific configuration of downstream scene indices.
Updated HdSceneIndexPluginRegistry::InsertionPhase from unsigned int to int (in preparation for future "before vs after per-renderer branch distinction").
Added HdSceneIndexObserver::RenamePrims for future use (with fallback behavior to convert to removes and adds).
Updated back-end Hydra emulation to allow fallthrough to delegate->Get for an empty result even when a "primvars" data source is present.
Updated HioImage plugin precedence to space values out, for more flexibility. Note that the relative precedence of existing HioImage subclasses has not changed. Future plugin authors can add support for new image loading libraries by subclassing HioImage, specifying supported file extensions, and choosing a precedence relative to the basic USD plugins; the highest precedence plugin is used.
Added native instancing and point instancer support for lights to Hydra and HdPrman. Analytic and geometric (mesh) lights are now supported in instance prototypes all the way through Hydra, and Hydra render bridges may now expect to see instancing information on light prims. Note that mesh light support in HdPrman still requires that scene indices be enabled.
Made various performance improvements:
Added support for RenderMan 25.
Fixed a bug where black artifacts often show up in RenderMan renders that use UsdPreviewSurface with a normal map. The fix handles bumpNormals that are facing away from the camera when the surface is facing forwards, based on what PxrNormalMap does in the RixAdjustNormal method.
Added support to use scene option settings on the active render settings prim.
Added functionality to configure and use the render settings filtering scene index for filtering and dependency functionality.
Improved performance of HdPrman significantly when rendering scenes with very high instance counts by making use of RenderMan nested group instancing.
Added support for instanced lights.
Updated RenderMan args parser to camelCase shader node context for displayFilters, to match how its done for sampleFilter, lightFilter and pixelFilter.
Updated usdRiPxr schemas to reflect updates to RenderMan args files for RenderMan 24.0.
Fixed a bug in usdview's metadata tab where not all inherited paths would necessarily be listed for the inherits field.
Fixed PySide object initialization to avoid runtime exceptions when using PySide6 6.5.x. (PR: #2392)
Fixed a bug with display of prims having property paths for IDs in Python Hydra scene browser.
Added MaterialX v1.38.7 support to allow for MaterialX support on Metal. (Issue: #2216, PR: #1965, #2324, #2402)
Fixed a bug where calling SdfLayer::ImportFromString with a .mtlx document would fail to resolve relative XML include paths.
Added Distant light support to MaterialX in Hydra.
(Issue: #2411)
Made various documentation updates:
Added the doxygen awesome theme to doc build. This theme adds responsive design so documentation can be viewed on mobile devices, and a dark/light theme to improve visibility. Note that doxygen awesome needs doxygen 1.9 or better to build properly. (PR: #2050)
Fixed typo in primvar documentation (Issue: #2386)
Fixed reported broken link (Issue: #2450)
Fixed pipeline plugInfo.json doc example (Issue: #2346)
Replaced references to ASCII with Text in USD binaries to account for UTF-8 support (PR: #2394, #2395)
Clarified sourceColorSpace = sRGB only applies to transfer curve and not gamut (Issue: #2303)
Added info on changing metadata via variants (Issue: #2326)
Introduced GetAppliedItems for SdfListOp API. Deprecates GetAddedOrExplicitItems.
Support for Python 2 has been removed in this release.
Changes and fixes for build_usd.py:
--generator Ninja.
(PR: #2192)Bumped CMake minimum to 3.14 on linux to support vfx2020 dependencies. Other platforms require 3.20 or greater. (Issue: #1620)
Updated CMake to use PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR instead of CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR respectively, in order to allow building USD as a subdirectory. (PR: #1971)
Removed uic as alternative to pysideX-uic from FindPySide.cmake as uic will produce a py file containing C++ code.
Added ability to build docstrings for the USD Python modules. This can be
enabled by specifying the PXR_BUILD_DOCUMENTATION,
PXR_ENABLE_PYTHON_SUPPORT, and PXR_BUILD_PYTHON_DOCUMENTATION options
when running CMake, or --docs, --python, and --python-docs when running
build_usd.py. See BUILDING.md for more details.
(Issue: #196)
Fixed issue when PXR_PY_UNDEFINED_DYNAMIC_LOOKUP is explicitly set when packaging wheels, or when cross compiling to a Python environment that is not the current interpreter environment. The value will now be set automatically during cmake configuration. (Issue: #1620)
Various fixes for build issues, including missing headers on different platforms and compilers. (PR: #2194, #2215)
Various fixes for compiler warnings from clang. This has reduced the warning count on MacOS builds from several hundred to roughly 60. (PR: #1684, #1997)
Removed PXR_USE_PYTHON_3 CMake option.
Fixed a bug where undefined behavior could be invoked when reading a corrupted .usdz file.
Fixed a bug where UsdStage::LoadAndUnload() could over invalidate and recompose. (Issue: #2286)
Fixed deadlock when opening and closing layers from multiple threads in Python. (Issue: #2306)
Fixed deadlock in TfType::GetAllDerivedTypes(), which could appear when opening and closing layers from multiple threads. (Issue: #2282)
VtArray now uses operator new (including global replacements) to allocate memory.
Fixed a bug where VtArray could read from freed memory when inserting copies of elements from within the container.
Fixed various safety issues for reading from corrupted .usdc files.
The composition engine now supports internal references expressed by a variant. Internal references also now retain visibility to namespaces outside the referenced scope.
The composition engine now prohibits scene paths with embedded variant selection components (such as </A{x=y}B>) when used for composition arc targets. This is enforced both at the Sdf schema level and composition subsystem level. Schema enforcement means that invalid paths cannot be authored via runtime API, nor will they be accepted by the text parser. As a deployment aid, the environment setting SDF_SCHEMA_PROHIBIT_INVALID_VARIANT_SELECTIONS may be set to '0' to continue to allow these paths at the schema & parser level. Regardless of the setting, however, the composition system will always prohibit such paths where invalid for composition purposes.
UsdCollectionAPI now handles the combination of includeRoot=true and
expansionRule=explicitOnly without throwing a coding error.
(Issue: #2258
Updated RapidJSON used by pxr/base/js to the latest available version as of January 2023. (Issue: #2219)
Completed initial support for Schema Versioning
Improved UsdStage update performance when applying or removing an API schema on prim. (Issue: #2343)
Added "collection:<name>" to the CollectionAPI schema as a real, opaque valued, attribute for allowing collections to be targeted by a relationship.
usdGenSchema now allows multiple-apply schemas to declare a property with no base name via the special property name "INSTANCE_NAME".
usdGenSchema generates literal token identifiers (instead of camel cased identifiers) by default. Some usdLux and usdVol token identifiers have been updated.
Added SdfFileFormat::FindAllDerivedFileFormatExtensions to determine all extensions supported by a subset of file formats without loading the plugins for those formats.
Updated usdRi schema to include RiRenderPassAPI, which provides cameraVisibility and matte collection attributes to provide collections of objects relevant to the renderer for respective concepts. Note by default cameraVisibility collection includes all objects, and matte collection excludes all objects.
Updated RenderPass schema to include a renderVisibility collection property, which provides a collection of objects relevant to the renderer. Note by default all objects are included in the collection.
Fixed race condition in ArFilesystemWritableAsset that could cause writing to the same directory from multiple threads to fail if that directory had not yet been created.
Added support for array vstruct sdrShaderPropery types.
Resolved UDIM tiles when calculating asset dependencies. (PR: #2133)
File format plugins can now specify read / write / edit capabilities in their plugInfo.json file. (Issue: #2147)
Added pointWeights attribute to NurbsCurves in usdGeom. (Issue: #1554)
Introduced GetAppliedItems for SdfListOp API. Deprecates GetAddedOrExplicitItems.
SdfSpec::ClearInfo now errors for unknown metadata fields.
UsdRenderComputeSpec() now skips schema properties when aggregating authored settings.
Replaced uses of boost::hash with TfHash throughout the base and usd packages of pxr. (PR: #2173, #2176, #2181, #2182, #2184, #2185, #2186, #2187, #2190, #2191, #2289, #2298, #2304, #2329)
Removed use of "register" keyword, which is no longer supported as of C++17. (PR: #2204)
Various changes to remove uses of boost. (Issue: #2203, #2211, #2217, #2221, #2247, #2290 PR: #2210, #2213, #2213, #2249, #2291)
Fixed a bug where UsdUtilsCreateNewUsdzPackage would not correctly handle relative filesystem paths pointing to a directory outside the directory containing the root layer.
Fixed a bug where using a Usd.PrimRange from an expired Usd.Stage in Python would crash or throw an unexpected exception. (Issue: #2160)
Updated USD compliance checker to error instead of warn when the following issues are found:
Updated deprecation logic for USD_SHADE_COORD_SYS_IS_MULTI_APPLY, such that warnings are reported when the environment variable is set to Warn and usdPrim is using any old style coordSys property.
Updated testUsdBugs to explicitly use integer division, so as to avoid passing a float to truncate method. (Issue: #2170, PR: #2171)
Updated UsdProperty.GetPropertyStack and
UsdProperty.GetPropertyStackWithLayerOffsets python APIs to take a
UsdTimeCode as an optional argument, to match their respective C++
APIs.
(PR: #2317)
Added compliance tests to make sure UsdSkelBindingAPI is applied on prims having properties provided by UsdSkelBindingAPI. Also added a compliance test to ensure that UsdSkelBindingAPI has only been applied on SkelRoot prims or descendants of SkelRoot prims.
Updated usdRiPxr codeless schemas with updated concepts from Renderman 24.5.
Fixed ZipFileWriter context manager to discard any archived files if the root USD file is non-compliant. This fixes usdzip and usdfixbrokenpixarschemas usage with non-compliant usdz archives.
Fixed various gf tests to resolve floating point precision issues on ARM (aarch64) platforms. (PR: #2115)
Updated UsdShadeShaderDefUtils::GetPrimvarNamesMetadataString to only append existing non-empty primvar strings into the list in order to avoid appending of empty strings on aarch64 platforms. (PR: #2131)
Added UsdImaging::SetRootInstancerId as a method to set new member
_rootInstancerId, which is now used as the fallback case for
UsdImagingDelegate::GetInstancerId.
Fixed crash in UsdImagingAdapterRegistry by comparing with the end iterator of the same unordered_map. (PR: #2197)
Removed material prims under a point instancer when resyncing. (Issue: #1960)
Fixed shader compilation errors with usdImagingGL volume tests on macOS.
Fixed errors and inconsistencies with usdImagingGL instancing tests related to Ptex textures and handling of "--cullStyle" and "--shading" test command line arguments. (Issue: #2097)
Updated PreviewSurface.glslfx to mirror changes made to simpleLighting.glslfx to make sure the intensity and exposure on dome lights are properly affecting PreviewSurface materials.
Added GetRenderSettingsNamespaces to HdRenderDelegate to get namespaces for render settings attributes that are render-specific.
Updated HdRenderSettingsSchema and UsdImagingRenderSettingsAdapter.
Add Scene Index support functions to the UsdImagingRenderSettingsAdapter.
Added UsdImagingUsdSchema which combines data sources internal to UsdImaging.
Fixed a cyclic reference (in UsdImaging_NiInstanceAggregationSceneIndex_Impl) where a data source in a HdRetainedSceneIndex (_InstanceObserver::_retainedSceneIndex) held on to a ref ptr to a data structure (namely, _InstanceObserver) containing a ref ptr to the scene index. This was causing a memory leak and a crash in _InstanceObserver::PrimsRemoved.
Made various small fixes and clean-ups to the filtering scene indices required for USD native and point instancing support.
UsdImagingPiPrototypesPropagatingSceneIndex now lists the paths of the propagated prototypes for a USD prototype. This is intended for clients that need to translate a USD path to a Hydra scene path, e.g., to support selection highlighting.
UsdImagingNiPrototypesPropagatingSceneIndex populates the HdInstanceSchema for native instances.
Enabled selection highlighting of USD native instances when using scene indices. The UsdImagingSelectionSceneIndex processes the path to a native USD instance by reading its HdInstanceSchema and populating the HdSelectionSchema.
Fixed purpose handling in the UsdSkelImagingAdapter.
Added adapter support for transporting render settings scene description (which includes render products and render vars, but not render passes).
Fixed an issue where having multiple prim/API adapters could cause double population in UsdImagingStageSceneIndex.
Added support for "keyless" API schema adapters which have an opportunity to contribute to any prim.
GetInstanceCategories now works under nested instancing, returning categories for all instances in the flattened hierarchy. (Issue: #2002)
Fixed crash due to out of bounds access in UsdImagingInstanceAdapter::GetScenePrimPaths. (Issue: #2268, PR: #2278)
Updated UsdImagingCoordSysAPIAdapter to provide access to coordSys hydra prim (HdCoordSysSchema), which provides information about coordSys name and xform values. Also added dependency of this coordSys prim to the bound target xform.
Removed Populate() from the UsdImagingStageSceneIndex. "Population" is now done automatically when the stage is set.
Fixed use-after-free bug in basis-curves helper function in hdSt.
Implemented support for the remaining refined drawing modes for basisCurves and meshes using HW tessellation with HgiMetal.
Renamed HdBinding to HdStBinding and moved to hdSt since this is used only by Storm.
Improved performance when freeing argument buffers after command buffer submission with HgiMetal. (PR: #2046)
Fixed crash when loading non-filterable textures with HgiMetal. (PR: #2048)
Changed the name of an internal debug class to avoid problems with Cocoa View classes. (PR: #2256)
Added HorizontallyNormalizedFilmbackCoordinates to renderPass.glslfx for material shaders needing to draw in image space.
Fixed picking of semi-transparent fragments by using a small alpha threshold value when discarding fragments.
Fixed a bug to avoid an infinite loop and issue a coding error when passing relative paths to HdSystemSchema::Compose.
Improved the performance of cards stand-ins in Storm. Edges of cutouts may show slightly increased artifacts as a result.
Fixed a bug in scene index emulation where removing an Rprim or Bprim from HdRenderIndex would remove all of that prim's children as well.
Moved UsdImaging_SceneIndexPrimView, an iterator to traverse all ancestors of a prim in a scene index, to HdSceneIndexPrimView.
HdInstanceSchema now includes the index of a native instance within the instancer instancing the prototype.
Added special case for sprim dirty bits translation for emulated mesh lights.
Added fix that ensures that HdSceneIndexAdapterSceneDelegate uses unique names with HdSceneIndexNameRegistry.
Added optional argument needsPrefixing to HdRenderIndex::InsertSceneIndex to indicate whether input scene index needs prefixing.
Added missing .tiff extension to hioOiio (PR: #2307)
Fixed double transforms in Hydra when using the new scene index API.
Added support for transporting render settings scene description in Hydra.
Added scene globals schema to encapsulate global state necessary to orchestrate a render.
Fixed computed view transform for the shadow matrix.
Made HdxTask::_hgi member private. Subclasses should use the protected _GetHgi() method instead.
Exported HdxTask::Sync to allow for custom render task creation and use. (PR: #2178)
Added HdCoordSysSchema which provides "name" member field and its builder interface.
Fixed a memory leak during framebuffer resize. (PR: #2342)
The RenderMan Hydra delegate now transfers attributes from material to geometry that binds the material. This is useful in cases such as displacement bounds and subsurface trace groups.
Removed a deprecated staging flag, HD_PRMAN_ENABLE_LIGHT_MATERIAL_NETWORKS
Fixed hdPrman slowdown when rendering many AOVs.
Fixed an issue where normal maps going through the RtxHioImage plug-in were being linearized. HdPrman now provides a "sourceColorSpace=raw" argument when the rtxplugin is being invoked for a mtlx image node that has type "ND_image_vector[2,3,4]"; the type comes about based on the mtlx image node's "signature" param. This also affects the MaterialX Chess Set scene.
Fixed an issue with MaterialX texcoord nodes referring to texture coordinates as "uv" instead of "st". Now, as the MaterialX network is translated we swap out texcoord nodes for geompropvalue nodes that look up "st".
Fixed a crash in RtxHioImage plugin used by hdPrman, as a result of passing nullptr for RixContext. Explicit nullptr guards are now added for the same.
Added improvements for rendering with Solaris's husk, including support for RenderMan display drivers and command line arguments.
Reworked and reorganized the testHdPrman test harness to use the RenderSettings Prim by default, instead of the UsdRenderSpec.
Updated riley geometry instances for rprims owned by hydra instancers regardless of local dirty bit state to ensure that instance primvars are updated.
Made hdPrman invalidation more granular for improved performance
HdPrman now uses Renderman nested instancing for nested point instancer hierarchies, which can provide significant performance and memory footprint improvements in scenes with heavy nested instancing. This feature is enabled by default, and can be disabled by setting HD_PRMAN_DISABLE_NESTED_INSTANCING=1. Users should be aware that picking and selection of individual instances may not work as expected when this feature is enabled and HdPrman is in use. Users who need to use instance picking with HdPrman should disable this feature.
Fixed python exceptions in usdview when selecting relationship targets whose path is either a property path or is a path to any object that doesn't exist on the stage.
Added a display menu item to toggle display of dome light background texture images when dome lights are enabled. (PR: #2123)
Fixed an error from the incorrect use of hasattr() when using openColorIO color management. (Issue: #2254)
Fixed usdview to hide viewport frame when --norender is set
Updated usdview Hydra Scene Browser to be compatible with more PySide versions and macOS
Fixed MaterialX materials with the name 'material' (Issue: #2076)
Fixed issue for MaterialX namespaces when adding MaterialX nodes to a node graph.
Fixed MaterialX split string array parsing to split only on "," delimiter and
not "," and spaces.
(Issue: #2268,
PR: #2278)
Updated usdMtlx parser to parse various MaterialX metadata into sdr properties. (Issue: #1874, PR: #1895)
Improved Python help() documentation for USD APIs when Python docstrings are built, as described in Build section above.
Various documentation updates, including:
Updated Windows build instructions example in README.md to build into non-protected directory. (PR: #1994)
Updated "Environment Setup" section of Tutorials page to specify adding USD_INSTALL_ROOT/lib to the PATH environment variable on Windows when running the tutorials. (PR: #2198)
Added general guidance on FAQ page on where to install USD DLLs and plugins on Windows. (PR: #1788)
Updated UsdUVTexture and UsdPreview docs to clarify usages of scale, bias and sourceColorSpace when using an 8bit Normal Map, in order to satisfy tangent space requirement of the normals.
Updated USD toolset documentation to include usdfixbrokenpixarschemas.
…to control the behavior of the deprecated find modules will need to use the corresponding arguments for the new modules. (Issue: #2082, PR: #2091)
Version 23.02 is the last release that supports Python 2. Support for Python 2 will be removed in the next release.
The usd-core PyPI package now supports Apple Silicon. (Issue: #1718)
Added support for Python 3.10. (PR: #2007)
Added support for Visual Studio 2022, and removed 2015. The supported versions are now 2017, 2019, and 2022. (PR: #2007)
The minimum supported Boost version is now 1.70. (PR: #2007, #2150)
Updated CMake build system to use modern FindPython modules and import targets. This fixes an issue on macOS where the correct Python framework directory would not be added as an RPATH. Clients that were specifying CMake arguments like PYTHON_EXECUTABLE or PYTHON_LIBRARY or PYTHON_INCLUDE_DIR to control the behavior of the deprecated find modules will need to use the corresponding arguments for the new modules. (Issue: #2082, PR: #2091)
Fixed macOS code signing issue when using the Xcode CMake generator that would cause builds to be unusable on Apple Silicon.
Fixed threading issue causing assertions in Windows debug builds. (PR: #2127)
Fixed compiler warning when using GfVec3f::GetLength with -Wconversion enabled. (PR: #2060)
Removed dependency on boost::program_options. (PR: #2114)
Fixed issue where C++ executables like sdfdump would fail to run on Linux and macOS in certain configurations due to a missing RPATH entry for the USD core libraries.
Numerous performance and memory optimizations.
Updated UsdSkel plugin bounds computation to include nested skeletons in the case where there are no bindings.
UsdGeomModelAPI::ComputeExtentsHint now uses UsdGeomBoundable::ComputeExtentFromPlugins for boundable models.
Added malloc tag reporting to sdfdump when run with the TF_MALLOC_TAG environment variable set.
Fixed bug where handles to .usdc files were not being closed after the associated SdfLayer object was destroyed. (Issue: #1766)
SdfLayer is now case-insensitive for characters in 'A'-'Z' when looking up layer file format from file extension. (Issue: #1833)
Improved TfMallocTag performance for parallel applications. For example, time to open one test asset on a UsdStage with tagging enabled decreased from ~40 seconds to ~5 seconds.
Updated doc discouraging use of ArchGetFileName. (Issue: #1704)
UsdPrim::ComputeExpandedPrimIndex and UsdPrimCompositionQuery can be used with prototype prims.
Fixed a composition error involving specializes and subroot references.
Initial Schema Versioning support. Note that not all of the schema versioning work is complete. In particular, it is not yet possible to generate versioned API schemas through usdGenSchema even though the UsdPrim API for querying and authoring them has been added. Full schema versioning support is expected in a following release.
Added missing displayGroup and displayName hints for UsdLux properties that have display hints specified in the PRMan args files. Fixed documentation for CylinderLight's inputs:length property.
Added "opaque" and "group" attribute types. Opaque attributes have no value but can be connected to other attributes or targeted by relationships. Group attributes are opaque attributes that are intended to provide a connectable/targetable object that represents a property namespace.
Minor clean ups to the UsdCollectionMembershipQuery.
Support for URL-encoded characters in session layer name. (PR: #2022)
Fixed varying primvar size computation in UsdGeomBasisCurves for pinned cubic curves.
Made displayName metadata available on UsdPrim as well as UsdProperty,
and updated usdview to optionally use displayName in the Prim Browser,
when present. Display Names can use the entire UTF-8 glyph set.
(PR: #2055)
Added UsdMediaAssetPreviewsAPI schema, an applied API for data in the
assetInfo["previews"] dictionary on prims. Initially, this allows robust
encoding of (asset) default and per-prim thumbnail previews, but may be
expanded to other forms of preview in the future.
Modified sdffilter, sdfdump, and various tests to use CLI11 instead of boost::program_options. (PR: #2107, #2109, #2110, #2111, #2113)
Ported usdtree and usdcat utilities from Python to C++. (PR: #2108, #2090)
Fixed various intermittent unit test failures. (PR: #2068)
Fixed bug where adding an empty sublayer could cause errors and incorrect results with value clips. (Issue: #2014)
Added Python bindings for ArAssetInfo. (Issue: #2065)
Fixed crashes related to the dynamic library loader on macOS 12. (Issue: #2102)
Fixed issue where incorrect baseline image specifications for unit tests would be silently ignored. (PR: #1856)
Fixed UsdUtilsModifyAssetPaths to remove duplicate entries if the modification callback returns such entries, and to remove the original entry if the callback returns an empty asset path. (PR: #1282)
Fixed crash when creating VtArray from Python buffer with over 2^31 elements. (PR: #2064)
Updated usdchecker to accept references to textures with the ".jpeg" extension. (PR: #1919)
Changed UsdShadeCoordSysAPI from a non-applied API schema to multiple-apply API schema. The previous non-applied APIs have been deprecated and will issue a warning when called. Setting the environment variable USD_SHADE_COORD_SYS_IS_MULTI_APPLY to "False" will disable these warnings; setting it to "True" will disable the deprecated functions.
Fixed bug where using C++ keywords as token names in schema definitions would cause usdGenSchema to produce uncompilable C++ code. (PR: #2020)
Removed deprecated UsdRiTextureAPI schema.
HdRendererPlugin::IsSupported and HdRendererPluginRegistry::GetDefaultPluginId now take an argument indicating if the GPU is enabled to assist in determining what to return to the caller.
Fixed bug where render settings were not being returned by HdSceneIndexAdapterSceneDelegate.
Added missing null pointer checks to HdxColorizeSelectionTask. (Issue: #1991)
Draw mode: cards will now use UsdPreviewSurface materials, expanding renderer compatibility. The draw mode adapter and scene index have accordingly been relocated from UsdImagingGL to UsdImaging.
Fixed a bug that prevented changes to ModelAPI properties from triggering invalidation.
Fixed a bug in Storm that prevented certain changes to array-valued primvars from being properly applied.
Added a warning when a plugin that duplicates built-in prim-handling functionality is detected. Note that overriding built-in prim-type handlers via plugin is not officially supported. The prior behavior remains unchanged (last-to-load wins).
Updated HdCoordSys::GetName() to return coodSys name in accordance with recently updated CoordSysAPI to be multi-applied API.
Updated the precedence order of primvars:ri:attributes:*, which will now
take precedence over ri:attributes:*.
Added support for OCIO 2.1.1 with native Metal support. (PR: #1936)
Updated UsdImagingGL tests to always render to AOVs and to remove most direct use of OpenGL. This improves consistency of test runs across different system configurations and renderer implementations. Also, fixed minor discrepancies in test command arguments and baseline compare metrics to more closely match internal test suite runs.
Enabled multisample for Storm AOV image outputs for improved consistency with usdview viewport display.
Populated the "system" container with asset resolution data.
Fixed UsdImagingBuildHdMaterialNetworkFromTerminal to support multiple input connections.
Improved point instancing support of usdImaging when using scene indices. This is implemented through a filtering scene index UsdImagingPiPrototypePropagatingSceneIndex.
Added native instancing support of usdImaging when using scene indices. This is implemented through a filtering scene index UsdImagingNiPrototypePropagatingSceneIndex (doing the instance aggregation) and some changes to the UsdImagingStageSceneIndex itself adding USD native instances and prototypes with identifying data sources.
Reworked usage of a flattened dependency cache to speed up dependency gathering.
Added methods for UsdImaging 2.0 prim adapters to represent descendants in terms of population and invalidation. Implemented property change invalidation for material prims via this mechanism. This change also manages time-varying invalidation by making sure that properties of USD shader prims know the hydra material path and locator.
Moved UsdImaging 2.0 primvar handling from gprim to prim and implemented primvar invalidation.
Added vector types to dataSourceAttribute.
Removed HdContainerDataSource::Has, as it is redundant with GetNames and Get, and doesn't in practice fulfill its original intent of being cheaper to query than Get.
Added initial UsdImaging 2 adapter support for GenerativeProcedural.
UsdImagingDataSourcePrimvars updated to lazily handle "primvars:" relationships as VtArray<SdfPath> data sources.
Added UsdImagingStageSceneIndex-specific HdDataSourceLocator convention for triggering resync in response to property invalidation.
Added UsdPrim const& argument to UsdImaging 2.0 adapter methods to enable property-driven population and invalidation.
Added UsdSkel Dual Quaternion skinning as both a GPU and CPU computation.
Fixed a crash in UsdSkelBlendShapeQuery::ComputeFlattenedSubShapeWeights, and added asserts around array bounds violations.
Fixed bug where changing an attribute connection would not update primvars in Hydra. (Issue: #2013, PR: #2017)
Added CoordSysAPIAdapter to add coordsys support for multi-apply UsdShadeCoordSysAPI instances in UsdImagingStageSceneIndex.
Fixed UsdImagingStageSceneIndex functionality for subprims with non-empty names, which were previously tripping an assert in SdfPath.
Added missing instancer handling for volumes.
Renamed Hgi function MemoryBarrier to InsertMemoryBarrier to avoid potential build issues on Windows. (PR: #2124)
Fixed bug in which dome light prefilter textures were not created for 1x1 input textures.
Updated texture system to create samplers for udim and ptex layout textures.
Changed handling of invalid or missing textures. When there is no valid texture, bind a 1x1x1 black fallback texture. The value of TEXTURENAME_valid is now always checked before returning the texture value in the shader. Ptex and udim textures now also bind a boolean TEXTURENAME_valid value.
Converted mesh.glslfx geometry shader snippets to resource layouts, and introduced HgiShaderFunctionGeometryDesc.
Added bindIndex member to HgiShaderFunctionTextureDesc.
Introduced shader variables "hd_VertexID", "hd_InstanceID", and "hd_BaseInstance" to use instead of gl_VertexID, gl_InstanceID, and gl_BaseInstance, respectively, with appropriate values determine by the Hgi backend.
Various fixes and improvements to HgiVulkan backend, including:
Added fix to convert double mesh primvars to floats if doubles are not supported by the Hgi backend. (Issue: #2070)
ImageShaderRenderPass now sets a viewport prior to executing a draw.
Improved rendering of assets with multiple geom subsets by increasing the size of the drawingCoord topology offset and instancePrimvar offset from 8-bits to 16-bits. (Issue: #1749, PR: #2089)
Fixed some potential memory leaks related to HgiMetal resources. (PR: #2085)
Added StartFrame/EndFrame to HdxPickTask to improve Hgi resource cleanup. (PR: #2053)
Implemented GPU view frustum culling using compute shaders for HdSt_PipelineDrawBatch (Metal and Vulkan) including minor cleanups to HdStCommandBuffer and HdSt_RenderPass. As part of this, added a way to access drawingCoord values from compute shaders. Also, added support for concurrent dispatch of compute command encoders for Metal. (PR: #2053)
Updated render pass shader sources to include support for post tessellation control shader stages.
Updated basis curves and mesh tessellation shader source to use resource layouts for tessellation shaders. (PR: #2027)
Fixed some cases of undefined Osd symbols for Storm when using Osd shader source.
Added fix for Dome Light not changing. (PR: #2125)
Fixed basis curves index computation and validation. This changes the imaging behavior in that non-periodic curves with a vertex count of 2 or 3 are now rendered instead of being ignored.
Fixed cullstyle resolution for a corner case.
Added a "system" schema. The "system" container is meant to be inherited by prims within a scene index. Scene indices that prefix and re-root have been updated to preserve the "system" container.
Fixed small bug for how visibility/purpose is handled.
HdInstancedBySchema: added prototype root which is populated by UsdImagingPiPrototypePropagatingSceneIndex and consumed by UsdImagingNiPrototypePropagatingSceneIndex to support interleaved point and native instancing.
Removed HdInstanceBySceneIndex in favor of new instancing implementation in UsdImagingPiPrototypePropagatingSceneIndex and UsdImagingNiPrototypePropagatingSceneIndex.
HdMergingSceneIndex and HdFlatteningSceneIndex: correct initialization when adding an already populated scene index or constructing from an already populated scene index.
Made data flattened by the HdFlatteningSceneIndex configurable.
Added initial support of picking for scene indices through HdPrimOriginSchema and HdxPrimOriginInfo.
Added initial selection support for scene indices through HdSelectionsSchema and HdSelectionSchema which are picked up by the HdxSelectionTracker.
Introduced HdTypedVectorSchema and HdSchemaBasedVectorSchema.
Added HdRenderSettings, a Hydra Bprim backing scene description render settings.
Added scene index that presents computed primvars as authored ones.
Fixed bug in HdExtComputationUtils::_GenerateDependencyMap() with multiple
input computations.
(PR: #2058)
Implemented optional scene index for transfer of primvars from material to bound prims.
Added protection against GIL deadlocks within generativeProceduralResolvingSceneIndex.
Added support for translation callbacks for custom sprim types within HdDirtyBitsTranslator.
For mesh lights, nack-end scene index emulation now checks GetLightParamValue(id, isLight) when considering whether a prim whose type is not a light should be treated as one.
Fixed compile and logic bugs in HdRetainedTypedMultisampledDataSource<T>::GetTypedValue.
Added source example for a C++ Qt version of Hydra Scene Browser. This is the recommended reference and starting point for integration into applications (aside from usdview).
Added fix to treat invisible faces in the mesh topology as holes.
Added scene index plugin to present computed primvars as authored ones.
Added hdPrman support for UsdLuxMeshLightAPI, via the meshLightResolvingSceneIndexPlugin.
Added support for Renderman Display Filters.
Removed deprecated MatfiltFilterChain, and associated env var HD_PRMAN_USE_SCENE_INDEX_FOR_MATFILT.
Fixed usdview exception when right-clicking for a context menu in the Composition tab.
Included Hydra Scene Browser within usdview.
Added a function to usdviewApi to get the current renderer.
Changed the PluginMenu addItem() function to return the added action, so further customizations (such as making it checkable) can be applied to it.
Fixed viewport calculation issue with full masking on both Mac and Vulkan MaterialX Plugin.
Updated MaterialX Imaging Tests, adding more comparisons between the Native and MaterialX implementations of UsdPreviewSurface materials. Note that these PreviewSurface test cases are commented out by default.
Updated USD changelog to indicate fixed but not-documented-as-such CVE-2020-13495. (Issue: #1966)
Updated Azure Pipelines configurations used for CI and PyPI The active configurations are now:
Updated PXR_USE_PYTHON_3 to ON to enable USD Python 3 binding by default. We still anticipate dropping support for Python 2 after the first release in 2023.
Fixed export of targets for usd monolithic builds (usd_ms). (PR: #2026)
Updated USD build to optionally use Imath library by using Imath's cmake config package. USD build falls back to using OpenEXR if Imath is not FOUND. Also updated USD's cmake config, pxrConfig.cmake.in to set Imath_DIR accordingly to set the import targets which were used for the USD build. (PR: #1829)
Disable Ptex support by default when using CMake directly.
Updated OpenSubdiv version to 3.5.0 to take advantage of build configuration improvements. The USD source remains compatible with OpenSubdiv 3.4.x.
Updated dependencies for JPEG, OpenImageIO, and Alembic for macOS to improve compatibility with cross architecture and universal builds.
Updated build_usd.py for macOS with additional options to support specifying a build architecture target and enabling code signing: -build-target {native,x86_64,arm64,universal} -codesign
Fixed issue where using pxrConfig.cmake from a USD build with MaterialX support enabled would cause linker errors. (Issue: #1955)
Updated gathering of geom subset prims to not use UsdPrimDefaultPredicate and instead use a custom predicate that checks if the prim has a defining specifier, rather than is defined, allowing for correct gathering of geom subsets that are children of Prototype prims.
Updated ndr parser plugin instantiation to provide a stable ordering for plugin loading.
Added ability to UsdAttributeQuery to make queries about an attribute's value that only consider opinions "up to" or "stronger than" a certain edit target or composition arc (via the new UsdResolveTarget object). (Issue: #1483)
Fixed a bug with calling UsdAttribute::GetResolveInfo at default time where it could erroneously resolve to specs with time samples.
Updated UsdGeomImageable::GetPurposeVisibilityAttr and ComputeEffectiveVisibility to check that UsdGeomVisibilityAPI is applied before querying any purpose visibility attributes.
Updated TF_ERROR macros now return void instead of bool like the other diagnostic macros.
Updated some of the errors that are reported during prim index composition to be more informative.
Added GetTargetLayer and GetTargetPrimPath convenience functions to UsdPrimCompositionQueryArc.
Updated UsdPrimCompositionQueryArcs to be validly queried if even after the UsdPrimCompositionQuery that returned them is destroyed.
Added UsdGeomBBoxCache::ComputeWorldBoundWithOverrides.
Fixed a bug and updated docs for GfFrustum::ComputeNarrowedFrustum.
Updated UsdShadeMaterialBindingAPI::UnbindCollectionBinding documentation to explicitly state to use instance name of the targeted collection for unbinding if bindingName was not provided.
Documented the use of special use of "@@@" for asset paths containing "@". (Issue: #1832)
Created a usdzUtils python module, which provides methods like CreateUsdzPackage, ExtractUsdzPackage and UsdzAssetIterator.
Added a script "usdfixbrokenpixarschemas" to update any usda, usdc or usdz asset to respect updated pixar provides schemas. This utility currently fixes MaterialBindingAPI, SkelBindingAPI and authoring of upAxis metadata.
Updated UsdUtilsComplianceChecker to check if MaterialBindingAPI is applied on the prim which provides a material:binding. Also updated usdchecker unit tests for the same.
Fixed UsdShadeMaterialBindingAPI to return an empty Material if binding relationship is invalid. (PR: #2024)
Updated computing bound material core logic to check if MaterialBindingAPI is applied on a prim providing material:binding. Introduced USD_SHADE_MATERIAL_BINDING_API_CHECK environment variable for backward compatibility and default to "warnOnMissingAPI". In a later release the default will be updated to "strict", which will ignore prims which do not have MaterialBindingAPI applied for bound material computation.
Updated UsdShadeMaterialBinding::ComputeBoundMaterial logic such that bound material remains consistent irrespective of the load / active state of the target prim on the material:binding relationship.
Added UsdShadeMaterialBinding::GetResolvedTargetPathFromBindingRel to help clients get the path of the target of the winning binding from bound material computation.
Added support for merging of collision groups in UsdPhysics. (PR: #1947)
Updated UsdPhysics documentation to clarify mesh subdivision options which could affect physics colliders. (PR: #1948)
Added color4 type to Sdr to allow differentiating between color4 and vector4 input types at Sdr level. (PR: #1894)
Added "GetAll" method for multi-apply schemas in codegenTemplates. (PR: #1773, Issue: #1772)
Added "renderingColorSpace" to UsdRenderSetting schema. This describes a renderer's working (linear) colorSpace where all renderer/shader math is expected to happen. Renderer is expected to use its own default when renderingColorSpace is not provided.
Improved performance in clip manifest generation when no manifest is supplied.
Improved performance in pcp prim indexing by using a heap rather than a sorted array to handle tasks in priority order. This improves worst case runtime for task processing from O(n^2 log(n)) to O(n log(n)).
Changed pcp prim index graph representation, simultaneously expanding size limitations and reducing memory usage by 5-15% in production sets. Also improving composition time performance, saving 35% on one production example.
Improved pcp composition thread scaling by letting indexing and index publishing proceed concurrently.
Added node-based API to SdfPathTable so callers can pre-reserve memory locations and insert them into tables later.
Added VtVisitValue() utility for operating on held-types of VtValues.
Updated pyInterpreter and pyModule to Account for Python GIL explicit initialization deprecation from Python 3.7 to 3.9 (PR: #1909)
Updated usddiff logic in an attempt to handle files with bogus extensions by trying the usd file format, and copying the files to temporary extensioned files if necessary.
Updated crateFile core to sanity check spec requirements in prefer-safety-over-speed mode. (Issue: #1763)
Fixed a bug where TfType::_FindByTypeid() could call FindByName() while still holding the registry lock, resulting in an attempt to recursively require the lock, and a hang.
Updated USD changelog to indicate fixed but not-documented-as-such CVE-2020-13495. (Issue: #1966)
Fixed usdc files to use read-only mappings in mmap mode to avoid commit charge on most of the file content, only changing page protections to read/write when detaching outstanding zero-copy-array data.
Fixed Python 3.11 incompatibility. (PR: #1928)
Added "detached layer" feature to Sdf. This allows clients to specify layers to load "detached" from their serialized backing store, isolating them from external changes. In particular, loading .usdc layers as "detached" can help avoid crashes or other issues if another process attempts to overwrite those .usdc layers. (Issue: #1852)
Added SdfLayer::DetachedLayerRules and related API for specifying detached layers.
Added API to ArAsset, SdfFileFormat and SdfAbstractData to support detached layers.
Small optimizations to SdfLayer change processing to avoid unnecessary iteration and copies.
Fixed bug where SdfLayer would not strip file format arguments from identifiers before passing them to ArResolver::GetModificationTimestamp when calling SdfLayer::Save.
Fixed bug where calling SdfLayer::CreateNew with a file format target would not include the target in the new layer's identifier, causing subsequent lookups via SdfLayer::Find or FindOrOpen with the same arguments to fail.
Fixed bug causing errors when deleting a variant set containing only empty variants.
Fixed bug where reloading a text-based .usd layer that was overwritten with a crate-based layer would copy the contents of the crate layer into memory instead of streaming data on-demand.
Fixed crashes when reading .usda files containing certain strings with escaped quotes. .usda layers with incorrectly escaped/quoted strings (like "fo\"o") will no longer load. (Issue: #1630)
Fixed UsdUtilsComputeAllDependencies to remove incorrect coding error if a local reference or payload is encountered. (Issue: #1902)
Fixed variety of missing symbol exports and header includes. (Issue: #1942, #1969, PR: #1950)
Fixed a speculative issue with light invalidation sometimes using dirty bits from the wrong enum. (Issue: #1719)
Fixes an issue where material binding paths on geometry subsets were not correctly prefixed, leading to missing materials in certain circumstances. (Issue: #1687)
Updated conversion of UsdImagingGLRenderParams to HdxRenderTaskParams to default to 0.1 for alphaThreshold no matter the transparency mode.
Added missing initialization of OpenVDB before creating a stream in Hio OpenVDB Utils, preventing crash due to uncaught OpenVDB exception.
Implemented GPU Indirect Command Buffer (ICB) encoding of draw commands for Storm on Metal. (PR: #1945)
Fixed GPU Skinning computations to not execute GL error checking for Storm on Metal. (PR: #1909)
Fixed CPU Frustum culling for Storm on Metal. (PR: #1978)
Fixed highlighting of selected mesh edges when mesh edges are not otherwise being displayed.
Extended Hgi interface for buffer and texture bindings to specify which bindings are writable. Non-writable bindings are declared const in shader gen for correctness and potentially improved performance. (PR: #2042)
Storm draw buffer entries are now aligned to 32 bytes on Metal for improved performance on newer drivers and correctness on older drivers (PR: #1980)
Implemented a workaround for fragment shader barycentrics and primitive id on older Intel GPU drivers for Storm on Metal. (PR: #1980)
Refactoring and small performance improvements for the Hydra Scene Index API.
Fixes an issue with redundant shader compilation requests as a result of rearranged HdBuffer elements.
Updated HdxTaskController to allow for DomeLight textures to use textures other than the shipped default dome light texture. (Issue: #1708)
Updated HdSceneIndexAdapterSceneDelegate::GetCameraParamValue to access data sources at nested data source locators. E.g. GetCameraParamValue(cameraId, TfToken("lensDistortion:k1")) accesses the data source at HdDataSourceLocator(TfToken("camera"), TfToken("lensDistortion"), TfToken("k1")).
Added geomUtil, a library housing mesh generators for common implicit primitives.
Fixed a bug in the computation of the number of vertex and varying primvars for indexed and periodic cubic basis curves.
Added support for "pinned" basis curves in Hydra, via a scene index plugin render delegates can use to convert "pinned" to "unpinned" curves.
Documented that Hydra only supports 100 tiles for UDIM (Issue: #1846)
Fixed performance issue in HdNoticeBatchingSceneIndex::_PrimsDirtied and _PrimsRemoved which was previously fixed only for _PrimsAdded.
UpdatedHdRenderIndex to track depth of calls to SceneIndexEmulationNoticeBatchBegin/End to allow for nested batching.
Unified behavior of procedural resolving scene index's GetChildPrimPaths to match PrimsAdded's forwarding of existing child prims.
Implemented first pass of materialBinding support within HdFlatteningSceneIndex.
Added support for prefixing of path array data sources in HdPrefixingSceneIndex.
Updated HdMergingSceneIndex to allow inputs to sparsely provide either type or data sources and confirms primType value in forwarded _PrimsAdded notices matches the GetPrim behavior.
Added support for delivering multiple renderContext nodeIdentifier values within HdMaterialNodeSchema.
Added fallback for HdSceneIndexAdapterSceneDelegate::GetLightParamValue to check against the light terminal node within the "material" data source for better compatibility with legacy render delegates.
Fixed a spurious dirty bit getting set on lights on visibility changes, which could theoretically lead to over-invalidation. (Issue: #1719)
Fixed rendering issue in colorize selection task in which original contents of render target (the rendered scene) were not properly loaded when rendering and blending the selection color on top.
Deleted UsdImagingGLLegacyEngine, i.e. usdview's "HydraDisabled" renderer. This class was a simple GL3-based USD renderer that was kept as a fallback for hydra, as Hydra Storm GL requires GL 4.5. However, it was missing many foundational USD features (like instancing) and it's main use (on OSX) has been deprecated by the Storm Metal port. This change doesn't affect any of the existing usdview Hydra backends. If Hydra can't find any supported backends (e.g. a variant of Storm, Embree, Prman), usdview will now display an empty viewport.
Added an API for UsdImagingDelegate adapters to request a callback to UpdateForTime. Adapters now invoke this API on relevant invalidation, but UsdImagingDelegate doesn't automatically call UpdateForTime on every invalidation. This can be a major performance benefit in some scenes. Custom adapters need to be updated to work correctly; however, you can revert to the old behavior by setting the env var USDIMAGING_LEGACY_UPDATE_FOR_TIME=1.
Added a domeLightCameraVisibility render setting that allows turning off the dome light texture rendering while still using the dome light texture for lighting computations. This is respected by both Storm and Prman. (Issue: #1769)
Added partial support for point instancer to the scene index implementation.
Added UsdImagingDataSourceSchemaBased container data source to reduce boilerplate code when writing usd prim adapters that mostly just pass through Usd attribute values.
Fixed a case where UsdImaging would unnecessarily dirty prims from multiple threads. This was breaking the _PrimsDirtied threading contract.
Updated LightDataSource to exclude light/lightLink|shadowLink identifiers for trivial collections which include everything within UsdStageSceneIndex.
Added light/isLight bool and light/materialSyncMode data sources for identifying presence and behavior of LightAPI on non-light types (i.e. mesh light) within UsdStageSceneIndex.
Implemented Hydra 2.0 interfaces on UsdImagingLightAdapter to return UsdImagingDataSourcePrim so that boundable contributions are present.
Introduced UsdImagingLightAPIAdapter for UsdImagingStageSceneIndex.
Updated UsdImagingDataSourceMaterial to answer for unauthored light param attributes (like intensity) to match expectations of legacy hdStorm render delegate.
Updated disk, distant, dome, plugin, rect and sphere light adapters to implement Hydra 2.0 interfaces for defining prim type. This is combined with the LightAPI schema adapter's contributions.
Updated UsdImagingGLEngine::Render to release GIL at the top of to avoid deadlocks caused by imaging population code, potentially running plug-ins which indirectly interact with python from multiple threads.
Fixed an issue where material binding paths on geometry subsets were not correctly prefixed, leading to missing materials in certain circumstances. Consumers of UsdImagingDelegate::GetMeshTopology() can now expect any geometry subsets present on the topology to express full index paths for their id and materialId properties.
Fixed rendering of excluded geometries upon modification of stage in a session layer. (PR: #1949)
Improved performance for UsdImagingDelegate::SetTime by pre-caching path dependencies in parallel. (PR: #1815, Issue: #1813)
Improved performance of UsdImagingInstanceAdapter::_Populate by using SdfPathSet instead of SdfPathVector for instance paths. (PR: #1823)
Updated usdImaging tests to detect differences between visibly distinct reference images by tweaking idiff failure values. (PR: #1866)
Added new TF_DEBUG code HDX_DEBUG_DUMP_SHADOW_TEXTURES allowing users to save the shadow textures produced by HdxShadowTask to image files.
Improved handling of oversized buffers in HdStInterleavedMemoryManager and HdBufferArrayRegistry.
Added overload of HdInstanceRegistry::GarbageCollect that takes in a callback function to be called when the resource instance is removed, now used to properly destroy Hgi resources in HdStResourceRegistry.
Various fixes and improvements to HgiVulkan support.
Updated HdxSimpleLightTask to warn about the need to truncate the number of lights when changes are made to the light set, instead of every frame.
Updated minimum RenderMan version required by hdPrman to 24.1 to avoid an issue where left-handed geometry may be shaded incorrectly.
Updated HdPrman plugin to respect "vector" role for instance primvars of type VtArray<GfVec3> and pass an array of floats to rman.
Added support for terminal SdrPropertyType in hdPrman.
Updated MatFiltSceneIndexPlugin to allow scene index filters that interact with materials to have access to terminal names in a renderer agnostic way by executing HdSiTerminalsResolvingSceneIndex earlier in the scene index stack.
Added support for lens distortion. HdPrmanCamera::Sync reads the lens distortion parameters, setting up the projection shader with the correct fov and screen window. In order to render lens distortion, we aim to switch to the PxrCamera projection shader in a later release (requiring RenderMan 25).
Updated the default of HD_PRMAN_USE_SCENE_INDEX_FOR_MATFILT to true for better inspectability.
Added support to respect the doubleSided parameter on USD meshes with UsdPreviewSurface materials applied to them. Also added support for cullStyle, enabling, e.g., GL-like backface culling.
Updated UsdPreviewSurface OSL shader to improve appearance of transparency when opacityThreshold is zero.
Added gridGroup support to hdPrman for VDB grids. For now all grids provided in the VDB are included.
Updated usdview's Bounding box dashed lines drawing to use Hgi interface instead of glLineStipple.
Moved the "View" menu in usdview into the Viewer panel as a reorganized set of new menus.
Added the ability to save a screengrab from the Viewer of current frame in usdview.
Added the guides column in the usdview Prim View to choose which cameras to show oracles on.
Fixed (on posix platforms only) an issue where the usdview state file could be corrupted when closing multiple instances of usdview simultaneously.
Added ability to specify detached layers in usdview using the --detachLayers, --detachLayersInclude, and --detachLayersExclude arguments. (Issue: #1852)
Update usdview's layer stack view to be more informative of the effect of cumulative layer offsets on each sublayer, including the auto-scaling that occurs between layers with differing time codes per second. (Issue: #1782)
Fixed a bug in usdview where the property view would break when displaying an array valued attribute whose resolved value is an unsupported or non-array type.
Added support for locally defined custom nodes, and custom nodes that use textures/texture coordinates (Issue: #1636)
Added support for MaterialX materials that use nodes outside nodegraphs and nodegraph input/interface connections (Issue: #1636)
Added support for Custom Material Nodes that use textures. (Issue: #1786)
Added MaterialX tests to UsdImagingGL.
Added initial material caching for simple MaterialX Materials in Storm.
Updated HdStMaterialXShaderGen to use default geomprop/primvar value. (Issue: #1880)
Support for PySide is deprecated and will be removed in a future release.
Support for Python 2 is sunsetted as of this release. We anticipate dropping support after the first release in 2023, tentatively scheduled for January.
Updated dependencies to align with VFX Reference Platform CY2020, with some exceptions to work around various build issues on different platforms.
Added support for native builds on Apple Silicon. It is possible to cross compile for Intel systems by building within an x86_64 architecture environment, for example, by creating an x86_64 shell via "arch -x86_64 zsh" and then running the build within that shell. (PR: #1875)
Added support for PySide6. By default, the build will search first for PySide6 then PySide2 then PySide. Users may specify the following CMake variables to influence this search behavior:
Support for PySide is deprecated and will be removed in a future release.
Changes and fixes for build_usd.py:
Fixed build errors on Windows with OpenVDB v7.0.0+.
Monolithic builds no longer add the "usd_" prefix to library names by default.
Cleanup for miscellaneous build errors and compiler warnings. (Issue: #806, PR: #1696)
Unit tests will now extract files that fail baseline comparisons to ${CMAKE_BINARY_DIR}/Testing/Failed-Diffs/${TEST_NAME} (PR: #1839)
Automatically disable glibc malloc hooks support on glibc versions >= 2.34.
Removed support for Ar 1.0, which was deprecated in v21.11.
Added ability to disable Ndr plugins via the PXR_NDR_DISABLE_PLUGINS env var.
Added NdrRegistry::AppendDiscoveryResult to allow clients to explicitly set additional discovery results that would not be found through the plugin system. (PR: #1810)
Reverted collaborative layer loading feature while investigating intermittent crashes.
Fixed bug where authoring opinions at certain sites for prims using inherits and/or specializes arcs would not trigger change processing and notifications.
Fixed bug with the composition of reference/payload list ops across sublayers with different time codes per second or layer offsets. (Issue: #1778)
Added the apiSchemaOverride feature to usdGenSchema that allows a schema definition to explicitly define sparse overrides to properties it expects to be included from a built-in API schema. See: https://graphics.pixar.com/usd/release/api/_usd__page__generating_schemas.html#Usd_APISchemaPropertyOverride
Updated usdgenschemafromsdr to read Sdr node paths with environment variables.
Fixed UsdUtilsUpdateSchemaFromSdrNode:
Fixed issue where UsdInherits::GetAllDirectInherits might not have returned all direct inherit paths and might have returned paths that were not actually inherits.
Fixed issue with removing references in sublayers with differing time codes per second. (Issue: #1778)
UsdAttribute::GetTimeSamplesInInterval will no longer open value clips outside the requested interval when interpolateMissingClipValues is disabled.
Improved memory allocation for value clips by using a shared pointer to the array of time mapping in Usd_Clips. (Issue: #1774, PR: #1777)
Improved performance of interpolating attribute time samples. (PR: #1883)
Improved UsdStage loading/repopulation performance and thread scalability.
Improved .usdc write performance for integer arrays.
Fixed UsdGeomImageable::ComputeProxyPrim to implement non-pruning semantics when computing the purpose value for the targeted prim.
Removed Primvar API on UsdGeomImageable which was deprecated in v19.03. All remaining uses of this API have been updated to use UsdGeomPrimvarsAPI.
Cleaned UsdShadeConnectableAPIBehavior code to not throw warnings when querying for incompatible prim type, which has no plugin registered.
Updated OSL and Args parsers to use Sdr's nested page delimiter of ":", instead of ".". Updated documentation for the same in UsdShadeInput and SdrShaderProperty.
Updated usdRiPxr schemas to reflect updates to RenderMan args files and to include other schema classes:
Added UsdRenderPass and UsdRenderDenoisePass schemas to UsdRender.
Added UsdProc schema domain for representing procedural data and an initial concrete UsdProcGenerativeProcedural schema.
Added UsdHydraGenerativeProceduralAPI to the now-repurposed usdHydra schema domain.
Miscellaneous small fixes. (PR: #1775, PR: #1842, PR: #1845, PR: #1850)
Fixed crash in GlfSimpleShadowArray::GetShadowMapTexture, avoiding discrepancy between the lighting context/light data and the simple shadow array data.
Added HdChangeTracker::GetInstanceIndicesChangeCount to detect changes to instance indexing. (PR: #1754)
Fixed bug in HdRenderIndex::RemoveSceneIndex where a client removes a scene index that was added with a non-trivial scene path prefix.
Fixed double-creation of Bprims when using scene index emulation. (PR: #1737)
Various fixes to primvar sampling in scene index emulation and the usdImaging stage scene index.
Fixed inconsistencies for clipping planes to work with scene index emulation.
HdPrimvarSchema role tokens: changing capitalization for consistency with how these are used elsewhere in Hydra.
GLSLFX shaders can now consume int- and int-array valued primvars.
Fixed codegen of HdGetScalar_* for GLSL bindings to primvars. (Issue: #1862, PR: #1863)
Exposed secondary selection highlight color as a settable value on HdxTaskController. (PR: #1771)
Added HdGp library for Hydra procedurals which have read access to the input scene and can generate (or update) prims beneath a given prim. HdGpGenerativeProcedural subclasses may be provided by plugins and are resolved/evaluated/updated via an HdGpGenerativeProceduralResolvingSceneIndex.
HdGp procedurals are disabled by default but may be enabled by setting the HDGP_INCLUDE_DEFAULT_RESOLVER environment variable to 1.
Added support for "includeDisconnectedNodes" within material network data source to trigger legacy behavior for renderers which rely on Hydra 1.0 behavior.
Fixed HdMergingSceneIndex::GetChildPrimPaths to incorporate ancestor paths of inputs with specified root paths.
Added basic edit processing support for the USD scene index.
Added basic support for SampleFilters in RenderSettings in UsdImaging scene delegate and HdPrman render delegate.
Added hdSi library to support implicit shapes in UsdImagingStageSceneIndex.
Added usdProcImaging library for imaging UsdProcGenerativeProcedural prims.
Added initial support for API schema adapters in UsdImagingStageSceneIndex, along with an adapter for UsdShadeMaterialBindingAPI (direct bindings only).
Implemented Hydra 2.0 methods on UsdImagingMaterialAdapter.
Added API for accessing AOV render buffers to UsdImagingGLEngine.
Removed remaining direct uses of OpenGL from UsdImagingGLEngine.
Deprecated UsdImaging_GetUdimTiles.
Fixed "model:drawMode" evaluation to apply to components without "GeomModelAPI" applied.
Updated UsdImagingCameraAdapter::TrackVariability to consider all attributes on the camera prim. (PR: #1797)
Improved performance when handling large number of native instances. (Issue: #1740, PR: #1822, PR: #1932)
Fixed light collection change-tracking. (PR: #1653, PR: #1930)
Fixed bug where coordSys Sprims were not dirtied on transform changes on the target prim.
Updated UsdImagingPointInstancerAdapter to register velocity and acceleration primvars. (PR: #1849)
Fixed bug where changes to materials bound to geom subsets were not processed. (Issue: #1837, PR: #1838)
Fixed UsdImagingPrimAdapter computation of dirty bits for primvars. (PR: #1807)
Fixed thresholds for testUsdImagingGLPurpose to be more accurate. (PR: #1827)
Added a render setting for the maximum number of lights to support in Storm. This should be used with caution, as Storm hasn't been optimized for large numbers of lights.
Added API export tags to HdStTextureIdentifier. (Issue: #1758)
Improved HgiGraphicsCmds interface for binding vertex buffers. (PR: #1876)
Stopped adding fallback/unconnected material param names to the list of a HdSt_MaterialNetworkShader's primvars.
Changes and fixes for hgiVulkan backend:
Fix crash when mesh prim has authored points and faceVertexCounts but not faceVertexIndices.
Transform two channel (grayscale + alpha) PNG images into RGBA format. (Issue: #1796)
Storm volumes: making material final to avoid the volume shader being replaced by the default material network that does not work for volumes.
Updated HdSt_DrawBatch::Prepare() to take a HgiGraphicsCmds instance to allow combined submission of GPU work.
Improved organization of internal methods in HdSt_PipelineDrawBatch and HgiMetalGraphicsCommands and HgiGraphicsPipeline. (PR: #1859)
Fixed inconsistent naming of HgiDeviceCapabilitiesBitsBasePrimitiveOffset. (PR: #1858)
Removed redundant shader resource layout declarations from Storm shader source.
Added various implicit shapes support by using native Riley prims and the implicit surface scene index.
Added support for SdfAssetPath-valued shader parameters.
Added support for RenderSettings and Murk Sample Filter prims, with the ability to have multiple Sample Filters. These prims are supported with and without scene index emulation.
Added support for MaterialX displacements and improved editing of displacements.
Various improvements to MaterialX support.
Improved diagnostic messages for materials with empty/wrongly typed material resources.
Updated to look for material properties in the "primvars:ri:attributes" namespace. "ri:attributes:" is still supported for backwards compatibility.
Fixed support for sharpness per crease edge with subdivs.
Fixed "depth" AOV to return [0,1] instead of [-1,1], for consistency with Storm and the expectations of Hdx compositing code.
Added --mute command line option for muting layers prior to initial stage load.
Improved muted layer support in the Layer Stack tab (previously muted layers were not listed) and added context menu support to interactively mute/unmute layers from the UI.
Fixed Interpreter window to respect OS hover-focus/click-focus settings.
Fixed Python 3 warning in usdview about not properly closing a file. (PR: #1861)
Fixed an error in usdview when framing with the root prim selected. (Issue: #1619, PR: #1843)
Nothing published for this version
Deprecated support for Visual Studio 2015. Visual Studio 2017 will be the minimum supported version as of the next release.
This release enables Storm for macOS using Metal. Refer to notes under Storm for details. Many thanks to our collaborators at Apple for all of their work to make this happen!
Deprecated support for Visual Studio 2015. Visual Studio 2017 will be the minimum supported version as of the next release.
Builds with Python enabled or disabled are now ABI-compatible. (PR: #1729)
Made 10.15.7 as the minimum macOS requirement (with compatible Xcode version being 12.4) we test against. Minimum CMake requirement for macOS has also been updated to 3.18.6.
On Apple Silicon systems, it is required to use an x86_64 architecture environment (e.g. "arch -x86_64 zsh") to build and execute binaries.
Updated build_usd.py to use OpenSubdiv 3.4.4.
Added support for sdrUsdDefinitionType in UsdShadeShaderDef.
Removed SDR_DEFAULT_VALUE_AS_SDF_DEFAULT_VALUE environment variable, SdrShaderProperty::GetDefaultValue and SdrShaderProperty::GetDefaultValueAsSdfType will provide default values appropriately.
Added disableMotionBlur in favor of deprecated instantaneousShutter in UsdRender, to be more compliant of standard behavior of using only one sample at the current frame when motion blur is disabled.
Deprecated motion:velocityScale in UsdGeomMotionAPI in favor of more general motion:blurScale. Also deprecated usage of velocityScale in UsdGeomPointInstancer and UsdGeomPointBased. Refer to motion:blurScale documentation for more details.
Added GetMaterialPurposes() API to UsdShadeMaterialBindingAPI.
Improved performance and correctness of TfDictionaryLess.
Fixed performance regression due to thrashing of Sdf object identities.
Numerous performance improvements in UsdPrim's property names computation.
Changes for usdGenSchema:
Added error handling for corrupt .usdc files where VtValues claimed to contain themselves.
Fixed inconsistent behavior of UsdShadeConnectableAPI::HasConnectableAPI between Python and C++.
Fixed UsdShadeConnectableAPIBehavior registry that caused it to miss builtin API schemas when querying for connectability. This caused incorrect result when querying for HasConnectableAPI on just the prim types.
Numerous fixes and improvements for Python 3 compatibility.
Instance proxies can now be used to author opinions to non-local edit targets.
Added NdrFsHelperDiscoverFiles function to NdrDiscoveryPlugin which returns a list of raw and resolved URIs to the files found by walking the directory. This is similar to NdrFsHelperDiscoverNodes which returns a list of full discovery results.
Updated UsdUtilsUpdateSchemaWithSdrNode to process nodes which do not exhibit UsdShade connectability. This is used to incorporate rman concepts like Options, etc, not connectable sdr nodes in the usdRiPxr schemas.
Updated NdrFsHelperDiscoverNodes API to include a parameter to optionally parse a shader identifier into its name, family and version.
Added an optional parameter to specify the tolerance for UsdSkelNormalizeWeights. (PR: #1667)
Deprecated UsdLuxListAPI in favor of new UsdLuxLightListAPI.
Added plugin mechanism for registering variantSets for UsdUtilsGetRegisteredVariantSets.
Fixed a critical bug with UsdPhysics Mass computation. (PR: #1799)
Restored fix for symlink reading on Windows. (PR: #1804)
Added UsdGeomBoundable::ComputeExtent API to sit alongside UsdGeomBoundable::ComputeExtentFromPlugins. This returns the extent on a boundable if one is explicitly authored, else it computes using the registered ComputeExtentFunction. Its recommended to use this API over extent getters, which might incorrectly return schema fallback extent.
Added nonlinearSampleCount attribute to UsdGeomMotionAPI.
Make UsdMtlx plugin a library, moved to /usd/usdMtlx
Added support for multi-output MaterialX nodes. (Issue: #1581
Added support for MaterialX namespaces declared in stdLibs (PR: #1631)
Added support for using texcoord MaterialX node type for texture coordinates. (Issue: #1636
Updated documentation to mention current known limitation of the MaterialX plugin. (Issue: #1636
Added a UsdBakeMaterialX script to bake MaterialX materials, via MaterialX::TextureBaker. Note this does not work on windows yet, and skips volume materials.
Improved discovery of MaterialX vector3 inputs (PR: #1790)
Added HdNoticeBatchingSceneIndex and methods to begin and end batching of notices for legacy scene delegates.
Adjusted HdRenderIndex::RemoveSprim() to not remove hierarchical descendents when scene index emulation is enabled.
Added HdSceneDelegate::GetScenePrimPaths(), a vectorized version of GetScenePrimPath(). Note that with this change, GetScenePrimPath() is deprecated; use GetScenePrimPaths() instead. (PR: #1744)
Added tests for usdImagingGL and testusdview. These are enabled on Linux but are currently disabled on macOS and Windows, while we investigate these further. (PR: #1743)
Support shapes with blendshapes but no skinning when using CPU computations (PR: #1757)
Fixed UDIM path resolving when no "1001" file exists (PR: #1787)
Made usdImaging stricter about only reading "model:drawMode" attributes from prims with UsdGeomModelAPI applied.
Added early support to UsdImagingEngine (and consequently usdview) for loading USD stages into hydra with scene indices instead of scene delegates. This is gated on an environment variable and is disabled by default.
Added USD scene index support for cameras and volumes.
Enabled Storm for macOS using Metal. This is the first release with this feature enabled and there are currently the following limitations:
Introduced several aspects to take advantage of full performance on Metal:
Significant additions to the Hgi API and to the HgiMetal and HgiGL implementations. The Hgi API is still under development, recent additions include:
Added support for building against OCIO v2.0 with backup compatibility for OCIO v1.x.
Fixed domeLight computations and skyDome viewport rendering for Metal including fixing the alpha value written by the skyDome (Issue: #1656)
Fixed management of framebuffer objects in HgiGL for applications with multiple GL contexts.
Added support for "widget" styled drawing in Storm.
Added a display style flag "materialIsFinal" to let geometry (such as widgets) opt out of material overrides.
Added ImageToWorldMatrix to renderPassState and GetPositionInWorldSpace() GLSL helper for fragment shaders.
Updated Storm runtime shader code generation significantly to support declaration of shader resources (textures, buffers, etc.) using Hgi.
Shader code generation continues to support native GLSL declaration of shader resources, the new method of using Hgi for this purpose is guarded by the env setting HDST_ENABLE_HGI_RESOURCE_GENERATION which is enabled by default only for Metal.
Enabled declaration of resources (textures, buffers, interstage interface blocks, etc.) as GLSLFX layouts for Storm's internal shader source files.
Use the appropriate GLSL (for OpenGL) or MSL (for Metal) shader mixins from OpenSubdiv.
Updated shader source files and generated shader code to use Hgi abstractions for accessing packed types, buffers, textures, atomic operators,
Updated previewSurface.glslfx and simpleLighting.glslfx to use newly added HdTextureLod_name() (consistent sampler access to specific mipmap levels) and HdGetScalar_name() (single component, scalar value access of a parameter without needing to guard against component swizzle of scalar data types) accessors where necessary for compatibility with GLSL and MSL. Also updated lighting shaders to use HdGet_name() for sampling shadow textures and arrays of shadow textures.
Shader programs compiled directly from Hgi (i.e. not going through Storm codegen) now access textures using HgiGet_name() accessors, HdGet_name() and similar accessors are provided by Storm codegen.
Generated shader source now has organizational comments to indicate which aspect of shader generation provided the following lines of shader source code.
Enabled HdSt_PipelineDrawBatch for Metal, and deleted HdSt_ImmediateDrawBatch. The existing env setting which enabled use of MDI drawing command buffers has been repurposed to just control whether the CPU or GPU iterates over the command buffer when executing drawing.
Fixed HdStTextureUtils::HgiTextureReadback() to support readback into aligned allocated buffers.
Added guards to allow volume primitive shaders to run when double precision values are not supported by the shader runtime.
Improved calculation of the size of OIT buffers in shaders for compatibility with Metal.
Added an error message when a scene is rendered with more than 16 lights. Changed the light selection to grab the first 16 lights, prioritizing dome and simple lights (which tend to be used as camera lights). Filtered out zero-intensity lights before light selection.
Removed use of __lightFilterParentShader as this is obsolete since R22, which was generating unknown or mismatched input parameter errors.
Changed light filter coordinate system name to be the full light filter path as opposed to the leaf name. Since light filters affecting a light are expressed via relationship, only the full path guarantees uniqueness.
Added support for light filter combineMode.
Updated the MaterialNetwork conversion function to return an HdMaterialNetwork2 for a given HdMaterialNetworkMap, instead of using an out param. Doing so avoids potential issues if the caller passes in an existing HdMaterialNetwork2, in which case we would get an inaccurate final material network.
Fixed a hang in StopRender() when blocking = true. Fixed HdPrmanRenderDelegate::IsStopped (and the Stop return value), which were previously erroneously always returning true for offline mode, and always returning false for interactive mode.
Disabled MaterialX scene index plugin when MaterialX support is not enabled.
Added scene index plugins for material filtering functionality.
Improved hdPrman's motion blur support by adding blur scale and velocity and acceleration motion blur implemented through a new scene index. The instantaneousShutter setting has been deprecated in favor of disableMotionBlur.
Fixed a bug where toggling visibility of individual instances would lead to a crash.
Fixed an issue that was not correctly updating riley visibility on changing rprim tags.
Updated hdPrman display driver to correctly normalize render outputs based on accumulation rule and type.
Updated usdRiPxr schemas to reflect updates to renderman args files.
Fixed crash bugs when running usdview on macOS systems where Storm is not enabled. (Issue: #1780)
Deprecated UsdImagingGLLegacyEngine, i.e. "HydraDisabled". This renderer doesn't support most USD features, and will be removed in the next release.
Deprecated UsdImagingGLEngine::_GetDelegate. This API will be removed in the next release.
Added the Hgi-based PipelineDrawBatch, which is expected to deprecate the GL-specific Immediate- and IndirectDrawBatch classes. PipelineDrawBatch is c…
boost::program_options is now required only if PXR_BUILD_USD_TOOLS or PXR_BUILD_TESTS is enabled. (PR: #1649, #1703)
Workaround issues with UTF-8 filenames when extracting boost in build_usd.py. (PR: #1694)
The source .rst files for documentation on https://openusd.org are now part of the repository under the docs/ subdirectory.
Fixed warnings emitted when building with "-Wformat-security" and enabled this flag by default for gcc/clang builds. (Issue: #1675)
Fixed build failures with hioOpenVDB on Windows.
Fixed build failures with precompiled headers disabled on Windows. (PR: #1672)
Fixed error when importing modules from the usd-core PyPI package in Conda environments on Windows. (Issue: #1602, PR: #1642)
Additions to simplify porting client code to Python 3:
Fixed handling of file paths from mounted volumes on Windows. (Issue: #1520, PR: #1746)
Improved accuracy of timing performed by Trace and TfStopwatch.
Changes to Ndr and Sdr:
SDR_DEFAULT_VALUE_AS_SDF_DEFAULT_VALUE
off by default.Fixed bug where certain combinations of specializes and inherit arcs on a prim could lead to errors or incorrect strength ordering.
Fixed regression where SdfSpec::IsInert would mark empty variant and variant set specs as not inert. (Issue: #1652)
Changes for applied API schemas:
Fixed uninitialized fields in UsdZipFile. (Issue: #1579, PR: #1578)
Cache .usdz archive traversal to improve performance for reading archives with many files and references. In one example, a .usdz file that previously took ~3 minutes to load improved to ~16 seconds with this change. (Issue: #1577, PR: #1578)
Numerous changes to improve performance of various operations, including reading .usda and .usdc files and initializing the schema registry.
Fixed bug where UsdUtilsComputeAllDependencies would inadvertently try to edit the given layer.
Fixed UsdUtilsUpdateSchemaWithSdrNode to emit "allowedTokens" for token-valued attributes based on the Sdr node's options.
Various documentation fixes. (Issue: #1370)
Fixed crash in UsdGeomCamera::SetFromCamera when the current edit target specifies a weaker layer than the layer defining xformOpList. (PR: #1661)
Added "guideRadius" attribute to UsdLuxDomeLight.
Removed UsdRenderSettingsAPI.
Changes to connectability in UsdShade:
UsdShadeShaderDef now treats an attribute's "allowedTokens" as options if no other "options" metadata has been specified in "sdrMetadata".
Added support for skinning normals with faceVarying interpolation in UsdSkel. (PR: #1695)
Added UsdPhysicsRigidBodyAPI::ComputeMassProperties for computing the mass properties of the rigid body. (PR: #1677)
Changed UsdVolFieldBase to be an Xformable instead of a Boundable.
Fixed issue with NodeDef discovery. (Issue: #1629, PR: #1641)
Fixed issue with computing a shader name for Sdr from the NodeDef. (PR: #1641)
Allow runtime adjustment of MaterialX search paths. (Issue: #1586, PR: #1628)
Added HdMaterialNetworkInterface to let material processing operators abstract away data representation.
Added API to merge application-provided scene indices with the Hydra emulation scene index.
Added API to HdRenderDelegate to query pause and stop state.
Augmented HdRenderDelegate::Stop to allow requests for blocking or non-blocking stop.
For HdxTaskController users with non-Storm renderers, replaced the fallback sphere light with a distant light.
Changed default dome light texture format from .exr to .hdr. (Issue: #1481)
Added HdSceneIndexPluginRegistry and HdSceneIndexPlugin, to allow for external registration of filtering scene indices to be added for specified renderers.
Improved HdMeshUtil Patch Param documentation. (Issue: #1720)
Cache "renderTag" attribute in Hydra instead of pulling it at every use.
Fixed instancing-related edit processing bugs: when prims are added to or removed from USD prototype roots; or when invalidations propagate from non-instanced prims to instanced prims.
Fixed drawing of "unloaded-prim-as-bounds" when the unloaded prim is an instance.
Improved performance of UsdImagingDelegate::PopulateSelection. (Issue: #1689, PR: #1691)
Added UsdImagingStageSceneIndex, a scene-index native reader of Usd stages. Feature support is very limited as this is under development.
Fixed a bug where disabling scene materials would also disable lights when lights were using material network representation.
Filled out Hgi interface for Storm rendering needs
Refactored Storm to use Hgi for graphics API access
Improved support for MaterialX imaging in Storm:
Fixed typo in HgiVulkan backend. (Issue: #1702)
Extended GLSLFX file format to support resource layout configuration metadata.
Added shader support for binding arrays of UV textures (as distinct from TEXTURE_2D_ARRAY). Switched shadowmap binding to use arrays of textures, and removed bindless shadow texture code.
Added basis curve builtin primvars: screenSpaceWidths (boolean), for rendering UI elements, and minScreenSpaceWidth, for reducing aliasing of thin curves. Note that these haven't been formalized in USD.
Changed meshes with a present but invalid normals primvar to draw with shader-generated normals.
Added support for bool array primvar data.
Added support for widget rendering via the "widget" rendertag and surfaceShader implementation, which uses a draw/blend-on-top configuration.
Sped up execution of empty render passes.
Fixed leakage of vertex attrib binding state in HdxPickTask.
Added shadow support for "distantLight" prim type.
Fixed evaluation of dome lights and dome light parameters.
Added support for depthStencil AOV output.
Added API to request a non-blocking stop of Prman in interactive mode.
Removed fallback domelight when no lights are provided by the scene.
Enabled rendering of in-memory VDB volumes in hdPrman. Previously, hdPrman only supported VDB volumes from disk.
Added support (by scene index plugin) for velocity-based motion blur.
Added a render setting for the Prman backend to use.
Changed the shutter interval used for processing geometry deformation to come from the render camera, rather than render settings.
Changed light prims to pull parameters from light material networks by default, instead of using GetLightParamValue.
Improved support for offline rendering: e.g. writing results directly to file, configuring output via render settings, and rendering synchronously.
Fixed cookie light filters in hdPrman to provide the appropriate coordinate system object.
Updated hdPrman's fallback surface material to better match Storm, by respecting the "displayColor", "displayOpacity", "displayRoughness", and "displayMetallic" primvars.
Improved performance blitting Prman output when running interactively.
Reworked material filtering operations to use the material network interface.
Added usdviewApi functions to toggle viewer mode and set the renderer plugin.
usdview plugins can now extend built-in menus like File or Window.
Increased statistics timer resolution from millisecond to microsecond.
Added light material network support to usdview builtin lights.
Fixed uninitialized values when picking from Python.
Fixed a bug with usdview's composition view when examining prims with specializes arcs.
Added support to set the OCIO display, view, and colorspace. (PR: #1491)
Ar 2.0 is enabled by default as of this release. Ar 1.0 is deprecated and will be removed in a subsequent release. During this transition, Ar 1.0 may…
Ar 2.0 is enabled by default as of this release. Ar 1.0 is deprecated and will
be removed in a subsequent release. During this transition, Ar 1.0 may still be
enabled by setting PXR_USE_AR_2=OFF when running CMake.
Added support for building against debug versions of Python. Users must
specify PXR_USE_DEBUG_PYTHON=ON when running CMake.
(PR: #1478)
Libraries now use @loader_path instead of absolute paths for RPATHs on macOS. (PR: #1478)
Libraries are now prefixed with "libusd_" on Linux and macOS and "usd_" on
Windows to avoid name conflicts with other packages. The previous behavior can
be restored by setting PXR_LIB_PREFIX="lib" on Linux and macOS or
PXR_LIB_PREFIX="" on Windows when running CMake.
(Issue: #1615)
Changes and fixes to build_usd.py:
--debug-python and --build-python-info options to enable builds
against debug versions of Python and to control Python to build against.
(PR: #1478)--use-cpp11-abi option on Linux to control defininition of
_GLIBCXX_USE_CXX11_ABI when building USD and dependencies.
(Issue: #1609)--debug option with --build-variant.Fixed deadlock in NdrRegistry::GetNodesByFamily.
Changes for Ar 2.0:
Deprecated SdfLayer::GetExternalReferences and UpdateExternalReference in favor of GetCompositionAssetDependencies and UpdateCompositionAssetDependency.
SdfLayer no longer treats the inability to retrieve a timestamp for a layer or its external asset dependencies as an error under Ar 2.0. Calls to SdfLayer::Reload will always reload layers with invalid timestamps.
Updated SdfCreateVariantInLayer and SdfCreatePrimInLayer to use "prepend" when creating new variant sets. (Issue: #1552)
Added support for Unicode asset paths on Windows. (Issue: #1443, PR: #1580)
Fixed bug that caused errors when reading large .usda files.
Code invoked from Python that accesses invalid UsdPrim objects in C++ will now emit a Python exception instead of crashing.
Fixed issue where ArResolver::OpenAsset would be called multiple times when opening an ASCII .usd file or a .usdz file. (Issue: #1613)
Fixed bugs in gfGenCode and usdGenSchema where file objects were not closed, leading to ResourceWarnings from Python. (PR: #1557)
Updated usdGenSchema to mark plugInfo as a resource instead of a library when codeless schemas are being generated via skipCodeGen option.
Fixed bugs where changes to a layer's resolved path would not trigger recomposition of prims when needed.
Fixed bug that caused crashes during composition. (PR: #1568)
Fixed bug where UsdNotice::ObjectsChanged notice emitted after call to UsdStage::Reload would contain pointers to destroyed objects. (Issue: #1605
Fixed bug where UsdUtilsComplianceChecker returned a false error due to not
recognizing the UsdTransform2d shader.
(PR: #1625)
Fixed issue where UsdUtilsExtractExternalReferences would mutate the input layer unnecessarily. (Issue: #1573
Added UsdGeomVisibilityAPI. This schema provides attributes to control prim visibility based on the "purpose" attribute from the UsdGeomImageable schema. It will eventually be the place where primary visibility and purpose are also housed and authored.
Added UsdGeomImageable::ComputeEffectiveVisibility for computing purpose visibility.
Removed unused UsdGeomImageable::ComputeVisibility overload that took a parentVisibility parameter.
Fixed broken Python bindings for UsdPhysics on Windows under Python 3.8+.
Fixed missing Python bindings and "kilogramsPerUnit" metadata in UsdPhysics. (PR: #1606)
Deleted many previously deprecated UsdRi schema classes, namely, UsdRiRisBxdf, UsdRiRisIntegrator, UsdRiRisObject, UsdRiRisOslPattern, UsdRiRisPattern, UsdRiRslShader and all UsdRiLight and UsdRiLightFilters which are now part of the usdRiPxr schema domain.
Updated connectedAPIBehavior so that APISchemas can now provide connectableAPIBehavior by explicitly registering a new behavior associated with the APISchemaType or by providing plug metadata to configure the connectability behavior. Note that the latter can be used for codeless schemas.
Fixed a couple of rare bugs associated with UsdShadeConnectableAPIBehavior and UsdGeomComputeExtentFunction, resulting in robust behavior when new plugins are registered.
Updated UsdUtilsUpdateSchemaWithSdrNodes to include new concepts like addition of shaderId attribute to the generated schema classes, provide apiSchemaCanOnlyApplyTo, and provide ability to control UsdShadeConnectableAPIBehavior using metadata on the sdrNodes. Refer to the updated documentation for more details.
Updated usdgenschemafromsdr to be able to provide sdr nodes via explicit asset paths and to parse and add renderContext related information from the json config.
Added support for different Sdr to Sdf type mappings. Introducimg a new "sdrUsdDefinitionType" metadata field for sdrShaderProperty, which is used to distinguish between sdrDefaultValue and equivalent sdfTypeDefaultValue. Note that for backward compatibility SdrShaderProperty::GetDefaultValue currently returns the same value as SdrShaderProperty::GetSdfTypeDefaultValue, this is guarded by an environment variable "SDR_DEFAULT_VALUE_AS_SDF_DEFAULT_VALUE".
Single apply API schemas can now include built-in API schemas and can auto apply to other single apply API schemas. API schemas are now only allowed to inherit directly from UsdAPISchemaBase.
Applied API schemas can no longer inherit from other other applied API schemas, which allows UsdPrim::HasAPI() to be a much faster query. Non-applied schemas may still inherit from other non-applied schemas.
Added UsdLuxLightAPI, which can be applied to geometry to create a light. UsdLuxLight has been deleted. Added the applied API schemas UsdLuxMeshLightAPI and UsdLuxVolumeLightAPI, which include UsdLuxLightAPI as a builtin.
First iteration of the Scene Index and Data Source system is now on by default and compatible with existing scene and render delegates via emulation. No new functionality is yet exposed as this is thus far intended to validate correctness and performance. This can be disabled by setting an HD_ENABLE_SCENE_INDEX_EMULATION environmental variable to "0".
Changed the return type of UsdImagingDelegate::Get() for the point instancer "rotate" attribute from GfVec4f (quaternion layout of <real, i, j, k>) to GfQuath (quaternion layout of <i, j, k, real>). This aligns with the result of SamplePrimvar(). In hdStorm, the quaternion data is now transported to the GPU as half-float data, instead of float. All custom scene delegates supplying the instancer "rotate" primvar via the Get() API must be updated for the new quaternion layout.
Added half-float vec2 and vec4 primvar support to hdStorm.
Added support to UsdImaging for new LightAPI features.
Added sprim-sprim dependency map to HdChangeTracker so it can track the dependencies between lights and their light filters.
UsdImagingMeshAdapter only keeps track of geom subsets that are using the materialBind family.
UsdImaging internally manages which prims to call UpdateForTime on, instead of relying on hydra to maintain that list.
Extended HdxTaskController to support built-in lights for backends like HdPrman.
When filtering primvars by material in UsdImagingGprimAdapter, added filtering using materials bound to geom subsets.
Improved dirty list management and performance including moving to a single dirty list managed by the render index.
Deleted PrimvarDescCache::Extract and GarbageCollect, and UsdImagingDelegate::PostSyncCleanup.
Deleted HdRenderPass::Prepare.
Improved UsdImagingDelegate performance when editing many instances of the same prototype. (PR: #1608)
Updated stb_image code to latest versions, enable UTF-8 filename support for Windows. (PR: #1580)
Fixed sync valid repr tokens just once for Rprims.
Fixed memory leak in HioOpenVDB.
Fixed HioOpenVDB build on windows. (PR: #1574)
Fixed errors when trying to read udims from .usdz files. (Issue: #1558)
Fixed HdResampleRawTimeSamples() parameter bug and add test coverage. (Issue: #1549)
Fixed crash when processing multiple native instancer edits in the same frame. (Issue: #1551)
Fixed GprimAdapter::_AddRprim material resolution order to be consistent with other functions. (Issue: #1626)
Fixed to not normalize point instancer quaternions. (Issue: #1505)
Added support for rendering meshes with geom subsets.
Added support for rendering DomeLights as a skydome. (Issue: #1385)
Added support to rendering BasisCurves that don't completely cover the supplied points or other primvars.
Added support for "constant shading" of basis curves wherein they're unaffected by lighting.
Added support for screen-space flat normals.
Improved 1st order approximations of the basic area lights (SphereLight, DiskLight, RectLight, DistantLight, and CylinderLight).
Moved barycentric coord generation to codeGen.
Consolidated edge param calculations.
Implemented IsValid() for HdStUdimTextureObject.
Sync visibility once per-Rprim sync rather than per draw item.
Even if there are zero lights, prims should still use the lighting integrator, specifically the one specified by their shader key.
Moved bindless address fetch out of HdStBufferResource.
Changing the type storing the volume shader glslfx source code and material params in an HdStMaterial from HdStShaderCode to struct HdStMaterial::VolumeMaterialData.
When a scene delegate provides a network without volume output for a material used by a volume, use the volume fallback shader.
Removed IsFragmentOnPoint() and IsFragmentOnEdge() shader methods.
Renamed HdStSurfaceShader to HdSt_MaterialNetworkShader.
Fixed domelights to respond to visibility changes.
Fixed crash when UDIM textures are missing.
Fixed to support all sizes of domelight textures.
Fixed GS smooth fvar interp for displacement
Fixed GL version test to include minor version. (Issues: #957 and #1001
Various improvements to Hgi:
Added support for UsdPreviewSurface's displacement in HdPrman.
Added support for UsdUvTexture's "sourceColorSpace" input and fixed normal mapping.
Added support for additional clip planes.
Added flipped flag to RtxHioImage plugin.
Adjusted HdPrman's fallback volume shader to match Storm's.
Introduced codeless usdRiPxr schema domain for RenderMan lights and lightfilters. These are generated using usdgenschemfromsdr from rman light and lightfilter args files. Note that these schemas are compatible with RenderMan 24.2.
Removed use of "allowPresenceWithGlass" from UsdPreviewSurfaceParameters node.
RtxHioImage can convert various texture formats to type float, so they can be passed to Renderman. (Issue: #1313)
Fixed HdPrman's fallback maxSamples to match the RenderMan fallback (64).
Ar 2.0 is feature-complete as of this release. We anticipate addressing feedback and bug reports, deprecating Ar 1.0 and enabling Ar 2.0 by default fo…
Ar 2.0 is feature-complete as of this release. We anticipate addressing feedback and bug reports, deprecating Ar 1.0 and enabling Ar 2.0 by default for the next release, then removing Ar 1.0 entirely in the release after that. Developers should begin migrating to Ar 2.0 now.
RenderMan 24 is now required for the RenderMan plugin as of this release. Support for RenderMan 23 was deprecated in 21.05 and has now been removed.
Fixed bug with symbol demangling on Windows which broke some TfType alias registrations. (PR: #1510)
Replaced some uses of deprecated tbb::atomic with std::atomic. (PR: #1486)
Numerous changes to the Work library to adhere to TBB thread limits set by host applications. (Issue: #1368):
Many changes for Ar 2.0:
Added UTF-8 support for reading and writing asset paths. (Issue: #1443)
UTF-8 sequences are now written into .usda layers without hex encoding.
Embedded NUL bytes are disallowed in string values in .usda layers.
Dynamic file formats can now be set up to use anonymous layer identifiers to avoid the need for dummy resolvable assets. (Issue: #1356)
Made virtual SdfFileFormat functions protected instead of private. (PR: #1519)
Fixed bug where a layer would be dropped from the Sdf layer registry if its identifier were changed to an existing layer's via SdfLayer::SetIdentifier.
Fixed SdfLayer::SetIdentifier to use same restrictions as SdfLayer::CreateNew.
Fixed bug where entire layer would be parsed when reading layer metadata only from .usda layers via SdfLayer::OpenAsAnonymous if no such metadata existed.
Fixed bug with vector usage during calls to SdfLayer::TransferContent and other methods that caused debug asserts on Windows. (Issue: #1501)
Fixed output of PcpPrimIndex::PrintStatistics on Windows. (PR: #1480)
Added support for "codeless" USD schemas that do not have any C++ or Python code. Changes to these schemas' definitions do not require any code to be recompiled; instead, the generatedSchema.usda just needs to be regenerated via usdGenSchema and reinstalled.
Added usdgenschemafromsdr utility to generate schemas from Sdr nodes.
Added ability to specify allowed prim types for API schemas in the customData dictionary for the schema in schema.usda.
Added UsdPrim::CanApplyAPI and CanApply to all API schema classes to check if an API schema can be applied to a prim based on the restrictions above.
Removed deprecated instancing "master" API from UsdStage and UsdPrim.
Removed support for deprecated "UsdSchemaType" terminology in schemas.
Fixed UsdStage::ResolveIdentifierToEditTarget to be consistent with asset path computations during composition.
Fixed bug where UsdResolveInfo / UsdAttributeQuery would be invalidated by an insignificant layer stack change. (Issue: #1500)
Improved change processing performance in UsdStage. In an internal test that authored many attributes, runtime decreased by ~50% (from ~50s to ~25s).
A UsdConnectableAPIBehavior can now be set to ignore shader encapsulation rules by overriding UsdConnectableAPIBehavior::RequiresEncapsulation.
API schemas can now provide connectability behavior, which can override behavior based on prim type.
Deprecated UsdShadeMaterial::ComputeSurfaceSource, ComputeVolumeSource, and ComputeDisplacementSource overloads taking a single token for renderContext.
Renamed SdfTypeIndicator to NdrSdfTypeIndicator.
Added initial version of UsdPhysics domain and schemas. For more details, see the proposal. (PR: #1424)
Added support for correct refinement of varying and face-varying primvars.
Added support for compute program preprocessor defines.
Added size validation for uniform primvars of basis curves.
Improved performance of volume ray marching shader.
Improved wireframe on surface display for adaptive tessellation.
Improved wireframe on surface display for uniform refinement.
Improved edge picking performance.
Improved performance and appearance of patch edge drawing.
Improved GPU memory usage by using a non-aggregated allocation for GPU stencil table buffers.
Moved mesh edge handling out of the geometry shader.
Changed default material tag in HdxTaskController to enable alpha-to-coverage.
Changed behavior, when a dome light texture is invalid, issue a coding error and print the file path for debugging.
Changed behavior, updated selection on tracker during Prepare instead of Sync.
Use the new texture system to bind the texture in the render pass shader.
Removed redundant ptexId field from patchParam.
Removed HdStExtCompGpuComputationBufferSource.
Removed remaining GS edge id shader code.
Removed HdStMixinShader since its usage was very limited.
Fixed multiple issues related to OSD drawing.
Fixed Ptex layout texture sampler type.
Fixed TCS/TES processing of primvar and drawingCoord.
Fixed incorrect handling of left-handed meshes. (Issue: #1075)
Fixed resolution of symlinked UDIM textures. (Issue: #1329)
Fixed area light approximation when transforms are animated. (Issue: #1524)
Various improvements to Hgi:
USD_ABC_NUM_OGAWA_STREAMS env var.Removed deprecated UsdConnectableAPI::IsShader() and IsNodeGraph() APIs.
shaderOutputOnly flag on the GetValueProducingAttributes function, this
allows us to get only the type of connections we want and avoid the cost of
the extra checks.bxdf types inputs to the Sdr terminal type.Deprecated functions using the "schema type" terminology in favor of "schema kind".
Added build and packaging scripts for PyPI packages. Thanks to Nvidia for their work on this project!
Updated documentation build to fix several issues and no longer require Python. (Issue: #718)
GLEW is no longer required for building imaging components.
Various fixes and changes to build_usd.py:
Fixed various linking issues with OpenEXR. (PR: #1398)
Allow setting malloc hook functions if they were previously set to malloc/etc.
Fixed handling of symbolic links and mount points on Windows. (PR: #1378)
Fixed incorrect handling of non-existent variables in TfEnvSetting in Python.
Updated GfRect2i API to use function and argument names that are agnostic to the direction of the Y axis.
Updated ilmbase half embedded in Gf to OpenEXR v2.5.3. (Issue: #1354)
Added VtArray::AsConst, cfront, and cback methods to help avoid inadvertent copy-on-writes and thread-safety issues.
Fixes for variety of issues with VtArray conversions in Python, including conversion from Python sequences if all elements are convertible and a bug with inadvertent copy-on-writes. (Issue: #1138)
Initial implementation of Ar 2.0. This includes new features like support for URI resolvers and many changes to the ArResolver interface. For more details see https://graphics.pixar.com/usd/docs/668045551.html.
Work on Ar 2.0 is not yet complete and will continue through the next few
releases. Ar 2.0 is disabled by default but can be enabled for preview and
initial testing by specifying PXR_USE_AR_2=ON when running CMake.
Moved SdfFindOrOpenRelativeToLayer to SdfLayer::FindOrOpenRelativeToLayer.
Fixed SdfLayer::FindRelativeToLayer to use the same anchoring logic as SdfLayer::FindOrOpenRelativeToLayer.
Fixed string encoding issue in .usda file writer. (Issue: #1331)
Improved behavior when hitting hard-coded composition graph limits in Pcp.
Fixed incorrect native instancing behavior with sub-root references.
Added support for auto-apply API schemas. This allows single-apply API schemas to be automatically applied to prims using one of a list of associated concrete schema types instead of requiring the user to manually apply the API schema.
Renamed UsdSchemaType to UsdSchemaKind to disambiguate between the schema type (e.g. UsdGeomSphere) and kind (e.g. non-applied, single-apply, etc).
Deprecated functions using the "schema type" terminology in favor of "schema kind".
Added UsdVariantSet::BlockVariantSelection. (Issue: #1319, PR: #1340)
Removed deprecated UsdAttribute::BlockConnections.
Removed deprecated UsdRelationship::BlockTargets.
Removed deprecated UsdCollectionAPI::ApplyCollection.
Added "container" concept to UsdShadeConnectableAPI.
Added support for connecting multiple sources to UsdShadeConnectableAPI.
Deprecated API for connecting to single sources in favor of the more general multiple-source API on UsdShadeConnectableAPI.
Deprecated UsdConnectableAPI::IsShader and IsNodeGraph in favor of
IsContainer API. Warnings are emitted on first use unless the environment
setting USD_SHADE_EMIT_CONNECTABLE_API_DEPRECATION_WARNING is set to 0.
Updated various clients to apply the UsdShadeMaterialBindingAPI schema before binding materials.
Fixed Python binding for UsdShade.CoordSysAPI.HasLocalBindings. (PR: #1360)
Fixed Python binding for UsdSkel.SkinningQuery.ComputeExtentsPadding. (Issue: #1375)
Added UsdLuxPluginLight and UsdLuxPluginLightFilter schemas that allow for defining a light or light filter via an SdrShaderNode.
UsdLuxLight and UsdLuxLightFilter schemas now publish an associated SdrShaderNode based on their built-in properties.
Input attributes for UsdLuxLight and UsdLuxLightFilter schemas are now connectable and have been renamed to include the "inputs:" prefix.
Deprecated UsdLuxLightPortal schema in favor of new UsdLuxPortalLight schema.
UsdStage and UsdPrim API using "master" terminology like UsdPrim::GetMaster and UsdStage::GetMasters have been deprecated and will be removed in a fut…
Updated CMakeLists.txt to conform to recommended practice. (Issue: #1241)
The build system now sets Boost_NO_BOOST_CMAKE=ON by default to
work around issues with boost's cmake files.
(Issue: #1255)
Various fixes and changes to build_usd.py:
Fixed incorrect underlying container type for TfHashMultiMap. (PR: #1281)
Fixed invalid conversions of Gf containers like GfVec3f in Python. Note this issue is still present in Python 3. (Issue: #1290)
Fixed various tests to accommodate PXR_OVERRIDE_PLUGINPATH_NAME.
(PR: #1275)
Added GetExternalAssetDependencies to SdfLayer and SdfFileFormat to allow file format plugins to declare additional dependencies that determine when a layer produced from that file format should be reloaded.
Reduced memory usage from SdfPath::GetString and added SdfPath::GetAsString and SdfPath::GetAsToken to avoid populating internal caches. (Issue: #1287)
Various fixes to composition behavior:
Fixed bug in .usda file writer that could cause data corruption. (Issue: #1331)
Fixed performance issue when writing many relationship targets or attribute connections to .usdc files. (Issue: #1345)
Improved performance for certain queries with .usdc files. In one example, this decreased draw times in usdview after transform changes by ~90%. (Issue: #1300)
New .usdc files now default to version 0.8.0. These files cannot be read in
USD releases prior to v19.03. Users can revert to writing older versions by
setting the environment variable USD_WRITE_NEW_USDC_FILES_AS_VERSION to an
older version.
Added safety checks to guard against reading malformed .usdc files. These
checks may negatively impact performance and may be disabled by specifying
PXR_PREFER_SAFETY_OVER_SPEED=OFF when running CMake or
--prefer-speed-over-safety with build_usd.py.
Native instancing "master" prims are now referred to as "prototype" prims. The generated paths of prototype prims has been changed from /_Master<X> to /_Prototype<X>. Clients can use new UsdPrim::IsPrototypePath and UsdPrim::IsPathInPrototype API to determine if a given path is related to a prototype.
UsdStage and UsdPrim API using "master" terminology like UsdPrim::GetMaster and UsdStage::GetMasters have been deprecated and will be removed in a future release.
Added Get/Set/ClearChildrenReorder to UsdPrim for reordering prim children.
UsdProperty::FlattenTo now allows flattening properties across stages.
Deprecated UsdRelationship::BlockTargets and UsdAttribute::BlockConnections. Clients should use SetTargets({}) and SetConnections({}) instead.
Changed UsdRelationship::GetTargets and UsdAttribute::GetConnections to return false when HasAuthored would return false.
Fixed bug where UsdFlattenLayerStack was not applying the asset path
resolution callback to asset paths in clips metadata.
(PR: #1266)
Added UsdNotice::LayerMutingChanged notice. (Issue: #676)
Fixed resource leak with Usd.PrimCompositionQuery in Python. (PR: #1297)
Fixed crashes when printing expired Sdf.Layer and Usd.Stage objects in Python. (PR: #1012)
Removed isPrivateApply functionality from schema generation.
Fixed error in UsdUtilsComputeAllDependencies when an invalid templateAssetPath value is specified. (PR: #1289)
Improved UsdUtilsGetPrimaryUVSetName and UsdUtilsGetPrefName. (PR: #1283)
Fixed bug in UsdUtilsStitchClips that led to inconsistent stitched results.
Added CanContainPropertyName to UsdCollectionAPI, UsdGeomPrimvars, UsdShadeMaterialBindingAPI, and UsdShadeCoordSysAPI for checking if a property name is valid for these schemas.
Deprecated UsdCollectionAPI::ApplyCollection in favor of Apply.
Added fallback values for texture card attributes on UsdGeomModelAPI schema.
Added exposure control to UsdGeomCamera.
Added ease-of-use API to UsdGeom primitives for querying the size of primary geometric properties (e.g. UsdGeomMesh::GetFaceCount).
Fixed plugin extent computations for primitives in UsdGeom to respect given timecode parameter. (PR: #1284)
Fixed crash in UsdGeomSubset::GetUnassignedIndices when a given subset had negative indices. (Issue: #1227)
Added UsdShadeNodeDefAPI schema to represent connectable nodes in a graph. UsdShadeShader has been modified to build off of this schema.
Added UsdShadeConnectableAPIBehavior to allow plugins to customize connectability by prim type.
Added API to retrieve material outputs for standard terminals in all render contexts on UsdShadeMaterial.
Added more instancing support to UsdSkel. (PR: #1258)
Updated UsdVol FieldAsset schemas.
Added new "sourceColorSpace" input to UsdUVTexture with values "raw", "sRGB", and "auto" for better control of with which color space a texture is read.
Added ability to use mip maps authored in a file in the new texture system in Storm.
Added UsdImagingPrimAdapter::ShouldIgnoreNativeInstanceSubtrees() to allow adapters to disable instancing of itself and its descendants.
Added pre-multiply alpha functionality for UDIM textures. Also added sRGB internal formats for UDIMs.
Added checks in HioGlslfxConfig to make sure the default value for an attribute and its type match.
Added HdEngine::ClearTaskContextData() to avoid the task context to hold on to resources that are about to become invalid as the render delegate is destroyed.
Added HDST_DUMP_FAILING_SHADER_SOURCEFILE debug flag to facilitate shader debugging.
Added texture filepath resolution for symlinks.
Added an "outHitNormal" parameter to UsdImagingGLEngine::TestIntersection().
Added ReloadResource in Storm which reloads shader files when they change.
Improvements to Hgi:
Changed GLenum usage in GlfBaseTextureData and others to use new HioFormat.
Changed Storm's frustum culling to be done via a vertex shader without a fragment shader.
Changed HdxShadowTask to specify that it should only render opaque and masked materials.
Changed cards UVs from face-varying to vertex interpolated.
Changed to GL_SAMPLE_ALPHA_TO_ONE when using alpha to coverage, the alpha computed after the framebuffer resolve is more meaningful.
Changed texture cards to require prims with UsdGeomModelAPI schema applied.
Changed type of UsdPrimvarReader.varname input from token to string.
Renamed various HdStGL classes to just HdSt, this is part of the transition of Storm to support multiple rendering APIs.
Enabled bindless shadow maps by default in Storm.
On first material sync in Storm, now we try to batch prims with identical textures together.
HdStDrawTarget's preferred mechanism are AOVs not GlfDrawTarget's. This change allows us to remove all GlfDrawTarget support from HdStDrawTarget.
Since HdStDrawTarget's no longer rely on the resolve task, removing code to communicate the draw target task render passes to the resolve task.
Deprecated HdSceneDelegate::GetTextureResource and will eventually be removed.
An application can now disable the PresentTask in hdx task controller.
When imaging basis curves, treat empty normals array the same as missing normals (i.e. draw as tube and not ribbon at higher complexities).
Store HgiResourceBindings and HgiPipeline objects on HdSt resource registry.
Switched (most of) the GPU frustum culling code from raw GL to Hgi.
With the addition of HgiMetal, all platforms we currently support (for Storm) support color correction and 16F targets.
Use BufferResource for GPU frustum cull result buffer so we can use the regular buffer binding APIs.
Load mipmap data in HgiMetal textures.
Changed signature of HgiDataSizeOfFormat so that it can return blockWidth and blockHeight. Returning block size in bytes for compressed formats.
Describe shader constants (push constants) in pipeline.
Using HgiCompute in smooth normals computation, switched flat normals and quadrangulate to HgiCompute, and converted HdStExtCompGpuComputation to Hgi.
Removed UsdImaging value cache API for all data except primvar descriptors and instance indices.
Removed unused hitMode field from HdxPickTaskContextParams.
Removed UsdImagingGLEngine::InvalidateBuffers().
Removed pre-multiply alpha behavior from volume.glslfx and changed renderPass.glslfx to allow fully transparent but still emissive volumes.
Removed pre-multiply alpha behavior from stb_image and make it optional via SubtextureIdentifier within the HdSt texture system.
Removed support of old-style draw targets using GlfDrawTarget instead of AOVs and render buffers.
Removed UsdUvTexture's rgba output, and updated the cards draw mode to now use "rgb" and "a" outputs rather than rgba.
Removed ReloadAllShaders from HdEngine.
Removed HD_DRAWITEM_DRAWN as it uses raw gl calls that map/unmap a buffer.
Removed HgiPipelineType. We split HgiPipeline into HgiComputePipeline and HgiGraphicsPipeline a little bit ago.
Removed resource bindings handle from pipeline.
Removed smooth normals CPU fallback path. Since previous releases required OpenGL 4.5 for Hgi to work, OpenGL compute must always be available.
Removed HdBinding::TBO.
Removed the implicit barriers from Hgi and let the external client manage synchronization via SubmitCmds.
Fixed potential dead-lock caused by parallel loading plugins.
Fixed lights to be turned off when invisible in UsdImaging.
Fixed issue with UsdImagingGLEngine::TestIntersection such that it now correctly populates. Callers of this function are reminded to provide the "frame" field in UsdImagingGLRenderParams for correct and performant results.
Fixed handling of computed primvar sources for meshes.
Fixed normals after complexity change.
Fixed HgiGL garbage collector leak when Hgi is recreated during process.
Fixed HgiGL to better protect against long labels when using glObjectLabel.
Fixed render settings behaviors so we test whether or not we're really changing anything before incrementing the settings version.
Fixed for cycle detection in material network processing.
Fixed Glf lighting resource binding.
Fixed USD edit dependency tracking for cards prims.
Updated UsdPreviewSurface clearcoat calculations to better match expected inputs for a specular lobe in Storm, and added clearcoat component to indirect lighting calculation in Storm. (Issue: #1307)
Added support for UsdPreviewSurface's opacityThreshold parameter in Storm. (Issue: #990)
Added support for normal mapping for UsdPreviewSurfaces in Storm. (Issue: #701)
Metallic materials should have an F0 equal to their base color in UsdPreviewSurface in Storm. (Issue: #1174)
Removed pre-multiplication behavior from OIT resolve shader. The preview surface (and other shaders) pre-multiply within the fragment shader (unless the "diffuseColor" and "opacity" params are connected to the same texture). (Issue: #1269)
Added support for UDIM texture scale and bias in Storm. (Issue: #1129)
Converted render index to usdImaging cachePath before calling the adapter InvokeComputation method. (Issue: #1333)
Fix draw mode adapter handling of transforms for instanced card prims. (Issue: #1251)
_IsVarying no longer clears dirty bit and now ProcessPropertyChange is filled out to provide more efficiency. (Issue: #1250)
USD_ABC_WRITE_UV_AS_ST_TEXCOORD2FARRAY
environment variable to 0.Your coding agent can read these notes before it upgrades. Set up the MCP server →