MAXtoA 4.3.2 introduces Arnold 6.2.1.0 and is a performance release bringing important optimizations on GPU, toon shading, and imagers.

Installation

  1. Download Arnold for 3ds Max.
  2. Follow the installation instructions.

System Requirements

Enhancements

  • Toon shader (contour_filter) optimizations: The toon shader has been optimized, especially for Windows machines with many cores and many small buckets, wherein in some situations we've seen over a 4x speedup (core#10414, #10242).

  • Faster renders using progressive rendering with adaptive sampling on CPU: When using progressive rendering with adaptive sampling on the CPU, Arnold will now more quickly end the render when there is no more work left to do. For high AA_max renders this can result in noticeably faster renders (core#9022).
  • Faster imagers: Imagers are faster, especially on many-core Windows machines where we have seen up to a 1.7x speedup with the imager_denoiser_noice. (core#10284, 10341, 10384).
  • Improved output memory usage: The memory usage of outputs has been improved in a variety of cases. If a single output is sent to multiple drivers the memory is now shared, rather than duplicated (see the first graph below). The memory gains are even more substantial when imagers chains are shared between drivers. Again previously this would lead to much-duplicated memory that is now shared (see second graph below). (core#10214)

  • Better progress status updates for progressive renders: Progressive mode renders, which are always enabled on GPU and on CPU are enabled with options.enable_progressive_render, now have more accurate progress reports when doing adaptive sampling. They will also now report to the log an estimated time before the render completes (core#10406).
  • OpenImageIO upgraded: OIIO has been upgraded to version 2.3.2 (core#9705, #9481).

  • Token support to Auto Convert TXtexture lookup shaders (such as the Arnold image node) now convert the entire set of textures to .tx (as defined by the <udim> token).

  • Adding or removing imagers does not trigger a render anymore: after a render pass is finished, adding or removing some imagers (all except the denoisers and the light mixer) modifies the output image without restarting the render.

  • Photometric lights for the light mixer: the Max photometric lights can now be added to light groups through the Arnold light group manager, and taken into account by the light mixer imager.

  • The light mixer now supports up to 256 light groups.

  • Changing some render settings that do not affect the output result doesn't refresh the IPR anymore.

  • Added support of undo/redo in the light group manager.

GPU Enhancements

  • Sparse volumes on GPU: VDB volumes are now loaded on GPU in a sparse form using NVIDIA's NanoVDB library. This can lead to a very significant reduction in GPU memory usage in scenes with volumes, depending on the volume sparsity, compared to the previous dense grid implementation, as shown in the table below. This also produced a speedup due to the faster skipping of empty space possible with NanoVDB. (core#9626, core#10333).
  • Faster SSS on GPU: This overall GPU optimization is most beneficial to scenes with lots for subsurface scattering, where we have observed up to 1.2x speedups (core#9917).

  • Reduced VRAM use for polymeshes: The amount of VRAM used by polymesh is significantly lower in this version. Scenes with heavy subdivisions will use around 33% less GPU memory for geometry (core#10462).

  • Faster GPU render passes: Each render iteration on the GPU has some CPU overhead which has been reduced. This will result in an overall GPU render time reduction up to 1.7x in fast to render scenes. In particular, when the resolution is low or adaptive sampling has reduced the amount of work left to do (core#10405).
  • PRef AOV: The PRef AOV is now available when rendering on GPU (core#10444)).

USD Enhancements

  • Light and Shadow linking: The render delegate now supports light and shadow linking. (usd#412)
  • Motion blur for the Point Instancer: The render delegate now calculates motion blur when using the point instancer. (usd#653)
  • Half and Double precision: Storing data using half or double precision is now supported in both the render delegate and procedural. (usd#669)
  • Pause and Resume: Pausing and resuming renders are now supported in the render delegate. (usd#595)
  • NodeGraph schemas: The procedural now supports using the NodeGraph schema for shader networks. (usd#678)
  • Crease Sets: The procedural now supports crease sets on polymesh. (usd#694)
  • Purpose: Usd Purpose is now supported in the procedural. (usd#698)
  • Transform2D: The procedural now supports remapping UsdTransform2D to built-in Arnold nodes. (usd#517)
  • Write with default values: The scene format now supports optionally writing parameters with default values. (usd#720)
  • Velocity blur: The procedural now uses the velocity attribute to create motion keys for point-based shapes, when there are no position keys or the topology changes between frames. (usd#221)
  • Multi-Threading: The procedural now uses USD's WorkDispatcher which improves the performance of multi-threaded expansion in many cases. Examples of the performance improvements. (usd#690)

Bug Fixes

  • maxtoa#910 Current task progress bar is broken when rendering multiple frame
  • maxtoa#1036 Imagers: denoisers not showing the right AOVs in ARV
  • maxtoa#1079 Imagers can be animated but are not trackable in Track View
  • maxtoa#1081 Light mixer: the animation of a deleted light group is transferred to another group

  • maxtoa#1083 Light Group Manager becomes very slow with hundreds of lights and groups
  • maxtoa#1088 Material editor performance degradation

  • maxtoa#1090 Crash trying to undo the action of making unique an instanced/referenced light
  • maxtoa#1092 Crash when cloning an object with the spring controller

  • maxtoa#1103 Imagers break the ARV refresh when switching camera
  • maxtoa#1104 Shader branches containing OSL maps fail to be imported (fixed for single-output OSL nodes only)
  • maxtoa#1106  OSL map causing Max to crash when thumbnails are rendered in the material editor

  • core#10385 [Alembic] The transform_type parameter on the alembic procedural is not applied to child nodes
  • core#10459 Crash in AiProceduralViewport with curves inside procedurals in bounding box mode
  • core#10410 Crash when rendering EXR files in append mode at high resolution using many AOVs
  • core#10386 Crash with single sided implicit objects
  • core#7562 [GPU] Crash when destroying some procedurals
  • core#10390 [GPU] Crash when loading empty points through a procedural
  • core#10422 [GPU] Crash when switching shader presets in Bifrost Graph scene
  • core#10478 [GPU] Crash with non-Nvidia GPUs with an old Nvidia driver installed
  • core#9682 [GPU] Error during render when reaching the memory limit on one GPU with NVLink
  • core#10431 [GPU] Incorrect result and crashes with motion blur on curves when not using the default shutter
  • core#10352 [GPU] Incorrect Z AOV on background
  • core#10328 [GPU] Overscan region is empty
  • core#10419 [GPU] Texture behind glass is blurred
  • core#10389 [GPU] Transforming procedurals in IPR does not update geometry position
  • core#9751 [GPU] Wrong texture mipmap selected after ray goes through a transparent object
  • core#10445 [Imagers] Artifacts with small filmic_shoulder_length value in imager_tonemap
  • core#10461 [Imagers] imager_denoiser_noice does not write alpha when using output_suffix
  • core#10253 [Imagers] Random crashes when interactively editing the light_mixer channels
  • core#10382 [Imagers] Random crash in imager_denoiser_noice when feature buffers are not of type RGB
  • core#10409 [MaterialX] Material assignments not working when using <surface_material> in the document
  • core#3642 Minor memory leak (464 bytes) when starting a new render session
  • core#10432 [OCIO] Unable to determine chromaticities using an aces_1.2 config without an sRGB curve
  • core#10279 [OpenVDB] Block artifacts when VDB volumes overlap standard surface interiors
  • core#10106 [OSL] Incorrect results when connecting G and B components of an OSL node to another OSL node
  • core#10452 Rare hang with C4DToA on Linux
  • core#10350 Render progress is not reset after AiRenderBegin
  • usd#668 The render delegate does not convert HdInterpolationVarying primvars
  • usd#651 Error rendering Usd file with samples in productName
  • usd#615 Usd Writer crashes when node name contains a hyphen character
  • usd#683 Don't apply skinning if the Usd stage comes from the cache
  • usd#508 Nested procedurals ignore matrix in the viewport API
  • usd#687 Crash with empty primvar arrays
  • usd#679 Attribute subdiv_type should have priority over Usd subdivisionScheme
  • usd#282 Primvars are not inherited from ancestor primitives
  • usd#579 Subdivision settings not being passed to Usd procedural
  • usd#660 Crease Sets and Subdivision scheme is not imported correctly
  • usd#215 Issue with instanced primitives' visibility (procedural)
  • usd#244 Curves with vertex interpolation on width (procedural)
  • usd#718 Inactive render vars are still rendered when using the scene format
  • usd#727 Arnold does not use wrapS and wrapT values on UsdUVTexture shader node when rendering UsdPreviewSurface
  • usd#724 ID not passed to the shapes generated in the procedural



  • No labels