From 7ec89d1bfb03c3fc2bf089b469fe47b7c2cf4c79 Mon Sep 17 00:00:00 2001 From: Omar Emara Date: Tue, 23 Sep 2025 17:32:07 +0200 Subject: [PATCH] Compositor: Reorder inputs accordingly to importance This patch reorders the inputs of some of the compositor nodes accordingly to their importance. The importance is already quantified internally using the domain priority of the input, so we needn't make any subjective judgement and just order by the priority. This breaks forward and backward compatibility if input indices were used as opposed to input identifiers due to the different order. Handling compatibility is not impossible, but is difficult, and it was already ignored in many past node changes. Pull Request: https://projects.blender.org/blender/blender/pulls/146311 --- .../gpu_shader_compositor_alpha_over.glsl | 20 ++--- .../gpu_shader_compositor_color_balance.glsl | 8 +- .../gpu_shader_compositor_hue_correct.glsl | 4 +- .../library/gpu_shader_compositor_invert.glsl | 4 +- .../common/gpu_shader_common_curves.glsl | 75 +++++++++++++++++++ .../nodes/node_composite_alpha_over.cc | 41 ++++------ .../nodes/node_composite_colorbalance.cc | 29 +++---- .../composite/nodes/node_composite_curves.cc | 20 +++-- .../composite/nodes/node_composite_denoise.cc | 11 +-- .../nodes/node_composite_depth_combine.cc | 18 +---- .../nodes/node_composite_despeckle.cc | 8 +- .../nodes/node_composite_double_edge_mask.cc | 12 ++- .../nodes/node_composite_exposure.cc | 6 +- .../composite/nodes/node_composite_filter.cc | 8 +- .../nodes/node_composite_hue_sat_val.cc | 24 ++---- .../nodes/node_composite_huecorrect.cc | 21 ++---- .../composite/nodes/node_composite_invert.cc | 21 ++---- .../composite/nodes/node_composite_map_uv.cc | 1 - .../nodes/node_composite_posterize.cc | 10 +-- .../nodes/node_composite_sepcomb_color.cc | 32 ++------ .../nodes/node_composite_setalpha.cc | 10 +-- .../nodes/node_composite_val_to_rgb.cc | 4 +- .../nodes/node_composite_vec_blur.cc | 9 +-- .../node_filter_sobel_anim.png | 4 +- 24 files changed, 183 insertions(+), 217 deletions(-) diff --git a/source/blender/compositor/shaders/library/gpu_shader_compositor_alpha_over.glsl b/source/blender/compositor/shaders/library/gpu_shader_compositor_alpha_over.glsl index e15d6cade2c..f26da1b3b90 100644 --- a/source/blender/compositor/shaders/library/gpu_shader_compositor_alpha_over.glsl +++ b/source/blender/compositor/shaders/library/gpu_shader_compositor_alpha_over.glsl @@ -20,7 +20,7 @@ float4 preprocess_foreground(float4 foreground, float straight_alpha) } /* Computes the Porter and Duff Over compositing operation. */ -float4 alpha_over(float factor, float4 background, float4 foreground, float straight_alpha) +float4 alpha_over(float4 background, float4 foreground, float factor, float straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -34,9 +34,9 @@ float4 alpha_over(float factor, float4 background, float4 foreground, float stra * held out by the foreground. See for reference: * * https://benmcewan.com/blog/disjoint-over-and-conjoint-over-explained */ -float4 alpha_over_disjoint(float factor, - float4 background, +float4 alpha_over_disjoint(float4 background, float4 foreground, + float factor, float straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -61,9 +61,9 @@ float4 alpha_over_disjoint(float factor, * https://benmcewan.com/blog/disjoint-over-and-conjoint-over-explained * * However, the equation is wrong and should actually be A+B(1-a/b), A if a>b. */ -float4 alpha_over_conjoint(float factor, - float4 background, +float4 alpha_over_conjoint(float4 background, float4 foreground, + float factor, float straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -82,9 +82,9 @@ float4 alpha_over_conjoint(float factor, return mix(background, mix_result, factor); } -void node_composite_alpha_over(float factor, - float4 background, +void node_composite_alpha_over(float4 background, float4 foreground, + float factor, float type, float straight_alpha, out float4 result) @@ -92,13 +92,13 @@ void node_composite_alpha_over(float factor, result = background; switch (int(type)) { case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_OVER: - result = alpha_over(factor, background, foreground, straight_alpha); + result = alpha_over(background, foreground, factor, straight_alpha); break; case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_DISJOINT_OVER: - result = alpha_over_disjoint(factor, background, foreground, straight_alpha); + result = alpha_over_disjoint(background, foreground, factor, straight_alpha); break; case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_CONJOINT_OVER: - result = alpha_over_conjoint(factor, background, foreground, straight_alpha); + result = alpha_over_conjoint(background, foreground, factor, straight_alpha); break; } } diff --git a/source/blender/compositor/shaders/library/gpu_shader_compositor_color_balance.glsl b/source/blender/compositor/shaders/library/gpu_shader_compositor_color_balance.glsl index 034a0d1a64f..fc664b71b8b 100644 --- a/source/blender/compositor/shaders/library/gpu_shader_compositor_color_balance.glsl +++ b/source/blender/compositor/shaders/library/gpu_shader_compositor_color_balance.glsl @@ -238,8 +238,8 @@ float4 white_point_variable(const float4 color, return float4(balanced, color.w); } -void node_composite_color_balance(const float factor, - const float4 color, +void node_composite_color_balance(const float4 color, + const float factor, const float type, const float base_lift, const float4 color_lift, @@ -284,8 +284,8 @@ void node_composite_color_balance(const float factor, result = float4(mix(color.xyz(), result.xyz(), min(factor, 1.0f)), color.w); } -void node_composite_color_balance_white_point_constant(const float factor, - const float4 color, +void node_composite_color_balance_white_point_constant(const float4 color, + const float factor, const float type, const float base_lift, const float4 color_lift, diff --git a/source/blender/compositor/shaders/library/gpu_shader_compositor_hue_correct.glsl b/source/blender/compositor/shaders/library/gpu_shader_compositor_hue_correct.glsl index 3128122d8fd..86b58bc6957 100644 --- a/source/blender/compositor/shaders/library/gpu_shader_compositor_hue_correct.glsl +++ b/source/blender/compositor/shaders/library/gpu_shader_compositor_hue_correct.glsl @@ -15,8 +15,8 @@ float3 compute_hue_curve_map_coordinates(float3 parameters) return parameters * sampler_scale + sampler_offset; } -void node_composite_hue_correct(float factor, - float4 color, +void node_composite_hue_correct(float4 color, + float factor, sampler1DArray curve_map, const float layer, float3 minimums, diff --git a/source/blender/compositor/shaders/library/gpu_shader_compositor_invert.glsl b/source/blender/compositor/shaders/library/gpu_shader_compositor_invert.glsl index 8ef29f41531..2ee1a2c8ee9 100644 --- a/source/blender/compositor/shaders/library/gpu_shader_compositor_invert.glsl +++ b/source/blender/compositor/shaders/library/gpu_shader_compositor_invert.glsl @@ -5,7 +5,7 @@ #include "gpu_shader_common_color_utils.glsl" void node_composite_invert( - float fac, float4 color, float invert_color, float invert_alpha, out float4 result) + float4 color, float factor, float invert_color, float invert_alpha, out float4 result) { result = color; if (invert_color != 0.0f) { @@ -14,5 +14,5 @@ void node_composite_invert( if (invert_alpha != 0.0f) { result.a = 1.0f - result.a; } - result = mix(color, result, fac); + result = mix(color, result, factor); } diff --git a/source/blender/gpu/shaders/common/gpu_shader_common_curves.glsl b/source/blender/gpu/shaders/common/gpu_shader_common_curves.glsl index c9d1262a93c..5bf8fa4e7ba 100644 --- a/source/blender/gpu/shaders/common/gpu_shader_common_curves.glsl +++ b/source/blender/gpu/shaders/common/gpu_shader_common_curves.glsl @@ -98,6 +98,31 @@ void curves_combined_rgb(float factor, result = mix(color, result, factor); } +void curves_combined_rgb_compositor(float4 color, + float factor, + float4 black_level, + float4 white_level, + sampler1DArray curve_map, + const float layer, + float4 range_minimums, + float4 range_dividers, + float4 start_slopes, + float4 end_slopes, + out float4 result) +{ + curves_combined_rgb(factor, + color, + black_level, + white_level, + curve_map, + layer, + range_minimums, + range_dividers, + start_slopes, + end_slopes, + result); +} + void curves_combined_only(float factor, float4 color, float4 black_level, @@ -129,6 +154,31 @@ void curves_combined_only(float factor, result = mix(color, result, factor); } +void curves_combined_only_compositor(float4 color, + float factor, + float4 black_level, + float4 white_level, + sampler1DArray curve_map, + const float layer, + float range_minimum, + float range_divider, + float start_slope, + float end_slope, + out float4 result) +{ + curves_combined_only(factor, + color, + black_level, + white_level, + curve_map, + layer, + range_minimum, + range_divider, + start_slope, + end_slope, + result); +} + /* Contrary to standard tone curve implementations, the film-like implementation tries to preserve * the hue of the colors as much as possible. To understand why this might be a problem, consider * the violet color (0.5, 0.0, 1.0). If this color was to be evaluated at a power curve x^4, the @@ -207,6 +257,31 @@ void curves_film_like(float factor, result = mix(color, result, clamp(factor, 0.0f, 1.0f)); } +void curves_film_like_compositor(float4 color, + float factor, + float4 black_level, + float4 white_level, + sampler1DArray curve_map, + const float layer, + float range_minimum, + float range_divider, + float start_slope, + float end_slope, + out float4 result) +{ + curves_film_like(factor, + color, + black_level, + white_level, + curve_map, + layer, + range_minimum, + range_divider, + start_slope, + end_slope, + result); +} + void curves_vector(float3 vector, sampler1DArray curve_map, const float layer, diff --git a/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc b/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc index 1cb793ba1c6..2dc6cd49b5b 100644 --- a/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc +++ b/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc @@ -41,18 +41,9 @@ static const EnumPropertyItem type_items[] = { static void node_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Fac") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(2); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Image", "Image_001") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(1); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Image", "Image_001").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Fac").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_input("Type") .default_value(CMP_NODE_ALPHA_OVER_OPERATION_TYPE_OVER) .static_items(type_items); @@ -85,9 +76,9 @@ static float4 preprocess_foreground(const float4 &foreground, const bool straigh } /* Computes the Porter and Duff Over compositing operation. */ -static float4 alpha_over(const float factor, - const float4 &background, +static float4 alpha_over(const float4 &background, const float4 &foreground, + const float factor, const bool straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -102,9 +93,9 @@ static float4 alpha_over(const float factor, * held out by the foreground. See for reference: * * https://benmcewan.com/blog/disjoint-over-and-conjoint-over-explained */ -static float4 alpha_over_disjoint(const float factor, - const float4 &background, +static float4 alpha_over_disjoint(const float4 &background, const float4 &foreground, + const float factor, const bool straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -127,9 +118,9 @@ static float4 alpha_over_disjoint(const float factor, * background if it is more opaque but not necessary completely opaque. See for reference: * * https://benmcewan.com/blog/disjoint-over-and-conjoint-over-explained */ -static float4 alpha_over_conjoint(const float factor, - const float4 &background, +static float4 alpha_over_conjoint(const float4 &background, const float4 &foreground, + const float factor, const bool straight_alpha) { const float4 foreground_color = preprocess_foreground(foreground, straight_alpha); @@ -150,24 +141,24 @@ static float4 alpha_over_conjoint(const float factor, static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder) { - static auto function = mf::build::SI5_SO( + static auto function = mf::build::SI5_SO( "Alpha Over", - [=](const float factor, - const float4 &background, + [=](const float4 &background, const float4 &foreground, + const float factor, const MenuValue type, const bool straight_alpha) -> float4 { switch (CMPNodeAlphaOverOperationType(type.value)) { case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_OVER: - return alpha_over(factor, background, foreground, straight_alpha); + return alpha_over(background, foreground, factor, straight_alpha); case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_DISJOINT_OVER: - return alpha_over_disjoint(factor, background, foreground, straight_alpha); + return alpha_over_disjoint(background, foreground, factor, straight_alpha); case CMP_NODE_ALPHA_OVER_OPERATION_TYPE_CONJOINT_OVER: - return alpha_over_conjoint(factor, background, foreground, straight_alpha); + return alpha_over_conjoint(background, foreground, factor, straight_alpha); } return background; }, - mf::build::exec_presets::SomeSpanOrSingle<1, 2>()); + mf::build::exec_presets::SomeSpanOrSingle<0, 1>()); builder.set_matching_fn(function); } diff --git a/source/blender/nodes/composite/nodes/node_composite_colorbalance.cc b/source/blender/nodes/composite/nodes/node_composite_colorbalance.cc index fccf010c918..2cb46d8ee78 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorbalance.cc +++ b/source/blender/nodes/composite/nodes/node_composite_colorbalance.cc @@ -55,15 +55,8 @@ static void cmp_node_colorbalance_declare(NodeDeclarationBuilder &b) b.add_output("Image"); - b.add_input("Fac") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(1); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Fac").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_input("Type") .default_value(CMP_NODE_COLOR_BALANCE_LGG) @@ -310,8 +303,8 @@ static float4 white_point_variable(const float4 color, return float4(balanced, color.w); } -static float4 color_balance(const float factor, - const float4 color, +static float4 color_balance(const float4 color, + const float factor, const CMPNodeColorBalanceMethod type, const float base_lift, const float4 color_lift, @@ -363,8 +356,8 @@ class ColorBalanceFunction : public mf::MultiFunction { static const mf::Signature signature = []() { mf::Signature signature; mf::SignatureBuilder builder{"Color Balance", signature}; - builder.single_input("Factor"); builder.single_input("Color"); + builder.single_input("Factor"); builder.single_input("Type"); builder.single_input("Base Lift"); @@ -394,8 +387,8 @@ class ColorBalanceFunction : public mf::MultiFunction { void call(const IndexMask &mask, mf::Params params, mf::Context /*context*/) const override { - const VArray factor_array = params.readonly_single_input(0, "Factor"); - const VArray color_array = params.readonly_single_input(1, "Color"); + const VArray color_array = params.readonly_single_input(0, "Color"); + const VArray factor_array = params.readonly_single_input(1, "Factor"); const VArray type_array = params.readonly_single_input(2, "Type"); const VArray base_lift_array = params.readonly_single_input(3, "Base Lift"); @@ -484,8 +477,8 @@ class ColorBalanceFunction : public mf::MultiFunction { const float output_tint = output_tint_array.get_internal_single(); mask.foreach_index([&](const int64_t i) { - result[i] = color_balance(factor, - color_array[i], + result[i] = color_balance(color_array[i], + factor, CMPNodeColorBalanceMethod(type), base_lift, color_lift, @@ -509,8 +502,8 @@ class ColorBalanceFunction : public mf::MultiFunction { } else { mask.foreach_index([&](const int64_t i) { - result[i] = color_balance(factor_array[i], - color_array[i], + result[i] = color_balance(color_array[i], + factor_array[i], CMPNodeColorBalanceMethod(type_array[i].value), base_lift_array[i], color_lift_array[i], diff --git a/source/blender/nodes/composite/nodes/node_composite_curves.cc b/source/blender/nodes/composite/nodes/node_composite_curves.cc index f85a6ef0633..1f359aa8184 100644 --- a/source/blender/nodes/composite/nodes/node_composite_curves.cc +++ b/source/blender/nodes/composite/nodes/node_composite_curves.cc @@ -130,17 +130,15 @@ namespace blender::nodes::node_composite_rgb_curves_cc { static void cmp_node_rgbcurves_declare(NodeDeclarationBuilder &b) { b.is_function_node(); + b.add_input("Image") + .default_value({1.0f, 1.0f, 1.0f, 1.0f}) + .description("Image/Color input on which RGB color transformation will be applied"); b.add_input("Fac") .default_value(1.0f) .min(0.0f) .max(1.0f) .subtype(PROP_FACTOR) - .compositor_domain_priority(1) .description("Amount of influence the node exerts on the image"); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) - .description("Image/Color input on which RGB color transformation will be applied"); b.add_input("Black Level") .default_value({0.0f, 0.0f, 0.0f, 1.0f}) .description("Input color that should be mapped to black"); @@ -188,7 +186,7 @@ static int node_gpu_material(GPUMaterial *material, if (curve_mapping->tone == CURVE_TONE_FILMLIKE) { return GPU_stack_link(material, node, - "curves_film_like", + "curves_film_like_compositor", inputs, outputs, band_texture, @@ -215,7 +213,7 @@ static int node_gpu_material(GPUMaterial *material, { return GPU_stack_link(material, node, - "curves_combined_only", + "curves_combined_only_compositor", inputs, outputs, band_texture, @@ -228,7 +226,7 @@ static int node_gpu_material(GPUMaterial *material, return GPU_stack_link(material, node, - "curves_combined_rgb", + "curves_combined_rgb_compositor", inputs, outputs, band_texture, @@ -246,9 +244,9 @@ static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder & BKE_curvemapping_premultiply(curve_mapping, false); builder.construct_and_set_matching_fn_cb([=]() { - return mf::build::SI4_SO( + return mf::build::SI4_SO( "RGB Curves", - [=](const float factor, const float4 &color, const float4 &black, const float4 &white) + [=](const float4 &color, const float factor, const float4 &black, const float4 &white) -> float4 { float3 black_white_scale; BKE_curvemapping_set_black_white_ex(black, white, black_white_scale); @@ -259,7 +257,7 @@ static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder & return float4(math::interpolate(color.xyz(), result, math::clamp(factor, 0.0f, 1.0f)), color.w); }, - mf::build::exec_presets::SomeSpanOrSingle<1>()); + mf::build::exec_presets::SomeSpanOrSingle<0>()); }); } diff --git a/source/blender/nodes/composite/nodes/node_composite_denoise.cc b/source/blender/nodes/composite/nodes/node_composite_denoise.cc index d8950a8080d..e2abe5c1d72 100644 --- a/source/blender/nodes/composite/nodes/node_composite_denoise.cc +++ b/source/blender/nodes/composite/nodes/node_composite_denoise.cc @@ -75,19 +75,16 @@ static void cmp_node_denoise_declare(NodeDeclarationBuilder &b) { b.add_input("Image") .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) + .structure_type(StructureType::Dynamic); + b.add_input("Albedo") + .default_value({1.0f, 1.0f, 1.0f, 1.0f}) + .hide_value() .structure_type(StructureType::Dynamic); b.add_input("Normal") .default_value({0.0f, 0.0f, 0.0f}) .min(-1.0f) .max(1.0f) .hide_value() - .compositor_domain_priority(2) - .structure_type(StructureType::Dynamic); - b.add_input("Albedo") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .hide_value() - .compositor_domain_priority(1) .structure_type(StructureType::Dynamic); b.add_input("HDR").default_value(true); b.add_input("Prefilter") diff --git a/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc b/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc index dc5fcfac1c1..08359a6ae83 100644 --- a/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc +++ b/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc @@ -28,24 +28,14 @@ static void cmp_node_zcombine_declare(NodeDeclarationBuilder &b) { b.add_input("A") .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) - .structure_type(StructureType::Dynamic); - b.add_input("Depth A") - .default_value(1.0f) - .min(0.0f) - .max(10000.0f) - .compositor_domain_priority(2) .structure_type(StructureType::Dynamic); + b.add_input("Depth A").default_value(1.0f).min(0.0f).max(10000.0f).structure_type( + StructureType::Dynamic); b.add_input("B") .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(1) - .structure_type(StructureType::Dynamic); - b.add_input("Depth B") - .default_value(1.0f) - .min(0.0f) - .max(10000.0f) - .compositor_domain_priority(3) .structure_type(StructureType::Dynamic); + b.add_input("Depth B").default_value(1.0f).min(0.0f).max(10000.0f).structure_type( + StructureType::Dynamic); b.add_input("Use Alpha") .default_value(false) .description( diff --git a/source/blender/nodes/composite/nodes/node_composite_despeckle.cc b/source/blender/nodes/composite/nodes/node_composite_despeckle.cc index d660ae02f14..ae2911f30fb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_despeckle.cc +++ b/source/blender/nodes/composite/nodes/node_composite_despeckle.cc @@ -26,16 +26,14 @@ namespace blender::nodes::node_composite_despeckle_cc { static void cmp_node_despeckle_declare(NodeDeclarationBuilder &b) { + b.add_input("Image") + .default_value({1.0f, 1.0f, 1.0f, 1.0f}) + .structure_type(StructureType::Dynamic); b.add_input("Fac") .default_value(1.0f) .min(0.0f) .max(1.0f) .subtype(PROP_FACTOR) - .compositor_domain_priority(1) - .structure_type(StructureType::Dynamic); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) .structure_type(StructureType::Dynamic); b.add_input("Color Threshold") .default_value(0.5f) diff --git a/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc b/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc index 63fedb7eb8a..d23e2f9ac68 100644 --- a/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc +++ b/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc @@ -15,17 +15,15 @@ namespace blender::nodes::node_composite_double_edge_mask_cc { static void cmp_node_double_edge_mask_declare(NodeDeclarationBuilder &b) { - b.add_input("Inner Mask") - .default_value(0.8f) - .min(0.0f) - .max(1.0f) - .compositor_domain_priority(1) - .structure_type(StructureType::Dynamic); b.add_input("Outer Mask") .default_value(0.8f) .min(0.0f) .max(1.0f) - .compositor_domain_priority(0) + .structure_type(StructureType::Dynamic); + b.add_input("Inner Mask") + .default_value(0.8f) + .min(0.0f) + .max(1.0f) .structure_type(StructureType::Dynamic); b.add_input("Image Edges") .default_value(false) diff --git a/source/blender/nodes/composite/nodes/node_composite_exposure.cc b/source/blender/nodes/composite/nodes/node_composite_exposure.cc index 681a26ce48b..c6561e87bfa 100644 --- a/source/blender/nodes/composite/nodes/node_composite_exposure.cc +++ b/source/blender/nodes/composite/nodes/node_composite_exposure.cc @@ -25,10 +25,8 @@ namespace blender::nodes::node_composite_exposure_cc { static void cmp_node_exposure_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Exposure").min(-10.0f).max(10.0f).compositor_domain_priority(1); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Exposure").min(-10.0f).max(10.0f); b.add_output("Image"); } diff --git a/source/blender/nodes/composite/nodes/node_composite_filter.cc b/source/blender/nodes/composite/nodes/node_composite_filter.cc index 0e6d3d9705a..05d88846f49 100644 --- a/source/blender/nodes/composite/nodes/node_composite_filter.cc +++ b/source/blender/nodes/composite/nodes/node_composite_filter.cc @@ -37,16 +37,14 @@ static const EnumPropertyItem type_items[] = { static void cmp_node_filter_declare(NodeDeclarationBuilder &b) { + b.add_input("Image") + .default_value({1.0f, 1.0f, 1.0f, 1.0f}) + .structure_type(StructureType::Dynamic); b.add_input("Fac") .default_value(1.0f) .min(0.0f) .max(1.0f) .subtype(PROP_FACTOR) - .compositor_domain_priority(1) - .structure_type(StructureType::Dynamic); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) .structure_type(StructureType::Dynamic); b.add_input("Type").default_value(CMP_NODE_FILTER_SOFT).static_items(type_items); diff --git a/source/blender/nodes/composite/nodes/node_composite_hue_sat_val.cc b/source/blender/nodes/composite/nodes/node_composite_hue_sat_val.cc index d89a9f51b13..8f889f17d6a 100644 --- a/source/blender/nodes/composite/nodes/node_composite_hue_sat_val.cc +++ b/source/blender/nodes/composite/nodes/node_composite_hue_sat_val.cc @@ -26,34 +26,20 @@ namespace blender::nodes::node_composite_hue_sat_val_cc { static void cmp_node_huesatval_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Hue") - .default_value(0.5f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(1); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Hue").default_value(0.5f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_input("Saturation") .default_value(1.0f) .min(0.0f) .max(2.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(2); + .subtype(PROP_FACTOR); b.add_input("Value") .default_value(1.0f) .min(0.0f) .max(2.0f) .subtype(PROP_FACTOR) - .translation_context(BLT_I18NCONTEXT_COLOR) - .compositor_domain_priority(3); - b.add_input("Fac") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(4); + .translation_context(BLT_I18NCONTEXT_COLOR); + b.add_input("Fac").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_output("Image"); } diff --git a/source/blender/nodes/composite/nodes/node_composite_huecorrect.cc b/source/blender/nodes/composite/nodes/node_composite_huecorrect.cc index 4a512b0137d..7a6f5623e44 100644 --- a/source/blender/nodes/composite/nodes/node_composite_huecorrect.cc +++ b/source/blender/nodes/composite/nodes/node_composite_huecorrect.cc @@ -27,15 +27,8 @@ namespace blender::nodes::node_composite_huecorrect_cc { static void cmp_node_huecorrect_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Fac") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(1); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Fac").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_output("Image"); } @@ -95,7 +88,7 @@ static int node_gpu_material(GPUMaterial *material, GPU_uniform(range_dividers)); } -static float4 hue_correct(const float factor, const float4 &color, const CurveMapping *curve_map) +static float4 hue_correct(const float4 &color, const float factor, const CurveMapping *curve_map) { float3 hsv; rgb_to_hsv_v(color, hsv); @@ -129,12 +122,12 @@ static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder & BKE_curvemapping_init(curve_mapping); builder.construct_and_set_matching_fn_cb([=]() { - return mf::build::SI2_SO( + return mf::build::SI2_SO( "Hue Correct", - [=](const float factor, const float4 &color) -> float4 { - return hue_correct(factor, color, curve_mapping); + [=](const float4 &color, const float factor) -> float4 { + return hue_correct(color, factor, curve_mapping); }, - mf::build::exec_presets::SomeSpanOrSingle<1>()); + mf::build::exec_presets::SomeSpanOrSingle<0>()); }); } diff --git a/source/blender/nodes/composite/nodes/node_composite_invert.cc b/source/blender/nodes/composite/nodes/node_composite_invert.cc index 087b72d64a1..64afb455014 100644 --- a/source/blender/nodes/composite/nodes/node_composite_invert.cc +++ b/source/blender/nodes/composite/nodes/node_composite_invert.cc @@ -26,17 +26,10 @@ namespace blender::nodes::node_composite_invert_cc { static void cmp_node_invert_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Fac") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(1); - b.add_input("Color") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Invert Color").default_value(true).compositor_domain_priority(2); - b.add_input("Invert Alpha").default_value(false).compositor_domain_priority(3); + b.add_input("Color").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Fac").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); + b.add_input("Invert Color").default_value(true); + b.add_input("Invert Alpha").default_value(false); b.add_output("Color"); } @@ -54,9 +47,9 @@ static int node_gpu_material(GPUMaterial *material, static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder) { - static auto function = mf::build::SI4_SO( + static auto function = mf::build::SI4_SO( "Invert Color", - [](const float factor, const float4 &color, const bool invert_color, const bool invert_alpha) + [](const float4 &color, const float factor, const bool invert_color, const bool invert_alpha) -> float4 { float4 result = color; if (invert_color) { @@ -67,7 +60,7 @@ static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder & } return math::interpolate(color, result, factor); }, - mf::build::exec_presets::SomeSpanOrSingle<1>()); + mf::build::exec_presets::SomeSpanOrSingle<0>()); builder.set_matching_fn(function); } diff --git a/source/blender/nodes/composite/nodes/node_composite_map_uv.cc b/source/blender/nodes/composite/nodes/node_composite_map_uv.cc index 9ee54565586..84a5f7a37ce 100644 --- a/source/blender/nodes/composite/nodes/node_composite_map_uv.cc +++ b/source/blender/nodes/composite/nodes/node_composite_map_uv.cc @@ -46,7 +46,6 @@ static void cmp_node_map_uv_declare(NodeDeclarationBuilder &b) .description( "The UV coordinates at which to sample the texture. The Z component is assumed to " "contain an alpha channel") - .compositor_domain_priority(0) .structure_type(StructureType::Dynamic); PanelDeclarationBuilder &sampling_panel = b.add_panel("Sampling").default_closed(true); diff --git a/source/blender/nodes/composite/nodes/node_composite_posterize.cc b/source/blender/nodes/composite/nodes/node_composite_posterize.cc index cfe4bcb5923..1592d2c3f51 100644 --- a/source/blender/nodes/composite/nodes/node_composite_posterize.cc +++ b/source/blender/nodes/composite/nodes/node_composite_posterize.cc @@ -25,14 +25,8 @@ namespace blender::nodes::node_composite_posterize_cc { static void cmp_node_posterize_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Steps") - .default_value(8.0f) - .min(2.0f) - .max(1024.0f) - .compositor_domain_priority(1); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Steps").default_value(8.0f).min(2.0f).max(1024.0f); b.add_output("Image"); } diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcomb_color.cc b/source/blender/nodes/composite/nodes/node_composite_sepcomb_color.cc index 1784500b706..6862fe498e3 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcomb_color.cc +++ b/source/blender/nodes/composite/nodes/node_composite_sepcomb_color.cc @@ -73,9 +73,7 @@ NODE_STORAGE_FUNCS(NodeCMPCombSepColor) static void cmp_node_separate_color_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); b.add_output("Red"); b.add_output("Green"); b.add_output("Blue"); @@ -254,30 +252,10 @@ NODE_STORAGE_FUNCS(NodeCMPCombSepColor) static void cmp_node_combine_color_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Red") - .default_value(0.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(0); - b.add_input("Green") - .default_value(0.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(1); - b.add_input("Blue") - .default_value(0.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(2); - b.add_input("Alpha") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .subtype(PROP_FACTOR) - .compositor_domain_priority(3); + b.add_input("Red").default_value(0.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); + b.add_input("Green").default_value(0.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); + b.add_input("Blue").default_value(0.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); + b.add_input("Alpha").default_value(1.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR); b.add_output("Image"); } diff --git a/source/blender/nodes/composite/nodes/node_composite_setalpha.cc b/source/blender/nodes/composite/nodes/node_composite_setalpha.cc index 92f4e3753da..82a8807d7b1 100644 --- a/source/blender/nodes/composite/nodes/node_composite_setalpha.cc +++ b/source/blender/nodes/composite/nodes/node_composite_setalpha.cc @@ -35,14 +35,8 @@ static const EnumPropertyItem type_items[] = { static void cmp_node_setalpha_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0); - b.add_input("Alpha") - .default_value(1.0f) - .min(0.0f) - .max(1.0f) - .compositor_domain_priority(1); + b.add_input("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f}); + b.add_input("Alpha").default_value(1.0f).min(0.0f).max(1.0f); b.add_input("Type") .default_value(CMP_NODE_SETALPHA_MODE_APPLY) .static_items(type_items); diff --git a/source/blender/nodes/composite/nodes/node_composite_val_to_rgb.cc b/source/blender/nodes/composite/nodes/node_composite_val_to_rgb.cc index 3886be8bac8..c752074cc60 100644 --- a/source/blender/nodes/composite/nodes/node_composite_val_to_rgb.cc +++ b/source/blender/nodes/composite/nodes/node_composite_val_to_rgb.cc @@ -24,9 +24,7 @@ namespace blender::nodes::node_composite_rgb_to_bw_cc { static void cmp_node_rgbtobw_declare(NodeDeclarationBuilder &b) { b.is_function_node(); - b.add_input("Image") - .default_value({0.8f, 0.8f, 0.8f, 1.0f}) - .compositor_domain_priority(0); + b.add_input("Image").default_value({0.8f, 0.8f, 0.8f, 1.0f}); b.add_output("Val"); } diff --git a/source/blender/nodes/composite/nodes/node_composite_vec_blur.cc b/source/blender/nodes/composite/nodes/node_composite_vec_blur.cc index 2669489e68c..609d57e1688 100644 --- a/source/blender/nodes/composite/nodes/node_composite_vec_blur.cc +++ b/source/blender/nodes/composite/nodes/node_composite_vec_blur.cc @@ -35,12 +35,6 @@ static void cmp_node_vec_blur_declare(NodeDeclarationBuilder &b) { b.add_input("Image") .default_value({1.0f, 1.0f, 1.0f, 1.0f}) - .compositor_domain_priority(0) - .structure_type(StructureType::Dynamic); - b.add_input("Z") - .default_value(0.0f) - .min(0.0f) - .compositor_domain_priority(2) .structure_type(StructureType::Dynamic); b.add_input("Speed") .dimensions(4) @@ -48,8 +42,9 @@ static void cmp_node_vec_blur_declare(NodeDeclarationBuilder &b) .min(0.0f) .max(1.0f) .subtype(PROP_VELOCITY) - .compositor_domain_priority(1) .structure_type(StructureType::Dynamic); + b.add_input("Z").default_value(0.0f).min(0.0f).structure_type( + StructureType::Dynamic); b.add_input("Samples").default_value(32).min(1).max(256).description( "The number of samples used to approximate the motion blur"); b.add_input("Shutter").default_value(0.5f).min(0.0f).description( diff --git a/tests/files/compositor/filter/compositor_renders/node_filter_sobel_anim.png b/tests/files/compositor/filter/compositor_renders/node_filter_sobel_anim.png index f20087391d1..d9e67bed337 100644 --- a/tests/files/compositor/filter/compositor_renders/node_filter_sobel_anim.png +++ b/tests/files/compositor/filter/compositor_renders/node_filter_sobel_anim.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91a9ebacd4cafd1c75b6bc7d4ecfce30c8f892e826059d02ac08e4759e154543 -size 91990 +oid sha256:fd631c7408d339aa15bc747c62b624c69463bc2a3b0b212825d45cf5217c0826 +size 86156