[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22609] branches/blender2.5/blender: Fixed the texture preview to work with multi-output node-based textures.

Robin Allen roblovski at gmail.com
Tue Aug 18 21:58:27 CEST 2009


Revision: 22609
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22609
Author:   kakbarnf
Date:     2009-08-18 21:58:27 +0200 (Tue, 18 Aug 2009)

Log Message:
-----------
Fixed the texture preview to work with multi-output node-based textures.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_texture.py
    branches/blender2.5/blender/source/blender/editors/include/ED_previewrender.h
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/editors/preview/previewrender.c
    branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: branches/blender2.5/blender/release/ui/buttons_texture.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_texture.py	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/release/ui/buttons_texture.py	2009-08-18 19:58:27 UTC (rev 22609)
@@ -17,21 +17,22 @@
 		layout = self.layout
 		
 		tex = context.texture
+		slot = context.texture_slot
 		ma = context.material
 		la = context.lamp
 		wo = context.world
 		br = context.brush
 		
 		if ma:
-			layout.template_preview(tex, parent=ma)
+			layout.template_preview(tex, parent=ma, slot=slot)
 		elif la:
-			layout.template_preview(tex, parent=la)
+			layout.template_preview(tex, parent=la, slot=slot)
 		elif wo:
-			layout.template_preview(tex, parent=wo)
+			layout.template_preview(tex, parent=wo, slot=slot)
 		elif br:
-			layout.template_preview(tex, parent=br)
+			layout.template_preview(tex, parent=br, slot=slot)
 		else:
-			layout.template_preview(tex)
+			layout.template_preview(tex, slot=slot)
 			
 class TEXTURE_PT_context_texture(TextureButtonsPanel):
 	__show_header__ = False

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_previewrender.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_previewrender.h	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_previewrender.h	2009-08-18 19:58:27 UTC (rev 22609)
@@ -34,6 +34,7 @@
 struct Render;
 struct bContext;
 struct ID;
+struct MTex;
 
 #define PREVIEW_RENDERSIZE 140
 
@@ -70,9 +71,9 @@
 void ED_preview_init_dbase(void);
 void ED_preview_free_dbase(void);
 
-void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID *id, struct ID *parent, int sizex, int sizey);
+void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID *id, struct ID *parent, struct MTex *slot, int sizex, int sizey);
 void ED_preview_iconrender(struct Scene *scene, struct ID *id, unsigned int *rect, int sizex, int sizey);
 
-void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, rcti *rect);
+void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void *slot, rcti *rect);
 
 #endif

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-08-18 19:58:27 UTC (rev 22609)
@@ -60,6 +60,7 @@
 struct ImageUser;
 struct uiWidgetColors;
 struct Tex;
+struct MTex;
 
 typedef struct uiBut uiBut;
 typedef struct uiBlock uiBlock;
@@ -490,7 +491,7 @@
 
 void	uiButSetCompleteFunc(uiBut *but,		uiButCompleteFunc func, void *arg);
 
-void 	uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const struct bContext *C, void *, void *, struct rcti *rect), void *arg);
+void 	uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const struct bContext *C, void *, void *, void *, struct rcti *rect), void *arg1, void *arg2);
 
 /* Autocomplete
  *
@@ -630,7 +631,7 @@
 	char *newop, char *unlinkop);
 uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
 uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
-void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent);
+void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot);
 void uiTemplateColorRamp(uiLayout *layout, struct ColorBand *coba, int expand);
 void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int type, int compact);
 void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-08-18 19:58:27 UTC (rev 22609)
@@ -2931,10 +2931,11 @@
 	but->rename_arg1= arg1;
 }
 
-void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const bContext *C, void *idv, void *argv, rcti *rect), void *arg)
+void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const bContext *C, void *idv, void *arg1, void *arg2, rcti *rect), void *arg1, void *arg2)
 {
 	block->drawextra= func;
-	block->drawextra_arg= arg;
+	block->drawextra_arg1= arg1;
+	block->drawextra_arg2= arg2;
 }
 
 void uiButSetFunc(uiBut *but, uiButHandleFunc func, void *arg1, void *arg2)

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h	2009-08-18 19:58:27 UTC (rev 22609)
@@ -273,8 +273,9 @@
 	int (*block_event_func)(const struct bContext *C, struct uiBlock *, struct wmEvent *);
 	
 	/* extra draw function for custom blocks */
