Cleanup: comments (long lines) in gpu
[blender.git] / source / blender / gpu / shaders / gpu_shader_2D_line_dashed_frag.glsl
1
2 /*
3  * Fragment Shader for dashed lines, with uniform multi-color(s),
4  * or any single-color, and any thickness.
5  *
6  * Dashed is performed in screen space.
7  */
8
9 uniform float dash_width;
10
11 /* Simple mode, discarding non-dash parts (so no need for blending at all). */
12 uniform float dash_factor; /* if > 1.0, solid line. */
13
14 /* More advanced mode, allowing for complex, multi-colored patterns.
15  * Enabled when colors_len > 0. */
16 /* Note: max number of steps/colors in pattern is 32! */
17 uniform int colors_len; /* Enabled if > 0, 1 for solid line. */
18 uniform vec4 colors[32];
19
20 noperspective in float distance_along_line;
21 noperspective in vec4 color_geom;
22
23 out vec4 fragColor;
24
25 void main()
26 {
27   /* Multi-color option. */
28   if (colors_len > 0) {
29     /* Solid line case, simple. */
30     if (colors_len == 1) {
31       fragColor = colors[0];
32     }
33     /* Actually dashed line... */
34     else {
35       float normalized_distance = fract(distance_along_line / dash_width);
36       fragColor = colors[int(normalized_distance * colors_len)];
37     }
38   }
39   /* Single color option. */
40   else {
41     /* Solid line case, simple. */
42     if (dash_factor >= 1.0f) {
43       fragColor = color_geom;
44     }
45     /* Actually dashed line... */
46     else {
47       float normalized_distance = fract(distance_along_line / dash_width);
48       if (normalized_distance <= dash_factor) {
49         fragColor = color_geom;
50       }
51       else {
52         discard;
53       }
54     }
55   }
56 }