| 12345678910111213141516171819202122232425262728 |
- in vec4 v_pickColor;
- in vec4 v_color;
- in vec4 v_outlineColor;
- in float v_innerRadiusFrac;
-
- void main()
- {
- // Distance between fragment and point center, 0 to 0.5.
- float distanceToCenter = length(gl_PointCoord - vec2(0.5));
- float delta = fwidth(distanceToCenter);
-
- float outerLimit = 0.5;
- float innerLimit = 0.5 * v_innerRadiusFrac;
-
- float outerAlpha = 1.0 - smoothstep(max(0.0, outerLimit - delta), outerLimit, distanceToCenter);
- float innerAlpha = 1.0 - smoothstep(innerLimit - delta, innerLimit, distanceToCenter);
-
- vec4 color = vec4(mix(v_outlineColor.rgb, v_color.rgb, innerAlpha), outerAlpha);
- color.a *= mix(v_outlineColor.a, v_color.a, innerAlpha);
-
- if (color.a < 0.005) // matches 0/255 and 1/255
- {
- discard;
- }
-
- out_FragColor = czm_gammaCorrect(color);
- czm_writeLogDepth();
- }
|