Cleanup: DRW: Move ModelMatrix declaration to common_view_lib
[blender.git] / source / blender / draw / engines / gpencil / shaders / gpencil_point_vert.glsl
1
2 uniform float pixsize; /* rv3d->pixsize */
3 uniform int keep_size;
4 uniform float objscale;
5 uniform float pixfactor;
6 uniform int viewport_xray;
7 uniform int shading_type[2];
8 uniform vec4 wire_color;
9
10 in vec3 pos;
11 in vec4 color;
12 in float thickness;
13 in vec2 uvdata;
14 in vec3 prev_pos;
15
16 out vec4 finalColor;
17 out float finalThickness;
18 out vec2 finaluvdata;
19 out vec4 finalprev_pos;
20
21 #define TRUE 1
22
23 #define OB_WIRE 2
24 #define OB_SOLID 3
25
26 #define V3D_SHADING_MATERIAL_COLOR 0
27 #define V3D_SHADING_TEXTURE_COLOR 3
28
29 float defaultpixsize = pixsize * (1000.0 / pixfactor);
30
31 void main()
32 {
33   gl_Position = point_object_to_ndc(pos);
34   finalprev_pos = point_object_to_ndc(prev_pos);
35   finalColor = color;
36
37   if (keep_size == TRUE) {
38     finalThickness = thickness;
39   }
40   else {
41     float size = (ProjectionMatrix[3][3] == 0.0) ? (thickness / (gl_Position.z * defaultpixsize)) :
42                                                    (thickness / defaultpixsize);
43     finalThickness = max(size * objscale, 0.5); /* set a minimum size */
44   }
45
46   /* for wireframe override size and color */
47   if (shading_type[0] == OB_WIRE) {
48     finalThickness = 2.0;
49     finalColor = wire_color;
50   }
51   /* for solid override color */
52   if (shading_type[0] == OB_SOLID) {
53     if ((shading_type[1] != V3D_SHADING_MATERIAL_COLOR) &&
54         (shading_type[1] != V3D_SHADING_TEXTURE_COLOR)) {
55       finalColor = wire_color;
56     }
57     if (viewport_xray == 1) {
58       finalColor.a *= 0.5;
59     }
60   }
61
62   finaluvdata = uvdata;
63 }