[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