MaterialX 1.38.7
Loading...
Searching...
No Matches
ShaderNode Class Reference

Class representing a node in the shader generation DAG. More...

#include <ShaderNode.h>

Inheritance diagram for ShaderNode:
ShaderGraph

Classes

class  Classification
 Flags for classifying nodes into different categories. More...
 
struct  ScopeInfo
 Information on source code scope for the node. More...
 

Public Member Functions

 ShaderNode (const ShaderGraph *parent, const string &name)
 Constructor.
 
virtual bool isAGraph () const
 Return true if this node is a graph. More...
 
const ShaderGraphgetParent () const
 Return the parent graph that owns this node. More...
 
void setClassification (uint32_t c)
 Set classification bits for this node, replacing any previous set bits.
 
uint32_t getClassification () const
 Get classification bits set for this node.
 
void addClassification (uint32_t c)
 Add classification bits to this node.
 
bool hasClassification (uint32_t c) const
 Return true if this node matches the given classification.
 
const string & getName () const
 Return the name of this node.
 
const ShaderNodeImplgetImplementation () const
 Return the implementation used for this node.
 
ScopeInfogetScopeInfo ()
 Return the scope info for this node.
 
const ScopeInfogetScopeInfo () const
 Return the scope info for this node.
 
bool referencedConditionally () const
 Returns true if this node is only referenced by a conditional.
 
void initialize (const Node &node, const NodeDef &nodeDef, GenContext &context)
 Initialize this shader node with all required data from the given node and nodedef.
 
ShaderInputaddInput (const string &name, const TypeDesc *type)
 Add inputs/outputs.
 
ShaderOutputaddOutput (const string &name, const TypeDesc *type)
 
size_t numInputs () const
 Get number of inputs/outputs.
 
size_t numOutputs () const
 
ShaderInputgetInput (size_t index)
 Get inputs/outputs by index.
 
ShaderOutputgetOutput (size_t index=0)
 
const ShaderInputgetInput (size_t index) const
 
const ShaderOutputgetOutput (size_t index=0) const
 
ShaderInputgetInput (const string &name)
 Get inputs/outputs by name.
 
ShaderOutputgetOutput (const string &name)
 
const ShaderInputgetInput (const string &name) const
 
const ShaderOutputgetOutput (const string &name) const
 
const vector< ShaderInput * > & getInputs () const
 Get vector of inputs/outputs.
 
const vector< ShaderOutput * > & getOutputs () const
 
void setMetadata (ShaderMetadataVecPtr metadata)
 Set the metadata vector.
 
ShaderMetadataVecPtr getMetadata ()
 Get the metadata vector.
 
const ShaderMetadataVecPtr & getMetadata () const
 Get the metadata vector.
 
bool isEditable (const ShaderInput &input) const
 Returns true if an input is editable by users. More...
 
bool isEditable (const ShaderGraphInputSocket &input) const
 Returns true if a graph input is accessible by users. More...
 

Static Public Member Functions

static ShaderNodePtr create (const ShaderGraph *parent, const string &name, const NodeDef &nodeDef, GenContext &context)
 Create a new node from a nodedef.
 
static ShaderNodePtr create (const ShaderGraph *parent, const string &name, ShaderNodeImplPtr impl, unsigned int classification=Classification::TEXTURE)
 Create a new node from a node implementation.
 

Static Public Attributes

static const ShaderNodePtr NONE = createEmptyNode()
 
static const string CONSTANT = "constant"
 
static const string DOT = "dot"
 
static const string IMAGE = "image"
 
static const string COMPARE = "compare"
 
static const string SWITCH = "switch"
 
static const string SURFACESHADER = "surfaceshader"
 
static const string SCATTER_MODE = "scatter_mode"
 
static const string BSDF_R = "R"
 
static const string BSDF_T = "T"
 
static const string TRANSFORM_POINT
 
static const string TRANSFORM_VECTOR
 
static const string TRANSFORM_NORMAL
 
static const string TEXTURE2D_GROUPNAME = "texture2d"
 
static const string TEXTURE3D_GROUPNAME = "texture3d"
 
static const string PROCEDURAL2D_GROUPNAME = "procedural2d"
 
static const string PROCEDURAL3D_GROUPNAME = "procedural3d"
 
static const string GEOMETRIC_GROUPNAME = "geometric"
 

Protected Member Functions

void createMetadata (const NodeDef &nodeDef, GenContext &context)
 Create metadata from the nodedef according to registered metadata.
 

Protected Attributes

const ShaderGraph_parent
 
string _name
 
uint32_t _classification
 
std::unordered_map< string, ShaderInputPtr_inputMap
 
vector< ShaderInput * > _inputOrder
 
std::unordered_map< string, ShaderOutputPtr_outputMap
 
vector< ShaderOutput * > _outputOrder
 
ShaderNodeImplPtr _impl
 
ShaderMetadataVecPtr _metadata
 
ScopeInfo _scopeInfo
 

Friends

class ShaderGraph
 

Detailed Description

Class representing a node in the shader generation DAG.

Member Function Documentation

◆ getParent()

const ShaderGraph * getParent ( ) const
inline

Return the parent graph that owns this node.

If this node is a root graph it has no parent and nullptr will be returned.

◆ isAGraph()

virtual bool isAGraph ( ) const
inlinevirtual

Return true if this node is a graph.

Reimplemented in ShaderGraph.

◆ isEditable() [1/2]

bool isEditable ( const ShaderGraphInputSocket input) const
inline

Returns true if a graph input is accessible by users.

Editable inputs are allowed to be published as shader uniforms and hence must be presentable in a user interface.

◆ isEditable() [2/2]

bool isEditable ( const ShaderInput input) const
inline

Returns true if an input is editable by users.

Editable inputs are allowed to be published as shader uniforms and hence must be presentable in a user interface.


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