@deck.gl/layers
Version:
deck.gl core layers
3 lines • 2.04 kB
TypeScript
declare const _default: "#version 300 es\n#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nin vec4 vFillColor;\nin vec4 vLineColor;\nin float vLineWidth;\nin vec2 uv;\nin vec2 dimensions;\n\nout vec4 fragColor;\n\nfloat round_rect(vec2 p, vec2 size, vec4 radii) {\n // Convert p and size to center-based coordinates [-0.5, 0.5]\n vec2 pixelPositionCB = (p - 0.5) * size;\n vec2 sizeCB = size * 0.5;\n\n float maxBorderRadius = min(size.x, size.y) * 0.5;\n vec4 borderRadius = vec4(min(radii, maxBorderRadius));\n\n // from https://www.shadertoy.com/view/4llXD7\n borderRadius.xy =\n (pixelPositionCB.x > 0.0) ? borderRadius.xy : borderRadius.zw;\n borderRadius.x = (pixelPositionCB.y > 0.0) ? borderRadius.x : borderRadius.y;\n vec2 q = abs(pixelPositionCB) - sizeCB + borderRadius.x;\n return -(min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - borderRadius.x);\n}\n\nfloat rect(vec2 p, vec2 size) {\n vec2 pixelPosition = p * size;\n return min(min(pixelPosition.x, size.x - pixelPosition.x),\n min(pixelPosition.y, size.y - pixelPosition.y));\n}\n\nvec4 get_stroked_fragColor(float dist) {\n float isBorder = smoothedge(dist, vLineWidth);\n return mix(vFillColor, vLineColor, isBorder);\n}\n\nvoid main(void) {\n geometry.uv = uv;\n\n if (textBackground.borderRadius != vec4(0.0)) {\n float distToEdge = round_rect(uv, dimensions, textBackground.borderRadius);\n if (textBackground.stroked) {\n fragColor = get_stroked_fragColor(distToEdge);\n } else {\n fragColor = vFillColor;\n }\n // add border radius\n float shapeAlpha = smoothedge(-distToEdge, 0.0);\n fragColor.a *= shapeAlpha;\n } else {\n if (textBackground.stroked) {\n float distToEdge = rect(uv, dimensions);\n fragColor = get_stroked_fragColor(distToEdge);\n } else {\n fragColor = vFillColor;\n }\n }\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
export default _default;
//# sourceMappingURL=text-background-layer-fragment.glsl.d.ts.map