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--release/datafiles/colormanagement/config.ocio2
-rw-r--r--source/blender/blenkernel/BKE_colortools.h6
-rw-r--r--source/blender/blenkernel/intern/colortools.c17
-rw-r--r--source/blender/blenkernel/intern/scene.c3
-rw-r--r--source/blender/blenloader/intern/versioning_defaults.c1
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c24
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h2
-rw-r--r--source/blender/draw/engines/workbench/workbench_data.c6
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_aa.c2
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h2
-rw-r--r--source/blender/draw/intern/DRW_render.h2
-rw-r--r--source/blender/draw/intern/draw_manager.c27
-rw-r--r--source/blender/imbuf/IMB_colormanagement.h2
-rw-r--r--source/blender/imbuf/intern/colormanagement.c2
14 files changed, 57 insertions, 41 deletions
diff --git a/release/datafiles/colormanagement/config.ocio b/release/datafiles/colormanagement/config.ocio
index 411af8ebdf2..e9663382b04 100644
--- a/release/datafiles/colormanagement/config.ocio
+++ b/release/datafiles/colormanagement/config.ocio
@@ -70,7 +70,7 @@ displays:
- !<View> {name: Default, colorspace: Raw}
active_displays: [sRGB, DCIP3, Rec709, XYZ, None]
-active_views: [Filmic, Default, RRT, Raw, Log]
+active_views: [Default, Filmic, RRT, Raw, Log]
colorspaces:
- !<ColorSpace>
diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index 49508fee05c..15015eb85e0 100644
--- a/source/blender/blenkernel/BKE_colortools.h
+++ b/source/blender/blenkernel/BKE_colortools.h
@@ -94,10 +94,12 @@ void BKE_color_managed_display_settings_copy(
const struct ColorManagedDisplaySettings *settings);
/* Initialize view settings to be best suitable for render type of viewing.
- * This will use default view transform from the OCIO configuration. */
+ * This will use default view transform from the OCIO configuration if none
+ * is specified. */
void BKE_color_managed_view_settings_init_render(
struct ColorManagedViewSettings *settings,
- const struct ColorManagedDisplaySettings *display_settings);
+ const struct 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. */
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 8f05634322a..487468b1c61 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -1574,23 +1574,28 @@ void BKE_color_managed_display_settings_copy(ColorManagedDisplaySettings *new_se
void BKE_color_managed_view_settings_init_render(
ColorManagedViewSettings *view_settings,
- const ColorManagedDisplaySettings *display_settings)
+ const ColorManagedDisplaySettings *display_settings,
+ const char *view_transform)
{
struct ColorManagedDisplay *display =
IMB_colormanagement_display_get_named(
display_settings->display_device);
- BLI_strncpy(
- view_settings->view_transform,
- IMB_colormanagement_display_get_default_view_transform_name(display),
- sizeof(view_settings->view_transform));
+
+ if (!view_transform) {
+ view_transform = IMB_colormanagement_display_get_default_view_transform_name(display);
+ }
+
/* TODO(sergey): Find a way to make look query more reliable with non
* default configuration. */
- BLI_strncpy(view_settings->look, "None", sizeof(view_settings->look));
+ STRNCPY(view_settings->view_transform, view_transform);
+ STRNCPY(view_settings->look, "None");
view_settings->flag = 0;
view_settings->gamma = 1.0f;
view_settings->exposure = 0.0f;
view_settings->curve_mapping = NULL;
+
+ IMB_colormanagement_validate_settings(display_settings, view_settings);
}
void BKE_color_managed_view_settings_init_default(
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 618b2f94812..9c7a911e478 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -773,7 +773,8 @@ void BKE_scene_init(Scene *sce)
BKE_color_managed_display_settings_init(&sce->display_settings);
BKE_color_managed_view_settings_init_render(&sce->view_settings,
- &sce->display_settings);
+ &sce->display_settings,
+ "Filmic");
BLI_strncpy(sce->sequencer_colorspace_settings.name, colorspace_name,
sizeof(sce->sequencer_colorspace_settings.name));
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index 22c58c9e479..bfb236b0167 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -301,6 +301,7 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
if (app_template && STREQ(app_template, "Video_Editing")) {
/* Filmic is too slow, use default until it is optimized. */
STRNCPY(scene->view_settings.view_transform, "Default");
+ STRNCPY(scene->view_settings.look, "None");
}
else {
/* AV Sync break physics sim caching, disable until that is fixed. */
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index cea89f531ac..6120a036deb 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -53,7 +53,7 @@ static void eevee_engine_init(void *ved)
/* Alloc transient pointers */
stl->g_data = MEM_callocN(sizeof(*stl->g_data), __func__);
}
- stl->g_data->use_color_view_settings = USE_SCENE_LIGHT(v3d) || !LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d);
+ stl->g_data->use_color_render_settings = USE_SCENE_LIGHT(v3d) || !LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d);
stl->g_data->background_alpha = DRW_state_draw_background() ? 1.0f : 0.0f;
stl->g_data->valid_double_buffer = (txl->color_double_buffer != NULL);
stl->g_data->valid_taa_history = (txl->taa_history != NULL);
@@ -308,39 +308,39 @@ static void eevee_draw_background(void *vedata)
/* Tonemapping and transfer result to default framebuffer. */
- bool use_view_settings = stl->g_data->use_color_view_settings;
+ bool use_render_settings = stl->g_data->use_color_render_settings;
GPU_framebuffer_bind(dfbl->default_fb);
- DRW_transform_to_display(stl->effects->final_tx, use_view_settings);
+ DRW_transform_to_display(stl->effects->final_tx, true, use_render_settings);
/* Debug : Output buffer to view. */
switch (G.debug_value) {
case 1:
- if (txl->maxzbuffer) DRW_transform_to_display(txl->maxzbuffer, use_view_settings);
+ if (txl->maxzbuffer) DRW_transform_to_display(txl->maxzbuffer, false, false);
break;
case 2:
- if (effects->ssr_pdf_output) DRW_transform_to_display(effects->ssr_pdf_output, use_view_settings);
+ if (effects->ssr_pdf_output) DRW_transform_to_display(effects->ssr_pdf_output, false, false);
break;
case 3:
- if (effects->ssr_normal_input) DRW_transform_to_display(effects->ssr_normal_input, use_view_settings);
+ if (effects->ssr_normal_input) DRW_transform_to_display(effects->ssr_normal_input, false, false);
break;
case 4:
- if (effects->ssr_specrough_input) DRW_transform_to_display(effects->ssr_specrough_input, use_view_settings);
+ if (effects->ssr_specrough_input) DRW_transform_to_display(effects->ssr_specrough_input, false, false);
break;
case 5:
- if (txl->color_double_buffer) DRW_transform_to_display(txl->color_double_buffer, use_view_settings);
+ if (txl->color_double_buffer) DRW_transform_to_display(txl->color_double_buffer, false, false);
break;
case 6:
- if (effects->gtao_horizons_debug) DRW_transform_to_display(effects->gtao_horizons_debug, use_view_settings);
+ if (effects->gtao_horizons_debug) DRW_transform_to_display(effects->gtao_horizons_debug, false, false);
break;
case 7:
- if (effects->gtao_horizons) DRW_transform_to_display(effects->gtao_horizons, use_view_settings);
+ if (effects->gtao_horizons) DRW_transform_to_display(effects->gtao_horizons, false, false);
break;
case 8:
- if (effects->sss_data) DRW_transform_to_display(effects->sss_data, use_view_settings);
+ if (effects->sss_data) DRW_transform_to_display(effects->sss_data, false, false);
break;
case 9:
- if (effects->velocity_tx) DRW_transform_to_display(effects->velocity_tx, use_view_settings);
+ if (effects->velocity_tx) DRW_transform_to_display(effects->velocity_tx, false, false);
break;
default:
break;
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index df107e55fff..d2e38f4a3ce 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -815,7 +815,7 @@ typedef struct EEVEE_PrivateData {
float mist_start, mist_inv_dist, mist_falloff;
/* Color Management */
- bool use_color_view_settings;
+ bool use_color_render_settings;
} EEVEE_PrivateData; /* Transient data */
/* eevee_data.c */
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
index d3fde2dd26a..998b70831ea 100644
--- a/source/blender/draw/engines/workbench/workbench_data.c
+++ b/source/blender/draw/engines/workbench/workbench_data.c
@@ -42,17 +42,17 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
View3D *v3d = draw_ctx->v3d;
if (!v3d) {
wpd->shading = scene->display.shading;
- wpd->use_color_view_settings = true;
+ wpd->use_color_render_settings = true;
}
else if (v3d->shading.type == OB_RENDER &&
BKE_scene_uses_blender_workbench(scene))
{
wpd->shading = scene->display.shading;
- wpd->use_color_view_settings = true;
+ wpd->use_color_render_settings = true;
}
else {
wpd->shading = v3d->shading;
- wpd->use_color_view_settings = false;
+ wpd->use_color_render_settings = false;
}
if (wpd->shading.light == V3D_LIGHTING_MATCAP) {
diff --git a/source/blender/draw/engines/workbench/workbench_effect_aa.c b/source/blender/draw/engines/workbench/workbench_effect_aa.c
index 04907ea5523..27bec676836 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_aa.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_aa.c
@@ -61,7 +61,7 @@ static void workspace_aa_draw_transform(GPUTexture *tx, WORKBENCH_PrivateData *w
}
else {
/* Display space result for viewport. */
- DRW_transform_to_display(tx, wpd->use_color_view_settings);
+ DRW_transform_to_display(tx, wpd->use_color_render_settings, wpd->use_color_render_settings);
}
}
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index d203932bec5..2cd80d202f6 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -252,7 +252,7 @@ typedef struct WORKBENCH_PrivateData {
bool dof_enabled;
/* Color Management */
- bool use_color_view_settings;
+ bool use_color_render_settings;
} WORKBENCH_PrivateData; /* Transient data */
typedef struct WORKBENCH_EffectInfo {
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index e0fe0e9a14e..4740879928c 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -232,7 +232,7 @@ void DRW_uniformbuffer_free(struct GPUUniformBuffer *ubo);
} \
} while (0)
-void DRW_transform_to_display(struct GPUTexture *tex, bool use_view_settings);
+void DRW_transform_to_display(struct GPUTexture *tex, bool use_view_transform, bool use_render_settings);
void DRW_transform_none(struct GPUTexture *tex);
void DRW_multisamples_resolve(
struct GPUTexture *src_depth, struct GPUTexture *src_color, bool use_depth);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 51490c5feb6..2daeccdd572 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -256,7 +256,7 @@ struct DupliObject *DRW_object_get_dupli(const Object *UNUSED(ob))
* \{ */
/* Use color management profile to draw texture to framebuffer */
-void DRW_transform_to_display(GPUTexture *tex, bool use_view_settings)
+void DRW_transform_to_display(GPUTexture *tex, bool use_view_transform, bool use_render_settings)
{
drw_state_set(DRW_STATE_WRITE_COLOR);
@@ -272,19 +272,26 @@ void DRW_transform_to_display(GPUTexture *tex, bool use_view_settings)
if (!(DST.options.is_image_render && !DST.options.is_scene_render)) {
Scene *scene = DST.draw_ctx.scene;
ColorManagedDisplaySettings *display_settings = &scene->display_settings;
- ColorManagedViewSettings *active_view_settings;
- ColorManagedViewSettings default_view_settings;
- if (use_view_settings) {
- active_view_settings = &scene->view_settings;
+ ColorManagedViewSettings view_settings;
+ if (use_render_settings) {
+ /* Use full render settings, for renders with scene lighting. */
+ view_settings = scene->view_settings;
+ }
+ else if (use_view_transform) {
+ /* 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, NULL);
+ STRNCPY(view_settings.view_transform, scene->view_settings.view_transform);
+ STRNCPY(view_settings.look, scene->view_settings.look);
}
else {
- BKE_color_managed_view_settings_init_render(
- &default_view_settings,
- display_settings);
- active_view_settings = &default_view_settings;
+ /* For workbench use only default view transform in configuration,
+ * using no scene settings. */
+ BKE_color_managed_view_settings_init_render(&view_settings, display_settings, NULL);
}
+
use_ocio = IMB_colormanagement_setup_glsl_draw_from_space(
- active_view_settings, display_settings, NULL, dither, false);
+ &view_settings, display_settings, NULL, dither, false);
}
if (!use_ocio) {
diff --git a/source/blender/imbuf/IMB_colormanagement.h b/source/blender/imbuf/IMB_colormanagement.h
index e5d8fb7f27e..3d41352f9fe 100644
--- a/source/blender/imbuf/IMB_colormanagement.h
+++ b/source/blender/imbuf/IMB_colormanagement.h
@@ -47,7 +47,7 @@ struct ColorSpace;
void IMB_colormanagement_check_file_config(struct Main *bmain);
-void IMB_colormanagement_validate_settings(struct ColorManagedDisplaySettings *display_settings,
+void IMB_colormanagement_validate_settings(const struct ColorManagedDisplaySettings *display_settings,
struct ColorManagedViewSettings *view_settings);
const char *IMB_colormanagement_role_colorspace_name_get(int role);
diff --git a/source/blender/imbuf/intern/colormanagement.c b/source/blender/imbuf/intern/colormanagement.c
index c2fb5e55bcb..27bc28664d9 100644
--- a/source/blender/imbuf/intern/colormanagement.c
+++ b/source/blender/imbuf/intern/colormanagement.c
@@ -1168,7 +1168,7 @@ void IMB_colormanagement_check_file_config(Main *bmain)
}
}
-void IMB_colormanagement_validate_settings(ColorManagedDisplaySettings *display_settings,
+void IMB_colormanagement_validate_settings(const ColorManagedDisplaySettings *display_settings,
ColorManagedViewSettings *view_settings)
{
ColorManagedDisplay *display;