Arnold for Maya 5.6.0

Arnold for Maya (MtoA) 5.6.0 uses Arnold 7.5.0.0 and includes a new Inference imager, performance improvements in Global Light Sampling and in GPU volumes, and other enhancements and bug fixes.

Highlights

  • Performance improvements, including lightweight USD instancing, improved Global Light Sampling, mip-mapped CPU volumes, faster GPU volume rendering, and faster TX file processing.
  • New hair scattering mode; new line and nearest_points shaders; Improved OpenPBR Surface thin film.
  • More flexible light sampling; light blockers with negative density.
  • Bloom aperture mode and color dispersion.
  • GPU enhancements include denoising on Linux, NVIDIA Blackwell support, more efficient instancing, and motion vector shader support.
  • Arnold for Maya now includes live Render Reports in the Arnold Render View.

Performance Enhancements

Lightweight USD instancing

Arnold now renders USD instances through a lightweight instancing system that creates fewer Arnold nodes. Instancing is now more memory efficient and time to first pixel is faster, because the scene is quicker to initialize. For example, in the Intel Jungle Ruins scene, the time to first pixel is 85% faster, and the memory usage is 42% lower. usd#2459

Support for mip-mapped OpenVDB files on CPU

The volume node now accepts OpenVDB files with mip-mapped grids. The different mip-map levels are distinguished by _level_N suffixes, where N is the mip-map level. Arnold then automatically chooses the appropriate mip-map level during rendering, which gives substantial speedups in volumes with a lot of scattering (for example, clouds) in exchange for mostly small differences in look. Volumes with more mip-map levels can have larger differences in look. Users can also specify mipmap_bias on a volume node or on its instance (by declaring user data of the same name), which adjusts the automatic mipmap selection by that amount. (ARNOLD-14453, ARNOLD-15056)

You can generate mip-mapped volumes either with the Arnold API, or with kick. The Arnold API includes a new AiVolumeFileMakeLODs function. kick has a new -makevolumelods command-line flag. Both the API and the kick flag take three arguments: the input file, the output file, and the maximum number of levels to generate. The actual number of levels generated maybe lower than the number requested. (ARNOLD-16921)

wdascloud byc-cloud composition 1 composition 2 sunset clouds
original volume
mip-mapped volume (3 levels)
Speedup 1.5x 1.9x 2.6x 2.1x 1.8x
mip-mapped volume (6 levels)
Speedup 2.0x 2.8x 5.2x 3.2x 2.7x

Improved GPU volume rendering performance

GPU rendering of volumes is up to 3.5x faster. (ARNOLD-8936)

wdascloud byc-cloud composition 1 composition 2 sunset clouds
Speedup 2x 1.12x 3.7x 3.5x 1.31x

Increased Global Light Sampling (GLS) robustness and added support for light spread

GLS is now more robust, and GLS takes the spread parameter of quad and disk lights into account. This typically reduces noise when lights have a narrow spread, or the spread is close to the light edges. We have observed up to 6x faster renders in some test scenes with especially tricky lighting. In the below back-alley scene, which has a more common lighting setup with some lights with a spread, this gives a 1.4x-faster render. (ARNOLD-13684, ARNOLD-16610 and ARNOLD-16551)

1.4x faster than 7.4.3
7.4.3.2 7.4.4.0 (same number of samples as 7.4.3.2)

Improved performance when auto-generating or using existing TX files

Checking for existing TX files and auto-generating missing ones is now significantly faster, reducing time to first pixel when using texture_use_existing_tx or texture_auto_generate_tx. As the charts below show, speedups are most pronounced on many-core machines, particularly on Windows. (ARNOLD-13116)

texture_auto_generate_tx speedup texture_use_existing_tx speedup

Faster handling of interrupted mesh pre-processing

Interrupting mesh pre-processing during IPR (by for instance moving the camera while the scene is loading) no longer causes slowdowns and wasted work. Speedups are expected to increase with core count and mesh size. We have observed savings measured in minutes. (ARNOLD-16978)

Shader Enhancements

Scattering mode for standard hair

A scattering option scattering_mode has been added to the standard hair shader. Use the approximate mode to get the previous behavior. The accurate mode can be noisier, and so takes about 10 to 30% longer to render, but delivers more realistic results, especially in close-ups, by simulating each hair as a cylinder instead of flat surface. The adaptive mode uses the accurate mode for close-up hairs and the approximate for far-away hairs, automatically balancing quality and performance. (ARNOLD-16726, ARNOLD-16852)

approximate accurate approximate (closeup) accurate (closeup)
adaptive

Nearest points shader

The new nearest_points shader samples point clouds from OpenVDB points files, or alternatively, the vertices from points, curves, and polymesh nodes. The shader can output the number of points found, average distance, or an average of a custom user-data attribute from the points. (ARNOLD-15550)</p>

