Blender  V3.3
Public Member Functions | Public Attributes | List of all members
ShaderNode Class Referenceabstract

#include <shader_graph.h>

Inheritance diagram for ShaderNode:
Node AddClosureNode AmbientOcclusionNode AttributeNode BackgroundNode BevelNode BlackbodyNode BrightContrastNode BsdfBaseNode BumpNode CameraNode ClampNode ColorNode CombineColorNode CombineHSVNode CombineRGBNode CombineXYZNode ConvertNode CurvesNode DisplacementNode EmissionNode FloatCurveNode FresnelNode GammaNode GeometryNode HSVNode HairInfoNode HoldoutNode InvertNode LayerWeightNode LightFalloffNode LightPathNode MapRangeNode MappingNode MathNode MixClosureNode MixClosureWeightNode MixNode NormalMapNode NormalNode OSLNode ObjectInfoNode OutputAOVNode OutputNode ParticleInfoNode PointDensityTextureNode PointInfoNode RGBRampNode RGBToBWNode SeparateColorNode SeparateHSVNode SeparateRGBNode SeparateXYZNode SetNormalNode TangentNode TextureCoordinateNode TextureNode UVMapNode ValueNode VectorDisplacementNode VectorMapRangeNode VectorMathNode VectorRotateNode VectorTransformNode VertexColorNode VolumeInfoNode VolumeNode WavelengthNode WhiteNoiseTextureNode WireframeNode

Public Member Functions

 ShaderNode (const NodeType *type)
 
virtual ~ShaderNode ()
 
void create_inputs_outputs (const NodeType *type)
 
void remove_input (ShaderInput *input)
 
ShaderInputinput (const char *name)
 
ShaderOutputoutput (const char *name)
 
ShaderInputinput (ustring name)
 
ShaderOutputoutput (ustring name)
 
virtual ShaderNodeclone (ShaderGraph *graph) const =0
 
virtual void attributes (Shader *shader, AttributeRequestSet *attributes)
 
virtual void compile (SVMCompiler &compiler)=0
 
virtual void compile (OSLCompiler &compiler)=0
 
virtual void expand (ShaderGraph *)
 
virtual void constant_fold (const ConstantFolder &)
 
virtual void simplify_settings (Scene *)
 
virtual bool has_surface_emission ()
 
virtual bool has_surface_transparent ()
 
virtual bool has_surface_bssrdf ()
 
virtual bool has_bump ()
 
virtual bool has_bssrdf_bump ()
 
virtual bool has_spatial_varying ()
 
virtual bool has_attribute_dependency ()
 
virtual bool has_integrator_dependency ()
 
virtual bool has_volume_support ()
 
virtual int get_feature ()
 
virtual ClosureType get_closure_type ()
 
virtual bool equals (const ShaderNode &other)
 
- Public Member Functions inherited from Node
 Node (const NodeType *type, ustring name=ustring())
 
virtual ~Node ()=0
 
void set (const SocketType &input, bool value)
 
void set (const SocketType &input, int value)
 
void set (const SocketType &input, uint value)
 
void set (const SocketType &input, float value)
 
void set (const SocketType &input, float2 value)
 
void set (const SocketType &input, float3 value)
 
void set (const SocketType &input, const char *value)
 
void set (const SocketType &input, ustring value)
 
void set (const SocketType &input, const Transform &value)
 
void set (const SocketType &input, Node *value)
 
template<class ValueType , typename std::enable_if_t< std::is_enum_v< ValueType >> * = nullptr>
void set (const SocketType &input, const ValueType &value)
 
void set (const SocketType &input, array< bool > &value)
 
void set (const SocketType &input, array< int > &value)
 
void set (const SocketType &input, array< float > &value)
 
void set (const SocketType &input, array< float2 > &value)
 
void set (const SocketType &input, array< float3 > &value)
 
void set (const SocketType &input, array< ustring > &value)
 
void set (const SocketType &input, array< Transform > &value)
 
void set (const SocketType &input, array< Node * > &value)
 
bool get_bool (const SocketType &input) const
 
int get_int (const SocketType &input) const
 
uint get_uint (const SocketType &input) const
 
float get_float (const SocketType &input) const
 
float2 get_float2 (const SocketType &input) const
 
float3 get_float3 (const SocketType &input) const
 
ustring get_string (const SocketType &input) const
 
Transform get_transform (const SocketType &input) const
 
Nodeget_node (const SocketType &input) const
 
const array< bool > & get_bool_array (const SocketType &input) const
 
const array< int > & get_int_array (const SocketType &input) const
 
const array< float > & get_float_array (const SocketType &input) const
 
