Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-04-03 13:08:02 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-04-03 13:08:02 +0400
commitbfeef2f5f07094c4014ce7c7bf7e933c168c2bd0 (patch)
tree3aa0d09177fe75ec884fca39eaf78e0f961fd546 /source/blender/editors/render
parent9512ae1a4a7b6242f425c219b4dec572f6a88bb8 (diff)
Fix/Workaround #34854: render buffer update writes to wrong layer
Was caused by recent change in image_buffer_rect_update which was writing data to ibuf-rect_float. Apparently, this buffer could point to different render layer than came from RenderResult. Made quick fix for this, which ends up in skipping float buffer update in image_buffer_rect_update and skipping GLSL when image has both byte and float buffers. This will bring speed down a bit, but slower blender is better than broken blender. Proper fix will arrive later this week.
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r--source/blender/editors/render/render_internal.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index de8accf0180..90c80cae1ad 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -140,23 +140,15 @@ void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volat
}
}
if (rectf == NULL) return;
-
- rectf += 4 * (rr->rectx * ymin + xmin);
- if (ibuf->rect) {
- IMB_partial_display_buffer_update(ibuf, rectf, NULL, rr->rectx, rxmin, rymin,
- &scene->view_settings, &scene->display_settings,
- rxmin, rymin, rxmin + xmax, rymin + ymax, TRUE);
- }
+ if (ibuf->rect == NULL)
+ imb_addrectImBuf(ibuf);
- /* update float buffer as well, so fast GLSL display could use it
- *
- * TODO(sergey): not actually sure it is nice thing to modify something here
- * but ibuf->rect used to be modified here
- */
- IMB_buffer_float_from_float(ibuf->rect_float + 4 * (ibuf->x * rymin + rxmin), rectf,
- 4, IB_PROFILE_LINEAR_RGB, IB_PROFILE_LINEAR_RGB, FALSE,
- xmax, ymax, ibuf->x, rr->rectx);
+ rectf += 4 * (rr->rectx * ymin + xmin);
+
+ IMB_partial_display_buffer_update(ibuf, rectf, NULL, rr->rectx, rxmin, rymin,
+ &scene->view_settings, &scene->display_settings,
+ rxmin, rymin, rxmin + xmax, rymin + ymax, TRUE);
}
/* ****************************** render invoking ***************** */