Nearest Points distance → RampRGB (custom) Nearest Points distance → Line → Standard Volume transparent

pointcloud_search and pointcloud_get OSL support

Support has been added for the pointcloud_search and pointcloud_get OSL built-in functions. To specify a points, curves, or polymesh node, use the node name for the point cloud name. To specify an OpenVDB file, use the format filename:grid for the point cloud name. Note: These functions are not yet available on GPU. (ARNOLD-15550)

Line shader

Line → UV Transform (screen space) Line → UV Transform (screen space) Line → Triplanar

The new line shader renders lines in various styles to create geometric patterns or brush-stroke-like textures when combined with noise and textures. You can generate complex hierarchical patterns by connecting line shaders together. We recommend using the line shader with uv_transform. (ARNOLD-14976)

Space option in uv_transform

The uv_transform node now includes a space parameter with texture (default) and screen options. The texture mode applies transforms to standard texture UVs as before, while the screen mode uses screen UV coordinates. (ARNOLD-14976)

Texture (default) Screen

compare_string shader

Arnold now has a compare_string shader that supports equals and not equals comparisons between two strings. (ARNOLD-12978)

Improved OpenPBR Surface thin film

Thin film is now more physically correct, with improved energy conservation. Note that this may produce a significant change in hue in existing assets. Note also that this change has not been applied to the Standard Surface shader, for backwards compatibility. (ARNOLD-15981)

7.4.3 7.4.4

Lighting Enhancements

Increased the maximum number of samples for Global Light Sampling

The maximum number of samples used by the global light sampler is now 1024, for both GPU and CPU. (ARNOLD-16552)

Sampling mode for lights

Lights have a new sampling_mode Enum parameter which controls the type of sampling used for that light. In the default auto mode, the light is either sampled according to the global light samples render options if enabled or the local sample settings. In local mode, the light is sampled according to the light's samples and volume samples parameters, and will be sampled separately from lights that are covered by global light sampling. Local mode helps to make sure that important, hard-to-sample lights receive enough samples. (ARNOLD-13467, ARNOLD-16746)

Light blockers with negative density

Light blockers with ramps and negative density values are now supported. (ARNOLD-16338)

7.4.3 7.4.4

Control whether mesh lights cast shadows

You can now make mesh lights invisible to shadow rays so that they do not cast shadows. This makes mesh lights behave like other light types, which also do not cast shadows. You use the polymesh visibility flag to control mesh light shadows. (ARNOLD-15560, ARNOLD-16803)

Bloom Enhancements

Improved bloom lens effect

The lens effects imager has improved bloom modes that can run in a fraction of a second and produce more interesting bloom effects. The new aperture bloom mode is the default mode, and procedurally mimics the bloom defined by a physical camera and you can control the size with bloom_strength, and the shape and number of spikes with aperture_blades and aperture_curvature. The other new mode, shape_file allows you to load a bloom kernel from disk. (ARNOLD-10882, ARNOLD-16614)

The simple bloom mode and its bloom_radius parameter are now deprecated. Instead, use the new aperture mode with a curvature of 1 to get a round bloom, and bloom_strength instead of bloom_radius to adjust size of bloom.

Bloom color dispersion

The imager_lens_effect node has a new aperture_dispersion parameter, which controls the amount of color dispersion when in bloom_mode aperture. Increasing the dispersion value spreads the warmer colors further apart; decreasing it makes the colors progressively cooler. The default value of 1 gives realistic dispersion. (ARNOLD-16912)

-4 -1 0 1 4

GPU Enhancements

Unify Gaussian filter on GPU

The GPU camera code now uses the same Gaussian filter implementation as the CPU. This provides a closer match and more consistent results between CPU and GPU. (ARNOLD-17059)

Enhanced parameter override support for GPU rendering

Parameter overrides now function consistently across both CPU and GPU, providing significantly improved robustness, especially in complex scene graphs with overrides on instanced procedurals. (ARNOLD-8663)

GPU denoising on Linux and NVIDIA Blackwell support

The OIDN denoiser can now make use of NVIDIA GPUs in Linux. The 2.3.3 OIDN upgrade brings in support for NVIDIA Blackwell GPUs, such as the RTX 50x series cards, and AMD RDNA4 GPUs. (ARNOLD-15745, ARNOLD-16201)

Reduced GPU memory usage for instances

GPU acceleration structures of instances are now compacted in order to save GPU memory. For example, in a scene with one million instances, this reduces GPU memory usage from 195 MB to 167 MB. (ARNOLD-16556)

GPU support for motion vector shader

The motion vector shader is now supported in GPU rendering. (ARNOLD-15172)

