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]

◆ 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

Member Function Documentation

◆ abs()

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

Definition at line 250 of file node_item.cc.

References NodeItem().

◆ acos()

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

Definition at line 426 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 856 of file node_item.cc.

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

◆ asin()

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

Definition at line 421 of file node_item.cc.

References NodeItem(), and to_vector().

◆ atan()

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

Definition at line 431 of file node_item.cc.

References NodeItem(), and to_vector().

◆ atan2()

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

Definition at line 436 of file node_item.cc.

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

◆ ceil()

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

Definition at line 260 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 358 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 375 of file node_item.cc.

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

◆ convert()

◆ cos()

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

Definition at line 411 of file node_item.cc.

References NodeItem(), and to_vector().

◆ cosh()

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

Definition at line 447 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 778 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 291 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 476 of file node_item.cc.

References NodeItem(), and to_vector().

Referenced by tanh().

◆ floor()

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

Definition at line 255 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

◆ length()

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

Definition at line 265 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 461 of file node_item.cc.

References NodeItem(), and to_vector().

◆ max()

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

Definition at line 286 of file node_item.cc.

References b, and NodeItem().

◆ min()

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

Definition at line 281 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 273 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 120 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 245 of file node_item.cc.

References NodeItem().

◆ operator%()

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

Definition at line 177 of file node_item.cc.

References b, and NodeItem().

◆ 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, NodeItem(), type(), 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(), NodeItem(), type(), and type().

◆ operator-() [1/2]

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

Definition at line 148 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 143 of file node_item.cc.

References b, and NodeItem().

◆ operator/()

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

Definition at line 172 of file node_item.cc.

References b, and NodeItem().

◆ operator==()

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

Definition at line 221 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 183 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 380 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 390 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 471 of file node_item.cc.

References NodeItem().

◆ sin()

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

Definition at line 406 of file node_item.cc.

References NodeItem(), and to_vector().

◆ sinh()

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

Definition at line 441 of file node_item.cc.

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

◆ sqrt()

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

Definition at line 466 of file node_item.cc.

References NodeItem(), and to_vector().

Referenced by length().

◆ tan()

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

Definition at line 416 of file node_item.cc.

References NodeItem(), and to_vector().

◆ tanh()

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

Definition at line 453 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

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

◆ value


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