-	void (*drawextra)(const struct bContext *C, void *idv, void *argv, rcti *rect);
-	void *drawextra_arg;
+	void (*drawextra)(const struct bContext *C, void *idv, void *arg1, void *arg2, rcti *rect);
+	void *drawextra_arg1;
+	void *drawextra_arg2;
 
 	int afterval, flag;
 	

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c	2009-08-18 19:58:27 UTC (rev 22609)
@@ -1088,7 +1088,7 @@
 	}
 }
 
-void uiTemplatePreview(uiLayout *layout, ID *id, ID *parent)
+void uiTemplatePreview(uiLayout *layout, ID *id, ID *parent, MTex *slot)
 {
 	uiLayout *row, *col;
 	uiBlock *block;
@@ -1129,7 +1129,7 @@
 	
 	/* add preview */
 	uiDefBut(block, BUT_EXTRA, 0, "", 0, 0, UI_UNIT_X*6, UI_UNIT_Y*6, pid, 0.0, 0.0, 0, 0, "");
-	uiBlockSetDrawExtraFunc(block, ED_preview_draw, pparent);
+	uiBlockSetDrawExtraFunc(block, ED_preview_draw, pparent, slot);
 	uiBlockSetHandleFunc(block, do_preview_buttons, NULL);
 	
 	/* add buttons */

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c	2009-08-18 19:58:27 UTC (rev 22609)
@@ -2065,7 +2065,7 @@
 	
 	if(but->block->drawextra) {
 		/* note: drawextra can change rect +1 or -1, to match round errors of existing previews */
-		but->block->drawextra(C, but->poin, but->block->drawextra_arg, rect);
+		but->block->drawextra(C, but->poin, but->block->drawextra_arg1, but->block->drawextra_arg2, rect);
 		
 		/* make mask to draw over image */
 		UI_GetThemeColor3ubv(TH_BACK, col);

Modified: branches/blender2.5/blender/source/blender/editors/preview/previewrender.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/preview/previewrender.c	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/preview/previewrender.c	2009-08-18 19:58:27 UTC (rev 22609)
@@ -113,6 +113,7 @@
 	Scene *scene;
 	ID *id;
 	ID *parent;
+	MTex *slot;
 	
 	int sizex, sizey;
 	int *pr_rect;
@@ -364,6 +365,10 @@
 					Material *mat= give_current_material(base->object, base->object->actcol);
 					if(mat && mat->mtex[0]) {
 						mat->mtex[0]->tex= tex;
+						
+						if(sp && sp->slot)
+							mat->mtex[0]->which_output = sp->slot->which_output;
+						
 						/* show alpha in this case */
 						if(tex==NULL || (tex->flag & TEX_PRV_ALPHA)) {
 							mat->mtex[0]->mapto |= MAP_ALPHA;
@@ -457,13 +462,14 @@
 	return 0;
 }
 
-void ED_preview_draw(const bContext *C, void *idp, void *parentp, rcti *rect)
+void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, rcti *rect)
 {
 	if(idp) {
 		ScrArea *sa= CTX_wm_area(C);
 		Scene *sce = CTX_data_scene(C);
 		ID *id = (ID *)idp;
 		ID *parent= (ID *)parentp;
+		MTex *slot= (MTex *)slotp;
 		SpaceButs *sbuts= sa->spacedata.first;
 		rcti newrect;
 		int ok;
@@ -491,7 +497,7 @@
 		}
 		
 		if(ok==0) {
-			ED_preview_shader_job(C, sa, id, parent, newx, newy);
+			ED_preview_shader_job(C, sa, id, parent, slot, newx, newy);
 		}
 	}	
 }
@@ -932,7 +938,7 @@
 	MEM_freeN(sp);
 }
 
-void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, int sizex, int sizey)
+void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, MTex *slot, int sizex, int sizey)
 {
 	wmJob *steve;
 	ShaderPreview *sp;
@@ -952,6 +958,7 @@
 	sp->pr_method= PR_DO_RENDER;
 	sp->id = id;
 	sp->parent= parent;
+	sp->slot= slot;
 	
 	/* setup job */
 	WM_jobs_customdata(steve, sp, shader_preview_free);

Modified: branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-08-18 19:26:53 UTC (rev 22608)
+++ branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-08-18 19:58:27 UTC (rev 22609)
@@ -174,7 +174,7 @@
 		if(snode->treetype==NTREE_SHADER) {
 			Material *ma= (Material *)snode->id;
 			if(ma->use_nodes)
-				ED_preview_shader_job(C, sa, snode->id, NULL, 100, 100);
+				ED_preview_shader_job(C, sa, snode->id, NULL, NULL, 100, 100);
 		}
 		else if(snode->treetype==NTREE_COMPOSIT) {
 			Scene *scene= (Scene *)snode->id;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c	2009-08-18 19:26:53 UTC (rev 22608)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list