Blender V4.3
blender::nodes::materialx::NodeItem Class Reference

#include <node_item.h>

Public Types

enum class  Type {
  Any = 0 , Empty , Multioutput , String ,
  Filename , Boolean , Integer , Float ,
  Vector2 , Vector3 , Color3 , Vector4 ,
  Color4 , BSDF , EDF , DisplacementShader ,
  SurfaceShader , Material , SurfaceOpacity
}
 
enum class  CompareOp {
  Less = 0 , LessEq , Eq , GreaterEq ,
  Greater , NotEq
}
 
using Inputs = std::vector<std::pair<std::string, NodeItem>>
 

Public Member Functions

 NodeItem ()=default
 
 NodeItem (MaterialX::GraphElement *graph)
 
 ~NodeItem ()=default
 
 operator bool () const
 
NodeItem operator+ (const NodeItem &other) const
 
NodeItem operator- (const NodeItem &other) const
 
NodeItem operator- () const
 
NodeItem operator* (const NodeItem &other) const
 
NodeItem operator/ (const NodeItem &other) const
 
NodeItem operator% (const NodeItem &other) const
 
NodeItem operator^ (const NodeItem &other) const
 
NodeItem operator[] (int index) const
 
bool operator== (const NodeItem &other) const
 
bool operator!= (const NodeItem &other) const
 
NodeItem abs () const
 
NodeItem floor () const
 
NodeItem ceil () const
 
NodeItem length () const
 
NodeItem normalize () const
 
NodeItem min (const NodeItem &other) const
 
NodeItem max (const NodeItem &other) const
 
NodeItem dotproduct (const NodeItem &other) const
 
NodeItem mix (const NodeItem &val1, const NodeItem &val2) const
 
NodeItem clamp (const NodeItem &min_val, const NodeItem &max_val) const
 
NodeItem clamp (float min_val=0.0f, float max_val=1.0f) const
 
NodeItem rotate (const NodeItem &angle, const NodeItem &axis)
 
NodeItem rotate (const NodeItem &angle_xyz, bool invert=false)
 
NodeItem sin () const
 
NodeItem cos () const
 
NodeItem tan () const
 
NodeItem asin () const
 
NodeItem acos () const
 
NodeItem atan () const
 
NodeItem atan2 (const NodeItem &other) const
 
NodeItem sinh () const
 
NodeItem cosh () const
 
NodeItem tanh () const
 
NodeItem ln () const
 
NodeItem sqrt () const
 
NodeItem sign () const
 
NodeItem exp () const
 
NodeItem convert (Type to_type) const
 
NodeItem to_vector () const
 
NodeItem if_else (CompareOp op, const NodeItem &other, const NodeItem &if_val, const NodeItem &else_val) const
 
NodeItem empty () const
 
template<class T >
NodeItem val (const T &data) const
 
Type type () const
 
NodeItem create_node (const std::string &category, Type type) const
 
NodeItem create_node (const std::string &category, Type type, const Inputs &inputs) const
 
template<class T >
void set_input (const std::string &in_name, const T &value, Type in_type)
 
void set_input (const std::string &in_name, const NodeItem &item)
 
NodeItem add_output (const std::string &out_name, Type out_type)
 
NodeItem create_input (const std::string &name, const NodeItem &item) const
 
NodeItem create_output (const std::string &name, const NodeItem &item) const
 

Static Public Member Functions

static Type type (const std::string &type_str)
 
static std::string type (Type type)
 
static bool is_arithmetic (Type type)
 

Public Attributes

MaterialX::ValuePtr value
 
MaterialX::NodePtr node
 
MaterialX::InputPtr input
 
MaterialX::OutputPtr output
 

Detailed Description

This class serves as abstraction from MateralX API. It implements arithmetic operations, conversions between different types, adding new nodes, setting inputs, etc. All work should be done via this class instead of using MaterialX API directly.

Definition at line 18 of file node_item.h.

Member Typedef Documentation

◆ Inputs

using blender::nodes::materialx::NodeItem::Inputs = std::vector<std::pair<std::string, NodeItem>>

Definition at line 20 of file node_item.h.

Member Enumeration Documentation

◆ CompareOp

Enumerator
Less 
LessEq 
Eq 
GreaterEq 
Greater 
NotEq 

Definition at line 51 of file node_item.h.

◆ Type

Enumerator
Any 
Empty 
Multioutput 
String 
Filename 
Boolean 
Integer 
Float 
Vector2 
Vector3 
Color3 
Vector4 
Color4 
BSDF 
EDF 
DisplacementShader 
SurfaceShader 
Material 
SurfaceOpacity 

Definition at line 22 of file node_item.h.

Constructor & Destructor Documentation

◆ NodeItem() [1/2]

blender::nodes::materialx::NodeItem::NodeItem ( )
default

Referenced by empty().

◆ NodeItem() [2/2]

blender::nodes::materialx::NodeItem::NodeItem ( MaterialX::GraphElement * graph)

