Blender
V4.3
source
blender
compositor
operations
COM_FileOutputOperation.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#pragma once
6
7
#include "
BLI_vector.hh
"
8
9
#include "
DNA_node_types.h
"
10
11
#include "
COM_CompositorContext.h
"
12
#include "
COM_NodeOperation.h
"
13
14
namespace
blender::realtime_compositor
{
15
class
FileOutput
;
16
}
17
18
namespace
blender::compositor
{
19
20
struct
FileOutputInput
{
21
FileOutputInput
(
NodeImageMultiFileSocket
*
data
,
DataType
data_type
,
DataType
original_data_type
);
22
23
NodeImageMultiFileSocket
*
data
;
24
/* The internal data type of the input in the operation, which can be different from the UI type.
25
* See the get_input_data_type function in COM_FileOutputNode.cc for more information. */
26
DataType
data_type
;
27
/* Stores the original data type of socket in the UI, see data_type above for more information
28
* about the distinction. */
29
DataType
original_data_type
;
30
31
float
*
output_buffer
=
nullptr
;
32
SocketReader
*
image_input
=
nullptr
;
33
};
34
35
class
FileOutputOperation
:
public
NodeOperation
{
36
private
:
37
const
CompositorContext
*context_;
38
const
NodeImageMultiFile
*node_data_;
39
Vector<FileOutputInput>
file_output_inputs_;
40
41
public
:
42
FileOutputOperation
(
const
CompositorContext
*context,
43
const
NodeImageMultiFile
*node_data,
44
Vector<FileOutputInput>
inputs
);
45
46
bool
is_output_operation
(
bool
/*rendering*/
)
const override
47
{
48
return
true
;
49
}
50
void
init_execution
()
override
;
51
void
deinit_execution
()
override
;
52
eCompositorPriority
get_render_priority
()
const override
53
{
54
return
eCompositorPriority::Low
;
55
}
56
57
void
update_memory_buffer
(
MemoryBuffer
*
output
,
58
const
rcti
&area,
59
Span<MemoryBuffer *>
inputs
)
override
;
60
61
private
:
62
void
execute_single_layer();
63
void
execute_single_layer_multi_view_exr(
const
FileOutputInput
&input,
64
const
ImageFormatData
&
format
,
65
const
char
*base_path);
66
void
execute_multi_layer();
67
68
/* Add a pass of the given name, view, and input buffer. The pass channel identifiers follows the
69
* EXR conventions. */
70
void
add_pass_for_input(
realtime_compositor::FileOutput
&file_output,
71
const
FileOutputInput
&input,
72
const
char
*pass_name,
73
const
char
*view_name);
74
75
/* Add a view of the given name and input buffer. */
76
void
add_view_for_input(
realtime_compositor::FileOutput
&file_output,
77
const
FileOutputInput
&input,
78
const
char
*view_name);
79
80
/* Get the base path of the image to be saved, based on the base path of the node. The base name
81
* is an optional initial name of the image, which will later be concatenated with other
82
* information like the frame number, view, and extension. If the base name is empty, then the
83
* base path represents a directory, so a trailing slash is ensured. */
84
void
get_single_layer_image_base_path(
const
char
*base_name,
char
*base_path);
85
86
/* Get the path of the image to be saved based on the given format. */
87
void
get_single_layer_image_path(
const
char
*base_path,
88
const
ImageFormatData
&
format
,
89
char
*image_path);
90
91
/* Get the path of the EXR image to be saved. If the given view is not empty, its corresponding
92
* file suffix will be appended to the name. */
93
void
get_multi_layer_exr_image_path(
const
char
*base_path,
const
char
*
view
,
char
*image_path);
94
95
bool
is_multi_layer();
96
97
const
char
*get_base_path();
98
99
/* Add the file format extensions to the rendered file name. */
100
bool
use_file_extension();
101
102
/* If true, save views in a multi-view EXR file, otherwise, save each view in its own file. */
103
bool
is_multi_view_exr();
104
105
bool
is_multi_view_scene();
106
};
107
108
}
// namespace blender::compositor
BLI_vector.hh
COM_CompositorContext.h
COM_NodeOperation.h
DNA_node_types.h
view
static AppView * view
Definition
FRS_freestyle.cpp:65
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::CompositorContext
Overall context of the compositor.
Definition
COM_CompositorContext.h:27
blender::compositor::FileOutputOperation::init_execution
void init_execution() override
Definition
COM_FileOutputOperation.cc:74
blender::compositor::FileOutputOperation::get_render_priority
eCompositorPriority get_render_priority() const override
get the render priority of this node.
Definition
COM_FileOutputOperation.h:52
blender::compositor::FileOutputOperation::update_memory_buffer
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_FileOutputOperation.cc:87
blender::compositor::FileOutputOperation::is_output_operation
bool is_output_operation(bool) const override
is_output_operation determines whether this operation is an output of the ExecutionSystem during rend...
Definition
COM_FileOutputOperation.h:46
blender::compositor::FileOutputOperation::deinit_execution
void deinit_execution() override
Definition
COM_FileOutputOperation.cc:121
blender::compositor::FileOutputOperation::FileOutputOperation
FileOutputOperation(const CompositorContext *context, const NodeImageMultiFile *node_data, Vector< FileOutputInput > inputs)
Definition
COM_FileOutputOperation.cc:59
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::NodeOperation::NodeOperation
NodeOperation()
Definition
COM_NodeOperation.cc:18
blender::realtime_compositor::FileOutput
Definition
COM_render_context.hh:41
blender::compositor::eCompositorPriority
eCompositorPriority
Possible priority settings.
Definition
COM_Enums.h:33
blender::compositor::eCompositorPriority::Low
@ Low
Definition
COM_Enums.h:36
blender::compositor::DataType
DataType
possible data types for sockets
Definition
COM_defines.h:21
blender::compositor::DataType::Vector
@ Vector
Vector data type.
Definition
COM_defines.h:25
format
format
Definition
logImageCore.h:39
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
blender::compositor::SocketReader
NodeOperation SocketReader
Definition
COM_NodeOperation.h:33
blender::realtime_compositor
Definition
BKE_node.hh:80
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
ImageFormatData
Definition
DNA_scene_types.h:394
NodeImageMultiFileSocket
Definition
DNA_node_types.h:1155
NodeImageMultiFile
Definition
DNA_node_types.h:1144
blender::compositor::FileOutputInput
Definition
COM_FileOutputOperation.h:20
blender::compositor::FileOutputInput::data
NodeImageMultiFileSocket * data
Definition
COM_FileOutputOperation.h:23
blender::compositor::FileOutputInput::data_type
DataType data_type
Definition
COM_FileOutputOperation.h:26
blender::compositor::FileOutputInput::original_data_type
DataType original_data_type
Definition
COM_FileOutputOperation.h:29
blender::compositor::FileOutputInput::FileOutputInput
FileOutputInput(NodeImageMultiFileSocket *data, DataType data_type, DataType original_data_type)
Definition
COM_FileOutputOperation.cc:31
blender::compositor::FileOutputInput::image_input
SocketReader * image_input
Definition
COM_FileOutputOperation.h:32
blender::compositor::FileOutputInput::output_buffer
float * output_buffer
Definition
COM_FileOutputOperation.h:31
rcti
Definition
DNA_vec_types.h:68
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0