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:
-rw-r--r--source/blender/blenkernel/BKE_blender_version.h2
-rw-r--r--source/blender/blenloader/intern/versioning_290.c18
-rw-r--r--source/blender/compositor/nodes/COM_OutputFileNode.cpp9
-rw-r--r--source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp10
-rw-r--r--source/blender/compositor/operations/COM_OutputFileMultiViewOperation.h6
-rw-r--r--source/blender/compositor/operations/COM_OutputFileOperation.cpp6
-rw-r--r--source/blender/compositor/operations/COM_OutputFileOperation.h4
-rw-r--r--source/blender/editors/space_node/drawnode.c10
-rw-r--r--source/blender/makesdna/DNA_node_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c5
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_outputFile.c1
11 files changed, 59 insertions, 15 deletions
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 6e596c94cee..4191464dd5a 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 10
+#define BLENDER_FILE_SUBVERSION 11
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c
index 61cf7e4ef49..f3f7ea608f5 100644
--- a/source/blender/blenloader/intern/versioning_290.c
+++ b/source/blender/blenloader/intern/versioning_290.c
@@ -1518,6 +1518,24 @@ void blo_do_versions_290(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
+ /* Enable "Save as Render" option for file output node by default (apply view transform to image
+ * on save) */
+ if (!MAIN_VERSION_ATLEAST(bmain, 292, 11)) {
+ FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
+ if (ntree->type == NTREE_COMPOSIT) {
+ LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ if (node->type == CMP_NODE_OUTPUT_FILE) {
+ LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
+ NodeImageMultiFileSocket *simf = sock->storage;
+ simf->save_as_render = true;
+ }
+ }
+ }
+ }
+ }
+ FOREACH_NODETREE_END;
+ }
+
/**
* Versioning code until next subversion bump goes here.
*
diff --git a/source/blender/compositor/nodes/COM_OutputFileNode.cpp b/source/blender/compositor/nodes/COM_OutputFileNode.cpp
index e0cff1de276..dcc1fbdec67 100644
--- a/source/blender/compositor/nodes/COM_OutputFileNode.cpp
+++ b/source/blender/compositor/nodes/COM_OutputFileNode.cpp
@@ -113,7 +113,8 @@ void OutputFileNode::convertToOperations(NodeConverter &converter,
path,
context.getViewSettings(),
context.getDisplaySettings(),
- context.getViewName());
+ context.getViewName(),
+ sockdata->save_as_render);
}
else if ((!is_multiview) || (format->views_format == R_IMF_VIEWS_INDIVIDUAL)) {
outputOperation = new OutputSingleLayerOperation(context.getRenderData(),
@@ -123,7 +124,8 @@ void OutputFileNode::convertToOperations(NodeConverter &converter,
path,
context.getViewSettings(),
context.getDisplaySettings(),
- context.getViewName());
+ context.getViewName(),
+ sockdata->save_as_render);
}
else { /* R_IMF_VIEWS_STEREO_3D */
outputOperation = new OutputStereoOperation(context.getRenderData(),
@@ -134,7 +136,8 @@ void OutputFileNode::convertToOperations(NodeConverter &converter,
sockdata->layer,
context.getViewSettings(),
context.getDisplaySettings(),
- context.getViewName());
+ context.getViewName(),
+ sockdata->save_as_render);
}
converter.addOperation(outputOperation);
diff --git a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
index 0b732357c92..7044fe402eb 100644
--- a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
+++ b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
@@ -47,9 +47,10 @@ OutputOpenExrSingleLayerMultiViewOperation::OutputOpenExrSingleLayerMultiViewOpe
const char *path,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName)
+ const char *viewName,
+ const bool saveAsRender)
: OutputSingleLayerOperation(
- rd, tree, datatype, format, path, viewSettings, displaySettings, viewName)
+ rd, tree, datatype, format, path, viewSettings, displaySettings, viewName, saveAsRender)
{
}
@@ -273,9 +274,10 @@ OutputStereoOperation::OutputStereoOperation(const RenderData *rd,
const char *name,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName)
+ const char *viewName,
+ const bool saveAsRender)
: OutputSingleLayerOperation(
- rd, tree, datatype, format, path, viewSettings, displaySettings, viewName)
+ rd, tree, datatype, format, path, viewSettings, displaySettings, viewName, saveAsRender)
{
BLI_strncpy(this->m_name, name, sizeof(this->m_name));
this->m_channels = get_datatype_size(datatype);
diff --git a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.h b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.h
index bc057355cef..258ac1f9e98 100644
--- a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.h
+++ b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.h
@@ -38,7 +38,8 @@ class OutputOpenExrSingleLayerMultiViewOperation : public OutputSingleLayerOpera
const char *path,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName);
+ const char *viewName,
+ const bool saveAsRender);
void *get_handle(const char *filename);
void deinitExecution();
@@ -74,7 +75,8 @@ class OutputStereoOperation : public OutputSingleLayerOperation {
const char *name,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName);
+ const char *viewName,
+ const bool saveAsRender);
void *get_handle(const char *filename);
void deinitExecution();
};
diff --git a/source/blender/compositor/operations/COM_OutputFileOperation.cpp b/source/blender/compositor/operations/COM_OutputFileOperation.cpp
index 216b754f676..0a7e238fed1 100644
--- a/source/blender/compositor/operations/COM_OutputFileOperation.cpp
+++ b/source/blender/compositor/operations/COM_OutputFileOperation.cpp
@@ -215,7 +215,8 @@ OutputSingleLayerOperation::OutputSingleLayerOperation(
const char *path,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName)
+ const char *viewName,
+ const bool saveAsRender)
{
this->m_rd = rd;
this->m_tree = tree;
@@ -232,6 +233,7 @@ OutputSingleLayerOperation::OutputSingleLayerOperation(
this->m_viewSettings = viewSettings;
this->m_displaySettings = displaySettings;
this->m_viewName = viewName;
+ this->m_saveAsRender = saveAsRender;
}
void OutputSingleLayerOperation::initExecution()
@@ -265,7 +267,7 @@ void OutputSingleLayerOperation::deinitExecution()
ibuf->dither = this->m_rd->dither_intensity;
IMB_colormanagement_imbuf_for_write(
- ibuf, true, false, m_viewSettings, m_displaySettings, this->m_format);
+ ibuf, m_saveAsRender, false, m_viewSettings, m_displaySettings, this->m_format);
suffix = BKE_scene_multiview_view_suffix_get(this->m_rd, this->m_viewName);
diff --git a/source/blender/compositor/operations/COM_OutputFileOperation.h b/source/blender/compositor/operations/COM_OutputFileOperation.h
index 915d59599e2..8717683b571 100644
--- a/source/blender/compositor/operations/COM_OutputFileOperation.h
+++ b/source/blender/compositor/operations/COM_OutputFileOperation.h
@@ -44,6 +44,7 @@ class OutputSingleLayerOperation : public NodeOperation {
const ColorManagedDisplaySettings *m_displaySettings;
const char *m_viewName;
+ bool m_saveAsRender;
public:
OutputSingleLayerOperation(const RenderData *rd,
@@ -53,7 +54,8 @@ class OutputSingleLayerOperation : public NodeOperation {
const char *path,
const ColorManagedViewSettings *viewSettings,
const ColorManagedDisplaySettings *displaySettings,
- const char *viewName);
+ const char *viewName,
+ const bool saveAsRender);
void executeRegion(rcti *rect, unsigned int tileNumber);
bool isOutputOperation(bool /*rendering*/) const
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 9e07c3d667b..0f02d2165ac 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -1884,6 +1884,7 @@ static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, Poi
PointerRNA active_input_ptr, op_ptr;
uiLayout *row, *col;
const bool multilayer = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER;
+ const bool is_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR;
const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
node_composit_buts_file_output(layout, C, ptr);
@@ -1991,8 +1992,15 @@ static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, Poi
uiItemL(col, IFACE_("Format:"), ICON_NONE);
uiItemR(col, &active_input_ptr, "use_node_format", DEFAULT_FLAGS, NULL, ICON_NONE);
+ const bool is_socket_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR;
+ const bool use_node_format = RNA_boolean_get(&active_input_ptr, "use_node_format");
+
+ if ((!is_exr && use_node_format) || (!is_socket_exr && !use_node_format)) {
+ uiItemR(col, &active_input_ptr, "save_as_render", DEFAULT_FLAGS, NULL, ICON_NONE);
+ }
+
col = uiLayoutColumn(layout, false);
- uiLayoutSetActive(col, RNA_boolean_get(&active_input_ptr, "use_node_format") == false);
+ uiLayoutSetActive(col, use_node_format == false);
uiTemplateImageSettings(col, &imfptr, false);
if (is_multiview) {
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index fd2c54e7653..3da0409447b 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -735,7 +735,8 @@ typedef struct NodeImageMultiFileSocket {
short use_render_format DNA_DEPRECATED;
/** Use overall node image format. */
short use_node_format;
- char _pad1[4];
+ char save_as_render;
+ char _pad1[3];
/** 1024 = FILE_MAX. */
char path[1024];
ImageFormatData format;
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 41034830390..cf44d8a84be 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -6289,6 +6289,11 @@ static void rna_def_cmp_output_file_slot_file(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Node Format", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, NULL);
+ prop = RNA_def_property(srna, "save_as_render", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "save_as_render", 1);
+ RNA_def_property_ui_text(prop, "Save as Render", "Apply render part of display transform when saving byte image");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, NULL);
+
prop = RNA_def_property(srna, "format", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "ImageFormatSettings");
diff --git a/source/blender/nodes/composite/nodes/node_composite_outputFile.c b/source/blender/nodes/composite/nodes/node_composite_outputFile.c
index 36fc3b4c0a8..c10edd8d5ad 100644
--- a/source/blender/nodes/composite/nodes/node_composite_outputFile.c
+++ b/source/blender/nodes/composite/nodes/node_composite_outputFile.c
@@ -146,6 +146,7 @@ bNodeSocket *ntreeCompositOutputFileAddSocket(bNodeTree *ntree,
}
/* use node data format by default */
sockdata->use_node_format = true;
+ sockdata->save_as_render = true;
nimf->active_input = BLI_findindex(&node->inputs, sock);