9#include <MaterialXCore/Node.h>
20 using Inputs = std::vector<std::pair<std::string, NodeItem>>;
60 MaterialX::GraphElement *graph_ =
nullptr;
66 NodeItem(MaterialX::GraphElement *graph);
69 static Type type(
const std::string &type_str);
74 operator bool()
const;
97 NodeItem clamp(
float min_val = 0.0f,
float max_val = 1.0f)
const;
123 template<
class T>
NodeItem val(
const T &data)
const;
129 template<
class T>
void set_input(
const std::string &in_name,
const T &value,
Type in_type);
141 NodeItem arithmetic(
const std::string &category, std::function<
float(
float)> func)
const;
143 const std::string &category,
144 std::function<
float(
float,
float)> func,
151 res.
value = MaterialX::Value::createValue<T>(data);
158 node->setInputValue(in_name, value,
type(in_type));
NodeItem operator*(const NodeItem &other) const
NodeItem operator[](int index) const
NodeItem add_output(const std::string &out_name, Type out_type)
NodeItem operator-() const
NodeItem clamp(const NodeItem &min_val, const NodeItem &max_val) const
NodeItem dotproduct(const NodeItem &other) const
MaterialX::InputPtr input
NodeItem val(const T &data) const
void set_input(const std::string &in_name, const T &value, Type in_type)
bool operator!=(const NodeItem &other) const
bool operator==(const NodeItem &other) const
NodeItem atan2(const NodeItem &other) const
NodeItem create_input(const std::string &name, const NodeItem &item) const
MaterialX::OutputPtr output
NodeItem operator+(const NodeItem &other) const
static bool is_arithmetic(Type type)
NodeItem if_else(CompareOp op, const NodeItem &other, const NodeItem &if_val, const NodeItem &else_val) const
NodeItem to_vector() const
NodeItem rotate(const NodeItem &angle, const NodeItem &axis)
MaterialX::ValuePtr value
NodeItem convert(Type to_type) const
NodeItem create_output(const std::string &name, const NodeItem &item) const
NodeItem operator^(const NodeItem &other) const
NodeItem operator/(const NodeItem &other) const
std::vector< std::pair< std::string, NodeItem > > Inputs
NodeItem normalize() const
NodeItem operator%(const NodeItem &other) const
NodeItem create_node(const std::string &category, Type type) const
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
static Type to_type(const eGPUType type)