[Bf-blender-cvs] [e6c0e6c2a93] master: Compositor: Use BLI_color in convert alpha node.

Jeroen Bakker noreply at git.blender.org
Wed May 26 11:00:44 CEST 2021


Commit: e6c0e6c2a93f4fb73988fa0559ba9d88017c36a9
Author: Jeroen Bakker
Date:   Wed May 26 09:28:01 2021 +0200
Branches: master
https://developer.blender.org/rBe6c0e6c2a93f4fb73988fa0559ba9d88017c36a9

Compositor: Use BLI_color in convert alpha node.

Recently the CPP colors module landed in master. This patch will use the
new module in the convert alpha node.

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

M	source/blender/compositor/operations/COM_ConvertOperation.cc

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

diff --git a/source/blender/compositor/operations/COM_ConvertOperation.cc b/source/blender/compositor/operations/COM_ConvertOperation.cc
index 2ea15185c0f..384936533c7 100644
--- a/source/blender/compositor/operations/COM_ConvertOperation.cc
+++ b/source/blender/compositor/operations/COM_ConvertOperation.cc
@@ -18,6 +18,8 @@
 
 #include "COM_ConvertOperation.h"
 
+#include "BLI_color.hh"
+
 #include "IMB_colormanagement.h"
 
 namespace blender::compositor {
@@ -355,21 +357,10 @@ void ConvertPremulToStraightOperation::executePixelSampled(float output[4],
                                                            float y,
                                                            PixelSampler sampler)
 {
-  float inputValue[4];
-  float alpha;
-
-  this->m_inputOperation->readSampled(inputValue, x, y, sampler);
-  alpha = inputValue[3];
-
-  if (fabsf(alpha) < 1e-5f) {
-    zero_v3(output);
-  }
-  else {
-    mul_v3_v3fl(output, inputValue, 1.0f / alpha);
-  }
-
-  /* never touches the alpha */
-  output[3] = alpha;
+  ColorSceneLinear4f<eAlpha::Premultiplied> input;
+  this->m_inputOperation->readSampled(input, x, y, sampler);
+  ColorSceneLinear4f<eAlpha::Straight> converted = input.unpremultiply_alpha();
+  copy_v4_v4(output, converted);
 }
 
 /* ******** Straight to Premul ******** */
@@ -385,16 +376,10 @@ void ConvertStraightToPremulOperation::executePixelSampled(float output[4],
                                                            float y,
                                                            PixelSampler sampler)
 {
-  float inputValue[4];
-  float alpha;
-
-  this->m_inputOperation->readSampled(inputValue, x, y, sampler);
-  alpha = inputValue[3];
-
-  mul_v3_v3fl(output, inputValue, alpha);
-
-  /* never touches the alpha */
-  output[3] = alpha;
+  ColorSceneLinear4f<eAlpha::Straight> input;
+  this->m_inputOperation->readSampled(input, x, y, sampler);
+  ColorSceneLinear4f<eAlpha::Premultiplied> converted = input.premultiply_alpha();
+  copy_v4_v4(output, converted);
 }
 
 /* ******** Separate Channels ******** */



More information about the Bf-blender-cvs mailing list