5.7.5.0 - Arnold for 3ds Max
18 September 2024
MAXtoA 5.7.5.0 is a major feature release using Arnold 7.3.4.1.
Installation
- Download Arnold for 3ds Max from your Autodesk Account. See Download Arnold for more information about downloading MAXtoA from your Autodesk Account.
- Follow these installation instructions.
Enhancements
MAXtoA 5.7.5.0
OpenPBR Material Support: 3ds Max 2025.3 introduces a native OpenPBR Material. To avoid user confusion and duplicating functionality, the Arnold OpenPBR Surface is hidden in the material browser when you use a version of 3ds Max that supports the OpenPBR Material. Using the native 3ds Max OpenPBR Material makes it easier to switch between different renderers. You can still create the Arnold version of the node through scripting, import it from older scenes, or load it from ass or usd files. You can override this behavior by setting the environment variable
MAXTOA_OPENPBR_VISIBLE=1
(MAXTOA-1833)OpenPBR Surface Viewport Improvements: The 3ds Max High Quality viewport uses a full-featured viewport shader for the Arnold OpenPBR Surface shader. (MAXTOA-1844)
Arnold specific options added to Physical Material: The 3ds Max Physical Material, which renders as an Arnold Standard Surface, has two rollouts, which give you access to all the features of Standard Surface. (MAXTOA-1517)
Arnold specific options added to OpenPBR Material: Similarly, the Arnold
OpenPBR Surface
has a few extra options (such asindirect_diffuse
, AOV options, etc.) compared to the 3ds max nativeOpenPBR Material
. These are now available as additional rollouts, in the same way as forPhysical Material
. This allows user to always use theOpenPBR Material
and still have access to all Arnold-specific features. (MAXTOA-1517)
MAXtoA 5.7.4.0
- OpenPBR improvements
- View-dependent coat absorption: The coat lobe now more accurately models the absorption tinting at grazing angles, producing a slightly more realistic look. (ARNOLD-15377)
SSS color matching: The SSS model has been tuned to ensure that the color of dense SSS more closely matches the supplied
subsurface_color
, as required by the OpenPBR specification. (ARNOLD-15328) The following images compare diffuse base color with the subsurface colors of Standard Surface and OpenPBR Surface:- top row: diffuse with a given
base_color
- middle row: Standard Surface (dense) SSS, with same color assigned to
subsurface_color
- bottom row: OpenPBR (dense) SSS, with same color assigned to
subsurface_color
- top row: diffuse with a given
- Scaling of emission luminance from nits to Arnold units:
nits_per_unit
was added to theoptions
node, and OpenPBR Surface'semission_luminance
(in nits) is internally scaled down by thisnits_per_unit
value (defaulting to 1000) to bring it into Arnold units. This ensures that the default soft-maximum ofemission_luminance
of 1000 nits corresponds to the former behavior of Standard Surface atemission
1. (ARNOLD-15364)
Faster startup times on GPU: We have made several optimizations to improve startup and scene update time on GPU. These improvements will be most noticeable on scenes with many objects. Startup times on Windows are also now on par with startup times on Linux. On a scene with 1 million instances, we see the following improvements when compared to the previous release. (ARNOLD-15271, ARNOLD-15279, ARNOLD-15310)
7.3.3.1 7.3.4.0 Improvement GPU update time (Windows) 204s 17s 12X GPU update time (Linux) 37s 18s 2X Faster texture opacity lookups in OSL shaders: OSL shaders used in opacity inputs (for example OpenPBR Surface's
geometry opacity
) now read opacity mask textures faster and with smaller memory footprint. (ARNOLD-15340)Improved node and parameter introspection with kick
kick -info <node>
now groups node parameters by their UI Group metadata, or by whether the parameters are Input or Output. (ARNOLD-14198)For example, here's the first few UI groups of openpbr_surface:
$ kick -info openpbr_surface node: openpbr_surface type: shader implicit output: CLOSURE parameters: 65 multioutputs: 0 filename: <built-in> version: 7.3.4.0 Type Name Unlinkable Default Bounds ------------ ------------------------------------ ------------- --------- Base FLOAT base_weight 1 [0, 1] RGB base_color 0.8, 0.8, 0.8 FLOAT base_diffuse_roughness 0 [0, 1] FLOAT base_metalness 0 [0, 1] Specular FLOAT specular_weight 1 [0, +inf] RGB specular_color 1, 1, 1 FLOAT specular_roughness 0.3 [0, 1] FLOAT specular_ior 1.5 FLOAT specular_roughness_anisotropy 0 [0, 1] Transmission FLOAT transmission_weight 0 [0, 1] RGB transmission_color 1, 1, 1 FLOAT transmission_depth 0 [0, +inf] RGB transmission_scatter 0, 0, 0 FLOAT transmission_scatter_anisotropy 0 [-1, 1] FLOAT transmission_dispersion_abbe_number 20 [0, +inf] FLOAT transmission_dispersion_scale 0 [0, 1] BOOL transmission_transmit_aovs * false INT dielectric_priority * 0
kick -info <node>.parameter
now includes all available metadata for the parameter, including linkability, bounds, help, as well as the type, name, and default value. (ARNOLD-15306)$ kick -info openpbr_surface.fuzz_weight node: openpbr_surface param: fuzz_weight type: FLOAT default: 0 metadata: help: The presence weight of a fuzz layer that can be used to approximate microfibers, for fabrics such as velvet and satin as well as dust grains. max: 1 min: 0
Handle update for OSL shader changes: Information about shaders linked to an OSL shader is stored when using interactive render mode, so that any change in those shaders will cause the OSL shader to be automatically updated. (ARNOLD-14983)
Duplicate node name warnings: Warnings are emitted when adding a node with a name that already exists or renaming an existing node to an empty string. (ARNOLD-12596)
MAXtoA 5.7.3.0
- MAXtoA Toolbar: MAXtoA now ships with a toolbar. Direct access to ARV both for production and IPR, creation of Arnold primitives and modifiers, and access to the most commonly used Arnold features. The toolbar is end-user customizatble by the 3ds Max Customize->Customize User Interface->Toolbar menu item. (MAXTOA-1514)
![]() |
View Switching improved: When rending interactively in ARV, clicking in different views used to change the view of the render. This is almost never the desired behavior, and this has been removed. If switching to a different view is desired, one can just click the view and click the "IPR" toolbar button to acheive the old behavior. (MAXTOA-1685)
Improved Export: In the past, exporting to .ass file from the File menu's Export option did not allow exporting the scene options, and things associated them. Now, there is a new checkbox for exporting the scene options. (MAXTOA-448)
OpenPBR Surface: A new openpbr_surface shader implements the OpenPBR specification. OpenPBR Surface is an evolution of Standard Surface, developed in collaboration with Adobe and the Academy Software Foundation. It introduces many improvements, in particular a better sheen/fuzz model and improved metal reflectivity parameterization. (ARNOLD-13385)

