diff options
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 18 |
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. */ |