[Bf-blender-cvs] [404c9e1] GPU_data_request: Workflow shader fixes:

Antony Riakiotakis noreply at git.blender.org
Fri Apr 10 23:34:24 CEST 2015


Commit: 404c9e1b7a935ce07c9862e6ffae69f23dc33238
Author: Antony Riakiotakis
Date:   Fri Apr 10 23:34:13 2015 +0200
Branches: GPU_data_request
https://developer.blender.org/rB404c9e1b7a935ce07c9862e6ffae69f23dc33238

Workflow shader fixes:

* ID type for GPUWorkflow shaders gets refined correctly
* GPUWorkflow correctly linked to spaceview3d when loading file
* Correct Icons in Node editor
* Creating a node tree works (but it's empty)

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

M	release/scripts/startup/bl_ui/space_node.py
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/space_node/drawnode.c
M	source/blender/editors/space_node/node_templates.c
M	source/blender/editors/space_view3d/view3d_edit.c
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_ID.c
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/nodes/NOD_shader.h
M	source/blender/nodes/shader/node_shader_tree.c

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

diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index a5ab689..b320967 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -104,6 +104,10 @@ class NODE_HT_header(Header):
                 row.prop(snode, "backdrop_channels", text="", expand=True)
             layout.prop(snode, "use_auto_render")
 
+        elif snode.tree_type == 'WorkflowNodeTree':
+            if snode_id:
+                row = layout.row()
+                row.template_ID(snode_id, "node_tree", new="node.new_node_tree")
         else:
             # Custom node tree is edited as independent ID block
             layout.template_ID(snode, "node_tree", new="node.new_node_tree")
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 673961b..fedb93f 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5918,6 +5918,7 @@ static void lib_link_screen(FileData *fd, Main *main)
 						View3D *v3d = (View3D*) sl;
 						BGpic *bgpic = NULL;
 						
+						v3d->activeworkflow = newlibadr(fd, sc->id.lib, v3d->activeworkflow);
 						v3d->camera= newlibadr(fd, sc->id.lib, v3d->camera);
 						v3d->ob_centre= newlibadr(fd, sc->id.lib, v3d->ob_centre);
 						
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 6fa164a..09ee142 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -2902,6 +2902,7 @@ void ED_node_init_butfuncs(void)
 	ntreeType_Composite->ui_icon = ICON_RENDERLAYERS;
 	ntreeType_Shader->ui_icon = ICON_MATERIAL;
 	ntreeType_Texture->ui_icon = ICON_TEXTURE;
+	ntreeType_Workflow->ui_icon = ICON_SMOOTH;
 }
 
 void ED_init_custom_node_type(bNodeType *ntype)
diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c
index 8b68ac0..f1aae0f 100644
--- a/source/blender/editors/space_node/node_templates.c
+++ b/source/blender/editors/space_node/node_templates.c
@@ -423,6 +423,9 @@ static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname)
 		else
 			compatibility = NODE_OLD_SHADING;
 	}
+	else if (ntree->type == NTREE_WORKFLOW) {
+		compatibility = NODE_WORKFLOW_SHADING;
+	}
 
 	NODE_TYPES_BEGIN(ntype) {
 		NodeLinkItem *items;
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 659a1ef..65d5094 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -5030,7 +5030,9 @@ static int view3d_workflow_new_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Main *bmain = CTX_data_main(C);
 	View3D *v3d = CTX_wm_view3d(C);
-	v3d->activeworkflow = 	BKE_workflow_shader_add(bmain, "Workflow Shader");
+	GPUWorkflowShader *wfshader = BKE_workflow_shader_add(bmain, "Workflow Shader");
+	if (v3d)
+		v3d->activeworkflow = wfshader;
 	return OPERATOR_FINISHED;
 }
 
@@ -5044,7 +5046,6 @@ void VIEW3D_OT_workflow_new(struct wmOperatorType *ot)
 
 	/* api callbacks */
 	ot->exec = view3d_workflow_new_exec;
-	ot->poll = ED_operator_view3d_active;
 
 	/* flags */
 	ot->flag = 0;
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 06bb45a..eed5034 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -90,7 +90,7 @@ typedef struct GPUWorkflowShader {
 	int use_material; /* workflow shader is overlaid over materials of the meshes */
 	int	datamask; /* datamask of the data that will be required for this workflow shader */
 	int pad;
-	struct bNodeTree *ntree; /* node tree that describes the shader */
+	struct bNodeTree *nodetree; /* node tree that describes the shader */
 } GPUWorkflowShader;
 
 /* ********************************* */
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index d2d3027..f22489b 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -199,6 +199,7 @@ StructRNA *ID_code_to_RNA_type(short idcode)
 		case ID_VF: return &RNA_VectorFont;
 		case ID_WM: return &RNA_WindowManager;
 		case ID_WO: return &RNA_World;
