044a949ef98c6b959b15c32cd469767bfb180222
[blender.git] / source / blender / draw / modes / shaders / object_particle_dot_frag.glsl
1
2 uniform vec3 color;
3 uniform vec3 outlineColor;
4
5 in vec4 radii;
6 out vec4 fragColor;
7
8 void main() {
9         float dist = length(gl_PointCoord - vec2(0.5));
10
11 // transparent outside of point
12 // --- 0 ---
13 // smooth transition
14 // --- 1 ---
15 // pure outline color
16 // --- 2 ---
17 // smooth transition
18 // --- 3 ---
19 // pure point color
20 // ...
21 // dist = 0 at center of point
22
23         float midStroke = 0.5 * (radii[1] + radii[2]);
24
25         if (dist > midStroke) {
26                 fragColor.rgb = outlineColor;
27                 fragColor.a = mix(1.0, 0.0, smoothstep(radii[1], radii[0], dist));
28         }
29         else {
30                 fragColor.rgb = mix(color, outlineColor, smoothstep(radii[3], radii[2], dist));
31                 fragColor.a = 1.0;
32         }
33
34         if (fragColor.a == 0.0) {
35                 discard;
36         }
37 }