Released
Enhancements
- Round corners shader: This shader modifies the shading normals near edges to give the appearance of a round corner. The simpler way to use this shader is to connect its output normal to standard_surface.normal or standard_surface.coat_normal. (#7517)
- Normal map blending: A new normal_map blending mode was added to the layer_rgba shader. This makes it easier to create fine details and is more efficient than connecting multiple bump or normal mapping nodes. (#7523)
- Faster adaptive subdivision: Faster adaptive subdivision due to more efficient computation of irregular patches: 2x speedup in some cases. (#7344, #7444, #7488)
- Faster operator evaluation: Operator evaluation is now up to 20x faster on large scenes thanks to expression caching and graph pre-processing. (#7001, #7508)
- JSON log file additions: The JSON stats file has more info, such as the hardware used. (#7196)
- LPE image metadata: Output image metadata now includes the full light path expression for each layer. (#7499)
- Alembic archives: The Alembic procedural will reuse alembic file handles, keeping up to 8 file handles open for better cache handling in parallel node initialisation. (#7071)
API additions
- JSON stats version: The JSON stats file now has a "JSON log version" field that will be incremented each time a breaking change is made to the JSON stats format. (#7530)
Incompatible changes
- JSON stats change: The JSON stats format has changed in order to resolve some ambiguities with nested fields. (#7074, #7530)
- Range shader gain: The gain parameter on therange shader is now inverted for consistency with the AiGain() API function. (#7477)
Bug fixes
- #7443 MaterialX generated shaders are scoped under their node graph name
- #7446 alembic crash with make_instance enabled and changing frames
- #7478 Alembic with make_instance and parallel node init enabled causes disappearing geometry
- #7579 Alembic transform incorrect with motion blur.
- #6221 Export full path instead of node name when writing to .ass while expanding procedurals
- #6727 Recover from failed optix launches
- #7074 nested timing stats are ambiguous in json output
- #7388 metadata lexer should ignore more than three # in a row
- #7413 alembic files with single entry array attributes should be considered not arrays
- #7415 Noice: issues with certain crop windows combinations
- #7416 Noice: incorrect handling of variance AOVs in a separate file
- #7417 Noice: support additional channel suffixes and warn if the suffix is unsupported
- #7418 Noice: skip denoising AOVs with no associated variance
- #7419 make flatness check for quad_light more robust
- #7422 transform motion in procedural that only contains lights can give invalid lights
- #7431 Volumes: register new AOV volume_Z
- #7432 Volume AOVs: shadow rays interfere with new Z and ID AOVs
- #7445 Cell noise time not evaluated when linked
- #7456 Thread safety of alembic procedural tokenize function
- #7461 adaptive camera samples higher than expected
- #7466 MaterialX: Supported parameter arrays are not processed by operator and node definition generation
- #7467 Render callback does not support an "empty" callback
- #7470 d'Eon BCSDF must be evaluated when `base_color` is small
- #7472 Shadow group is not inherited in ginstance
- #7474 curves memory report missing some entries
- #7475 Alembic object transform fix
- #7477 Gain function in range shader is inverted
- #7480 Texture baking: small triangles can cause artifacts
- #7492 Add sheen AOV labels
- #7493 Slow expansion of multiple alembic procedurals
- #7495 Kick -laovs should not grab a license
- #7497 Noice: when looking for feature AOVs prioritize AOVs with the correct filter
- #7501 Alembic procedural expansion with make_instance on using an object_transform parameter
- #7505 Autobump (and bump) disappear for some pixels
- #7507 Alembic Crash with arbGeoParam array property
- #7516 user parameters not properly propagated or read from parent procedural
- #7520 Remove the OptiX dependency on mac
- #7524 The first parameter of OSL nodes is not initialized to the default value
- #7539 Alembic transform/deformation motion blur mismatch
- #7567 Alembic geometry has incorrect transform with make_instance enabled
- #7573 Shaders should check that samples are always strictly positive
- #7442 Copy id to child alembic nodes
- #7548 Unexpected missing parameter warning on custom procedural instances