Commit: 23d8b1ce16cfc93564cd36de3b0dc01b4c209c1e
Author: Nicholas Bishop
Date:   Wed Feb 11 14:16:28 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB23d8b1ce16cfc93564cd36de3b0dc01b4c209c1e

Expand Ptex paint redraw region to include filter border

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

M       source/blender/gpu/intern/gpu_draw.c

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

diff --git a/source/blender/gpu/intern/gpu_draw.c 
b/source/blender/gpu/intern/gpu_draw.c
index b025d35..5cb2e1b 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -1030,6 +1030,23 @@ static bool GPU_check_scaled_image(ImBuf *ibuf, Image 
*ima, float *frect, int x,
        return false;
 }
 
+/* If this is a Ptex ImBuf, expand update area to include filter
+ * borders */
+static void gpu_ptex_paint_update_rect(const ImBuf *ibuf, int *x, int *y,
+                                                                          int 
*w, int *h)
+{
+       /* Pixel size of Ptex border */
+       const int border = 1;
+
+       if (ibuf->num_ptex_regions > 0) {
+               *x = MAX2((*x) - border, 0);
+               *y = MAX2((*y) - border, 0);
+
+               *w = MIN2((*w) + border * 2, ibuf->x - (*x));
+               *h = MIN2((*h) + border * 2, ibuf->y - (*y));
+       }
+}
+
 void GPU_paint_update_image(Image *ima, int x, int y, int w, int h)
 {
        ImBuf *ibuf;
@@ -1047,6 +1064,10 @@ void GPU_paint_update_image(Image *ima, int x, int y, 
int w, int h)
                 * which is much quicker for painting */
                GLint row_length, skip_pixels, skip_rows;
 
+               /* TODO(nicholasbishop): not sure yet this will belong here, 
could
+                * move to texpaint instead */
+               gpu_ptex_paint_update_rect(ibuf, &x, &y, &w, &h);
+
                /* if color correction is needed, we must update the part that 
needs updating. */
                if (ibuf->rect_float) {
                        float *buffer = MEM_mallocN(w * h * sizeof(float) * 4, 
"temp_texpaint_float_buf");

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to