Object Mode Engine: Small cleanup
[blender.git] / source / blender / draw / modes / shaders / edit_mesh_overlay_vert.glsl
1
2 /* Solid Wirefram implementation
3  * Mike Erwin, ClĂ©ment Foucault */
4
5 /* This shader follows the principles of
6  * http://developer.download.nvidia.com/SDK/10/direct3d/Source/SolidWireframe/Doc/SolidWireframe.pdf */
7
8 uniform mat4 ModelViewMatrix;
9 uniform mat4 ModelViewProjectionMatrix;
10
11 in vec3 pos;
12 in ivec4 data;
13
14 out vec4 vPos;
15 out vec4 pPos;
16 out ivec4 vData;
17
18 #ifdef VERTEX_FACING
19 uniform mat4 ProjectionMatrix;
20 uniform mat3 NormalMatrix;
21
22 in vec3 vnor;
23 out float vFacing;
24 #endif
25
26 void main()
27 {
28         vPos = ModelViewMatrix * vec4(pos, 1.0);
29         pPos = ModelViewProjectionMatrix * vec4(pos, 1.0);
30         vData = data;
31 #ifdef VERTEX_FACING
32         vec3 view_normal = normalize(NormalMatrix * vnor);
33         vec3 view_vec = (ProjectionMatrix[3][3] == 0.0)
34                 ? normalize(vPos.xyz)
35                 : vec3(0.0, 0.0, 1.0);
36         vFacing = dot(view_vec, view_normal);
37 #endif
38 }