18 July 2017
This is a feature release, bringing AOV shaders, improved mesh light sampling, and poly mesh as volume.
Installation
- Get the install files on Solid Angle Downloads.
- Follow these installation instructions.
Compatibility
This release uses Arnold 5.0.1.0 and OpenVDB 4.0.0.
Binaries available for the following Houdini, Houdini FX, Houdini Indie and Houdini Education production builds:
- 16.0.600
- 16.0.633
- 16.0.671
and for the following platforms:
- Linux x86_64 (gcc4.8)
- Windows 7 x64 (vc14)
- Mac OS X 10.8+ (clang7.3)
Please note that Houdini Apprentice does not support third party renderers and thus cannot run HtoA.
Enhancements
- AOV shaders: A list of shaders can be defined on the ROP that will be evaluated after the regular surface shader. This is useful to produce ID matte AOVs, such as the popular Cryptomatte. With this it's possible to add shaders to set specific AOVs without modifying the original shader tree. Shaders intended for this purpose should add a boolean metadata named aov_shader on the node itself, as a user-interface hint. If an atmosphere or background shader is set, these global AOV shaders will also be run for those contexts. (core#5942, htoa#905)
- Improved mesh light sampling: A new sampling algorithm has been implemented for mesh lights which can greatly improve their rendering quality when shading points near the light's surface, particularly in volumes. (core#6005, core#6062, core#6074)
- Indirect sample clamp: The new
indirect_sample_clamp
parameter on the ROP works similarly to the existingAA_sample_clamp
but only affects indirect light, so that specular highlights from direct lighting are preserved. This makes it possible to clamp fireflies more aggressively without affecting the final render significantly. It is set to 10.0 by default. Lower values result in more aggressive noise reduction, possibly at the expense of dynamic range. (core#5978) - Update scripts for shaders and ROP: You can now right-click shaders, Arnold VOP networks and ROPs to upgrade them to the current version of Arnold and HtoA. You can also globally convert all the deprecated shaders in the scene from the Arnold menu. Conversion scripts for the deprecated
standard
andhair
shaders, the Arnold ROP from a previous version of HtoA and the discontinuedalSurface
andalHair
shaders are provided. For shaders, the conversion will attempt to match the look as closely as possible with astandard_surface
orstandard_hair
shader. (htoa#900) - Polymesh as volume container: The
polymesh
node now can be a volume container whenstep_size
is greater than zero, and in that mode, it will interpret the assigned shader as a volume shader. This is similar to other volume containers like sphere and box. A built-in channel named "density" is provided for shaders to query, which will be 1.0 on the inside of the polymesh, and 0.0 outside. To facilitate positional displacement in the volume shader, which is commonly used to add detail such as noise, there is an additional parametervolume_padding
that will provide extra room. Note that large volume padding values, particularly when combined with high polygon counts (including through subdivision) will hurt performance, so only use the amount of subdivision and padding you need. (#6039, #6057, #6059, #6060) - Padding in volume-capable primitives: In addition to the
polymesh
node, nowpoints
,box
andsphere
when in volume mode can havevolume_padding
applied so that positional displacement can be added in the volume shader. (core#6055, core#6059) - Iridescence in
standard_surface
: Iridescence effects can be controlled by the new parametersthin_film_thickness
andthin_film_IOR
in thestandard_surface
shader, affecting the specular, transmission and coat components. This uses a new per-microfacet Airy formula, supports artistic Fresnel or complex IOR, and gives much more accurate results than the olderthin_film
shader. Typical thickness values are in the 0nm to 2000nm range. The effect will disappear above 3000nm. (core#5750) - Use AiMakeTx API: The conversion of textures to TX now use the core AiMakeTx API, bringing faster, multithreaded conversions and updates. (#895)
- VR Camera: The Houdini VR camera is now translated to the native Arnold 5
vr_camera
. A new input is provided on the Camera Output VOP to optionally connect a merge shader. (htoa#790) - Per AOV driver options: The ROP UI now allows optionally setting driver options per AOVs, for precision and pixel format. (htoa#854)
- Sharper quad and disk light spread: Due to a more mathematically robust implementation, quad and disk lights now allow for more focused beams when their
spread
parameter is at zero. (core#5980) - Faster BVH builds: The BVH ray accel data structures are now faster to build, especially on machines with many cores. On a dual-socket 56-thread machine we've seen up to 2x faster builds and on a quad-socket 64-thread machine it's up to 3x faster. (core#3474, core#5951, core#5962, core#6001)
- Exact Fresnel equation: The exact Fresnel equation is now used for both microfacet BRDF and microfacet refraction BSDF instead of Schlick's approximation. (core#5371)
- Coat AOV: New built-in AOVs were added for the
standard_surface
shader:coat
,coat_direct
,coat_indirect
andcoat_albedo
AOVs. The builtinspecular
AOVs now only contain the base specular layer. (core#6014) - Skydome Light AOV: The skydome light is now output to direct light AOVs by default again as in Arnold 4. It can still be output to the indirect light AOV by enabling the
skydome_light.aov_indirect
parameter. (core#6022) - Normal map shader: A
strength
parameter was added to increase or decrease the effect of thenormal_map
shader, with the default 1.0 applying the normal map unmodified. Thenormalize
parameter was removed, and the output normal is now always normalized. (core#5971) - Camera barrel distortion: A new
persp_camera.radial_distortion
attribute has been added to specify the camera's quadratic radial distortion, with negative and positive values resulting in pincushion and barrel distortion respectively. (core#2385) - Camera FOV EXR metadata: As a convenience, a new field
CameraFov
has been added to EXR metadata to explicitly store the render camera's FOV. This is a lot easier than having to derive it from the film aperture and focal length with the formulafov = 2 * Rad_To_Deg * atan(CameraFilmApertureHorizontal / (2*CameraFocalLength))
. (core#6026) - Half-float EXR layers: Output layers in files that support layers (such as regular or deep EXR files) can be individually set to type
HALF
by adding an optionalHALF
modifier to the corresponding output string. For instance: "my_aov RGB filter driver HALF". (core#3839) - Custom EXR layer names: Output layer names can be customized in file formats that support layers (regular or deep EXR) by adding an optional custom layer name after the driver name in the
options.outputs
string: (core#6047) - Weighted variance filter: The variance filter has a new
variance_filter.filter_weights
to set the weights used for each sample. The default value (box
) matches the previous behavior. (core#5954) - Upgraded OSL to 1.9.0: Open Shading Language has been upgraded to the latest version. This brings many performance improvements and bugfixes, along with new features such as operator overloading, struct initializers, and new utility functions. (core#6034)
Fixes
- Color management: Many color managements shortcomings have been fixed while switching to the AiMakeTx API. (htoa#895)
- Digital signing: The installers and binaries are now digitally signed on Windows and Mac for added security, avoiding the security prompts when installing. (htoa#890)
- Uppercase tokens with AutoTX: The uppercase versions of the
<UDIM>
,<ATTR>
and<TILE>
texture filename tokens are now supported by AutoTX. (htoa#901) - Skip creation of the current working directory: The current working directory is now skipped when "Create Intermediate Directories" is enabled. (htoa#917)
- Fix "parameter not found" errors with volumes: These harmless error messages were output in the log when translating volumes, causing confusion. (htoa#903)
- Motion blurred oriented curves: Oriented curve with motion blur was not rendering properly because the orientations were not exported with a matching number of motion steps. (htoa#918)
Incompatible changes
- Indirect sample clamp: This feature is enabled by default (at 10) and in most scenes will have little impact besides reducing noise. For fully backwards compatible renders this parameter may be set to a very high value like 1e30. (core#5978)
- Exact Fresnel equation: Due to the change of the Fresnel term, there will be differences especially when the relative IOR is close to 1, for example, when light travels from water to ice. (core#5371)
- OSL texture color space: By default no automatic color space conversion is applied anymore in
texture()
calls. To revert to the previous behavior, use the optionalcolorspace
argument set toauto
:texture("filename.jpg", u, v, "colorspace", "auto")
. (core#6030) bounds_slack
renamed tovolume_padding
: In volume nodes (those backed by plugins, such as the built-in OpenVDB volume node) thebounds_slack
parameter has been renamed tovolume_padding
to be consistent with the other nodes. A synonym exists forbounds_slack
so it will continue to work, but will emit a warning when used to remind you to switch to the new parameter name. (core#6059)- OCIO config defaults: For well known OCIO configs Arnold will use a name-based heuristic to determine reasonable default color spaces and chromaticities. These new defaults will be reported in the log file. This applies to ACES, nuke-default, spi and filmic-blender configs. Previously
Rec. 709
chromaticities were always assumed. (core#6035)
See also the Arnold 5.0.1.0 release notes for the full list of core enhancements and fixes.