5.0.2 - Driving Arnold Forward
With the 5.0.2 update to the Arnold core, we are moving quickly to build on the changes we ushered in with Arnold 5.0. While a small release number, 5.0.2 contains 160 development tickets and is packed with optimizations, bug fixes, new features and functionality that will help our customers get even better results faster than ever.
Some of the highlights are: new path-traced, random walk SSS engine that provides more accurate results in concavities and thin geometry, frustum-based tessellation, new car paint shader, revamped and optimized triplanar, flakes and shadow matte shaders, improved UDIM accuracy, AOV/alpha transmission, improved volume sampling of low-spread area lights, big memory savings in procedural namespaces, new maketx binary with optimizations and improved color space support.
New "Random Walk" Sub-Surface Scattering
A new, more accurate way of calculating SSS has been added. Unlike the current empirical BSSRDF method based on diffusion theory, this new method actually traces below the surface with a real random walk and makes no assumptions about the geometry being locally flat. This means it can take into account anisotropic scattering like brute-force volume rendering and produces much better results around concavities and small details. It can also be substantially faster for large scattering radius (i.e. large mean free path) compared to the old method. On the other hand, the new method can be slower in dense media (i.e. small mfp), does not support sss_setname for blending two surfaces together, may require redialing materials to achieve a similar look, and is more sensitive to non-closed meshes, "mouth bags", eyeballs, and internal geometry potentially casting shadows. This new algorithm is exposed in the standard_surface shader via the new parameters subsurface_type (with enum values "diffusion" and "randomwalk") and subsurface_anisotropy (Henyey-Greenstein's eccentricity parameter 'g' from -1.0 to +1.0). The default is to use the old empirical diffusion method in order not to break the look of existing scenes.
Car Paint Shader
With v5.0.2, we are now including a dedicated car paint shader, which can be thought of as the combination of a simplified version of the standard_surface and flakes shaders. This shader can create a wide range of car paint looks without having to connect several nodes. For example, a pearlescent effect can be easily added to both the specular and flakes layers by simply tweaking a few parameters such as specular_flip_flop and flake_flip_flop. An arbitrary number of layers of flakes can be used. The flakes at a deep layer are covered by the ones closest to the surface and more tinted by pigments, specified by the transmission_color parameter.
Revamped Shadow Matte Shader
Based on user feedback, we have added many improvements and fixes to the shadow_matte shader. We really appreciate all the input as it helps us continue to make Arnold better with every release. With the updated shadow_matte shader self-reflections are no longer rendered, and image planes are seen by secondary bounces in the shadow matte. We updated the AOV behavior so that indirect illumination now fills the built-in AOVs (diffuse_indirect, specular_indirect), instead of using two confusingly named AOVs that were defined by this shader. We have also removed a number of unnecessary parameters.
Subdivision Frustum Culling
Subdivision patches outside the view or dicing camera frustum will not be subdivided. This is useful for any extended surface that is only partially visible as only the directly visible part will be subdivided, potentially saving tons of memory and subdivision time in complex scenes. Similarly, no subdivision work will happen if a mesh is not directly visible. This can be turned on globally by enabling the new parameter Subdiv Frustum Culling, and can be turned off for specific meshes with Subdiv Frustum Ignore (perhaps to avoid artifacts in hard cast shadows, reflections, etc). The global option Subdiv Frustum Padding adds a world space padding to the frustum that can be increased as needed to minimize artifacts from objects that straddle the frustum boundaries.
Flakes Shader Updates
In addition to the new Car Paint shader, we have also updated the flakes procedural texture shader to provide more control. In particular, it is now possible to render 3D flakes that exist inside the volume of the object. It is also easier to control the amount of size of flakes.