• Texture baking: A new type of node called uv_camera has been added that will produce an image of a given polymesh's shaded UV space as output, which can be useful for texture baking. (#6091, #7206)
  • Improved sampling of spherical lights: A new technique for sampling point lights has been added which can show significant reductions in noise, especially for large lights illuminating surfaces at grazing angles (rim lighting, for example). (#5534)
  • Faster adaptive subdivision: Adaptive subdivision is now up to 2x to 3x faster even on a single thread. In addition, the adaptive codepath has been multi-threaded to fully take advantage of machines with many cores. The aggregated speedup in such machines can be 15x or more. (#2311, #7186, #7201, #7229)
  • Improved EXR read performance: Threaded read performance and scaling of OpenEXR files has been greatly improved. (#6605)
  • noice denoiser improvements: The stability and usability of the high-quality noice denoiser has been improved thanks to various bugfixes and improved error checking. In particular, the original metadata, display windows, bitdepth and compression are preserved in output files. (#7226)
  • OptiX denoiser improvements: The GPU memory consumption of the fast OptiX denoiser has been greatly reduced proportionally to the number of denoised AOVs. Fringing artifacts around HDR pixels have been reduced. (#6885, #7100, #7190, #7333, #6880)
  • Sheen in standard_surface: The standard_surface shader supports a new, energy-preserving sheen effect designed to render cloth-like microfiber materials such as velvet. The sheen effect is layered on top of the diffuse and subsurface components. (#7234)
  • New cell_noise shader: A new cell_noise shader has been added which can create many different useful cell-like patterns. The color of each cell is mapped to a palette parameter, enabling the easy creation of patterns with colors chosen from a specific palette. (#5985, #6051)
  • New controls in range shader: The range shader has been augmented with parameters to control contrast, bias and gain. (#7277)
  • RGB clamping in clamp shader: The clamp shader can now be configured to either a scalar or color mode. (#7278)
  • Matrix shaders: The matrix_multiply_vector and matrix_transform shaders have been reinstated. (#7243)
  • Built-in Cryptomatte: Cryptomatte AOV shaders and filters are now being included as a part of the Arnold core package. (#7301)
  • New built-in volume AOVs: The Z depth for the first volume contribution can now be output in a flat AOV with volume_Z (depth AOV for volumes was already available in deep files). Also, ID now works for volumes. (#7326, #7327)
  • New control in toon shader: Edge detection can now be controlled using a STRING type user data called toon_id. This feature is enabled when user_id is checked. Otherwise, the detected edges will be driven by the object's own name as a toon-specific ID. (#7125)
  • Alembic procedural improvements: The Alembic library has been updated to 1.7.5 in this release. User data parameters that clash with shape parameters will now get an underscore prefix instead of a warning. Added an object_transform parameter to allow additional transformations on the generated geometry. Added a make_instance parameter so that the Alembic procedural will automatically create instances of objects present in multiple Alembic procedurals (experimental; disabled by default) (#6916, #6947, #7076, #7109, #7163, #7242, #7261, #7286)
  • Improved operator assignments: Assignment expressions in operators have improved functionality with regards to reference and string types. (#7284, #7287)
  • Upgrade to OSL 1.9.9: This upgraded version of OSL addresses several reported limitations involving locales, the availability of certain noise types, and compatibility issues with utility functions like transformc being promoted to built-in function definitions. (#6225)
  • Updated to RLM 12.4BL2: The RLM license server and library have been upgraded from version 12.2BL2 to 12.4BL2, which fixes sporadic access violations and hangs. (#7350, #7120)

API additions

  • Sheen closure: The AiSheenBSDF() function has been which provides the sheen closure used by standard_surface so that the same effect can be easily obtained in custom shaders. This function also returns a weight that can be used to layer the sheen closure onto other closures in an energy conserving fashion. (#7234)
  • Multiple Universes: A new concept has been added to Arnold's API which gives it the capability of creating nodes in any number of user-defined workspaces called AtUniverse that can be created and destroyed via the AiUniverse() and AiUniverseDestroy() functions, respectively. Upon creation, nodes are assigned a universe which will take on their exclusive ownership, and this ownership can be inspected via the AiNodeGetUniverse() function. Please note that the "null" universe is the "default" universe, which for the time being is the only one which permits rendering and procedural expansion. (#4129)

Bug fixes

  • #7325 procedural loading a .ass containing many nodes that reference other nodes is very slow
  • #6472 OSL issues with Locale
  • #6916 curves in Alembic proc cut short
  • #6947 Skip invalid curves
  • #7012 Noice: black pixels around variance spikes
  • #7027 Non-ascii characters prevent Open EXR images from being loaded
  • #7076 Rename user data parameters that clash with shape nodes in alembic expansion
  • #7154 Adaptive Subdivision: crash with linear patches and different position and UV topologies
  • #7179 Adaptive Subdiv: irregular patch crash with different position and uv topologies
  • #7226 Noice: support inputs with different data windows
  • #7286 Alembic object transform
  • #7303 Python binding fixes for functions that return AtNode types
  • #7312 Raw drivers crash (including Cryptomatte's manifest driver)
  • #7341 Crash when computing the render stats for procedural
  • #7355 Alembic curve user data expansion

Contact Digistor team to get your Arnold updated