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");