10 February 2026
HtoA 6.4.6.0 is a feature release using Arnold 7.4.5.0 that includes faster USD instancing, volume mip maps and speedups, a nearest points shader, point cloud OSL queries, bloom dispersion, a new render line shader, and much more.
Download Arnold for Houdini from your Autodesk Account. See Download Arnold for more information about downloading HtoA from your Autodesk Account.
Follow these installation instructions


|
|
|
| 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: These functions are not yet available on GPU. (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 values to a consistent unit, improving readability and comparability. 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, 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 into 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 maybe 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
that 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, and 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)
Mip-mapped volume generation: The Arnold API and kick can now generate mip-mapped volumes . The Arnold API includes a new 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. (ARNOLD-17114)
Required NVIDIA driver version must be newer than 582.16/580.126: GPU rendering and OptiX denoising do not work with driver versions 582.16/580.126 (windows/linux) 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: The color_jitter shader was mistakenly installed as an RGBA type instead of the correct RGB type, which caused unnecessary complexity when linking it to other shaders in DCC tools. (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.
Houdini, Houdini FX, Houdini Indie and Houdini Education
Linux with at least glibc 2.17 and libstdc++ 11.2.1 (gcc 11.2.1) for Houdini 20/20.5. This is equivalent to Rocky 8.
macOS 11 or later
Apple Mac models with M series chips are natively supported by HtoA
x86-64 CPUs need to support the SSE4.1 instruction set. Apple Mac models with M series chip are supported natively mode.
GPU rendering works on Windows and Linux only and requires an NVIDIA GPU with the Maxwell architecture or later.
Optix™ denoiser requires an NVidia GPU with CUDA™ Compute Capability 5.0 and above.
Intel OIDN GPU support is limited to: