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
This commit is contained in:
Brecht Van Lommel
2025-09-20 10:30:41 +02:00
parent 059a3f3568
commit d290ff16c8
13 changed files with 26 additions and 51 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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");
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -109,7 +109,7 @@ struct FileOutputItemsAccessor : public socket_items::SocketItemsAccessorDefault
socket_items::set_item_name_and_make_unique<FileOutputItemsAccessor>(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);
}

View File

@@ -47,8 +47,7 @@ static void node_init(bNodeTree * /*ntree*/, bNode *node)
{
NodeConvertToDisplay *nctd = MEM_callocN<NodeConvertToDisplay>(__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;
}

View File

@@ -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);