GPencil: Changes in Fill and new 3D Cursor View Plane
[blender.git] / source / blender / gpu / shaders / gpu_shader_instance_camera_vert.glsl
1
2 uniform mat4 ViewProjectionMatrix;
3 #ifdef USE_WORLD_CLIP_PLANES
4 uniform mat4 ModelMatrix;
5 #endif
6
7 /* ---- Instantiated Attrs ---- */
8 in float pos;
9
10 /* ---- Per instance Attrs ---- */
11 in vec3 color;
12 in vec4 corners[2]; /* trouble fetching vec2 */
13 in float depth;
14 in vec4 tria;
15 in mat4 InstanceModelMatrix;
16
17 flat out vec4 finalColor;
18
19 void main()
20 {
21         vec3 pPos;
22
23         if (pos == 1.0) {
24                 pPos = vec3(corners[0].xy, depth);
25         }
26         else if (pos == 2.0) {
27                 pPos = vec3(corners[0].zw, depth);
28         }
29         else if (pos == 3.0) {
30                 pPos = vec3(corners[1].xy, depth);
31         }
32         else if (pos == 4.0) {
33                 pPos = vec3(corners[1].zw, depth);
34         }
35         else if (pos == 5.0) {
36                 pPos = vec3(tria.xy, depth);
37         }
38         else if (pos == 6.0) {
39                 vec2 ofs = tria.xy - corners[0].xy;
40                 ofs.x = -ofs.x;
41                 pPos = vec3(corners[1].zw + ofs, depth);
42         }
43         else if (pos == 7.0) {
44                 pPos = vec3(tria.zw, depth);
45         }
46         else {
47                 pPos = vec3(0.0);
48         }
49
50         gl_Position = ViewProjectionMatrix * InstanceModelMatrix * vec4(pPos, 1.0);
51
52         finalColor = vec4(color, 1.0);
53
54 #ifdef USE_WORLD_CLIP_PLANES
55         world_clip_planes_calc_clip_distance((ModelMatrix * InstanceModelMatrix * vec4(pPos, 1.0)).xyz);
56 #endif
57 }