[Bf-blender-cvs] [d0493796a6f] master: Cleanup: Remove hardcoded values and rename keyframe shape shaders

Dalai Felinto noreply at git.blender.org
Thu Sep 23 17:41:19 CEST 2021


Commit: d0493796a6f40db8dcdd4a9058b98a69282d4759
Author: Dalai Felinto
Date:   Thu Sep 23 15:53:38 2021 +0200
Branches: master
https://developer.blender.org/rBd0493796a6f40db8dcdd4a9058b98a69282d4759

Cleanup: Remove hardcoded values and rename keyframe shape shaders

No functional change.

The shader is complicated by itself, having hardcoded values makes it
even more cryptic.

I also renamed the shader because the shader is not for the keyfarme diamond only,
but for all the keyframe shapes.

Differential Revision: https://developer.blender.org/D12615

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

M	source/blender/editors/animation/keyframes_draw.c
M	source/blender/editors/include/ED_keyframes_draw.h
M	source/blender/editors/interface/interface_icons.c
M	source/blender/editors/space_clip/clip_dopesheet_draw.c
M	source/blender/editors/space_nla/nla_draw.c
M	source/blender/editors/space_node/node_draw.cc
M	source/blender/gpu/CMakeLists.txt
M	source/blender/gpu/GPU_shader.h
M	source/blender/gpu/intern/gpu_shader_builtin.c
R063	source/blender/gpu/shaders/gpu_shader_keyframe_diamond_frag.glsl	source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
R072	source/blender/gpu/shaders/gpu_shader_keyframe_diamond_vert.glsl	source/blender/gpu/shaders/gpu_shader_keyframe_shape_vert.glsl
M	source/blender/gpu/tests/gpu_shader_builtin_test.cc

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

diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index ac7db9f4f46..e3ea8f0ab21 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -146,31 +146,31 @@ void draw_keyframe_shape(float x,
     /* Handle type to outline shape. */
     switch (handle_type) {
       case KEYFRAME_HANDLE_AUTO_CLAMP:
-        flags = 0x2;
+        flags = GPU_KEYFRAME_SHAPE_CIRCLE;
         break; /* circle */
       case KEYFRAME_HANDLE_AUTO:
-        flags = 0x12;
+        flags = GPU_KEYFRAME_SHAPE_CIRCLE | GPU_KEYFRAME_SHAPE_INNER_DOT;
         break; /* circle with dot */
       case KEYFRAME_HANDLE_VECTOR:
-        flags = 0xC;
+        flags = GPU_KEYFRAME_SHAPE_SQUARE;
         break; /* square */
       case KEYFRAME_HANDLE_ALIGNED:
-        flags = 0x5;
+        flags = GPU_KEYFRAME_SHAPE_DIAMOND | GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL;
         break; /* clipped diamond */
 
       case KEYFRAME_HANDLE_FREE:
       default:
-        flags = 1; /* diamond */
+        flags = GPU_KEYFRAME_SHAPE_DIAMOND; /* diamond */
     }
 
     /* Extreme type to arrow-like shading. */
     if (extreme_type & KEYFRAME_EXTREME_MAX) {
-      flags |= 0x100;
+      flags |= GPU_KEYFRAME_SHAPE_ARROW_END_MAX;
     }
     if (extreme_type & KEYFRAME_EXTREME_MIN) {
-      flags |= 0x200;
+      flags |= GPU_KEYFRAME_SHAPE_ARROW_END_MIN;
     }
-    if (extreme_type & KEYFRAME_EXTREME_MIXED) {
+    if (extreme_type & GPU_KEYFRAME_SHAPE_ARROW_END_MIXED) {
       flags |= 0x400;
     }
   }
@@ -584,7 +584,7 @@ static void ED_keylist_draw_list_draw_keys(AnimKeylistDrawList *draw_list, View2
   sh_bindings.flags_id = GPU_vertformat_attr_add(format, "flags", GPU_COMP_U32, 1, GPU_FETCH_INT);
 
   GPU_program_point_size(true);
-  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
   immUniform1f("outline_scale", 1.0f);
   immUniform2f("ViewportSize", BLI_rcti_size_x(&v2d->mask) + 1, BLI_rcti_size_y(&v2d->mask) + 1);
   immBegin(GPU_PRIM_POINTS, visible_key_len);
diff --git a/source/blender/editors/include/ED_keyframes_draw.h b/source/blender/editors/include/ED_keyframes_draw.h
index 61e37f20b1b..6a7037c3eed 100644
--- a/source/blender/editors/include/ED_keyframes_draw.h
+++ b/source/blender/editors/include/ED_keyframes_draw.h
@@ -41,7 +41,7 @@ struct bDopeSheet;
 struct bGPDlayer;
 
 /* draw simple diamond-shape keyframe */
-/* caller should set up vertex format, bind GPU_SHADER_KEYFRAME_DIAMOND,
+/* caller should set up vertex format, bind GPU_SHADER_KEYFRAME_SHAPE,
  * immBegin(GPU_PRIM_POINTS, n), then call this n times */
 typedef struct KeyframeShaderBindings {
   uint pos_id;
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index f739830cfdb..7f1a8ee99e0 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -309,7 +309,7 @@ static void vicon_keytype_draw_wrapper(
   sh_bindings.flags_id = GPU_vertformat_attr_add(format, "flags", GPU_COMP_U32, 1, GPU_FETCH_INT);
 
   GPU_program_point_size(true);
-  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
   immUniform1f("outline_scale", 1.0f);
   immUniform2f("ViewportSize", -1.0f, -1.0f);
   immBegin(GPU_PRIM_POINTS, 1);
diff --git a/source/blender/editors/space_clip/clip_dopesheet_draw.c b/source/blender/editors/space_clip/clip_dopesheet_draw.c
index 8aaf3faffec..42fda3ef464 100644
--- a/source/blender/editors/space_clip/clip_dopesheet_draw.c
+++ b/source/blender/editors/space_clip/clip_dopesheet_draw.c
@@ -224,7 +224,7 @@ void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *region, Scene *scene)
       uint flags_id = GPU_vertformat_attr_add(format, "flags", GPU_COMP_U32, 1, GPU_FETCH_INT);
 
       GPU_program_point_size(true);
-      immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+      immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
       immUniform1f("outline_scale", 1.0f);
       immUniform2f(
           "ViewportSize", BLI_rcti_size_x(&v2d->mask) + 1, BLI_rcti_size_y(&v2d->mask) + 1);
diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c
index c1b308d213f..4694d8652f6 100644
--- a/source/blender/editors/space_nla/nla_draw.c
+++ b/source/blender/editors/space_nla/nla_draw.c
@@ -152,7 +152,7 @@ static void nla_action_draw_keyframes(
         format, "flags", GPU_COMP_U32, 1, GPU_FETCH_INT);
 
     GPU_program_point_size(true);
-    immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+    immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
     immUniform1f("outline_scale", 1.0f);
     immUniform2f("ViewportSize", BLI_rcti_size_x(&v2d->mask) + 1, BLI_rcti_size_y(&v2d->mask) + 1);
     immBegin(GPU_PRIM_POINTS, key_len);
diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc
index 10a3285be8b..b57696cb676 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -733,12 +733,6 @@ static void node_draw_mute_line(const View2D *v2d, const SpaceNode *snode, const
   GPU_blend(GPU_BLEND_NONE);
 }
 
-/* Flags used in gpu_shader_keyframe_diamond_frag.glsl. */
-#define MARKER_SHAPE_DIAMOND 0x1
-#define MARKER_SHAPE_SQUARE 0xC
-#define MARKER_SHAPE_CIRCLE 0x2
-#define MARKER_SHAPE_INNER_DOT 0x10
-
 static void node_socket_draw(const bNodeSocket *sock,
                              const float color[4],
                              const float color_outline[4],
@@ -757,16 +751,16 @@ static void node_socket_draw(const bNodeSocket *sock,
   switch (sock->display_shape) {
     case SOCK_DISPLAY_SHAPE_DIAMOND:
     case SOCK_DISPLAY_SHAPE_DIAMOND_DOT:
-      flags = MARKER_SHAPE_DIAMOND;
+      flags = GPU_KEYFRAME_SHAPE_DIAMOND;
       break;
     case SOCK_DISPLAY_SHAPE_SQUARE:
     case SOCK_DISPLAY_SHAPE_SQUARE_DOT:
-      flags = MARKER_SHAPE_SQUARE;
+      flags = GPU_KEYFRAME_SHAPE_SQUARE;
       break;
     default:
     case SOCK_DISPLAY_SHAPE_CIRCLE:
     case SOCK_DISPLAY_SHAPE_CIRCLE_DOT:
-      flags = MARKER_SHAPE_CIRCLE;
+      flags = GPU_KEYFRAME_SHAPE_CIRCLE;
       break;
   }
 
@@ -774,7 +768,7 @@ static void node_socket_draw(const bNodeSocket *sock,
            SOCK_DISPLAY_SHAPE_DIAMOND_DOT,
            SOCK_DISPLAY_SHAPE_SQUARE_DOT,
            SOCK_DISPLAY_SHAPE_CIRCLE_DOT)) {
-    flags |= MARKER_SHAPE_INNER_DOT;
+    flags |= GPU_KEYFRAME_SHAPE_INNER_DOT;
   }
 
   immAttr4fv(col_id, color);
@@ -1132,7 +1126,7 @@ void ED_node_socket_draw(bNodeSocket *sock, const rcti *rect, const float color[
   GPU_blend(GPU_BLEND_ALPHA);
   GPU_program_point_size(true);
 
-  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
   immUniform1f("outline_scale", 0.7f);
   immUniform2f("ViewportSize", -1.0f, -1.0f);
 
@@ -1277,7 +1271,7 @@ void node_draw_sockets(const View2D *v2d,
 
   GPU_blend(GPU_BLEND_ALPHA);
   GPU_program_point_size(true);
-  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_DIAMOND);
+  immBindBuiltinProgram(GPU_SHADER_KEYFRAME_SHAPE);
   immUniform1f("outline_scale", 0.7f);
   immUniform2f("ViewportSize", -1.0f, -1.0f);
 
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index b7dc3210c41..df370c7079b 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -268,8 +268,8 @@ data_to_c_simple(shaders/gpu_shader_2D_edituvs_stretch_vert.glsl SRC)
 
 data_to_c_simple(shaders/gpu_shader_text_vert.glsl SRC)
 data_to_c_simple(shaders/gpu_shader_text_frag.glsl SRC)
-data_to_c_simple(shaders/gpu_shader_keyframe_diamond_vert.glsl SRC)
-data_to_c_simple(shaders/gpu_shader_keyframe_diamond_frag.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_keyframe_shape_vert.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_keyframe_shape_frag.glsl SRC)
 
 data_to_c_simple(shaders/gpu_shader_codegen_lib.glsl SRC)
 
diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h
index 62b748b7edf..c6cfac79699 100644
--- a/source/blender/gpu/GPU_shader.h
+++ b/source/blender/gpu/GPU_shader.h
@@ -169,7 +169,7 @@ void GPU_shader_set_framebuffer_srgb_target(int use_srgb_to_linear);
 typedef enum eGPUBuiltinShader {
   /* specialized drawing */
   GPU_SHADER_TEXT,
-  GPU_SHADER_KEYFRAME_DIAMOND,
+  GPU_SHADER_KEYFRAME_SHAPE,
   GPU_SHADER_SIMPLE_LIGHTING,
   /* for simple 2D drawing */
   /**
@@ -423,6 +423,19 @@ void GPU_shader_free_builtin_shaders(void);
 /* Determined by the maximum uniform buffer size divided by chunk size. */
 #define GPU_MAX_UNIFORM_ATTR 8
 
+typedef enum eGPUKeyframeShapes {
+  GPU_KEYFRAME_SHAPE_DIAMOND = (1 << 0),
+  GPU_KEYFRAME_SHAPE_CIRCLE = (1 << 1),
+  GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL = (1 << 2),
+  GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL = (1 << 3),
+  GPU_KEYFRAME_SHAPE_INNER_DOT = (1 << 4),
+  GPU_KEYFRAME_SHAPE_ARROW_END_MAX = (1 << 8),
+  GPU_KEYFRAME_SHAPE_ARROW_END_MIN = (1 << 9),
+  GPU_KEYFRAME_SHAPE_ARROW_END_MIXED = (1 << 10),
+} eGPUKeyframeShapes;
+#define GPU_KEYFRAME_SHAPE_SQUARE \
+  (GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL | GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/gpu/intern/gpu_shader_builtin.c b/source/blender/gpu/intern/gpu_shader_builtin.c
index c5122b76001..9ea46788f44 100644
--- a/source/blender/gpu/intern/gpu_shader_builtin.c
+++ b/source/blender/gpu/intern/gpu_shader_builtin.c
@@ -121,8 +121,8 @@ extern char datatoc_gpu_shader_3D_line_dashed_uniform_color_vert_glsl[];
 
 extern char datatoc_gpu_shader_text_vert_glsl[];
 extern char datatoc_gpu_shader_text_frag_glsl[];
-extern char datatoc_gpu_shader_keyframe_diamond_vert_glsl[];
-extern char datatoc_gpu_shader_keyframe_diamond_frag_glsl[];
+extern char datatoc_gpu_shader_keyframe_shape_vert_glsl[];
+extern char datatoc_gpu_shader_keyframe_shape_frag_glsl[];
 
 extern char datatoc_gpu_shader_gpencil_stroke_vert_glsl[];
 extern char datatoc_gpu_shader_gpencil_stroke_frag_glsl[];
@@ -166,11 +166,11 @@ static const GPUShaderStages bui

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list