[Bf-blender-cvs] [e7d06c0bf22] temp-viewport-compositor-compiler: Viewport Compositor: Implement Rotate node

Omar Emara noreply at git.blender.org
Thu Apr 7 10:31:13 CEST 2022


Commit: e7d06c0bf2215b890e345e194a28c62c6ac6e42a
Author: Omar Emara
Date:   Fri Apr 1 19:03:19 2022 +0200
Branches: temp-viewport-compositor-compiler
https://developer.blender.org/rBe7d06c0bf2215b890e345e194a28c62c6ac6e42a

Viewport Compositor: Implement Rotate node

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

M	source/blender/nodes/composite/nodes/node_composite_rotate.cc
M	source/blender/nodes/composite/nodes/node_composite_transform.cc

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

diff --git a/source/blender/nodes/composite/nodes/node_composite_rotate.cc b/source/blender/nodes/composite/nodes/node_composite_rotate.cc
index 96ac4f3db5b..efa74b7fe72 100644
--- a/source/blender/nodes/composite/nodes/node_composite_rotate.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_rotate.cc
@@ -21,9 +21,14 @@
  * \ingroup cmpnodes
  */
 
+#include "BLI_assert.h"
+#include "BLI_transformation_2d.hh"
+
 #include "UI_interface.h"
 #include "UI_resources.h"
 
+#include "NOD_compositor_execute.hh"
+
 #include "node_composite_util.hh"
 
 /* **************** Rotate  ******************** */
@@ -32,12 +37,15 @@ namespace blender::nodes::node_composite_rotate_cc {
 
 static void cmp_node_rotate_declare(NodeDeclarationBuilder &b)
 {
-  b.add_input<decl::Color>(N_("Image")).default_value({1.0f, 1.0f, 1.0f, 1.0f});
+  b.add_input<decl::Color>(N_("Image"))
+      .default_value({1.0f, 1.0f, 1.0f, 1.0f})
+      .compositor_domain_priority(0);
   b.add_input<decl::Float>(N_("Degr"))
       .default_value(0.0f)
       .min(-10000.0f)
       .max(10000.0f)
-      .subtype(PROP_ANGLE);
+      .subtype(PROP_ANGLE)
+      .compositor_expects_single_value();
   b.add_output<decl::Color>(N_("Image"));
 }
 
@@ -51,6 +59,47 @@ static void node_composit_buts_rotate(uiLayout *layout, bContext *UNUSED(C), Poi
   uiItemR(layout, ptr, "filter_type", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE);
 }
 
+using namespace blender::viewport_compositor;
+
+class RotateOperation : public NodeOperation {
+ public:
+  using NodeOperation::NodeOperation;
+
+  void execute() override
+  {
+    Result &input = get_input("Image");
+    Result &result = get_result("Image");
+    input.pass_through(result);
+
+    const float rotation = get_input("Degr").get_float_value_default(0.0f);
+
+    const Transformation2D transformation = Transformation2D::from_rotation(rotation);
+
+    result.transform(transformation);
+    result.set_realization_interpolation(get_interpolation());
+  }
+
+  Interpolation get_interpolation()
+  {
+    switch (node().custom1) {
+      case 0:
+        return Interpolation::Nearest;
+      case 1:
+        return Interpolation::Bilinear;
+      case 2:
+        return Interpolation::Bicubic;
+    }
+
+    BLI_assert_unreachable();
+    return Interpolation::Nearest;
+  }
+};
+
+static NodeOperation *get_compositor_operation(Context &context, DNode node)
+{
+  return new RotateOperation(context, node);
+}
+
 }  // namespace blender::nodes::node_composite_rotate_cc
 
 void register_node_type_cmp_rotate()
@@ -63,6 +112,7 @@ void register_node_type_cmp_rotate()
   ntype.declare = file_ns::cmp_node_rotate_declare;
   ntype.draw_buttons = file_ns::node_composit_buts_rotate;
   node_type_init(&ntype, file_ns::node_composit_init_rotate);
+  ntype.get_compositor_operation = file_ns::get_compositor_operation;
 
   nodeRegisterType(&ntype);
 }
diff --git a/source/blender/nodes/composite/nodes/node_composite_transform.cc b/source/blender/nodes/composite/nodes/node_composite_transform.cc
index 0d314a4d20e..001ad932fbc 100644
--- a/source/blender/nodes/composite/nodes/node_composite_transform.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_transform.cc
@@ -23,6 +23,7 @@
 
 #include "BLI_assert.h"
 #include "BLI_math_vector.h"
+#include "BLI_transformation_2d.hh"
 
 #include "UI_interface.h"
 #include "UI_resources.h"
@@ -37,7 +38,9 @@ namespace blender::nodes::node_composite_transform_cc {
 
 static void cmp_node_transform_declare(NodeDeclarationBuilder &b)
 {
-  b.add_input<decl::Color>(N_("Image")).default_value({0.8f, 0.8f, 0.8f, 1.0f});
+  b.add_input<decl::Color>(N_("Image"))
+      .default_value({0.8f, 0.8f, 0.8f, 1.0f})
+      .compositor_domain_priority(0);
   b.add_input<decl::Float>(N_("X"))
       .default_value(0.0f)
       .min(-10000.0f)



More information about the Bf-blender-cvs mailing list