Compositor: Use 2D/4D sockets in relevant sockets

This patch uses 2D and 4D sockets for relevant node sockets in the
compositor. This only on the UI side, internally, some of the sockets
still store 3D data, which will be handled in a later patch in the 5.0
release.

Pull Request: https://projects.blender.org/blender/blender/pulls/139452
This commit is contained in:
Omar Emara
2025-05-27 09:39:26 +02:00
committed by Omar Emara
parent 0dd4bba732
commit c54e96dac3
12 changed files with 42 additions and 19 deletions

View File

@@ -36,7 +36,7 @@ NODE_STORAGE_FUNCS(NodeBlurData)
static void cmp_node_blur_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Color>("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f});
b.add_input<decl::Vector>("Size").default_value({0.0f, 0.0f, 0.0f}).min(0.0f);
b.add_input<decl::Vector>("Size").dimensions(2).default_value({0.0f, 0.0f}).min(0.0f);
b.add_input<decl::Bool>("Extend Bounds").default_value(false).compositor_expects_single_value();
b.add_input<decl::Bool>("Separable")
.default_value(true)

View File

@@ -33,13 +33,15 @@ static void cmp_node_boxmask_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Float>("Value").subtype(PROP_FACTOR).default_value(1.0f).min(0.0f).max(1.0f);
b.add_input<decl::Vector>("Position")
.subtype(PROP_FACTOR)
.default_value({0.5f, 0.5f, 0.0f})
.dimensions(2)
.default_value({0.5f, 0.5f})
.min(-0.5f)
.max(1.5f)
.compositor_expects_single_value();
b.add_input<decl::Vector>("Size")
.subtype(PROP_FACTOR)
.default_value({0.2f, 0.1f, 0.0f})
.dimensions(2)
.default_value({0.2f, 0.1f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();

View File

@@ -32,25 +32,34 @@ static void cmp_node_cornerpin_declare(NodeDeclarationBuilder &b)
.default_value({1.0f, 1.0f, 1.0f, 1.0f})
.compositor_domain_priority(0);
b.add_input<decl::Vector>("Upper Left")
.default_value({0.0f, 1.0f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({0.0f, 1.0f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();
b.add_input<decl::Vector>("Upper Right")
.default_value({1.0f, 1.0f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({1.0f, 1.0f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();
b.add_input<decl::Vector>("Lower Left")
.default_value({0.0f, 0.0f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({0.0f, 0.0f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();
b.add_input<decl::Vector>("Lower Right")
.default_value({1.0f, 0.0f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({1.0f, 0.0f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();
b.add_output<decl::Color>("Image");
b.add_output<decl::Float>("Plane");
}

View File

@@ -38,8 +38,9 @@ static void cmp_node_directional_blur_declare(NodeDeclarationBuilder &b)
"to the power of this input, so it increases exponentially")
.compositor_expects_single_value();
b.add_input<decl::Vector>("Center")
.default_value({0.5f, 0.5f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({0.5f, 0.5f})
.min(0.0f)
.max(1.0f)
.description(

View File

@@ -27,7 +27,8 @@ static void cmp_node_displace_declare(NodeDeclarationBuilder &b)
.default_value({1.0f, 1.0f, 1.0f, 1.0f})
.compositor_domain_priority(0);
b.add_input<decl::Vector>("Vector")
.default_value({1.0f, 1.0f, 1.0f})
.dimensions(2)
.default_value({1.0f, 1.0f})
.min(0.0f)
.max(1.0f)
.subtype(PROP_TRANSLATION)

View File

@@ -32,13 +32,15 @@ static void cmp_node_ellipsemask_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Float>("Value").subtype(PROP_FACTOR).default_value(1.0f).min(0.0f).max(1.0f);
b.add_input<decl::Vector>("Position")
.subtype(PROP_FACTOR)
.default_value({0.5f, 0.5f, 0.0f})
.dimensions(2)
.default_value({0.5f, 0.5f})
.min(-0.5f)
.max(1.5f)
.compositor_expects_single_value();
b.add_input<decl::Vector>("Size")
.subtype(PROP_FACTOR)
.default_value({0.2f, 0.1f, 0.0f})
.dimensions(2)
.default_value({0.2f, 0.1f})
.min(0.0f)
.max(1.0f)
.compositor_expects_single_value();

View File

@@ -13,11 +13,12 @@ static void node_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Color>("Image").hide_value().compositor_realization_mode(
CompositorInputRealizationMode::None);
b.add_output<decl::Vector>("Uniform").description(
b.add_output<decl::Vector>("Uniform").dimensions(2).description(
"Zero centered coordinates normalizes along the larger dimension for uniform scaling");
b.add_output<decl::Vector>("Normalized")
.dimensions(2)
.description("Normalized coordinates with half pixel offsets");
b.add_output<decl::Vector>("Pixel").description("Integer pixel coordinates");
b.add_output<decl::Vector>("Pixel").dimensions(2).description("Integer pixel coordinates");
}
using namespace blender::compositor;

View File

@@ -19,12 +19,14 @@ static void node_declare(NodeDeclarationBuilder &b)
CompositorInputRealizationMode::None);
b.add_output<decl::Vector>("Dimensions")
.dimensions(2)
.description("The dimensions of the image in pixels with transformations applied");
b.add_output<decl::Vector>("Resolution")
.dimensions(2)
.description("The original resolution of the image in pixels before any transformations");
b.add_output<decl::Vector>("Location");
b.add_output<decl::Vector>("Location").dimensions(2);
b.add_output<decl::Float>("Rotation");
b.add_output<decl::Vector>("Scale");
b.add_output<decl::Vector>("Scale").dimensions(2);
}
using namespace blender::compositor;

View File

@@ -21,8 +21,9 @@ namespace blender::nodes::node_composite_relative_to_pixel_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Vector>("Value", "Vector Value")
.default_value({0.0f, 0.0f, 0.0f})
.subtype(PROP_FACTOR)
.dimensions(2)
.default_value({0.0f, 0.0f})
.min(0.0f)
.max(1.0f)
.description(
@@ -40,7 +41,7 @@ static void node_declare(NodeDeclarationBuilder &b)
CompositorInputRealizationMode::None);
b.add_output<decl::Float>("Value", "Float Value");
b.add_output<decl::Vector>("Value", "Vector Value");
b.add_output<decl::Vector>("Value", "Vector Value").dimensions(2);
}
static void node_init(bNodeTree * /*tree*/, bNode *node)

View File

@@ -27,7 +27,10 @@ static void cmp_node_sunbeams_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Color>("Image").default_value({1.0f, 1.0f, 1.0f, 1.0f});
b.add_input<decl::Vector>("Source")
.subtype(PROP_FACTOR)
.default_value({0.5f, 0.5f, 0.0f})
.dimensions(2)
.default_value({0.5f, 0.5f})
.min(0.0f)
.max(1.0f)
.description(
"The position of the source of the rays in normalized coordinates. 0 means lower left "
"corner and 1 means upper right corner")

View File

@@ -37,7 +37,7 @@ static void cmp_node_trackpos_declare(NodeDeclarationBuilder &b)
{
b.add_output<decl::Float>("X");
b.add_output<decl::Float>("Y");
b.add_output<decl::Vector>("Speed").subtype(PROP_VELOCITY);
b.add_output<decl::Vector>("Speed").subtype(PROP_VELOCITY).dimensions(2);
}
static void init(const bContext *C, PointerRNA *ptr)

View File

@@ -39,6 +39,7 @@ static void cmp_node_vec_blur_declare(NodeDeclarationBuilder &b)
.compositor_domain_priority(0);
b.add_input<decl::Float>("Z").default_value(0.0f).min(0.0f).compositor_domain_priority(2);
b.add_input<decl::Vector>("Speed")
.dimensions(4)
.default_value({0.0f, 0.0f, 0.0f})
.min(0.0f)
.max(1.0f)