Revision: 47964
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47964
Author:   blendix
Date:     2012-06-15 15:01:32 +0000 (Fri, 15 Jun 2012)
Log Message:
-----------
Fix more of #31789: cycles border render going out of view giving wrong result.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c     
2012-06-15 15:00:51 UTC (rev 47963)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c     
2012-06-15 15:01:32 UTC (rev 47964)
@@ -2830,13 +2830,17 @@
                cliprct.ymin += ar->winrct.ymin;
                cliprct.ymax += ar->winrct.ymin;
 
-               cliprct.xmin = MAX2(cliprct.xmin, ar->winrct.xmin);
-               cliprct.ymin = MAX2(cliprct.ymin, ar->winrct.ymin);
-               cliprct.xmax = MIN2(cliprct.xmax, ar->winrct.xmax);
-               cliprct.ymax = MIN2(cliprct.ymax, ar->winrct.ymax);
+               cliprct.xmin = CLAMPIS(cliprct.xmin, ar->winrct.xmin, 
ar->winrct.xmax);
+               cliprct.ymin = CLAMPIS(cliprct.ymin, ar->winrct.ymin, 
ar->winrct.ymax);
+               cliprct.xmax = CLAMPIS(cliprct.xmax, ar->winrct.xmin, 
ar->winrct.xmax);
+               cliprct.ymax = CLAMPIS(cliprct.ymax, ar->winrct.ymin, 
ar->winrct.ymax);
 
-               glGetIntegerv(GL_SCISSOR_BOX, scissor);
-               glScissor(cliprct.xmin, cliprct.ymin, cliprct.xmax - 
cliprct.xmin, cliprct.ymax - cliprct.ymin);
+               if(cliprct.xmax > cliprct.xmin && cliprct.ymax > cliprct.ymin) {
+                       glGetIntegerv(GL_SCISSOR_BOX, scissor);
+                       glScissor(cliprct.xmin, cliprct.ymin, cliprct.xmax - 
cliprct.xmin, cliprct.ymax - cliprct.ymin);
+               }
+               else
+                       return 0;
        }
 
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
@@ -2847,11 +2851,6 @@
        else
                fdrawcheckerboard(0, 0, ar->winx, ar->winy);
 
-       if (draw_border) {
-               /* restore scissor as it was before */
-               glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
-       }
-
        /* render result draw */
        type = rv3d->render_engine->type;
        type->view_draw(rv3d->render_engine, C);
@@ -2859,6 +2858,11 @@
        if (v3d->flag & V3D_DISPBGPICS)
                view3d_draw_bgpic(scene, ar, v3d, TRUE, TRUE);
 
+       if (draw_border) {
+               /* restore scissor as it was before */
+               glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
+       }
+
        return 1;
 }
 

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

Reply via email to