3ds Max 2025.1 ships with updated denoising, improved MaterialX and OCIO support, plus API support for viewport display of procedural curves in MAXtoA 5.7.1.1.

3ds Max 2025.1 ships with MAXtoA 5.7.1.1, which includes Arnold 7.3.1.1.
This release includes updated denoising, improved MaterialX and OCIO support, API support for viewport display of procedural curves, as well as multiple bug fixes.
See the Arnold for 3ds Max release notes for the full list of recently added features and bug fixes.
The Intel® Open Image Denoiser imager is now added by default to new scenes (MTOA-1787)
![]() |
![]() |
| without denoising | with _imager_denoiser_oidn |
Arnold RenderView (ARV) has new snapshot functionality and other polish. (MAXTOA-1727)

The Arnold RenderView window (ARV) is now dockable by default, and follows the behavior of other dockable windows. If this is not desired, it can be turned off in the MAXtoA render settings. (MAXTOA-1722)


Left side shows the previous behaviour where denoising was only applied to the AA > 0 passes. Right side is new behaviour where all progressive passes are denoised.
A public API is now available for imagers. This adds support for custom and third-party imagers in Arnold. (ARNOLD-10322)
See Imagers Nodes in the Arnold Developer Guide for examples of imager plugins.
The API is built upon a new `AI_NODE_IMAGER` node type and is implemented via two main API.
`imager_evaluate` allows you to modify output pixels of a render.
```c++ #define imager_evaluate static void ImagerEvaluate(AtRenderSession* render_session, AtNode* node, struct AtOutputIterator* iterator, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid) ```
`imager_prepare` is an optional API allows you to query the outputs an imager will receive and prepare any evaluation specific data.
```c++ #define imager_prepare static void ImagerPrepare(AtRenderSession* render_session, AtNode* node, const AtNode* driver, struct AtOutputIterator* iterator, AtImagerSchedule& schedule); ```
Additionally, there are a couple of helper APIs for the `imager_prepare` method. These API let you request additional inputs to be rendered for imager evaluation, and to add additional output layers that the user may want to write to the driver.
```c++ AI_API bool AiImagerAddInput(AtRenderSession* render_session, const AtNode* imager, const AtNode* driver, int aov_type, AtString aov_name, AtNode* filter); AI_API bool AiImagerAddOutput(AtRenderSession* render_session, const AtNode* imager, const AtNode* driver, int output_type, AtString output_name); ```