48 for (; !it.is_end(); ++it) {
49 const float divisor = *it.in(1);
56 for (; !it.is_end(); ++it) {
57 *it.out = sin(*it.in(0));
64 for (; !it.is_end(); ++it) {
65 *it.out =
cos(*it.in(0));
72 for (; !it.is_end(); ++it) {
73 *it.out = tan(*it.in(0));
80 for (; !it.is_end(); ++it) {
81 *it.out = sinh(*it.in(0));
88 for (; !it.is_end(); ++it) {
89 *it.out = cosh(*it.in(0));
96 for (; !it.is_end(); ++it) {
97 *it.out = tanh(*it.in(0));
104 for (; !it.is_end(); ++it) {
105 float value1 = *it.in(0);
112 for (; !it.is_end(); ++it) {
113 float value1 = *it.in(0);
120 for (; !it.is_end(); ++it) {
121 *it.out = atan(*it.in(0));
128 for (; !it.is_end(); ++it) {
129 const float value1 = *it.in(0);
130 const float value2 = *it.in(1);
132 *it.out =
pow(value1, value2);
135 const float y_mod_1 =
fmod(value2, 1);
138 if (y_mod_1 > 0.999f || y_mod_1 < 0.001f) {
139 *it.out =
pow(value1,
floorf(value2 + 0.5f));
151 for (; !it.is_end(); ++it) {
152 const float value1 = *it.in(0);
153 const float value2 = *it.in(1);
154 if (value1 > 0 && value2 > 0) {
155 *it.out =
log(value1) /
log(value2);
166 for (; !it.is_end(); ++it) {
167 *it.out = std::min(*it.in(0), *it.in(1));
174 for (; !it.is_end(); ++it) {
175 *it.out = std::max(*it.in(0), *it.in(1));
182 for (; !it.is_end(); ++it) {
183 *it.out = round(*it.in(0));
190 for (; !it.is_end(); ++it) {
191 const float value2 = *it.in(1);
192 *it.out = (value2 == 0) ? 0 :
fmod(*it.in(0), value2);
199 for (; !it.is_end(); ++it) {
200 const float value2 = *it.in(1);
201 *it.out = (value2 == 0) ? 0 : *it.in(0) -
floorf(*it.in(0) / value2) * value2;
208 for (; !it.is_end(); ++it) {
209 *it.out =
fabs(*it.in(0));
216 for (; !it.is_end(); ++it) {
224 for (; !it.is_end(); ++it) {
232 for (; !it.is_end(); ++it) {
233 *it.out = atan2(*it.in(0), *it.in(1));
240 for (; !it.is_end(); ++it) {
241 *it.out =
floor(*it.in(0));
248 for (; !it.is_end(); ++it) {
249 *it.out =
ceil(*it.in(0));
256 for (; !it.is_end(); ++it) {
257 const float value = *it.in(0);
264 for (; !it.is_end(); ++it) {
265 const float value = *it.in(0);
272 for (; !it.is_end(); ++it) {
273 const float value = *it.in(0);
280 for (; !it.is_end(); ++it) {
288 for (; !it.is_end(); ++it) {
289 *it.out =
expf(*it.in(0));
296 for (; !it.is_end(); ++it) {
297 const float value = *it.in(0);
298 *it.out = (value >= 0.0f) ?
floor(value) :
ceil(value);
305 for (; !it.is_end(); ++it) {
306 const float value1 = *it.in(0);
307 const float value2 = *it.in(1);
308 if (value1 == 0 || value2 == 0) {
312 *it.out =
floorf(value1 / value2) * value2;
320 for (; !it.is_end(); ++it) {
321 *it.out =
wrapf(*it.in(0), *it.in(1), *it.in(2));
328 for (; !it.is_end(); ++it) {
329 *it.out =
pingpongf(*it.in(0), *it.in(1));
336 for (; !it.is_end(); ++it) {
337 *it.out = (
fabsf(*it.in(0) - *it.in(1)) <= std::max(*it.in(2), 1e-5f)) ? 1.0f : 0.0f;
344 for (; !it.is_end(); ++it) {
345 *it.out = it.in(0)[0] * it.in(1)[0] + it.in(2)[0];
352 for (; !it.is_end(); ++it) {
353 *it.out =
smoothminf(*it.in(0), *it.in(1), *it.in(2));
360 for (; !it.is_end(); ++it) {
361 *it.out = -
smoothminf(-it.in(0)[0], -it.in(1)[0], it.in(2)[0]);
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
float clamp_when_enabled(float value)
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
NodeOperationFlags flags_
NodeOperationInput * get_input_socket(unsigned int index)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
pow(value.r - subtrahend, 2.0)") .do_static_compilation(true)
MINLINE float smoothminf(float a, float b, float c)
MINLINE float pingpongf(float value, float scale)
MINLINE float compatible_signf(float f)
MINLINE float wrapf(float value, float max, float min)
ccl_device_inline float2 fmod(const float2 a, const float b)
ccl_device_inline float2 floor(const float2 a)
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline float3 ceil(const float3 a)
ccl_device_inline float3 cos(float3 v)
ccl_device_inline float3 log(float3 v)
constexpr rcti COM_AREA_NONE
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator