[Bf-blender-cvs] [fe327c0970a] draw-colormanagement: Overlay: Put all colors inside draw_common.c for correct colormanagment.

Clément Foucault noreply at git.blender.org
Fri Jan 31 19:41:05 CET 2020


Commit: fe327c0970adba95c6d4d552e6efac4cb1ae841b
Author: Clément Foucault
Date:   Fri Jan 31 18:59:32 2020 +0100
Branches: draw-colormanagement
https://developer.blender.org/rBfe327c0970adba95c6d4d552e6efac4cb1ae841b

Overlay: Put all colors inside draw_common.c for correct colormanagment.

The only exception is for text drawing where the color needs to be sRGB
bytes. This could be fixed in the future.

There are only two hardcoded values remaining but are rather not important:
- object center transform gizmo darkening.
- particle display default color.

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

M	source/blender/draw/engines/overlay/overlay_armature.c
M	source/blender/draw/engines/overlay/overlay_extra.c
M	source/blender/draw/engines/overlay/overlay_metaball.c
M	source/blender/draw/engines/overlay/overlay_motion_path.c
M	source/blender/draw/intern/draw_common.c
M	source/blender/draw/intern/draw_common.h
M	source/blender/draw/intern/shaders/common_globals_lib.glsl

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

diff --git a/source/blender/draw/engines/overlay/overlay_armature.c b/source/blender/draw/engines/overlay/overlay_armature.c
index 416283e321b..bfa843c06e9 100644
--- a/source/blender/draw/engines/overlay/overlay_armature.c
+++ b/source/blender/draw/engines/overlay/overlay_armature.c
@@ -88,26 +88,6 @@ typedef struct ArmatureDrawContext {
 
   OVERLAY_ExtraCallBuffers *extras;
 
-  /**
-   * Follow `TH_*` naming except for mixed colors.
-   */
-  struct {
-    float select[4];
-    float edge_select[4];
-    float bone_select[4]; /* tint */
-    float wire[4];
-    float wire_edit[4];
-    float bone_solid[4];
-    float bone_active_unselect[4]; /* mix */
-    float bone_pose[4];
-    float bone_pose_active[4];
-    float bone_pose_active_unselect[4]; /* mix */
-    float text_hi[4];
-    float text[4];
-    float vertex_select[4];
-    float vertex[4];
-  } color;
-
   /* not a theme, this is an override */
   const float *const_color;
   float const_wire;
@@ -667,31 +647,28 @@ static void drw_shgroup_bone_relationship_lines(ArmatureDrawContext *ctx,
                                                 const float start[3],
                                                 const float end[3])
 {
-  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, ctx->color.wire);
+  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, G_draw.block.colorWire);
 }
 
 static void drw_shgroup_bone_ik_lines(ArmatureDrawContext *ctx,
                                       const float start[3],
                                       const float end[3])
 {
-  float fcolor[4] = {0.8f, 0.5f, 0.0f, 1.0f}; /* add theme! */
-  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, fcolor);
+  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, G_draw.block.colorBoneIKLine);
 }
 
 static void drw_shgroup_bone_ik_no_target_lines(ArmatureDrawContext *ctx,
                                                 const float start[3],
                                                 const float end[3])
 {
-  float fcolor[4] = {0.8f, 0.8f, 0.2f, 1.0f}; /* add theme! */
-  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, fcolor);
+  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, G_draw.block.colorBoneIKLineNoTarget);
 }
 
 static void drw_shgroup_bone_ik_spline_lines(ArmatureDrawContext *ctx,
                                              const float start[3],
                                              const float end[3])
 {
-  float fcolor[4] = {0.8f, 0.8f, 0.2f, 1.0f}; /* add theme! */
-  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, fcolor);
+  drw_shgroup_bone_relationship_lines_ex(ctx, start, end, G_draw.block.colorBoneIKLineSpline);
 }
 
 /** \} */
@@ -708,10 +685,6 @@ enum {
   PCHAN_COLOR_NORMAL = 0, /* normal drawing */
   PCHAN_COLOR_SOLID,      /* specific case where "solid" color is needed */
   PCHAN_COLOR_CONSTS,     /* "constraint" colors (which may/may-not be suppressed) */
-
-  PCHAN_COLOR_SPHEREBONE_BASE, /* for the 'stick' of sphere (envelope) bones */
-  PCHAN_COLOR_SPHEREBONE_END,  /* for the ends of sphere (envelope) bones */
-  PCHAN_COLOR_LINEBONE,        /* for the middle of line-bones */
 };
 
 /* This function sets the color-set for coloring a certain bone */
