29 lines
848 B
GLSL
29 lines
848 B
GLSL
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();
|
|
}
|