diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-12-05 18:08:52 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-12-05 18:36:06 +0300 |
commit | d40579c62b40e2ad7d30ae4196169c3328610d41 (patch) | |
tree | 1aeeb85fa19408d6836ecd8f03e1d91eefd39ad5 /source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl | |
parent | 95ca3f6536f1b756a0c87578f8d9d757ba9cd3a4 (diff) |
Overlay Engine: Fix bone outline antialiasing
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl')
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl b/source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl index 371229f23ab..b15554bbb6a 100644 --- a/source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl +++ b/source/blender/draw/engines/overlay/shaders/armature_dof_vert.glsl @@ -8,6 +8,8 @@ in vec4 color; in mat4 inst_obmat; flat out vec4 finalColor; +flat out vec2 edgeStart; +noperspective out vec2 edgePos; vec3 sphere_project(float ax, float az) { @@ -28,6 +30,14 @@ void main() vec3 final_pos = sphere_project(pos.x * abs((pos.x > 0.0) ? amax.x : amin.x), pos.y * abs((pos.y > 0.0) ? amax.y : amin.y)); - gl_Position = ViewProjectionMatrix * (model_mat * vec4(final_pos, 1.0)); + + vec3 world_pos = (model_mat * vec4(final_pos, 1.0)).xyz; + gl_Position = point_world_to_ndc(world_pos); finalColor = color; + + edgeStart = edgePos = ((gl_Position.xy / gl_Position.w) * 0.5 + 0.5) * sizeViewport.xy; + +#ifdef USE_WORLD_CLIP_PLANES + world_clip_planes_calc_clip_distance(world_pos); +#endif } |