@@ -796,7 +769,6 @@ static bool set_pchan_color(const ArmatureDrawContext *ctx,
     case PCHAN_COLOR_NORMAL: {
       if (bcolor) {
         uchar cp[4] = {255};
-
         if (boneflag & BONE_DRAW_ACTIVE) {
           copy_v3_v3_uchar(cp, bcolor->active);
           if (!(boneflag & BONE_SELECTED)) {
@@ -811,159 +783,58 @@ static bool set_pchan_color(const ArmatureDrawContext *ctx,
           copy_v3_v3_uchar(cp, bcolor->solid);
           cp_shade_color3ub(cp, -50);
         }
-
         rgb_uchar_to_float(fcolor, cp);
+        /* Meh, hardcoded srgb transform here. */
+        srgb_to_linearrgb_v4(fcolor, fcolor);
       }
       else {
         if ((boneflag & BONE_DRAW_ACTIVE) && (boneflag & BONE_SELECTED)) {
-          UI_GetThemeColor4fv(TH_BONE_POSE_ACTIVE, fcolor);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseActive);
         }
         else if (boneflag & BONE_DRAW_ACTIVE) {
-          UI_GetThemeColorBlendShade4fv(TH_WIRE, TH_BONE_POSE, 0.15f, 0, fcolor);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseActiveUnsel);
         }
         else if (boneflag & BONE_SELECTED) {
-          UI_GetThemeColor4fv(TH_BONE_POSE, fcolor);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePose);
         }
         else {
-          UI_GetThemeColor4fv(TH_WIRE, fcolor);
+          copy_v4_v4(fcolor, G_draw.block.colorWire);
         }
       }
-
       return true;
     }
     case PCHAN_COLOR_SOLID: {
-      UI_GetThemeColor4fv(TH_BONE_SOLID, fcolor);
-
       if (bcolor) {
-        float solid_bcolor[3];
-        rgb_uchar_to_float(solid_bcolor, (uchar *)bcolor->solid);
-        interp_v3_v3v3(fcolor, fcolor, solid_bcolor, 1.0f);
+        rgb_uchar_to_float(fcolor, (uchar *)bcolor->solid);
+        /* Meh, hardcoded srgb transform here. */
+        srgb_to_linearrgb_v4(fcolor, fcolor);
+      }
+      else {
+        copy_v4_v4(fcolor, G_draw.block.colorBoneSolid);
       }
-
       return true;
     }
     case PCHAN_COLOR_CONSTS: {
       if ((bcolor == NULL) || (bcolor->flag & TH_WIRECOLOR_CONSTCOLS)) {
-        uchar cp[4];
         if (constflag & PCHAN_HAS_TARGET) {
-          rgba_uchar_args_set(cp, 255, 150, 0, 80);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseTarget);
         }
         else if (constflag & PCHAN_HAS_IK) {
-          rgba_uchar_args_set(cp, 255, 255, 0, 80);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseIK);
         }
         else if (constflag & PCHAN_HAS_SPLINEIK) {
-          rgba_uchar_args_set(cp, 200, 255, 0, 80);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseSplineIK);
         }
         else if (constflag & PCHAN_HAS_CONST) {
-          rgba_uchar_args_set(cp, 0, 255, 120, 80);
+          copy_v4_v4(fcolor, G_draw.block.colorBonePoseConstraint);
         }
         else {
           return false;
         }
-
-        rgba_uchar_to_float(fcolor, cp);
-
         return true;
       }
       return false;
     }
