blender/intern
Sergey Sharybin c5d7ea091f Changes to partial update during rendering
Summary:
Mainly addressed to solve old TODO with color managed fallback
to CPU mode when displaying render result during rendering.

That fallback was caused by the fact that partial image update
was always acquiring image buffer for composite output and was
only modifying display buffer directly.

This was a big issue for Cycles rendering which renders layers
one by one and wanted to display progress of each individual
layer. This lead to situations when display buffer was based on
what Cycles passes via RenderResult and didn't take layer/pass
from image editor header into account.

Now made it so image buffer which partial update is operating
with always corresponds to what is set in image editor header.

To make Cycles displaying progress of all the layers one by one
made it so image_rect_update switches image editor user to
newly rendering render layer. It happens only once when render
engine starts rendering next render layer, so should not be
annoying for navigation during rendering.

Additional change to render engines was done to make it so
they're able to merge composite output to final result
without marking tile as done. This is done via do_merge_result
argument to end_result() callback. This argument is optional
so should not break script compatibility.

Additional changes:

- Partial display update for Blender Internal now happens from
  the same thread as tile rendering. This makes it so display
  conversion (which could be pretty heavy actually) is done in
  separate threads. Also gives better UI feedback when rendering
  easy scene with small tiles.

- Avoid freeing/allocating byte buffer for render result
  if it's owned by the image buffer. Only mark it as invalid
  for color management.

  Saves loads of buffer re-allocations in cases when having
  several image editors opened with render result. This change
  in conjunction with the rest of the patch gave around
  50%-100% speedup of render time when displaying non-combined
  pass during rendering on my laptop.

- Partial display buffer update was wrong for buffers with number
  of channels different from 4.

- Remove unused window from RenderJob.

- Made image_buffer_rect_update static since it's only used
  in single file.

Reviewers: brecht

Reviewed By: brecht

CC: dingto

Differential Revision: http://developer.blender.org/D98
2013-12-17 23:42:38 +06:00
..
atomic Attempt to fix compilation error on Debian armel kernel 2013-12-12 17:33:36 +06:00
audaspace Woo Hoo. First git commit. 2013-11-29 15:13:12 -05:00
bsp Fix #37153: Bool union of 2 planes makes Blender 2.69 RC2 hang 2013-10-20 10:13:19 +00:00
container move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading) 2013-05-28 19:35:26 +00:00
cycles Changes to partial update during rendering 2013-12-17 23:42:38 +06:00
dualcon quiet double-promotion warnings, change octree.cpp to use a float (vector accumulated into a float anyway) 2013-08-06 06:38:52 +00:00
elbeem Woo Hoo. First git commit. 2013-11-29 15:13:12 -05:00
ffmpeg Attempt to fix compilation against libav-0.8.9 2013-12-11 22:40:45 +06:00
ghost Quicktime: remove backend with the old quicktime API, and keep the QTKit backend. 2013-11-06 01:45:15 +00:00
guardedalloc Code Cleanup: use NULL for pointer checks and remove joke. 2013-11-22 10:43:42 +11:00
iksolver clang/cmake - quiet warnings for external libs and reference moto as a system include. 2013-07-15 08:26:16 +00:00
itasc Fix iTaSC build error when building with libc++. 2013-11-28 21:35:28 +01:00
locale Fix scons build error compiling 32 bit OS X built on 64 bit. 2013-11-23 07:12:02 +01:00
memutil Cache limiter cleanup and small fixes 2013-12-11 16:32:41 +06:00
mikktspace fix [#36685] crash calculating tangent space data on degenerate geometry 2013-09-09 09:33:34 +00:00
moto Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
opencl Possible fix for [#36086] Activating the opencl option in the compositor causes blender crash 2013-07-17 12:57:03 +00:00
opencolorio Fix T37810: GLSL dither shader not working on OS X. 2013-12-14 16:01:48 +01:00
opennl remove duplicate sys-types headers. 2013-05-29 21:38:23 +00:00
raskter code cleanup: use NULL rather then 0 for pointers, and make vars static where possible. 2013-03-22 05:34:10 +00:00
rigidbody code cleanup: quiet warnings 2013-11-05 04:32:51 +00:00
smoke fix for checking char arrays against NULL, instead check their first character. also remove some dead code (return directly after return). 2013-07-16 11:42:07 +00:00
string fix for buffer out-of-bounds reading for STR_String comparisons with char arrays. 2013-03-22 21:26:59 +00:00
utfconv Fix related to #36319: restore SDL_VIDEODRIVER=dummy environment variable, it 2013-09-23 14:48:28 +00:00
CMakeLists.txt CMake Build: option to compile without opennl/superlu. 2013-11-25 15:36:19 +11:00
SConscript Move opencl and reigidbody from source/blender/ to intern/ 2013-02-01 06:24:49 +00:00