Arnold for 3ds Max 5.8.2.2

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

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

Incompatible changes

Component changes

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