Arnold can be used in Maya, 3ds Max, Houdini, Cinema 4D, Katana, and Softimage.
All of our plug-ins are free to use when you buy Arnold licenses. This means you can easily switch 3D software packages without having to spend money on additional Arnold licenses.
Arnold for Maya
Provides a beautiful interface to our photorealistic renderer within Autodesk’s Maya.
Arnold for Maya (or MtoA) provides a bridge to the Arnold renderer from within Maya’s standard interface. MtoA is now shipping with the Arnold 5.0 core.
- Seamless integration with Maya shapes, cameras, lights, and shaders.
- Image-Based Lighting support, including a state-of-the-art physical sky.
- Interactive rendering (IPR) allows parameter changes to be rapidly previewed without interrupting your work.
- Support for volume rendering with Maya Fluids.
- Support for Maya Hair and nHair.
- Particles and nParticles support, including particle instancer.
- Defer the creation of geometry at render time with the Stand-in placeholder nodes.
- Productivity boost: override sets, holdout mattes, shadow catcher, passes, UDIM style textures, and arbitrary primvar data.
- Extensible through plug-ins (Golaem, FumeFX for Maya, Yeti, Shave & Haircut).
- XGen integration.
- Texturable geometric lights.
- Deep EXR.
- Rendering of curves.
Arnold for Cinema 4D
Arnold for Cinema 4D (or C4DtoA) provides a bridge to the Arnold renderer from within the standard Cinema 4D interface. C4DtoA is now shipping with the latest Arnold 5.0 core.
- Seamless integration with C4D: objects (instances, cloners, deformers, generators), MoGraph geometry, hair and splines.
- Support for both native particles and Thinking Particles.
- The fastest interactive rendering (IPR) of all Arnold plugins, allows parameter changes to be rapidly previewed without interrupting your work.
- Arnold Shading Network Editor, a node-based material editor.
- A comprehensive list of shaders and utilities, including vertex maps and per-face materials.
- Volume rendering with OpenVDB.
- Deferred, render time generation of geometry with the Arnold procedural node.
- Native linear workflow.
- Team Render, including single-frame distributed rendering.
- Support for third-party plugins like X-Particles and Turbulence FD.
Arnold for Houdini
Arnold for Houdini (or HtoA) provides a tight bridge to the Arnold renderer from within the standard Houdini interface. It enables smooth lighting workflows between Houdini and other DCC applications since setups can be exported and shared.
- All Arnold cameras (perspective, orthographic, spherical, fisheye) with a depth of field and advanced shutter controls.
- All Arnold lights (point, distant, spot, quad, disk, cylinder, skydome, mesh) with light filters and accurate viewport representation.
- Custom Arnold shading network context with a comprehensive list of 106 shaders and utilities.
- Atmospheric and background effects.
- Volume rendering with support for OpenVDB and particles.
- Polymeshes, curves, points with support for displacement and bump mapping, and subdivision.
- Procedurals, with sample Alembic and Mandelbulb implementations.
- Accurate motion blur (transform, deform, velocity, acceleration), overridable per object.
- Geometry attributes translation as user data.
- Optional Arnold properties for objects and cameras.
- Render to AOVs, in single or separate files.
- Support all Houdini rendering contexts (render region, mplay, render viewer, render COP, batch), with support for AOVs and clickable buckets.
- Interactive rendering (IPR) allows parameter changes to be rapidly previewed without interrupting your work.
- Multi-camera renders.
- DeepEXR support.
Arnold for Katana
Arnold for Katana (or KtoA) provides a bridge to the Arnold renderer from within the standard Katana interface.
- Natural integration with Katana nodes, scenegraph, and scripting.
- Multi-threaded scene translation, made possible by Geolib3 in Katana 2+.
- Bundled Arnold, shaders, and plugins for a smooth out-of-the-box experience.
- Improved interactivity for live rendering (IPR) allows look changes to be rapidly previewed.
- Ultra-fast OpenVDB volume rendering.
- Shader networks.
- Works with third-party shaders and renderer procedurals (for hair, etc).
- Render outputs and AOVs, including Deep EXR.
- Supports the curves location type in Katana for hair rendering.
- Many light types and light filters are supported, as well as interactive modification of lights.
- Object parameters and global options better match what is available in Arnold.
- Improved documentation within Katana (args files).
Arnold for 3ds Max
Provides a beautiful interface to our photorealistic renderer within Autodesk’s 3ds Max. Launched at SIGGRAPH 2016 and now with Arnold 5.0, Arnold for 3ds Max (or MAXtoA) is bundled standard with 3ds Max 2018 and later, providing a bridge to the Arnold renderer from within the standard 3ds Max interface.
- Integration with 3ds Max shapes, cameras, lights, and shaders.
- Image-Based Lighting support, including a state-of-the-art physical sky.
- 3ds Max ActiveShade interactive rendering allows parameter changes to be rapidly previewed without interrupting your work.
- Support for AOVs & Deep EXR files.
- Defer the creation of geometry at render time with the Procedural placeholder nodes.
- Texturable Mesh lights.
- 3rd Party Arnold shader support.
Arnold for Softimage
Arnold for Softimage (or SItoA) provides a bridge to the Arnold renderer from within the standard Softimage interface. SItoA is now available to the community under an Apache2.0 open source license at: https://github.com/Autodesk/sitoa
This repository contains the official SItoA plugin source code. Solid Angle developed the SItoA plugin commercially from 2009 to 2017.
After the Softimage end-of-life announcement in April 2014, Solid Angle committed to continuing the development and maintenance of SItoA for at least a year, and then extended this period until July 2017, porting SItoA to the new Arnold 5 API along the way.
- Seamless integration with Softimage shapes, lights (selective lights) passes, and render region.
- Full ICE support (particles, strand, and geometry) with advanced instancing functionality.
- Native Softimage render tree and shader support.
- Stand-ins with real-time view representation.
- Productivity boost: passes, overrides, UDIM style textures.
- Full Alembic integration via Exocortex Crate.
- Texturable geometric lights.
- Deep EXR.
This release has a just-discovered licensing issue on Windows and macOS that results in watermarked renders. On Windows, single-user and network licensing fail; on macOS, network licensing fails. Linux licensing still works, as does rendering in the Maya and 3ds Max user interfaces, where no license is used. We’re working on a bug-fix release to address this issue.
- Global light Sampling support on GPU: Global Light Sampling (GLS) is now available with GPU rendering. Many scenes with moderate to large number of lights render 2-6x faster with GLS. Scenes that do not benefit from GLS tend to be a few percent faster or slower. See the GLS documentation for important information on the optimal number of light samples to use with GPU. (ARNOLD-13109)
- Return direction and distance to nearest hit in distance shader: Arnold 7.2.3 adds out_distance and out_direction output parameters to the distance shader, which return the direction and distance to the nearest surface, respectively. The shader still returns the color-mapped result by default, which is now available as the out_rgb parameter. (ARNOLD-13473)
- state_float, state_int, state_vector multiple outputs: The shading state shaders now have multiple outputs, so you can use a single state shader with multiple output connections in a shading network. (ARNOLD-13579)
- Support vertex UV coordinates on Curves in the render delegate usd#1435
Curves without width should render with a default value usd#1579
- AiProceduralExpand: A new API AiProceduralExpand expands on demand the contents of a procedural (such as a ‘usd’, ‘alembic’, or ‘procedural’ node), as it would happen in a regular render. You can use this to force the creation of procedural child nodes before the rendering starts, and to avoid race conditions when the procedurals are not thread safe. (ARNOLD-7067)
- ARNOLD-10643 – FIS no longer forces a box filter
- ARNOLD-12917 – Viewport API uses incorrect motion blur reference time
- ARNOLD-13645 – Instancer crash if a single node is instanced but set to null
- ARNOLD-13678 – Holes in alpha channel when opacity is almost 1
- ARNOLD-13741 – Log messages missing colors
- ARNOLD-13770 – Name scope clashes with nested procedurals
- ARNOLD-13776 – NaNs when using global light sampling with low-light-threshold
- ARNOLD-13789 – Corrupted tiff output if skip_alpha and unpremult_alpha are both enabled
- usd#1538 – Fix triplanar in USD MaterialX
Arnold 188.8.131.52 is a feature release bringing faster interactive scene edits, rendering optimizations, better USD and MaterialX support, and many other user experience improvements and bug fixes.
- Improved interactivity when modifying large scenes: Arnold 7.2.2 improves the responsiveness of the renderer when modifying large scenes interactively. When editing lights or shaders in scenes with millions of instances, the time to first pixel is nearly instantaneous instead of having to wait multiple seconds. For example, this change improves interactivity greatly when rendering scenes using the point instancer in USD. Modifying nodes during an interactive session now usually results in an update of just the modified node, not of all nodes. In scenes with many nodes, this can substantially speed up interactive node updates. In case of missing updates, you can disable this feature by setting
false. An Arnold cache flush can also be used to trigger all nodes to update again. (ARNOLD-4873)
- Improved global light sampling performance: The efficiency of global light sampling with indirect lighting has been improved in many cases. See the global light sampling documentation for more details. (ARNOLD-13381)
- Reduced numerical precision differences across CPU vendors: While images rendered on Intel, AMD, and Apple CPUs were already often perceptually equivalent, we have removed more precision-related differences so that even more results are now perceptually identical. (ARNOLD-5211)
- Reduced noise from mesh lights in volumes: The amount of noise in volumes when using a mesh light with very small triangles is now much reduced. (ARNOLD-11880)
- Specify which AOV to show in kick display: A new kick flag
-aov selects the AOV to show in the kick display window. (ARNOLD-13360)
- OCIO color manager handles better missing configs: If the OCIO color_manager is not given a config filename and the OCIO environment variable is not defined, Arnold will now use the built-in config. Previously it would fail with a warning and not apply any color conversions. (ARNOLD-11565)
- Per shape autobump SSS visibility: You can now control whether autobump is visible on SSS for specific shapes, instead of relying on the global control, just as you can for the other autobump visibility controls. This setting has subtle effects and can increase rendering times, so enabling it only where it matters will help optimize scenes. (ARNOLD-12989)
- Update CER: The Customer Error Reporting (CER) library is updated to v6.2.3. (ARNOLD-13510)
- Load 3rd party MaterialX node definitions: It is now possible to render MaterialX nodes defined in third-party node definitions using the
ARNOLD_MATERIALX_NODE_DEFINITIONS environment variable. (ARNOLD-13398)
- Estimated render time in the Render Delegate: Add Arnold render status and estimated render time to viewport annotation. usd#1492 –
- Camera filters: Add support for camera filtermap and uv_remap. usd#1499
- Deterministic USD prototype names: This change forces USD to generate non-random prototype names for instances when using the
USD_ASSIGN_PROTOTYPES_DETERMINISTICALLY environment variable. This addresses frame stability issues when using Cryptomatte. (ARNOLD-13349)
- Material scope: Add a Mtl scope for materials when authoring usd file. usd#1486
- Subsurface ray visibility: Add
AI_RAY_SUBSURFACE visibility flag support in the render delegate and procedural. usd#1529
AiMallocUsableSize() returns how much memory a pointer returned by
AiMalloc() is using. This is helpful when paired with
AiAddMemUsage() for tracking memory allocation and deallocations. (ARNOLD-13354)
- Per-object subsurface autobump visibility: The per-object
AI_RAY_SUBSURFACE now toggles the appearance of autobump normal perturbations in subsurface scattering effects. (ARNOLD-12989)
- Support ARNOLD_MATERIALX_NODE_DEFINITIONS in AiMaterialxGetOslShaderCode: The
AiMaterialxGetOslShaderCode function will now respect the value of the ARNOLD_MATERIALX_NODE_DEFINITIONS environment variable, and also supports an optional
MATERIALX_SEARCH_PATH argument to load 3rd part MaterialX node definitions. (ARNOLD-13398)
- Forcing node updates: To force a specific
AtNode type to be always updated, you can set the boolean metadata
true on the node :
AiMetaDataSetBool(node_entry, nullptr, "force_update", true); (ARNOLD-4873)
- Deprecated sss_use_autobump: The
sss_use_autobump global option is now deprecated in favor of the per-object
autobump_visibility flag. While the global option still works, it now prints a warning when used, and will eventually be removed. (ARNOLD-12989)
- ARNOLD-11789 – AiAOVSampleIteratorGetInvDensity for non-adaptive renders was always 1
- ARNOLD-11880 – Bright pixel artifacts in atmosphere_volume when using a mesh light with very small triangles
- ARNOLD-11888 – OIDN doesn’t work if noice denoising AOVs are also output
- ARNOLD-11900 – AOV samples memory stats report negative value and large unaccounted memory
- ARNOLD-12774 – Support multipart scanline EXRs
- ARNOLD-13346 – Set_transform in append mode only considers the first matrix key
- ARNOLD-13376 – Crash when modifying a mesh referenced by an instancer node
- ARNOLD-13460 – Strip _forced_box_filter from .ass export
- ARNOLD-13463 – UDIM tiles greater than 1009 do not render with MaterialX image nodes
- ARNOLD-13495 – Hang when reading corrupt .ass file
- ARNOLD-13511 – RLM_DEBUG env var prints weird characters
- ARNOLD-13512 – Incorrect values in Arnold MaterialX Node Definitions
- ARNOLD-13523 – Fix slowdown when using big arrays of nodes with the dependency graph enabled
- ARNOLD-13539 – Log messages from AiScene API incorrectly reference “[ass]” when .ass file are not used
- ARNOLD-13550 – Quad light sometimes produces NaN artifacts
- ARNOLD-13615 – AutoTX occasionally uses wrong colorspace
- usd#1502 – Render delegate crashes with empty arrays
- usd#1522 – Support
UsdPrimvarReader_float2 shader returning the
- usd#1530 – Fix a crash when a user primvars has an empty array on a keyframe
What’s new in Arnold 184.108.40.206
Arnold is focused on helping you deliver highest-quality production values and improve pipeline flexibility and scalability. This update brings you native support for Apple Silicon in Arnold for Maya and an improved workflow for texture files. Enhancements to color management workflows in 3ds Max, better USD and MaterialX support, as well as optimization and bug fixes, empower you create colorful, life-like renders that leap off the screen.
Native support for Apple CPUs in Arnold for Maya 2024
Arnold now natively supports running under Apple M series CPUs, such as the M1 CPU. The Arnold for Maya plug-in is now – available as universal binaries, increasing rendering speeds by 20% in selected benchmarks compared to running Arnold in Rosetta emulation mode.
Color management in Arnold for 3ds Max 2024
Arnold for 3ds Max now fully supports the newly added, color management workflows in the latest release of 3ds Max. This brings predictable and consistent colors that will match and fit in with the colors in the rest of your pipeline. When enabled, it relies on built-in, or self-provided, OpenColorIO configuration files. You can now change the default rendering space, define a view transform in the Arnold Render View, and change the input color space for textures default configuration. Arnold also now supports the improved OpenColorIO 2.2.1.
This release contains many USD improvements and bugfixes in the USD procedural and the Hydra Render Delegate, helping you better work with heavy data sets. Arnold USD now supports MaterialX displacement shaders in USD scenes and is available both as part of the Arnold plugins and as an open-source project here: https://github.com/Autodesk/arnold-usd.
Improved workflow for texture files
Arnold now enables the automatic generation of optimized TX textures from source textures as part of the rendering process. In this update, the automatic generation is improved and supports using texture files in scenes with different rendering color spaces. Using optimized textures is critical for rendering speed and memory usage and having the TX conversion as part of the core rendering will help those without a dedicated TX workflow to achieve faster renders.
This update contains improved performance and behavior for autobump, support for OpenColorIO, faster scene updates, and multiple Arnold API and usability improvements, allowing you to render more quickly.
Read full release notes
- Adjust how often imagers are run during IPR: A new options setting has been added called
options.imager_overhead_target_percent which can be used to control how often imagers should run during a render. An
imager_overhead_target_percent setting of 0 will cause the imagers to only run at the end of the render. The default value of 1 will periodically run the imager during the render so that the overhead from running the imager is no more than approximately 1%. ARNOLD-11750
- Noice imager runs only at end of render: The noice imager, which is generally too slow for interactive IPR, will no longer run during a render and instead is only run at the end of the render pass. ARNOLD-11761
- Overrides for specific instances in the instancer: Instead of specifying a value for all instances, overrides for specific instances can be defined by declaring a user data array of
instanceidxs_ prefix on the instancer node. ARNOLD-12142
- Reference time for OpenVDB volumes: The global
options.reference_time attribute is now also used as the time the grid data exists, so velocity motion blur is relative to this reference time. Usually this is zero, which for frame-relative time values means “on the frame”, which is typical of OpenVDB simulation data. ARNOLD-12143
- Author defaultPrim in the USD writer : When an Arnold scene is saved as USD, a defaultPrim is now authored, which is needed for nested instances usd#1064
- Don’t force export of ArnoldOptions: When exporting USD files, we now store the list of authored frames as custom metadatas in the usd file, and no longer need to force the export of the ArnoldOptions primitive usd#963
- Write shading trees under their material’s scope : When authoring shading trees, the shaders are now written under their material’s hierarchy. usd#1067
- Support velocity/acceleration in Hydra : Meshes and curves with varying topologies and velocity or acceleration primvars are now supported in the render delegate usd#1039
- Reduce default subdivision level in Hydra : The different subdivision quality settings in Solaris are now interpreted as (0, 1, 2, 3) subdiv_iterations in Arnold, instead of (0, 2, 4, 8) which was too high for Arnold subdivision usd#1056
- Control amount of arnold-usd threads when rendering a usd file : A new environment variable ARNOLD_USD_READER_THREADS allows to control how many arnold-usd threads will be used to translate the usd data to arnold when running kick on a usd file. Default value is 0 and means that all threads will be used usd#1055
- Support light temperature in Hydra : Usd native lights have a light temperature attribute that is now supported in the render delegate usd#1051
- Default to smooth meshes in Hydra : In the render delegate, meshes are now smoothed by default, as in the usd procedural usd#24
- Specify which RenderSettings to use when calling AiSceneLoad : A custom parameter render_settings allows to control which RenderSettings primitive to export to Arnold options node usd#1017
- AiRenderSessionGetOptions(): AiRenderSessionGetOptions() will return the render options node used by a given render session. This read-only render options node holds a separate set of options, initialized from the universe options but partially modified for render specific requirements. The differences with the universe copy of the options are mostly related to invalid values that are sanitized for rendering and temporary changes to sample values made during interactive render. ARNOLD-12012
- Arnold 5 porting guide removed. The Arnold_5_Porting_Guide.pdf has been removed. Arnold-11696
Arnold 7.0.2 Bug Fixes
- ARNOLD-11945 – Crash when mixing transmission on overlapping meshes
- ARNOLD-11728 – Performance regression on some scenes introduced in Arnold 220.127.116.11
- ARNOLD-11282 – Curve face index assignment to 0xFFFFFFFF causing crashes
- ARNOLD-11875 – [GPU] Disabling lights interactively only works once
- ARNOLD-11844 – [GPU] Error when interactively loading scenes with an atmosphere
- ARNOLD-11782 – [GPU] Crash with empty grids in OpenVDB files
- usd#933 Set Product Metadata
- usd#953 AiMsgSet functions need to be called with a render session
- usd#941 Avoid linking with hdx for older USD versions
- usd#951 AiResolvePath is not called with a procedural file type
- usd#962 Support building arnold-usd against USD 21.11
Arnold 7.0.1 Bug Fixes
- ARNOLD-11141 – Incorrect luminance/blackbody/wavelength when using multiple render sessions with different linear color spaces
- ARNOLD-11587 – Artifacts on switching texture_use_existing_tx in IPR for OSL shaders
- ARNOLD-11588 – Switching texture_use_existing_tx does not update in IPR
- ARNOLD-11636 – Out of range error when reading from Pref user data
- ARNOLD-11676 – Resetting a face-varying user data does not remove the indices parameter
- ARNOLD-11697 – Unable to raise GI sample settings from 0 during IPR
- ARNOLD-11716 – Hang when rendering in free mode fails while another render is running
- ARNOLD-11746 – Crash in OIDN denoiser
- ARNOLD-11747 – Crash in node destroy after the render is finished
- ARNOLD-11756 – Crash with standard_volume assigned to an implicit node
- ARNOLD-11781 – Artifacts when rendering with CPU, adaptive, progressive and box filter
- ARNOLD-11784 – Crash when creating and deleting AtUniverses in parallel
- ARNOLD-11787 – Missing documentation about parameter in AiMsg* API
- ARNOLD-11806 – Calling AiRenderBegin while rendering can cause a crash
- ARNOLD-11819 – Crash in AiMsgXxx when creating and deleting multiple render sessions
- ARNOLD-11825 – Instancer does not propagate user data of type array
- ARNOLD-11831 – Missing Python bindings for AiParamValueGetPtr/SetPtr
- ARNOLD-11840 – Confusing deprecation warning with visible lights
- ARNOLD-11684 – [GPU] Hang with autobump when the displacement shader reads user data
- ARNOLD-11702 – [GPU] Crash when flushing texture cache with OSL textures
- ARNOLD-11711 – [GPU] Crash in interactive rendering with some light sampling settings
- ARNOLD-11717 – [GPU] Crashes when rendering on GPU with Optix denoiser in batch render sessions with a display driver
- ARNOLD-11804 – [GPU] Infinite values in P AOV on background
- ARNOLD-11815 – [GPU] Crash in ramp_rgb with curves_only
- ARNOLD-11612 – [OCIO] Warnings if the OCIO color manager uses a non default config file
- ARNOLD-11640 – [MaterialX] Silent error when writing materials using the node name as the material name
- ARNOLD-11654 – [MaterialX] Importing shaders with multiple outputs fails
- usd#902 Render session is not passed to AiDeviceAutoSelect
- usd#900 Avoid calling AiRenderBegin if render is already running
- usd#905 Integer primvar Render Vars fail to render via husk
- usd#906 Version is not set as default when returning SDR definitions
- usd#928 Transform from the Point Intancer is not applied to instances
- usd#918 Rendervars do not show up in Houdini 19
- usd#915 Volume shader is not applied to the ArnoldVolume primitive in Hydra
- usd#458 Point instancer should prune the primitives under its hierarchy
- usd#904 No way to have Point Instancer prototypes hidden
- usd#924 Writer now saves the default color manager node
- usd#921 Remap curves primvars to avoid “wrong data count” errors
- usd#854 Primvars is ignored when rendering basisCurves as b-spline
What’s new in Arnold 7.0?
- Open Image Denoise imager: Intel®’s Open Image Denoise (OIDN) is a fast, AI-accelerated denoiser that runs on CPU that has been integrated into Arnold as the imager_denoiser_oidn imager as an additional denoising option. (ARNOLD-8677).
- Higher quality AI denoising: The OptiX and OIDN denoisers now use the newly introduced denoise_albedo_noisy AOV as the albedo feature AOV provided to the denoiser. This adds specular reflections and refractions to the albedo, which can improve denoiser quality. Below are comparisons between undenoised and Optix denoised with the old and new albedo AOV (ARNOLD-10812).
- LUT based tone mapping: imager_tonemap now supports a lut mode to apply LUT files in all the formats supported by OCIOv2 (cube, look, 3dl, clf among others). imager_tonemap.lut_filename specifies the file to load. Note that some LUTs assume a non-linear color space. To help with this, it is possible to specify a working color space in imager_tonemap.lut_working_color_space to convert to the specified space, apply the lut, and convert to linear or rendering color space again (ARNOLD-11084).
- Automatic selection of box filtering with OIDN and OptiX denoisers: The OptiX and OIDN denoisers do not perform well with CPU rendering filters that span across multiple pixels. Arnold on CPU will now automatically force a box filter on outputs with filters with known issues when either of the denoisers are used (ARNOLD-10812).
- Imager_color_curves: A new imager to control brightness and color curves has been added. Separate curves can be authored for each R, G, or B component, along with the main curve to control the overall luminance response. Curve interpolation and working color space can also be set as needed (ARNOLD-11161).
- imager_tonemap.mix: imager_tonemap now has an additional mix parameter. 0 preserves the input untouched and 1 applies the full node effect (ARNOLD-11172).
- Ignore imagers option: The global option ignore_imagers has been added to allow users to disable imager post-processing in a scene. This can be useful for debugging and can also be enabled via kick with the -ii flag. (ARNOLD-10720).
- Improved support for imagers shared by multiple drivers: All imagers, including the denoisers, can now be shared by drivers with different AOV inputs (ARNOLD-11087).
- Improved imagers refresh rate in IPR: Fullframe imagers will now be updated during rendering so that the imager chain result can be previewed before the entire image has been rendered. This replaces the previous behavior where in some cases we would have to delay the result until after the full frame had finished (ARNOLD-11203).
- Improved filter performance in progressive rendering: The performance of several filters, including the Triangle, Sinc, Blackman-Harris, Catmull-Rom, and Mitnet filters have been improved when rendering in progressive mode. In some cases, we have seen a 48% improvement in performance and a 20x improvement in memory usage (ARNOLD-10651).
- Added support for multiple parallel render sessions on CPU: Any Arnold universe can now be rendered using its own render session (only one render session per universe). Those render sessions can be executed in any order, even in parallel.
- Multiple outputs for shaders: Arnold now supports having multiple outputs for shader nodes. Shader outputs can be linked to inputs of other shader nodes in a .ass file or programmatically via the AiNodeLinkOutput() function by optionally specifying which output is desired when linking. When no output is specified, the node’s default output parameter will be chosen, preserving Arnold’s existing behavior.
- Visible lights now transparent: The visible lights are now transparent, which matches the behavior of indirectly seen lights. This also has the benefit of allowing black parts of textured lights to be masked away. This is a look-breaking change to fix previously incorrect visible light behavior (ARNOLD-9070).
- kick ascii render mode: kick -ascii allows rendering directly into the terminal. This requires a 24-bit terminal with UTF-8 support. The windows terminal, most Linux terminals, and iTerm support this; Apple’s Terminal does not. This will change the resolution of the render to fit within the console, so any images written to disk will likely be very small. Because it is so low res, telling kick to use a small bucket size is recommended, for instance by passing -bs 16 to kick. This can be useful for checking if a render on a remote machine is working (ARNOLD-11146).
- Render in ACEScg by default: Arnold will now use an OCIO color manager by default. This color manager will use the default OCIO configuration file. Arnold will render in the ACEScg color space by default.
- Standard OCIO configuration: Arnold now ships with a standard OCIO configuration exposing common color spaces used for rendering, such as ACEScg and scene-linear Rec.709-sRGB as well as the ACES 1.0 SDR-video ACES output transform for standard dynamic range video.This configuration is compatible with the default Maya 2022 OCIO configuration. (ARNOLD-11333)
- Multi-part EXR: The EXR driver can now render AOVs as separate images (parts) in a multi-part EXR file (merged AOVs, in contrast, renders AOVs as layers in a single-part EXR).
- Write AOVs to multiple formats: It is now possible to output a single AOV in multiple different formats, for example, the following output string will now output the correct result (ARNOLD-11079).
- OSL UDIMs: OSL now uses the same code as Arnold’s image node for resolving texture tags, such as UDIMs. This can make OSL texture lookups faster and increase the types of texture tags that can be used from OSL. (ARNOLD-9276).
- SSS setnames with randomwalk: The sss_setname feature that allows subsurface effects to spread between distinct objects is now supported in the randomwalk mode on CPU (ARNOLD-8140).
- Use Existing TX: When options.texture_use_existing_tx is set to true, which is the default, Arnold will attempt to use the .tx version of a texture when available. The .tx file must be located in the same directory as the requested source texture and have the same name with the exception of the file extension. For instance, if “foo/bar/floor.png” is requested and “foo/bar/floor.tx” exists then “floor.tx” will be used. Arnold will ignore any requested colorspace conversions when the .tx file is used since we assume the .tx will have the colorspace transform baked in (ARNOLD-4107).
- Support for MaterialX v1.38: Arnold extends its MaterialX support to v1.38. As a part of this upgrade, looks and materials exported from Arnold will now be expressed as a combination of Nodes and Inputs departing from the previous standard of ShaderRefs and Params. Arnold will still be able to render MaterialX documents exported with earlier versions of Arnold however this may cause a look-breaking change.
- Cryptomatte 1.1.2: Cryptomatte has been updated to version 1.1.2 (ARNOLD-11270).
- Reduced VRAM use for polymeshes: The amount of VRAM used by polymeshes is significantly lower in this version. Scenes with heavy subdivision will use around 33% less GPU memory for geometry (ARNOLD-8524).
- Reduced VRAM use for GPU volumes: In 6.2.1 we started to use NVIDIA’s NanoVDB system for rendering OpenVDB volumes on GPU, which greatly reduced the GPU memory required for OpenVDB volumes. In 7.0, compression of NanoVDB volumes has been further improved, so that we see roughly a further 50-60% reduction in GPU memory in typical volumetric scenes. GPU volumes now consume less VRAM than the equivalent CPU volumes consume RAM (note, the red line shows the RAM usage in a separate CPU render). (ARNOLD-11229)
- Matte support: Support for matte has been added to the GPU integrator. This means the matte closure, matte shader, and matte shape flag are all now supported (ARNOLD-7924).
- USD 21.08: The procedural included in the core SDK is now built using USD 21.08.
- UsdImaging adapters: Arnold-USD now includes a set of UsdImaging adapters for Arnold specific schemas, that allows direct use of procedurals and Arnold shapes in Hydra. (usd#185 usd#741)
- Deep rendering: The render delegate now supports rendering of deep AOVs via DelegateRenderProducts. (usd#650)
- Multiple frames in a single file: The USD writer is now able to append multiple frames to a single USD file. (usd#777)
- Hydra scene delegate: Arnold-USD now includes an experimental scene delegate for Hydra. (usd#764)
- Progressive disabled when using Husk: Progressive rendering is now disabled when rendering via husk. (usd#755)
- Procedural Path Mapping: The procedural now supports Arnold Path Mapping when loading USD files. (usd#818)
- Custom PrimID Hydra Buffer: The render delegate now uses a dedicated primId AOV to support selections in Hydra viewports. This improves support for render-time procedurals and leaves the built-in id parameter unchanged on shapes. (usd#812)
- DoubleSided in the Render Delegate: The render delegate now supports the built-in doubleSided parameter on USD primitives and correctly supports overrides via Arnold-specific primvars. (usd#805)
- Motion Blur using Velocity and Acceleration: The render delegate now extrapolates point positions if velocity or acceleration primvars exist and there are no multiple samples for the position. (usd#673)
- Light Linking: The procedural now supports light linking. (usd#787)
- Fast camera updates: The render delegate now handles camera-only updates more efficiently, improving the first time to pixel. (usd#869)
- Standard Surface Fallback: The render delegate now uses a standard surface as a fallback, when no materials are assigned to a prim. (usd#861)
- Multiple render sessions: with the new support for multiple render sessions, there are many API additions (old API is deprecated and uses the default render session)
- Multiple outputs: the AiNodeLinkOutput() function now allows the caller to optionally select not only a component of the output but also specify which non-default shader output is desired when linking (ie, non-default output “output_B”, default output component “r”, or non-default output component “output_B.z”). When left unspecified, the default output will be chosen with its full type. OSL shaders’ default output can be linked to either specifically or not, whilst C shaders’ default output are nameless and thus can’t be specified explicitly.
- Supported extension metadata: all file path parameters can be queried for metadata of type extensions to retrieve supported format extensions. (ARNOLD-11159)
- Linear Color Space Test: the new `AiColorManagerColorSpaceIsLinear` can be used to efficiently check if a given color space is linear. Color Managers can optionally implement color_manager_color_space_is_linear, otherwise, the default implementation will be used. (ARNOLD-6706)
- Python bindings for AtParamValueMapIterator API: those were missing from a previous release
- Python bindings for AiMakeTx API: a new parameter has been added so that it can be applied on different universes (as usual, None is a shortcut for the default universe)
What’s new in Arnold 6.2?
- Light Mixer imager: This new imager makes it possible to interactively edit the contribution of light group AOVs during and after rendering without restarting the render (core#9838).
- Bloom in imager_lens_effect: The imager_lens_effect now implements a bloom effect. Bloom or glow is a post-processing effect that will blur pixels above a given threshold across the frame to simulate light bleeding on an imperfect lens. See the (core#9728).
- Noice denoiser imager: The Arnold Noice denoiser is now also available as a post-processing effect. You can automatically denoise images every time you render a scene, edit the denoising settings and see the resulting image directly in the render view. Note that imager_denoiser_noice does not support temporal denoising (core#9718).
OptiX denoiser imager: The OptiX™ denoiser is now available as a post-processing effect. The imager also exposes additional controls for clamping and blending the result. (core#9719).
- OpenColorIO v2 support: Arnold now uses an updated version of OCIO and is able to load and run OpenColorIO v2 configurations. It is fully backward compatible and will load and run existing configurations as before.(core#7827)
- Up to 256 light AOVs supported: The number of supported light AOVs is now 256, it was 15 previously (core#7802).
- Faster cell_noise: The cell_noise shader is now about 2.5x faster on CPU and 4.3x faster on GPU. In order to achieve this, we had to make a look-breaking change that manifests as a different random seed (core#9866).
- New default values for Standard Surface: The base and base_color parameters on standard_surface are now respectively set to 1.0, and (0.8, 0.8, 0.8) by default. Changing base to 1 after connecting base_color to a texture is such a common use case that it’s better to swap the two defaults and avoid having to adjust base every time (core#9128 standardsurface#15)
- Improved progressive sampling: faster and higher-quality sampling improves progressive and adaptive rendering performance (core#10023).
- Constant color detection in maketx: Added constant color detection to maketx. maketx/AiMakeTx will by default add the –monochrome-detect flag (core#10179).
- OpenEXR maketx passthrough: OpenEXR file inputs to maketx/AiMakeTx will now by default generate an OpenEXR based .tx files instead of TIFF based .tx files. –format tif or specifying a non-tx extension in the output filename will still allow for using other filetypes (core#6792).
- maketx allows by default half TIFFs: maketx/AiMakeTx will now by default allow creating TIFF based .tx files with half floats. Before, passing -d half would by default produce a 32-bit float TIFF .tx file. Beware that most tools do not support half TIFF, so float TIFF or half OpenEXR should be used when the .tx file needs to be used outside of Arnold (core#6792).
- Faster maketx half TIFF generation: Generating half TIFF .tx files should be several times faster on certain Linux machines (core#10224).
- Support for OSL shader metadata: Metadata from OSL shaders are now visible on Arnold nodes and can be read via the AiMetadata APIs (core#6718).
- Limit number of per-light log messages: If there are more than 100 lights, we stop outputting per-light sampling log messages at the regular log verbosity and instead only output these at debug level verbosity. This should help avoid “spamming” the logs when there are many lights in a scene (core#10098).
- Faster Autodesk Analytics Program: ADPClientService should upload data more quickly and consume fewer CPU resources, especially when there is no internet access (core#9776).
- Updated single-user licensing: Autodesk Desktop Licensing has been updated to version 18.104.22.16854. This version is not compatible with previous Arnold versions and should be installed automatically from plugin installers if single-user licensing is used, or can be updated manually from the Arnold License Manager. It is required only for single-user licensing, network licensing (AdskFlex) and RLM are not affected (core#289).
- More accurate crash report: When crashes occur while Arnold is running, a stacktrace is printed out. The stacktrace report should now be more reliable and slightly easier to understand (core#9156).
- More profile blocks added: Most of the Arnold API now has associated profiling blocks so it is easier to determine which Arnold components are consuming the most render time (core#10272).
- Interactive imagers in kick: kick now displays imagers in interactive mode (core#9836).
- Faster Apple M1 performance: Arnold should now be able to properly use both the big and small M1 cores (still under Rosetta2) (core#10062).
- OpenVDB 7.1: Arnold now uses OpenVDB 7.1. More information about the changes between OpenVDB 4 and 7.1 can be found here. (core#9861)
- Shadow groups: Support for shadow groups has been added (core#9898).
- Improved start-up times: This version improves the initial startup time when rendering a scene for the first time. On some scenes, we measured up to a 2x speedup in startup time, as well as a 4% speedup in render time (core#10160).
- Report GPU memory used when there is a GPU crash: Running out of GPU memory is a common problem and can sometimes result in random error messages. We now report the amount of GPU memory that Arnold had available when it first started, which if low could indicate that other applications were using GPU resources and stopping those applications will allow Arnold to succeed, and also report the amount of memory available when the GPU crash occurred, which if low is highly suggestive of an out of memory condition. (core#10261).
- Hydra Cameras: The render delegate now supports physical camera parameters, including depth of field and Arnold specific camera parameters. (usd#31 usd#591 usd#611)
- Search Paths: The render delegate now exposes search paths for plugins, procedurals, textures, and OSL includes. (usd#602)
- Autobump Visibility: The render delegate now supports setting autobump_visibility via primvars. (usd#597)
- Cache Id: The procedural now supports reading stages from the shared stage cache via the cache id parameter. (usd#599)
- Prefix for Schema Attributes: Arnold schemas now prefix their attributes for better compatibility with built-in USD schemas. (usd#583)
- Inheriting from UsdGeomXformable: Arnold schemas now inherit from UsdGeomXformable instead of UsdTyped. (usd#558)
- Authoring extent: Extents on UsdGeom shapes are now correctly authored when using the USD scene format. (usd#582)
- Creating XForms: The USD scene format now correctly creates UsdGeomXform parents for shapes instead of UsdTyped. (usd#629)
- Per ray-visibility: The USD procedural now supports per-ray visibilities exported from Houdini. (usd#637)
- USD 20.11: The USD procedural now uses USD 20.11. More information about the changes between 19.11 and 20.11 can be found here. (core#10209)
- Sample iterator AOV name: The name of the primary AOV of an AtAOVSampleIterator can now be retrieved using AiAOVSampleIteratorGetAOVName(). (core#10193)
- Copyright notice query: The copyright notices for Arnold can be queried using the AiGetCopyrightNotices() function. (core#10148)
What’s new in Arnold 6?
The speed of GPU-based rendering makes it possible for artists to work with near-final quality renders at interactive rates.
- Artists can get immediate and more responsive feedback when tweaking shaders and adjusting lighting, giving them more time for artistic iterations.
- Look development artists will benefit from a faster working environment, making it quicker to denoise images and get to the first presentable image or final look.
- Lighting artists will benefit from efficiency gains with the ability to preview lighting and uncover issues immediately, rather than waiting on overnight renders to see their work and make decisions based on feedback received.
With a single click, users can switch seamlessly between rendering on the CPU and on the GPU.
- Arnold GPU is not a separate renderer but uses the same settings, interface, nodes, executables, and codebase as rendering with Arnold on the CPU.
- GPU rendering is now pixel, feature, and API compatible with CPU rendering in Arnold, empowering users to choose which type of rendering is best suited to their specific needs and workflow.
- Across production, artists and studios will see optimized workflows and reduced turnaround times between versions, making it easier to manage traditionally labor-intensive tasks.
While CPU rendering provides studios working on larger visual effects and animation projects the flexibility to scale up quickly for final frame rendering, Arnold GPU rendering will make it easier for artists and small studios to iterate quickly and scale up rendering capacity when needed.
- Arnold users can take advantage of the latest technology and add GPUs for increased rendering power when production demands it.
- Arnold supports rendering on multiple GPUs, with NVIDIA NVLink™ technology to enable shared memory across GPUs.
- Arnold GPU is optimized to take advantage of NVIDIA RTX technology, pushing raytracing speed and power.
Improved Features and Support for Arnold GPU
First unveiled in March, Arnold GPU has seen continual updates throughout the year. The Arnold 5.4 release in July brought support for Open Shading Language and OpenVDB volumes, and this update now rounds out the toolset with a number of improvements across lights, shaders, and cameras. The latest updates to Arnold GPU include:
- Improved support for Open Shading Language (OSL)
- Improved support for OpenVDB volumes
- On-demand texture loading: Textures are now loaded on-demand instead of at the start of the render, helping to reduce memory usage and save time to the first pixel.
- Improved startup time: Time to the first pixel is now faster thanks to a number of improvements including more efficient NVIDIA OptiX™ caching.
- Reduced BVH memory used by geometry: Bounding volume hierarchy (BVH) memory used by geometry is reduced by as much as 50% for large meshes.
- Shadow Matte shader: A first version of the new Shadow Matte shader has been added to the GPU renderer.
- Reduced noise: Excessive sources of noise have been removed, such as indirect noise in refractions or reflections. GPU noise is now on par with CPU noise when using adaptive sampling, which has been improved to yield even faster, more predictable results regardless of the renderer used.
- LPEs: Most LPEs (39/46 and counting) are now supported on GPU, giving users all of the regular shading AOVs.
- Lights: The majority of lights are supported, including portals.
- Cameras: All cameras are now supported.
- Shaders: Most shaders are supported.
Note that there are still some limitations to rendering with Arnold GPU. Please visit the Arnold documentation portal for more information on supported features and known limitations, as well as hardware and driver requirements for Arnold GPU.
New Arnold USD Components
As part of Autodesk’s continued efforts to accelerate the adoption of open standards to benefit the larger industry, a collection of components for Arnold in the USD ecosystem including Hydra render delegate, Arnold USD procedural, and USD schemas for Arnold nodes and properties is now available on GitHub.
Other New Features in Arnold 6
Arnold 6 delivers a number of new features and improvements to help maximize efficiency and performance:
- Faster creased subdivs: Hard creases are now fully supported in adaptive and multithreaded mode. This means creased surfaces will use all procs during subdivision.
- Dielectric microfacet multiple scattering: Rough dielectrics are now energy-preserving by accounting for multiple scattering between micro facets for both reflection and refraction.
- Physical Sky shader improvements: The physical sky shader now extends the color at the horizon all the way down to the bottom pole.
- Improved roughness mapping of the Oren-Nayar diffuse BRDF: The Oren-Nayar roughness parameter has been remapped so that values close to 1 no longer result in excessive darkening. This change also improves the Standard Surface and Car Paint shaders.
- Improved rough thin-wall transmission in Standard Surface shader: Refractions in the thin-walled mode now appear blurry with non-zero roughness.
- OCIO roles: Roles can now be listed with the color manager API by querying color spaces available in the Role (OCIO) family. This makes it possible to build UIs that list all known roles.
- Skip RGBA denoising: Noise now accepts -ignore_rgba or -irgba to skip denoising of RGBA even if it’s present.
- OpenImageIO 2.1.4: OIIO support is now upgraded to 2.1.4.
- More accurate albedo AOVs: Albedo AOVs now correspond more closely to the true albedos of the material’s BSDFs.
- New AOV Write Vector shader: A new shader enables the writing of vector values into a vector typed AOV, for example for recording positional values.
For a complete list of updates in Arnold 6, refer to the release notes.
In addition to new features and improvements in Arnold 6, we have also made several updates to the Arnold plug-ins for Autodesk® Maya®, Houdini, Cinema4D, Katana, and Autodesk® 3ds Max®.
- X-Rite AxF support in MtoA
- Import / export of shading networks between all plugins
- Arnold License Manager to install, set up, and diagnose licensing
Full release notes for each plug-in are available in the Arnold documentation portal.
A New Way to Buy
Monthly, annual, and 3-year single-user subscriptions of Arnold are now available on the Autodesk e-store, simplifying the process of subscribing to, accessing, installing, and renewing Arnold. Moving the Arnold buying experience to the Autodesk e-store means users now get immediate access to their software when they subscribe and no longer have to install and configure elaborate multi-user license servers when they only need a single seat.
For more information, read the Arnold single-user FAQ.
What’s new in Arnold 5.4?
- Improved progressive and adaptive sampling: Better progressive sampling patterns lead to increased noise convergence rate and faster adaptive sampling termination. (#8447)
- clip_geo shader: The new clip_geo shader will clip out all geometry against the shapes it has been assigned to. You can limit the objects that are affected with trace sets, and optionally choose a specific shader for the intersection surfaces. Note that self-intersecting geometry or intersecting clipping objects can cause artifacts. (#7274)
- AOV read shaders: The new aov_read_* shaders let you access built-in AOVs in the AOV shader context or custom AOVs in the regular shading context. They can be useful to reformat built-in AOVs, for example to output normal maps derived from the built-in N AOVs when baking to texture. (#7787)
- Alembic Layering: The alembic procedural now supports Alembic layering, where extra Alembic files specified via the new layers parameter will override properties on top of the Alembic file. (#8467)
- Alembic Arnold Properties: The alembic procedural will now set Arnold parameters from arbGeomParams if they match any Arnold parameter name and type. (#7577)
- Alembic Material Attribute: The alembic procedural has a new material_attribute optional parameter that defines the Alembic property that contains the material names, which will be used to create the per polygon material assignments. (#8535)
- Support for the MaterialX standard library: The materialx operator now supports look development using nodes and node graphs in the MaterialX standard library. Shading models defined using the PBR library are generated using the MaterialX Arnold OSL shader generator. (#8453)
- Disable assignment expressions: Assignments in the set_parameter operator can be now be individually disabled. (#7182)
- Individual parallel init selection for procedurals: You can now tag individual procedural types for serial or parallel intialization. All built-in procedurals are tagged for parallel initialization, but custom procedurals are serial by default, unless their parallel_init boolean metadata has been set. This is useful to tag non-thread safe procedural without disabling parallel initialization altogether. (#7271)
- Autodesk analytics program: Arnold can now optionally send anonymous statistics data back to Autodesk for analysis. This will help us optimize Arnold for the workflows and systems that are commonly used. This service can be opted-in either by calling the AiPromptADPDialog() API, through the kick -ADP flag, or through other Autodesk applications that support this, such as Maya. For the moment this is only available for OSX. (#8433)
- oiiotool: oiiotool is now distributed with Arnold. (#8501)
Improved round corners: round_corners no longer generates non physical normals, this prevents excessive darkening near objects’ silhouettes. (#8365)
- Faster individual node destruction: Destroying individual nodes with AiNodeDestroy() is now substantially faster in scenes with many global-scope nodes. Individually destroying 500k ginstance nodes went from 50s to about 2s. (#8343)
- Faster scene creation and destruction on Windows: Poor Windows performance when creating and destroying scenes has been greatly improved so that performance is almost as fast as Linux and OSX. For instance, the “releasing resources” step at the end of a render with 29k curves objects went from 45s to 4s. (#4399)
- Open Shading Language: Initial support for OSL has been added to the GPU. Like on the CPU you can mix and match OSL and compiled shaders. Note that not all closure and shading ops are supported yet, refer to the supported features and known limitations docs for details. (#5975)
- OpenVDB Volumes: Initial OpenVDB support, note that this initial implementation is likely to use more memory on the GPU than on the CPU. (#7051)
- Volume displacement: The volume displacement and padding logic has been implemented on GPU. (#7606)
- Lights compatibility : Added support for light portals, cylinder lights, disk lights, and low light threshold. (#8531, #8540, #8557, #8551)
- Standard Surface compatibility: Added support for Randomwalk v2 SSS and transmission_dispersion. (#8253, #8253)
- Less noise in indirect samples: Better stratification now reduces the noise in indirect samples, for example with refractive surfaces. (#8615)
- Better GPU cache pre-population ETA: More accurate GPU cache prepopulation time remaining estimate. (#8361)
Earlier listing of built-in AOVs: Built-in AOVs and LPEs are now also listed by the AtAOVIterator, no longer requiring an AiRender() call. (#8431)
New functions for custom procedurals: Custom procedurals can now define new functions procedural_update and procedural_finish (equivalent to node_update and node_finish). Those custom functions (if present) will be executed during scene update and during procedural destruction, respectively (#7961).
AiPromptADPDialog(): Call AiPromptADPDialog() in order to opt-in or out of the Autodesk analytics program (ADP). Currently ADP is only implemented for OSX, so for other platforms this is a no-op. There is a known limitation that only allows this function to work if the Arnold libraries are in the same path as the host process. (#8433)
See full Release Notes
What’s new in Arnold 5.3?
- Adds GPU rendering option – Now users have the flexibility to choose between rendering on the CPU or GPU without changing renderers.
- Major improvements to quality and performance for adaptive sampling, helping to reduce render times without jeopardizing final image quality
- Improved version of Randomwalk SSS mode for more realistic shading
- Enhanced usability for Standard Surface, giving users more control
- Improvements to the Operator framework, including a new Include operator and more artist-friendly way to apply them
- Better sampling of Skydome lights, reducing direct illumination noise
- Updates to support for MaterialX, allowing users to save a shading network as a MaterialX look
What’s new in Arnold 5.2.1?
Round corners shader:
This shader modifies the shading normals near edges to give the appearance of a round corner. The simpler way to use this shader is to connect its output normal to standard_surface.normal or standard_surface.coat_normal. (#7517)
Normal map blending:
A new normal_map blending mode was added to the layer_rgba shader. This makes it easier to create fine details and is more efficient than connecting multiple bump or normal mapping nodes. (#7523)
Faster adaptive subdivision:
Faster adaptive subdivision due to more efficient computation of irregular patches: 2x speedup in some cases. (#7344, #7444, #7488)
Faster operator evaluation:
Operator evaluation is now up to 20x faster on large scenes thanks to expression caching and graph pre-processing. (#7001, #7508)
JSON log file additions:
The JSON stats file has more info, such as the hardware used. (#7196)
LPE image metadata:
Output image metadata now includes the full light path expression for each layer. (#7499)
The Alembic procedural will reuse alembic file handles, keeping up to 8 file handles open for better cache handling in parallel node initialisation. (#7071)
- JSON stats version: The JSON stats file now has a “JSON log version” field that will be incremented each time a breaking change is made to the JSON stats format. (#7530)
- JSON stats change: The JSON stats format has changed in order to resolve some ambiguities with nested fields. (#7074, #7530)
- Range shader gain: The gain parameter on therange shader is now inverted for consistency with the AiGain() API function. (#7477)
- #7443 MaterialX generated shaders are scoped under their node graph name
- #7446 alembic crash with make_instance enabled and changing frames
- #7478 Alembic with make_instance and parallel node init enabled causes disappearing geometry
- #7579 Alembic transform incorrect with motion blur.
- #6221 Export full path instead of node name when writing to .ass while expanding procedurals
- #6727 Recover from failed optix launches
- #7074 nested timing stats are ambiguous in json output
- #7388 metadata lexer should ignore more than three # in a row
- #7413 alembic files with single entry array attributes should be considered not arrays
- #7415 Noice: issues with certain crop windows combinations
- #7416 Noice: incorrect handling of variance AOVs in a separate file
- #7417 Noice: support additional channel suffixes and warn if the suffix is unsupported
- #7418 Noice: skip denoising AOVs with no associated variance
- #7419 make flatness check for quad_light more robust
- #7422 transform motion in procedural that only contains lights can give invalid lights
- #7431 Volumes: register new AOV volume_Z
- #7432 Volume AOVs: shadow rays interfere with new Z and ID AOVs
- #7445 Cell noise time not evaluated when linked
- #7456 Thread safety of alembic procedural tokenize function
- #7461 adaptive camera samples higher than expected
- #7466 MaterialX: Supported parameter arrays are not processed by operator and node definition generation
- #7467 Render callback does not support an “empty” callback
- #7470 d’Eon BCSDF must be evaluated when `base_color` is small
- #7472 Shadow group is not inherited in ginstance
- #7474 curves memory report missing some entries
- #7475 Alembic object transform fix
- #7477 Gain function in range shader is inverted
- #7480 Texture baking: small triangles can cause artifacts
- #7492 Add sheen AOV labels
- #7493 Slow expansion of multiple alembic procedurals
- #7495 Kick -laovs should not grab a license
- #7497 Noice: when looking for feature AOVs prioritize AOVs with the correct filter
- #7501 Alembic procedural expansion with make_instance on using an object_transform parameter
- #7505 Autobump (and bump) disappear for some pixels
- #7507 Alembic Crash with arbGeoParam array property
- #7516 user parameters not properly propagated or read from parent procedural
- #7520 Remove the OptiX dependency on mac
- #7524 The first parameter of OSL nodes is not initialized to the default value
- #7539 Alembic transform/deformation motion blur mismatch
- #7567 Alembic geometry has incorrect transform with make_instance enabled
- #7573 Shaders should check that samples are always strictly positive
- #7442 Copy id to child alembic nodes
- #7548 Unexpected missing parameter warning on custom procedural instances
What’s new in Arnold 5.2?
- Texture baking: A new type of node called uv_camera has been added that will produce an image of a given polymesh’s shaded UV space as output, which can be useful for texture baking. (#6091, #7206)
- Improved sampling of spherical lights: A new technique for sampling point lights has been added which can show significant reductions in noise, especially for large lights illuminating surfaces at grazing angles (rim lighting, for example). (#5534)
- Faster adaptive subdivision: Adaptive subdivision is now up to 2x to 3x faster even on a single thread. In addition, the adaptive codepath has been multi-threaded to fully take advantage of machines with many cores. The aggregated speedup in such machines can be 15x or more. (#2311, #7186, #7201, #7229)
- Improved EXR read performance: Threaded read performance and scaling of OpenEXR files has been greatly improved. (#6605)
- noice denoiser improvements: The stability and usability of the high-quality noice denoiser has been improved thanks to various bugfixes and improved error checking. In particular, the original metadata, display windows, bitdepth and compression are preserved in output files. (#7226)
- OptiX denoiser improvements: The GPU memory consumption of the fast OptiX denoiser has been greatly reduced proportionally to the number of denoised AOVs. Fringing artifacts around HDR pixels have been reduced. (#6885, #7100, #7190, #7333, #6880)
- Sheen in standard_surface: The standard_surface shader supports a new, energy-preserving sheen effect designed to render cloth-like microfiber materials such as velvet. The sheen effect is layered on top of the diffuse and subsurface components. (#7234)
- New cell_noise shader: A new cell_noise shader has been added which can create many different useful cell-like patterns. The color of each cell is mapped to a palette parameter, enabling the easy creation of patterns with colors chosen from a specific palette. (#5985, #6051)
- New controls in range shader: The range shader has been augmented with parameters to control contrast, bias and gain. (#7277)
- RGB clamping in clamp shader: The clamp shader can now be configured to either a scalar or color mode. (#7278)
- Matrix shaders: The matrix_multiply_vector and matrix_transform shaders have been reinstated. (#7243)
- Built-in Cryptomatte: Cryptomatte AOV shaders and filters are now being included as a part of the Arnold core package. (#7301)
- New built-in volume AOVs: The Z depth for the first volume contribution can now be output in a flat AOV with volume_Z (depth AOV for volumes was already available in deep files). Also, ID now works for volumes. (#7326, #7327)
- New control in toon shader: Edge detection can now be controlled using a STRING type user data called toon_id. This feature is enabled when user_id is checked. Otherwise, the detected edges will be driven by the object’s own name as a toon-specific ID. (#7125)
- Alembic procedural improvements: The Alembic library has been updated to 1.7.5 in this release. User data parameters that clash with shape parameters will now get an underscore prefix instead of a warning. Added an object_transform parameter to allow additional transformations on the generated geometry. Added a make_instance parameter so that the Alembic procedural will automatically create instances of objects present in multiple Alembic procedurals (experimental; disabled by default) (#6916, #6947, #7076, #7109, #7163, #7242, #7261, #7286)
- Improved operator assignments: Assignment expressions in operators have improved functionality with regards to reference and string types. (#7284, #7287)
- Upgrade to OSL 1.9.9: This upgraded version of OSL addresses several reported limitations involving locales, the availability of certain noise types, and compatibility issues with utility functions like transformc being promoted to built-in function definitions. (#6225)
- Updated to RLM 12.4BL2: The RLM license server and library have been upgraded from version 12.2BL2 to 12.4BL2, which fixes sporadic access violations and hangs. (#7350, #7120)
- Sheen closure: The AiSheenBSDF() function has been which provides the sheen closure used by standard_surface so that the same effect can be easily obtained in custom shaders. This function also returns a weight that can be used to layer the sheen closure onto other closures in an energy conserving fashion. (#7234)
- Multiple Universes: A new concept has been added to Arnold’s API which gives it the capability of creating nodes in any number of user-defined workspaces called AtUniverse that can be created and destroyed via the AiUniverse() and AiUniverseDestroy() functions, respectively. Upon creation, nodes are assigned a universe which will take on their exclusive ownership, and this ownership can be inspected via the AiNodeGetUniverse() function. Please note that the “null” universe is the “default” universe, which for the time being is the only one which permits rendering and procedural expansion. (#4129)
- Code compatibility: Code made for Arnold 5.1 should still function in Arnold 5.2 after a recompilation.
- Binary compatibility: Even though 5.2 is technically an API-breaking release, Arnold 5.0 and 5.1 plugins (shaders, filters, etc) in the majority of cases will still be compatible with 5.2 and can continue to be used without being recompiled, while procedural plugins on the other hand will in the majority of cases require recompilation. (#6822)
- Multiple Universes: In order to support multiple universes, several existing API functions have a new AtUniverse pointer as first parameter indicating which universe these functions must operate on. This change to function signatures implies a break in binary compatibility with any client code compiled for previous versions of Arnold that were using these functions. However a set of function overloads that preserve the previous signatures has been added to the C++ headers such that the mismatched signatures can be resolved through a code recompilation. The API functions affected by this change are:
- Removed texture blur options: The texture_specular_blur, texture_diffuse_blur , and texture_sss_blur options have been removed after having defaulted at 0 for some time. They are no longer needed for improving texture performance since Arnold is able to automatically blur the textures as needed without the over-blurring that these options would produce. (#4706)
- GPU denoising options renamed: The GPU-related render options used by the OptiX denoiser have been renamed to use the gpu_* prefix. (#7190)
- ENUM params now byte-sized: Enum parameters are now internally stored as bytes instead of ints, and will be reported as such by the AiParamGetTypeSize() API. (#7114)
- #7325 procedural loading a .ass containing many nodes that reference other nodes is very slow
- #6472 OSL issues with Locale
- #6916 curves in Alembic proc cut short
- #6947 Skip invalid curves
- #7012 Noice: black pixels around variance spikes
- #7027 Non-ascii characters prevent Open EXR images from being loaded
- #7076 Rename user data parameters that clash with shape nodes in alembic expansion
- #7154 Adaptive Subdivision: crash with linear patches and different position and UV topologies
- #7179 Adaptive Subdiv: irregular patch crash with different position and uv topologies
- #7226 Noice: support inputs with different data windows
- #7286 Alembic object transform
- #7303 Python binding fixes for functions that return AtNode types
- #7312 Raw drivers crash (including Cryptomatte’s manifest driver)
- #7341 Crash when computing the render stats for procedural
- #7355 Alembic curve user data expansion
What’s new in Arnold 22.214.171.124?
#6771 Incomplete render when you restart after interrupting a render during displacement/subdivision
#7180 noice crashes with separate float Z input file
#7213 MaterialX: Displacements and mixing of generic/texture shaders in materials now supported using a shader type context
#6926 MaterialX: Resolve environment variables in search paths
#6993 noice should preserve metadata, display windows, and add noice args and version metadata
#6994 Noice should preserve channel bit width and compression for outputs
#7094 Procedural containing ginstances are evaluated before instanced node
#7113 Contour lines shouldn’t be drawn when width_scale is zero
#7124 Memory leak when interrupting displacement
#7127 Procedural ginstance matrices are accumulated at each render
#7130 Render incorrectly aborted in applyDevice when GPU is not needed
#7152 noice should exit when unsupported formats are used
#7163 Array property fixes in alembic procedural
#7176 Motion blur on instances of procedurals
#7187 Fix op target selection in kick command line
#7191 Slight error in checkerboard shader
#7193 noice broken sequence handling when temporal denoising is not used
#7198 Alembic procedural uses inheritsXforms property
#7200 Output metadata: output correct metadata for single layer files
What’s new in Arnold Render 5.1?
Optimizing for quality and speed
- Adaptive sampling offers a streamlined way to easily tune image fidelity, so users can reduce render times without jeopardizing final image quality.
- Two new denoising solutions give you the option to use much lower quality sampling settings to optimize your rendering process:
- The OptiX Denoiser based on NVIDIA AI technology is now integrated into Arnold.
- The Arnold Denoiser is a standalone tool that offers the temporal stability needed for final frame denoising.
A new Toon shader has been integrated as part of a non-photorealistic rendering (NPR) solution, provided in combination with the Contour Filter, making it easier to achieve incredible new styles and effects. While Arnold is long known for producing beautiful photorealistic imagery, many users have asked for functionality allowing toon or stylized non-photoreal looks, and this new shader will open up a tremendous range of options.
Managing complexity and scale
For technical users, Arnold continues to offer the stability needed to scale performance without sacrificing image quality.
- A native Alembic procedural will help studios working with Alembic pipelines to better integrate Arnold, optimize their Alembic workflow, and eliminate production bottlenecks.
- A new Profiling API plus structured statistics, including the ability to output data in JSON format, offer a set of powerful debugging tools so users can more easily identify performance issues and fine-tune rendering processes.
Interoperability for open pipelines
Arnold 5.1 lays the groundwork for major developments in supporting open industry standards, helping to dismantle technical roadblocks that might be limiting your choice of tools.
- Material assignments and overrides: Fully interactive inside of Arnold, a new set of operators makes it possible to override any part of an Arnold scene and modify the Arnold universe at render time. Support for open standard frameworks including MaterialX will make it easier than ever to transfer rich material and look-development content between applications and renderers.
See full release notes