Blender
V4.3
source
blender
compositor
intern
COM_MultiThreadedRowOperation.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_MultiThreadedRowOperation.h
"
6
7
namespace
blender::compositor
{
8
9
MultiThreadedRowOperation::PixelCursor::PixelCursor
(
const
int
num_inputs)
10
:
out
(nullptr),
out_stride
(0),
row_end
(nullptr),
ins
(num_inputs),
in_strides
(num_inputs)
11
{
12
}
13
14
void
MultiThreadedRowOperation::update_memory_buffer_partial(
MemoryBuffer
*
output
,
15
const
rcti
&area,
16
Span<MemoryBuffer *>
inputs
)
17
{
18
BLI_assert
(
output
!=
nullptr
);
19
const
int
width =
BLI_rcti_size_x
(&area);
20
PixelCursor
p(
inputs
.size());
21
p.out_stride =
output
->elem_stride;
22
for
(
int
i = 0; i < p.in_strides.size(); i++) {
23
p.in_strides[i] =
inputs
[i]->elem_stride;
24
}
25
26
for
(
int
y
= area.
ymin
;
y
< area.
ymax
;
y
++) {
27
p.out =
output
->get_elem(area.
xmin
,
y
);
28
for
(
int
i = 0; i < p.ins.size(); i++) {
29
p.ins[i] =
inputs
[i]->get_elem(area.
xmin
,
y
);
30
}
31
p.row_end = p.out + width * p.out_stride;
32
update_memory_buffer_row
(p);
33
}
34
}
35
36
}
// namespace blender::compositor
BLI_assert
#define BLI_assert(a)
Definition
BLI_assert.h:50
BLI_rcti_size_x
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
Definition
BLI_rect.h:189
COM_MultiThreadedRowOperation.h
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::MultiThreadedRowOperation::update_memory_buffer_row
virtual void update_memory_buffer_row(PixelCursor &p)=0
y
y
Definition
compositor_morphological_blur_info.hh:15
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
blender::compositor::MultiThreadedRowOperation::PixelCursor
Definition
COM_MultiThreadedRowOperation.h:17
blender::compositor::MultiThreadedRowOperation::PixelCursor::out
float * out
Definition
COM_MultiThreadedRowOperation.h:18
blender::compositor::MultiThreadedRowOperation::PixelCursor::PixelCursor
PixelCursor(int num_inputs)
Definition
COM_MultiThreadedRowOperation.cc:9
blender::compositor::MultiThreadedRowOperation::PixelCursor::row_end
const float * row_end
Definition
COM_MultiThreadedRowOperation.h:20
blender::compositor::MultiThreadedRowOperation::PixelCursor::ins
Array< const float * > ins
Definition
COM_MultiThreadedRowOperation.h:21
blender::compositor::MultiThreadedRowOperation::PixelCursor::in_strides
Array< int > in_strides
Definition
COM_MultiThreadedRowOperation.h:22
blender::compositor::MultiThreadedRowOperation::PixelCursor::out_stride
int out_stride
Definition
COM_MultiThreadedRowOperation.h:19
rcti
Definition
DNA_vec_types.h:68
rcti::ymin
int ymin
Definition
DNA_vec_types.h:70
rcti::ymax
int ymax
Definition
DNA_vec_types.h:70
rcti::xmin
int xmin
Definition
DNA_vec_types.h:69
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0