[Bf-blender-cvs] [885354d] master: Optimization for render result save

Sergey Sharybin noreply at git.blender.org
Fri Nov 22 11:53:28 CET 2013


Commit: 885354daec2fa8181aeb27b637c80e4ee4c247df
Author: Sergey Sharybin
Date:   Fri Nov 22 16:48:08 2013 +0600
http://developer.blender.org/rB885354daec2fa8181aeb27b637c80e4ee4c247df

Optimization for render result save

Skip byte->float conversion if output file format
supports high bit depths but configured to only
output 8 bits per channel.

Gives around 30% speedup when re-exporting movie file
to PNG image sequence here on laptop.

Possible further optimization:

- Skip color space conversion in imbuf_for_write
  function if we've got already have buffer in
  that space.

  This doesn't seem to happen often after tweak
  to render result to imbuf.

- Skip black alpha-under if original image is
  opaque,

  This is a bit tricky to detect.

===================================================================

M	source/blender/render/intern/source/render_result.c

===================================================================

diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index 37587d8..487de42 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -1124,7 +1124,13 @@ ImBuf *render_result_rect_to_ibuf(RenderResult *rr, RenderData *rd)
 	 */
 	if (ibuf->rect) {
 		if (BKE_imtype_valid_depths(rd->im_format.imtype) & (R_IMF_CHAN_DEPTH_12 | R_IMF_CHAN_DEPTH_16 | R_IMF_CHAN_DEPTH_24 | R_IMF_CHAN_DEPTH_32)) {
-			IMB_float_from_rect(ibuf);
+			if (rd->im_format.depth == R_IMF_CHAN_DEPTH_8) {
+				/* Higher depth bits are supported but not needed for current file output. */
+				ibuf->rect_float = NULL;
+			}
+			else {
+				IMB_float_from_rect(ibuf);
+			}
 		}
 		else {
 			/* ensure no float buffer remained from previous frame */




More information about the Bf-blender-cvs mailing list