Edit Mesh: Add support for draw option parameters
[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 uniform ivec4 dataMask = ivec4(0xFF);
11
12 in vec3 pos;
13 in ivec4 data;
14
15 out vec4 vPos;
16 out vec4 pPos;
17 out ivec4 vData;
18
19 #ifdef VERTEX_FACING
20 uniform mat4 ProjectionMatrix;
21 uniform mat3 NormalMatrix;
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 & dataMask;
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 }