+		case ID_GPUWS: return &RNA_GPUWorkflowShader;
 
 		default: return &RNA_ID;
 	}
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index ce96f94..8df74f4 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -7984,6 +7984,7 @@ void RNA_def_nodetree(BlenderRNA *brna)
 	define_specific_node(brna, "ShaderNodeGroup", "ShaderNode", "Group", "", def_group);
 	define_specific_node(brna, "CompositorNodeGroup", "CompositorNode", "Group", "", def_group);
 	define_specific_node(brna, "TextureNodeGroup", "TextureNode", "Group", "", def_group);
+	define_specific_node(brna, "WorkflowNodeGroup", "TextureNode", "Group", "", def_group);
 	def_custom_group(brna);
 	
 	/* special socket types */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 730b42e..1ece9e9 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -1882,11 +1882,16 @@ static void rna_def_space_outliner(BlenderRNA *brna)
 static void rna_def_workflow_shader(BlenderRNA *brna)
 {
 	StructRNA *srna;
-	//PropertyRNA *prop;
+	PropertyRNA *prop;
 
 	srna = RNA_def_struct(brna, "GPUWorkflowShader", "ID");
 	RNA_def_struct_sdna(srna, "GPUWorkflowShader");
 	RNA_def_struct_ui_text(srna, "Workflow Shader", "Drawing definition in the 3D viewport");
+
+	prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "nodetree");
+	RNA_def_property_flag(prop, PROP_EDITABLE | PROP_CONTEXT_UPDATE);
+	RNA_def_property_ui_text(prop, "Node Tree", "Node tree for node based worlds");
 }
 
 static void rna_def_background_image(BlenderRNA *brna)
diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h
index cc8e17e..0f058dd 100644
--- a/source/blender/nodes/NOD_shader.h
+++ b/source/blender/nodes/NOD_shader.h
@@ -35,6 +35,7 @@
 #include "BKE_node.h"
 
 extern struct bNodeTreeType *ntreeType_Shader;
+extern struct bNodeTreeType *ntreeType_Workflow;
 
 
 /* the type definitions array */
diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c
index 500434e..e1a1109 100644
--- a/source/blender/nodes/shader/node_shader_tree.c
+++ b/source/blender/nodes/shader/node_shader_tree.c
@@ -219,12 +219,12 @@ static void workflow_get_from_context(const bContext *C, bNodeTreeType *UNUSED(t
 
 	if (v3d && v3d->activeworkflow) {
 		*r_id = &v3d->activeworkflow->id;
-		*r_ntree = v3d->activeworkflow->ntree;
+		*r_ntree = v3d->activeworkflow->nodetree;
 	}
 	else if (bmain->gpuworkflows.first) {
 		GPUWorkflowShader *wfshader = bmain->gpuworkflows.first;
 		*r_id = &wfshader->id;
-		*r_ntree = wfshader->ntree;
+		*r_ntree = wfshader->nodetree;
 	}
 	else {
 		*r_id = NULL;
@@ -238,14 +238,15 @@ static int workflow_tree_poll(const bContext *UNUSED(C), bNodeTreeType *UNUSED(t
 	return (U.gameflags & USER_VIEWPORT_2) != 0;
 }
 
+bNodeTreeType *ntreeType_Workflow;
 
 void register_node_tree_type_workflow(void)
 {
-	bNodeTreeType *tt = ntreeType_Shader = MEM_callocN(sizeof(bNodeTreeType), "shader node tree type");
+	bNodeTreeType *tt = ntreeType_Workflow = MEM_callocN(sizeof(bNodeTreeType), "shader node tree type");
 
-	tt->type = NTREE_SHADER;
+	tt->type = NTREE_WORKFLOW;
 	strcpy(tt->idname, "WorkflowNodeTree");
-	strcpy(tt->ui_name, "Workflow Shader");
+	strcpy(tt->ui_name, "Workflow");
 	tt->ui_icon = 0;    /* defined in drawnode.c */
 	strcpy(tt->ui_description, "Workflow nodes");




More information about the Bf-blender-cvs mailing list