Blender
V3.3
|
#include <cstring>
#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_array.hh"
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLI_vector.hh"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_lib_id.h"
#include "BKE_linestyle.h"
#include "BKE_node.h"
#include "BKE_node_tree_update.h"
#include "BKE_scene.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "GPU_material.h"
#include "RE_texture.h"
#include "UI_resources.h"
#include "NOD_common.h"
#include "node_common.h"
#include "node_exec.h"
#include "node_shader_util.hh"
#include "node_util.h"
Go to the source code of this file.
Classes | |
struct | branchIterData |
Variables | |
bNodeTreeType * | ntreeType_Shader |
Definition at line 916 of file node_shader_tree.cc.
References node, SH_NODE_ADD_SHADER, SH_NODE_BACKGROUND, SH_NODE_BSDF_ANISOTROPIC, SH_NODE_BSDF_DIFFUSE, SH_NODE_BSDF_GLASS, SH_NODE_BSDF_GLOSSY, SH_NODE_BSDF_HAIR, SH_NODE_BSDF_HAIR_PRINCIPLED, SH_NODE_BSDF_PRINCIPLED, SH_NODE_BSDF_REFRACTION, SH_NODE_BSDF_TOON, SH_NODE_BSDF_TRANSLUCENT, SH_NODE_BSDF_TRANSPARENT, SH_NODE_BSDF_VELVET, SH_NODE_EEVEE_SPECULAR, SH_NODE_EMISSION, SH_NODE_HOLDOUT, SH_NODE_MIX_SHADER, SH_NODE_SUBSURFACE_SCATTERING, SH_NODE_VOLUME_ABSORPTION, SH_NODE_VOLUME_PRINCIPLED, and SH_NODE_VOLUME_SCATTER.
Referenced by ntree_shader_shader_to_rgba_branch().
Definition at line 432 of file node_shader_tree.cc.
References BKE_ntree_update_tag_all(), BLI_addtail(), BLI_linklist_pop(), BLI_linklist_prepend(), BLI_remlink(), ELEM, ListBase::first, bNodeLink::fromsock, bNode::id, bNodeSocket::identifier, ListBase::last, bNodeTree::links, LISTBASE_FOREACH_MUTABLE, bNodeLink::next, node, NODE_DO_OUTPUT, NODE_GROUP_INPUT, NODE_GROUP_OUTPUT, nodeAddLink(), bNodeTree::nodes, ntree, ntreeFreeLocalNode(), and STREQ.
Referenced by ntree_shader_groups_flatten().
|
static |
Definition at line 111 of file node_shader_tree.cc.
References N_, NODE_CLASS_CONVERTER, 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 126 of file node_shader_tree.cc.
References LISTBASE_FOREACH_MUTABLE, node, NODE_MUTED, NODE_REROUTE, nodeInternalRelink(), bNodeTree::nodes, and ntreeFreeLocalNode().
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 540 of file node_shader_tree.cc.
References branchIterData::node_count, branchIterData::node_filter, and bNode::tmp_flag.
Referenced by ntree_shader_copy_branch().
|
static |
Definition at line 987 of file node_shader_tree.cc.
References bNode::tmp_flag.
Referenced by ntree_shader_pruned_unused().
|
static |
Definition at line 557 of file node_shader_tree.cc.
References callback, id, inputs, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, bNodeTree::links, LISTBASE_FOREACH, node, blender::bke::node_copy(), branchIterData::node_count, branchIterData::node_filter, nodeAddLink(), nodeChainIterBackwards(), bNodeTree::nodes, ntree, ntree_branch_count_and_tag_nodes(), ntree_shader_node_find_input(), ntree_shader_node_find_output(), outputs, bNode::tmp_flag, and user_data.
Referenced by ntree_shader_shader_to_rgba_branch().
|
static |
Definition at line 264 of file node_shader_tree.cc.
References BLI_assert, copy_v3_v3(), copy_v4_v4(), bNodeSocket::default_value, float(), node, nodeAddLink(), nodeAddStaticNode(), ntree_shader_node_find_output(), 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().
Definition at line 352 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), 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(), 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().
Definition at line 510 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), BLI_assert, ELEM, ListBase::first, flatten_group_do(), G, bNodeTree::id, MEM_freeN, node, NODE_CUSTOM_GROUP, NODE_GROUP, bNodeTree::nodes, ntreeFreeLocalNode(), ntreeFreeTree(), and ID::py_instance.
Referenced by ntreeGPUMaterialNodes().
Definition at line 416 of file node_shader_tree.cc.
References bNodeTree::links, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, node, NODE_GROUP, NODE_LINK_MUTED, nodeRemLink(), bNodeTree::nodes, and ntree.
Referenced by ntreeGPUMaterialNodes().
Definition at line 614 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), G, bNodeTree::links, LISTBASE_FOREACH_MUTABLE, nodeAddLink(), nodeAddStaticNode(), nodeRemLink(), ntree, ntree_shader_node_find_input(), ntree_shader_node_find_output(), NULL, SH_NODE_EMISSION, and SOCK_SHADER.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 240 of file node_shader_tree.cc.
References node, and ntree_shader_node_find_socket().
Referenced by ntree_shader_copy_branch(), ntree_shader_implicit_closure_cast(), and ntree_shader_weight_tree_invert().
|
static |
Definition at line 246 of file node_shader_tree.cc.
References node, and ntree_shader_node_find_socket().
Referenced by ntree_shader_copy_branch(), ntree_shader_expand_socket_default(), and ntree_shader_implicit_closure_cast().
|
static |
Definition at line 229 of file node_shader_tree.cc.
References LISTBASE_FOREACH, and STREQ.
Referenced by ntree_shader_node_find_input(), and ntree_shader_node_find_output().
|
static |
Definition at line 252 of file node_shader_tree.cc.
References BLI_findlink(), and node.
Referenced by ntree_shader_shader_to_rgba_branch(), ntree_shader_weight_tree_invert(), and ntree_weight_tree_merge_weight().
|
static |
Definition at line 258 of file node_shader_tree.cc.
References BLI_findlink(), and node.
Referenced by ntree_shader_shader_to_rgba_branch(), ntree_shader_weight_tree_invert(), and ntree_weight_tree_merge_weight().
Definition at line 997 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), G, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, node, nodeChainIterBackwards(), bNodeTree::nodes, ntree, ntree_branch_node_tag(), ntreeFreeLocalNode(), SH_NODE_OUTPUT_AOV, and bNode::tmp_flag.
Referenced by ntreeGPUMaterialNodes().
Definition at line 958 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), closure_node_filter(), bNodeLink::fromnode, G, bNodeSocket::link, LISTBASE_FOREACH, node, nodeAddLink(), nodeChainIterBackwards(), nodeRemLink(), bNodeTree::nodes, ntree, ntree_shader_copy_branch(), ntree_shader_node_input_get(), ntree_shader_node_output_get(), ntree_shader_weight_tree_invert(), and shader_to_rgba_node_gather().
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 317 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), ELEM, G, bNode::id, bNodeSocket::identifier, LISTBASE_FOREACH, node, NODE_CUSTOM_GROUP, NODE_GROUP, NODE_GROUP_INPUT, nodeRemLink(), bNodeTree::nodes, SOCK_HIDE_VALUE, and STREQ.
Referenced by ntree_shader_groups_expand_inputs().
Definition at line 683 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), BLI_assert, bNodeSocket::default_value, bNodeLink::fromnode, bNodeLink::fromsock, G, id, bNodeSocket::link, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, node, NODE_MATH_ADD, NODE_MATH_MULTIPLY, NODE_MATH_SUBTRACT, nodeAddLink(), nodeAddStaticNode(), nodeChainIterBackwards(), bNodeTree::nodes, ntree, ntree_shader_node_find_input(), ntree_shader_node_input_get(), ntree_shader_node_output_get(), ntree_weight_tree_merge_weight(), ntree_weight_tree_tag_nodes(), NULL, SH_NODE_ADD_SHADER, SH_NODE_BACKGROUND, SH_NODE_BSDF_ANISOTROPIC, SH_NODE_BSDF_DIFFUSE, SH_NODE_BSDF_GLASS, SH_NODE_BSDF_GLOSSY, SH_NODE_BSDF_HAIR, SH_NODE_BSDF_HAIR_PRINCIPLED, SH_NODE_BSDF_PRINCIPLED, SH_NODE_BSDF_REFRACTION, SH_NODE_BSDF_TOON, SH_NODE_BSDF_TRANSLUCENT, SH_NODE_BSDF_TRANSPARENT, SH_NODE_BSDF_VELVET, SH_NODE_EEVEE_SPECULAR, SH_NODE_EMISSION, SH_NODE_HOLDOUT, SH_NODE_MATH, SH_NODE_MIX_SHADER, SH_NODE_OUTPUT_LIGHT, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, SH_NODE_SHADERTORGB, SH_NODE_SUBSURFACE_SCATTERING, SH_NODE_VALUE, SH_NODE_VOLUME_ABSORPTION, SH_NODE_VOLUME_PRINCIPLED, SH_NODE_VOLUME_SCATTER, SHD_MATH_CLAMP, bNode::tmp_flag, and bNode::type.
Referenced by ntree_shader_shader_to_rgba_branch(), and ntreeGPUMaterialNodes().
|
static |
Definition at line 641 of file node_shader_tree.cc.
References bNode::custom1, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::link, NODE_MATH_ADD, nodeAddLink(), nodeAddStaticNode(), nodeRemLink(), ntree, ntree_shader_node_input_get(), ntree_shader_node_output_get(), NULL, SH_NODE_MATH, and bNode::tmp_flag.
Referenced by ntree_shader_weight_tree_invert().
|
static |
Definition at line 661 of file node_shader_tree.cc.
References ELEM, SH_NODE_ADD_SHADER, SH_NODE_MIX_SHADER, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, SH_NODE_SHADERTORGB, bNode::tmp_flag, and bNode::type.
Referenced by ntree_shader_weight_tree_invert().
void ntreeGPUMaterialNodes | ( | struct bNodeTree * | localtree, |
struct GPUMaterial * | mat | ||
) |
This one needs to work on a local tree.
Definition at line 1029 of file node_shader_tree.cc.
References exec(), LISTBASE_FOREACH, node, bNodeTree::nodes, ntree_shader_groups_expand_inputs(), ntree_shader_groups_flatten(), ntree_shader_groups_remove_muted_links(), ntree_shader_implicit_closure_cast(), ntree_shader_pruned_unused(), ntree_shader_shader_to_rgba_branch(), ntree_shader_weight_tree_invert(), ntreeExecGPUNodes(), ntreeShaderBeginExecTree(), ntreeShaderEndExecTree(), ntreeShaderOutputNode(), NULL, output, SH_NODE_OUTPUT_AOV, and SHD_OUTPUT_EEVEE.
bNodeTreeExec* ntreeShaderBeginExecTree | ( | bNodeTree * | ntree | ) |
Definition at line 1079 of file node_shader_tree.cc.
References blender::compositor::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 1058 of file node_shader_tree.cc.
References BLENDER_MAX_THREADS, blender::compositor::context, exec(), LISTBASE_FOREACH, MEM_callocN, node, ntree, ntree_exec_begin(), and ntreeSetOutput().
Referenced by ntreeShaderBeginExecTree().
void ntreeShaderEndExecTree | ( | bNodeTreeExec * | exec | ) |
Definition at line 1122 of file node_shader_tree.cc.
References exec(), bNodeTree::execdata, ntree, and ntreeShaderEndExecTree_internal().
Referenced by ntree_free_data(), and ntreeGPUMaterialNodes().
void ntreeShaderEndExecTree_internal | ( | bNodeTreeExec * | exec | ) |
Definition at line 1103 of file node_shader_tree.cc.
References Freestyle::a, BLENDER_MAX_THREADS, BLI_freelistN(), exec(), LISTBASE_FOREACH, MEM_freeN, and ntree_exec_end().
Referenced by ntreeShaderEndExecTree().
Find an output node of the shader tree.
Definition at line 188 of file node_shader_tree.cc.
References bNode::custom1, ELEM, bNode::flag, LISTBASE_FOREACH, node, NODE_DO_OUTPUT, bNodeTree::nodes, ntree, ntreeSetOutput(), 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().
Definition at line 163 of file node_shader_tree.cc.
References foreach_nodeclass(), bNodeTreeType::foreach_nodeclass, bNodeTreeType::get_from_context, bNodeTreeType::idname, localize(), bNodeTreeType::localize, N_, NTREE_SHADER, ntreeType_Shader, ntreeTypeAdd(), bNodeTreeType::poll, bNodeTreeType::rna_ext, shader_get_from_context(), shader_node_tree_socket_type_valid(), shader_tree_poll(), shader_validate_link(), ExtensionRNA::srna, bNodeTreeType::type, bNodeTreeType::ui_description, bNodeTreeType::ui_icon, bNodeTreeType::ui_name, update(), bNodeTreeType::update, bNodeTreeType::valid_socket_type, and bNodeTreeType::validate_link.
Referenced by BKE_node_system_init().
|
static |
Definition at line 65 of file node_shader_tree.cc.
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, 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 154 of file node_shader_tree.cc.
References ELEM, nodeIsStaticSocketType(), SOCK_FLOAT, SOCK_RGBA, SOCK_SHADER, SOCK_VECTOR, and bNodeSocketType::type.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 947 of file node_shader_tree.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), SH_NODE_SHADERTORGB, bNode::tmp_flag, and bNode::type.
Referenced by ntree_shader_shader_to_rgba_branch().
|
static |
Definition at line 54 of file node_shader_tree.cc.
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().
|
static |
Definition at line 144 of file node_shader_tree.cc.
References from, and SOCK_SHADER.
Referenced by register_node_tree_type_sh().
Definition at line 137 of file node_shader_tree.cc.
References ntree, ntree_update_reroute_nodes(), and ntreeSetOutput().
Referenced by register_node_tree_type_sh().
bNodeTreeType* ntreeType_Shader |
Definition at line 161 of file node_shader_tree.cc.
Referenced by default_paint_slot_color_get(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), 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(), blender::eevee::MaterialModule::MaterialModule(), register_node_tree_type_sh(), and blender::io::obj::ShaderNodetreeWrap::ShaderNodetreeWrap().