forked from bartvdbraak/blender
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.
This commit is contained in:
parent
c68c32a409
commit
832f54a1aa
@ -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"),
|
||||
]),
|
||||
|
Loading…
Reference in New Issue
Block a user