HtoA 1.10.0

11 January 2016

Many core enhancements: Improved Russian roulette, Empirical SSS, GGX, per-light AOVs for volumes and more.

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

This release uses Arnold and OpenVDB 3.0.0.

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

  • 15.0.347
  • 15.0.313

and for the following platforms:

  • Linux x86_64 (gcc4.4 for H14, gcc4.8 for H15)
  • Windows 7 x64 (vc11)
  • Mac OS X 10.8+

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

  • Memory savings for vertex normals: The storage of polymesh vertex normals has been optimized, reducing memory use by 50% in typical production scenes. (core#4987, core#4992)
  • Improved Russian Roulette: The standard shader now uses more aggressive Russian roulette termination. This reduces render time but increases noise, so to get renders with similar noise levels as before either AA_samples or GI_diffuse_samples, GI_glossy_samples and GI_refraction_samples can be increased. For interior scenes with high GI depth, this is a big win and we have found 2x to 3x faster renders for similar noise levels. (core#2445, core#4944, core#4945)
  • Empirical SSS profile: A more physically accurate subsurface scattering profile is now available. With a single layer, it can capture both surface detail and deep scattering. In the Standard shader it can be used by setting the new parameter SSS Profile to empirical. A new AiBSSRDFEmpirical API function has been made available to shader writers. (core#4229, htoa#735)
  • GGX Microfacet: A new Specular Distribution parameter was added to the Standard shader, with options to use the existing Beckmann distribution, and a new GGX distribution. The GGX distribution has a sharp highlight with a long soft tail, which better matches many real world materials. Using GGX also enables more accurate per-microfacet Fresnel. New microfacet BSDF functions are available in the shader API. (core#4950, htoa#735)

  • Per-light AOVs for volumetrics: This feature allows modifications to the intensity and color of different lights in compositing, without having to re-render. The new AOV Light Group string parameter on lights writes out the light contribution to a separate AOV with a corresponding name. For example, all lights with the AOV light group "fill" will contribute to the RGBA_fill and volume_fill AOVs, which then contain a subset of the light from the RGBA and volume AOVs respectively. Emission from other sources and lights that have not been assigned an aov name will contribute to the RGBA_default and volume_default AOVs. All light AOVs can be output to a single EXR driver using output syntax like RGBA_*. For the time being, light AOVs are only supported for volumes, and lighting from surfaces and the atmosphere will end up in the default light AOV. A maximum of 8 different light AOVs are supported, although a given AOV can contain a bundle of any number of lights. (core#4935, core#4971, htoa#735)
  • <tile> and <attr> tags in image shader: The built-in image shader node now supports the <tile> tag, and will do Mudbox-style tag replacement of the tag with _uC_vR where C and R are the column and row of the tile, respectively. The attribute tag is also supported in the form <attr:name index:name default:value>. The tag will look for the named user data (as a string). The index and default tokens are optional; if the index is used, the UINT user data is found first, and the main attribute then must be an array of strings it indexes into. Among other techniques, this allows e.g. facesets, where you can list the faceset names once each in a constant array, and then have a uniform UINT assigned to each face specifying which faceset the face is a member of. Finally, the default, if present, is substituted if the user data cannot be found for any reason. (core#4787, htoa#735)
  • Multiple tags in image shader: The image shader node now also supports replacing up to five dynamic tags. Combinations of multiple attribute, tile or UDIM tags are allowed. It generally makes sense to only have one tile or UDIM tag, but if there are multiple tile/UDIM tags the last one generates the final UV coordinates into the texture. (core#4270)
  • Faster light samplers: Light sampling code has been reorganized internally for increased consistency and cleanliness, resulting in slight performance improvements to light sample generation. Certain types of lights and lighting setups, such as static IES/photometric lights, large-area rim lights, or skydome lights with a constant color, may see even greater gains; we have seen up to 15% faster render times. (core#2663, core#4965, core#4967, core#4972, core#4988)
  • Adaptive subdiv for non-linear cameras: Adaptive subdivision is now supported for all built-in cameras, even non-perspective ones (cylindrical, spherical, etc). Adaptive subdiv is not yet supported for non-perspective custom cameras, but a reasonable workaround is to use subdiv_dicing_camera with the built-in camera that better matches the custom camera. (core#4528)
  • Vector/point to point2 parameter conversion: Shaders with AI_TYPE_VECTOR or AI_TYPE_POINT output types will now convert by dropping their Z component when linked to AI_TYPE_POINT2 parameters instead of doing nothing. (core#5001)
  • Negative thread counts: Negative numbers in options.threads are now allowed. If specifying 0 threads means use all cores on a machine, then negative numbers can mean use all but that many cores. For example, threads=-2 means use all but 2 cores, while threads=2 means only use 2 cores. This is useful when you want to leave one or two cores for other tasks. (core#5012, htoa#735)
  • Render bounds in EXR metadata: Non-zero image extents are now available in EXR metadata in all configurations (deep/flat, tiled/scanline). The smaller processing area will speed up 2D compositing operations accordingly. These bounds can be queried in Nuke to set up a Crop or DeepCrop node using the expressions below. (core#4979)

  • Focus distance is hard-coded to focus parameter instead of ar_focus_distance parameter (htoa#737)
  • Type error when rendering deepexr AOVs to separate file (htoa#738)
  • Exception when embedding an Arnold ROP in an HDA (htoa#739)
  • Support pivot mode for Arnold Procedural and Volume OBJs (htoa#740)
Incompatible changes
  • Point lights with radius > 0 now single-sided: To make their behavior more consistent with Arnold's other area lights, point lights with non-zero radius (i.e. spherical lights) are now single-sided and will no longer illuminate their interior. (core#4964)

  • Shadow terminator fix: The technique used to mitigate shadow terminator artifacts in low-poly objects has been improved when dealing with concave, transparent or translucent surfaces. The obscure render option shadow_terminator_fix has been removed, since it no longer makes a difference in those cases. (core#2781, core#4981, core#5010, htoa#735)

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

  • No labels