[Bf-blender-cvs] [16d58a1] multiview: Compositor Backdrop

Dalai Felinto noreply at git.blender.org
Tue Aug 19 19:40:28 CEST 2014


Commit: 16d58a115b00b9edbd393f5704cc31e3a8210ab6
Author: Dalai Felinto
Date:   Tue Aug 19 19:33:54 2014 +0200
Branches: multiview
https://developer.blender.org/rB16d58a115b00b9edbd393f5704cc31e3a8210ab6

Compositor Backdrop

Note: the one remaining bit that has to be addressed in compositor is
the re-runs (e.g., when you adjust a node).

I also suspect that multiple viewer nodes are a problem at the moment,
but I believe it's related to the re-run problem. Which then should be
re-visited once re-run is fixed.

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

M	source/blender/blenkernel/intern/image.c
M	source/blender/makesdna/DNA_image_types.h
M	source/blender/windowmanager/intern/wm_draw.c
M	source/blender/windowmanager/intern/wm_stereo.c

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

diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index f6f790e..832082d 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -3174,13 +3174,17 @@ static ImBuf *image_acquire_ibuf(Image *ima, ImageUser *iuser, void **lock_r)
 					/* XXX anim play for viewer nodes not yet supported */
 					frame = 0; // XXX iuser ? iuser->framenr : 0;
 
-					if ((ima->flag & IMA_IS_STEREO) &&
-					    iuser && (iuser->flag & IMA_SHOW_STEREO))
-					{
-						index = iuser->eye;
-					}
-					else {
-						index = (iuser ? iuser->view : 0);
+					if ((ima->flag & IMA_IS_STEREO)) {
+						if (iuser) {
+							if ((iuser->flag & IMA_SHOW_STEREO))
+								index = iuser->eye;
+							else
+								index = iuser->view;
+						}
+						else {
+							/* backdrop */
+							index = ima->eye;
+						}
 					}
 					ibuf = image_get_cached_ibuf_for_index_frame(ima, index, frame);
 
diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h
index 52ce1fd..15bb636 100644
--- a/source/blender/makesdna/DNA_image_types.h
+++ b/source/blender/makesdna/DNA_image_types.h
@@ -120,7 +120,9 @@ typedef struct Image {
 	ColorManagedColorspaceSettings colorspace_settings;
 	char alpha_mode;
 
-	char pad[7];
+	char eye; /* for viewer node stereoscopy */
+
+	char pad[6];
 } Image;
 
 
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index 88b6635..fbbd7b0 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -49,9 +49,11 @@
 #include "BIF_gl.h"
 
 #include "BKE_context.h"
+#include "BKE_image.h"
 
 #include "GHOST_C-api.h"
 
+#include "ED_node.h"
 #include "ED_view3d.h"
 #include "ED_screen.h"
 
@@ -776,6 +778,15 @@ static void wm_method_draw_triple_multiview(bContext *C, wmWindow *win, StereoVi
 				v3d->eye = sview;
 				break;
 			}
+			case SPACE_NODE:
+			{
+				SpaceNode *snode = sa->spacedata.first;
+				if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) {
+					Image *ima = BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
+					ima->eye = sview;
+				}
+				break;
+			}
 		}
 
 		/* draw marked area regions */
diff --git a/source/blender/windowmanager/intern/wm_stereo.c b/source/blender/windowmanager/intern/wm_stereo.c
index d1687b3..182c8c9 100644
--- a/source/blender/windowmanager/intern/wm_stereo.c
+++ b/source/blender/windowmanager/intern/wm_stereo.c
@@ -50,12 +50,14 @@
 #include "BIF_gl.h"
 
 #include "BKE_context.h"
+#include "BKE_image.h"
 #include "BKE_global.h"
 #include "BKE_screen.h"
 #include "BKE_report.h"
 
 #include "GHOST_C-api.h"
 
+#include "ED_node.h"
 #include "ED_view3d.h"
 #include "ED_screen.h"
 
@@ -387,6 +389,7 @@ static bool wm_stereo_required(bContext *C, bScreen *screen)
 	ScrArea *sa;
 	View3D *v3d;
 	SpaceImage *sima;
+	SpaceNode *snode;
 	Scene *sce = CTX_data_scene(C);
 	const bool is_multiview = (sce->r.scemode & R_MULTIVIEW);
 
@@ -417,11 +420,22 @@ static bool wm_stereo_required(bContext *C, bScreen *screen)
 				 * the file doesn't have views enabled */
 				sima = (SpaceImage *) sa->spacedata.first;
 				if ((sima->image) && (sima->image->flag & IMA_IS_STEREO) &&
-					(sima->iuser.flag & IMA_SHOW_STEREO)) {
+					(sima->iuser.flag & IMA_SHOW_STEREO))
+				{
 					return true;
 				}
 				break;
 			}
+			case SPACE_NODE:
+			{
+				if (!is_multiview)
+					continue;
+
+				snode = (SpaceNode *) sa->spacedata.first;
+				if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) {
+					return true;
+				}
+			}
 		}
 	}




More information about the Bf-blender-cvs mailing list