diff options
author | Manuel Castilla <manzanillawork@gmail.com> | 2021-07-13 22:48:42 +0300 |
---|---|---|
committer | Manuel Castilla <manzanillawork@gmail.com> | 2021-07-13 23:34:28 +0300 |
commit | 96a4b54cfb5c183d9e05c6fe8d96e290f1a98bf6 (patch) | |
tree | 7c303bbb6e0ad5ade6b603a19d2eb289da10dc4d /source/blender/compositor/operations/COM_RenderLayersProg.h | |
parent | 538f452ea97f93daa158a479dfed2b7c3973ec06 (diff) |
Compositor: Full frame Render Layers node
Adds full frame implementation to this node operations.
No functional changes.
2.5x faster than tiled fallback on average.
Reviewed By: jbakker
Differential Revision: https://developer.blender.org/D11690
Diffstat (limited to 'source/blender/compositor/operations/COM_RenderLayersProg.h')
-rw-r--r-- | source/blender/compositor/operations/COM_RenderLayersProg.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/source/blender/compositor/operations/COM_RenderLayersProg.h b/source/blender/compositor/operations/COM_RenderLayersProg.h index 56f83f691e8..dd76a56d645 100644 --- a/source/blender/compositor/operations/COM_RenderLayersProg.h +++ b/source/blender/compositor/operations/COM_RenderLayersProg.h @@ -20,7 +20,7 @@ #include "BLI_listbase.h" #include "BLI_utildefines.h" -#include "COM_NodeOperation.h" +#include "COM_MultiThreadedOperation.h" #include "DNA_scene_types.h" #include "MEM_guardedalloc.h" @@ -33,7 +33,7 @@ namespace blender::compositor { * * \todo Rename to operation. */ -class RenderLayersProg : public NodeOperation { +class RenderLayersProg : public MultiThreadedOperation { protected: /** * Reference to the scene object. @@ -50,8 +50,11 @@ class RenderLayersProg : public NodeOperation { */ const char *m_viewName; + const MemoryBuffer *layer_buffer_; + /** - * cached instance to the float buffer inside the layer + * Cached instance to the float buffer inside the layer. + * TODO: To be removed with tiled implementation. */ float *m_inputBuffer; @@ -126,6 +129,10 @@ class RenderLayersProg : public NodeOperation { void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override; std::unique_ptr<MetaData> getMetaData() override; + + virtual void update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) override; }; class RenderLayersAOOperation : public RenderLayersProg { @@ -135,6 +142,10 @@ class RenderLayersAOOperation : public RenderLayersProg { { } void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override; + + void update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) override; }; class RenderLayersAlphaProg : public RenderLayersProg { @@ -144,6 +155,10 @@ class RenderLayersAlphaProg : public RenderLayersProg { { } void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override; + + void update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) override; }; class RenderLayersDepthProg : public RenderLayersProg { @@ -153,6 +168,10 @@ class RenderLayersDepthProg : public RenderLayersProg { { } void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override; + + void update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) override; }; } // namespace blender::compositor |