Files
test/source/blender/compositor/intern/implicit_input_operation.cc
Omar Emara 4f32795ed5 Fix: Compositor assert on wrong result type
Since image coordinates now uses Float2 types, implicit input operations
should use the same type, which was missed in a recent refactor.
2025-06-24 10:26:16 +03: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::Float2;
}
BLI_assert_unreachable();
return ResultType::Float2;
}
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