• Transmission component in hair shader: The built-in hair shader now includes an additional energy conserving, Marschner-style transmission component (also known as TT). Its angular size can be controlled with hair.transmission_spread which acts as a multiplier on the values for blonde hair: a smaller spread will correspond to more focused brighter effect. Default spread is 1.0, and reasonable values are in the 0.5 to 5.0 range. Like hair.spec and hair.spec2, hair.transmission can be turned on and off per light with light.affect_specular. (#4492, #4508)
  • Volume mattes: The matte parameter is now respected for volume objects, where they will skip lighting and render faster, with the total opacity of the volume cutting out alpha just as surface matte objects do. (#4476)
  • Extended motion vector support: Motion vectors are now correctly computed for all built-in cameras, not just persp_camera. (#4473)
  • Extended min_pixel_width support: Minimum pixel width on points or curves now works for all built-in cameras, not just persp_camera. (#4478)
  • Support node-locked licences: Node-locked licenses can now be automatically loaded if they are placed along with the Arnold binaries (, ai.dll orlibai.dylib) in the Arnold installation folder. If placed in other location, it should be pointed by the solidangle_LICENSE environment variable, specifying the path. Both, RLM servers (in the port@host form) and paths (to folders containing license files, or full paths to specific license files) can be specified at the same time, separated by :or ;, depending on the platform. We encourage to read the  RLM License Administration documentation. (#4501)
  • Updated to RLM 11.2BL2: We have upgraded the license server and the external library controlling the licensing subsystem from version 11.1BL2 to 11.2BL2, a more stable release fixing various crashes, bugs, hangs and memory leaks. (#4375)

API additions

Incompatible changes

  • Gamma for 8-bit RGBA outputs: For 4-channel RGBA output files, gamma correction is no longer applied to the theoretical "unpremultiplied value" but to the raw RGB value. This increases quantization accuracy and works better for volumes or transparent surfaces. Because of this change, the Nuke Read node will work with its default settings, without the need to check premultiplied. (#4504)
  • Fog shader opacity: Previously, the atmospheric fog shader would occlude, but would not appear in alpha, nor in the opacity AOV. The fog shader will now show up in both cases. (#4519)
  • Atmosphere shaders and sg->Vo: This is a reminder that custom atmospheric shaders (those attached to options.atmosphere) are now required to fill out sg->Vo with the volume's additive color in the same way that volume shaders already do. For instance, for a fog shader whose atmosphere contribution scatters fog_radiance towards the ray origin and attenuates the background according to fog_opacity, things should be set in a similar way to this: (#4519)
       sg->Vo = fog_radiance;
       sg->out.RGB = sg->Ci * (AI_RGB_WHITE - fog_opacity) + fog_radiance;
  • AiLicense{Get|Set}Server() and ARNOLD_LICENSE_{HOST|PORT} have no real effect: Arnold will no longer listen to the deprecated ARNOLD_LICENSE_{HOST|PORT}environment variables. In order to specify a list of license servers or license files, you must use the standard RLM environment variables solidangle_LICENSE orRLM_LICENSE. The AiLicense{Get|Set}Server() API is now useless as it does nothing and always returns false, and will be removed in a future release. Starting with this version, Arnold will automatically look for license files in the installation folder and it will also broadcast license servers in the LAN. (#4059)
  • Some warnings upgraded to errors: We have made warnings and errors more consistent regarding geometry nodes such as curves, polymeshes, points, etc. As a result, particularly curves nodes will emit errors when certain parameters are missing or are invalidly constructed, which if options.abort_on_error is on will terminate the render immediately. It is usually better to abort the render and require the data to be fixed instead of rendering more quietly but incorrectly, so we have made this policy more consistent for these nodes. (#4513)

Bug fixes



#4463Crash with AiTraceProbe and curves
#4470instance memory overhead under-reported
#4472acceleration structure for points over-reporting memory used
#4484Tag volumes without a valid shader with options.error_color_bad_shader
#4487Incorrect volume shading between a transparent surface and the background
#4494texture lookups with ignore_textures enabled should count as a succesful texture lookup
#4504Do not divide by alpha ("unpremultiply") when applying Gamma on 8bit RGBA images
#4505rare crash loading binary encoded .ass files
#4510Don't crash when shidxs array has incorrect size
#4513Improve warnings/errors for shape nodes
#4519Atmosphere shader evaluation should only use Vo and out.RGB
#4526kick should match data type and filter when displaying the RGBA AOV
#4527Artifacts with overlapping oriented curves
#4502AiSamplerSeeded() generating correlated samples with nsamples 1
  • No labels