Definition at line 13 of file node_item.cc.

◆ ~NodeItem()

blender::nodes::materialx::NodeItem::~NodeItem ( )
default

References is_arithmetic().

Member Function Documentation

◆ abs()

NodeItem blender::nodes::materialx::NodeItem::abs ( ) const

Definition at line 250 of file node_item.cc.

◆ acos()

NodeItem blender::nodes::materialx::NodeItem::acos ( ) const

Definition at line 426 of file node_item.cc.

References to_vector().

◆ add_output()

NodeItem blender::nodes::materialx::NodeItem::add_output ( const std::string & out_name,
Type out_type )

Definition at line 856 of file node_item.cc.

References empty(), output, and type().

◆ asin()

NodeItem blender::nodes::materialx::NodeItem::asin ( ) const

Definition at line 421 of file node_item.cc.

References to_vector().

◆ atan()

NodeItem blender::nodes::materialx::NodeItem::atan ( ) const

Definition at line 431 of file node_item.cc.

References to_vector().

◆ atan2()

NodeItem blender::nodes::materialx::NodeItem::atan2 ( const NodeItem & other) const

Definition at line 436 of file node_item.cc.

References b, and to_vector().

◆ ceil()

NodeItem blender::nodes::materialx::NodeItem::ceil ( ) const

Definition at line 260 of file node_item.cc.

◆ clamp() [1/2]

NodeItem blender::nodes::materialx::NodeItem::clamp ( const NodeItem & min_val,
const NodeItem & max_val ) const

Definition at line 358 of file node_item.cc.

References convert(), create_node(), Float, max(), min, type(), type(), and value.

Referenced by clamp().

◆ clamp() [2/2]

NodeItem blender::nodes::materialx::NodeItem::clamp ( float min_val = 0.0f,
float max_val = 1.0f ) const

Definition at line 375 of file node_item.cc.

References clamp(), and val().

◆ convert()

◆ cos()

NodeItem blender::nodes::materialx::NodeItem::cos ( ) const

Definition at line 411 of file node_item.cc.

References to_vector().

◆ cosh()

NodeItem blender::nodes::materialx::NodeItem::cosh ( ) const

Definition at line 447 of file node_item.cc.

References to_vector(), v, and val().

◆ create_input()

NodeItem blender::nodes::materialx::NodeItem::create_input ( const std::string & name,
const NodeItem & item ) const

◆ create_node() [1/2]

◆ create_node() [2/2]

NodeItem blender::nodes::materialx::NodeItem::create_node ( const std::string & category,
Type type,
const Inputs & inputs ) const

Definition at line 778 of file node_item.cc.

References create_node(), inputs, and set_input().

◆ create_output()

NodeItem blender::nodes::materialx::NodeItem::create_output ( const std::string & name,
const NodeItem & item ) const

◆ dotproduct()

NodeItem blender::nodes::materialx::NodeItem::dotproduct ( const NodeItem & other) const

Definition at line 291 of file node_item.cc.

References BLI_assert_unreachable, Color3, Color4, create_node(), Float, to_vector(), type(), v, val(), value, Vector2, Vector3, and Vector4.

Referenced by length().

◆ empty()

NodeItem blender::nodes::materialx::NodeItem::empty ( ) const

◆ exp()

NodeItem blender::nodes::materialx::NodeItem::exp ( ) const

Definition at line 476 of file node_item.cc.

References to_vector().

Referenced by tanh().

◆ floor()

NodeItem blender::nodes::materialx::NodeItem::floor ( ) const

Definition at line 255 of file node_item.cc.

◆ if_else()

NodeItem blender::nodes::materialx::NodeItem::if_else ( CompareOp op,
const NodeItem & other,
const NodeItem & if_val,
const NodeItem & else_val ) const

◆ is_arithmetic()

bool blender::nodes::materialx::NodeItem::is_arithmetic ( Type type)
static

Definition at line 115 of file node_item.cc.

References Color4, and Float.

Referenced by convert(), operator[](), and ~NodeItem().

◆ length()

NodeItem blender::nodes::materialx::NodeItem::length ( ) const

Definition at line 265 of file node_item.cc.

References create_node(), dotproduct(), Float, sqrt(), and to_vector().

Referenced by normalize().

◆ ln()

NodeItem blender::nodes::materialx::NodeItem::ln ( ) const

Definition at line 461 of file node_item.cc.

References to_vector().

◆ max()

NodeItem blender::nodes::materialx::NodeItem::max ( const NodeItem & other) const

Definition at line 286 of file node_item.cc.

References b.

Referenced by clamp().

◆ min()

NodeItem blender::nodes::materialx::NodeItem::min ( const NodeItem & other) const

Definition at line 281 of file node_item.cc.

References b.

◆ mix()

NodeItem blender::nodes::materialx::NodeItem::mix ( const NodeItem & val1,
const NodeItem & val2 ) const

◆ normalize()

NodeItem blender::nodes::materialx::NodeItem::normalize ( ) const

