Files
test/source/blender/compositor/operations/COM_MixOperation.h
Aras Pranckevicius f5f7024040 Cleanup: Remove now-unused "tiled" compositor implementation
New ("fullframe") CPU compositor backend is being used now, and all the code
related to "tiled" CPU compositor is just never used anymore. The new backend
is faster, uses less memory, better matches GPU compositor, etc.

TL;DR: 20 thousand lines of code gone.

This commit:
- Removes various bits and pieces related to "tiled" compositor (execution
  groups, one-pixel-at-a-time node processing, read/write buffer operations
  related to node execution groups).
- "GPU" (OpenCL) execution device, that was only used by several nodes of
  the tiled compositor.
  - With that, remove CLEW external library too, since nothing within Blender
    uses OpenCL directly anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/118819
2024-02-28 16:59:16 +01:00

175 lines
4.1 KiB
C++

/* SPDX-FileCopyrightText: 2011 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "COM_MultiThreadedOperation.h"
namespace blender::compositor {
/**
* All this programs converts an input color to an output value.
* it assumes we are in sRGB color space.
*/
class MixBaseOperation : public MultiThreadedOperation {
protected:
struct PixelCursor {
float *out;
const float *row_end;
const float *value;
const float *color1;
const float *color2;
int out_stride;
int value_stride;
int color1_stride;
int color2_stride;
void next()
{
BLI_assert(out < row_end);
out += out_stride;
value += value_stride;
color1 += color1_stride;
color2 += color2_stride;
}
};
bool value_alpha_multiply_;
bool use_clamp_;
inline void clamp_if_needed(float color[4])
{
if (use_clamp_) {
clamp_v4(color, 0.0f, 1.0f);
}
}
public:
MixBaseOperation();
void determine_canvas(const rcti &preferred_area, rcti &r_area) override;
void set_use_value_alpha_multiply(const bool value)
{
value_alpha_multiply_ = value;
}
inline bool use_value_alpha_multiply()
{
return value_alpha_multiply_;
}
void set_use_clamp(bool value)
{
use_clamp_ = value;
}
void update_memory_buffer_partial(MemoryBuffer *output,
const rcti &area,
Span<MemoryBuffer *> inputs) final;
protected:
virtual void update_memory_buffer_row(PixelCursor &p);
};
class MixAddOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixBlendOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixColorBurnOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixColorOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixDarkenOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixDifferenceOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixExclusionOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixDivideOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixDodgeOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixGlareOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixHueOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixLightenOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixLinearLightOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixMultiplyOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixOverlayOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixSaturationOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixScreenOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixSoftLightOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixSubtractOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
class MixValueOperation : public MixBaseOperation {
protected:
void update_memory_buffer_row(PixelCursor &p) override;
};
} // namespace blender::compositor