Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.



MultiExcerptName6.0.4 Enhancements
  • Automatic file path remapping: String parameter values can now be automatically modified according to the OS Arnold is running on. For example, this is useful when the artist workstations are running Windows but the renderfarm nodes are running Linux. Configuration is done with a JSON file that contains the strings to search and replace for each OS. This configuration file can be selected through the ARNOLD_PATHMAP environment variable.  (#9311)  For example:

    Code Block
           "this_path/": "some/other_path/windows/"
          "this_path/": "some/other_path/mac/"
          "this_path/": "some/other_path/linux/"
  • Rim light control for the Toon shader: A new rim_light_tint float parameter was added to the toon shader to tint the color of the rim light using the base color of the surface. See the full documentation. (#9003)



  • Performance improvements on Windows with many cores and texture-heavy scenes: Several performance improvements have been made, particularly for those running Windows, using many cores, tiff based textures, and/or reading many textures/sec. Expected speedups can be anywhere from a few percent to orders of magnitude faster on many-core Windows machines. (#9515, #9685, #9686, #9695, #9709, #9761) For a medium complexity scene that uses exr based .tx textures we get the following speedups on Windows :

    AMD 3970X (64 threads)439s397s1.11x
    AMD 3990X (128 threads)379s267s1.42x
    AMD 3995WX (128 threads)351s276s1.27x
    Intel Xeon 8280 x 2 (112 threads)356s337s1.06x
    Intel i9-9980XE (36 threads)748s720s1.04x

    For a texture heavy stress scene (8GB of tiff based .tx texture tiles end up being read in) we get the following speedups on Windows:

    AMD 3970X (64 threads)2002s9.9s202x
    AMD 3990X (128 threads)2103s10.1s208x
    AMD 3995WX (128 threads)2130s9.0s237x
    Intel Xeon 8280 x 2 (112 threads)1585s11.2s142x
    Intel i9-9980XE (36 threads)1145s16.8s  68x
  • String parameter path metadata: A new path metadata can be assigned to string parameters to give specific hints about how they will be handled. Currently available values are: filefolder and folderlist. Arnold will expand environment variables, apply the remapping, and handle backslashes on string parameters with the metadata. (#4969)
  • AA_adaptive_threshold in log: The options.AA_adaptive_threshold used is now output in the log file. (#9841)
  • Upgraded OSL: Arnold now uses OSL 1.11.6 bringing multiple optimizations and bug fixes, see the full list of changes. (#8917)

GPU enhancements

MultiExcerptName6.0.4 GPU Enhancements
  • Global AOV shaders: The aov_shader option is now supported on GPU. This option defines a list of shaders that the renderer will evaluate after the regular surface shader. With this, it's possible to add shaders to set specific AOVs without modifying the original shader tree. See the option documentation. (#9394)
  • Initial support for attributes in OSL:  You can now retrieve user data bound to shapes via the getattribute function or via a lockgeom parameter attribute. This initial implementation still has some limitations when compared to the CPU implementation. Queryable attributes are currently restricted to those bound to the current shaded shape and attributes of the active render camera. Querying node parameters is also not yet supported. (#9666)
  • Initial support for tracing in OSL:  You can now use the trace function to trace rays in OSL shaders along with the getmessage function to retrieve information regarding any intersected object. This initial implementation has the restriction that you cannot yet query parameters on an intersected object. (#9797)

USD enhancements

MultiExcerptName6.0.4 USD Enhancements
  • UsdRender schema: UsdRenderSetting, UsdRenderProduct and UsdRenderVar are now supported in the procedural. (usd#453)
  • Improved Solaris Primvar support: Primvars with arrays of a single element are converted to non-array user data in Arnold. This improves primvar support in Houdini Solaris. (usd#456, usd#463, usd#478)

  • Curve support in the render delegate: Curves now render in the Arnold render delegate (usd#483)

API additions

MultiExcerptName6.0.4 API Additions
  • Improved log callbacks : It is now possible to register multiple log callbacks using AiMsgRegisterCallback. The registered log callbacks are associated with a specific mask, and they use the new AtMsgExtendedCallBack function pointer. See the API documentation for the full set of functions. The following functions will be deprecated and eventually removed AiMsgSetCallbackAiMsgAddCallback, and AiMsgResetCallback. (#9598)
  • AiResolveFilePath: This new API resolves a given file path, expanding environment variables and applying path remapping, before searching in the corresponding default search path. A custom search path or paths can optionally be given, that will be searched before the default ones. (#3546)
  • AtMutex and AtRecursiveMutexAtCritSec and associated functions have been deprecated and replaced with AtMutex and AtRecursiveMutex which can be used similarly to std::mutex and std::recursive_mutex and on Windows will perform better than AtCritSec. Using AtMutex/AtRecursiveMutex instead of directly using std::mutex/recursive_mutex will enable Arnold to record time spent blocked, which is used during profiling and stats output. Visual Studio 2015 update 2 or older produces a compile-time warning with std::mutex and so we've disabled these with those older compilers. Upgrade to at least VS 2015 Update 3 in order to use this. (#6862)

Incompatible changes

MultiExcerptName6.0.4 Incompatible Changes
  • AiMsg* changes: Changes have been made to how logging behaves. Now the log session is for the life of the Arnold process instead of just between AiBegin/AiEnd pairs. If messages are not showing up or too many messages show up, you might need to set the logging flags and other options before calling AiBegin. Another change is that you can now set the log filename at any point in time, each time AiMsgSetLogFileName is called the previous file will be closed and the new file will be created. See the API documentation for the full set of functions. (#9575)
  • Increased default texture maximum memory: The options.texture_max_memory_MB default value has been raised from 2048MB to 4096MB. (#9846)

Bug Fixes