[Bf-blender-cvs] [195d0fbae37] master: Fixup for multi-view single eye viewport issues

Dalai Felinto noreply at git.blender.org
Wed May 10 13:15:12 CEST 2017


Commit: 195d0fbae373c5fa4dd18245d830542c095da1e0
Author: Dalai Felinto
Date:   Wed May 10 13:13:55 2017 +0200
Branches: master
https://developer.blender.org/rB195d0fbae373c5fa4dd18245d830542c095da1e0

Fixup for multi-view single eye viewport issues

In d2f1f80a6fa I was always calling view3d_main_regio_setup_view with
NULL matrices, which is not always correct.

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

M	source/blender/editors/include/ED_view3d.h
M	source/blender/editors/space_view3d/view3d_draw.c

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

diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 74041de019b..bd0dd72bf70 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -356,7 +356,9 @@ void ED_view3d_draw_offscreen(
         float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
         struct GPUFX *fx, struct GPUFXSettings *fx_settings,
         struct GPUOffScreen *ofs);
-void ED_view3d_draw_setup_view(struct wmWindow *win, struct Scene *scene, struct ARegion *ar, struct View3D *v3d);
+void ED_view3d_draw_setup_view(
+        struct wmWindow *win, struct Scene *scene, struct ARegion *ar, struct View3D *v3d,
+        float viewmat[4][4], float winmat[4][4]);
 
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(
         struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey,
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 05f18a6771f..cd2a6fe0feb 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2370,9 +2370,10 @@ float view3d_depth_near(ViewDepths *d)
 void ED_view3d_draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d)
 {
 	short zbuf = v3d->zbuf;
+	RegionView3D *rv3d = ar->regiondata;
 
 	/* Setup view matrix. */
-	ED_view3d_draw_setup_view(NULL, scene, ar, v3d);
+	ED_view3d_draw_setup_view(NULL, scene, ar, v3d, rv3d->winmat, rv3d->viewmat);
 
 	glClear(GL_DEPTH_BUFFER_BIT);
 
@@ -2483,7 +2484,7 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover
 	U.obcenter_dia = 0;
 	
 	/* Setup view matrix. */
-	ED_view3d_draw_setup_view(NULL, scene, ar, v3d);
+	ED_view3d_draw_setup_view(NULL, scene, ar, v3d, rv3d->viewmat, rv3d->winmat);
 	
 	glClear(GL_DEPTH_BUFFER_BIT);
 	
@@ -3254,7 +3255,7 @@ void ED_view3d_draw_offscreen(
 /**
  * Set the correct matrices
  */
-void ED_view3d_draw_setup_view(wmWindow *win, Scene *scene, ARegion *ar, View3D *v3d)
+void ED_view3d_draw_setup_view(wmWindow *win, Scene *scene, ARegion *ar, View3D *v3d, float viewmat[4][4], float winmat[4][4])
 {
 	RegionView3D *rv3d = ar->regiondata;
 
@@ -3263,7 +3264,7 @@ void ED_view3d_draw_setup_view(wmWindow *win, Scene *scene, ARegion *ar, View3D
 		view3d_stereo3d_setup(scene, v3d, ar);
 	}
 	else {
-		view3d_main_region_setup_view(scene, v3d, ar, NULL, NULL);
+		view3d_main_region_setup_view(scene, v3d, ar, viewmat, winmat);
 	}
 }
 
@@ -3845,7 +3846,7 @@ static void view3d_main_region_draw_objects(const bContext *C, Scene *scene, Vie
 	}
 
 	/* Setup the view matrix. */
-	ED_view3d_draw_setup_view(CTX_wm_window(C), scene, ar, v3d);
+	ED_view3d_draw_setup_view(CTX_wm_window(C), scene, ar, v3d, NULL, NULL);
 
 	rv3d->rflag &= ~RV3D_IS_GAME_ENGINE;
 #ifdef WITH_GAMEENGINE




More information about the Bf-blender-cvs mailing list