Revision: 23690
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23690
Author:   blendix
Date:     2009-10-07 16:48:29 +0200 (Wed, 07 Oct 2009)

Log Message:
-----------
Preview Render:
* Fixes for texture and material nodes.
* Texture node previews now work more like materials.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_render.h
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/makesrna/intern/rna_texture.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_at.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_checker.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_compose.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_coord.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_curves.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_decompose.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_distance.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_hueSatVal.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_image.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_invert.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_math.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_mixRgb.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_output.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_proc.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_scale.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_translate.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c
    trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_viewer.c
    trunk/blender/source/blender/nodes/intern/TEX_util.c
    trunk/blender/source/blender/nodes/intern/TEX_util.h
    trunk/blender/source/blender/render/intern/source/shadeinput.c
    trunk/blender/source/blender/render/intern/source/texture.c

Modified: trunk/blender/source/blender/editors/include/ED_render.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_render.h    2009-10-07 
14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/editors/include/ED_render.h    2009-10-07 
14:48:29 UTC (rev 23690)
@@ -64,21 +64,19 @@
 /* Render the preview
 
 pr_method:
-- PR_DRAW_RENDER: preview is rendered and drawn, as indicated by called 
context (buttons panel)
-- PR_ICON_RENDER: the preview is not drawn and the function is not dynamic,
-  so no events are processed. Hopefully fast enough for at least 32x32 
-- PR_DO_RENDER: preview is rendered, not drawn, but events are processed for 
afterqueue,
-  in use for node editor now.
+- PR_BUTS_RENDER: preview is rendered for buttons window
+- PR_ICON_RENDER: preview is rendered for icons. hopefully fast enough for at 
least 32x32 
+- PR_NODE_RENDER: preview is rendered for node editor.
 */
 
-#define PR_DRAW_RENDER 0
+#define PR_BUTS_RENDER 0
 #define PR_ICON_RENDER 1
-#define PR_DO_RENDER   2
+#define PR_NODE_RENDER 2
 
 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, struct MTex *slot, 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, int method);
 void ED_preview_icon_job(const struct bContext *C, void *owner, struct ID *id, 
unsigned int *rect, int sizex, int sizey);
 
 void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void 
*slot, rcti *rect);

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c        
2009-10-07 14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/editors/render/render_preview.c        
2009-10-07 14:48:29 UTC (rev 23690)
@@ -359,7 +359,7 @@
                                }
                                else {
                                        sce->lay= 1<<mat->pr_type;
-                                       if(mat->nodetree)
+                                       if(mat->nodetree && 
sp->pr_method==PR_NODE_RENDER)
                                                ntreeInitPreview(mat->nodetree, 
sp->sizex, sp->sizey);
                                }
                        }
@@ -408,6 +408,9 @@
                                        }
                                }
                        }
+
+                       if(tex && tex->nodetree && 
sp->pr_method==PR_NODE_RENDER)
+                               ntreeInitPreview(tex->nodetree, sp->sizex, 
sp->sizey);
                }
                else if(id_type==ID_LA) {
                        Lamp *la= (Lamp *)id;
@@ -529,7 +532,7 @@
                }
                
                if(ok==0) {
-                       ED_preview_shader_job(C, sa, id, parent, slot, newx, 
newy);
+                       ED_preview_shader_job(C, sa, id, parent, slot, newx, 
newy, PR_BUTS_RENDER);
                }
        }       
 }
@@ -880,11 +883,12 @@
        Render *re;
        Scene *sce;
        float oldlens;
+       short idtype= GS(id->name);
        char name[32];
        int sizex;
 
        /* get the stuff from the builtin preview dbase */
-       sce= preview_prepare_scene(sp->scene, id, GS(id->name), sp); // XXX 
sizex
+       sce= preview_prepare_scene(sp->scene, id, idtype, sp); // XXX sizex
        if(sce==NULL) return;
        
        if(!split || first) sprintf(name, "Preview %p", sp->owner);
@@ -896,14 +900,19 @@
                re= RE_NewRender(name);
                
        /* sce->r gets copied in RE_InitState! */
