[Bf-blender-cvs] [00e012d5644] master: GPencil: Fix colormanagement broken by recent refactor

Clément Foucault noreply at git.blender.org
Wed Feb 12 18:22:07 CET 2020


Commit: 00e012d5644f1d9d4ebb6e20b1065bd1709a9cbd
Author: Clément Foucault
Date:   Wed Feb 12 18:21:53 2020 +0100
Branches: master
https://developer.blender.org/rB00e012d5644f1d9d4ebb6e20b1065bd1709a9cbd

GPencil: Fix colormanagement broken by recent refactor

This is a quick fix that should work until the GPencil refactor lands.

===================================================================

M	source/blender/draw/engines/gpencil/gpencil_draw_utils.c
M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl
M	source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index f270fde0533..d44aa5764b1 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -343,12 +343,12 @@ static void set_wireframe_color(Object *ob,
         color[1] = world->horg;
         color[2] = world->horb;
         color[3] = 1.0f;
-        linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
+        copy_v4_v4(stl->shgroups[id].wire_color, color);
       }
       else {
         copy_v3_v3(color, v3d->shading.background_color);
         color[3] = 1.0f;
-        linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
+        copy_v4_v4(stl->shgroups[id].wire_color, color);
       }
       return;
     }
@@ -363,13 +363,13 @@ static void set_wireframe_color(Object *ob,
           copy_v3_v3(color, v3d->shading.single_color);
         }
         color[3] = 1.0f;
-        linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
+        copy_v4_v4(stl->shgroups[id].wire_color, color);
         break;
       }
       case V3D_SHADING_OBJECT_COLOR: {
         copy_v4_v4(color, ob->color);
         color[3] = 1.0f;
-        linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
+        copy_v4_v4(stl->shgroups[id].wire_color, color);
         break;
       }
       case V3D_SHADING_RANDOM_COLOR: {
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index ce79164a80b..d049abbade5 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -1061,7 +1061,7 @@ void GPENCIL_draw_scene(void *ved)
               GPU_framebuffer_clear_color_depth_stencil(fbl->temp_fb_b, clearcol, 1.0f, 0x0);
               stl->storage->blend_mode = array_elm->mode;
               stl->storage->mask_layer = (int)array_elm->mask_layer;
-              stl->storage->tonemapping = DRW_state_do_color_management() ? 0 : 1;
+              stl->storage->tonemapping = 1;
               DRW_draw_pass(psl->blend_pass);
               stl->storage->tonemapping = 0;
 
@@ -1103,7 +1103,7 @@ void GPENCIL_draw_scene(void *ved)
           GPU_framebuffer_bind(fbl->main);
         }
         /* tonemapping */
-        stl->storage->tonemapping = DRW_state_do_color_management() ? 0 : 1;
+        stl->storage->tonemapping = 1;
 
         /* active select flag and selection color */
         if (!is_render) {
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl
index f75322f90e2..57908f3251b 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl
@@ -13,4 +13,7 @@ void main()
   gl_Position = point_world_to_ndc((gpModelMatrix * vec4(pos, 1.0)).xyz);
   finalColor = color;
   finalThickness = size;
+
+  /* Dirty fix waiting for new GPencil engine. */
+  finalColor.rgb = pow(finalColor.rgb, vec3(2.2));
 }
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
index be645548402..926b11e4083 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
@@ -68,6 +68,8 @@ void main()
       if (check_borders(uv, 2)) {
         FragColor = select_color;
         gl_FragDepth = 0.000001;
+        /* Dirty fix waiting for new GPencil engine. */
+        FragColor.rgb = pow(FragColor.rgb, vec3(2.2));
       }
     }
   }



More information about the Bf-blender-cvs mailing list