const array< float2 > & get_float2_array (const SocketType &input) const
 
const array< float3 > & get_float3_array (const SocketType &input) const
 
const array< ustring > & get_string_array (const SocketType &input) const
 
const array< Transform > & get_transform_array (const SocketType &input) const
 
const array< Node * > & get_node_array (const SocketType &input) const
 
bool has_default_value (const SocketType &input) const
 
void set_default_value (const SocketType &input)
 
bool equals_value (const Node &other, const SocketType &input) const
 
void copy_value (const SocketType &input, const Node &other, const SocketType &other_input)
 
void set_value (const SocketType &input, const Node &other, const SocketType &other_input)
 
bool equals (const Node &other) const
 
void hash (MD5Hash &md5)
 
size_t get_total_size_in_bytes () const
 
bool is_a (const NodeType *type)
 
bool socket_is_modified (const SocketType &input) const
 
bool is_modified () const
 
void tag_modified ()
 
void clear_modified ()
 
void print_modified_sockets () const
 
const NodeOwnerget_owner () const
 
void set_owner (const NodeOwner *owner_)
 
int reference_count () const
 
void reference ()
 
void dereference ()
 
void clear_reference_count ()
 

Public Attributes

vector< ShaderInput * > inputs
 
vector< ShaderOutput * > outputs
 
int id
 
ShaderBump bump
 
ShaderNodeSpecialType special_type
 
- Public Attributes inherited from Node
ustring name
 
const NodeTypetype
 
InternalNode internal
 
LeafNode leaf
 

Additional Inherited Members

- Protected Member Functions inherited from Node
template<typename T >
void set_if_different (const SocketType &input, T value)
 
void set_if_different (const SocketType &input, Node *value)
 
template<typename T >
void set_if_different (const SocketType &input, array< T > &value)
 
void set_if_different (const SocketType &input, array< Node * > &value)
 
void dereference_all_used_nodes ()
 
- Static Protected Member Functions inherited from Node
template<typename T >
static Tget_socket_value (const Node *node, const SocketType &socket)
 
- Protected Attributes inherited from Node
const NodeOwnerowner
 
int ref_count {0}
 
SocketModifiedFlags socket_modified
 

Detailed Description

Definition at line 144 of file shader_graph.h.

Constructor & Destructor Documentation

◆ ShaderNode()

ShaderNode::ShaderNode ( const NodeType type)
explicit

◆ ~ShaderNode()

ShaderNode::~ShaderNode ( )
virtual

Definition at line 76 of file shader_graph.cpp.

References inputs, and outputs.

Member Function Documentation

◆ attributes()

void ShaderNode::attributes ( Shader shader,
AttributeRequestSet attributes 
)
virtual

◆ clone()

virtual ShaderNode* ShaderNode::clone ( ShaderGraph graph) const
pure virtual

◆ compile() [1/2]

virtual void ShaderNode::compile ( OSLCompiler compiler)
pure virtual

◆ compile() [2/2]

virtual void ShaderNode::compile ( SVMCompiler compiler)
pure virtual

◆ constant_fold()

virtual void ShaderNode::constant_fold ( const ConstantFolder )
inlinevirtual

◆ create_inputs_outputs()

void ShaderNode::create_inputs_outputs ( const NodeType type)

◆ equals()

bool ShaderNode::equals ( const ShaderNode other)
virtual

◆ expand()

virtual void ShaderNode::expand ( ShaderGraph )
inlinevirtual

Reimplemented in MathNode, MapRangeNode, VectorMapRangeNode, VolumeInfoNode, and PrincipledBsdfNode.

Definition at line 163 of file shader_graph.h.

◆ get_closure_type()

virtual ClosureType ShaderNode::get_closure_type ( )
inlinevirtual

◆ get_feature()

virtual int ShaderNode::get_feature ( )
inlinevirtual

◆ has_attribute_dependency()

virtual bool ShaderNode::has_attribute_dependency ( )
inlinevirtual

◆ has_bssrdf_bump()

virtual bool ShaderNode::has_bssrdf_bump ( )
inlinevirtual

Reimplemented in SubsurfaceScatteringNode, and PrincipledBsdfNode.

Definition at line 194 of file shader_graph.h.

◆ has_bump()

virtual bool ShaderNode::has_bump ( )
inlinevirtual

Reimplemented in BsdfBaseNode.

Definition at line 190 of file shader_graph.h.

◆ has_integrator_dependency()

virtual bool ShaderNode::has_integrator_dependency ( )
inlinevirtual

Reimplemented in RefractionBsdfNode, GlassBsdfNode, GlossyBsdfNode, and PrincipledBsdfNode.

