declare var _default: "uniform float pointDepth;\n\nuniform float pixelUnit;\nuniform float renderScale;\nuniform float renderScaleInv;\nuniform float focusDepth;\n\nuniform vec4 geometryClip;\nattribute vec4 position4;\nattribute vec2 sprite;\n\nvarying vec2 vSprite;\nvarying float vPixelSize;\n\nconst float pointScale = POINT_SHAPE_SCALE;\n\n// External\nfloat getPointSize(vec4 xyzw);\nvec3 getPosition(vec4 xyzw, float canonical);\n\nvec3 getPointPosition() {\n // Discard out-of-range points by generating degenerate face\n if (\n position4.x > geometryClip.x ||\n position4.y > geometryClip.y ||\n position4.z > geometryClip.z ||\n position4.w > geometryClip.w\n ) return vec3(0.0, 0.0, 0.0);\n vec4 p = position4;\n\n vec3 center = getPosition(p, 1.0);\n\n // Depth blending\n // TODO: orthographic camera\n // Workaround: set depth = 0\n float z = -center.z;\n float depth = mix(z, focusDepth, pointDepth);\n\n // Match device/unit mapping\n // Sprite goes from -1..1, width = 2.\n float pointSize = getPointSize(p);\n float size = pointScale * pointSize * pixelUnit * .5;\n float depthSize = depth * size;\n\n // Pad sprite by half a pixel to make the anti-aliasing straddle the pixel edge\n // Note: pixelsize measures radius\n float pixelSize = .5 * (pointDepth > 0.0 ? depthSize / z : size);\n float paddedSize = pixelSize + 0.5;\n float padFactor = paddedSize / pixelSize;\n\n vPixelSize = paddedSize;\n vSprite = sprite;\n\n return center + vec3(sprite * depthSize * renderScaleInv * padFactor, 0.0);\n}\n"; export default _default;