From a2ea32a600def98a1ee2d8d2eb63126e4d51fe53 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Sat, 7 Jan 2023 18:00:37 +0100 Subject: [PATCH] Cleanup: inline signatures into multi-function constructors This reduces the amount of code. Also the signature should be thought of as being setup in the constructor, so it's good if the code is there as well. --- .../functions/tests/FN_multi_function_test.cc | 19 ++-- .../tests/FN_multi_function_test_common.hh | 102 ++++++++---------- .../nodes/node_fn_align_euler_to_vector.cc | 22 ++-- .../nodes/node_fn_input_special_characters.cc | 17 ++- .../function/nodes/node_fn_separate_color.cc | 69 ++++++------ .../geometry/nodes/node_geo_curve_sample.cc | 35 +++--- .../geometry/nodes/node_geo_image_texture.cc | 19 ++-- .../geometry/nodes/node_geo_proximity.cc | 19 ++-- .../nodes/geometry/nodes/node_geo_raycast.cc | 10 +- .../geometry/nodes/node_geo_sample_index.cc | 13 +-- .../geometry/nodes/node_geo_sample_nearest.cc | 11 +- .../nodes/node_geo_sample_nearest_surface.cc | 10 +- .../nodes/node_geo_sample_uv_surface.cc | 32 +++--- .../shader/nodes/node_shader_color_ramp.cc | 19 ++-- .../nodes/shader/nodes/node_shader_curves.cc | 57 +++++----- .../nodes/shader/nodes/node_shader_mix.cc | 21 ++-- .../nodes/shader/nodes/node_shader_mix_rgb.cc | 21 ++-- .../shader/nodes/node_shader_sepcomb_rgb.cc | 21 ++-- .../shader/nodes/node_shader_sepcomb_xyz.cc | 21 ++-- .../shader/nodes/node_shader_tex_brick.cc | 37 +++---- .../shader/nodes/node_shader_tex_checker.cc | 25 ++--- .../shader/nodes/node_shader_tex_gradient.cc | 19 ++-- .../shader/nodes/node_shader_tex_magic.cc | 23 ++-- .../shader/nodes/node_shader_tex_wave.cc | 31 +++--- 24 files changed, 274 insertions(+), 399 deletions(-) diff --git a/source/blender/functions/tests/FN_multi_function_test.cc b/source/blender/functions/tests/FN_multi_function_test.cc index f0db195960c..9be5e224f09 100644 --- a/source/blender/functions/tests/FN_multi_function_test.cc +++ b/source/blender/functions/tests/FN_multi_function_test.cc @@ -13,20 +13,17 @@ class AddFunction : public MultiFunction { public: AddFunction() { - static Signature signature = create_signature(); + static Signature signature = []() { + Signature signature; + SignatureBuilder builder("Add", signature); + builder.single_input("A"); + builder.single_input("B"); + builder.single_output("Result"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder("Add", signature); - builder.single_input("A"); - builder.single_input("B"); - builder.single_output("Result"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { const VArray &a = params.readonly_single_input(0, "A"); diff --git a/source/blender/functions/tests/FN_multi_function_test_common.hh b/source/blender/functions/tests/FN_multi_function_test_common.hh index 2014e4fc74e..adf70498fa6 100644 --- a/source/blender/functions/tests/FN_multi_function_test_common.hh +++ b/source/blender/functions/tests/FN_multi_function_test_common.hh @@ -8,19 +8,16 @@ class AddPrefixFunction : public MultiFunction { public: AddPrefixFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Add Prefix", signature}; + builder.single_input("Prefix"); + builder.single_mutable("Strings"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Add Prefix", signature}; - builder.single_input("Prefix"); - builder.single_mutable("Strings"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { const VArray &prefixes = params.readonly_single_input(0, "Prefix"); @@ -36,19 +33,16 @@ class CreateRangeFunction : public MultiFunction { public: CreateRangeFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Create Range", signature}; + builder.single_input("Size"); + builder.vector_output("Range"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Create Range", signature}; - builder.single_input("Size"); - builder.vector_output("Range"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { const VArray &sizes = params.readonly_single_input(0, "Size"); @@ -94,19 +88,16 @@ class ConcatVectorsFunction : public MultiFunction { public: ConcatVectorsFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Concat Vectors", signature}; + builder.vector_mutable("A"); + builder.vector_input("B"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Concat Vectors", signature}; - builder.vector_mutable("A"); - builder.vector_input("B"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { GVectorArray &a = params.vector_mutable(0); @@ -119,19 +110,16 @@ class AppendFunction : public MultiFunction { public: AppendFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Append", signature}; + builder.vector_mutable("Vector"); + builder.single_input("Value"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Append", signature}; - builder.vector_mutable("Vector"); - builder.single_input("Value"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { GVectorArray_TypedMutableRef vectors = params.vector_mutable(0); @@ -147,19 +135,16 @@ class SumVectorFunction : public MultiFunction { public: SumVectorFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Sum Vectors", signature}; + builder.vector_input("Vector"); + builder.single_output("Sum"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Sum Vectors", signature}; - builder.vector_input("Vector"); - builder.single_output("Sum"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { const VVectorArray &vectors = params.readonly_vector_input(0); @@ -179,19 +164,16 @@ class OptionalOutputsFunction : public MultiFunction { public: OptionalOutputsFunction() { - static Signature signature = create_signature(); + static const Signature signature = []() { + Signature signature; + SignatureBuilder builder{"Optional Outputs", signature}; + builder.single_output("Out 1"); + builder.single_output("Out 2"); + return signature; + }(); this->set_signature(&signature); } - static Signature create_signature() - { - Signature signature; - SignatureBuilder builder{"Optional Outputs", signature}; - builder.single_output("Out 1"); - builder.single_output("Out 2"); - return signature; - } - void call(IndexMask mask, MFParams params, Context /*context*/) const override { if (params.single_output_is_required(0, "Out 1")) { diff --git a/source/blender/nodes/function/nodes/node_fn_align_euler_to_vector.cc b/source/blender/nodes/function/nodes/node_fn_align_euler_to_vector.cc index 21e60f127ce..efea88088cf 100644 --- a/source/blender/nodes/function/nodes/node_fn_align_euler_to_vector.cc +++ b/source/blender/nodes/function/nodes/node_fn_align_euler_to_vector.cc @@ -142,22 +142,18 @@ class MF_AlignEulerToVector : public mf::MultiFunction { MF_AlignEulerToVector(int main_axis_mode, int pivot_axis_mode) : main_axis_mode_(main_axis_mode), pivot_axis_mode_(pivot_axis_mode) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Align Euler to Vector", signature}; + builder.single_input("Rotation"); + builder.single_input("Factor"); + builder.single_input("Vector"); + builder.single_output("Rotation"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Align Euler to Vector", signature}; - builder.single_input("Rotation"); - builder.single_input("Factor"); - builder.single_input("Vector"); - - builder.single_output("Rotation"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &input_rotations = params.readonly_single_input(0, "Rotation"); diff --git a/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc b/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc index 7ccd6f3d87f..1392a923136 100644 --- a/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc +++ b/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc @@ -14,19 +14,16 @@ class MF_SpecialCharacters : public mf::MultiFunction { public: MF_SpecialCharacters() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Special Characters", signature}; + builder.single_output("Line Break"); + builder.single_output("Tab"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Special Characters", signature}; - builder.single_output("Line Break"); - builder.single_output("Tab"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { MutableSpan lb = params.uninitialized_single_output(0, "Line Break"); diff --git a/source/blender/nodes/function/nodes/node_fn_separate_color.cc b/source/blender/nodes/function/nodes/node_fn_separate_color.cc index c717a9de080..fae7c275f5d 100644 --- a/source/blender/nodes/function/nodes/node_fn_separate_color.cc +++ b/source/blender/nodes/function/nodes/node_fn_separate_color.cc @@ -41,22 +41,19 @@ class SeparateRGBAFunction : public mf::MultiFunction { public: SeparateRGBAFunction() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Separate Color", signature}; + builder.single_input("Color"); + builder.single_output("Red"); + builder.single_output("Green"); + builder.single_output("Blue"); + builder.single_output("Alpha"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Separate Color", signature}; - builder.single_input("Color"); - builder.single_output("Red"); - builder.single_output("Green"); - builder.single_output("Blue"); - builder.single_output("Alpha"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &colors = params.readonly_single_input(0, @@ -103,22 +100,19 @@ class SeparateHSVAFunction : public mf::MultiFunction { public: SeparateHSVAFunction() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Separate Color", signature}; + builder.single_input("Color"); + builder.single_output("Hue"); + builder.single_output("Saturation"); + builder.single_output("Value"); + builder.single_output("Alpha"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Separate Color", signature}; - builder.single_input("Color"); - builder.single_output("Hue"); - builder.single_output("Saturation"); - builder.single_output("Value"); - builder.single_output("Alpha"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &colors = params.readonly_single_input(0, @@ -144,22 +138,19 @@ class SeparateHSLAFunction : public mf::MultiFunction { public: SeparateHSLAFunction() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Separate Color", signature}; + builder.single_input("Color"); + builder.single_output("Hue"); + builder.single_output("Saturation"); + builder.single_output("Lightness"); + builder.single_output("Alpha"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Separate Color", signature}; - builder.single_input("Color"); - builder.single_output("Hue"); - builder.single_output("Saturation"); - builder.single_output("Lightness"); - builder.single_output("Alpha"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &colors = params.readonly_single_input(0, diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc index 46c9f8c8805..2ca30b0fef5 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc @@ -211,21 +211,18 @@ class SampleFloatSegmentsFunction : public mf::MultiFunction { const GeometryNodeCurveSampleMode length_mode) : accumulated_lengths_(std::move(accumulated_lengths)), length_mode_(length_mode) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Sample Curve Index", signature}; + builder.single_input("Length"); + + builder.single_output("Curve Index"); + builder.single_output("Length in Curve"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Curve Index", signature}; - builder.single_input("Length"); - - builder.single_output("Curve Index"); - builder.single_output("Length in Curve"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArraySpan lengths = params.readonly_single_input(0, "Length"); @@ -261,22 +258,16 @@ class SampleCurveFunction : public mf::MultiFunction { const GField &src_field) : geometry_set_(std::move(geometry_set)), src_field_(src_field), length_mode_(length_mode) { - signature_ = create_signature(); - this->set_signature(&signature_); - this->evaluate_source(); - } - - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Curve", signature}; + mf::SignatureBuilder builder{"Sample Curve", signature_}; builder.single_input("Curve Index"); builder.single_input("Length"); builder.single_output("Position"); builder.single_output("Tangent"); builder.single_output("Normal"); builder.single_output("Value", src_field_.cpp_type()); - return signature; + this->set_signature(&signature_); + + this->evaluate_source(); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override diff --git a/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc b/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc index 102ab492e6b..bca477646c3 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc @@ -64,7 +64,14 @@ class ImageFieldsFunction : public mf::MultiFunction { image_(image), image_user_(image_user) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"ImageFunction", signature}; + builder.single_input("Vector"); + builder.single_output("Color"); + builder.single_output("Alpha"); + return signature; + }(); this->set_signature(&signature); image_buffer_ = BKE_image_acquire_ibuf(&image_, &image_user_, &image_lock_); @@ -91,16 +98,6 @@ class ImageFieldsFunction : public mf::MultiFunction { BKE_image_release_ibuf(&image_, image_buffer_, image_lock_); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"ImageFunction", signature}; - builder.single_input("Vector"); - builder.single_output("Color"); - builder.single_output("Alpha"); - return signature; - } - static int wrap_periodic(int x, const int width) { x %= width; diff --git a/source/blender/nodes/geometry/nodes/node_geo_proximity.cc b/source/blender/nodes/geometry/nodes/node_geo_proximity.cc index b8d7586391e..2b7d05c7dff 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_proximity.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_proximity.cc @@ -138,20 +138,17 @@ class ProximityFunction : public mf::MultiFunction { ProximityFunction(GeometrySet target, GeometryNodeProximityTargetType type) : target_(std::move(target)), type_(type) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Geometry Proximity", signature}; + builder.single_input("Source Position"); + builder.single_output("Position"); + builder.single_output("Distance"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Geometry Proximity", signature}; - builder.single_input("Source Position"); - builder.single_output("Position"); - builder.single_output("Distance"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &src_positions = params.readonly_single_input(0, diff --git a/source/blender/nodes/geometry/nodes/node_geo_raycast.cc b/source/blender/nodes/geometry/nodes/node_geo_raycast.cc index a3277b8e3b9..ab4b48ece42 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_raycast.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_raycast.cc @@ -225,14 +225,8 @@ class RaycastFunction : public mf::MultiFunction { { target_.ensure_owns_direct_data(); this->evaluate_target_field(std::move(src_field)); - signature_ = create_signature(); - this->set_signature(&signature_); - } - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Geometry Proximity", signature}; + mf::SignatureBuilder builder{"Geometry Proximity", signature_}; builder.single_input("Source Position"); builder.single_input("Ray Direction"); builder.single_input("Ray Length"); @@ -243,7 +237,7 @@ class RaycastFunction : public mf::MultiFunction { if (target_data_) { builder.single_output("Attribute", target_data_->type()); } - return signature; + this->set_signature(&signature_); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc index 8c5da6dd387..e461d3a8503 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc @@ -200,21 +200,14 @@ class SampleIndexFunction : public mf::MultiFunction { { src_geometry_.ensure_owns_direct_data(); - signature_ = this->create_signature(); + mf::SignatureBuilder builder{"Sample Index", signature_}; + builder.single_input("Index"); + builder.single_output("Value", src_field_.cpp_type()); this->set_signature(&signature_); this->evaluate_field(); } - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Index", signature}; - builder.single_input("Index"); - builder.single_output("Value", src_field_.cpp_type()); - return signature; - } - void evaluate_field() { const GeometryComponent *component = find_source_component(src_geometry_, domain_); diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc index 87785a7ed44..1d649545b2c 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc @@ -245,19 +245,12 @@ class SampleNearestFunction : public mf::MultiFunction { : source_(std::move(geometry)), domain_(domain) { source_.ensure_owns_direct_data(); - signature_ = this->create_signature(); - this->set_signature(&signature_); - this->src_component_ = find_source_component(source_, domain_); - } - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Nearest", signature}; + mf::SignatureBuilder builder{"Sample Nearest", signature_}; builder.single_input("Position"); builder.single_output("Index"); - return signature; + this->set_signature(&signature_); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc index f07623ee649..709bd152c33 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc @@ -139,18 +139,12 @@ class SampleNearestSurfaceFunction : public mf::MultiFunction { : source_(std::move(geometry)), src_field_(std::move(src_field)) { source_.ensure_owns_direct_data(); - signature_ = this->create_signature(); - this->set_signature(&signature_); this->evaluate_source_field(); - } - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Nearest Surface", signature}; + mf::SignatureBuilder builder{"Sample Nearest Surface", signature_}; builder.single_input("Position"); builder.single_output("Value", src_field_.cpp_type()); - return signature; + this->set_signature(&signature_); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc index 42e602826a1..615f2a5ed8d 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc @@ -129,19 +129,13 @@ class SampleMeshBarycentricFunction : public mf::MultiFunction { : source_(std::move(geometry)), src_field_(std::move(src_field)) { source_.ensure_owns_direct_data(); - this->set_signature(&signature_); - signature_ = this->create_signature(); this->evaluate_source(); - } - mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample Barycentric Triangles", signature}; + mf::SignatureBuilder builder{"Sample Barycentric Triangles", signature_}; builder.single_input("Triangle Index"); builder.single_input("Barycentric Weight"); builder.single_output("Value", src_field_.cpp_type()); - return signature; + this->set_signature(&signature_); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override @@ -200,20 +194,18 @@ class ReverseUVSampleFunction : public mf::MultiFunction { : source_(std::move(geometry)), src_uv_map_field_(std::move(src_uv_map_field)) { source_.ensure_owns_direct_data(); - static mf::Signature signature = create_signature(); - this->set_signature(&signature); this->evaluate_source(); - } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Sample UV Surface", signature}; - builder.single_input("Sample UV"); - builder.single_output("Is Valid"); - builder.single_output("Triangle Index"); - builder.single_output("Barycentric Weights"); - return signature; + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Sample UV Surface", signature}; + builder.single_input("Sample UV"); + builder.single_output("Is Valid"); + builder.single_output("Triangle Index"); + builder.single_output("Barycentric Weights"); + return signature; + }(); + this->set_signature(&signature); } void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override diff --git a/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc b/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc index 91ba40de7a6..ff414bbf344 100644 --- a/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc +++ b/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc @@ -94,20 +94,17 @@ class ColorBandFunction : public mf::MultiFunction { public: ColorBandFunction(const ColorBand &color_band) : color_band_(color_band) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Color Band", signature}; + builder.single_input("Value"); + builder.single_output("Color"); + builder.single_output("Alpha"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Color Band", signature}; - builder.single_input("Value"); - builder.single_output("Color"); - builder.single_output("Alpha"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &values = params.readonly_single_input(0, "Value"); diff --git a/source/blender/nodes/shader/nodes/node_shader_curves.cc b/source/blender/nodes/shader/nodes/node_shader_curves.cc index 63d3ab80786..9ae8a6e20f9 100644 --- a/source/blender/nodes/shader/nodes/node_shader_curves.cc +++ b/source/blender/nodes/shader/nodes/node_shader_curves.cc @@ -70,20 +70,17 @@ class CurveVecFunction : public mf::MultiFunction { public: CurveVecFunction(const CurveMapping &cumap) : cumap_(cumap) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Curve Vec", signature}; + builder.single_input("Fac"); + builder.single_input("Vector"); + builder.single_output("Vector"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Curve Vec", signature}; - builder.single_input("Fac"); - builder.single_input("Vector"); - builder.single_output("Vector"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &fac = params.readonly_single_input(0, "Fac"); @@ -216,20 +213,17 @@ class CurveRGBFunction : public mf::MultiFunction { public: CurveRGBFunction(const CurveMapping &cumap) : cumap_(cumap) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Curve RGB", signature}; + builder.single_input("Fac"); + builder.single_input("Color"); + builder.single_output("Color"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Curve RGB", signature}; - builder.single_input("Fac"); - builder.single_input("Color"); - builder.single_output("Color"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &fac = params.readonly_single_input(0, "Fac"); @@ -339,20 +333,17 @@ class CurveFloatFunction : public mf::MultiFunction { public: CurveFloatFunction(const CurveMapping &cumap) : cumap_(cumap) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Curve Float", signature}; + builder.single_input("Factor"); + builder.single_input("Value"); + builder.single_output("Value"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Curve Float", signature}; - builder.single_input("Factor"); - builder.single_input("Value"); - builder.single_output("Value"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &fac = params.readonly_single_input(0, "Factor"); diff --git a/source/blender/nodes/shader/nodes/node_shader_mix.cc b/source/blender/nodes/shader/nodes/node_shader_mix.cc index 9edbdc28dd2..f23be857421 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix.cc +++ b/source/blender/nodes/shader/nodes/node_shader_mix.cc @@ -361,21 +361,18 @@ class MixColorFunction : public mf::MultiFunction { MixColorFunction(const bool clamp_factor, const bool clamp_result, const int blend_type) : clamp_factor_(clamp_factor), clamp_result_(clamp_result), blend_type_(blend_type) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"MixColor", signature}; + builder.single_input("Factor"); + builder.single_input("A"); + builder.single_input("B"); + builder.single_output("Result"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"MixColor", signature}; - builder.single_input("Factor"); - builder.single_input("A"); - builder.single_input("B"); - builder.single_output("Result"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &fac = params.readonly_single_input(0, "Factor"); diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc b/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc index e21cbff4e12..7ae93857f61 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc +++ b/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc @@ -99,21 +99,18 @@ class MixRGBFunction : public mf::MultiFunction { public: MixRGBFunction(bool clamp, int type) : clamp_(clamp), type_(type) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"MixRGB", signature}; + builder.single_input("Fac"); + builder.single_input("Color1"); + builder.single_input("Color2"); + builder.single_output("Color"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"MixRGB", signature}; - builder.single_input("Fac"); - builder.single_input("Color1"); - builder.single_input("Color2"); - builder.single_output("Color"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &fac = params.readonly_single_input(0, "Fac"); diff --git a/source/blender/nodes/shader/nodes/node_shader_sepcomb_rgb.cc b/source/blender/nodes/shader/nodes/node_shader_sepcomb_rgb.cc index 8b2260af17a..83982aabee4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_sepcomb_rgb.cc +++ b/source/blender/nodes/shader/nodes/node_shader_sepcomb_rgb.cc @@ -31,21 +31,18 @@ class SeparateRGBFunction : public mf::MultiFunction { public: SeparateRGBFunction() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Separate RGB", signature}; + builder.single_input("Color"); + builder.single_output("R"); + builder.single_output("G"); + builder.single_output("B"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Separate RGB", signature}; - builder.single_input("Color"); - builder.single_output("R"); - builder.single_output("G"); - builder.single_output("B"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &colors = params.readonly_single_input(0, diff --git a/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc b/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc index 97776b77f63..33c4d4257b4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc +++ b/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc @@ -31,21 +31,18 @@ class MF_SeparateXYZ : public mf::MultiFunction { public: MF_SeparateXYZ() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Separate XYZ", signature}; + builder.single_input("XYZ"); + builder.single_output("X"); + builder.single_output("Y"); + builder.single_output("Z"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Separate XYZ", signature}; - builder.single_input("XYZ"); - builder.single_output("X"); - builder.single_output("Y"); - builder.single_output("Z"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &vectors = params.readonly_single_input(0, "XYZ"); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_brick.cc b/source/blender/nodes/shader/nodes/node_shader_tex_brick.cc index 789aaee5e64..62e1c14714c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_brick.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_brick.cc @@ -122,29 +122,26 @@ class BrickFunction : public mf::MultiFunction { const int squash_freq) : offset_(offset), offset_freq_(offset_freq), squash_(squash), squash_freq_(squash_freq) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"BrickTexture", signature}; + builder.single_input("Vector"); + builder.single_input("Color1"); + builder.single_input("Color2"); + builder.single_input("Mortar"); + builder.single_input("Scale"); + builder.single_input("Mortar Size"); + builder.single_input("Mortar Smooth"); + builder.single_input("Bias"); + builder.single_input("Brick Width"); + builder.single_input("Row Height"); + builder.single_output("Color"); + builder.single_output("Fac"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"BrickTexture", signature}; - builder.single_input("Vector"); - builder.single_input("Color1"); - builder.single_input("Color2"); - builder.single_input("Mortar"); - builder.single_input("Scale"); - builder.single_input("Mortar Size"); - builder.single_input("Mortar Smooth"); - builder.single_input("Bias"); - builder.single_input("Brick Width"); - builder.single_input("Row Height"); - builder.single_output("Color"); - builder.single_output("Fac"); - return signature; - } - /* Fast integer noise. */ static float brick_noise(uint n) { diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc b/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc index 3c6404f1aa6..ee1e3758e24 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc @@ -48,23 +48,20 @@ class NodeTexChecker : public mf::MultiFunction { public: NodeTexChecker() { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"Checker", signature}; + builder.single_input("Vector"); + builder.single_input("Color1"); + builder.single_input("Color2"); + builder.single_input("Scale"); + builder.single_output("Color"); + builder.single_output("Fac"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"Checker", signature}; - builder.single_input("Vector"); - builder.single_input("Color1"); - builder.single_input("Color2"); - builder.single_input("Scale"); - builder.single_output("Color"); - builder.single_output("Fac"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &vector = params.readonly_single_input(0, "Vector"); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.cc b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.cc index 8a28b2f455a..2c0e22dcbbd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.cc @@ -54,20 +54,17 @@ class GradientFunction : public mf::MultiFunction { public: GradientFunction(int gradient_type) : gradient_type_(gradient_type) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"GradientFunction", signature}; + builder.single_input("Vector"); + builder.single_output("Color"); + builder.single_output("Fac"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"GradientFunction", signature}; - builder.single_input("Vector"); - builder.single_output("Color"); - builder.single_output("Fac"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &vector = params.readonly_single_input(0, "Vector"); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_magic.cc b/source/blender/nodes/shader/nodes/node_shader_tex_magic.cc index 5cf3c67b50d..0228ed5535f 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_magic.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_magic.cc @@ -55,22 +55,19 @@ class MagicFunction : public mf::MultiFunction { public: MagicFunction(int depth) : depth_(depth) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"MagicFunction", signature}; + builder.single_input("Vector"); + builder.single_input("Scale"); + builder.single_input("Distortion"); + builder.single_output("Color"); + builder.single_output("Fac"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"MagicFunction", signature}; - builder.single_input("Vector"); - builder.single_input("Scale"); - builder.single_input("Distortion"); - builder.single_output("Color"); - builder.single_output("Fac"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &vector = params.readonly_single_input(0, "Vector"); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_wave.cc b/source/blender/nodes/shader/nodes/node_shader_tex_wave.cc index 9fb712efeec..ffb7cc6350a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_wave.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_wave.cc @@ -94,26 +94,23 @@ class WaveFunction : public mf::MultiFunction { rings_direction_(rings_direction), wave_profile_(wave_profile) { - static mf::Signature signature = create_signature(); + static const mf::Signature signature = []() { + mf::Signature signature; + mf::SignatureBuilder builder{"MagicFunction", signature}; + builder.single_input("Vector"); + builder.single_input("Scale"); + builder.single_input("Distortion"); + builder.single_input("Detail"); + builder.single_input("Detail Scale"); + builder.single_input("Detail Roughness"); + builder.single_input("Phase Offset"); + builder.single_output("Color"); + builder.single_output("Fac"); + return signature; + }(); this->set_signature(&signature); } - static mf::Signature create_signature() - { - mf::Signature signature; - mf::SignatureBuilder builder{"MagicFunction", signature}; - builder.single_input("Vector"); - builder.single_input("Scale"); - builder.single_input("Distortion"); - builder.single_input("Detail"); - builder.single_input("Detail Scale"); - builder.single_input("Detail Roughness"); - builder.single_input("Phase Offset"); - builder.single_output("Color"); - builder.single_output("Fac"); - return signature; - } - void call(IndexMask mask, mf::MFParams params, mf::Context /*context*/) const override { const VArray &vector = params.readonly_single_input(0, "Vector");