---
title: Validating feature support for USD files
framework: usd
role: article
role_heading: Article
path: usd/validating-usd-files
---

# Validating feature support for USD files

Ensure that the renderer that displays your USD assets supports its features.

## Overview

Overview Depending on the device, its operating system, and the app, there are four renderers that might display your 3D assets: RealityKit, Raytracer, Storm, or SceneKit. Each renderer supports a subset of the USD features. Use the tables below to determine which features are available. See Creating USD files for Apple devices for more information on how to determine which engine renders your USD asset. This article identifies feature support for assets imported from USD files. In some cases, the renderers might support features listed below, but do not support importing those features from USD files, and will be marked as unsupported. In the case of Storm, feature support may differ from the open source version. Review general and media features Each rendering engine supports a set of general and media attributes that cover fundamental features, such as which file types the renderer supports, and whether it supports instancing, which is a performance optimization where a renderer can inexpensively display a single asset multiple times in a scene.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  RealityKit supports instancing of mesh and texture data from imported USD files. Accessibility data is supported when using USDKit to visualize content with RealityKit. Variant support is handled differently between the renderers: All renderers support loading the active variant. RalityKit, Storm and Raytracer support changing the variant after loading the asset but this depends on the context. they are presented in In Reality Composer Pro, RealityKit also supports changing the variant after loading the asset. QuickLook allows you to change variants on the default prim after loading a USDZ asset. Review geometry feature support USD supports multiple ways to represent the shape of a 3D object, and has several features that affect the way these objects render. If a renderer doesn’t support a feature that: defines the shape of a 3D object, such as a NURBS patch (a mathematical description of a 3D surface), then the object doesn’t render at all. For example, assets defined using a NURBS patch render on Storm, but not on SceneKit or RealityKit. modifies how an asset renders, the feature is just not used, but the object still displays. For example, an asset that uses subdivision surfaces (a feature that generates additional geometry on the fly) displays on all renderers, but only generates the additional geometry when supported.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  All renderers support using attributes specified in the USD file. Primitive Shapes are basic geometry types such as cubes, cones, and spheres. The plane type is not supported. Alembic supports requires files written using the Ogawa format. The Legacy HDF5 format is not supported. The Preview purpose is used by all renderers. RealityKit supports subdivision on objects using a USD preview surface shader. Objects with custom MaterialX materials use standard polygonal meshes. Tetrahedral meshes (TetMesh) are volumetric meshes used in simulation and engineering data. Spatial and Immersive cameras are Apple camera types only supported in the Preview app on macOS 27 and later. Raytracer supports catmull-rom basis curves only. Review lighting support The USD specification supports many kinds of lights, some that are well-suited to real-time use and others that are primarily intended for use in offline production tasks, such as rendering animations or special effects for movies, because they are computationally expensive. SceneKit and Storm don’t support USD light types that are too computationally expensive for real-time use. Because RealityKit is an AR-first renderer, it doesn’t use any lights included in a USD file, and instead bases its lighting on the scene’s real-world lighting.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  Raytracer supports mesh lights and volume lights, but without proper light sampling. Raytracer has partial support for light shaping. Review physics support USD supports many physics simulation features. Only the RealityKit renderer supports simulation features.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  USDKit does not support loading Physics data into RealityKit. Review shader features The USD specification includes a number of features for use by shaders and even includes a number of pre-defined shaders to ensure consistent rendering across platforms.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  Each renderer may support MaterialX nodes to different degrees. Verify your asset rendering against your renderer of choice. The ShaderGraph documentation covers the support for RealityKit. RealityKit has partial support for some shader features: If no colorSpace or sourceColorSpace value is provided then the embedded image color profile is used when loading color textures. Review skeletons Skeletal animation deforms a model based on a hierarchy of joints, which allows you to animate character assets and complex mechanical objects.  |  |  |  |   |  |  |  |   |  |  |  |   |  |  |  |  Review volumes and particles USD supports volumetric data and particle-based representations. These are used for effects such as smoke, fire, and clouds, as well as for 3D Gaussian Splats captured from real-world scenes.  |  |  |  |   |  |  |  |   |  |  |  |  Storm renders Gaussian Splats as points rather than full volumetric splats.

## See Also

### Essentials

- [OpenUSD schemas for AR](usd/usd-schemas-for-ar.md)
- [Schema definitions for third-party DCCs](usd/schema-definitions-for-third-party-dccs.md)
- [Creating USD files for Apple devices](usd/creating-usd-files-for-apple-devices.md)
- [Placing a prim in the real world](usd/placing-a-prim-in-the-real-world.md)
- [Previewing a Model with AR Quick Look](arkit/previewing-a-model-with-ar-quick-look.md)
