9#include <MaterialXCore/Node.h>
20 using Inputs = std::vector<std::pair<std::string, NodeItem>>;
51 enum class CompareOp { Less = 0, LessEq, Eq, GreaterEq, Greater, NotEq };
59 MaterialX::GraphElement *graph_ =
nullptr;
65 NodeItem(MaterialX::GraphElement *graph);
68 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;
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);
BMesh const char void * data
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
NodeItem operator*(const NodeItem &other) const
NodeItem operator[](int index) const
NodeItem add_output(const std::string &out_name, Type out_type)
NodeItem clamp(const NodeItem &min_val, const NodeItem &max_val) const
NodeItem dotproduct(const NodeItem &other) const
MaterialX::InputPtr input
NodeItem max(const NodeItem &other) const
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
NodeItem min(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
static bool is_convertible(eNodeSocketDatatype from_type, Type to_type)
NodeItem mix(const NodeItem &val1, const NodeItem &val2) const
static Type type(const std::string &type_str)
NodeItem operator/(const NodeItem &other) const
std::vector< std::pair< std::string, NodeItem > > Inputs
NodeItem normalize() const
NodeItem operator%(const NodeItem &other) const
NodeItem operator-(const NodeItem &other) const
NodeItem create_node(const std::string &category, Type type) const
CCL_NAMESPACE_BEGIN ccl_device float invert(const float color, const float factor)