Blender V5.0
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)
static bool is_convertible (eNodeSocketDatatype from_type, Type to_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]

◆ NodeItem() [2/2]

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

Definition at line 14 of file node_item.cc.

◆ ~NodeItem()

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

Member Function Documentation

◆ abs()

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

Definition at line 251 of file node_item.cc.

References NodeItem().

◆ acos()

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

Definition at line 427 of file node_item.cc.

References NodeItem(), and to_vector().

◆ add_output()

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

Definition at line 922 of file node_item.cc.

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

◆ asin()

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

Definition at line 422 of file node_item.cc.

References NodeItem(), and to_vector().

◆ atan()

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

Definition at line 432 of file node_item.cc.

References NodeItem(), and to_vector().

◆ atan2()

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

Definition at line 437 of file node_item.cc.

References b, NodeItem(), and to_vector().

◆ ceil()

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

Definition at line 261 of file node_item.cc.

References NodeItem().

◆ clamp() [1/2]

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

Definition at line 359 of file node_item.cc.

References convert(), create_node(), Float, min, NodeItem(), 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 376 of file node_item.cc.

References clamp(), NodeItem(), and val().

◆ convert()

◆ cos()

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

Definition at line 412 of file node_item.cc.

References NodeItem(), and to_vector().

◆ cosh()

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

Definition at line 448 of file node_item.cc.

References NodeItem(), 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 848 of file node_item.cc.

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

◆ 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 292 of file node_item.cc.

References BLI_assert_unreachable, Color3, Color4, create_node(), Float, NodeItem(), 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 477 of file node_item.cc.

References NodeItem(), and to_vector().

Referenced by tanh().

◆ floor()

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

Definition at line 256 of file node_item.cc.

References NodeItem().

◆ 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

◆ is_convertible()

◆ length()

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

Definition at line 266 of file node_item.cc.

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

Referenced by normalize().

◆ ln()

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

Definition at line 462 of file node_item.cc.

References NodeItem(), and to_vector().

◆ max()

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

Definition at line 287 of file node_item.cc.

References b, and NodeItem().

◆ min()

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

Definition at line 282 of file node_item.cc.

References b, and NodeItem().

◆ 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 274 of file node_item.cc.

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

◆ operator bool()

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

Definition at line 121 of file node_item.cc.

References input, node, output, and value.

◆ operator!=()

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

Definition at line 246 of file node_item.cc.

References NodeItem().

◆ operator%()

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

Definition at line 178 of file node_item.cc.

References b, and NodeItem().

◆ operator*()

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

Definition at line 154 of file node_item.cc.

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

◆ operator+()

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

Definition at line 126 of file node_item.cc.

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

◆ operator-() [1/2]

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

Definition at line 149 of file node_item.cc.

References NodeItem(), and val().

◆ operator-() [2/2]

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

Definition at line 144 of file node_item.cc.

References b, and NodeItem().

◆ operator/()

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

Definition at line 173 of file node_item.cc.

References b, and NodeItem().

◆ operator==()

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

Definition at line 222 of file node_item.cc.

References Empty, node, NodeItem(), 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 184 of file node_item.cc.

References b, and NodeItem().

◆ rotate() [1/2]

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

Definition at line 381 of file node_item.cc.

References angle(), BLI_assert, create_node(), Float, NodeItem(), type(), 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 391 of file node_item.cc.

References invert(), NodeItem(), rotate(), val(), x, y, 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 node, T, type(), and value.

Referenced by create_node(), and set_input().

◆ sign()

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

Definition at line 472 of file node_item.cc.

References NodeItem().

◆ sin()

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

Definition at line 407 of file node_item.cc.

References NodeItem(), and to_vector().

◆ sinh()

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

Definition at line 442 of file node_item.cc.

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

◆ sqrt()

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

Definition at line 467 of file node_item.cc.

References NodeItem(), and to_vector().

Referenced by length().

◆ tan()

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

Definition at line 417 of file node_item.cc.

References NodeItem(), and to_vector().

◆ tanh()

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

Definition at line 454 of file node_item.cc.

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

◆ to_vector()

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

◆ type() [1/3]

◆ type() [2/3]

◆ 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

◆ value


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