Blender
V2.93
source
blender
compositor
operations
COM_AlphaOverKeyOperation.cc
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version 2
5
* of the License, or (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software Foundation,
14
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
*
16
* Copyright 2011, Blender Foundation.
17
*/
18
19
#include "
COM_AlphaOverKeyOperation.h
"
20
21
namespace
blender::compositor
{
22
23
void
AlphaOverKeyOperation::executePixelSampled
(
float
output
[4],
24
float
x
,
25
float
y
,
26
PixelSampler
sampler)
27
{
28
float
inputColor1[4];
29
float
inputOverColor[4];
30
float
value[4];
31
32
this->
m_inputValueOperation
->
readSampled
(value,
x
,
y
, sampler);
33
this->
m_inputColor1Operation
->
readSampled
(inputColor1,
x
,
y
, sampler);
34
this->
m_inputColor2Operation
->
readSampled
(inputOverColor,
x
,
y
, sampler);
35
36
if
(inputOverColor[3] <= 0.0f) {
37
copy_v4_v4
(
output
, inputColor1);
38
}
39
else
if
(value[0] == 1.0f && inputOverColor[3] >= 1.0f) {
40
copy_v4_v4
(
output
, inputOverColor);
41
}
42
else
{
43
float
premul = value[0] * inputOverColor[3];
44
float
mul
= 1.0f - premul;
45
46
output
[0] = (
mul
* inputColor1[0]) + premul * inputOverColor[0];
47
output
[1] = (
mul
* inputColor1[1]) + premul * inputOverColor[1];
48
output
[2] = (
mul
* inputColor1[2]) + premul * inputOverColor[2];
49
output
[3] = (
mul
* inputColor1[3]) + value[0] * inputOverColor[3];
50
}
51
}
52
53
}
// namespace blender::compositor
x
x
Definition:
BLI_expr_pylike_eval_test.cc:342
copy_v4_v4
MINLINE void copy_v4_v4(float r[4], const float a[4])
Definition:
math_vector_inline.c:74
COM_AlphaOverKeyOperation.h
y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Definition:
GPU_legacy_stubs.h:206
output
#define output
mul
static void mul(btAlignedObjectArray< T > &items, const Q &value)
Definition:
btSoftBodyHelpers.cpp:120
blender::compositor::AlphaOverKeyOperation::executePixelSampled
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override
Definition:
COM_AlphaOverKeyOperation.cc:23
blender::compositor::MixBaseOperation::m_inputColor1Operation
SocketReader * m_inputColor1Operation
Definition:
COM_MixOperation.h:36
blender::compositor::MixBaseOperation::m_inputValueOperation
SocketReader * m_inputValueOperation
Definition:
COM_MixOperation.h:35
blender::compositor::MixBaseOperation::m_inputColor2Operation
SocketReader * m_inputColor2Operation
Definition:
COM_MixOperation.h:37
blender::compositor::NodeOperation::readSampled
void readSampled(float result[4], float x, float y, PixelSampler sampler)
Definition:
COM_NodeOperation.h:502
blender::compositor
Definition:
COM_defines.h:21
blender::compositor::PixelSampler
PixelSampler
Definition:
COM_NodeOperation.h:77
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1