
Arnold for 3ds Max (MAXtoA) 5.8.2.2 for 3ds Max 2026.2 includes significant performance improvements, initial GPU support for Toon shading, a new HTML-based Render Stats Report, and many bug fixes. This page includes all the new features and changes added to MAXtoA since 3ds Max 2026 was released with MAXtoA 5.8.0.0
See the Arnold for 3ds Max release notes for the full list of recently added features and bug fixes.
HTML Statistics
A new type of visual Statistics display has been added to MAXtoA. By enabling the HTML statistic, a rich visual report of all rendering statistics can be displayed. (MAXTOA-1952)
Statistics paths now pre-populated
The paths for log file, statistics, HTML reports, and the render profile now all have a default path, which is the same location and file name as the main render output. (MAXTOA-1982)
Default lights now optional
The 3ds Max default lights are now optional. A new Use Default Lightscheck box (on by default) controls whether default lights are rendered. (MAXTOA-1882)
Only initialize Arnold once per 3ds Max session
In the past, MAXtoA created a new Arnold session for every render. Now there is a single ongoing Arnold render sessions for the duration of the 3ds Max session. This greatly improves time-to-first-pixel, and gives overall a snappier performance. (MAXTOA-1725)
Data channels support in RenderTimeInstancing API
The support for the 3ds Max MaxSDK::RenderTimeInstancing API has been improved to pass on any data channels correctly. (MAXTOA-1943)
USD version sanity check
Every new version of MAXtoA checks that installed version of MaxUSD is compatible with MAXtoA, and warns you if either component needs an update. (MAXTOA-1948)
Network (BackBurner) rendering disables Arnold RenderView
When rendering on a remote machine, having Arnold RenderView pop up serves no function, and network rendering now behave as if Arnold RenderView was turned off. To go back to the previous behavior, you can set the environment variable MAXTOA_USE_ARV_IN_BACKBURNER=1
Expose Procedural Instancing Optimization option
You can set the new Procedural Instancing Optimizationin in the Advancedsection of the rendering settings.
Render stats report
An HTML-based, interactive viewer for the Arnold render statistics. You can quickly visualize and inspect detailed render stats such as frame render time, memory usage, render time by category or by node, and texture usage. (ARNOLD-14140)
GPU Toon shading
Arnold GPU now includes initial support for the Toon shader and the contour filter. The Toon shader is currently limited to rendering direct lighting only (no reflections, refractions, or indirect lighting). (ARNOLD-15656, ARNOLD-15988)
![]() |
![]() |
Toon | Toon + Contour filter |
Light transforms in point instancer
When an instancer contains lights, it now takes their local matrix into account if instance_inherit_xform is enabled.
Improved Global Light Sampling
Rendering photometric (IES) lights and mesh lights using Global Light Sampling is now higher quality, using the same render settings and taking the same render times. (ARNOLD-13692, ARNOLD-15859)
![]() |
![]() |
Before-and-after comparison: improved renders of various IES profiles (with equal render times and render settings) |
![]() |
![]() |
Before-and-after comparison: improved renders of a motion-blurred mesh light (with equal render times and render settings) |
Performance enhancements
- Faster procedural instancing: Arnold is faster at rendering scenes with complex hierarchies and point instancers. The newoptions.procedural_instancing_optimization flag usually produces speedups between 1-2x, but for sufficiently complex scenes the speedup can be significantly larger. This new optimization defaults toexhaustive mode, which gives the most speedup. Exhaustive mode may use more memory; you can switch to conservative mode to use only the optimizations that do not consume additional memory. This setting is currently only supported for batch CPU rendering.
Animal Logic ALab - 1.2x faster Intel Jungle Ruins - 1.3x faster Activision Caldera - 18x faster - Better scaling for parallel scene init/update: The parallel scene init and update are now faster than before, especially on many-core machines. (ARNOLD-14902, ARNOLD-15718)
- Reduced scene update time with progressive batch renders: Negative AA progressive renders no longer perform a redundant full scene update on the final pass. (ARNOLD-15974)
- Improved interactivity when using only skydome and distant lights: Scenes that contain only skydome and distant lights are now significantly more interactive, especially in scenes with many nodes. A scene with close to nine million nodes that rendered in about 1fps now allows for more than 20fps. (ARNOLD-16114)
- Faster polymesh node init: Time needed for polymesh node initialization has been reduced when there are many meshes being initialized at the same time on machines with many CPU cores. For instance, the Activision Caldera scene went from 63s to initialize to 8.7s on a 120-core Windows machine. (ARNOLD-16008)
- Parallel instancer initialization: Multiple instancer nodes can now initialize at the same time. On a 120-core Windows machine the scene init time for the Intel Jungle USD scene went from 115s to 43s. (ARNOLD-16120)
- Minor Imager performance improvement: Enhanced memory copy operations within the Imager framework, resulting in improved performance. Stress tests demonstrate a reduction of 60 milliseconds per Imager chain. (ARNOLD-16256)
- parallel_init metadata: A warning is now printed when the parallel_init metadata is missing from a procedural. Missing metdata results in parallel_init being disabled for the procedural, which can result in slower scene initialization for those procedurals that could have safely benefited from parallel initialization. (ARNOLD-7051)
USD Enhancements
- Hydra-based USD translation: When you render USD, Arnold now uses Hydra by default to handle the translation of USD to Arnold, which makes the render consistent with the Hydra render delegate usd#2248. You can roll back to the previous behavior with options.usd_legacy_translation on, or by setting the environment variable PROCEDURAL_USE_HYDRA=0. (ARNOLD-15977).
- Reduced USD memory usage: USD geometry buffers are shared with Arnold, which removes one copy of the scene in interactive mode usd#2148. As an example, rendering a high resolution USD mesh with 30 million polygons now consumes 5.5 Gb instead of 7.5 Gb to render.
- During batch renders, the Hydra-based USD procedural now releases the USD stage memory once the translation is done usd#2228.
- Optimize invisible primitives: Don't translate invisible primitives to Arnold when using the render delegate, which can significantly reduce the scene memory used. usd#2264
- Optimize unused child nodes: Destroy child nodes in the Hydra procedural instead of disabling them. This reduces the memory footprint on some scenes. usd#2277
- Update default interactive FPS: Improve the default interactive Frames Per Second settings in the render delegate, allowing faster maximum FPS and slower minimum FPS. usd#2276
- Optimize display driver creation: The render delegate now uses a single display driver for all AOVs, instead of using one driver per AOV. This reduces initialisation and render time. usd#2284
- Angular velocity: The point instancer angular velocity now works in the render delegate. usd#2285
API changes
- AiProceduralExpand now updates procedurals: This API function now both initializes and updates the procedural node, along with expanding (loading) the children nodes. This ensures any custom procedural_update functions are called. (ARNOLD-15898)
- Viewport proxies for points, polymeshes, and volumes:AiProceduralViewport() now accepts non-procedural nodes such as points, polymesh, and volume, and returns viewport proxy representations. (ARNOLD-15941)
- Render stats report APIAiReportSetFileName() sets the file name so that the render creates a render stats report (an html file), AiReportGetFileName() gets the render report file name. (ARNOLD-14140)
- Cryptomatte metadata: Common cryptomatte metadata is now included in the Arnold core, so plugins do not require an mtd file for cryptomatte. (ARNOLD-15661)
Incompatible changes
- Single full scene update in batch: Arnold now only does a single full scene update for render sessions in batch mode. This can cause issues for plugins allowing the modification of the scene in batch sessions, as dependencies between nodes are not tracked. Plugin developers should use interactive render sessions when modifying the scene. (ARNOLD-15974)
- Removed options.gpu_sparse_textures: The gpu_sparse_textures option has been removed as the functionality behind it had already been removed in a previous release of Arnold. (ARNOLD-16237)
Component changes
- Update Autodesk Desktop Licensing: Autodesk Desktop Licensing is updated to v15.3.0.1298. See the release notes for more information on this release. (ARNOLD-16104)
- Upgrade OIIO components: Various components used by OpenImageIO have been upgraded to more recent versions. In particular, jpeg files should now load and write noticeably faster than before. (ARNOLD-7892, ARNOLD-15771)
- Upgrade Customer Error Reporting (CER): CER was upgraded to 7.1.8 to address security vulnerabilities. (ARNOLD-16144)
- Upgrade Autodesk Analytics Program: Arnold includes a newer version of the Autodesk Analytics Program (ADP), which brings stability and performance improvements. (ARNOLD-16031)
Bug Fixes
- MAXTOA-1937 - A MAXtoA rollout no longer shows up in the wrong place in the USD Stage
- MAXTOA-1947 - Removed a harmless maxscript error message that sometimes popped up during saves
- MAXTOA-1959 - Rrendering on a machine with no GPU automatically turns off the Arnold RenderView (because Arnold RenderView requires a GPU and OpenGL)
- ARNOLD-13885 - Arnold GPU does not match CPU for polymesh.matte
- ARNOLD-14467 - [GPU] GPU crash during JIT compilation
- ARNOLD-14922 - Matrix modification of child object matrix in procedural_update is randomly ignored
- ARNOLD-15574 - Broken Cryptomatte due to NVIDIA compiler/driver float bug starting with 553.09
- ARNOLD-15686 - Utility AOV shader crashes Arnold if skydome has a texture
- ARNOLD-15719 - Crash when triplanar.smooth_before_displacement is passed to displacement
- ARNOLD-15834 - Sampling noise is now consistent across renders
- ARNOLD-15842 - OSL shader not rebuilt when a parameter is modified
- ARNOLD-15858 - Per-light sampling performance regression fix
- ARNOLD-15892 - Procedural bounds are not updated when its child objects undergo motion transforms
- ARNOLD-15905 - Lens effect doesn't update correctly when the render resolution changes
- ARNOLD-15914 - [GPU] Arnold should throw an error when the shader stack size cannot be determined
- ARNOLD-15939 - Nodes created in procedural_update ignore procedural matrix
- ARNOLD-15942 - Crash when modifying a parameter that triggers procedural reloading during scene update
- ARNOLD-15943 - Procedural bounding box is not recalculated after creating or removing nodes in procedural_update, leading to clipped objects in renders or poor performance.
- ARNOLD-15948 - Crash when destroying an object node from procedural_update
- ARNOLD-15983 - OpenEXR DWAA float textures read incorrectly
- ARNOLD-15985 - [MaterialX] Parameter with "defaultgeomprop" attribute set overrides connection
- ARNOLD-15986 - [MaterialX] Crash when node with the same name exists inside a nodegraph
- ARNOLD-15993 - Raw drivers receiving incorrect number of samples
- ARNOLD-16000 - Dependencies should not be added when enable_dependency_graph is disabled
- ARNOLD-16005 - Hang in AiProceduralViewport with ginstance nodes
- ARNOLD-16006 - Adding Cryptomatte causes Opacity AOV to be black
- ARNOLD-16041 - [MaterialX] connections to named nodegraph outputs do not work
- ARNOLD-16044 - [GPU] IPR crash when modifying a shape's parameter
- ARNOLD-16050 - [MaterialX] ND_mix_surfaceshader renders black when assigned from materialx operator
- ARNOLD-16053 - Triplanar produces artifacts on GPU with some NVIDIA drivers
- ARNOLD-16060 - Lights under procedurals cannot be transformed during interactive renders
- ARNOLD-16065 - Multipart render fails because parts do not have unique names
- ARNOLD-16073 - Prevent instancer from setting invalid custom names to child nodes
- ARNOLD-16081 - Subdivided meshes included in cached procedurals were not always correctly identified, which might cause differences in the subdivision results
- ARNOLD-16116 - Render report fixes and cleanups
- ARNOLD-16155 - Emission cone is too narrow for IES lights in Global Light Sampling
- ARNOLD-16157 - Lights in moved procedurals instances are not properly moved
- ARNOLD-16181 - Performance regression in initialization of instanced procedurals
- ARNOLD-16184 - Crash when options.outputs is set to a null array pointer
- ARNOLD-16187 - Change default for procedural_instancing_optimization from exhaustive to conservative
- ARNOLD-16203 - Failures and crashes when rendering to exr in append mode
- ARNOLD-16214 - Procedural bounding box not correctly recalculated after adding nodes in procedural_update
- ARNOLD-16234 - Crash when rebuilding an instanced object
- ARNOLD-16247 - Crash when using AiProceduralExpand without a render session
- ARNOLD-16253 - Publishing compounds with custom arnold nodes does not render
- ARNOLD-16289 - Updated the metadata for the density, roundness, width_edge, height_edge, and ramp parameters of the light blocker shader
- ARNOLD-16299 - Ensure that a procedural's bounding box is computed after all child nodes are updated
- ARNOLD-16301 - Improve clarity of GPU error messages when CUDA fails to load
- ARNOLD-16328 - Bucket corners stay at the end of the rendering in ARV with imagers
- ARNOLD-16333 - MaterialX relative path does not work with Arnold
- ARNOLD-16344 - Incorrect scene unit conversions when processing procedurals in procedural cache
- ARNOLD-16347 - Crash when using an invalid filename on an instanced procedural
- ARNOLD-16410 - Numerical precision error in camera shutter_curve when almost 1
- ARNOLD-16415 - Don't reinterpret_type the pointers
- ARNOLD-16418 - Crash when adding objects to a funcptr procedural
- ARNOLD-16492 - Regression in procedural destruction time
- usd#1402 - Incorrect transform when exporting parented objects to USD
- usd#2208 - Fix unnecessary allocations in the instancer and mesh
- usd#2218 - Fix Hydra warning with orthographic cameras
- usd#2219 - Fix race condition in Hydra with node names
- usd#2224 - Fix warning "HdArnoldDriverMain is already installed"
- usd#2225 - Fix crash in point instancers with missing prototypes
- usd#2227 - Hydra procedural breaks the Arnold log
- usd#2232 - Fix incorrect husk render of left-handed indexed meshes with normals
- usd#2234 - Fix warning "Selected Hydra renderer doesn't support prim type 'RenderSettings'"
- usd#2239 - OpenVDB asset with explicit fieldName does not render in Hydra
- usd#2268 - Re-enable instancer motion blur on the first rendered frame by recomputing the transform matrices when the shutter is updated
- usd#2269 - Fix lost shader connections when the Hydra procedural was updated (mtoa)
- usd#2296 - Proper support of stats mode in the render delegate
- usd#2303 - Improve detection of hidden primitives that should be skipped
- usd#2309 - Fix recent conflict between primitives visibility and purpose
- usd#2313 - Arnold primvars aren't taken into account for ArnoldProceduralCustom primitives in usd
- usd#2334 - Fix random crashes with husk and cryptomatte
- usd#2340 - Fix warnings when nodes are deleted during batch sessions
- usd#2231 - Fix velocity motion blur coherence when there is varying number of instances
- usd#2240 - Default volume shader should be assigned in the USD procedural
- usd#2260 - Deepexr settings were not set properly with husk renders
- usd#2287 - Fix mismatch in default value for GI_transmission_depth between USD and Hydra
- usd#2298 - Fix a potential crash when multiple Hydra renders initialize concurrently.
- usd#2300 - Animated sequences render an incorrect filename in Hydra mode
System Requirements
- 3ds Max 2024, 2025, or 2026
- Windows 10 or later, with the Visual Studio 2019 redistributable.
- x86-64 CPUs need to support the SSE4.1 instruction set.
-
GPU rendering and Optix denoising work on Windows and Linux only, and require an NVIDIA GPU with the Maxwell architecture or later.
- We recommend 570.153.02 or higher drivers.
- Intel OIDN GPU support is limited to:
- Intel Xe dedicated and integrated GPUs
- NVIDIA GPUs using Turing or newer architectures
- AMD GPUs with RDNA2 (Navi 21 only) and RDNA3 (Navi 3x) architectures