Milestone 4.0.3


  • Multi-threaded ray accel build: Multiple render threads can now build an object's ray accel in parallel, whereas previously only the first thread that touched the object would work on it and the rest of the threads would be forced to wait for it to finish. In machines with many cores, this produces big speedups, specially in scenes with a single multi-million polygon hero object that fills most of the image. We see close to ideal scaling (11.8x faster on a hyper threaded machine with 12 physical cores) for meshes with millions of polygons, and good scaling for other types of objects (8x faster for points). We have not yet implemented this for motion blurred ray accels. (#2653)
  • Added options.enable_fast_lights: The optimizations for scenes with many lights that were introduced in 4.0.2 can now be switched off with this global render option. This is useful when benchmarking and debugging but we don't recommend switching it off in production. (#2731)
  • Upgraded RLM to 9.3BL2: We have upgraded the license server and the external library controlling the licensing subsystem from version 9.2BL2 to 9.3BL2. The new RLM license server increased the maximum number of file descriptors from 1024 to 8192, greatly alleviating problems in environments with a high number of license requests, e.g. farms with near a thousand render nodes. (#2741)
  • Pre-configured RLM server timeout: We now distribute the solidangle.opt options file for the ISV solidangle, along with the rlm server and the solidangle.set settings file. This file (solidangle.opt) pre-configures the TIMEOUT feature in the server with a value of 120 seconds. If necessary, users can still manually change this value as explained in the Licensing wiki. (#2742)
  • Show license environment with kick -licensecheck: In addition to information like the product version and license count, the -licensecheck option now prints the contents of the environment variables related to licensing that Arnold listens to. (#2753)
  • Example Linux script for starting/stopping RLM as a service: We now distribute an example script rlmd for starting and stopping the RLM server as a service in Linux. (#2743)

API additions

  • fast_expf(): Added a significantly faster alternative to the standard expf() function that is within 300 ulp of the actual value (error is about 3e-5 for commonly used values) and is guaranteed correct at exp(0) and exp(1). This can be helpful for shaders where the heavy use of expf() becomes a performance bottleneck, such as scattering shaders. (#2700)

Incompatible changes

Bug fixes



#2451Artifact in lighting from a 'cylinder_light' with MIS enabledarnoldalanmajor3.35 months
#2728crash when parsing .obj files with no texture indicesarnoldangelmajor3.310 days
#2729long pause when measuring string pool sizearnoldangelmajor3.310 days
#2730root AtAggrList node is not being marked unboundedarnoldthiagomajor3.310 days
#2744wrong gamma correction in shader RGB arrays when written to .assarnoldangelmajor3.36 days
#2749excessively verbose threading messages for displacement, skydome, SSSarnoldmarcosmajor3.33 days
#2751Arrays can not handle more than 4GB of dataarnoldthiagomajor3.344 hours
#2745Crash when using a volume_scattering shader with samples parameter set to zeroarnoldmarcosminor3.36 days
#2747remove useless optimization message about multi-key motion matricesarnoldalanminor3.33 days
#2732thread id not being set on shading globals passed to field shaderarnoldramontrivial3.39 days
  • No labels