6da9b0a0e863e9193cb6315a26d533246c4bc664
[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 uniform vec3 eye;
22
23 in vec3 vnor;
24 out float vFacing;
25 #endif
26
27 void main()
28 {
29         vPos = ModelViewMatrix * vec4(pos, 1.0);
30         pPos = ModelViewProjectionMatrix * vec4(pos, 1.0);
31         vData = data;
32 #ifdef VERTEX_FACING
33         vec3 view_normal = normalize(NormalMatrix * vnor);
34         vec3 view_vec = (ProjectionMatrix[3][3] == 0.0)
35                 ? normalize(vPos.xyz)
36                 : vec3(0.0, 0.0, 1.0);
37         vFacing = dot(view_vec, view_normal);
38 #endif
39 }