[Bf-blender-cvs] [456a989d2eb] compositor-full-frame: Compositor: Full frame Track Position node
Manuel Castilla
noreply at git.blender.org
Fri Jul 23 19:23:13 CEST 2021
Commit: 456a989d2eb220e138884a2d2d7488d377630e89
Author: Manuel Castilla
Date: Fri Jul 23 19:06:38 2021 +0200
Branches: compositor-full-frame
https://developer.blender.org/rB456a989d2eb220e138884a2d2d7488d377630e89
Compositor: Full frame Track Position node
Adds full frame implementation to this node operation.
No functional changes.
===================================================================
M source/blender/compositor/operations/COM_TrackPositionOperation.cc
M source/blender/compositor/operations/COM_TrackPositionOperation.h
===================================================================
diff --git a/source/blender/compositor/operations/COM_TrackPositionOperation.cc b/source/blender/compositor/operations/COM_TrackPositionOperation.cc
index 993410e3e84..1d24cba0a97 100644
--- a/source/blender/compositor/operations/COM_TrackPositionOperation.cc
+++ b/source/blender/compositor/operations/COM_TrackPositionOperation.cc
@@ -42,6 +42,8 @@ TrackPositionOperation::TrackPositionOperation()
this->m_relativeFrame = 0;
this->m_speed_output = false;
flags.is_set_operation = true;
+ flags.is_fullframe_operation = true;
+ flags.can_be_constant = true;
}
void TrackPositionOperation::initExecution()
@@ -131,6 +133,23 @@ void TrackPositionOperation::executePixelSampled(float output[4],
}
}
+void TrackPositionOperation::update_memory_buffer(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> UNUSED(inputs))
+{
+ /* Should always be folded into a constant operation because there are no inputs and
+ * can_be_constant flag is enabled. */
+ BLI_assert(BLI_rcti_size_x(&area) == 1 && BLI_rcti_size_y(&area) == 1);
+ float *out = output->get_elem(area.xmin, area.ymin);
+ out[0] = this->m_markerPos[this->m_axis] - this->m_relativePos[this->m_axis];
+ if (this->m_axis == 0) {
+ out[0] *= this->m_width;
+ }
+ else {
+ out[0] *= this->m_height;
+ }
+}
+
void TrackPositionOperation::determineResolution(unsigned int resolution[2],
unsigned int preferredResolution[2])
{
diff --git a/source/blender/compositor/operations/COM_TrackPositionOperation.h b/source/blender/compositor/operations/COM_TrackPositionOperation.h
index b0b0a123bd6..6916b5cbbff 100644
--- a/source/blender/compositor/operations/COM_TrackPositionOperation.h
+++ b/source/blender/compositor/operations/COM_TrackPositionOperation.h
@@ -93,6 +93,10 @@ class TrackPositionOperation : public NodeOperation {
void initExecution() override;
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override;
+
+ void update_memory_buffer(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> inputs) override;
};
} // namespace blender::compositor
More information about the Bf-blender-cvs
mailing list