Blender
V4.3
source
blender
compositor
operations
COM_MixOperation.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#pragma once
6
7
#include "
COM_MultiThreadedOperation.h
"
8
9
namespace
blender::compositor
{
10
15
class
MixBaseOperation
:
public
MultiThreadedOperation
{
16
protected
:
17
struct
PixelCursor
{
18
float
*
out
;
19
const
float
*
row_end
;
20
const
float
*
value
;
21
const
float
*
color1
;
22
const
float
*
color2
;
23
int
out_stride
;
24
int
value_stride
;
25
int
color1_stride
;
26
int
color2_stride
;
27
28
void
next
()
29
{
30
BLI_assert
(
out
<
row_end
);
31
out
+=
out_stride
;
32
value
+=
value_stride
;
33
color1
+=
color1_stride
;
34
color2
+=
color2_stride
;
35
}
36
};
37
38
bool
value_alpha_multiply_
;
39
bool
use_clamp_
;
40
41
inline
void
clamp_if_needed
(
float
color
[4])
42
{
43
if
(
use_clamp_
) {
44
clamp_v4
(
color
, 0.0f, 1.0f);
45
}
46
}
47
48
public
:
49
MixBaseOperation
();
50
51
void
determine_canvas
(
const
rcti
&preferred_area,
rcti
&r_area)
override
;
52
53
void
set_use_value_alpha_multiply
(
const
bool
value)
54
{
55
value_alpha_multiply_
= value;
56
}
57
inline
bool
use_value_alpha_multiply
()
58
{
59
return
value_alpha_multiply_
;
60
}
61
void
set_use_clamp
(
bool
value)
62
{
63
use_clamp_
= value;
64
}
65
66
void
update_memory_buffer_partial
(
MemoryBuffer
*
output
,
67
const
rcti
&area,
68
Span<MemoryBuffer *>
inputs
)
final
;
69
70
protected
:
71
virtual
void
update_memory_buffer_row
(
PixelCursor
&p);
72
};
73
74
class
MixAddOperation
:
public
MixBaseOperation
{
75
protected
:
76
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
77
};
78
79
class
MixBlendOperation
:
public
MixBaseOperation
{
80
protected
:
81
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
82
};
83
84
class
MixColorBurnOperation
:
public
MixBaseOperation
{
85
protected
:
86
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
87
};
88
89
class
MixColorOperation
:
public
MixBaseOperation
{
90
protected
:
91
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
92
};
93
94
class
MixDarkenOperation
:
public
MixBaseOperation
{
95
protected
:
96
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
97
};
98
99
class
MixDifferenceOperation
:
public
MixBaseOperation
{
100
protected
:
101
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
102
};
103
104
class
MixExclusionOperation
:
public
MixBaseOperation
{
105
protected
:
106
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
107
};
108
109
class
MixDivideOperation
:
public
MixBaseOperation
{
110
protected
:
111
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
112
};
113
114
class
MixDodgeOperation
:
public
MixBaseOperation
{
115
protected
:
116
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
117
};
118
119
class
MixGlareOperation
:
public
MixBaseOperation
{
120
protected
:
121
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
122
};
123
124
class
MixHueOperation
:
public
MixBaseOperation
{
125
protected
:
126
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
127
};
128
129
class
MixLightenOperation
:
public
MixBaseOperation
{
130
protected
:
131
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
132
};
133
134
class
MixLinearLightOperation
:
public
MixBaseOperation
{
135
protected
:
136
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
137
};
138
139
class
MixMultiplyOperation
:
public
MixBaseOperation
{
140
protected
:
141
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
142
};
143
144
class
MixOverlayOperation
:
public
MixBaseOperation
{
145
protected
:
146
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
147
};
148
149
class
MixSaturationOperation
:
public
MixBaseOperation
{
150
protected
:
151
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
152
};
153
154
class
MixScreenOperation
:
public
MixBaseOperation
{
155
protected
:
156
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
157
};
158
159
class
MixSoftLightOperation
:
public
MixBaseOperation
{
160
protected
:
161
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
162
};
163
164
class
MixSubtractOperation
:
public
MixBaseOperation
{
165
protected
:
166
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
167
};
168
169
class
MixValueOperation
:
public
MixBaseOperation
{
170
protected
:
171
void
update_memory_buffer_row
(
PixelCursor
&p)
override
;
172
};
173
174
}
// namespace blender::compositor
BLI_assert
#define BLI_assert(a)
Definition
BLI_assert.h:50
clamp_v4
MINLINE void clamp_v4(float vec[4], float min, float max)
Definition
math_vector_inline.c:1438
COM_MultiThreadedOperation.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::MixAddOperation
Definition
COM_MixOperation.h:74
blender::compositor::MixAddOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:88
blender::compositor::MixBaseOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
Definition
COM_MixOperation.cc:47
blender::compositor::MixBaseOperation::set_use_clamp
void set_use_clamp(bool value)
Definition
COM_MixOperation.h:61
blender::compositor::MixBaseOperation::clamp_if_needed
void clamp_if_needed(float color[4])
Definition
COM_MixOperation.h:41
blender::compositor::MixBaseOperation::determine_canvas
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
Definition
COM_MixOperation.cc:24
blender::compositor::MixBaseOperation::use_value_alpha_multiply
bool use_value_alpha_multiply()
Definition
COM_MixOperation.h:57
blender::compositor::MixBaseOperation::MixBaseOperation
MixBaseOperation()
Definition
COM_MixOperation.cc:13
blender::compositor::MixBaseOperation::value_alpha_multiply_
bool value_alpha_multiply_
Definition
COM_MixOperation.h:38
blender::compositor::MixBaseOperation::use_clamp_
bool use_clamp_
Definition
COM_MixOperation.h:39
blender::compositor::MixBaseOperation::update_memory_buffer_row
virtual void update_memory_buffer_row(PixelCursor &p)
Definition
COM_MixOperation.cc:70
blender::compositor::MixBaseOperation::set_use_value_alpha_multiply
void set_use_value_alpha_multiply(const bool value)
Definition
COM_MixOperation.h:53
blender::compositor::MixBlendOperation
Definition
COM_MixOperation.h:79
blender::compositor::MixBlendOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:107
blender::compositor::MixColorBurnOperation
Definition
COM_MixOperation.h:84
blender::compositor::MixColorBurnOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:127
blender::compositor::MixColorOperation
Definition
COM_MixOperation.h:89
blender::compositor::MixColorOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:171
blender::compositor::MixDarkenOperation
Definition
COM_MixOperation.h:94
blender::compositor::MixDarkenOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:203
blender::compositor::MixDifferenceOperation
Definition
COM_MixOperation.h:99
blender::compositor::MixDifferenceOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:223
blender::compositor::MixDivideOperation
Definition
COM_MixOperation.h:109
blender::compositor::MixDivideOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:269
blender::compositor::MixDodgeOperation
Definition
COM_MixOperation.h:114
blender::compositor::MixDodgeOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:306
blender::compositor::MixExclusionOperation
Definition
COM_MixOperation.h:104
blender::compositor::MixExclusionOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:243
blender::compositor::MixGlareOperation
Definition
COM_MixOperation.h:119
blender::compositor::MixGlareOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:366
blender::compositor::MixHueOperation
Definition
COM_MixOperation.h:124
blender::compositor::MixHueOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:395
blender::compositor::MixLightenOperation
Definition
COM_MixOperation.h:129
blender::compositor::MixLightenOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:427
blender::compositor::MixLinearLightOperation
Definition
COM_MixOperation.h:134
blender::compositor::MixLinearLightOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:447
blender::compositor::MixMultiplyOperation
Definition
COM_MixOperation.h:139
blender::compositor::MixMultiplyOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:482
blender::compositor::MixOverlayOperation
Definition
COM_MixOperation.h:144
blender::compositor::MixOverlayOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:503
blender::compositor::MixSaturationOperation
Definition
COM_MixOperation.h:149
blender::compositor::MixSaturationOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:539
blender::compositor::MixScreenOperation
Definition
COM_MixOperation.h:154
blender::compositor::MixScreenOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:568
blender::compositor::MixSoftLightOperation
Definition
COM_MixOperation.h:159
blender::compositor::MixSoftLightOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:589
blender::compositor::MixSubtractOperation
Definition
COM_MixOperation.h:164
blender::compositor::MixSubtractOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:619
blender::compositor::MixValueOperation
Definition
COM_MixOperation.h:169
blender::compositor::MixValueOperation::update_memory_buffer_row
void update_memory_buffer_row(PixelCursor &p) override
Definition
COM_MixOperation.cc:638
blender::compositor::MultiThreadedOperation::MultiThreadedOperation
MultiThreadedOperation()
Definition
COM_MultiThreadedOperation.cc:10
blender::color
Definition
BLI_color_mix.hh:21
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
blender::compositor::MixBaseOperation::PixelCursor
Definition
COM_MixOperation.h:17
blender::compositor::MixBaseOperation::PixelCursor::color2_stride
int color2_stride
Definition
COM_MixOperation.h:26
blender::compositor::MixBaseOperation::PixelCursor::color1_stride
int color1_stride
Definition
COM_MixOperation.h:25
blender::compositor::MixBaseOperation::PixelCursor::row_end
const float * row_end
Definition
COM_MixOperation.h:19
blender::compositor::MixBaseOperation::PixelCursor::out_stride
int out_stride
Definition
COM_MixOperation.h:23
blender::compositor::MixBaseOperation::PixelCursor::color1
const float * color1
Definition
COM_MixOperation.h:21
blender::compositor::MixBaseOperation::PixelCursor::value_stride
int value_stride
Definition
COM_MixOperation.h:24
blender::compositor::MixBaseOperation::PixelCursor::value
const float * value
Definition
COM_MixOperation.h:20
blender::compositor::MixBaseOperation::PixelCursor::color2
const float * color2
Definition
COM_MixOperation.h:22
blender::compositor::MixBaseOperation::PixelCursor::out
float * out
Definition
COM_MixOperation.h:18
blender::compositor::MixBaseOperation::PixelCursor::next
void next()
Definition
COM_MixOperation.h:28
blender::compositor::PixelCursor
Definition
COM_BilateralBlurOperation.cc:29
rcti
Definition
DNA_vec_types.h:68
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0