Blender V5.0
ShaderGraph Class Reference

#include <shader_graph.h>

Inherits NodeOwner.

Public Member Functions

 ShaderGraph ()
 ~ShaderGraph () override
OutputNodeoutput ()
void connect (ShaderOutput *from, ShaderInput *to)
void disconnect (ShaderOutput *from)
void disconnect (ShaderInput *to)
void relink (ShaderInput *from, ShaderInput *to)
void relink (ShaderOutput *from, ShaderOutput *to)
void relink (ShaderNode *node, ShaderOutput *from, ShaderOutput *to)
void remove_proxy_nodes ()
void compute_displacement_hash ()
void simplify (Scene *scene)
void finalize (Scene *scene, bool do_bump=false, bool bump_in_object_space=false)
int get_num_closures ()
void dump_graph (const char *filename)
template<typename T, typename... Args>
Tcreate_node (Args &&...args)
template<typename T, typename... Args>
Tcreate_osl_node (void *node_memory, Args &&...args)
ShaderNodecreate_node (const NodeType *node_type)
Public Member Functions inherited from NodeOwner
virtual ~NodeOwner ()

Public Attributes

unique_ptr_vector< ShaderNodenodes
size_t num_node_ids
bool finalized
bool simplified
string displacement_hash

Protected Types

using NodePair = pair<ShaderNode *const, ShaderNode *>

Protected Member Functions

void add_node (unique_ptr< ShaderNode > &&node)
void find_dependencies (ShaderNodeSet &dependencies, ShaderInput *input)
void clear_nodes ()
void copy_nodes (ShaderNodeSet &nodes, ShaderNodeMap &nnodemap)
void break_cycles (ShaderNode *node, vector< bool > &visited, vector< bool > &on_stack)
void bump_from_displacement (bool use_object_space)
void refine_bump_nodes ()
void expand ()
void default_inputs (bool do_osl)
void transform_multi_closure (ShaderNode *node, ShaderOutput *weight_out, bool volume)
void clean (Scene *scene)
void constant_fold (Scene *scene)
void simplify_settings (Scene *scene)
void deduplicate_nodes ()
void optimize_volume_output ()

Detailed Description

Definition at line 315 of file shader_graph.h.

Member Typedef Documentation

◆ NodePair

using ShaderGraph::NodePair = pair<ShaderNode *const, ShaderNode *>
protected

Definition at line 373 of file shader_graph.h.

Constructor & Destructor Documentation

◆ ShaderGraph()

ShaderGraph::ShaderGraph ( )

Definition at line 218 of file shader_graph.cpp.

References create_node(), finalized, num_node_ids, and simplified.

◆ ~ShaderGraph()

ShaderGraph::~ShaderGraph ( )
override

Definition at line 226 of file shader_graph.cpp.

References clear_nodes().

Member Function Documentation

◆ add_node()

void ShaderGraph::add_node ( unique_ptr< ShaderNode > && node)
protected

Definition at line 231 of file shader_graph.cpp.

References assert, finalized, nodes, num_node_ids, and simplified.

Referenced by create_node(), create_node(), and create_osl_node().

◆ break_cycles()

void ShaderGraph::break_cycles ( ShaderNode * node,
vector< bool > & visited,
vector< bool > & on_stack )
protected

Definition at line 741 of file shader_graph.cpp.

References break_cycles(), disconnect(), ShaderNode::id, input, ShaderNode::inputs, and LOG_WARNING.

Referenced by break_cycles(), and clean().

◆ bump_from_displacement()

void ShaderGraph::bump_from_displacement ( bool use_object_space)
protected

◆ clean()

◆ clear_nodes()

void ShaderGraph::clear_nodes ( )
protected

Definition at line 416 of file shader_graph.cpp.

References nodes.

Referenced by ~ShaderGraph().

◆ compute_displacement_hash()

◆ connect()

◆ constant_fold()

void ShaderGraph::constant_fold ( Scene * scene)
protected

◆ copy_nodes()

void ShaderGraph::copy_nodes ( ShaderNodeSet & nodes,
ShaderNodeMap & nnodemap )
protected

◆ create_node() [1/2]

◆ create_node() [2/2]

ShaderNode * ShaderGraph::create_node ( const NodeType * node_type)
inline

Definition at line 363 of file shader_graph.h.

References add_node(), and NodeType::create.

◆ create_osl_node()

template<typename T, typename... Args>
T * ShaderGraph::create_osl_node ( void * node_memory,
Args &&... args )
inline

Definition at line 354 of file shader_graph.h.

References add_node(), and T.

Referenced by OSLNode::create().

◆ deduplicate_nodes()

void ShaderGraph::deduplicate_nodes ( )
protected

◆ default_inputs()

◆ disconnect() [1/2]

void ShaderGraph::disconnect ( ShaderInput * to)

◆ disconnect() [2/2]

◆ dump_graph()

void ShaderGraph::dump_graph ( const char * filename)

◆ expand()

void ShaderGraph::expand ( )
protected

Definition at line 851 of file shader_graph.cpp.

References ShaderNode::expand(), i, and nodes.

Referenced by simplify().

◆ finalize()

void ShaderGraph::finalize ( Scene * scene,
bool do_bump = false,
bool bump_in_object_space = false )

◆ find_dependencies()

void ShaderGraph::find_dependencies ( ShaderNodeSet & dependencies,
ShaderInput * input )
protected

◆ get_num_closures()

◆ optimize_volume_output()

void ShaderGraph::optimize_volume_output ( )
protected

◆ output()

◆ refine_bump_nodes()

◆ relink() [1/3]

◆ relink() [2/3]

void ShaderGraph::relink ( ShaderNode * node,
ShaderOutput * from,
ShaderOutput * to )

◆ relink() [3/3]

void ShaderGraph::relink ( ShaderOutput * from,
ShaderOutput * to )

Definition at line 325 of file shader_graph.cpp.

References connect(), disconnect(), ShaderOutput::links, and outputs.

◆ remove_proxy_nodes()

◆ simplify()

void ShaderGraph::simplify ( Scene * scene)

Definition at line 360 of file shader_graph.cpp.

References clean(), default_inputs(), expand(), refine_bump_nodes(), Scene::shader_manager, and simplified.

Referenced by finalize().

◆ simplify_settings()

void ShaderGraph::simplify_settings ( Scene * scene)
protected

Definition at line 590 of file shader_graph.cpp.

References nodes.

Referenced by clean().

◆ transform_multi_closure()

Member Data Documentation

◆ displacement_hash

string ShaderGraph::displacement_hash

Definition at line 321 of file shader_graph.h.

Referenced by compute_displacement_hash().

◆ finalized

bool ShaderGraph::finalized

Definition at line 319 of file shader_graph.h.

Referenced by add_node(), connect(), disconnect(), disconnect(), finalize(), and ShaderGraph().

◆ nodes

◆ num_node_ids

size_t ShaderGraph::num_node_ids

Definition at line 318 of file shader_graph.h.

Referenced by add_node(), clean(), remove_proxy_nodes(), and ShaderGraph().

◆ simplified

bool ShaderGraph::simplified

Definition at line 320 of file shader_graph.h.

Referenced by add_node(), disconnect(), disconnect(), relink(), ShaderGraph(), and simplify().


The documentation for this class was generated from the following files: