Edit Mesh: Simplify the overlay shader.
[blender.git] / source / blender / draw / modes / shaders / edit_mesh_overlay_loosevert_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 ModelViewProjectionMatrix;
9 uniform vec2 viewportSize;
10
11 in vec3 pos;
12 in ivec4 data;
13
14 /* these are the same for all vertices
15  * and does not need interpolation */
16 flat out vec3 edgesCrease;
17 flat out vec3 edgesBweight;
18 flat out vec4 faceColor;
19 flat out ivec3 flag;
20 #ifdef VERTEX_SELECTION
21 out vec3 vertexColor;
22 #endif
23
24 /* See fragment shader */
25 flat out vec2 ssPos[3];
26
27 /* project to screen space */
28 vec2 proj(vec4 pos)
29 {
30         return (0.5 * (pos.xy / pos.w) + 0.5) * viewportSize;
31 }
32
33 void main()
34 {
35         edgesCrease = vec3(0.0);
36         edgesBweight = vec3(0.0);
37
38         vec4 pPos = ModelViewProjectionMatrix * vec4(pos, 1.0);
39
40         /* there is no face */
41         faceColor = vec4(0.0);
42
43 #ifdef VERTEX_SELECTION
44         vertexColor = vec3(0.0);
45 #endif
46
47         ssPos[0] = ssPos[1] = ssPos[2] = proj(pPos);
48         flag[0] = flag[1] = flag[2] = (data.x << 8);
49
50         gl_PointSize = sizeEdgeFix;
51         gl_Position = pPos;
52 }