Arnold for Maya Enhancements

Arnold Render View and Arnold Viewport Renderer have a new FPS setting

A new option is available to set the maximum frequency to update an interactive render. (MTOA-2570, ARNOLD-17011)

Other Enhancements

Better backfacing normal

Interpolated normals facing away from the camera could produce darkening artifacts on low‑poly meshes. Such normals are now bent toward the view direction to prevent this. (ARNOLD-6993)

Viewport instances

  • Instancer node instances visible in viewport: Instances created by the instancernode can now be displayed in the viewport, making it easier to visualize and work with instanced geometry during scene setup and interactive rendering. (ARNOLD-16778)

Cryptomatte

  • Cryptomatte option for instances: A new parameter object_split_instanceswas added to the Cryptomatte shader. It determines whether different instances should have different masks or the same one. (ARNOLD-16997)
  • Support crypto_object_offset along with crypto_object user data: User data can now be used together on shapes. Now the Cryptomatte key contains both user data values, appended to each other. (ARNOLD-16825)
  • Cryptomatte with instances: The Cryptomatte attribute object_split_instancesis now disabled by default, so that Cryptomatte produces smaller manifests for instances and returns the same hash for all instances of the same object. (ARNOLD-17320)

Render Reports

  • Options node included in JSON statistics: The optionsnode parameters are now written to the JSON statistics file, making it easier to understand what render settings were used when you analyze performance data. (ARNOLD-8558)
  • Consistent unit rounding in Render Report: The Arnold Render Report now rounds values to a consistent unit, improving readability and comparability. Previously, different statistics could be displayed in mixed units (for example, sometimes in milliseconds and others in seconds), which made comparisons difficult. (ARNOLD-17036)
  • Separate statistics for frame and session data: During interactive renders, Arnold now tracks two types of statistics: per-frame for individual frame renders and per-session for accumulated values normalized across the entire render session. The log outputs statistics for each frame in addition to the session statistics, while statistics JSON files contain the final frame statistics and session statistics. This separation helps a user analyze both the performance of individual frames and the overall render session. (ARNOLD-16735)
  • Render Report: enhanced statistics visualization: The Arnold Render Report now displays both per-frame and session statistics during interactive renders. Additional improvements include stacked bar graphs for better visualization of these statistics and other user experience enhancements. (ARNOLD-16736)

EXR metadata

  • Total render time in EXR metadata: When appending to a previous render, total render time is accumulated and updated in the EXR metadata. (ARNOLD-15565)

kick

  • Distributed Kickhas two new command-line parameters: --tile y x, for splitting a render over multiple processes. --tile y xtakes two integer arguments specifying tile yout of xtotal tiles (for example, --tile 0 4renders tile 1 of 4, '--tile 1 4' renders tile 2 of 4, and so on). Each tile is saved with the tile number as part of the file name (for example, example.0002_0_4.exr). After you render all tiles, run kick --mergewith the same command line to merge the tiles into the final image. (ARNOLD-16921)
  • kick custom arguments with scene format plugins: You can use the new kick argument -sceneload_arg %s %sto pass options to scene format plugins. -sceneload_argtakes two strings: the option name and its value. This allows you to specify a custom render settings primitive when you kick a usd file. For example, kick scene.usd -sceneload_arg render_settings /Render/settings2renders using the render settings primitive named "/Render/settings2" (ARNOLD-9865)
  • Default denoiser option for kick: The kick -default_nodesflag has a new denoiseroption that adds the OIDN denoiser if no denoiser is present. (ARNOLD-16641)

Imagers

  • Overlay imager cross-platform support: The overlay imager now renders with an equivalent system font if the specified font is not available. For example, some commonly used Windows fonts, like Arial and Courier New, are replaced with Liberation or DejaVu fonts on Linux and vice versa. (ARNOLD-16892)
  • Add inference_device parameter to Inference imager on macOS: We have added the inference_deviceparameter to the inference imager on macOS to improve parameterization consistency across platforms and to simplify usage. (ARNOLD-16846)

Improve maketx error messages

TX conversion error message now include the target TX filename, which makes it easier to identify the cause of the error. (ARNOLD-17044)

Components

  • Update CER: The Customer Error Reporting (CER) library is updated to v7.2.4. (ARNOLD-16796)
  • OpenColorIO 2.5.1: Arnold now includes OpenColorIO 2.5.1. This update includes all fixes and small improvements since the 2.5.0 release. See thefull release notes for more details. (ARNOLD-17324)
  • Upgrade Autodesk Analytics Program: Arnold includes a newer version of the Autodesk Analytics Program (ADP), which brings stability and performance improvements. (ARNOLD-16814)

USD Enhancements

