Blender  V3.3
math_functions.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include "NOD_math_functions.hh"
4 
5 namespace blender::nodes {
6 
8 {
9 
10 #define RETURN_OPERATION_INFO(title_case_name, shader_name) \
11  { \
12  static const FloatMathOperationInfo info{title_case_name, shader_name}; \
13  return &info; \
14  } \
15  ((void)0)
16 
17  switch (operation) {
18  case NODE_MATH_ADD:
19  RETURN_OPERATION_INFO("Add", "math_add");
20  case NODE_MATH_SUBTRACT:
21  RETURN_OPERATION_INFO("Subtract", "math_subtract");
22  case NODE_MATH_MULTIPLY:
23  RETURN_OPERATION_INFO("Multiply", "math_multiply");
24  case NODE_MATH_DIVIDE:
25  RETURN_OPERATION_INFO("Divide", "math_divide");
26  case NODE_MATH_SINE:
27  RETURN_OPERATION_INFO("Sine", "math_sine");
28  case NODE_MATH_COSINE:
29  RETURN_OPERATION_INFO("Cosine", "math_cosine");
30  case NODE_MATH_TANGENT:
31  RETURN_OPERATION_INFO("Tangent", "math_tangent");
32  case NODE_MATH_ARCSINE:
33  RETURN_OPERATION_INFO("Arc Sine", "math_arcsine");
35  RETURN_OPERATION_INFO("Arc Cosine", "math_arccosine");
37  RETURN_OPERATION_INFO("Arc Tangent", "math_arctangent");
38  case NODE_MATH_POWER:
39  RETURN_OPERATION_INFO("Power", "math_power");
41  RETURN_OPERATION_INFO("Logarithm", "math_logarithm");
42  case NODE_MATH_MINIMUM:
43  RETURN_OPERATION_INFO("Minimum", "math_minimum");
44  case NODE_MATH_MAXIMUM:
45  RETURN_OPERATION_INFO("Maximum", "math_maximum");
46  case NODE_MATH_ROUND:
47  RETURN_OPERATION_INFO("Round", "math_round");
49  RETURN_OPERATION_INFO("Less Than", "math_less_than");
51  RETURN_OPERATION_INFO("Greater Than", "math_greater_than");
52  case NODE_MATH_MODULO:
53  RETURN_OPERATION_INFO("Modulo", "math_modulo");
54  case NODE_MATH_ABSOLUTE:
55  RETURN_OPERATION_INFO("Absolute", "math_absolute");
56  case NODE_MATH_ARCTAN2:
57  RETURN_OPERATION_INFO("Arc Tangent 2", "math_arctan2");
58  case NODE_MATH_FLOOR:
59  RETURN_OPERATION_INFO("Floor", "math_floor");
60  case NODE_MATH_CEIL:
61  RETURN_OPERATION_INFO("Ceil", "math_ceil");
62  case NODE_MATH_FRACTION:
63  RETURN_OPERATION_INFO("Fraction", "math_fraction");
64  case NODE_MATH_SQRT:
65  RETURN_OPERATION_INFO("Sqrt", "math_sqrt");
66  case NODE_MATH_INV_SQRT:
67  RETURN_OPERATION_INFO("Inverse Sqrt", "math_inversesqrt");
68  case NODE_MATH_SIGN:
69  RETURN_OPERATION_INFO("Sign", "math_sign");
70  case NODE_MATH_EXPONENT:
71  RETURN_OPERATION_INFO("Exponent", "math_exponent");
72  case NODE_MATH_RADIANS:
73  RETURN_OPERATION_INFO("Radians", "math_radians");
74  case NODE_MATH_DEGREES:
75  RETURN_OPERATION_INFO("Degrees", "math_degrees");
76  case NODE_MATH_SINH:
77  RETURN_OPERATION_INFO("Hyperbolic Sine", "math_sinh");
78  case NODE_MATH_COSH:
79  RETURN_OPERATION_INFO("Hyperbolic Cosine", "math_cosh");
80  case NODE_MATH_TANH:
81  RETURN_OPERATION_INFO("Hyperbolic Tangent", "math_tanh");
82  case NODE_MATH_TRUNC:
83  RETURN_OPERATION_INFO("Truncate", "math_trunc");
84  case NODE_MATH_SNAP:
85  RETURN_OPERATION_INFO("Snap", "math_snap");
86  case NODE_MATH_WRAP:
87  RETURN_OPERATION_INFO("Wrap", "math_wrap");
88  case NODE_MATH_COMPARE:
89  RETURN_OPERATION_INFO("Compare", "math_compare");
91  RETURN_OPERATION_INFO("Multiply Add", "math_multiply_add");
92  case NODE_MATH_PINGPONG:
93  RETURN_OPERATION_INFO("Ping Pong", "math_pingpong");
95  RETURN_OPERATION_INFO("Smooth Min", "math_smoothmin");
97  RETURN_OPERATION_INFO("Smooth Max", "math_smoothmax");
98  }
99 
100 #undef RETURN_OPERATION_INFO
101 
102  return nullptr;
103 }
104 
106 {
107 
108 #define RETURN_OPERATION_INFO(title_case_name, shader_name) \
109  { \
110  static const FloatMathOperationInfo info{title_case_name, shader_name}; \
111  return &info; \
112  } \
113  ((void)0)
114 
115  switch (operation) {
117  RETURN_OPERATION_INFO("Less Than", "math_less_than");
119  RETURN_OPERATION_INFO("Less Than or Equal", "math_less_equal");
121  RETURN_OPERATION_INFO("Greater Than", "math_greater_than");
123  RETURN_OPERATION_INFO("Greater Than or Equal", "math_greater_equal");
124  case NODE_COMPARE_EQUAL:
125  RETURN_OPERATION_INFO("Equal", "math_equal");
127  RETURN_OPERATION_INFO("Not Equal", "math_not_equal");
128  }
129 
130 #undef RETURN_OPERATION_INFO
131 
132  return nullptr;
133 }
134 
136 {
137 
138 #define RETURN_OPERATION_INFO(title_case_name, shader_name) \
139  { \
140  static const FloatMathOperationInfo info{title_case_name, shader_name}; \
141  return &info; \
142  } \
143  ((void)0)
144 
145  switch (operation) {
147  RETURN_OPERATION_INFO("Add", "vector_math_add");
149  RETURN_OPERATION_INFO("Subtract", "vector_math_subtract");
151  RETURN_OPERATION_INFO("Multiply", "vector_math_multiply");
153  RETURN_OPERATION_INFO("Divide", "vector_math_divide");
155  RETURN_OPERATION_INFO("Cross Product", "vector_math_cross");
157  RETURN_OPERATION_INFO("Project", "vector_math_project");
159  RETURN_OPERATION_INFO("Reflect", "vector_math_reflect");
161  RETURN_OPERATION_INFO("Dot Product", "vector_math_dot");
163  RETURN_OPERATION_INFO("Distance", "vector_math_distance");
165  RETURN_OPERATION_INFO("Length", "vector_math_length");
167  RETURN_OPERATION_INFO("Scale", "vector_math_scale");
169  RETURN_OPERATION_INFO("Normalize", "vector_math_normalize");
171  RETURN_OPERATION_INFO("Snap", "vector_math_snap");
173  RETURN_OPERATION_INFO("Floor", "vector_math_floor");
175  RETURN_OPERATION_INFO("Ceiling", "vector_math_ceil");
177  RETURN_OPERATION_INFO("Modulo", "vector_math_modulo");
179  RETURN_OPERATION_INFO("Fraction", "vector_math_fraction");
181  RETURN_OPERATION_INFO("Absolute", "vector_math_absolute");
183  RETURN_OPERATION_INFO("Minimum", "vector_math_minimum");
185  RETURN_OPERATION_INFO("Maximum", "vector_math_maximum");
187  RETURN_OPERATION_INFO("Wrap", "vector_math_wrap");
189  RETURN_OPERATION_INFO("Sine", "vector_math_sine");
191  RETURN_OPERATION_INFO("Cosine", "vector_math_cosine");
193  RETURN_OPERATION_INFO("Tangent", "vector_math_tangent");
195  RETURN_OPERATION_INFO("Refract", "vector_math_refract");
197  RETURN_OPERATION_INFO("Faceforward", "vector_math_faceforward");
199  RETURN_OPERATION_INFO("Multiply Add", "vector_math_multiply_add");
200  }
201 
202 #undef RETURN_OPERATION_INFO
203 
204  return nullptr;
205 }
206 
207 } // namespace blender::nodes
@ NODE_VECTOR_MATH_NORMALIZE
@ NODE_VECTOR_MATH_LENGTH
@ NODE_VECTOR_MATH_CROSS_PRODUCT
@ NODE_VECTOR_MATH_CEIL
@ NODE_VECTOR_MATH_MODULO
@ NODE_VECTOR_MATH_ADD
@ NODE_VECTOR_MATH_COSINE
@ NODE_VECTOR_MATH_REFLECT
@ NODE_VECTOR_MATH_WRAP
@ 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_FLOOR
@ NODE_VECTOR_MATH_SNAP
@ NODE_VECTOR_MATH_SINE
@ NODE_VECTOR_MATH_FRACTION
@ NODE_VECTOR_MATH_PROJECT
@ NODE_VECTOR_MATH_MULTIPLY
@ NODE_VECTOR_MATH_SCALE
@ NODE_VECTOR_MATH_MAXIMUM
@ NODE_VECTOR_MATH_FACEFORWARD
@ NODE_VECTOR_MATH_SUBTRACT
@ NODE_VECTOR_MATH_MULTIPLY_ADD
@ NODE_VECTOR_MATH_MINIMUM
@ NODE_MATH_SINH
@ NODE_MATH_SMOOTH_MIN
@ NODE_MATH_TRUNC
@ NODE_MATH_COSH
@ NODE_MATH_SIGN
@ NODE_MATH_DEGREES
@ NODE_MATH_MODULO
@ NODE_MATH_ABSOLUTE
@ NODE_MATH_DIVIDE
@ NODE_MATH_SINE
@ NODE_MATH_ARCTAN2
@ NODE_MATH_ARCCOSINE
@ NODE_MATH_MULTIPLY_ADD
@ NODE_MATH_POWER
@ NODE_MATH_WRAP
@ NODE_MATH_ARCTANGENT
@ NODE_MATH_MINIMUM
@ NODE_MATH_SQRT
@ NODE_MATH_CEIL
@ NODE_MATH_TANH
@ NODE_MATH_GREATER_THAN
@ NODE_MATH_ADD
@ NODE_MATH_FRACTION
@ NODE_MATH_EXPONENT
@ NODE_MATH_LESS_THAN
@ NODE_MATH_ARCSINE
@ NODE_MATH_MAXIMUM
@ NODE_MATH_LOGARITHM
@ NODE_MATH_COMPARE
@ NODE_MATH_INV_SQRT
@ NODE_MATH_MULTIPLY
@ NODE_MATH_PINGPONG
@ NODE_MATH_ROUND
@ NODE_MATH_FLOOR
@ NODE_MATH_SUBTRACT
@ NODE_MATH_COSINE
@ NODE_MATH_SNAP
@ NODE_MATH_TANGENT
@ NODE_MATH_SMOOTH_MAX
@ NODE_MATH_RADIANS
@ NODE_COMPARE_NOT_EQUAL
@ NODE_COMPARE_LESS_EQUAL
@ NODE_COMPARE_EQUAL
@ NODE_COMPARE_GREATER_EQUAL
@ NODE_COMPARE_GREATER_THAN
@ NODE_COMPARE_LESS_THAN
#define RETURN_OPERATION_INFO(title_case_name, shader_name)
const FloatMathOperationInfo * get_float3_math_operation_info(const int operation)
const FloatMathOperationInfo * get_float_compare_operation_info(const int operation)
const FloatMathOperationInfo * get_float_math_operation_info(const int operation)