diff options
author | Manuel Castilla <manzanillawork@gmail.com> | 2021-08-10 16:25:26 +0300 |
---|---|---|
committer | Manuel Castilla <manzanillawork@gmail.com> | 2021-08-10 17:16:23 +0300 |
commit | eb03529ab950dc0868a22eb97d3a58a07980b827 (patch) | |
tree | 3d1798b0d9eb16431c68b299d58c5f83243d26ed /source/blender/compositor/operations/COM_SplitOperation.cc | |
parent | d481c6651d149bdc83a8c0bbb675d3d296f7c530 (diff) |
Compositor: Full frame output nodes
Adds full frame implementation to "Composite", "File Output" and
"Split Viewer" nodes.
The other nodes in "Output" submenu are implemented separately.
No functional changes.
Reviewed By: jbakker
Differential Revision: https://developer.blender.org/D12091
Diffstat (limited to 'source/blender/compositor/operations/COM_SplitOperation.cc')
-rw-r--r-- | source/blender/compositor/operations/COM_SplitOperation.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/compositor/operations/COM_SplitOperation.cc b/source/blender/compositor/operations/COM_SplitOperation.cc index a4754de370d..d18ed3b8e14 100644 --- a/source/blender/compositor/operations/COM_SplitOperation.cc +++ b/source/blender/compositor/operations/COM_SplitOperation.cc @@ -79,4 +79,17 @@ void SplitOperation::determineResolution(unsigned int resolution[2], NodeOperation::determineResolution(resolution, preferredResolution); } +void SplitOperation::update_memory_buffer_partial(MemoryBuffer *output, + const rcti &area, + Span<MemoryBuffer *> inputs) +{ + const int percent = this->m_xSplit ? this->m_splitPercentage * this->getWidth() / 100.0f : + this->m_splitPercentage * this->getHeight() / 100.0f; + const size_t elem_bytes = COM_data_type_bytes_len(getOutputSocket()->getDataType()); + for (BuffersIterator<float> it = output->iterate_with(inputs, area); !it.is_end(); ++it) { + const bool is_image1 = this->m_xSplit ? it.x > percent : it.y > percent; + memcpy(it.out, it.in(is_image1 ? 0 : 1), elem_bytes); + } +} + } // namespace blender::compositor |