Definition at line 273 of file node_item.cc.

References create_node(), length(), to_vector(), and Vector3.

◆ operator bool()

blender::nodes::materialx::NodeItem::operator bool ( ) const

Definition at line 120 of file node_item.cc.

References output.

◆ operator!=()

bool blender::nodes::materialx::NodeItem::operator!= ( const NodeItem & other) const

Definition at line 245 of file node_item.cc.

◆ operator%()

NodeItem blender::nodes::materialx::NodeItem::operator% ( const NodeItem & other) const

Definition at line 177 of file node_item.cc.

References b.

◆ operator*()

NodeItem blender::nodes::materialx::NodeItem::operator* ( const NodeItem & other) const

Definition at line 153 of file node_item.cc.

References b, BLI_assert_unreachable, BSDF, Color3, create_node(), EDF, ELEM, empty(), Float, and type().

◆ operator+()

NodeItem blender::nodes::materialx::NodeItem::operator+ ( const NodeItem & other) const

Definition at line 125 of file node_item.cc.

References b, BLI_assert_unreachable, BSDF, create_node(), EDF, ELEM, empty(), and type().

◆ operator-() [1/2]

NodeItem blender::nodes::materialx::NodeItem::operator- ( ) const

Definition at line 148 of file node_item.cc.

References val().

◆ operator-() [2/2]

NodeItem blender::nodes::materialx::NodeItem::operator- ( const NodeItem & other) const

Definition at line 143 of file node_item.cc.

References b.

◆ operator/()

NodeItem blender::nodes::materialx::NodeItem::operator/ ( const NodeItem & other) const

Definition at line 172 of file node_item.cc.

References b.

◆ operator==()

bool blender::nodes::materialx::NodeItem::operator== ( const NodeItem & other) const

Definition at line 221 of file node_item.cc.

References Empty, blender::gpu::shader::to_type(), and value.

◆ operator[]()

NodeItem blender::nodes::materialx::NodeItem::operator[] ( int index) const

◆ operator^()

NodeItem blender::nodes::materialx::NodeItem::operator^ ( const NodeItem & other) const

Definition at line 183 of file node_item.cc.

References b.

◆ rotate() [1/2]

NodeItem blender::nodes::materialx::NodeItem::rotate ( const NodeItem & angle,
const NodeItem & axis )

Definition at line 380 of file node_item.cc.

References BLI_assert, create_node(), Float, type(), and Vector3.

Referenced by rotate().

◆ rotate() [2/2]

NodeItem blender::nodes::materialx::NodeItem::rotate ( const NodeItem & angle_xyz,
bool invert = false )

Definition at line 390 of file node_item.cc.

References invert(), rotate(), val(), and z().

◆ set_input() [1/2]

void blender::nodes::materialx::NodeItem::set_input ( const std::string & in_name,
const NodeItem & item )

◆ set_input() [2/2]

template<class T >
void blender::nodes::materialx::NodeItem::set_input ( const std::string & in_name,
const T & value,
Type in_type )

Definition at line 156 of file node_item.h.

References type().

Referenced by create_node(), and set_input().

◆ sign()

NodeItem blender::nodes::materialx::NodeItem::sign ( ) const

Definition at line 471 of file node_item.cc.

◆ sin()

NodeItem blender::nodes::materialx::NodeItem::sin ( ) const

Definition at line 406 of file node_item.cc.

References to_vector().

◆ sinh()

NodeItem blender::nodes::materialx::NodeItem::sinh ( ) const

Definition at line 441 of file node_item.cc.

References to_vector(), v, and val().

◆ sqrt()

NodeItem blender::nodes::materialx::NodeItem::sqrt ( ) const

Definition at line 466 of file node_item.cc.

References to_vector().

Referenced by length().

◆ tan()

NodeItem blender::nodes::materialx::NodeItem::tan ( ) const

Definition at line 416 of file node_item.cc.

References to_vector().

◆ tanh()

NodeItem blender::nodes::materialx::NodeItem::tanh ( ) const

Definition at line 453 of file node_item.cc.

References b, exp(), to_vector(), and v.

◆ to_vector()

NodeItem blender::nodes::materialx::NodeItem::to_vector ( ) const

◆ type() [1/3]

◆ type() [2/3]

NodeItem::Type blender::nodes::materialx::NodeItem::type ( const std::string & type_str)
static

◆ type() [3/3]

std::string blender::nodes::materialx::NodeItem::type ( Type type)
static

◆ val()

template<class T >
NodeItem blender::nodes::materialx::NodeItem::val ( const T & data) const

Member Data Documentation

◆ input

MaterialX::InputPtr blender::nodes::materialx::NodeItem::input

◆ node

◆ output

MaterialX::OutputPtr blender::nodes::materialx::NodeItem::output

◆ value

MaterialX::ValuePtr blender::nodes::materialx::NodeItem::value

Definition at line 54 of file node_item.h.

Referenced by clamp(), convert(), dotproduct(), mix(), operator==(), set_input(), and val().


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