[Bf-blender-cvs] [e9066508071] compositor-full-frame: Compositor: Full frame Split Viewer node
Manuel Castilla
noreply at git.blender.org
Fri Jul 23 19:23:12 CEST 2021
Commit: e9066508071042b1b277863d0103f8729c5b5bb6
Author: Manuel Castilla
Date: Fri Jul 23 17:16:43 2021 +0200
Branches: compositor-full-frame
https://developer.blender.org/rBe9066508071042b1b277863d0103f8729c5b5bb6
Compositor: Full frame Split Viewer node
Adds full frame implementation to this node operation.
No functional changes.
===================================================================
M source/blender/compositor/operations/COM_SplitOperation.cc
M source/blender/compositor/operations/COM_SplitOperation.h
===================================================================
diff --git a/source/blender/compositor/operations/COM_SplitOperation.cc b/source/blender/compositor/operations/COM_SplitOperation.cc
index a4754de370d..221d3ae8d83 100644
--- a/source/blender/compositor/operations/COM_SplitOperation.cc
+++ b/source/blender/compositor/operations/COM_SplitOperation.cc
@@ -79,4 +79,18 @@ void SplitOperation::determineResolution(unsigned int resolution[2],
NodeOperation::determineResolution(resolution, preferredResolution);
}
+void SplitOperation::update_memory_buffer_partial(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> inputs)
+{
+ const int percent = this->m_xSplit ? this->m_splitPercentage * this->getWidth() / 100.0f :
+ this->m_splitPercentage * this->getHeight() / 100.0f;
+ const size_t elem_bytes = COM_data_type_num_channels(getOutputSocket()->getDataType()) *
+ sizeof(float);
+ for (BuffersIterator<float> it = output->iterate_with(inputs, area); !it.is_end(); ++it) {
+ const bool is_image1 = this->m_xSplit ? it.x > percent : it.y > percent;
+ memcpy(it.out, it.in(is_image1 ? 0 : 1), elem_bytes);
+ }
+}
+
} // namespace blender::compositor
diff --git a/source/blender/compositor/operations/COM_SplitOperation.h b/source/blender/compositor/operations/COM_SplitOperation.h
index 09e48821dd0..2d09d2a07dc 100644
--- a/source/blender/compositor/operations/COM_SplitOperation.h
+++ b/source/blender/compositor/operations/COM_SplitOperation.h
@@ -18,11 +18,11 @@
#pragma once
-#include "COM_NodeOperation.h"
+#include "COM_MultiThreadedOperation.h"
namespace blender::compositor {
-class SplitOperation : public NodeOperation {
+class SplitOperation : public MultiThreadedOperation {
private:
SocketReader *m_image1Input;
SocketReader *m_image2Input;
@@ -45,6 +45,10 @@ class SplitOperation : public NodeOperation {
{
this->m_xSplit = xsplit;
}
+
+ void update_memory_buffer_partial(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> inputs) override;
};
} // namespace blender::compositor
More information about the Bf-blender-cvs
mailing list