diff options
author | Manuel Castilla <manzanillawork@gmail.com> | 2021-07-19 19:17:41 +0300 |
---|---|---|
committer | Manuel Castilla <manzanillawork@gmail.com> | 2021-07-19 22:26:58 +0300 |
commit | 0a0c2c0217d492308f7b0ba4659ef3961fa792bb (patch) | |
tree | d7e1eca970ee99e2d401c399753b957d9cf5b5ea /source/blender/compositor/operations/COM_EllipseMaskOperation.h | |
parent | 45b46e5de9fbfb4985d81ac43cf61a6dcb339ff7 (diff) |
Compositor: Full frame Ellipse Mask node
Adds full frame implementation to this node operation.
No functional changes.
3x times faster than tiled fallback.
Reviewed By: jbakker
Differential Revision: https://developer.blender.org/D11635
Diffstat (limited to 'source/blender/compositor/operations/COM_EllipseMaskOperation.h')
-rw-r--r-- | source/blender/compositor/operations/COM_EllipseMaskOperation.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source/blender/compositor/operations/COM_EllipseMaskOperation.h b/source/blender/compositor/operations/COM_EllipseMaskOperation.h index 64afe0145cf..fba3f979d26 100644 --- a/source/blender/compositor/operations/COM_EllipseMaskOperation.h +++ b/source/blender/compositor/operations/COM_EllipseMaskOperation.h @@ -18,12 +18,14 @@ #pragma once -#include "COM_NodeOperation.h" +#include "COM_MultiThreadedOperation.h" namespace blender::compositor { -class EllipseMaskOperation : public NodeOperation { +class EllipseMaskOperation : public MultiThreadedOperation { private: + using MaskFunc = std::function<float(bool is_inside, const float *mask, const float *value)>; + /** * Cached reference to the inputProgram */ @@ -64,6 +66,16 @@ class EllipseMaskOperation : public NodeOperation { { this->m_maskType = maskType; } + + void update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) override; + + private: + void apply_mask(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs, + MaskFunc mask_func); }; } // namespace blender::compositor |