[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