11 const int mode =
node.custom1;
16 static auto fn = mf::build::SI1_SO<float, float>(
17 info.title_case_name.c_str(), function, devi_fn);
20 if (base_fn !=
nullptr) {
26 static auto fn = mf::build::SI2_SO<float, float, float>(
27 info.title_case_name.c_str(), function, devi_fn);
30 if (base_fn !=
nullptr) {
36 static auto fn = mf::build::SI3_SO<float, float, float, float>(
37 info.title_case_name.c_str(), function, devi_fn);
40 if (base_fn !=
nullptr) {
66 mask.foreach_index_optimized<
int>([&](
const int i) {
67 float &
value = results[i];
77 const bool clamp_output = builder.
node().
custom2 != 0;
89#define RETURN_OPERATION_INFO(title_case_name, shader_name) \
91 static const FloatMathOperationInfo info{title_case_name, shader_name}; \
181#undef RETURN_OPERATION_INFO
189#define RETURN_OPERATION_INFO(title_case_name, shader_name) \
191 static const FloatMathOperationInfo info{title_case_name, shader_name}; \
211#undef RETURN_OPERATION_INFO
219#define RETURN_OPERATION_INFO(title_case_name, shader_name) \
221 static const FloatMathOperationInfo info{title_case_name, shader_name}; \
287#undef RETURN_OPERATION_INFO
@ NODE_VECTOR_MATH_NORMALIZE
@ NODE_VECTOR_MATH_LENGTH
@ NODE_VECTOR_MATH_CROSS_PRODUCT
@ NODE_VECTOR_MATH_MODULO
@ NODE_VECTOR_MATH_COSINE
@ NODE_VECTOR_MATH_REFLECT
@ NODE_VECTOR_MATH_REFRACT
@ NODE_VECTOR_MATH_DOT_PRODUCT
@ NODE_VECTOR_MATH_ABSOLUTE
@ NODE_VECTOR_MATH_DIVIDE
@ NODE_VECTOR_MATH_TANGENT
@ NODE_VECTOR_MATH_DISTANCE
@ NODE_VECTOR_MATH_FRACTION
@ NODE_VECTOR_MATH_PROJECT
@ NODE_VECTOR_MATH_MULTIPLY
@ NODE_VECTOR_MATH_MAXIMUM
@ NODE_VECTOR_MATH_FACEFORWARD
@ NODE_VECTOR_MATH_SUBTRACT
@ NODE_VECTOR_MATH_MULTIPLY_ADD
@ NODE_VECTOR_MATH_MINIMUM
@ NODE_MATH_FLOORED_MODULO
@ NODE_COMPARE_LESS_EQUAL
@ NODE_COMPARE_GREATER_EQUAL
@ NODE_COMPARE_GREATER_THAN
const Signature & signature() const
void set_signature(const Signature *signature)
virtual void call(const IndexMask &mask, Params params, Context context) const =0
void call(const IndexMask &mask, mf::Params params, mf::Context context) const override
ClampWrapperFunction(const mf::MultiFunction &fn)
void set_matching_fn(const mf::MultiFunction *fn)
void construct_and_set_matching_fn(Args &&...args)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
#define RETURN_OPERATION_INFO(title_case_name, shader_name)
void node_math_build_multi_function(NodeMultiFunctionBuilder &builder)
bool try_dispatch_float_math_fl_fl_to_fl(const int operation, Callback &&callback)
const FloatMathOperationInfo * get_float3_math_operation_info(const int operation)
static const mf::MultiFunction * get_base_multi_function(const bNode &node)
bool try_dispatch_float_math_fl_to_fl(const int operation, Callback &&callback)
const FloatMathOperationInfo * get_float_compare_operation_info(const int operation)
const FloatMathOperationInfo * get_float_math_operation_info(const int operation)
bool try_dispatch_float_math_fl_fl_fl_to_fl(const int operation, Callback &&callback)