10 February 2026
Arnold 7.4.5.0 is a feature release that includes a new render line shader, volume mip maps, a nearest points shader, point cloud OSL queries, bloom dispersion, and much more.
|
|
|
| Line → UV Transform (screen space) | Line → UV Transform (screen space) | Line → Triplanar |
The new line shader renders lines in various styles to create geometric patterns or brush-stroke-like textures when combined with noise and textures. You can generate complex hierarchical patterns by connecting line shaders together. We recommend using the line shader with uv_transform. (ARNOLD-14976)
|
|
|
|
Support for mip-mapped OpenVDB files on CPU: The volume node now accepts OpenVDB files with mip-mapped grids. You can generate volume mip maps with the Arnold API or with kick (see API Changes below). The different mip-map levels are distinguished by _level_N suffixes, where N is the mip-map level. Arnold then automatically chooses the appropriate mip-map level during rendering, which gives substantial speedups in volumes with a lot of scattering (for example, clouds) in exchange for mostly small differences in look. Volumes with more mip-map levels can have larger differences in look. Users can also specify mipmap_bias on a volume node or on its instance (by declaring user data of the same name), which adjusts the automatic mipmap selection by that amount. (ARNOLD-14453, ARNOLD-15056)
| wdascloud | byc-cloud | composition 1 | composition 2 | sunset clouds | |
|---|---|---|---|---|---|
| original volume | ![]() |
![]() |
![]() |
![]() |
![]() |
| mip-mapped volume (3 levels) | ![]() |
![]() |
![]() |
![]() |
![]() |
| Speedup | 1.5x | 1.9x | 2.6x | 2.1x | 1.8x |
| mip-mapped volume (6 levels) | ![]() |
![]() |
![]() |
![]() |
![]() |
| Speedup | 2.0x | 2.8x | 5.2x | 3.2x | 2.7x |
Improved GPU volume rendering performance: GPU rendering of volumes is up to 3.5x faster. (ARNOLD-8936)
| wdascloud | byc-cloud | composition 1 | composition 2 | sunset clouds | |
|---|---|---|---|---|---|
|
|
|
|
|
|
| Speedup | 2x | 1.12x | 3.7x | 3.5x | 1.31x |
Nearest points shader: The new nearest_points shader samples point clouds from OpenVDB points files, or alternatively, the vertices from points, curves, and polymesh nodes. The shader can output the number of points found, average distance, or an average of a custom user-data attribute from the points. (ARNOLD-15550)
|
|
| Nearest Points distance → RampRGB (custom) | Nearest Points distance → Line → Standard Volume transparent |
pointcloud_search and pointcloud_get OSL built-in functions. To specify a points, curves, or polymesh node, use the node name for the point cloud name. To specify an OpenVDB file, use the format filename:grid for the point cloud name. Note: Currently, these functions miscompile on GPU, so they are supported for CPU rendering only for now. (ARNOLD-15550)aperture_dispersion parameter, which controls the amount of color
dispersion when in bloom_mode aperture. Increasing the dispersion
value spreads the warmer colors further apart, decreasing it makes the colors progressively cooler. A value of 1 gives realistic dispersion. (ARNOLD-16912)
|
|
|
|
|
| -4 | -1 | 0 | 1 | 4 |
space parameter with
texture (default) and screen options. The texture
mode applies transforms to standard texture UVs as before, while the screen
mode uses screen UV coordinates. (ARNOLD-14976)
|
|
| Texture (default) | Screen |
Cryptomatte option for instances: A new parameter object_split_instances was added to the cryptomatte shader. It determines whether different instances should have different masks or the same one. (ARNOLD-16997)
Instancer node instances visible in viewport: Instances created by the instancer node can now be displayed in the viewport, making it easier to visualize and work with instanced geometry during scene setup and interactive rendering. (ARNOLD-16778)
Faster handling of interrupted mesh pre-processing: Interrupting mesh pre-processing during IPR (by for instance moving the camera while the scene is loading) no longer causes slowdowns and wasted work. Speedups are expected to increase with core count and mesh size. We have observed savings measured in minutes. (ARNOLD-16978)
Options node included in JSON statistics: The options node parameters are now written to the JSON statistics file, making it easier to understand what render settings were used when you analyze performance data. (ARNOLD-8558)
Consistent unit rounding in Render Report: The Arnold Render Report now rounds all values to the same unit for consistency, making it easier to read and compare statistics. Previously, different statistics could be displayed in mixed units (for example, sometimes in milliseconds and others in seconds), which made comparisons difficult. (ARNOLD-17036)
render_output node replaces the old string-based
output statements. The global Arnold options node
has a new drivers parameter that links to the driver
nodes, and each driver node has a list of
render_output nodes. (ARNOLD-5774)
The render_output node has the following structure:
Type Name Unlinkable Default Bounds
------- ------------------- ------- ------
Inputs
STRING aov_name RGBA
ENUM type rgba
NODE filter null
STRING layer_name
BOOL half_precision false
NODE camera null
STRING name
For example, an options node like this:
options
{
outputs 2 1 STRING
"RGBA RGBA my_filter driver_output"
"diffuse RGBA my_filter driver_output"
}
driver_exr
{
name driver_output
filename "render.exr"
}
would become:
options
{
drivers 1 1 NODE
"driver_output"
}
driver_exr
{
name driver_output
render_outputs 2 1 NODE
"my_RGBA_output" "my_diffuse_output"
filename "render.exr"
}
render_output
{
name my_RGBA_output
aov_name "RGBA"
type "rgba"
filter "my_filter"
}
render_output
{
name my_diffuse_output
aov_name "diffuse"
type "rgba"
filter "my_filter"
}
AiSceneWrite and
AiSceneLoad for .ass files by default do not export
with these nodes. To do so, add the boolean
convert_string_outputs set to true in the
AtParamValueMap for the params flag.
Update CER: The Customer Error Reporting (CER) library is updated to v7.2.4. (ARNOLD-16796)
OpenColorIO 2.5: Arnold now includes OpenColorIO 2.5.0. The upgrade brings support for built-in ACES 2 configs and many other improvements and fixes. See the full release notes for more details. (ARNOLD-17107)
Lightweight instancing: Arnold now renders USD instances through a lightweight instancing system that creates fewer Arnold nodes. Instancing is now more memory efficient and time to first pixel is faster, because the scene is quicker to initialize. For example, in the Intel Jungle Ruins scene, the time to first pixel in Houdini Solaris is 85% faster, and the memory usage is 42% lower. usd#2459
USDLux standardization: The Arnold options node has a new usdlux_version parameter that enables USDLux compatibility. Setting usdlux_version to 25.05 activates the current Arnold implementation of the USDLux standard for USD lights. This early development preview includes support for IES orientation and brightness normalization.
Asset resolver: The Autodesk asset resolver is now integrated in the USD procedural. You can now render USD files containing asset- resolving directives, such as tokens and path replacements, using a mapping file and the environment variables described in the Maya documentation
Volume fieldIndex: Rendering vdb volumes now supports the fieldIndex attribute of the OpenVDBAsset primitive. You can now render a specific grid instead of all grids with a given name. usd#2394
AiVolumeFileMakeLODs function. kick has a new -makevolumelods command-line flag. Both the API and the kick flag take three arguments: the input file, the output file, and the maximum number of levels to generate. The actual number of levels generated may be lower than the number requested. (ARNOLD-17114)AiUniverseGetAssetIterator), scene file
(AiSceneGetAssetIterator), or procedural
(AiProceduralGetAssetIterator). (ARNOLD-16891)
For example, querying assets of scene.ass:
AtAssetIterator* it = AiSceneGetAssetIterator("scene.ass");
while (!AiAssetIteratorFinished(it))
{
const AtAsset* asset = AiAssetIteratorGetNext(it);
// do something with the asset
}
AiAssetIteratorDestroy(it);
scene_get_assets method
in their scene format plugin to return file dependencies (assets) specific to
their scene format. This method is optional, and if it is not implemented,
Arnold loads the scene and queries assets from the generated Arnold universe.
(ARNOLD-16891)
For example, this code returns 2 assets:
scene_get_assets
{
AtAsset* asset1 = AiAsset("/path/to/mytexture.exr", AtFileType::Asset);
AiAssetAddReference(asset1, "mytexture.exr");
AtAsset* asset2 = AiAsset("/path/to/myvolume.vdb", AtFileType::Asset);
AiAssetAddReference(asset2, "myvolume.vdb");
AtArray* assets = AiArrayAllocate(2, 1, AI_TYPE_POINTER);
AiArraySetPtr(assets, 0, asset1);
AiArraySetPtr(assets, 1, asset2);
return assets;
}
File type metadata: A new file_type metadata can be defined on file path parameters to tell how the path needs to be resolved. If not defined, the file type is guessed from the supported extensions of the parameter (extensions metadata) or the extension of the specified file, if any. Available values are custom, asset, texture, procedural, osl, plugin (see AtFileType enum). (ARNOLD-17289)
Point cloud API: New API functions allow C++ shaders to perform point cloud queries that are very similar to the OSL specification for its pointcloud_search and pointcloud_get functions. The typical usage pattern is to call AiPointCloudSearch to get a list of indices and a count of nearest points, and then call the AiPointCloudGet family of functions to query particular attributes from those points. To specify a points, curves, or polymesh node, use the node name for the point cloud name. To specify an OpenVDB file, use the format filename:grid for the point cloud name. (ARNOLD-15550)
Required NVIDIA driver version must be newer than 582.16: GPU rendering and Optix denoising do not work correctly with driver versions 582.16 and older, and will log an error and abort the render. Note that you can use New Feature Branch drivers. (ARNOLD-17405)
color_jitter shader now correctly installed as RGB type: color_jitter shader was mistakenly installed as an RGBA type instead of the correct RGB type, which caused unnecessary extra mouse operations when connecting to other nodes in DCC tools such as Maya Hypershade. (ARNOLD-17095)
For example, density_channel density works with these volume.grids:
A standard_volume channel with an index, like density_channel density[1], returns all zeroes. If you need different shaders on different grids, you can have different volume nodes for each grid index, and one standard_volume applied to each volume.