Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2010-02-13 16:09:30 +0300
committerTon Roosendaal <ton@blender.org>2010-02-13 16:09:30 +0300
commitb673f7318c9733f009acfae1b640ca14eec79047 (patch)
tree15c34a90d192b91a3f52b562fdbed0abd413e12b /source/blender/editors
parentc1ee920db648af27a7912c997b270d2ed2fdf293 (diff)
Added support for animated texture draw, GLSL textures.
Note, this is not like GE ffmpg, but Blender Image Texture display for GLSL materials. Speed can be disappointing, use smaller images for realtime edits.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/ED_image.h3
-rw-r--r--source/blender/editors/screen/screen_edit.c5
-rw-r--r--source/blender/editors/space_image/image_ops.c32
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c2
4 files changed, 30 insertions, 12 deletions
diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h
index c7edec251b0..7bf0c284c9b 100644
--- a/source/blender/editors/include/ED_image.h
+++ b/source/blender/editors/include/ED_image.h
@@ -56,6 +56,9 @@ int ED_space_image_show_paint(struct SpaceImage *sima);
int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit);
int ED_space_image_show_uvshadow(struct SpaceImage *sima, struct Object *obedit);
+/* UI level image (texture) updating... render calls own stuff (too) */
+void ED_image_update_frame(const struct bContext *C);
+
/* image_render.c, export for screen_ops.c, render operator */
void ED_space_image_output(struct bContext *C);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 4c175a472c4..7b7329aee0b 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -51,6 +51,7 @@
#include "WM_api.h"
#include "WM_types.h"
+#include "ED_image.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
@@ -1761,6 +1762,9 @@ void ED_update_for_newframe(const bContext *C, int mute)
if(scene->use_nodes && scene->nodetree)
ntreeCompositTagAnimated(scene->nodetree);
+ /* update animated image textures for gpu, etc */
+ ED_image_update_frame(C);
+
/* update animated texture nodes */
{
Tex *tex;
@@ -1769,6 +1773,7 @@ void ED_update_for_newframe(const bContext *C, int mute)
ntreeTexTagAnimated( tex->nodetree );
}
}
+
}
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 4a2dd52384c..b69b6a552a6 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -37,6 +37,7 @@
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_texture_types.h"
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
@@ -44,7 +45,9 @@
#include "BKE_context.h"
#include "BKE_image.h"
#include "BKE_global.h"
+#include "BKE_image.h"
#include "BKE_library.h"
+#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_packedFile.h"
#include "BKE_report.h"
@@ -1839,20 +1842,26 @@ void IMAGE_OT_cycle_render_slot(wmOperatorType *ot)
/******************** TODO ********************/
/* XXX notifier? */
-#if 0
+
/* goes over all ImageUsers, and sets frame numbers if auto-refresh is set */
-void BIF_image_update_frame(void)
+
+void ED_image_update_frame(const bContext *C)
{
+ Main *mainp = CTX_data_main(C);
+ Scene *scene= CTX_data_scene(C);
Tex *tex;
/* texture users */
- for(tex= G.main->tex.first; tex; tex= tex->id.next) {
- if(tex->type==TEX_IMAGE && tex->ima)
- if(ELEM(tex->ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE))
+ for(tex= mainp->tex.first; tex; tex= tex->id.next) {
+ if(tex->type==TEX_IMAGE && tex->ima) {
+ if(ELEM(tex->ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
if(tex->iuser.flag & IMA_ANIM_ALWAYS)
- BKE_image_user_calc_imanr(&tex->iuser, scene->r.cfra, 0);
-
+ BKE_image_user_calc_frame(&tex->iuser, scene->r.cfra, 0);
+ }
+ }
}
+
+#if 0
/* image window, compo node users */
if(G.curscreen) {
ScrArea *sa;
@@ -1861,12 +1870,12 @@ void BIF_image_update_frame(void)
View3D *v3d= sa->spacedata.first;
if(v3d->bgpic)
if(v3d->bgpic->iuser.flag & IMA_ANIM_ALWAYS)
- BKE_image_user_calc_imanr(&v3d->bgpic->iuser, scene->r.cfra, 0);
+ BKE_image_user_calc_frame(&v3d->bgpic->iuser, scene->r.cfra, 0);
}
else if(sa->spacetype==SPACE_IMAGE) {
SpaceImage *sima= sa->spacedata.first;
if(sima->iuser.flag & IMA_ANIM_ALWAYS)
- BKE_image_user_calc_imanr(&sima->iuser, scene->r.cfra, 0);
+ BKE_image_user_calc_frame(&sima->iuser, scene->r.cfra, 0);
}
else if(sa->spacetype==SPACE_NODE) {
SpaceNode *snode= sa->spacedata.first;
@@ -1878,14 +1887,15 @@ void BIF_image_update_frame(void)
ImageUser *iuser= node->storage;
if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE))
if(iuser->flag & IMA_ANIM_ALWAYS)
- BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0);
+ BKE_image_user_calc_frame(iuser, scene->r.cfra, 0);
}
}
}
}
}
}
-}
#endif
+}
+
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 4a58ad337e3..1c04667e501 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -883,7 +883,7 @@ void space_view3d_listener(struct ScrArea *area, struct wmNotifier *wmn)
for (; bgpic; bgpic = bgpic->next) {
if (bgpic->ima) {
Scene *scene = wmn->reference;
- BKE_image_user_calc_imanr(&bgpic->iuser, scene->r.cfra, 0);
+ BKE_image_user_calc_frame(&bgpic->iuser, scene->r.cfra, 0);
}
}
}