blender/intern
Kévin Dietrich bbe6d44928 Cycles: optimize device updates
This optimizes device updates (during user edits or frame changes in
the viewport) by avoiding unnecessary computations. To achieve this,
we use a combination of the sockets' update flags as well as some new
flags passed to the various managers when tagging for an update to tell
exactly what the tagging is for (e.g. shader was modified, object was
removed, etc.).

Besides avoiding recomputations, we also avoid resending to the devices
unmodified data arrays, thus reducing bandwidth usage. For OptiX and
Embree, BVH packing was also multithreaded.

The performance improvements may vary depending on the used device (CPU
or GPU), and the content of the scene. Simple scenes (e.g. with no adaptive
subdivision or volumes) rendered using OptiX will benefit from this work
the most.

On average, for a variety of animated scenes, this gives a 3x speedup.

Reviewed By: #cycles, brecht

Maniphest Tasks: T79174

Differential Revision: https://developer.blender.org/D9555
2021-01-22 16:08:25 +01:00
..
atomic Atomics: Add 16 bit fetch + AND and fetch + OR signed integer operations 2020-12-04 18:28:46 +01:00
audaspace Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
clog CLOG: Add getter to know if output supports coloring 2020-10-24 14:07:05 -04:00
cycles Cycles: optimize device updates 2021-01-22 16:08:25 +01:00
dualcon Spelling: Then Versus Than 2020-10-19 08:43:08 -07:00
eigen Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
ffmpeg Tests: bundle tests for some modules in their own executables 2020-09-17 12:29:19 +02:00
ghost Fix T84645 cursor moves when clicking selector. 2021-01-15 12:18:13 -08:00
glew-mx Cleanup: GPUState: Remove stack from the state manager and rename it 2020-08-18 21:30:10 +02:00
guardedalloc Cleanup: remove extra in trailing asterisk 2021-01-20 16:14:00 +11:00
iksolver Spelling: It's Versus Its 2020-10-19 08:12:33 -07:00
itasc Spelling: Miscellaneous 2020-10-19 09:11:00 -07:00
libc_compat Build: add more libc compatibility functions for upcoming libraries update 2020-07-09 18:10:05 +02:00
libmv Libmv: Tweak default logging verbosity level 2020-12-01 14:55:22 +01:00
locale Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
mantaflow Fix T83777: Crash when enabling guides 2021-01-10 19:16:44 +01:00
memutil Cleanup: use C style doxygen comments 2020-09-12 16:33:34 +10:00
mikktspace Spelling: It's Versus Its 2020-10-19 08:12:33 -07:00
numaapi Cleanup: use angle-brackets for email addresses 2020-09-30 12:05:56 +10:00
opencolorio Spelling: It's Versus Its 2020-10-19 08:12:33 -07:00
opensubdiv Spelling: It's Versus Its 2020-10-19 08:12:33 -07:00
openvdb Cleanup: remove dead code in point cache and openvdb wrapper 2020-09-23 14:57:41 +02:00
quadriflow Quadriflow: Fix compilation error with C++17 2020-06-19 12:02:21 +02:00
rigidbody Fix missing "extern_bullet" library when building rigidbodies 2020-09-02 19:44:29 +02:00
sky Cleanup: Clang-tidy, readability-non-const-parameter. 2020-11-07 21:52:53 +05:30
utfconv Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
CMakeLists.txt Atomic: Cover with unit tests 2020-11-19 17:19:48 +01:00