Merge branch 'master' into blender2.8
[blender.git] / source / blender / gpu / shaders / gpu_shader_instance_screen_aligned_vert.glsl
1
2 uniform mat4 ViewProjectionMatrix;
3 uniform vec3 screen_vecs[2];
4
5 /* ---- Instantiated Attribs ---- */
6 in vec3 pos; /* using Z as axis id */
7
8 /* ---- Per instance Attribs ---- */
9 in mat4 InstanceModelMatrix;
10 in vec3 color;
11 in float size;
12
13 flat out vec4 finalColor;
14
15 void main()
16 {
17         vec3 offset = vec3(0.0);
18
19 #ifdef AXIS_NAME
20         if (pos.z == 0.0)
21                 offset = vec3(1.125, 0.0, 0.0);
22         else if (pos.z == 1.0)
23                 offset = vec3(0.0, 1.125, 0.0);
24         else
25                 offset = vec3(0.0, 0.0, 1.125);
26         offset *= size;
27 #endif
28
29         vec3 screen_pos = screen_vecs[0].xyz * pos.x + screen_vecs[1].xyz * pos.y;
30         gl_Position = ViewProjectionMatrix * (InstanceModelMatrix * vec4(offset, 1.0) + vec4(screen_pos * size, 0.0));
31         finalColor = vec4(color, 1.0);
32 }