diff options
Diffstat (limited to 'source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl index 2e541fa75e6..fa3934c4b77 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_vert.glsl @@ -6,9 +6,26 @@ in vec4 norAndFlag; flat out int isSelected; +#ifdef VERTEX_FACING +uniform mat4 ProjectionMatrix; +uniform mat4 ModelViewMatrix; +uniform mat3 NormalMatrix; + +flat out float facing; +#endif + void main() { gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); + /* Bias Facedot Z position in clipspace. */ + gl_Position.z -= 0.0002; gl_PointSize = sizeFaceDot; isSelected = int(norAndFlag.w); +#ifdef VERTEX_FACING + vec3 view_normal = normalize(NormalMatrix * norAndFlag.xyz); + vec3 view_vec = (ProjectionMatrix[3][3] == 0.0) + ? normalize((ModelViewMatrix * vec4(pos, 1.0)).xyz) + : vec3(0.0, 0.0, 1.0); + facing = dot(view_vec, view_normal); +#endif } |