28 const float *in_image = it.in(0);
29 const float *in_key = it.in(1);
40 if (distance < tolerance) {
44 else if (distance < falloff + tolerance) {
45 distance = distance - tolerance;
46 const float alpha = distance / falloff;
48 if (alpha < in_image[3]) {
52 it.out[0] = in_image[3];
57 it.out[0] = in_image[3];
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
virtual float calculate_distance(const float key[4], const float image[4])
DistanceRGBMatteOperation()
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
const NodeChroma * settings_
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
NodeOperationFlags flags_
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator