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:
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders/overlay_motion_path_line_geom.glsl')
-rw-r--r--source/blender/draw/engines/overlay/shaders/overlay_motion_path_line_geom.glsl37
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_motion_path_line_geom.glsl b/source/blender/draw/engines/overlay/shaders/overlay_motion_path_line_geom.glsl
new file mode 100644
index 00000000000..25e13e7c212
--- /dev/null
+++ b/source/blender/draw/engines/overlay/shaders/overlay_motion_path_line_geom.glsl
@@ -0,0 +1,37 @@
+
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
+
+vec2 compute_dir(vec2 v0, vec2 v1)
+{
+ vec2 dir = normalize(v1 - v0 + 1e-8);
+ dir = vec2(-dir.y, dir.x);
+ return dir;
+}
+
+void main(void)
+{
+ vec2 t;
+ vec2 edge_dir = compute_dir(interp_in[0].ss_pos, interp_in[1].ss_pos) *
+ drw_view.viewport_size_inverse;
+
+ bool is_persp = (drw_view.winmat[3][3] == 0.0);
+ float line_size = float(lineThickness) * sizePixel;
+
+ view_clipping_distances_set(gl_in[0]);
+ interp_out.color = interp_in[0].color;
+ t = edge_dir * (line_size * (is_persp ? gl_in[0].gl_Position.w : 1.0));
+ gl_Position = gl_in[0].gl_Position + vec4(t, 0.0, 0.0);
+ EmitVertex();
+ gl_Position = gl_in[0].gl_Position - vec4(t, 0.0, 0.0);
+ EmitVertex();
+
+ view_clipping_distances_set(gl_in[1]);
+ interp_out.color = interp_in[1].color;
+ t = edge_dir * (line_size * (is_persp ? gl_in[1].gl_Position.w : 1.0));
+ gl_Position = gl_in[1].gl_Position + vec4(t, 0.0, 0.0);
+ EmitVertex();
+ gl_Position = gl_in[1].gl_Position - vec4(t, 0.0, 0.0);
+ EmitVertex();
+ EndPrimitive();
+}