Milestone 4.0.7


  • Ray-traced BSSRDFs: A new alternative to point-cloud subsurface scattering has been added. This method is brute-force ray-tracing based, but produces visually identical results to the pointcloud technique. This approach removes a number of shortcomings of the pointcloud method, trading them for unbiased noise instead. The new method consumes zero extra memory, supports motion blur, supports interactive relighting, is fully multi-threaded, starts up immediately and does not degrade in performance as the scattering radius shrinks. The new method is enabled by the global option: sss_bssrdf_samples. This option defaults to 0 for backwards compatibility (uses pointclouds). When set to a value greater than 0, this number of lighting samples (direct and indirect) will be taken to estimate lighting within a radius of the point being shaded. On top of the direct/indirect irradiance rays, the algorithm uses short probe rays of type AI_RAY_DIFFUSE to find points near the one being shaded, so this can bias the ray statistics in the .log file a bit. (trac#2763)
  • Improved sampling at secondary bounces: The 2D sampling patterns generated by Arnold will now be stratified even for secondary bounces instead of reverting to fully random sampling as before. This can greatly reduce the amount of noise, particularly when rendering things that are seen through near-specular effects like glossy reflections or refractions. (#2371)
  • Improved sampling for SSS Point cloud: When baking diffuse lighting calculations into the SSS pointcloud, we now use MIS to reduce noise from large nearby area lights and the skydome. This may increase the number of rays slightly, but give higher quality sampling in those cases. (trac#2484)
  • New mesh_light: There is a new type of light available called mesh_light which takes a polymesh as a parameter and emits light using the polymesh's surface geometry. Note: The mesh light's matrix transform is being ignored for the time being and only the linked mesh's transformation will be taken into account. (#2864)
  • Improved smoothed normals: The quality of the smooth shading normals stored per-vertex in triangular tessellations has been improved by adjusting the weights used to average the triangle normals around a vertex. In addition to triangle area, the weights now factor the angle between the two triangle edges containing the shared vertex. This will be most evident for coarse meshes where the face normal and the smoothed vertex normals substantially differ. (#2923)
  • Mari UDIM texture tags: The built-in image node now recognizes Mari UDIM tags in texture filenames and substitutes in the proper values. A vanilla tag, e.g. <udim>, and customized dimensions, e.g. <udim:100> are recognized. Please note that these will disable texture handles and may impact performance; we hope to improve this in a future release. (#2670)
  • autobump shader call stats: The number of autobump shader calls is now properly reported in the log statistics. In previous versions, this could "hide" a large number of shader evaluations, since autobump computes the bump differentials by calling the displacement shader 4 times, which can quickly become the dominant source of shader evaluations during rendering. (#2899)
  • New ignore_dof global option: Analogously to ignore_motion_blur, there is now an ignore_dof option which lets you quickly deactivate depth of field effects in the cameras that support it. This is equivalent to setting the aperture_size to 0 in the camera. In addition, an -idofcommand-line argument has been added to kick for convenience. (#2947)
  • Find DSO procedurals with kick -nodes: In addition to listing the dynamically-loaded shaders, kick -nodes now lists any geometry-generation DSO/DLL's used in procedural nodes (aka standins) that are found in ".", ARNOLD_PLUGIN_PATH or any other searchpaths specified in thekick command-line via the -l <path> option. (#2942)
  • Improved stack traces: In the event of a crash, the stack trace (or "backtrace") is now reported in more detail, specially in debug builds for developers. Also, backtraces are now implemented in Windows for the first time. (#2827, #1739)

API additions


Incompatible changes


Bug fixes



#2930support for Windows XP was accidentally broken in Arnold weeks
#2627monochrome images with alpha not read correctlyoiioramonmajor3.37 months
#2860Free-floating mesh vertices crash subdivisionarnoldmikemajor3.32 months
#2904Improve numerical precision of subdivision limit normalsarnoldthiagomajor3.36 weeks
#2905Don't print escape sequences (colors) in logs if stdout is redirectedarnoldoscarmajor4.06 weeks
#2907Oriented curves with identical motion keys corrupts orientationsarnoldmikemajor3.36 weeks
#2908Crash with pixel-width optimization and constant radius specificationarnoldoscarmajor4.06 weeks
#2911Crash when EXR/TIFF output cannot be opened in 'append' modearnoldramonmajor3.35 weeks
#2912Race condition in latent deferred SSS sample code causes random crashesarnoldoscarmajor4.05 weeks
#2915.ass parser reports incorrect line numbers when a string contains EOL'sarnoldangelmajor3.35 weeks
#2916Arnold doesn't respond correctly to Ctrl+C events in windowsarnoldoscarmajor4.05 weeks
#2917quantization artifacts in smooth edge of spot_lightarnoldoscarmajor4.05 weeks
#2921AtNodeEntry counters are not always atomically changedarnoldmikemajor3.35 weeks
#2925maketx quantization errors when rescaling 8- and 16-bit imagesoiioramonmajor3.34 weeks
#2938ginstance attributes with default value are all exported to .assarnoldangelmajor3.33 weeks
#2941write out floats using all bits of precisionarnoldthiagomajor3.33 weeks
#2943fix warning when shader_searchpath points to a nonexisting patharnoldmarcosmajor3.32 weeks
#2948Nodes with a "@before" link are always exported to .ass file as ginstancearnoldangelmajor3.313 days
#2949bug when tessellating a single polygon with a simulated holearnoldoscarmajor4.013 days
#2952Fix run-time search paths hard-coded in "ai" and "kick"arnoldoscarmajor4.012 days
#2960incorrect user bounds warning when bounds are equal.arnoldthiagomajor3.312 days
#2961Crash with NaNs in displacement maparnoldoscarmajor4.011 days
#2964Missing ray type defines in Python APIarnoldangelmajor3.38 days
#2965Empty error message when accessing a non-existent EXR textureoiiooscarmajor4.07 days
#2702IOR set to 0 in the standard shader gives a fatal errorarnoldmarcosminor3.35 months
#2933improved reporting of light samples in the log filearnoldmarcosminor3.33 weeks
#2934Recover extended OS info (compatible with windows XP)arnoldoscarminor4.03 weeks
  • No labels