Share

7.3.1.0 - Arnold User Guide

27 March 2024

Arnold 7.3.1.0 is a feature release bringing updated denoising, improved MaterialX and OCIO support, API support for viewport display of procedural curves, as well as multiple bugfixes.

Important: Arnold 7.3.0.0 and later are not binary compatibility with previous versions of Arnold. Shaders, procedurals, and other plugins compiled against 7.2.5.3 and older versions of Arnold are not compatible with this version of Arnold and will need to be updated and recompiled.

Enhancements

  • Update Intel Open Image Denoise (OIDN) to version 2.2.2: The updated denoiser has 10% better performance on CPU, includes some critical bug fixes, and handles high-frequency details better. (ARNOLD-14772)

  • OptiX denoiser runs on progressive negative AA passes: The OptiX denoiser imager now denoises the low-resolution progressive passes (renders with AA < 0). This should result in higher quality feedback in IPR. (ARNOLD-11487)

  • MaterialX node definitions: The MaterialX node definitions for Arnold shaders now use the standard surfaceshader and volumeshader types, which make them easier to use in DCCs and mix with standard library shaders. The UI for Arnold MaterialX shaders is also improved with the addition of parameter groups and node categories. (ARNOLD-14717, ARNOLD-14736, ARNOLD-14716)

  • OCIO environment variable priority: The OCIO environment variable now takes priority over the configuration file set in the Arnold OCIO color manager as well as the builtin OCIO configuration file. A new ignore_environment_variable parameter on the OCIO color manager causes Arnold to ignore the value of the environment variable and restores the previous behavior. The OCIO environment variable is also now taken into account by maketx. (ARNOLD-9012)

  • Curves in procedural viewport API: Procedurals now return curves nodes in AI_PROC_POLYGONS viewport mode. (ARNOLD-14756)

USD Enhancements

  • Light linking on custom procedurals: You can now use light linking on custom procedurals such as Yeti in the render delegate. (usd#1730)
  • Improved tooltips: The tooltips in DCCs for Arnold nodes in USD is much improved. usd#1835
  • Imager node support: USD support for the new Arnold AI_NODE_IMAGER node type. usd#1870
  • Export ArnoldOptions as UsdRenderSettings - The Arnold USD exporter covnerts the Arnold options node to UsdRenderSettings, UsdRenderProduct, and UsdRenderVar nodes. usd#1852, usd#1865
  • Velocities motion blur for points - Points with a velocities attribute now render with motion blur. usd#1868
  • Better default for transmission ray depth - Set the default transmission depth to 8, so that the default settings work better with glass, and to match default in other Arnold plugins like HtoA and MtoA. usd#1889

API changes

  • Imager plugin API: A public API is now available for imagers. This adds support for custom and third-party imagers in Arnold.(ARNOLD-10322)

The API is built upon a new AI_NODE_IMAGER node type and is implemented via two main API.

  • imager_evaluate allows you to modify output pixels of a render.
#define imager_evaluate
static void ImagerEvaluate(AtRenderSession* render_session, AtNode* node, struct AtOutputIterator* iterator, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
  • imager_prepare is an optional API allows you to query the outputs an imager will recieve and prepare any evaluation specific data.
#define imager_prepare
static void ImagerPrepare(AtRenderSession* render_session, AtNode* node, const AtNode* driver, struct AtOutputIterator* iterator, AtImagerSchedule& schedule);

Additionally, there are a couple of helper APIs for the imager_prepare method. These API let you request additional inputs to be rendered for imager evaluation, and to add additional output layers that the user may want to write to the driver.

AI_API bool AiImagerAddInput(AtRenderSession* render_session, const AtNode* imager, const AtNode* driver, int aov_type, AtString aov_name, AtNode* filter);
AI_API bool AiImagerAddOutput(AtRenderSession* render_session, const AtNode* imager, const AtNode* driver, int output_type, AtString output_name);
Tip: See Imager Nodes in the Arnold API Reference. For some example code, see Imagers Nodes in the Arnold Developer Guide. |
  • Improved builtin metadata: Node and node parameter definitions have been further augmented with metadata that could be useful across DCCs. The metadata that have been added or improved are the following: help, category, ui.groups. Some of these metadata were previously distributed as separate mtd files in each DCC. (ARNOLD-14677, ARNOLD-14678, ARNOLD-14702, ARNOLD-14661)

Incompatible Changes

  • OCIO environment variable priority: The OCIO environment variable now takes priority over the file set in the Arnold OCIO color manager. Setting color_manager_ocio.ignore_environment_variable to true restores the previous behavior.

Bug Fixes

  • ARNOLD-6309 - System locale should not affect .ass reading or writing
  • usd#1547 - Fix mesh lights shutoff when there is a light link in the scene.
  • usd#1859 - Support PointInstancer invisibleIDs for lights
  • usd#1881 - Support UDIM and relative paths on mtlx image shaders
  • usd#1884 - Set a proper name to skydome image node in Hydra
  • usd#1890 - Reduce VtArray memory consumption, specially in the instancer.
  • usd#1874 - Shader output attributes should be outputs:out to match the Sdr registry
  • usd#1878 - Make Arnold relative path optional for image shaders
  • usd#1873 - Ensure materials are written under a scope primitive

System Requirements

  • Windows 10 or later, with the Visual Studio 2019 redistributable.
  • Linux with at least glibc 2.17 and libstdc++ 4.8.5 (gcc 4.8.5). This is equivalent to RHEL/CentOS 7.
  • macOS 10.13 or later.
  • x86-64 CPUs need to support the SSE4.1 instruction set. Apple Mac models with M series chips are natively supported.
  • GPU rendering and OptiX denoising work on Windows and Linux only and require an NVIDIA GPU with the Maxwell architecture or later.

Was this information helpful?