Files
test2/source/blender/compositor/intern/implicit_input_operation.cc
Omar Emara a4502f82c1 Compositor: Add Image Coordinates node
This patch adds a new Image Coordinates node for the compositor. The
Texture Coordinates and Pixel Coordinates outputs were removed from the
Image Info node and were added to the new node instead. Additionally, a
new Normalized Coordinates output was added.

The Pixel Coordinates output now no longer includes half pixel offsets.

Pull Request: https://projects.blender.org/blender/blender/pulls/138935
2025-05-26 08:25:06 +02:00

58 lines
1.6 KiB
C++

/* SPDX-FileCopyrightText: 2025 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#include "BLI_assert.h"
#include "COM_implicit_input_operation.hh"
#include "COM_input_descriptor.hh"
#include "COM_operation.hh"
#include "COM_result.hh"
namespace blender::compositor {
const StringRef ImplicitInputOperation::output_identifier_ = StringRef("Output");
static ResultType get_implicit_input_result_type(const ImplicitInput implicit_input)
{
switch (implicit_input) {
case ImplicitInput::None:
break;
case ImplicitInput::TextureCoordinates:
return ResultType::Float3;
}
BLI_assert_unreachable();
return ResultType::Float3;
}
ImplicitInputOperation::ImplicitInputOperation(Context &context,
const ImplicitInput implicit_input)
: Operation(context), implicit_input_(implicit_input)
{
this->populate_result(output_identifier_,
context.create_result(get_implicit_input_result_type(implicit_input)));
}
void ImplicitInputOperation::execute()
{
Result &result = this->get_result();
switch (implicit_input_) {
case ImplicitInput::None:
BLI_assert_unreachable();
break;
case ImplicitInput::TextureCoordinates:
const int2 size = this->context().get_compositing_region_size();
result.wrap_external(this->context().cache_manager().image_coordinates.get(
this->context(), size, CoordinatesType::Uniform));
}
}
Result &ImplicitInputOperation::get_result()
{
return Operation::get_result(output_identifier_);
}
} // namespace blender::compositor