From d290ff16c8f646b60d19cfad785ad62dc314d573 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 20 Sep 2025 10:30:41 +0200 Subject: [PATCH] Color Management: Simplify image format initialization No need to have a not for render case, these settings are only used when Save as Render or Override are on and in that case it make sense to match the default render view transform. Ref #144911 Pull Request: https://projects.blender.org/blender/blender/pulls/146487 --- source/blender/blenkernel/BKE_colortools.hh | 18 ++++-------------- source/blender/blenkernel/BKE_image_format.hh | 2 +- source/blender/blenkernel/intern/colortools.cc | 13 +++---------- .../blender/blenkernel/intern/image_format.cc | 12 +++--------- source/blender/blenkernel/intern/image_save.cc | 2 +- source/blender/blenkernel/intern/scene.cc | 7 +++---- .../blenloader/intern/versioning_260.cc | 2 +- .../blenloader/intern/versioning_280.cc | 8 ++++---- .../draw/intern/draw_color_management.cc | 4 ++-- source/blender/editors/screen/screendump.cc | 2 +- .../include/NOD_compositor_file_output.hh | 2 +- .../nodes/node_composite_convert_to_display.cc | 3 +-- .../nodes/node_composite_file_output.cc | 2 +- 13 files changed, 26 insertions(+), 51 deletions(-) diff --git a/source/blender/blenkernel/BKE_colortools.hh b/source/blender/blenkernel/BKE_colortools.hh index ba0a16d0dc7..70302e781a9 100644 --- a/source/blender/blenkernel/BKE_colortools.hh +++ b/source/blender/blenkernel/BKE_colortools.hh @@ -190,21 +190,11 @@ void BKE_color_managed_display_settings_copy(ColorManagedDisplaySettings *new_se const ColorManagedDisplaySettings *settings); /** - * Initialize view settings to be best suitable for render type of viewing. - * This will use default view transform from the OCIO configuration if none - * is specified. + * Initialize view settings to the default. */ -void BKE_color_managed_view_settings_init_render( - ColorManagedViewSettings *view_settings, - const ColorManagedDisplaySettings *display_settings, - const char *view_transform); - -/** - * Initialize view settings which are best suitable for viewing non-render images. - * For example,s movie clips while tracking. - */ -void BKE_color_managed_view_settings_init_untonemapped( - ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings); +void BKE_color_managed_view_settings_init(ColorManagedViewSettings *view_settings, + const ColorManagedDisplaySettings *display_settings, + const char *view_transform); void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings); diff --git a/source/blender/blenkernel/BKE_image_format.hh b/source/blender/blenkernel/BKE_image_format.hh index be1f682180b..b6f8687f62d 100644 --- a/source/blender/blenkernel/BKE_image_format.hh +++ b/source/blender/blenkernel/BKE_image_format.hh @@ -23,7 +23,7 @@ struct RenderData; /* Init/Copy/Free */ -void BKE_image_format_init(ImageFormatData *imf, const bool render); +void BKE_image_format_init(ImageFormatData *imf); void BKE_image_format_copy(ImageFormatData *imf_dst, const ImageFormatData *imf_src); void BKE_image_format_free(ImageFormatData *imf); diff --git a/source/blender/blenkernel/intern/colortools.cc b/source/blender/blenkernel/intern/colortools.cc index bb39b3f9fe8..3da73171e45 100644 --- a/source/blender/blenkernel/intern/colortools.cc +++ b/source/blender/blenkernel/intern/colortools.cc @@ -1881,10 +1881,9 @@ void BKE_color_managed_display_settings_copy(ColorManagedDisplaySettings *new_se STRNCPY_UTF8(new_settings->display_device, settings->display_device); } -void BKE_color_managed_view_settings_init_render( - ColorManagedViewSettings *view_settings, - const ColorManagedDisplaySettings *display_settings, - const char *view_transform) +void BKE_color_managed_view_settings_init(ColorManagedViewSettings *view_settings, + const ColorManagedDisplaySettings *display_settings, + const char *view_transform) { const ColorManagedDisplay *display = IMB_colormanagement_display_get_named( display_settings->display_device); @@ -1907,12 +1906,6 @@ void BKE_color_managed_view_settings_init_render( IMB_colormanagement_validate_settings(display_settings, view_settings); } -void BKE_color_managed_view_settings_init_untonemapped( - ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings) -{ - IMB_colormanagement_init_untonemapped_view_settings(view_settings, display_settings); -} - void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings) { diff --git a/source/blender/blenkernel/intern/image_format.cc b/source/blender/blenkernel/intern/image_format.cc index 56702b846de..7dd7ab73eb0 100644 --- a/source/blender/blenkernel/intern/image_format.cc +++ b/source/blender/blenkernel/intern/image_format.cc @@ -28,19 +28,13 @@ namespace path_templates = blender::bke::path_templates; /* Init/Copy/Free */ -void BKE_image_format_init(ImageFormatData *imf, const bool render) +void BKE_image_format_init(ImageFormatData *imf) { *imf = *DNA_struct_default_get(ImageFormatData); BKE_color_managed_display_settings_init(&imf->display_settings); - if (render) { - BKE_color_managed_view_settings_init_render( - &imf->view_settings, &imf->display_settings, "Filmic"); - } - else { - BKE_color_managed_view_settings_init_untonemapped(&imf->view_settings, &imf->display_settings); - } + BKE_color_managed_view_settings_init(&imf->view_settings, &imf->display_settings, "AgX"); BKE_color_managed_colorspace_settings_init(&imf->linear_colorspace_settings); } @@ -931,7 +925,7 @@ void BKE_image_format_from_imbuf(ImageFormatData *im_format, const ImBuf *imbuf) char quality = imbuf->foptions.quality; bool is_depth_set = false; - BKE_image_format_init(im_format, false); + BKE_image_format_init(im_format); im_format->media_type = MEDIA_TYPE_IMAGE; /* file type */ diff --git a/source/blender/blenkernel/intern/image_save.cc b/source/blender/blenkernel/intern/image_save.cc index 4f252c1b979..7db56bba196 100644 --- a/source/blender/blenkernel/intern/image_save.cc +++ b/source/blender/blenkernel/intern/image_save.cc @@ -69,7 +69,7 @@ bool BKE_image_save_options_init(ImageSaveOptions *opts, opts->scene = scene; opts->save_as_render = ima->source == IMA_SRC_VIEWER || save_as_render; - BKE_image_format_init(&opts->im_format, false); + BKE_image_format_init(&opts->im_format); void *lock; ImBuf *ibuf = BKE_image_acquire_ibuf(ima, iuser, &lock); diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index a736e28c5be..40a061d0a57 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -229,12 +229,11 @@ static void scene_init_data(ID *id) colorspace_name = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_DEFAULT_SEQUENCER); BKE_color_managed_display_settings_init(&scene->display_settings); - BKE_color_managed_view_settings_init_render( - &scene->view_settings, &scene->display_settings, "AgX"); + BKE_color_managed_view_settings_init(&scene->view_settings, &scene->display_settings, "AgX"); STRNCPY_UTF8(scene->sequencer_colorspace_settings.name, colorspace_name); - BKE_image_format_init(&scene->r.im_format, true); - BKE_image_format_init(&scene->r.bake.im_format, true); + BKE_image_format_init(&scene->r.im_format); + BKE_image_format_init(&scene->r.bake.im_format); /* Curve Profile */ scene->toolsettings->custom_bevel_profile_preset = BKE_curveprofile_add(PROF_PRESET_LINE); diff --git a/source/blender/blenloader/intern/versioning_260.cc b/source/blender/blenloader/intern/versioning_260.cc index b5fdddc7237..8ccd54e2340 100644 --- a/source/blender/blenloader/intern/versioning_260.cc +++ b/source/blender/blenloader/intern/versioning_260.cc @@ -347,7 +347,7 @@ static bNodeSocket *ntreeCompositOutputFileAddSocket(bNodeTree *ntree, } } else { - BKE_image_format_init(&sockdata->format, false); + BKE_image_format_init(&sockdata->format); } BKE_image_format_update_color_space_for_type(&sockdata->format); diff --git a/source/blender/blenloader/intern/versioning_280.cc b/source/blender/blenloader/intern/versioning_280.cc index a6ca2c95d6a..9db5400f40d 100644 --- a/source/blender/blenloader/intern/versioning_280.cc +++ b/source/blender/blenloader/intern/versioning_280.cc @@ -4847,15 +4847,15 @@ void blo_do_versions_280(FileData *fd, Library * /*lib*/, Main *bmain) * properly initialized previously. This is mere copy of #scene_init_data code. */ if (scene->r.im_format.view_settings.look[0] == '\0') { BKE_color_managed_display_settings_init(&scene->r.im_format.display_settings); - BKE_color_managed_view_settings_init_render( + BKE_color_managed_view_settings_init( &scene->r.im_format.view_settings, &scene->r.im_format.display_settings, "Filmic"); } if (scene->r.bake.im_format.view_settings.look[0] == '\0') { BKE_color_managed_display_settings_init(&scene->r.bake.im_format.display_settings); - BKE_color_managed_view_settings_init_render(&scene->r.bake.im_format.view_settings, - &scene->r.bake.im_format.display_settings, - "Filmic"); + BKE_color_managed_view_settings_init(&scene->r.bake.im_format.view_settings, + &scene->r.bake.im_format.display_settings, + "Filmic"); } } } diff --git a/source/blender/draw/intern/draw_color_management.cc b/source/blender/draw/intern/draw_color_management.cc index 6d6e25b4155..c3b6f8a7396 100644 --- a/source/blender/draw/intern/draw_color_management.cc +++ b/source/blender/draw/intern/draw_color_management.cc @@ -129,13 +129,13 @@ static void viewport_settings_apply(GPUViewport &viewport, case eDRWColorManagementType::ViewTransform: { /* For workbench use only default view transform in configuration, * using no scene settings. */ - BKE_color_managed_view_settings_init_render(&view_settings, display_settings, nullptr); + BKE_color_managed_view_settings_init(&view_settings, display_settings, nullptr); break; } case eDRWColorManagementType::ViewTransformAndLook: { /* Use only view transform + look and nothing else for lookdev without * scene lighting, as exposure depends on scene light intensity. */ - BKE_color_managed_view_settings_init_render(&view_settings, display_settings, nullptr); + BKE_color_managed_view_settings_init(&view_settings, display_settings, nullptr); STRNCPY_UTF8(view_settings.view_transform, scene.view_settings.view_transform); STRNCPY_UTF8(view_settings.look, scene.view_settings.look); break; diff --git a/source/blender/editors/screen/screendump.cc b/source/blender/editors/screen/screendump.cc index bd099b356ce..758ca22f051 100644 --- a/source/blender/editors/screen/screendump.cc +++ b/source/blender/editors/screen/screendump.cc @@ -75,7 +75,7 @@ static int screenshot_data_create(bContext *C, wmOperator *op, ScrArea *area) scd->crop = area->totrct; } - BKE_image_format_init(&scd->im_format, false); + BKE_image_format_init(&scd->im_format); op->customdata = scd; diff --git a/source/blender/nodes/composite/include/NOD_compositor_file_output.hh b/source/blender/nodes/composite/include/NOD_compositor_file_output.hh index e7a766ef03c..c81eca2c372 100644 --- a/source/blender/nodes/composite/include/NOD_compositor_file_output.hh +++ b/source/blender/nodes/composite/include/NOD_compositor_file_output.hh @@ -109,7 +109,7 @@ struct FileOutputItemsAccessor : public socket_items::SocketItemsAccessorDefault socket_items::set_item_name_and_make_unique(node, item, name); item.save_as_render = true; - BKE_image_format_init(&item.format, false); + BKE_image_format_init(&item.format); BKE_image_format_update_color_space_for_type(&item.format); } diff --git a/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc b/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc index cbc46a16688..09ac54229e2 100644 --- a/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc +++ b/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc @@ -47,8 +47,7 @@ static void node_init(bNodeTree * /*ntree*/, bNode *node) { NodeConvertToDisplay *nctd = MEM_callocN(__func__); BKE_color_managed_display_settings_init(&nctd->display_settings); - BKE_color_managed_view_settings_init_render( - &nctd->view_settings, &nctd->display_settings, nullptr); + BKE_color_managed_view_settings_init(&nctd->view_settings, &nctd->display_settings, nullptr); nctd->view_settings.flag |= COLORMANAGE_VIEW_ONLY_VIEW_LOOK; node->storage = nctd; } diff --git a/source/blender/nodes/composite/nodes/node_composite_file_output.cc b/source/blender/nodes/composite/nodes/node_composite_file_output.cc index efef8268e87..b99386d66cd 100644 --- a/source/blender/nodes/composite/nodes/node_composite_file_output.cc +++ b/source/blender/nodes/composite/nodes/node_composite_file_output.cc @@ -112,7 +112,7 @@ static void node_init(const bContext *C, PointerRNA *node_pointer) data->save_as_render = true; data->file_name = BLI_strdup("file_name"); - BKE_image_format_init(&data->format, false); + BKE_image_format_init(&data->format); BKE_image_format_media_type_set( &data->format, node_pointer->owner_id, MEDIA_TYPE_MULTI_LAYER_IMAGE); BKE_image_format_update_color_space_for_type(&data->format);