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:
authorJeroen Bakker <j.bakker@atmind.nl>2019-05-21 13:00:48 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-05-31 13:44:18 +0300
commit23064248d7a08d01061e108972985a11997f046c (patch)
treee64356ca66a809b64b716bca535fb09e86dbaaa4 /source/blender/draw/intern/draw_manager.c
parentd0fb602e2c365025131c782c1bc9b7d60013a678 (diff)
DrawManager: Color Management
The draw manager used to determine if the view transform should be applied by checking if the scene was not rendered to an offscreen image. As the sequencer and texture painting needs to render to an offscreen image with the view transform applied we need to separate the `do_color_management` from the `is_image_render`. Reviewed By: fclem Maniphest Tasks: T64849 Differential Revision: https://developer.blender.org/D4909
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r--source/blender/draw/intern/draw_manager.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 10e9b8fbdf0..6428eb77ddb 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -298,8 +298,8 @@ void DRW_transform_to_display(GPUTexture *tex, bool use_view_transform, bool use
bool use_ocio = false;
- /* View transform is already applied for offscreen, don't apply again, see: T52046 */
- if (!(DST.options.is_image_render && !DST.options.is_scene_render)) {
+ /* Should we apply the view transform */
+ if (DRW_state_do_color_management()) {
Scene *scene = DST.draw_ctx.scene;
ColorManagedDisplaySettings *display_settings = &scene->display_settings;
ColorManagedViewSettings view_settings;
@@ -1558,6 +1558,7 @@ void DRW_draw_view(const bContext *C)
(v3d->overlay.flag & V3D_OVERLAY_HIDE_TEXT) != 0);
DST.options.draw_background = (scene->r.alphamode == R_ADDSKY) ||
(v3d->shading.type != OB_RENDER);
+ DST.options.do_color_management = true;
DRW_draw_render_loop_ex(depsgraph, engine_type, ar, v3d, viewport, C);
}
@@ -1819,9 +1820,8 @@ void DRW_draw_render_loop_offscreen(struct Depsgraph *depsgraph,
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
- /* WATCH: Force color management to output CManaged byte buffer by
- * forcing is_image_render to false. */
- DST.options.is_image_render = !do_color_management;
+ DST.options.is_image_render = true;
+ DST.options.do_color_management = do_color_management;
DST.options.draw_background = draw_background;
DRW_draw_render_loop_ex(depsgraph, engine_type, ar, v3d, render_viewport, NULL);
@@ -2987,6 +2987,14 @@ bool DRW_state_is_image_render(void)
}
/**
+ * Whether the view transform should be applied.
+ */
+bool DRW_state_do_color_management(void)
+{
+ return DST.options.do_color_management;
+}
+
+/**
* Whether we are rendering only the render engine,
* or if we should also render the mode engines.
*/