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:
authorThomas Dinges <blender@dingto.org>2014-10-01 08:23:43 +0400
committerThomas Dinges <blender@dingto.org>2014-10-01 09:23:16 +0400
commit832f54a1aa582937d410b01f7f4b56751e0a30f6 (patch)
tree525b6f400a10364aef35f37feba2c88223556b8f /release
parentc68c32a409526a66c99e6762a492c2d7a3caf9b4 (diff)
Cycles: Filter Shader and Output nodes to their respective object/world node tree.
Some nodes only work in certain node trees, so don't show them in the Add Node menu when this is the case. This can probably be expanded to Input Nodes too, but need to double check some cases here still.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/nodeitems_builtins.py50
1 files changed, 32 insertions, 18 deletions
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 5dccda789e0..8c2476bd430 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -112,6 +112,20 @@ def line_style_shader_nodes_poll(context):
snode.shader_type == 'LINESTYLE')
+# only show nodes working in world node trees
+def world_shader_nodes_poll(context):
+ snode = context.space_data
+ return (snode.tree_type == 'ShaderNodeTree' and
+ snode.shader_type == 'WORLD')
+
+
+# only show nodes working in object node trees
+def object_shader_nodes_poll(context):
+ snode = context.space_data
+ return (snode.tree_type == 'ShaderNodeTree' and
+ snode.shader_type == 'OBJECT')
+
+
# All standard node categories currently used in nodes.
shader_node_categories = [
@@ -180,30 +194,30 @@ shader_node_categories = [
NodeItem("NodeGroupInput", poll=group_input_output_item_poll),
]),
ShaderNewNodeCategory("SH_NEW_OUTPUT", "Output", items=[
- NodeItem("ShaderNodeOutputMaterial"),
- NodeItem("ShaderNodeOutputLamp"),
- NodeItem("ShaderNodeOutputWorld"),
+ NodeItem("ShaderNodeOutputMaterial", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeOutputLamp", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeOutputWorld", poll=world_shader_nodes_poll),
NodeItem("ShaderNodeOutputLineStyle", poll=line_style_shader_nodes_poll),
NodeItem("NodeGroupOutput", poll=group_input_output_item_poll),
]),
ShaderNewNodeCategory("SH_NEW_SHADER", "Shader", items=[
NodeItem("ShaderNodeMixShader"),
NodeItem("ShaderNodeAddShader"),
- NodeItem("ShaderNodeBsdfDiffuse"),
- NodeItem("ShaderNodeBsdfGlossy"),
- NodeItem("ShaderNodeBsdfTransparent"),
- NodeItem("ShaderNodeBsdfRefraction"),
- NodeItem("ShaderNodeBsdfGlass"),
- NodeItem("ShaderNodeBsdfTranslucent"),
- NodeItem("ShaderNodeBsdfAnisotropic"),
- NodeItem("ShaderNodeBsdfVelvet"),
- NodeItem("ShaderNodeBsdfToon"),
- NodeItem("ShaderNodeSubsurfaceScattering"),
- NodeItem("ShaderNodeEmission"),
- NodeItem("ShaderNodeBsdfHair"),
- NodeItem("ShaderNodeBackground"),
- NodeItem("ShaderNodeAmbientOcclusion"),
- NodeItem("ShaderNodeHoldout"),
+ NodeItem("ShaderNodeBsdfDiffuse", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfGlossy", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfTransparent", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfRefraction", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfGlass", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfTranslucent", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfAnisotropic", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfVelvet", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfToon", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeSubsurfaceScattering", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeEmission", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBsdfHair", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeBackground", poll=world_shader_nodes_poll),
+ NodeItem("ShaderNodeAmbientOcclusion", poll=object_shader_nodes_poll),
+ NodeItem("ShaderNodeHoldout", poll=object_shader_nodes_poll),
NodeItem("ShaderNodeVolumeAbsorption"),
NodeItem("ShaderNodeVolumeScatter"),
]),