|
Blender V4.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_world_types.h"#include "BLI_array.hh"#include "BLI_linklist.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_set.hh"#include "BLI_string.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BLI_vector.hh"#include "BKE_context.hh"#include "BKE_global.hh"#include "BKE_layer.hh"#include "BKE_lib_id.hh"#include "BKE_linestyle.h"#include "BKE_material.h"#include "BKE_node.hh"#include "BKE_node_runtime.hh"#include "BKE_node_tree_update.hh"#include "BKE_scene.hh"#include "RNA_prototypes.hh"#include "UI_resources.hh"#include "NOD_shader.h"#include "node_common.h"#include "node_exec.hh"#include "node_shader_util.hh"#include "node_util.hh"Go to the source code of this file.
Classes | |
| struct | branchIterData |
Variables | |
| blender::bke::bNodeTreeType * | ntreeType_Shader |
|
static |
Definition at line 991 of file node_shader_tree.cc.
References SH_NODE_ADD_SHADER, SH_NODE_BACKGROUND, SH_NODE_BSDF_DIFFUSE, SH_NODE_BSDF_GLASS, SH_NODE_BSDF_GLOSSY, SH_NODE_BSDF_HAIR, SH_NODE_BSDF_HAIR_PRINCIPLED, SH_NODE_BSDF_METALLIC, SH_NODE_BSDF_PRINCIPLED, SH_NODE_BSDF_RAY_PORTAL, SH_NODE_BSDF_REFRACTION, SH_NODE_BSDF_SHEEN, SH_NODE_BSDF_TOON, SH_NODE_BSDF_TRANSLUCENT, SH_NODE_BSDF_TRANSPARENT, 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_branches().
Definition at line 460 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, blender::bke::node_add_link(), NODE_DO_OUTPUT, NODE_GROUP_INPUT, NODE_GROUP_OUTPUT, blender::bke::node_tree_free_local_node(), blender::bke::node_unique_id(), bNodeTree::nodes, bNodeTree::runtime, and STREQ.
Referenced by ntree_shader_groups_flatten().
|
static |
Definition at line 112 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().
|
static |
Definition at line 1045 of file node_shader_tree.cc.
References bNodeLink::flag, bNodeLink::fromnode, iter_shader_to_rgba_depth_count(), LISTBASE_FOREACH, NODE_LINK_VALID, and SH_NODE_SHADERTORGB.
Referenced by iter_shader_to_rgba_depth_count(), and ntreeGPUMaterialNodes().
Definition at line 127 of file node_shader_tree.cc.
References LISTBASE_FOREACH_MUTABLE, MEM_freeN(), blender::bke::node_internal_relink(), NODE_MUTED, NODE_REROUTE, blender::bke::node_tree_free_local_node(), blender::bke::node_tree_free_tree(), and bNodeTree::nodes.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 575 of file node_shader_tree.cc.
References branchIterData::node_count, branchIterData::node_filter, and bNode::runtime.
Referenced by ntree_shader_copy_branch().
Definition at line 1160 of file node_shader_tree.cc.
References bNode::runtime.
Referenced by ntree_shader_pruned_unused().
|
static |
Definition at line 594 of file node_shader_tree.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), copy(), bNode::identifier, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, bNodeTree::links, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, blender::bke::node_add_link(), blender::bke::node_chain_iterator_backwards(), blender::bke::node_copy(), branchIterData::node_count, branchIterData::node_filter, blender::bke::node_remove_link(), blender::bke::node_unique_id(), bNodeTree::nodes, ntree_branch_count_and_tag_nodes(), ntree_shader_node_find_input(), and ntree_shader_node_find_output().
Referenced by ntree_shader_shader_to_rgba_branches().
|
static |
Definition at line 1123 of file node_shader_tree.cc.
References NodeShaderMix::clamp_factor, NodeShaderMix::data_type, NodeShaderMix::factor_mode, LISTBASE_FOREACH, NODE_MIX_MODE_UNIFORM, bNodeTree::nodes, shader_node_disconnect_inactive_mix_branch(), shader_node_disconnect_input(), SOCK_FLOAT, SOCK_RGBA, and SOCK_VECTOR.
Referenced by ntree_shader_pruned_unused().
|
static |
Definition at line 280 of file node_shader_tree.cc.
References BLI_assert, copy_v3_v3(), copy_v4_v4(), bNodeSocket::default_value, float, blender::bke::node_add_link(), blender::bke::node_add_static_node(), ntree_shader_node_find_output(), SH_NODE_RGB, SH_NODE_VALUE, SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_VECTOR, bNodeSocket::type, bNodeSocketValueBoolean::value, bNodeSocketValueFloat::value, bNodeSocketValueInt::value, bNodeSocketValueRGBA::value, and bNodeSocketValueVector::value.
Referenced by ntree_shader_groups_expand_inputs().
|
static |
Definition at line 378 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, blender::bke::node_add_link(), blender::bke::node_add_static_node(), NODE_CUSTOM_GROUP, NODE_DO_OUTPUT, NODE_GROUP, NODE_GROUP_OUTPUT, NODE_LINK_MUTED, NODE_VECTOR_MATH_DOT_PRODUCT, bNodeTree::nodes, ntree_shader_expand_socket_default(), ntree_shader_groups_expand_inputs(), 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 ntree_shader_groups_expand_inputs(), and ntreeGPUMaterialNodes().
|
static |
Definition at line 544 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, blender::bke::node_tree_free_local_node(), blender::bke::node_tree_free_tree(), bNodeTree::nodes, and ID::py_instance.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 444 of file node_shader_tree.cc.
References bNodeTree::links, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, NODE_GROUP, NODE_LINK_MUTED, blender::bke::node_remove_link(), bNodeTree::nodes, and ntree_shader_groups_remove_muted_links().
Referenced by ntree_shader_groups_remove_muted_links(), and ntreeGPUMaterialNodes().
|
static |
Definition at line 682 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), G, bNodeTree::links, LISTBASE_FOREACH_MUTABLE, blender::bke::node_add_link(), blender::bke::node_add_static_node(), blender::bke::node_remove_link(), ntree_shader_node_find_input(), ntree_shader_node_find_output(), and SOCK_SHADER.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 256 of file node_shader_tree.cc.
References 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 262 of file node_shader_tree.cc.
References 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 245 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 268 of file node_shader_tree.cc.
References BLI_findlink().
Referenced by ntree_shader_shader_to_rgba_branches(), ntree_shader_weight_tree_invert(), ntree_weight_tree_merge_weight(), shader_node_disconnect_inactive_mix_branch(), and shader_node_disconnect_input().
|
static |
Definition at line 274 of file node_shader_tree.cc.
References BLI_findlink().
Referenced by ntree_shader_weight_tree_invert(), and ntree_weight_tree_merge_weight().
Definition at line 1170 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), G, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, blender::bke::node_chain_iterator_backwards(), blender::bke::node_tree_free_local_node(), bNodeTree::nodes, ntree_branch_node_tag(), ntree_shader_disconnect_inactive_mix_branches(), bNode::runtime, and SH_NODE_OUTPUT_AOV.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 1024 of file node_shader_tree.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BKE_ntree_update_main_tree(), closure_node_filter(), G, bNodeSocket::link, LISTBASE_FOREACH, bNodeTree::nodes, ntree_shader_copy_branch(), ntree_shader_node_input_get(), ntree_shader_weight_tree_invert(), and SH_NODE_SHADERTORGB.
Referenced by ntreeGPUMaterialNodes().
|
static |
Definition at line 343 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), ELEM, G, bNode::id, bNodeSocket::identifier, LISTBASE_FOREACH, NODE_CUSTOM_GROUP, NODE_GROUP, NODE_GROUP_INPUT, blender::bke::node_remove_link(), bNodeTree::nodes, ntree_shader_unlink_hidden_value_sockets(), SOCK_HIDE_VALUE, and STREQ.
Referenced by ntree_shader_groups_expand_inputs(), and ntree_shader_unlink_hidden_value_sockets().
Definition at line 753 of file node_shader_tree.cc.
References BKE_ntree_update_main_tree(), BLI_assert, bNodeSocket::default_value, bNodeSocket::flag, bNodeLink::fromnode, bNodeLink::fromsock, G, bNodeSocket::link, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, blender::bke::node_add_link(), blender::bke::node_add_static_node(), blender::bke::node_chain_iterator_backwards(), NODE_MATH_ADD, NODE_MATH_MULTIPLY, NODE_MATH_SUBTRACT, bNodeTree::nodes, 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(), bNode::runtime, SH_NODE_ADD_SHADER, SH_NODE_BACKGROUND, SH_NODE_BSDF_DIFFUSE, SH_NODE_BSDF_GLASS, SH_NODE_BSDF_GLOSSY, SH_NODE_BSDF_HAIR, SH_NODE_BSDF_HAIR_PRINCIPLED, SH_NODE_BSDF_METALLIC, SH_NODE_BSDF_PRINCIPLED, SH_NODE_BSDF_RAY_PORTAL, SH_NODE_BSDF_REFRACTION, SH_NODE_BSDF_SHEEN, SH_NODE_BSDF_TOON, SH_NODE_BSDF_TRANSLUCENT, SH_NODE_BSDF_TRANSPARENT, 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, and bNode::type.
Referenced by ntree_shader_shader_to_rgba_branches(), and ntreeGPUMaterialNodes().
|
static |
Definition at line 709 of file node_shader_tree.cc.
References bNode::custom1, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::link, blender::bke::node_add_link(), blender::bke::node_add_static_node(), NODE_MATH_ADD, blender::bke::node_remove_link(), ntree_shader_node_input_get(), ntree_shader_node_output_get(), bNode::runtime, and SH_NODE_MATH.
Referenced by ntree_shader_weight_tree_invert().
|
static |
Definition at line 729 of file node_shader_tree.cc.
References ELEM, bNode::runtime, SH_NODE_MIX_SHADER, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, SH_NODE_SHADERTORGB, 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 1206 of file node_shader_tree.cc.
References exec(), iter_shader_to_rgba_depth_count(), LISTBASE_FOREACH, 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_branches(), ntree_shader_weight_tree_invert(), ntreeExecGPUNodes(), ntreeShaderBeginExecTree(), ntreeShaderEndExecTree(), ntreeShaderOutputNode(), SH_NODE_OUTPUT_AOV, and SHD_OUTPUT_EEVEE.
| bNodeTreeExec * ntreeShaderBeginExecTree | ( | bNodeTree * | ntree | ) |
Definition at line 1274 of file node_shader_tree.cc.
References exec(), blender::bke::NODE_INSTANCE_KEY_BASE, ntreeShaderBeginExecTree_internal(), bNodeTree::previews, and bNodeTree::runtime.
Referenced by ntreeGPUMaterialNodes().
| bNodeTreeExec * ntreeShaderBeginExecTree_internal | ( | bNodeExecContext * | context, |
| bNodeTree * | ntree, | ||
| bNodeInstanceKey | parent_key ) |
Definition at line 1253 of file node_shader_tree.cc.
References BLENDER_MAX_THREADS, exec(), LISTBASE_FOREACH, MEM_callocN, blender::bke::node_tree_set_output(), and ntree_exec_begin().
Referenced by ntreeShaderBeginExecTree().
| void ntreeShaderEndExecTree | ( | bNodeTreeExec * | exec | ) |
Definition at line 1317 of file node_shader_tree.cc.
References exec(), ntreeShaderEndExecTree_internal(), and bNodeTree::runtime.
Referenced by blender::bke::ntree_free_data(), and ntreeGPUMaterialNodes().
| void ntreeShaderEndExecTree_internal | ( | bNodeTreeExec * | exec | ) |
Definition at line 1298 of file node_shader_tree.cc.
References 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 204 of file node_shader_tree.cc.
References bNode::custom1, ELEM, bNode::flag, LISTBASE_FOREACH, node, NODE_DO_OUTPUT, blender::bke::node_tree_set_output(), bNodeTree::nodes, SH_NODE_OUTPUT_LIGHT, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, and SHD_OUTPUT_ALL.
Referenced by blender::nodes::materialx::export_to_materialx(), blender::io::hydra::WorldData::init(), light_emission_node_to_energy(), and ntreeGPUMaterialNodes().
| void register_node_tree_type_sh | ( | ) |
Definition at line 177 of file node_shader_tree.cc.
References blender::bke::bNodeTreeType::foreach_nodeclass, foreach_nodeclass(), blender::bke::bNodeTreeType::get_from_context, blender::bke::bNodeTreeType::group_idname, blender::bke::bNodeTreeType::idname, blender::bke::bNodeTreeType::localize, localize(), N_, blender::bke::node_tree_type_add(), NTREE_SHADER, ntreeType_Shader, blender::bke::bNodeTreeType::poll, blender::bke::bNodeTreeType::rna_ext, shader_get_from_context(), shader_node_tree_socket_type_valid(), shader_tree_poll(), shader_validate_link(), ExtensionRNA::srna, STRNCPY, blender::bke::bNodeTreeType::type, blender::bke::bNodeTreeType::ui_description, blender::bke::bNodeTreeType::ui_icon, blender::bke::bNodeTreeType::ui_name, blender::bke::bNodeTreeType::update, update(), blender::bke::bNodeTreeType::valid_socket_type, and blender::bke::bNodeTreeType::validate_link.
Referenced by register_shader_nodes().
|
static |
Definition at line 65 of file node_shader_tree.cc.
References Object::actcol, BKE_linestyle_active_from_view_layer(), BKE_object_material_get(), BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_space_node(), Object::data, FreestyleLineStyle::id, Material::id, Object::id, linestyle, FreestyleLineStyle::nodetree, Material::nodetree, OB_LAMP, SpaceNode::shaderfrom, SNODE_SHADER_LINESTYLE, SNODE_SHADER_OBJECT, and Object::type.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 1081 of file node_shader_tree.cc.
References clamp_f(), bNodeSocket::link, ntree_shader_node_input_get(), shader_node_disconnect_input(), SOCK_FLOAT, SOCK_VECTOR, and bNodeSocket::type.
Referenced by ntree_shader_disconnect_inactive_mix_branches().
Definition at line 1073 of file node_shader_tree.cc.
References bNodeSocket::link, blender::bke::node_remove_link(), and ntree_shader_node_input_get().
Referenced by ntree_shader_disconnect_inactive_mix_branches(), and shader_node_disconnect_inactive_mix_branch().
|
static |
Definition at line 163 of file node_shader_tree.cc.
References ELEM, blender::bke::node_is_static_socket_type(), SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_SHADER, SOCK_VECTOR, and blender::bke::bNodeSocketType::type.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 54 of file node_shader_tree.cc.
References BKE_scene_use_shading_nodes_custom(), CTX_data_scene(), RE_engine_id_CYCLES, and STREQ.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 153 of file node_shader_tree.cc.
References SOCK_SHADER.
Referenced by register_node_tree_type_sh().
|
static |
Definition at line 146 of file node_shader_tree.cc.
References blender::bke::node_tree_set_output(), and ntree_update_reroute_nodes().
Referenced by register_node_tree_type_sh().
| blender::bke::bNodeTreeType* ntreeType_Shader |
Definition at line 175 of file node_shader_tree.cc.
Referenced by blender::io::obj::create_mtl_node_tree(), default_paint_slot_color_get(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), ED_node_is_shader(), ED_node_shader_default(), blender::eevee::LookdevWorld::LookdevWorld(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_group_idname(), and register_node_tree_type_sh().