[Bf-committers] Blender 2.78b Performance Update release

Sergey Sharybin sergey at blender.org
Fri Jan 20 15:45:52 CET 2017

= Blender 2.78b Performance Update =

I would like to propose to make a 2.78b release which will mainly include
the performance improvements we did in the past months.

== Why do we need such a release? ==

Fair enough question is why do we make such a release. The answer here is
we've been working hard on getting various things optimized in Blender. Some
work was done in collaboration with other developers from various companies
studio and they will be more than happy to see this release. Will keep them
motivated to stay around as well!

Since the upcoming 2.79 release will take at least 2 months to release
since now
it's easier and faster just to cherry-pick all the performance commits from
master branch on top blender-2.78-release branch.

== Current status ==

I've already went ahead and cherry-picked performance improving commits
to Cycles and Dependency graph. If be more accurate, this ended up in
all the commits from master to the branch, since they are either a refactor
commit which were required for upcoming work or they are actual performance
update commits.

All the commits were pushed to blender-2.78b-release.

Here are the main changes (please note, the list is not really final and
that i
might be missing something. the list might also be extended with the commits
done after it was gathered).

=== Dependency graph ===

* Solve various race conditions (conflicts between threads which are
working on
  the same data).
* Optimization of dependency graph construction time.
* Fix missing or wrong relation links, which were causing hard-to-reproduce
  bone flickering.
* Fix various crashes related on linked data blocks.
* Fixes for missing animation updates.

=== Cycles ===

* Multithreaded shader compilation.
* Various optimizations for emission meshes.
* Corrected light sampling for Branched Path Tracing, should reduce noise.
* Improvements in constant folding algorithm.
* Improvements to some procedural textures (brick)
* Early light ray termination based on contribution of light to the result.
* Fix for background MIS with textures having small bright spots.
* Different seed for subframes and different stereo views.
* Distance culling for objects.
* Fix for undesirable threads affinity change on Windows.
* Avoid various numerical issues in the kernel, solving fireflies.
* Fixes for deformation motion blur combined with autosplit.
* Better reomained time estimation.
* Various optimizations for deformation motion blur.

==== Cycles: GPU ====
* Use XDG folder for cache on Linux and OSX, which avoids having per-Blender
  version folder with all the OpenCL/CUDA kernels built.
* Ability to enable/disable individual GPUs as opposite to old behavior with
  pre-defined combinations only. Not only this helps to some artists, but
  makes it possible to have flexible benchmark scripting.

==== Cycles: CPU ====

* Use more global SSE optimizations for SSE4.1+ kernels.
* Multiple improvements for the latest AVX2 CPUS:
** Optimized various math utilities for this micro-architecture.
** Faster version of triangle intersection function.
** Optimization of various steps in BVH traversal algorithm

==== Cycles: OpenCL ====

* Added 3D textures support for OpenCL
* Make it conditional to compile-in transparent shadows support.
  Depending on a scene and hardware gives really major render
  time improvements.

== Other Areas ==

Didn't look into other areas, but if one feels like adding some really
fixes or other performance improvement commits please let me know!

Or if you otherwise found something in the branch which should not be
in the final release please also let me know.

With best regards, Sergey Sharybin

More information about the Bf-committers mailing list