123456789101112131415161718192021222324252627282930313233343536373839 |
- uniform vec4 color;
- uniform vec4 gapColor;
- uniform float dashLength;
- uniform float dashPattern;
- in float v_polylineAngle;
- const float maskLength = 16.0;
- mat2 rotate(float rad) {
- float c = cos(rad);
- float s = sin(rad);
- return mat2(
- c, s,
- -s, c
- );
- }
- czm_material czm_getMaterial(czm_materialInput materialInput)
- {
- czm_material material = czm_getDefaultMaterial(materialInput);
- vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy;
- // Get the relative position within the dash from 0 to 1
- float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio));
- // Figure out the mask index.
- float maskIndex = floor(dashPosition * maskLength);
- // Test the bit mask.
- float maskTest = floor(dashPattern / pow(2.0, maskIndex));
- vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color;
- if (fragColor.a < 0.005) { // matches 0/255 and 1/255
- discard;
- }
- fragColor = czm_gammaCorrect(fragColor);
- material.emission = fragColor.rgb;
- material.alpha = fragColor.a;
- return material;
- }
|