• Improved SSS: Subsurface scattering has been modified to leak less light into areas where it shouldn't and properly contribute to indirect light. This improves results around the nose or mouth in typical head models for example. Previously SSS was ignored for secondary GI bounces or contributing to more bounces than specified with GI_diffuse_depth. (#4174, #2978, #4648)
  • Better defaults in standard shader: The empirical SSS profile and GGX microfacet specular distribution are now used by default. (#5317)
  • Automatic reloading of procedurals: When a procedural geometry node's dso or data parameters are modified during an interactive session, the procedural will now be automatically reloaded, and the old contents cleared, avoiding the need for manually destroying and creating a new procedural. (#5190)
  • Faster rendering of few buckets: Rendering a small image will now scale to all available CPU cores regardless of bucket size. (#4647)
  • Maximum number of threads: The maximum number of threads has been increased from 128 to 256. (#5349)
  • Updated OIIO to 1.5.24: This new version comes with some optimizations and bug fixes. (#5139)

API additions

  • AiSetLicenseString(): Added a new API function for setting up a license string enclosed within angle brackets, which is the LICENSE line in a node-locked license file. Client code could now use this function and forget about setting up any environment variables, such assolidangle_LICENSE. (#5259)
    AiSetLicenseString("<LICENSE solidangle arnold YYYYMMDD 10-Jun-2016 uncounted hostid=... _ck=... sig=...>");
  • Python bindings for texture API: The Python API now exposes the following functions in (#5293):
    • AiTextureGetResolution()
    • AiTextureGetNumChannels()
    • AiTextureGetChannelName()
    • AiTextureGetFormat()
    • AiTextureGetBitDepth()
    • AiTextureGetMatrices()
    • AiTextureInvalidate()

Incompatible changes

  • Disabled RLM broadcasting: We have disabled RLM broadcasting, which removes the two-second connection timeout delay due to the RLM client attempting to broadcast to find a license server in the LAN. From now on, the RLM license server must always be specified using the solidangle_LICENSE environment variable, even if it's localhost. (#4535)
  • Removed AiLicense{Set|Get}Attempts() and AiLicense{Set|Get}AttemptDelay(): We have removed the "retry" RLM license request ability. (#2893)

Bug fixes


#5327Windows signal handlers not cooperating with parent process
#4647Inefficient use of CPU threads when using a low number of buckets
#4648SSS not respecting diffuse GI depth correctly
#5084Fix sampling regression introduced in recent sampling refactoring
#5157Multilayer EXR should properly output INT AOVs when other types are present
#5165Hang when repeatedly adding and removing nodes
#5167Crash when destroying a scene with cloned quad lights
#5170Crash when destroying a procedural used by the procedural cache
#5173Crash with volumes when light volume_samples is zero
#5179Deep driver: fix uninitialized variables
#5184Destroying any cached procedural will invalidate all copies
#5191EXR driver: autocrop corrupts the image when HALF AOVs are present
#5192Deep driver: uniform treatment of layer attributes
#5193Hang when destroying and re-creating procedurals with cache enabled
#5201Procedurals containing only shaders are not destroyed correctly
#5216Empirical SSS profile rendering incorrectly with low radius
#5217Matte object AOV filtering wrong with deep EXR
#5227poorly scaling codepath in catclark subdivision
#5228SSE4.2 not always correctly detected
#5233alHair transmission component incorrect
#5234Expand environment variables for volume.dso
#5239Metadata files don't allow 'RGB' as attribute or metadata name
#5240Deep driver: Surface samples should merge when inside a volume
#5248Invalid scene bounds with min_pixel_width in free mode
#5256Proc inheritance not respected for bump shaders
#5260Spot light gobo texture blurred too much in volumes
#5274Mesh lights within procedurals are not correctly transformed
#5280Windows-only texture lookup crash for constant-valued .tx images
#5301AiTextureAccess crash with multiple Arnold sessions
#5303Crash when saving TIFF if resolution is not a multiple of tile size
#5304refraction_opacity should track through multiple refractions
#5308Wrong varying and indexed interpolation for integer user data types
#5319Stray info messages at lower log verbosity
#5320Rare failed assert in LightRadiance() with atmospheric scattering
#5329Deep AOV sample iterator losing mixed atmosphere and surface samples
#5332Atmosphere RGBA AOV missing from deep EXR files
#5337server log entries because maketx tries to access nonexistent RPATH
#5341Override nodes applied to instances not working correctly
#5302Fixed some wrong geometry stats after destroying scene nodes
#5358Do not output warning for zero scaled transforms
  • No labels