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:
authorCampbell Barton <ideasman42@gmail.com>2019-03-16 10:41:34 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-03-16 10:43:36 +0300
commit37af7ce779af9bdf0e858251edc866687d895913 (patch)
treed649b171bdc992fb1af1578f339be3112076ab33 /source/blender/draw/modes
parentc55fb58e8a4f1fd34d24deeed3a86b32e819d677 (diff)
DRW: support clipping for armature bone axes
Also minor changes to make empty axis match armature axis.
Diffstat (limited to 'source/blender/draw/modes')
-rw-r--r--source/blender/draw/modes/shaders/armature_axes_vert.glsl11
-rw-r--r--source/blender/draw/modes/shaders/object_empty_axes_vert.glsl8
2 files changed, 14 insertions, 5 deletions
diff --git a/source/blender/draw/modes/shaders/armature_axes_vert.glsl b/source/blender/draw/modes/shaders/armature_axes_vert.glsl
index 137bcff1ed1..ac640f0c303 100644
--- a/source/blender/draw/modes/shaders/armature_axes_vert.glsl
+++ b/source/blender/draw/modes/shaders/armature_axes_vert.glsl
@@ -1,7 +1,9 @@
uniform mat4 ViewProjectionMatrix;
uniform vec3 screenVecs[3];
-
+#ifdef USE_WORLD_CLIP_PLANES
+uniform mat4 ModelMatrix;
+#endif
/* ---- Instantiated Attrs ---- */
in float axis; /* position on the axis. [0.0-1.0] is X axis, [1.0-2.0] is Y, etc... */
in vec2 screenPos;
@@ -23,8 +25,13 @@ void main()
/* Scale uniformly by axis length */
spos *= length(chosen_axis);
- gl_Position = ViewProjectionMatrix * vec4(wpos + spos, 1.0);
+ vec4 pos_4d = vec4(wpos + spos, 1.0);
+ gl_Position = ViewProjectionMatrix * pos_4d;
finalColor.rgb = mix(colorAxis, color.rgb, color.a);
finalColor.a = 1.0;
+
+#ifdef USE_WORLD_CLIP_PLANES
+ world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz);
+#endif
}
diff --git a/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl b/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl
index 4aafceeb437..8de25de35ad 100644
--- a/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl
+++ b/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl
@@ -1,6 +1,8 @@
uniform mat4 ViewProjectionMatrix;
+#ifdef USE_WORLD_CLIP_PLANES
uniform mat4 ModelMatrix;
+#endif
uniform vec3 screenVecs[3];
@@ -25,12 +27,12 @@ void main()
/* Scale uniformly by axis length */
spos *= length(chosen_axis) * draw_size;
- vec4 pos = vec4(wpos + spos, 1.0);
- gl_Position = ViewProjectionMatrix * pos;
+ vec4 pos_4d = vec4(wpos + spos, 1.0);
+ gl_Position = ViewProjectionMatrix * pos_4d;
finalColor = vec4(color, 1.0);
#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance((ModelMatrix * pos).xyz);
+ world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz);
#endif
}