image courtesy of Nikie Monteleone
- Scattering diffusion in volumes: Two new parameters in
standard_volume
improve how light is scattered in volumes. Using those parameters can help achieve high-scattering looks with fewer volume bounces and without adding energy. (ARNOLD-14482)scatter_diffusion
accelerates scattering in volumes.scatter_diffusion_roughness
accelerates scattering further on anisotropic volumes and can help achieve realistic looking clouds with fewer bounces.gain
andbias
curves can further tweak the effect of both parameters
Stochastic volume interpolation: The tricubic interpolation mode of
AiVolumeSampleXXX()
calls, such as those used by thestandard_volume
shader, now uses a stochastic method of interpolation that greatly reduces the amount of voxel data read in each sample call. In testing, we've seen speed ups of as much as 1.7x in certain scenes. Note that this technique does not always produce a perfectly matching image as a result, and can be toggled via thestochastic_volume_interpolation
render option (default ison
). (ARNOLD-3856)Improved quality with Intel Open Image Denoise 2.3.0: The updated Intel Denoiser improves denoising quality and can produce sharper results with less artifacts on scenes with specular reflections and transmission. For more information about changes in this version, see the OIDN release notes (ARNOLD-15059).
OIDN support for Apple Metal and AMD GPU: The Intel OIDN denoiser now supports on macOS all Apple Metal GPUs (M1 and newer) and on Windows AMD GPUs using RDNA2 (Navi 21 only) and RDNA3 (Navi 3x) architectures. This allows for significantly faster denoising: on an M1 Max laptop we see 5-8x faster denoising. (ARNOLD-14855, ARNOLD-14856)
GPU Many-lights support for light linking: Arnold GPU now uses Global Light Sampling for group of lights linked to a shape. This can improve rendering performance for scenes with light linking. For example, the ALab scene now renders twice as fast when you use Global Light Sampling. (ARNOLD-15050)
GPU improved time to first pixel in scenes with many nodes: Reduced time to first pixel with Arnold GPU and scenes with many nodes. For example, we have seen a 18% improvement in time to first pixel on a simple scene with 1,000,000 instances. (ARNOLD-13652)
Motion vector AOV on GPU: The motionvector AOV is now supported when rendering on GPU. (ARNOLD-11046)
3D ramp modes: Ramp shaders have three new modes: 3d_linear, 3d_spherical, and 3d_cylindrical. These modes calculate the ramp input from the distance between the shading point and a user-defined reference point or line. (ARNOLD-15051, ARNOLD-15196)
![]() |
![]() |
![]() |
3d_linear | 3d_spherical | 3d_cylindrical |
- Ramp offset: Ramp shaders can now offset the input value, which allows you to add noise to the ramp. (ARNOLD-15052, ARNOLD-15197)
![]() |
![]() |
![]() |
worley noise (3d_spherical) | cell_noise (u) | alligator noise (v) |
- Heatmap Imager Mode: The tonemap imager now has a heatmap mode that creates a spectrum based on a looked-up AOV quantity. The color ranges from blue (at minimum) to red (at maximum). (ARNOLD-15123)
![]() |
![]() |
![]() |
![]() |
![]() |
Improved AOV memory usage in non-progressive renders: Non-progressive, adaptive renders with the box filter now use less memory. Memory usage is also reduced in non-adaptive renders when using the following filters
gaussian_filter
,triangle_filter
,sinc_filter
,catrom_filter
,mitnet_filter
,blackman_harris_filter
. For example, in a 1080p render using adaptive with AA_samples_max 50 and 6 AOVs, the memory used by AOVs was reduced from 14GB to 730MB (-96%). Note also that AOV memory usage now remains constant as AA_samples_max increases, unlike previous releases where the memory would increase quadratically. (ARNOLD-10160)Improved efficiency of the Alembic procedural: The Alembic procedural now reads data in parallel, which optimizes initialization times of heavy Alembic files with many objects. We observed startup times going from 15 minutes to 4 seconds on a large production scene. (ARNOLD-14796)
Indirect diffuse and indirect specular parameters are now linkable in the standard_surface and openpbr_surface shaders: The
indirect_diffuse
andindirect_specular
ofstandard_surface
andopenpbr_surface
shaders now support linking of shaders. This should allow better optimization in scenarios where no indirect lighting is needed. (ARNOLD-14204)Triplanar Nref user param: Triplanar shader now accepts an
Nref
user parameter, to allow specifying reference normals when inPref
mode. (ARNOLD-15063)AOV names used for OpenImageIO subimages: Multi-part files previously used default subimage naming for layers/subimages. Arnold now uses the names of AOV outputs for the corresponding subimage. (ARNOLD-15053)
Triangle tessellation memory usage statistics grouped under polymesh memory usage: Arnold logs now list triangle tessellation and polymesh memory usage together in the peak CPU memory used and peak GPU memory consumed. (ARNOLD-15194)
USD Enhancements
- USD for 3ds Max export improved: When exporting from MaxUSD with the Arnold plugin configuration, animation is now properly supported (MAXTOA-1778) and the USD export will utilize the meshes that are exported from MaxUSD (MAXTOA-1764)
- Skinning on USD curves and points - Binding skeleton on BasisCurves and points will now work with the procedural. usd#1814
- User data on lights - Primvars on lights are now imported as user data on Arnold light nodes. usd#1939
- Improved quad and mesh light exports - Mesh lights are now exported as a Mesh with light attributes instead of a GeometryLight. usd#1955
API changes
MAXtoA 5.7.3.0
ParallelFor API: A new
AiParallelFor
function allows API users to easily implement multithreading of work over an array without having to use a dedicated multi-threading library such as TBB. (ARNOLD-14966)// simple example that squares all the elements in an array void square(size_t array_index, void* data, void* payload) { float& value = *static_cast<float*>(data); value = value * value; } std::array<float, 7> values = {1, 2, 3, 5, 8, 13, 21}; AiParallelFor(values.data(), sizeof(values[0]), values.size(), nullptr, square);
ParallelJobs API: A new
AtParallelJobs
class allows programs to run jobs in parallel through a parallel job scheduler. This has more overhead thanAiParallelFor()
, but is more flexible as it allows for dispatching jobs without needing to place all the jobs in an array. (ARNOLD-15091)AtParallelJobs jobs; for (size_t i = 0; i < job_count; ++i) { payload = create_your_payload_data(); jobs.add(payload, &callback); } jobs.wait();
OpenVDB preview in AiProceduralViewport: The procedural viewport preview API can now return a boundary mesh for a volume when called on a procedural containing OpenVDB volumes nodes. This is useful to render a preview of a procedural with volumes in a DCC viewport. (ARNOLD-14382)
Shader API A new function to query whether an object is opaque or not. (ARNOLD-4919)
AI_API AI_PURE bool AiShaderGlobalsIsObjectOpaque(const AtShaderGlobals *sg);
Enum values You can now define enum values that start with a digit. (ARNOLD-15165)
const char *enum_myparam[] = { "2d_space", "3d_space", NULL }; AiParameterEnum("myparam", 0, enum_myparam);
Critical Section API Added compile guards around
native_handle()
references in ai_critsec.h because it no longer exists in the STL shipped with Visual Studio v17.8+ (MSVC v14.38+).Node API - Added new API to declare an update dependency between two nodes (a dependency is when a node uses data from another node during its update). (ARNOLD-15211)
AI_API void AiNodeAddDependency(AtNode* node, const AtNode* dependency);
Incompatible Changes
MAXtoA 5.7.3.0
- Triangle tessellation memory usage statistics grouped under polymesh memory usage: Arnold memory usage statistics no longer groups triangle tesselation memory usage under the
triangle tessellation
section. You can now find the memory usage under polymesh memory usage in peak CPU memory used or peak GPU memory consumed. (ARNOLD-15194) - heatmap_filter deprecated: With the improved heatmap workflow via imagers, the heatmap_filter is now deprecated and may be removed in the future. (ARNOLD-15123)
- No forced scene update after options modifications: Instead of forcing a full scene update when the options node is modified, a node that uses data from the options node in its
node_update
function should declare this dependency with the newAiNodeAddDependency
API. (ARNOLD-14973) - force_update metadata deprecated: We are deprecating this functionality, which might be removed completely on a future release. Instead of using
force_update
, nodes are expected to declare dependencies on other nodes using the newAiNodeAddDependency
API, to optimize scene updates (ARNOLD-14901)
Bug Fixes
MAXtoA 5.7.5.0
- MAXTOA-1791 - Arnold RenderView crashes when you click a light with Light Shape Visible enabled.
- MAXTOA-1874 - A bug in the toolbar button "IPR in Arnold Render View" would incorrectly wait for the render to be complete, instead of starting it interactively. This is fixed.
- ARNOLD-14289 - Crash when interactively removing operator nodes
- ARNOLD-15406 - [GPU] Uninitialized memory causing random crashes
- ARNOLD-15437 - open_pbr_surface was not supported in arnold MaterialX implementation
- ARNOLD-15445 - [GPU] Crash with multiple GPUs
- ARNOLD-15453 - OpenPBR is not writing to the coat AOV
- ARNOLD-15465 - Setting IOR to high values in OpenPBR causes NaNs
- usd#2090 - Fixed crashes when registering the TfNotice callback multiple times
MAXtoA 5.7.4.0
- MAXTOA-1838 - The first time you click Render to start a render, if the Arnold RenderView is already turned on, then the Arnold RenderView opens with the wrong resolution.
- MAXTOA-1758 - Resizing the Arnold RenderView while rendering could crash in some situations
- ARNOLD-14735 - OIDN denoiser bucket artifacts during negative-AA progressive passes
- ARNOLD-15380 - [GPU] small memory leak when using AOV shaders
- ARNOLD-15384 - [GPU] memory leak each time an OSL shader is modified
- ARNOLD-15385 - Crash on standard_volume when modifying material interactively
- ARNOLD-15392 - [GPU] small memory leak when using OSL shaders
MAXtoA 5.7.3.1
- ARNOLD-15321 - Hang when
force_update
metadata is used - ARNOLD-15322 - Rare hang in deep_exr driver
- ARNOLD-15339 -
AiNodeAddDependency()
does not work for render session options node - ARNOLD-15343 - Toon contour_filter produces lighter lines with interactive renders
- usd#1989 - Support mixed half/float channels when using the render delegate in batch mode with husk.
- usd#1610 - Proper support of arnold:visibility primvar in hydra
MAXtoA 5.7.3.0
- MAXTOA-1553 - When loading an animated USD file, there was no way to avoid rendering with motion blur. Effectively, motion blur was always on. This has been fixed.
- MAXTOA-1762 - Arnold Objects now properly propagate REF_CHANGED messages to children.
- MAXTOA-1779 - The "Arnold" export mode for MaxUSD was not visible in 3ds Max 2023 due to a difference in python loading behavior. This has been fixed.
- MAXTOA-1790 - A crash on exit was fixed.
- MAXTOA-1791 - Arnold RenderView crashes when you click a light with Light Shape Visible enabled.
- ARNOLD-14779 - AtProfiledLockable not compiling on Windows in newer MSVC due to Mutex::native_handle_type
- ARNOLD-15060 - Arnold should not catch C++ exceptions it did not generate
- ARNOLD-15087 - uv_projection shader uses corrupt UVs for evaluating its default_color shader
- ARNOLD-15121 - [GPU] crash when CUDA error has no message
- ARNOLD-15122 - Crash destroying a light that is part of a light group
- ARNOLD-15136 - Random hang when parallel initializing scene
- ARNOLD-15269 - Output sheared in negative AA passes when using OptiX denoiser with odd-numbered render resolution sizes
- ARNOLD-15277 - [GPU] crash when using shadow groups
- ARNOLD-15025 - [GPU] Outdated GPU support metadata on min_pixel_width parameter
- usd#1861 - Fix BasisCurves disappearing on interactive updates
- usd#1927 - Fix procedural updates during interactive changes of non-leaf primitives
- usd#1661 - In the procedural the subdivision meshes will use the normals generated by the subdivision algorithm instead of the normal primvar.
- usd#1952 - Don't write camera aperture parameters if they're already set
- usd#1902 - Fix sporadic invalid Cache ID error
System Requirements
- Autodesk 3ds Max 2023, 2024, 2025
- Windows 10 or later, with the Visual Studio 2019 redistributable.
- CPUs need to support the SSE4.1 instruction set.
- GPU rendering works requires an NVIDIA GPU with the Maxwell architecture or later. We recommend 537.13 or higher drivers.
- Optix™ denoiser requires an NVidia GPU with CUDA™ Compute Capability 5.0 and above.