Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Castilla <manzanillawork@gmail.com>2021-08-10 16:25:26 +0300
committerManuel Castilla <manzanillawork@gmail.com>2021-08-10 17:16:23 +0300
commiteb03529ab950dc0868a22eb97d3a58a07980b827 (patch)
tree3d1798b0d9eb16431c68b299d58c5f83243d26ed /source/blender/compositor/operations/COM_OutputFileOperation.cc
parentd481c6651d149bdc83a8c0bbb675d3d296f7c530 (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_OutputFileOperation.cc')
-rw-r--r--source/blender/compositor/operations/COM_OutputFileOperation.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/blender/compositor/operations/COM_OutputFileOperation.cc b/source/blender/compositor/operations/COM_OutputFileOperation.cc
index 6c5984e3414..402d29893a4 100644
--- a/source/blender/compositor/operations/COM_OutputFileOperation.cc
+++ b/source/blender/compositor/operations/COM_OutputFileOperation.cc
@@ -294,6 +294,22 @@ void OutputSingleLayerOperation::deinitExecution()
this->m_imageInput = nullptr;
}
+void OutputSingleLayerOperation::update_memory_buffer_partial(MemoryBuffer *UNUSED(output),
+ const rcti &area,
+ Span<MemoryBuffer *> inputs)
+{
+ if (!m_outputBuffer) {
+ return;
+ }
+
+ MemoryBuffer output_buf(m_outputBuffer,
+ COM_data_type_num_channels(this->m_datatype),
+ this->getWidth(),
+ this->getHeight());
+ const MemoryBuffer *input_image = inputs[0];
+ output_buf.copy_from(input_image, area);
+}
+
/******************************* MultiLayer *******************************/
OutputOpenExrLayer::OutputOpenExrLayer(const char *name_, DataType datatype_, bool use_layer_)
@@ -444,4 +460,21 @@ void OutputOpenExrMultiLayerOperation::deinitExecution()
}
}
+void OutputOpenExrMultiLayerOperation::update_memory_buffer_partial(MemoryBuffer *UNUSED(output),
+ const rcti &area,
+ Span<MemoryBuffer *> inputs)
+{
+ const MemoryBuffer *input_image = inputs[0];
+ for (int i = 0; i < this->m_layers.size(); i++) {
+ OutputOpenExrLayer &layer = this->m_layers[i];
+ if (layer.outputBuffer) {
+ MemoryBuffer output_buf(layer.outputBuffer,
+ COM_data_type_num_channels(layer.datatype),
+ this->getWidth(),
+ this->getHeight());
+ output_buf.copy_from(input_image, area);
+ }
+ }
+}
+
} // namespace blender::compositor