Blender
V4.3
source
blender
compositor
operations
COM_PosterizeOperation.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2021 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#include "
COM_PosterizeOperation.h
"
6
7
namespace
blender::compositor
{
8
9
PosterizeOperation::PosterizeOperation
()
10
{
11
this->
add_input_socket
(
DataType::Color
);
12
this->
add_input_socket
(
DataType::Value
);
13
this->
add_output_socket
(
DataType::Color
);
14
flags_
.
can_be_constant
=
true
;
15
}
16
17
void
PosterizeOperation::update_memory_buffer_partial
(
MemoryBuffer
*output,
18
const
rcti
&area,
19
Span<MemoryBuffer *>
inputs)
20
{
21
for
(
BuffersIterator<float>
it = output->iterate_with(inputs, area); !it.is_end(); ++it) {
22
const
float
*in_value = it.in(0);
23
const
float
*in_steps = it.in(1);
24
float
steps
= in_steps[0];
25
CLAMP
(
steps
, 2.0f, 1024.0f);
26
const
float
steps_inv = 1.0f /
steps
;
27
28
it.out[0] =
floor
(in_value[0] / steps_inv) * steps_inv;
29
it.out[1] =
floor
(in_value[1] / steps_inv) * steps_inv;
30
it.out[2] =
floor
(in_value[2] / steps_inv) * steps_inv;
31
it.out[3] = in_value[3];
32
}
33
}
34
35
}
// namespace blender::compositor
CLAMP
#define CLAMP(a, b, c)
Definition
BLI_utildefines.h:211
COM_PosterizeOperation.h
blender::Span
Definition
BLI_span.hh:75
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::NodeOperation::add_output_socket
void add_output_socket(DataType datatype)
Definition
COM_NodeOperation.cc:102
blender::compositor::NodeOperation::flags_
NodeOperationFlags flags_
Definition
COM_NodeOperation.h:295
blender::compositor::NodeOperation::add_input_socket
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
Definition
COM_NodeOperation.cc:97
blender::compositor::PosterizeOperation::PosterizeOperation
PosterizeOperation()
Definition
COM_PosterizeOperation.cc:9
blender::compositor::PosterizeOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_PosterizeOperation.cc:17
blender::compositor::DataType::Value
@ Value
Value data type.
blender::compositor::DataType::Color
@ Color
Color data type.
floor
ccl_device_inline float2 floor(const float2 a)
Definition
math_float2.h:235
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
blender::compositor::BuffersIterator
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
Definition
COM_BuffersIterator.h:179
steps
static const int steps
Definition
sky_nishita.cpp:20
blender::compositor::NodeOperationFlags::can_be_constant
bool can_be_constant
Definition
COM_NodeOperation.h:207
rcti
Definition
DNA_vec_types.h:68
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0