[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