class ArcBrushingLayer extends deck.ArcLayer {
getShaders() {
return Object.assign({}, super.getShaders(), {
inject: {
'vs:#decl': `
uniform float coef;
`,
'vs:#main-end': `
if (coef > 0.0) {
vec4 pct = vec4(segmentRatio);
pct.a = step(coef, segmentRatio) - step(coef + 0.9, segmentRatio);
vec4 colorA = instanceTargetColors;
vec4 colorB = vec4(instanceTargetColors.r, instanceTargetColors.g, instanceTargetColors.b, 0.0);
vec4 color = mix(colorA, colorB, pct) / 255.;
vColor = color;
}
`,
'fs:#main-start': `
if (vColor.a == 0.0) discard;
`
}
});
}
draw(opts) {
const {coef} = this.props;
const uniforms = Object.assign({}, opts.uniforms, { coef: coef });
super.draw(Object.assign({}, opts, {uniforms}));
}
}