Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Milestone 4.0.14

  • Faster shading in many-light scenes: Quad, disk and spot lights now make much better use of the options.low_light_threshold control. In complex scenes with hundreds or thousands of sparse lights that don't all completely overlap, we have seen up to 2x speedups, depending on how aggressively the threshold was tuned. (#2696)

  • Improved sampling of rectangular quad lights: Quad area lights now have a solid_angle parameter that enables a new sampling algorithm that can drastically reduce the variance of samples taken from relatively large or relatively close lights. Currently this technique will not work with irregularly-shaped, non-rectangular quad lights, nor with texture-mapped quad lights, so the option is ignored in these cases, which we hope to fix in a future release. The new option is enabled by default, therefore scenes using big quad area lights should inmediately benefit from a reduction in the level of noise. (#889)

  • Motion vectors for points primitive: The points primitive can now report motion vectors and time-dependent positional information (supporting the AiShaderGlobalsGetPixelMotionVector() and AiShaderGlobalsGetPositionAtTime() shader utility API functions). Note that the positional information is based on the point centers; since they face the incoming rays, reliable positions cannot be obtained away from the point centers. Generally this should suffice, however. (#3352)

  • Interactive geometry creation and destruction: We now allow creation of nodes during an interactive render session, without the need to end the render session and re-create everything from scratch. Interactive destruction of nodes also works, for the simplest cases, but will cause a crash if the node was referenced somehow (from an instance, or when destroying a shader used by an object, etc). Also, procedurals are not destroying all their nodes recursively. These corner cases will be handled in a future release. Trying to destroy an object while rendering will be ignored. Creating a node is done with the usual AiNode() interface, and destroying a node is done via AiNodeDestroy(). (#3371)

API additions
Incompatible changes
  • Light beyond low_light_threshold is now occluded: Past the low_light_threshold we were assuming the light was unoccluded, which tended to reduce the shadow contrast in scenes with many lights and was somewhat counter-intuitive. We now mark it as occluded. This means that past the threshold the image will now be darker. This is more consistent and we have found that more accurate results were produced in all of the scenes that we have tested. (#3363)

  • Arnold lib path precedence for Python bindings: For users detaching the Arnold Python bindings from the regular installation folder structure, Python will try to load the Arnold library ( / ai.dll) from multiple locations in order. It will first search in the system library path, and if that doesn't work it then tries in the relative installation folder (which previously was the only search path). (#3116)

Bug fixes


#3025Fix metadata parsing issuesarnoldangelcritical4.08 months
#3348Procedural override does not work correctly when procedural cache is enabled.arnoldangelmajor4.04 weeks
#3356Propagated opaque attribute not found for shadow raysarnoldangelmajor4.04 weeks
#3359Updating matrices to an instanced polymesh in IPR causes a crasharnoldangelmajor4.03 weeks
#3362AiSSSTraceSingleScatter crash due to precision lossarnoldramonmajor4.03 weeks
#3363light beyond the low_light_threshold should be occludedarnoldthiagomajor4.03 weeks
#3365sidedness cannot be overridden in proceduralsarnoldangelmajor4.02 weeks
#3366disk light behavior undefined for shading points behind disk lightarnoldthiagomajor4.02 weeks
#3368MIS not being used if light samples are occludedarnoldthiagomajor4.011 days
#3378kick -set / .ass input bugkickoscarmajor4.08 days
#3382mouse commands in interactive kick mode do not work with keyboard modifiersarnoldthiagomajor4.07 days
#3396Fix shadow bias for rays coming from under a surfacearnoldramonmajor4.031 hours
#3349Missing support for escaped characters in metadata filesarnoldangelminor4.04 weeks