Blender V4.3
OSLNode Class Referencefinal

#include <shader_nodes.h>

Inherits ShaderNode.

Public Member Functions

 ~OSLNode ()
 
ShaderNodeclone (ShaderGraph *graph) const
 
char * input_default_value ()
 
void add_input (ustring name, SocketType::Type type, const int flags=0)
 
void add_output (ustring name, SocketType::Type type)
 
bool has_surface_emission ()
 
bool has_spatial_varying ()
 
bool has_volume_support ()
 
virtual int get_feature ()
 
virtual bool equals (const ShaderNode &)
 
- Public Member Functions inherited from ShaderNode
 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 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_transparent ()
 
virtual bool has_surface_bssrdf ()
 
virtual bool has_bump ()
 
virtual bool has_bssrdf_bump ()
 
virtual bool has_attribute_dependency ()
 
virtual ClosureType get_closure_type ()
 
- 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, uint64_t 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 , std::enable_if_t< std::is_enum_v< ValueType >, bool > = true>
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
 
uint64_t get_uint64 (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 ()
 

Static Public Member Functions

static OSLNodecreate (ShaderGraph *graph, size_t num_inputs, const OSLNode *from=NULL)
 
static void operator delete (void *ptr)
 
static void operator delete (void *, void *)
 

Public Attributes

string filepath
 
string bytecode_hash
 
bool has_emission
 
- Public Attributes inherited from ShaderNode
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 1552 of file shader_nodes.h.

Constructor & Destructor Documentation

◆ ~OSLNode()

OSLNode::~OSLNode ( )

Definition at line 7391 of file shader_nodes.cpp.

References Node::type.

Member Function Documentation

◆ add_input()

void OSLNode::add_input ( ustring name,
SocketType::Type type,
const int flags = 0 )

Definition at line 7435 of file shader_nodes.cpp.

References input_default_value(), SocketType::LINKABLE, NULL, and Node::type.

◆ add_output()

void OSLNode::add_output ( ustring name,
SocketType::Type type )

Definition at line 7443 of file shader_nodes.cpp.

References Node::type.

◆ clone()

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

Implements ShaderNode.

Definition at line 7396 of file shader_nodes.cpp.

References create().

◆ create()

OSLNode * OSLNode::create ( ShaderGraph * graph,
size_t num_inputs,
const OSLNode * from = NULL )
static

Definition at line 7401 of file shader_nodes.cpp.

References align_up(), SocketType::max_size(), node, Node::set_owner(), and Node::type.

Referenced by clone().

◆ equals()

virtual bool OSLNode::equals ( const ShaderNode & )
inlinevirtual

Reimplemented from ShaderNode.

Definition at line 1596 of file shader_nodes.h.

◆ get_feature()

virtual int OSLNode::get_feature ( )
inlinevirtual

Reimplemented from ShaderNode.

Definition at line 1591 of file shader_nodes.h.

References ShaderNode::get_feature(), and KERNEL_FEATURE_NODE_RAYTRACE.

◆ has_spatial_varying()

bool OSLNode::has_spatial_varying ( )
inlinevirtual

Reimplemented from ShaderNode.

Definition at line 1583 of file shader_nodes.h.

◆ has_surface_emission()

bool OSLNode::has_surface_emission ( )
inlinevirtual

Reimplemented from ShaderNode.

Definition at line 1577 of file shader_nodes.h.

◆ has_volume_support()

bool OSLNode::has_volume_support ( )
inlinevirtual

Reimplemented from ShaderNode.

Definition at line 1587 of file shader_nodes.h.

◆ input_default_value()

char * OSLNode::input_default_value ( )

Definition at line 7427 of file shader_nodes.cpp.

References align_up(), and SocketType::max_size().

Referenced by add_input().

◆ operator delete() [1/2]

static void OSLNode::operator delete ( void * ,
void *  )
inlinestatic

Definition at line 1564 of file shader_nodes.h.

◆ operator delete() [2/2]

static void OSLNode::operator delete ( void * ptr)
inlinestatic

Definition at line 1557 of file shader_nodes.h.

References ptr.

Member Data Documentation

◆ bytecode_hash

string OSLNode::bytecode_hash

Definition at line 1602 of file shader_nodes.h.

Referenced by ShaderGraph::compute_displacement_hash().

◆ filepath

string OSLNode::filepath

Definition at line 1601 of file shader_nodes.h.

◆ has_emission

bool OSLNode::has_emission

Definition at line 1603 of file shader_nodes.h.


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