|
Blender
V2.93
|
#include <string.h>#include "DNA_light_types.h"#include "DNA_linestyle_types.h"#include "DNA_material_types.h"#include "DNA_node_types.h"#include "DNA_scene_types.h"#include "DNA_space_types.h"#include "DNA_workspace_types.h"#include "DNA_world_types.h"#include "BLI_alloca.h"#include "BLI_linklist.h"#include "BLI_listbase.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BLT_translation.h"#include "BKE_context.h"#include "BKE_lib_id.h"#include "BKE_linestyle.h"#include "BKE_node.h"#include "BKE_scene.h"#include "RNA_access.h"#include "GPU_material.h"#include "RE_texture.h"#include "NOD_common.h"#include "node_common.h"#include "node_exec.h"#include "node_shader_util.h"#include "node_util.h"Go to the source code of this file.
Classes | |
| struct | nTreeTags |
Typedefs | |
| typedef struct nTreeTags | nTreeTags |
Variables | |
| bNodeTreeType * | ntreeType_Shader |
Definition at line 433 of file node_shader_tree.c.
References BLI_addtail(), BLI_linklist_pop(), BLI_linklist_prepend(), BLI_remlink(), ELEM, ListBase::first, bNode::flag, bNodeLink::fromnode, bNodeLink::fromsock, bNode::id, bNodeSocket::identifier, ListBase::last, bNodeTree::links, bNodeLink::next, node, NODE_DO_OUTPUT, NODE_GROUP_INPUT, NODE_GROUP_OUTPUT, nodeAddLink(), bNodeTree::nodes, ntree, NTREE_UPDATE_LINKS, NTREE_UPDATE_NODES, ntreeFreeLocalNode(), NULL, STREQ, bNodeLink::tonode, bNodeLink::tosock, bNode::type, and bNodeTree::update.
Referenced by ntree_shader_groups_flatten().
|
static |
Definition at line 125 of file node_shader_tree.c.
References N_, NODE_CLASS_CONVERTOR, NODE_CLASS_GROUP, NODE_CLASS_INPUT, NODE_CLASS_INTERFACE, NODE_CLASS_LAYOUT, NODE_CLASS_OP_COLOR, NODE_CLASS_OP_VECTOR, NODE_CLASS_OUTPUT, NODE_CLASS_SCRIPT, NODE_CLASS_SHADER, and NODE_CLASS_TEXTURE.
Referenced by register_node_tree_type_sh().
Definition at line 160 of file node_shader_tree.c.
References BKE_node_preview_merge_tree(), and ntree.
Referenced by register_node_tree_type_sh().
Definition at line 155 of file node_shader_tree.c.
References BKE_node_preview_sync_tree(), and ntree.
Referenced by register_node_tree_type_sh().
Definition at line 140 of file node_shader_tree.c.
References ListBase::first, node, NODE_MUTED, NODE_REROUTE, nodeInternalRelink(), bNodeTree::nodes, and ntreeFreeLocalNode().
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 800 of file node_shader_tree.c.
References node.
Referenced by ntree_shader_bump_branches().
|
static |
Definition at line 646 of file node_shader_tree.c.
References bNode::tmp_flag.
Referenced by ntree_shader_copy_branch().
|
static |
Definition at line 810 of file node_shader_tree.c.
References bNodeLink::fromnode, bNodeLink::fromsock, height, bNodeSocket::identifier, bNodeSocket::link, node_tag_branch_as_derivative(), nodeAddLink(), ntree, ntree_shader_copy_branch(), ntree_shader_node_find_input(), ntree_shader_node_find_output(), SH_NODE_BUMP, and bNode::type.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 613 of file node_shader_tree.c.
References bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::link, nodeAddLink(), nodeAddStaticNode(), nodeRemLink(), ntree, ntree_shader_node_find_input(), ntree_shader_node_find_output(), NULL, SH_NODE_NEW_GEOMETRY, bNodeLink::tonode, and bNodeLink::tosock.
Referenced by ntree_shader_bypass_tagged_bump_nodes().
|
static |
Definition at line 633 of file node_shader_tree.c.
References G, bNodeTree::links, LISTBASE_FOREACH_MUTABLE, node, ntree, ntree_shader_bypass_bump_link(), ntreeUpdateTree(), and SH_NODE_BUMP.
Referenced by ntree_shader_relink_displacement().
|
static |
Definition at line 663 of file node_shader_tree.c.
References BKE_node_copy_ex(), callback, id, inputs, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, bNodeTree::links, LISTBASE_FOREACH, MEM_freeN, MEM_mallocN, node, nodeAddLink(), nodeChainIterBackwards(), bNodeTree::nodes, ntree, ntree_branch_count_and_tag_nodes(), ntree_shader_node_find_input(), ntree_shader_node_find_output(), NULL, outputs, bNode::tmp_flag, and user_data.
Referenced by ntree_shader_bump_branches(), and ntree_shader_copy_branch_displacement().
|
static |
Definition at line 714 of file node_shader_tree.c.
References G, bNodeSocket::identifier, nodeAddLink(), nodeRemLink(), ntree, ntree_shader_copy_branch(), ntree_shader_node_find_output(), ntreeUpdateTree(), NULL, bNodeLink::tonode, and bNodeLink::tosock.
Referenced by ntree_shader_relink_displacement().
|
static |
Definition at line 287 of file node_shader_tree.c.
References BLI_assert, copy_v3_v3(), copy_v4_v4(), bNodeSocket::default_value, float(), node, nodeAddLink(), nodeAddStaticNode(), ntree_shader_node_find_output(), NULL, SH_NODE_RGB, SH_NODE_VALUE, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_VECTOR, bNodeSocket::type, bNodeSocketValueInt::value, bNodeSocketValueFloat::value, bNodeSocketValueVector::value, and bNodeSocketValueRGBA::value.
Referenced by ntree_shader_groups_expand_inputs().
|
static |
Definition at line 376 of file node_shader_tree.c.
References copy_v3_fl(), bNode::custom1, bNodeSocket::default_value, ELEM, ListBase::first, bNodeLink::fromnode, bNodeLink::fromsock, G, bNode::inputs, ListBase::last, LISTBASE_FOREACH, bNodeSocket::next, node, NODE_CUSTOM_GROUP, NODE_DO_OUTPUT, NODE_GROUP, NODE_GROUP_OUTPUT, NODE_LINK_MUTED, NODE_VECTOR_MATH_DOT_PRODUCT, nodeAddLink(), nodeAddStaticNode(), bNodeTree::nodes, ntree_shader_expand_socket_default(), ntree_shader_unlink_hidden_value_sockets(), ntreeUpdateTree(), NULL, bNode::outputs, SH_NODE_RGBTOBW, SH_NODE_VECTOR_MATH, SOCK_FLOAT, SOCK_RGBA, SOCK_VECTOR, bNodeLink::tosock, bNodeSocket::type, and bNodeSocketValueVector::value.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 513 of file node_shader_tree.c.
References BLI_assert, ELEM, ListBase::first, flatten_group_do(), G, bNodeTree::id, MEM_freeN, node, NODE_CUSTOM_GROUP, NODE_GROUP, bNodeTree::nodes, ntreeFreeLocalNode(), ntreeFreeTree(), ntreeUpdateTree(), NULL, and ID::py_instance.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 543 of file node_shader_tree.c.
References bNodeLink::flag, bNodeLink::fromnode, bNodeLink::fromsock, G, bNodeSocket::link, NODE_LINK_MUTED, ntree, ntree_shader_node_find_input(), ntreeUpdateTree(), and NULL.
Referenced by ntree_shader_relink_displacement().
|
static |
Definition at line 596 of file node_shader_tree.c.
References ListBase::first, node, bNodeTree::nodes, ntree, ntree_shader_relink_node_normal(), and NULL.
Referenced by ntree_shader_relink_displacement().
|
static |
Definition at line 275 of file node_shader_tree.c.
References node, and ntree_shader_node_find_socket().
Referenced by ntree_shader_bump_branches(), ntree_shader_bypass_bump_link(), ntree_shader_copy_branch(), ntree_shader_has_displacement(), ntree_shader_relink_displacement(), and ntreeGPUMaterialNodes().
|
static |
Definition at line 281 of file node_shader_tree.c.
References node, and ntree_shader_node_find_socket().
Referenced by ntree_shader_bump_branches(), ntree_shader_bypass_bump_link(), ntree_shader_copy_branch(), ntree_shader_copy_branch_displacement(), ntree_shader_expand_socket_default(), and ntree_shader_relink_displacement().
|
static |
Definition at line 264 of file node_shader_tree.c.
References ListBase::first, NULL, and STREQ.
Referenced by ntree_shader_node_find_input(), and ntree_shader_node_find_output().
Definition at line 734 of file node_shader_tree.c.
References BLI_assert, bNode::custom1, ListBase::first, G, bNode::inputs, bNodeSocket::next, NODE_VECTOR_MATH_DOT_PRODUCT, nodeAddLink(), nodeAddStaticNode(), nodeRemLink(), ntree, ntree_shader_bypass_tagged_bump_nodes(), ntree_shader_copy_branch_displacement(), ntree_shader_has_displacement(), ntree_shader_link_builtin_normal(), ntree_shader_node_find_input(), ntree_shader_node_find_output(), ntreeUpdateTree(), NULL, SH_NODE_BUMP, SH_NODE_NEW_GEOMETRY, SH_NODE_VECTOR_MATH, and bNode::tmp_flag.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 571 of file node_shader_tree.c.
References ELEM, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::identifier, LISTBASE_FOREACH, node, nodeAddLink(), ntree, NULL, SH_NODE_NEW_GEOMETRY, SH_NODE_TEX_COORD, STREQ, and bNode::type.
Referenced by ntree_shader_link_builtin_normal().
Definition at line 871 of file node_shader_tree.c.
References G, nodeChainIterBackwards(), ntree, ntree_tag_bsdf_cb(), ntreeUpdateTree(), and NULL.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 340 of file node_shader_tree.c.
References ELEM, ListBase::first, G, bNode::id, bNodeSocket::identifier, LISTBASE_FOREACH, node, NODE_CUSTOM_GROUP, NODE_GROUP, NODE_GROUP_INPUT, nodeRemLink(), bNodeTree::nodes, ntreeUpdateTree(), NULL, SOCK_HIDE_VALUE, and STREQ.
Referenced by ntree_shader_groups_expand_inputs().
Definition at line 838 of file node_shader_tree.c.
References SH_NODE_BSDF_ANISOTROPIC, SH_NODE_BSDF_GLASS, SH_NODE_BSDF_GLOSSY, SH_NODE_BSDF_PRINCIPLED, SH_NODE_EEVEE_SPECULAR, SH_NODE_SUBSURFACE_SCATTERING, bNode::ssr_id, bNode::sss_id, and bNode::type.
Referenced by ntree_shader_tag_nodes().
| void ntreeGPUMaterialNodes | ( | bNodeTree * | localtree, |
| GPUMaterial * | mat, | ||
| bool * | has_surface_output, | ||
| bool * | has_volume_output | ||
| ) |
Definition at line 883 of file node_shader_tree.c.
References exec(), LISTBASE_FOREACH, node, nodeChainIterBackwards(), nodeCountSocketLinks(), bNodeTree::nodes, ntree_shader_bump_branches(), ntree_shader_groups_expand_inputs(), ntree_shader_groups_flatten(), ntree_shader_node_find_input(), ntree_shader_relink_displacement(), ntree_shader_tag_nodes(), ntreeExecGPUNodes(), ntreeShaderBeginExecTree(), ntreeShaderEndExecTree(), ntreeShaderOutputNode(), NULL, output, SH_NODE_OUTPUT_AOV, SHD_OUTPUT_EEVEE, and nTreeTags::ssr_id.
| bNodeTreeExec* ntreeShaderBeginExecTree | ( | bNodeTree * | ntree | ) |
Definition at line 977 of file node_shader_tree.c.
References context, exec(), bNodeTree::execdata, NODE_INSTANCE_KEY_BASE, ntree, ntreeShaderBeginExecTree_internal(), and bNodeTree::previews.
Referenced by ntreeGPUMaterialNodes().
| bNodeTreeExec* ntreeShaderBeginExecTree_internal | ( | bNodeExecContext * | context, |
| bNodeTree * | ntree, | ||
| bNodeInstanceKey | parent_key | ||
| ) |
Definition at line 954 of file node_shader_tree.c.
References BLENDER_MAX_THREADS, context, exec(), MEM_callocN, node, ntree, ntree_exec_begin(), and ntreeSetOutput().
Referenced by group_initexec(), and ntreeShaderBeginExecTree().
| void ntreeShaderEndExecTree | ( | bNodeTreeExec * | exec | ) |
Definition at line 1023 of file node_shader_tree.c.
References exec(), bNodeTree::execdata, ntree, ntreeShaderEndExecTree_internal(), and NULL.
Referenced by ntree_free_data(), and ntreeGPUMaterialNodes().
| void ntreeShaderEndExecTree_internal | ( | bNodeTreeExec * | exec | ) |
Definition at line 1001 of file node_shader_tree.c.
References Freestyle::a, BLENDER_MAX_THREADS, BLI_freelistN(), exec(), MEM_freeN, bNodeThreadStack::next, ntree_exec_end(), NULL, and bNodeThreadStack::stack.
Referenced by group_freeexec(), and ntreeShaderEndExecTree().
Definition at line 223 of file node_shader_tree.c.
References bNode::custom1, ELEM, bNode::flag, LISTBASE_FOREACH, node, NODE_DO_OUTPUT, bNodeTree::nodes, ntree, ntreeSetOutput(), NULL, SH_NODE_OUTPUT_LIGHT, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, and SHD_OUTPUT_ALL.
Referenced by light_emission_node_to_energy(), and ntreeGPUMaterialNodes().
| void register_node_tree_type_sh | ( | void | ) |
Definition at line 189 of file node_shader_tree.c.
References foreach_nodeclass(), bNodeTreeType::foreach_nodeclass, bNodeTreeType::get_from_context, bNodeTreeType::idname, local_merge(), bNodeTreeType::local_merge, local_sync(), bNodeTreeType::local_sync, localize(), bNodeTreeType::localize, MEM_callocN, N_, NTREE_SHADER, ntreeType_Shader, ntreeTypeAdd(), bNodeTreeType::poll, bNodeTreeType::rna_ext, RNA_ShaderNodeTree, shader_get_from_context(), shader_tree_poll(), shader_validate_link(), ExtensionRNA::srna, bNodeTreeType::type, bNodeTreeType::ui_description, bNodeTreeType::ui_icon, bNodeTreeType::ui_name, update(), bNodeTreeType::update, and bNodeTreeType::validate_link.
Referenced by BKE_node_system_init().
|
static |
Definition at line 79 of file node_shader_tree.c.
References Object::actcol, BKE_linestyle_active_from_view_layer(), BKE_object_material_get(), C, CTX_data_scene(), CTX_data_view_layer(), CTX_wm_space_node(), Object::data, FreestyleLineStyle::id, Material::id, Object::id, World::id, linestyle, FreestyleLineStyle::nodetree, Material::nodetree, World::nodetree, NULL, OB_LAMP, OBACT, scene, SpaceNode::shaderfrom, SNODE_SHADER_LINESTYLE, SNODE_SHADER_OBJECT, Object::type, and Scene::world.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 68 of file node_shader_tree.c.
References BKE_scene_use_shading_nodes_custom(), C, CTX_data_scene(), RenderData::engine, Scene::r, RE_engine_id_CYCLES, scene, and STREQ.
Referenced by register_node_tree_type_sh().
Definition at line 177 of file node_shader_tree.c.
References bNodeLink::fromsock, SOCK_SHADER, bNodeLink::tosock, and bNodeSocket::type.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 165 of file node_shader_tree.c.
References BKE_node_preview_remove_unused(), ntree, NTREE_UPDATE_NODES, ntree_update_reroute_nodes(), ntreeSetOutput(), and bNodeTree::update.
Referenced by register_node_tree_type_sh().
| bNodeTreeType* ntreeType_Shader |
Definition at line 187 of file node_shader_tree.c.
Referenced by ED_node_init_butfuncs(), ED_node_is_shader(), ED_node_shader_default(), EEVEE_material_default_diffuse_get(), EEVEE_material_default_error_get(), EEVEE_material_default_glossy_get(), EEVEE_shader_default_surface_nodetree(), EEVEE_shader_default_world_nodetree(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), and register_node_tree_type_sh().