-       if(sp->pr_method==PR_DO_RENDER) {
-               sce->r.scemode |= R_NODE_PREVIEW;
-               sce->r.scemode &= ~R_NO_IMAGE_LOAD;
+       sce->r.scemode &= ~(R_MATNODE_PREVIEW|R_TEXNODE_PREVIEW);
+       sce->r.scemode &= ~R_NO_IMAGE_LOAD;
+
+       if(sp->pr_method==PR_ICON_RENDER) {
+               sce->r.scemode |= R_NO_IMAGE_LOAD;
+       }
+       else if(sp->pr_method==PR_NODE_RENDER) {
+               if(idtype == ID_MA) sce->r.scemode |= R_MATNODE_PREVIEW;
+               else if(idtype == ID_TE) sce->r.scemode |= R_TEXNODE_PREVIEW;
                sce->r.mode |= R_OSA;
        }
-       else {  /* PR_ICON_RENDER */
-               sce->r.scemode &= ~R_NODE_PREVIEW;
-               sce->r.scemode |= R_NO_IMAGE_LOAD;
+       else {  /* PR_BUTS_RENDER */
+               sce->r.mode |= R_OSA;
        }
 
        /* in case of split preview, use border render */
@@ -917,7 +926,7 @@
        RE_InitState(re, NULL, &sce->r, sizex, sp->sizey, NULL);
 
        /* callbacs are cleared on GetRender() */
-       if(sp->pr_method==PR_DO_RENDER) {
+       if(sp->pr_method==PR_BUTS_RENDER) {
                RE_display_draw_cb(re, sp, shader_preview_draw);
                RE_test_break_cb(re, sp, shader_preview_break);
        }
@@ -1125,7 +1134,7 @@
        WM_jobs_start(CTX_wm_manager(C), steve);
 }
 
-void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, 
MTex *slot, int sizex, int sizey)
+void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, 
MTex *slot, int sizex, int sizey, int method)
 {
        wmJob *steve;
        ShaderPreview *sp;
@@ -1138,7 +1147,7 @@
        sp->owner= owner;
        sp->sizex= sizex;
        sp->sizey= sizey;
-       sp->pr_method= PR_DO_RENDER;
+       sp->pr_method= method;
        sp->id = id;
        sp->parent= parent;
        sp->slot= slot;

Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c 2009-10-07 
14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c 2009-10-07 
14:48:29 UTC (rev 23690)
@@ -54,6 +54,7 @@
 #include "MEM_guardedalloc.h"
 
 #include "BKE_context.h"
+#include "BKE_depsgraph.h"
 #include "BKE_global.h"
 #include "BKE_image.h"
 #include "BKE_library.h"
@@ -102,6 +103,7 @@
                return;
 
        if(snode->treetype==NTREE_SHADER) {
+               DAG_id_flush_update(snode->id, 0);
                WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, snode->id);
        }
        else if(snode->treetype==NTREE_COMPOSIT) {
@@ -127,6 +129,7 @@
                WM_event_add_notifier(C, NC_SCENE|ND_NODES, CTX_data_scene(C));
        }                       
        else if(snode->treetype==NTREE_TEXTURE) {
+               DAG_id_flush_update(snode->id, 0);
                WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, snode->id);
        }
 

