diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-02-13 20:12:28 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-02-13 20:12:28 +0300 |
commit | b6572c5430c570130c6f6aec92522fdf9df6365a (patch) | |
tree | 2086c135d5e0962e02f95d0727e5a0cc343e6dde | |
parent | d46273563e684bf8445369bd03752ceebf26e1ec (diff) |
DRW: Fix color management in material/rendered mode
We only do exposure/gamma if not using scene lighting
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 2092be254fa..f354db8e4ed 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -282,8 +282,20 @@ static void drw_viewport_colormanagement_set(void) ColorManagedViewSettings view_settings; float dither = 0.0f; - bool use_render_settings = v3d && (v3d->shading.type == OB_RENDER); + /* TODO(fclem) This should be a render engine callback to determine if we need CM or not. */ + bool use_workbench = BKE_scene_uses_blender_workbench(scene); + + bool use_scene_lights = (!v3d || + ((v3d->shading.type == OB_MATERIAL) && + (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS)) || + ((v3d->shading.type == OB_RENDER) && + (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS_RENDER))); + bool use_scene_world = + (!v3d || + ((v3d->shading.type == OB_MATERIAL) && (v3d->shading.flag & V3D_SHADING_SCENE_WORLD)) || + ((v3d->shading.type == OB_RENDER) && (v3d->shading.flag & V3D_SHADING_SCENE_WORLD_RENDER))); bool use_view_transform = v3d && (v3d->shading.type >= OB_MATERIAL); + bool use_render_settings = v3d && (use_workbench || use_scene_lights || use_scene_world); if (use_render_settings) { /* Use full render settings, for renders with scene lighting. */ |