Definition at line 206 of file shader_graph.h.

◆ has_spatial_varying()

virtual bool ShaderNode::has_spatial_varying ( )
inlinevirtual

◆ has_surface_bssrdf()

virtual bool ShaderNode::has_surface_bssrdf ( )
inlinevirtual

Reimplemented in SubsurfaceScatteringNode, and PrincipledBsdfNode.

Definition at line 186 of file shader_graph.h.

◆ has_surface_emission()

virtual bool ShaderNode::has_surface_emission ( )
inlinevirtual

Reimplemented in EmissionNode.

Definition at line 178 of file shader_graph.h.

◆ has_surface_transparent()

virtual bool ShaderNode::has_surface_transparent ( )
inlinevirtual

Reimplemented in TransparentBsdfNode.

Definition at line 182 of file shader_graph.h.

◆ has_volume_support()

virtual bool ShaderNode::has_volume_support ( )
inlinevirtual

Reimplemented in OSLNode, VolumeNode, and EmissionNode.

Definition at line 210 of file shader_graph.h.

◆ input() [1/2]

ShaderInput * ShaderNode::input ( const char *  name)

Definition at line 98 of file shader_graph.cpp.

References inputs, Node::name, ShaderInput::name(), and NULL.

Referenced by attributes(), AnisotropicBsdfNode::attributes(), PrincipledBsdfNode::attributes(), PrincipledVolumeNode::attributes(), PrincipledHairBsdfNode::attributes(), ShaderGraph::bump_from_displacement(), CurvesNode::compile(), PrincipledBsdfNode::compile(), VolumeNode::compile(), BsdfNode::compile(), ShaderGraph::compute_displacement_hash(), EmissionNode::constant_fold(), BackgroundNode::constant_fold(), AddClosureNode::constant_fold(), MixClosureNode::constant_fold(), InvertNode::constant_fold(), GammaNode::constant_fold(), BumpNode::constant_fold(), RGBCurvesNode::constant_fold(), VectorCurvesNode::constant_fold(), FloatCurveNode::constant_fold(), CurvesNode::constant_fold(), ShaderGraph::constant_fold(), ShaderGraph::copy_nodes(), ImageTextureNode::cull_tiles(), LightManager::device_update_background(), PrincipledBsdfNode::expand(), MapRangeNode::expand(), MathNode::expand(), ShaderGraph::finalize(), ConstantFolder::fold_mapping(), ConstantFolder::fold_math(), ConstantFolder::fold_mix(), ConstantFolder::fold_vector_math(), ShaderManager::get_kernel_features(), SubsurfaceScatteringNode::has_bssrdf_bump(), BsdfBaseNode::has_bump(), PrincipledBsdfNode::has_integrator_dependency(), GlossyBsdfNode::has_integrator_dependency(), GlassBsdfNode::has_integrator_dependency(), RefractionBsdfNode::has_integrator_dependency(), PrincipledBsdfNode::has_surface_bssrdf(), Shader::is_constant_emission(), remove_input(), Shader::set_graph(), OutputAOVNode::simplify_settings(), GlossyBsdfNode::simplify_settings(), GlassBsdfNode::simplify_settings(), RefractionBsdfNode::simplify_settings(), ShaderGraph::transform_multi_closure(), and ShaderGraph::verify_volume_output().

◆ input() [2/2]

ShaderInput * ShaderNode::input ( ustring  name)

Definition at line 117 of file shader_graph.cpp.

References inputs, Node::name, ShaderInput::name(), and NULL.

◆ output() [1/2]

ShaderOutput * ShaderNode::output ( const char *  name)

◆ output() [2/2]

ShaderOutput * ShaderNode::output ( ustring  name)

Definition at line 127 of file shader_graph.cpp.

References Node::name, ShaderOutput::name(), NULL, and outputs.

◆ remove_input()

void ShaderNode::remove_input ( ShaderInput input)

◆ simplify_settings()

virtual void ShaderNode::simplify_settings ( Scene )
inlinevirtual

Reimplemented in RefractionBsdfNode, GlassBsdfNode, GlossyBsdfNode, and OutputAOVNode.

Definition at line 176 of file shader_graph.h.

Member Data Documentation

◆ bump

ShaderBump ShaderNode::bump

Definition at line 218 of file shader_graph.h.

Referenced by equals(), get_feature(), and ShaderNode().

◆ id

int ShaderNode::id

◆ inputs

vector<ShaderInput *> ShaderNode::inputs

◆ outputs

vector<ShaderOutput *> ShaderNode::outputs

◆ special_type

ShaderNodeSpecialType ShaderNode::special_type

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