Blender  V2.93
Classes | Typedefs | Functions | Variables
node_shader_tree.c File Reference
#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
 

Functions

static void ntree_shader_tag_nodes (bNodeTree *ntree, bNode *output_node, nTreeTags *tags)
 
static bool shader_tree_poll (const bContext *C, bNodeTreeType *UNUSED(treetype))
 
static void shader_get_from_context (const bContext *C, bNodeTreeType *UNUSED(treetype), bNodeTree **r_ntree, ID **r_id, ID **r_from)
 
static void foreach_nodeclass (Scene *UNUSED(scene), void *calldata, bNodeClassCallback func)
 
static void localize (bNodeTree *localtree, bNodeTree *UNUSED(ntree))
 
static void local_sync (bNodeTree *localtree, bNodeTree *ntree)
 
static void local_merge (Main *UNUSED(bmain), bNodeTree *localtree, bNodeTree *ntree)
 
static void update (bNodeTree *ntree)
 
static bool shader_validate_link (bNodeTree *UNUSED(ntree), bNodeLink *link)
 
void register_node_tree_type_sh (void)
 
bNodentreeShaderOutputNode (bNodeTree *ntree, int target)
 
static bNodeSocketntree_shader_node_find_socket (ListBase *sockets, const char *identifier)
 
static bNodeSocketntree_shader_node_find_input (bNode *node, const char *identifier)
 
static bNodeSocketntree_shader_node_find_output (bNode *node, const char *identifier)
 
static bool ntree_shader_expand_socket_default (bNodeTree *localtree, bNode *node, bNodeSocket *socket)
 
static void ntree_shader_unlink_hidden_value_sockets (bNode *group_node, bNodeSocket *isock)
 
static void ntree_shader_groups_expand_inputs (bNodeTree *localtree)
 
static void flatten_group_do (bNodeTree *ntree, bNode *gnode)
 
static void ntree_shader_groups_flatten (bNodeTree *localtree)
 
static bool ntree_shader_has_displacement (bNodeTree *ntree, bNode *output_node, bNode **r_node, bNodeSocket **r_socket, bNodeLink **r_link)
 
static void ntree_shader_relink_node_normal (bNodeTree *ntree, bNode *node, bNode *node_from, bNodeSocket *socket_from)
 
static void ntree_shader_link_builtin_normal (bNodeTree *ntree, bNode *node_from, bNodeSocket *socket_from)
 
static void ntree_shader_bypass_bump_link (bNodeTree *ntree, bNode *bump_node, bNodeLink *bump_link)
 
static void ntree_shader_bypass_tagged_bump_nodes (bNodeTree *ntree)
 
static bool ntree_branch_count_and_tag_nodes (bNode *fromnode, bNode *tonode, void *userdata)
 
static bNodentree_shader_copy_branch (bNodeTree *ntree, bNode *start_node, void(*callback)(bNode *node, int user_data), int user_data)
 
static void ntree_shader_copy_branch_displacement (bNodeTree *ntree, bNode *displacement_node, bNodeSocket *displacement_socket, bNodeLink *displacement_link)
 
static void ntree_shader_relink_displacement (bNodeTree *ntree, bNode *output_node)
 
static void node_tag_branch_as_derivative (bNode *node, int dx)
 
static bool ntree_shader_bump_branches (bNode *fromnode, bNode *UNUSED(tonode), void *userdata)
 
static bool ntree_tag_bsdf_cb (bNode *fromnode, bNode *UNUSED(tonode), void *userdata)
 
void ntreeGPUMaterialNodes (bNodeTree *localtree, GPUMaterial *mat, bool *has_surface_output, bool *has_volume_output)
 
bNodeTreeExecntreeShaderBeginExecTree_internal (bNodeExecContext *context, bNodeTree *ntree, bNodeInstanceKey parent_key)
 
bNodeTreeExecntreeShaderBeginExecTree (bNodeTree *ntree)
 
void ntreeShaderEndExecTree_internal (bNodeTreeExec *exec)
 
void ntreeShaderEndExecTree (bNodeTreeExec *exec)
 

Variables

bNodeTreeTypentreeType_Shader
 

Typedef Documentation

◆ nTreeTags

typedef struct nTreeTags nTreeTags

Function Documentation

◆ flatten_group_do()

static void flatten_group_do ( bNodeTree ntree,
bNode gnode 
)
static

◆ foreach_nodeclass()

static void foreach_nodeclass ( Scene UNUSEDscene,
void *  calldata,
bNodeClassCallback  func 
)
static

◆ local_merge()

static void local_merge ( Main UNUSEDbmain,
bNodeTree localtree,
bNodeTree ntree 
)
static

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().

◆ local_sync()

static void local_sync ( bNodeTree localtree,
bNodeTree ntree 
)
static

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().

◆ localize()

static void localize ( bNodeTree localtree,
bNodeTree UNUSEDntree 
)
static

◆ node_tag_branch_as_derivative()

static void node_tag_branch_as_derivative ( bNode node,
int  dx 
)
static

Definition at line 800 of file node_shader_tree.c.

References node.

Referenced by ntree_shader_bump_branches().

◆ ntree_branch_count_and_tag_nodes()

static bool ntree_branch_count_and_tag_nodes ( bNode fromnode,
bNode tonode,
void *  userdata 
)
static

Definition at line 646 of file node_shader_tree.c.

References bNode::tmp_flag.

Referenced by ntree_shader_copy_branch().

◆ ntree_shader_bump_branches()

static bool ntree_shader_bump_branches ( bNode fromnode,
bNode UNUSEDtonode,
void *  userdata 
)
static

◆ ntree_shader_bypass_bump_link()

static void ntree_shader_bypass_bump_link ( bNodeTree ntree,
bNode bump_node,
bNodeLink bump_link 
)
static

◆ ntree_shader_bypass_tagged_bump_nodes()

static void ntree_shader_bypass_tagged_bump_nodes ( bNodeTree ntree)
static

◆ ntree_shader_copy_branch()

static bNode* ntree_shader_copy_branch ( bNodeTree ntree,
bNode start_node,
void(*)(bNode *node, int user_data callback,
int  user_data 
)
static

◆ ntree_shader_copy_branch_displacement()

static void ntree_shader_copy_branch_displacement ( bNodeTree ntree,
bNode displacement_node,
bNodeSocket displacement_socket,
bNodeLink displacement_link 
)
static

◆ ntree_shader_expand_socket_default()

static bool ntree_shader_expand_socket_default ( bNodeTree localtree,
bNode node,
bNodeSocket socket 
)
static

◆ ntree_shader_groups_expand_inputs()

static void ntree_shader_groups_expand_inputs ( bNodeTree localtree)
static

◆ ntree_shader_groups_flatten()

static void ntree_shader_groups_flatten ( bNodeTree localtree)
static

◆ ntree_shader_has_displacement()

static bool ntree_shader_has_displacement ( bNodeTree ntree,
bNode output_node,
bNode **  r_node,
bNodeSocket **  r_socket,
bNodeLink **  r_link 
)
static

◆ ntree_shader_link_builtin_normal()

static void ntree_shader_link_builtin_normal ( bNodeTree ntree,
bNode node_from,
bNodeSocket socket_from 
)
static

◆ ntree_shader_node_find_input()

static bNodeSocket* ntree_shader_node_find_input ( bNode node,
const char *  identifier 
)
static

◆ ntree_shader_node_find_output()

static bNodeSocket* ntree_shader_node_find_output ( bNode node,
const char *  identifier 
)
static

◆ ntree_shader_node_find_socket()

static bNodeSocket* ntree_shader_node_find_socket ( ListBase sockets,
const char *  identifier 
)
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().

◆ ntree_shader_relink_displacement()

static void ntree_shader_relink_displacement ( bNodeTree ntree,
bNode output_node 
)
static

◆ ntree_shader_relink_node_normal()

static void ntree_shader_relink_node_normal ( bNodeTree ntree,
bNode node,
bNode node_from,
bNodeSocket socket_from 
)
static

◆ ntree_shader_tag_nodes()

void ntree_shader_tag_nodes ( bNodeTree ntree,
bNode output_node,
nTreeTags tags 
)
static

◆ ntree_shader_unlink_hidden_value_sockets()

static void ntree_shader_unlink_hidden_value_sockets ( bNode group_node,
bNodeSocket isock 
)
static

◆ ntree_tag_bsdf_cb()

static bool ntree_tag_bsdf_cb ( bNode fromnode,
bNode UNUSEDtonode,
void *  userdata 
)
static

◆ ntreeGPUMaterialNodes()

void ntreeGPUMaterialNodes ( bNodeTree localtree,
GPUMaterial mat,
bool *  has_surface_output,
bool *  has_volume_output 
)

◆ ntreeShaderBeginExecTree()

bNodeTreeExec* ntreeShaderBeginExecTree ( bNodeTree ntree)

◆ ntreeShaderBeginExecTree_internal()

bNodeTreeExec* ntreeShaderBeginExecTree_internal ( bNodeExecContext context,
bNodeTree ntree,
bNodeInstanceKey  parent_key 
)

◆ ntreeShaderEndExecTree()

void ntreeShaderEndExecTree ( bNodeTreeExec exec)

◆ ntreeShaderEndExecTree_internal()

void ntreeShaderEndExecTree_internal ( bNodeTreeExec exec)

◆ ntreeShaderOutputNode()

bNode* ntreeShaderOutputNode ( bNodeTree ntree,
int  target 
)

◆ register_node_tree_type_sh()

void register_node_tree_type_sh ( void  )

◆ shader_get_from_context()

static void shader_get_from_context ( const bContext C,
bNodeTreeType UNUSEDtreetype,
bNodeTree **  r_ntree,
ID **  r_id,
ID **  r_from 
)
static

◆ shader_tree_poll()

static bool shader_tree_poll ( const bContext C,
bNodeTreeType UNUSEDtreetype 
)
static

◆ shader_validate_link()

static bool shader_validate_link ( bNodeTree UNUSEDntree,
bNodeLink link 
)
static

◆ update()

static void update ( bNodeTree ntree)
static

Variable Documentation

◆ ntreeType_Shader

bNodeTreeType* ntreeType_Shader