API Changes

  • Unify search paths: Procedural and texture search paths are now unified into a new asset_searchpath. LUTs for the tonemap imager also use this new search path. (ARNOLD-16486)
  • Chiang hair BSDF available in OSL: A new closure, chiang_hair_bsdf, is now available for use in OSL. This closure corresponds to the BSDF used in the standard hair shader with scattering_modeset to accurate. (ARNOLD-16326)
  • interactive_target_fps: The fps targets for IPR can now be controlled by setting interactive_target_fpsare still available, but sensible defaults are set if values are not provided. (ARNOLD-16219)
  • AiLibraryPath: Added new API function, returns the path to the directory that the Arnold library is located in. (ARNOLD-16642)
  • Asset API: New API functions allow you to query file dependencies (assets) defined in an Arnold universe (AiUniverseGetAssetIterator), scene file (AiSceneGetAssetIterator), or procedural (AiProceduralGetAssetIterator). (ARNOLD-16891)
    For example, querying assets of scene.ass
    AtAssetIterator* it =
    AiSceneGetAssetIterator("scene.ass"); while
    (!AiAssetIteratorFinished(it)) { const AtAsset* asset =
    AiAssetIteratorGetNext(it); // do something with the asset }
    AiAssetIteratorDestroy(it);
  • Assets in custom scene formats: Plugin developers can now implement the scene_get_assetsmethod in their scene format plugin to return file dependencies (assets) specific to that format. This method is optional, and if it is not implemented, Arnold loads the scene and queries assets from the generated Arnold universe. (ARNOLD-16891)
    For example, this code returns 2 assets:
    scene_get_assets { AtAsset* asset1 =
    AiAsset("/path/to/mytexture.exr", AtFileType::Asset);
    AiAssetAddReference(asset1, "mytexture.exr"); AtAsset* asset2 =
    AiAsset("/path/to/myvolume.vdb", AtFileType::Asset);
    AiAssetAddReference(asset2, "myvolume.vdb"); AtArray* assets =
    AiArrayAllocate(2, 1, AI_TYPE_POINTER); AiArraySetPtr(assets, 0,
    asset1); AiArraySetPtr(assets, 1, asset2); return assets; }
  • File type metadata: A new file_typemetadata can be defined on file path parameters to tell how the path needs to be resolved. If not defined, the file type is guessed from the supported extensions of the parameter (extensions metadata) or the extension of the specified file, if any. Available values are custom, and pluginEnum). (ARNOLD-17289)
  • Point cloud API: New API functions allow C++ shaders to perform point cloud queries that are very similar to the OSL specification for its pointcloud_searchfunctions. The typical usage pattern is to call AiPointCloudSearchto get a list of indices and a count of nearest points, and then call the AiPointCloudGetfamily of functions to query particular attributes from those points. To specify a points, curves, or polymesh node, use the node name for the point cloud name. To specify an OpenVDB file, use the format filename:gridfor the point cloud name. (ARNOLD-15550)
  • Mip-mapped volume generation: The Arnold API and kickcan now generate mip-mapped volumes . The Arnold API includes a new AiVolumeFileMakeLODshas a new -makevolumelodscommand-line flag. Both the API and the kickflag take three arguments: the input file, the output file, and the maximum number of levels to generate. (ARNOLD-17114)
  • New node-based AOV workflow: A new render_outputnode replaces the old string-based outputstatements. The global Arnold optionsnode has a new driversparameter that links to the drivernodes, and each drivernode has a list of render_outputnodes. (ARNOLD-5774)
    The render_outputnode has the following structure:
    Type Name Unlinkable Default Bounds 
    ------- ------------------- ------- ------ 
    Inputs 
      STRING aov_name RGBA 
      ENUM type rgba 
      NODE filter null 
      STRING layer_name 
      BOOL half_precision false 
      NODE camera null 
      STRING name
    For example, options node like this:
    options { outputs 2 1 STRING "RGBA RGBA my_filter driver_output"
    "diffuse RGBA my_filter driver_output" } driver_exr { name
    driver_output filename "render.exr" }
    would become:
    options { drivers 1 1 NODE "driver_output" } driver_exr { name
    driver_output render_outputs 2 1 NODE "my_RGBA_output"
    "my_diffuse_output" filename "render.exr" } render_output { name
    my_RGBA_output aov_name "RGBA" type "rgba" filter "my_filter" }
    render_output { name my_diffuse_output aov_name "diffuse" type
    "rgba" filter "my_filter" }
    Note: The APIs AiSceneWritefiles by default do not export with these nodes. To do so, add the Boolean convert_string_outputsset to truein the AtParamValueMapfor the params
  • AtMatrix API: Now supports inequality comparisons via operator!=. (ARNOLD-17354)

Incompatible Changes

Bug Fixes

System Requirements