ClangFormat: apply to source, most of intern
[blender.git] / source / blender / draw / modes / shaders / object_particle_prim_vert.glsl
1
2 uniform mat4 ModelViewProjectionMatrix;
3 uniform mat4 ViewProjectionMatrix;
4 uniform mat4 ModelViewMatrix;
5 uniform mat4 ProjectionMatrix;
6 uniform int screen_space;
7 uniform float draw_size;
8 uniform vec3 color;
9 uniform sampler1D ramp;
10
11 in vec3 pos;
12 in vec4 rot;
13 in float val;
14 in vec3 inst_pos;
15 in int axis;
16
17 flat out vec4 finalColor;
18
19 vec3 rotate(vec3 vec, vec4 quat)
20 {
21   /* The quaternion representation here stores the w component in the first index */
22   return vec + 2.0 * cross(quat.yzw, cross(quat.yzw, vec) + quat.x * vec);
23 }
24
25 void main()
26 {
27   if (screen_space == 1) {
28     gl_Position = ModelViewMatrix * vec4(pos, 1.0) + vec4(inst_pos * draw_size, 0.0);
29     gl_Position = ProjectionMatrix * gl_Position;
30   }
31   else {
32     float size = draw_size;
33
34     if (axis > -1) {
35       size *= 2;
36     }
37
38     gl_Position = ModelViewProjectionMatrix * vec4(pos + rotate(inst_pos * size, rot), 1.0);
39   }
40
41 #ifdef USE_AXIS
42   if (axis == 0) {
43     finalColor = vec4(1.0, 0.0, 0.0, 1.0);
44   }
45   else if (axis == 1) {
46     finalColor = vec4(0.0, 1.0, 0.0, 1.0);
47   }
48   else {
49     finalColor = vec4(0.0, 0.0, 1.0, 1.0);
50   }
51 #else
52   if (val < 0.0) {
53     finalColor = vec4(color, 1.0);
54   }
55   else {
56     finalColor = vec4(texture(ramp, val).rgb, 1.0);
57   }
58 #endif
59 }