[Bf-blender-cvs] [f690cd36b54] compositor-full-frame: Compositor: Full frame Hue Saturation Value node

Manuel Castilla noreply at git.blender.org
Thu Jul 29 22:36:40 CEST 2021


Commit: f690cd36b549d2bc3aea29a08656980da09601d2
Author: Manuel Castilla
Date:   Thu Jul 29 13:48:12 2021 +0200
Branches: compositor-full-frame
https://developer.blender.org/rBf690cd36b549d2bc3aea29a08656980da09601d2

Compositor: Full frame Hue Saturation Value node

Adds full frame implementation to this node operation.
No functional changes.

===================================================================

M	source/blender/compositor/operations/COM_ChangeHSVOperation.cc
M	source/blender/compositor/operations/COM_ChangeHSVOperation.h

===================================================================

diff --git a/source/blender/compositor/operations/COM_ChangeHSVOperation.cc b/source/blender/compositor/operations/COM_ChangeHSVOperation.cc
index eee007ce9e6..81a8b7d13fe 100644
--- a/source/blender/compositor/operations/COM_ChangeHSVOperation.cc
+++ b/source/blender/compositor/operations/COM_ChangeHSVOperation.cc
@@ -71,4 +71,26 @@ void ChangeHSVOperation::executePixelSampled(float output[4],
   output[3] = inputColor1[3];
 }
 
+void ChangeHSVOperation::update_memory_buffer_partial(MemoryBuffer *output,
+                                                      const rcti &area,
+                                                      Span<MemoryBuffer *> inputs)
+{
+  for (BuffersIterator<float> it = output->iterate_with(inputs, area); !it.is_end(); ++it) {
+    const float *color = it.in(0);
+    const float hue = *it.in(1);
+    it.out[0] = color[0] + (hue - 0.5f);
+    if (it.out[0] > 1.0f) {
+      it.out[0] -= 1.0f;
+    }
+    else if (it.out[0] < 0.0f) {
+      it.out[0] += 1.0f;
+    }
+    const float saturation = *it.in(2);
+    const float value = *it.in(3);
+    it.out[1] = color[1] * saturation;
+    it.out[2] = color[2] * value;
+    it.out[3] = color[3];
+  }
+}
+
 }  // namespace blender::compositor
diff --git a/source/blender/compositor/operations/COM_ChangeHSVOperation.h b/source/blender/compositor/operations/COM_ChangeHSVOperation.h
index d38b4be3efe..e7bc3274f25 100644
--- a/source/blender/compositor/operations/COM_ChangeHSVOperation.h
+++ b/source/blender/compositor/operations/COM_ChangeHSVOperation.h
@@ -18,7 +18,7 @@
 
 #pragma once
 
-#include "COM_MixOperation.h"
+#include "COM_MultiThreadedOperation.h"
 
 namespace blender::compositor {
 
@@ -26,7 +26,7 @@ namespace blender::compositor {
  * this program converts an input color to an output value.
  * it assumes we are in sRGB color space.
  */
-class ChangeHSVOperation : public NodeOperation {
+class ChangeHSVOperation : public MultiThreadedOperation {
  private:
   SocketReader *m_inputOperation;
   SocketReader *m_hueOperation;
@@ -46,6 +46,10 @@ class ChangeHSVOperation : public NodeOperation {
    * The inner loop of this operation.
    */
   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



More information about the Bf-blender-cvs mailing list