Modified: trunk/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/space_node.c        
2009-10-07 14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/editors/space_node/space_node.c        
2009-10-07 14:48:29 UTC (rev 23690)
@@ -179,12 +179,14 @@
 {
        /* default now: refresh node is starting preview */
        SpaceNode *snode= sa->spacedata.first;
+
+       snode_set_context(snode, CTX_data_scene(C));
        
        if(snode->nodetree) {
                if(snode->treetype==NTREE_SHADER) {
                        Material *ma= (Material *)snode->id;
                        if(ma->use_nodes)
-                               ED_preview_shader_job(C, sa, snode->id, NULL, 
NULL, 100, 100);
+                               ED_preview_shader_job(C, sa, snode->id, NULL, 
NULL, 100, 100, PR_NODE_RENDER);
                }
                else if(snode->treetype==NTREE_COMPOSIT) {
                        Scene *scene= (Scene *)snode->id;
@@ -194,7 +196,7 @@
                else if(snode->treetype==NTREE_TEXTURE) {
                        Tex *tex= (Tex *)snode->id;
                        if(tex->use_nodes) {
-                               ED_preview_shader_job(C, sa, snode->id, NULL, 
NULL, 100, 100);
+                               ED_preview_shader_job(C, sa, snode->id, NULL, 
NULL, 100, 100, PR_NODE_RENDER);
                        }
                }
        }

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h     2009-10-07 
14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h     2009-10-07 
14:48:29 UTC (rev 23690)
@@ -840,7 +840,7 @@
 #define R_PASSEPARTOUT         0x0004
 #define R_PREVIEWBUTS          0x0008
 #define R_EXTENSION                    0x0010
-#define R_NODE_PREVIEW         0x0020
+#define R_MATNODE_PREVIEW      0x0020
 #define R_DOCOMP                       0x0040
 #define R_COMP_CROP                    0x0080
 #define R_FREE_IMAGE           0x0100
@@ -852,7 +852,8 @@
 #define R_STAMP_INFO           0x4000  /* deprecated */
 #define R_FULL_SAMPLE          0x8000
 #define R_COMP_RERENDER                0x10000
-#define R_RECURS_PROTECTION     0x20000
+#define R_RECURS_PROTECTION    0x20000
+#define R_TEXNODE_PREVIEW      0x40000
 
 /* r->stamp */
 #define R_STAMP_TIME   0x0001

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c 2009-10-07 
14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c 2009-10-07 
14:48:29 UTC (rev 23690)
@@ -1716,7 +1716,7 @@
        RNA_def_property_boolean_sdna(prop, NULL, "use_nodes", 1);
        RNA_def_property_boolean_funcs(prop, NULL, 
"rna_Material_use_nodes_set");
        RNA_def_property_ui_text(prop, "Use Nodes", "Use shader nodes to render 
the material.");
-       RNA_def_property_update(prop, NC_MATERIAL, NULL);
+       RNA_def_property_update(prop, 0, "rna_Material_update");
 
        prop= RNA_def_property(srna, "active_node_material", PROP_POINTER, 
PROP_NONE);
        RNA_def_property_struct_type(prop, "Material");

Modified: trunk/blender/source/blender/makesrna/intern/rna_texture.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_texture.c  2009-10-07 
14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/makesrna/intern/rna_texture.c  2009-10-07 
14:48:29 UTC (rev 23690)
@@ -107,6 +107,14 @@
        WM_event_add_notifier(C, NC_TEXTURE, tex);
 }
 
+static void rna_Texture_nodes_update(bContext *C, PointerRNA *ptr)
+{
+       Tex *tex= ptr->id.data;
+
+       DAG_id_flush_update(&tex->id, 0);
+       WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, tex);
+}
+
 static void rna_Texture_type_set(PointerRNA *ptr, int value)
 {
        Tex *tex= (Tex*)ptr->data;
@@ -1678,12 +1686,12 @@
        RNA_def_property_boolean_sdna(prop, NULL, "use_nodes", 1);
        RNA_def_property_boolean_funcs(prop, NULL, "rna_Texture_use_nodes_set");
        RNA_def_property_ui_text(prop, "Use Nodes", "Make this a node-based 
texture");
-       RNA_def_property_update(prop, 0, "rna_Texture_update");
+       RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
        
        prop= RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "nodetree");
        RNA_def_property_ui_text(prop, "Node Tree", "Node tree for node-based 
textures");
-       RNA_def_property_update(prop, 0, "rna_Texture_update");
+       RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
        
        rna_def_animdata_common(srna);
 

Modified: trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_at.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_at.c        
2009-10-07 14:40:27 UTC (rev 23689)
+++ trunk/blender/source/blender/nodes/intern/TEX_nodes/TEX_at.c        
2009-10-07 14:48:29 UTC (rev 23690)
@@ -50,7 +50,7 @@
 
 static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
 {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to