-    case PCHAN_COLOR_SPHEREBONE_BASE: {
-      if (bcolor) {
-        uchar cp[4] = {255};
-
-        if (boneflag & BONE_DRAW_ACTIVE) {
-          copy_v3_v3_uchar(cp, bcolor->active);
-        }
-        else if (boneflag & BONE_SELECTED) {
-          copy_v3_v3_uchar(cp, bcolor->select);
-        }
-        else {
-          copy_v3_v3_uchar(cp, bcolor->solid);
-        }
-
-        rgb_uchar_to_float(fcolor, cp);
-      }
-      else {
-        if (boneflag & BONE_DRAW_ACTIVE) {
-          UI_GetThemeColorShade4fv(TH_BONE_POSE, 40, fcolor);
-        }
-        else if (boneflag & BONE_SELECTED) {
-          UI_GetThemeColor4fv(TH_BONE_POSE, fcolor);
-        }
-        else {
-          UI_GetThemeColor4fv(TH_BONE_SOLID, fcolor);
-        }
-      }
-
-      return true;
-    }
-    case PCHAN_COLOR_SPHEREBONE_END: {
-      if (bcolor) {
-        uchar cp[4] = {255};
-
-        if (boneflag & BONE_DRAW_ACTIVE) {
-          copy_v3_v3_uchar(cp, bcolor->active);
-          cp_shade_color3ub(cp, 10);
-        }
-        else if (boneflag & BONE_SELECTED) {
-          copy_v3_v3_uchar(cp, bcolor->select);
-          cp_shade_color3ub(cp, -30);
-        }
-        else {
-          copy_v3_v3_uchar(cp, bcolor->solid);
-          cp_shade_color3ub(cp, -30);
-        }
-
-        rgb_uchar_to_float(fcolor, cp);
-      }
-      else {
-        if (boneflag & BONE_DRAW_ACTIVE) {
-          UI_GetThemeColorShade4fv(TH_BONE_POSE, 10, fcolor);
-        }
-        else if (boneflag & BONE_SELECTED) {
-          UI_GetThemeColorShade4fv(TH_BONE_POSE, -30, fcolor);
-        }
-        else {
-          UI_GetThemeColorShade4fv(TH_BONE_SOLID, -30, fcolor);
-        }
-      }
-      break;
-    }
-    case PCHAN_COLOR_LINEBONE: {
-      /* inner part in background color or constraint */
-      if ((constflag) && ((bcolor == NULL) || (bcolor->flag & TH_WIRECOLOR_CONSTCOLS))) {
-        uchar cp[4];
-        if (constflag & PCHAN_HAS_TARGET) {
-          rgba_uchar_args_set(cp, 255, 150, 0, 255);
-        }
-        else if (constflag & PCHAN_HAS_IK) {
-          rgba_uchar_args_set(cp, 255, 255, 0, 255);
-        }
-        else if (constflag & PCHAN_HAS_SPLINEIK) {
-          rgba_uchar_args_set(cp, 200, 255, 0, 255);
-        }
-        else if (constflag & PCHAN_HAS_CONST) {
-          rgba_uchar_args_set(cp, 0, 255, 120, 255);
-        }
-        else if (constflag) {
-          UI_GetThemeColor4ubv(TH_BONE_POSE, cp);
-        } /* PCHAN_HAS_ACTION */
-
-        rgb_uchar_to_float(fcolor, cp);
-      }
-      else {
-        if (bcolor) {
-          const uchar *cp = bcolor->solid;
-          rgb_uchar_to_float(fcolor, (uchar *)cp);
-          fcolor[3] = 204.f / 255.f;
-        }
-        else {
-          UI_GetThemeColorShade4fv(TH_BACK, -30, fcolor);
-        }
-      }
-
-      return true;
-    }
   }
 
   return false;
@@ -977,9 +848,7 @@ static bool set_pchan_color(const ArmatureDrawContext *ctx,
 
 static void bone_locked_color_shade(float color[4])
 {
-  float locked_color[4];
-
-  UI_GetThemeColor4fv(TH_BONE_LOCKED_WEIGHT, locked_color);
+  float *locked_color = G_draw.block.colorBoneLocked;
 
   interp_v3_v3v3(color, color, locked_color, locked_color[3]);
 }
@@ -992,7 +861,7 @@ static const float *get_bone_solid_color(const ArmatureDrawContext *ctx,
                                          const short constflag)
 {
   if (ctx->const_color) {
-    return ctx->color.bone_solid;
+    return G_draw.block.colorBoneSolid;
   }
 
   if (arm->flag & ARM_POSEMODE) {
@@ -1007,7 +876,7 @@ static const float *get_bone_solid_color(const ArmatureDrawContext *ctx,
     return disp_color;
   }
 
-  return ctx->color.bone_solid;
+  return G_draw.block.colorBoneSolid;
 }
 
 static const float *get_bone_solid_with_consts_color(const ArmatureDrawContext *ctx,
@@ -1018,7 +887,7 @@ static const float *get_bone_solid_with_consts_color(const ArmatureDrawContext *
                                                      const short constflag)
 {
   if (ctx->const_color) {
-    return ctx->color.b

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list