2025-03-26 13:42:21 +02:00
|
|
|
/* 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:
|
2025-06-24 10:26:16 +03:00
|
|
|
return ResultType::Float2;
|
2025-03-26 13:42:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BLI_assert_unreachable();
|
2025-06-24 10:26:16 +03:00
|
|
|
return ResultType::Float2;
|
2025-03-26 13:42:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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();
|
2025-05-26 08:25:06 +02:00
|
|
|
result.wrap_external(this->context().cache_manager().image_coordinates.get(
|
|
|
|
|
this->context(), size, CoordinatesType::Uniform));
|
2025-03-26 13:42:21 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Result &ImplicitInputOperation::get_result()
|
|
|
|
|
{
|
|
|
|
|
return Operation::get_result(output_identifier_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace blender::compositor
|