21 October 2018


This is a feature release, bringing round corners, alembic procedural improvements and many core fixes.


  1. Get the install files on Solid Angle Downloads.
  2. Follow these installation instructions.


This release uses Arnold and OpenVDB 4.0.0.

Binaries available for the following Houdini, Houdini FX, Houdini Indie and Houdini Education production builds:

  • 16.5.536
  • 16.5.571
  • 17.0.352


and for the following platforms:

  • Linux x86_64 (H16: gcc4.8 and H17: gcc6.3)
  • Windows 7 x64 (H16: vc14 and H17: vc14.1)
  • Mac OS X 10.8+ (clang7.3)


Please note that Houdini Apprentice does not support third-party renderers and thus cannot run HtoA.


  • Round corners shader: This shader modifies the shading normals near edges to give the appearance of a round corner. The simpler way to use this shader is to connect its output normal to standard_surface.normal or standard_surface.coat_normal (core#7517)
  • Normal map blending: A new normal_map blending mode was added to the layer_rgba shader. This makes easier to create fine details and is more efficient than connecting multiple bump or normal mapping nodes. (core#7523)
  • Faster adaptive subdivision: Faster adaptive subdivision due to more efficient computation of irregular patches: x2 speedup in some cases. (core#7344, core#7444, core#7488)
  • Faster operator evaluation: Operator evaluation is now up to 20x faster on large scenes thanks to expression caching and graph pre-processing. (core#7001, core#7508)
  • JSON log file additions: The JSON stats file has more info, such as the hardware used. (core#7196)
  • LPE image metadata: Output image metadata now includes the full light path expression for each layer. (core#7499)
  • Alembic archives: The Alembic procedural will reuse alembic file handles, keeping up to 8 file handles open for better cache handling in parallel node initialisation. (core#7071)

Incompatible changes

  • Range shader gain: The gain parameter on the range shader is now inverted for consistency with the AiGain() API function (core#7477)
  • JSON stats change: The JSON stats format has changed in order to resolve some ambiguities with nested fields. (core#7074, core#7530)
  • JSON stats version: The JSON stats file now has a "JSON log version" field that will be incremented each time a breaking change is made to the JSON stats format. (core#7530)


  • Alembic packed primitive translation optimisations motion (htoa#1023)

  • Optimisations for rendering multiple alembic primitives (htoa#1106, core#7493)

  • MaterialX generated shaders are scoped under their node graph names. (core#7443)

  • Unexpected missing parameter warning on custom procedural instances. (core#7548)

  • Copy id to child alembic nodes. (core#7442)

  • Shaders should check that samples are always strictly positive. (core#7573)

  • Alembic geometry has incorrect transform with make_instance enabled. (core#7567)

  • Alembic transform/deformation motion blur mismatch. (core#7539)

  • The first parameter of OSL nodes is not initialized to the default value. (core#7524)

  • Remove the OptiX dependency on mac. (core#7520)

  • User parameters not properly propagated or read from parent procedural. (core#7516)

  • Alembic Crash with arbGeoParam array property. (core#7507)

  • Autobump (and bump) disappear for some pixels. (core#7505)

  • Alembic procedural expansion with make_instance on using an object_transform parameter. (core#7501)

  • Noice: when looking for feature AOVs prioritize AOVs with the correct filter. (core#7497)

  • Kick -laovs should not grab a license. (core#7495)

  • Add sheen AOV labels. (core#7492, htoa#1105)

  • Texture baking: small triangles can cause artifacts. (core#7480)

  • Gain function in range shader is inverted. (core#7477)

  • Alembic object transform fix. (core#7475)

  • Curves memory report missing some entries. (core#7474)

  • Shadow group is not inherited in ginstance. (core#7472)

  • D'Eon BCSDF must be evaluated when `base_color` is small. (core#7470)

  • Render callback does not support an "empty" callback. (core#7467)

  • MaterialX: Supported parameter arrays are not processed by operator and node definition generation. (core#7466)

  • Adaptive camera samples higher than expected. (core#7461)

  • Thread safety of alembic procedural tokenize function. (core#7456)

  • Cell noise time not evaluated when linked. (core#7445)

  • Volume AOVs: shadow rays interfere with new Z and ID AOVs. (core#7432)

  • Volumes: register new AOV volume_Z. (core#7431)

  • Transform motion in procedural that only contains lights can give invalid lights. (core#7422)

  • Make flatness check for quad_light more robust. (core#7419)

  • Noice: skip denoising AOVs with no associated variance. (core#7418)

  • Noice: support additional channel suffixes and warn if the suffix is unsupported. (core#7417)

  • Noice: incorrect handling of variance AOVs in a separate file. (core#7416)

  • Noice: issues with certain crop windows combinations. (core#7415)

  • Alembic files with single entry array attributes should be considered not arrays. (core#7413)

  • Metadata lexer should ignore more than three # in a row. (core#7388)

  • Nested timing stats are ambiguous in json output. (core#7074)

  • Recover from failed optix launches. (core#6727)

  • Export full path instead of node name when writing to .ass while expanding procedurals. (core#6221)

  • Alembic transform incorrect with motion blur. (core#7579)

  • Alembic with make_instance and parallel node init enabled causes disappearing geometry. (core#7478)

  • Alembic crash with make_instance enabled and changing frames. (core#7446)


See also the Arnold release notes for the full list of core enhancements and fixes.


  • No labels
Privacy settings / Do not sell my personal information / Privacy/Cookies