Arnold for 3ds Max 5.7.5.0 plug-in

Learn about new features in MAXtoA 5.7.5.0 for 3ds Max 2025.3, which utilizes Arnold core 7.3.4.1. This release includes a major feature release bringing a new OpenPBR surface shader, improvements to volume rendering, OIDN support for AMD GPUs, and many more improvements and bug fixes.

OpenPBR Surface Shading

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

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)

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)

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)

Improved ramp shaders

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)

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)

Other Enhancements

USD Enhancements

  • USD for 3ds Max export improved: When exporting from MaxUSD with the Arnoldplugin 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

  • Parallel For 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 than AiParallelFor() , but is more flexible as it allows for dispatching jobs without needing to place all the jobs in an array. (ARNOLD-15091)

    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 aroundnative_handle() references inai_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

  • 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 new AiNodeAddDependency 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 new AiNodeAddDependency API, to optimize scene updates (ARNOLD-14901)

Bug Fixes

  • 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 - Support mixed half/float channels when using the render delegate in batch mode with husk.
  • See the release notes for Arnold for 3ds Max 5.7.5.0, for the full list of recently added features and bug fixes since the previous update release.