#6511 UDIMs: incorrect character substitutions
#6481 crash during accel construction with invalid or invisible geometry
#6500 error building BVH over procedurals with no visible objects
#6516 Properly warn when there are more than 15 per-light AOVs#6527maketx and AiMakeTx are extremely slow or crash with certain large images
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", 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 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. 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 (flake_layers
). The flakes at a deep layer are covered by the ones closer to the surface and more tinted by pigments (specified by the transmission_color parameter
). options.subdiv_frustum_culling true
and can be turned off for specific meshes with polymesh.subdiv_frustum_ignore true
. The global options.subdiv_frustum_padding
adds a world space padding to the frustum that can be increased as needed to minimize artifacts from out-of-view objects in cast shadows, reflections, etc. Note that motion blur is not yet taken into account and moving objects might require some additional padding.kick
has been made substantially more responsive. AiNodeDestroy
: we have optimized removal time for nodes contained in procedurals, greatly reducing the shutdown time at the end of a render in complex scenes. triplanar
shader: Texture filtering in the triplanar
shader has been improved, giving better antialiasing and up to a 2x speedup, specially when using high-resolution texture maps. triplanar
shader: The triplanar
shader now supports projection through Voronoi cells using the new cell
parameter. The rotation angle of the projected texture for each cell can be controlled with the cell_rotate
parameter. Cells can be smoothly blended using the cell_blend
parameter. flakes
shader: The size
parameter is replaced by the density
parameter, which makes it easy to control the size and number of flakes. Alpha channel can be used as a mask. The new flakes
shader supports non-disc shapes and 3D flakes, which are useful to render gemstone inclusions like goldstone, for example. shadow_matte
shader: We have revamped and simplified the shader to make it easier to use, and fixed a number of long-standing issues: Indirect illumination now fills the global diffuse_indirect
and specular_indirect
AOVs, so we have removed the shader’s (confusingly named) indirect_diffuse
and indirect_specular
AOVs. Self-reflections are no longer rendered. A new specular_IOR
parameter was added that controls Fresnel reflection. Parameters offscreen_color
and background_type
were removed. The new enum parameter background
can be set to either scene_background
(default) or background_color
, which allows to connect a specific texture in the background_color
parameter slot. Parameter alpha_mask
was added to control whether the alpha must be opaque or if it has to contain the shadow mask. getattribute()
lookups of standard camera attributes (e.g. camera:fov
, camera:resolution
, etc) as well as the geometry attributes geom:type
, geom:name
, geom:bounds
, and geom:objbounds
on objects. standard_surface
shader with transmission can now pass through AOVs, by enabling the transmit_aovs
parameter. If the background is transparent, then the transmissive surface will become transparent so that it can be composited over another background. Light path expression AOVs will be passed through, so that for example a diffuse surface seen through a transmissive surface will end up in the diffuse
AOV. Other AOVs can also be passed straight through (without any opacity blending), which can be used for creating masks for example. random
bucket_scanning
ordering. namespace
parameter. This custom namespace can be used instead of the procedural name, to reference contents through absolute or relative paths. Multiple procedurals can share the same namespace by using the same custom name. Also, they can declare an empty name and they will use the global namespace. (#6085)-turn_smooth
option to kick
: When using kick -turn
, the -turn_smooth
flag can be added to smoothly start and stop the movement as the original position is reached with a cubic ramp. -laovs
option to kick
: Using kick -laovs file.ass
will display a list of all the built-in AOVs and all the AOVs registered by this .ass file. kick
: When using kick
you can now toggle between viewing kicks default output and a cputime heatmap with the T
key. The mapping of the heat map can be scaled with the [
and ]
keys.kick -ipr m
: Running kick
in Maya-style IPR mode with -ipr m
now supports "wasd" style keyboard movement. This was previously only available in Quake-style mode, -ipr q
. maketx
version info: The custom maketx
binary that ships with Arnold now reports, both in the command-line and in the embedded EXR headers, that it was built specifically for "OpenImageIO-Arnold", to distinguish it from the official "OpenImageIO" one. maketx
color spaces: The custom maketx
that ships with Arnold now supports OCIO and SynColor (when available) through the colorengine
, colorconfig
and colorconvert
flags. See maketx --help
. AiMakeTx
reports info messages: AiMakeTx
now also prints out OIIO informational messages (generated in verbose mode, for instance) in addition to errors. AiMakeTx
releases input file lock sooner: AiMakeTx
will now close the input texture as soon as possible instead of waiting for all the maketx jobs to finish. AiMakeTx
and maketx
optimized flags: Both AiMakeTx
and maketx
now always run with the flags --monochrome-detect --opaque-detect --constant-color-detect --fixnan box3 --oiio
, which can result in smaller .tx files that are faster to load and take less memory. .ass.gz
files through the AiMetadataStoreLoadFromASS()
API function. AiColorManagerGetNumFamilies
and AiColorManagerGetFamilyNameByIndex
. The addition of these new API methods requires any existing custom color managers (which we know are very rare) to be recompiled. AiAOVSampleIteratorGetPixel()
: Custom filters can now determine what pixel is being filtered with the new API method AiAOVSampleIteratorGetPixel()
. transparent
LPE label: When setting the transparent
LPE label on a BSDF, the surface will act as if it is transparent and pass through AOVs. This would typically be used for transmission BSDFs, as it is in the standard_surface
shader. AI_ENABLE_DEPRECATION_WARNINGS
will cause the compiler to emit warnings if deprecated Arnold API functions are used. AiClosureRandomWalkBSSRDF()
. The corresponding OSL closure is randomwalk_bssrdf
. autotile
disabled by default: We found that the autotile
code in OIIO does not scale with high-resolution textures. In order to avoid very slow loading of untiled textures (such as JPEG) when autotile was enabled, we have now changed the autotile
default setting to 0, which effectively disables it. In very rare cases, when rendering with a large number of high-resolution untiled textures, this change might degrade performance as the texture cache will blow up. The real solution is to never use untiled files, and instead convert all untiled textures to .tx tiled files. maketx
dependencies: The custom maketx
that ships with Arnold now depends dynamically on libai.so
and optionally on syncolor_shader.so
, therefore to work correctly it needs to be run from its installation folder, like kick
, or alternatively the new dependencies should be copied to where maketx
is running from. flakes
shader: It was not easy to control the number of flakes with the size
and scale
parameters because they were mutually dependent. Now this can be easily done using the new density
parameter. The shape of each flake has been changed from disc to Voronoi cell, which is more suitable to render inclusions of gem stones. The shader output type has been changed from RGB to RGBA to support a mask. motionvector
AOV: The motion vector scaling factor in the built-in motionvector
AOV has changed. This was required to fix a bug that caused zero motion vectors for certain shutter positions. The output from the motion_vector
shader is unchanged: it can be used as a workaround in your old scenes if you require the previous scaling. shadow_matte
changes: The shader AOVs indirect_diffuse
and indirect_specular
were removed, since the shader now fills the corresponding built-in AOVs. Parameters offscreen_color
and background_type
were removed. Specular reflection is now affected by Fresnel. To roll back to the previous specular behaviour, set specular_IOR
to a high value like 100, which effectively disables the Fresnel effect. See notes in the enhancements section above.