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:
authorDalai Felinto <dalai@blender.org>2021-09-23 16:53:38 +0300
committerDalai Felinto <dalai@blender.org>2021-09-23 18:41:11 +0300
commitd0493796a6f40db8dcdd4a9058b98a69282d4759 (patch)
tree7f9e26a80147fc473d2c6a705cfa89a87302bd97 /source/blender/gpu
parentf11bcb5a80eb106560678c8c60be32ad997d6641 (diff)
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
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/CMakeLists.txt4
-rw-r--r--source/blender/gpu/GPU_shader.h15
-rw-r--r--source/blender/gpu/intern/gpu_shader_builtin.c12
-rw-r--r--source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl (renamed from source/blender/gpu/shaders/gpu_shader_keyframe_diamond_frag.glsl)31
-rw-r--r--source/blender/gpu/shaders/gpu_shader_keyframe_shape_vert.glsl (renamed from source/blender/gpu/shaders/gpu_shader_keyframe_diamond_vert.glsl)17
-rw-r--r--source/blender/gpu/tests/gpu_shader_builtin_test.cc2
6 files changed, 60 insertions, 21 deletions
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 builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = {
.vert = datatoc_gpu_shader_text_vert_glsl,
.frag = datatoc_gpu_shader_text_frag_glsl,
},
- [GPU_SHADER_KEYFRAME_DIAMOND] =
+ [GPU_SHADER_KEYFRAME_SHAPE] =
{
- .name = "GPU_SHADER_KEYFRAME_DIAMOND",
- .vert = datatoc_gpu_shader_keyframe_diamond_vert_glsl,
- .frag = datatoc_gpu_shader_keyframe_diamond_frag_glsl,
+ .name = "GPU_SHADER_KEYFRAME_SHAPE",
+ .vert = datatoc_gpu_shader_keyframe_shape_vert_glsl,
+ .frag = datatoc_gpu_shader_keyframe_shape_frag_glsl,
},
[GPU_SHADER_SIMPLE_LIGHTING] =
{
diff --git a/source/blender/gpu/shaders/gpu_shader_keyframe_diamond_frag.glsl b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
index 1c4039bc590..f0ff70f7690 100644
--- a/source/blender/gpu/shaders/gpu_shader_keyframe_diamond_frag.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
@@ -1,3 +1,16 @@
+
+/* Values in GPU_shader.h. */
+#define GPU_KEYFRAME_SHAPE_DIAMOND (1 << 0)
+#define GPU_KEYFRAME_SHAPE_CIRCLE (1 << 1)
+#define GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL (1 << 2)
+#define GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL (1 << 3)
+#define GPU_KEYFRAME_SHAPE_INNER_DOT (1 << 4)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MAX (1 << 8)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MIN (1 << 9)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MIXED (1 << 10)
+#define GPU_KEYFRAME_SHAPE_SQUARE \
+ (GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL | GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)
+
flat in vec4 radii;
flat in vec4 thresholds;
@@ -27,24 +40,24 @@ void main()
float outline_dist = -1.0;
/* Diamond outline */
- if (test(0x1)) {
+ if (test(GPU_KEYFRAME_SHAPE_DIAMOND)) {
outline_dist = max(outline_dist, radius - radii[0]);
}
/* Circle outline */
- if (test(0x2)) {
+ if (test(GPU_KEYFRAME_SHAPE_CIRCLE)) {
radius = length(absPos);
outline_dist = max(outline_dist, radius - radii[1]);
}
/* Top & Bottom clamp */
- if (test(0x4)) {
+ if (test(GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL)) {
outline_dist = max(outline_dist, absPos.y - radii[2]);
}
/* Left & Right clamp */
- if (test(0x8)) {
+ if (test(GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)) {
outline_dist = max(outline_dist, absPos.x - radii[2]);
}
@@ -53,20 +66,20 @@ void main()
/* Inside the outline. */
if (outline_dist < 0) {
/* Middle dot */
- if (test(0x10)) {
+ if (test(GPU_KEYFRAME_SHAPE_INNER_DOT)) {
alpha = max(alpha, 1 - smoothstep(thresholds[2], thresholds[3], radius));
}
/* Up and down arrow-like shading. */
- if (test(0x300)) {
+ if (test(GPU_KEYFRAME_SHAPE_ARROW_END_MAX | GPU_KEYFRAME_SHAPE_ARROW_END_MIN)) {
float ypos = -1.0;
/* Up arrow (maximum) */
- if (test(0x100)) {
+ if (test(GPU_KEYFRAME_SHAPE_ARROW_END_MAX)) {
ypos = max(ypos, pos.y);
}
/* Down arrow (minimum) */
- if (test(0x200)) {
+ if (test(GPU_KEYFRAME_SHAPE_ARROW_END_MIN)) {
ypos = max(ypos, -pos.y);
}
@@ -75,7 +88,7 @@ void main()
float minmax_step = smoothstep(thresholds[0], thresholds[1], minmax_dist * minmax_scale);
/* Reduced alpha for uncertain extremes. */
- float minmax_alpha = test(0x400) ? 0.55 : 0.85;
+ float minmax_alpha = test(GPU_KEYFRAME_SHAPE_ARROW_END_MIXED) ? 0.55 : 0.85;
alpha = max(alpha, minmax_step * minmax_alpha);
}
diff --git a/source/blender/gpu/shaders/gpu_shader_keyframe_diamond_vert.glsl b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_vert.glsl
index 2ba89230d80..18e8b76ba23 100644
--- a/source/blender/gpu/shaders/gpu_shader_keyframe_diamond_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_vert.glsl
@@ -1,4 +1,16 @@
+/* Values in GPU_shader.h. */
+#define GPU_KEYFRAME_SHAPE_DIAMOND (1 << 0)
+#define GPU_KEYFRAME_SHAPE_CIRCLE (1 << 1)
+#define GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL (1 << 2)
+#define GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL (1 << 3)
+#define GPU_KEYFRAME_SHAPE_INNER_DOT (1 << 4)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MAX (1 << 8)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MIN (1 << 9)
+#define GPU_KEYFRAME_SHAPE_ARROW_END_MIXED (1 << 10)
+#define GPU_KEYFRAME_SHAPE_SQUARE \
+ (GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL | GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)
+
uniform mat4 ModelViewProjectionMatrix;
uniform vec2 ViewportSize = vec2(-1, -1);
uniform float outline_scale = 1.0;
@@ -49,8 +61,9 @@ void main()
finalOutlineColor = outlineColor;
finalFlags = flags;
- if (!test(0xF)) {
- finalFlags |= 1;
+ if (!test(GPU_KEYFRAME_SHAPE_DIAMOND | GPU_KEYFRAME_SHAPE_CIRCLE |
+ GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL | GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)) {
+ finalFlags |= GPU_KEYFRAME_SHAPE_DIAMOND;
}
/* Size-dependent line thickness. */
diff --git a/source/blender/gpu/tests/gpu_shader_builtin_test.cc b/source/blender/gpu/tests/gpu_shader_builtin_test.cc
index f0061a6bf5c..523a7e5b881 100644
--- a/source/blender/gpu/tests/gpu_shader_builtin_test.cc
+++ b/source/blender/gpu/tests/gpu_shader_builtin_test.cc
@@ -32,7 +32,7 @@ static void test_shader_builtin()
test_compile_builtin_shader(GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA);
test_compile_builtin_shader(GPU_SHADER_TEXT, GPU_SHADER_CFG_DEFAULT);
- test_compile_builtin_shader(GPU_SHADER_KEYFRAME_DIAMOND, GPU_SHADER_CFG_DEFAULT);
+ test_compile_builtin_shader(GPU_SHADER_KEYFRAME_SHAPE, GPU_SHADER_CFG_DEFAULT);
test_compile_builtin_shader(GPU_SHADER_SIMPLE_LIGHTING, GPU_SHADER_CFG_DEFAULT);
test_compile_builtin_shader(GPU_SHADER_2D_UNIFORM_COLOR, GPU_SHADER_CFG_DEFAULT);
test_compile_builtin_shader(GPU_SHADER_2D_FLAT_COLOR, GPU_SHADER_CFG_DEFAULT);