@deck.gl-community/layers
Version:
Add-on layers for deck.gl
8 lines (7 loc) • 28.2 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../src/index.ts", "../src/path-outline-layer/path-outline-layer.ts", "../src/path-outline-layer/outline.ts", "../src/path-marker-layer/path-marker-layer.ts", "../src/path-marker-layer/arrow-2d-geometry.ts", "../src/path-marker-layer/create-path-markers.ts", "../src/path-marker-layer/polyline.ts"],
"sourcesContent": ["// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {PathOutlineLayerProps} from './path-outline-layer/path-outline-layer';\nexport {PathOutlineLayer} from './path-outline-layer/path-outline-layer';\n\nexport type {PathMarkerLayerProps} from './path-marker-layer/path-marker-layer';\nexport {PathMarkerLayer} from './path-marker-layer/path-marker-layer';\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {PathLayerProps} from '@deck.gl/layers';\nimport {PathLayer} from '@deck.gl/layers';\nimport type {DefaultProps, LayerContext} from '@deck.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {Framebuffer, Texture} from '@luma.gl/core';\nimport {outline} from './outline';\n\n/**\n * Unit literal to shader unit number conversion.\n */\nexport const UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n};\n\n// TODO - this should be built into assembleShaders\nfunction injectShaderCode({source, code = ''}) {\n const INJECT_CODE = /}[^{}]*$/;\n return source.replace(INJECT_CODE, code.concat('\\n}\\n'));\n}\n\nconst VS_CODE = `\\\n outline_setUV(gl_Position);\n outline_setZLevel(instanceZLevel);\n`;\n\nconst FS_CODE = `\\\n fragColor = outline_filterColor(fragColor);\n`;\n\nexport type PathOutlineLayerProps<DataT> = PathLayerProps<DataT> & {\n dashJustified?: boolean;\n getDashArray?: [number, number] | ((d: DataT) => [number, number] | null);\n getZLevel?: (d: DataT, index: number) => number;\n};\n\nconst defaultProps: DefaultProps<PathOutlineLayerProps<any>> = {\n getZLevel: () => 0\n};\n\nexport class PathOutlineLayer<DataT = any, ExtraPropsT = Record<string, unknown>> extends PathLayer<\n DataT,\n ExtraPropsT & Required<PathOutlineLayerProps<DataT>>\n> {\n static layerName = 'PathOutlineLayer';\n static defaultProps = defaultProps;\n\n state: {\n model?: any;\n pathTesselator: any;\n outlineFramebuffer: Framebuffer;\n dummyTexture: Texture;\n } = undefined!;\n\n // Override getShaders to inject the outline module\n getShaders() {\n const shaders = super.getShaders();\n return Object.assign({}, shaders, {\n modules: shaders.modules.concat([outline]),\n vs: injectShaderCode({source: shaders.vs, code: VS_CODE}),\n fs: injectShaderCode({source: shaders.fs, code: FS_CODE})\n });\n }\n\n // @ts-expect-error PathLayer is missing LayerContext arg\n initializeState(context: LayerContext) {\n super.initializeState();\n\n // Create an outline \"shadow\" map\n // TODO - we should create a single outlineMap for all layers\n this.setState({\n outlineFramebuffer: context.device.createFramebuffer({}),\n dummyTexture: context.device.createTexture({})\n });\n\n // Create an attribute manager\n // @ts-expect-error check whether this.getAttributeManager works here\n this.state.attributeManager.addInstanced({\n instanceZLevel: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getZLevel'\n }\n });\n }\n\n // Override draw to add render module\n draw({moduleParameters = {}, parameters, uniforms, context}) {\n // Need to calculate same uniforms as base layer\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n\n uniforms = Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n });\n\n // Render the outline shadowmap (based on segment z orders)\n const {outlineFramebuffer, dummyTexture} = this.state;\n // TODO(v9): resize, see 'sf' example.\n // outlineFramebuffer.resize();\n // TODO(v9) clear FBO\n // outlineFramebuffer.clear({ color: true, depth: true, stencil: true });\n\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: true,\n outlineShadowmap: dummyTexture\n });\n\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: 0,\n widthScale: this.props.widthScale * 1.3\n }),\n parameters: {\n depthTest: false,\n // Biggest value needs to go into buffer\n blendEquation: GL.MAX\n },\n framebuffer: outlineFramebuffer\n });\n\n // Now use the outline shadowmap to render the lines (with outlines)\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: false,\n outlineShadowmap: outlineFramebuffer\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n widthScale: this.props.widthScale\n }),\n parameters: {\n depthTest: false\n }\n });\n }\n}\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {ShaderModule} from '@luma.gl/shadertools';\n\n/* eslint-disable camelcase */\nconst INITIAL_STATE: Record<string, any> = {\n outlineEnabled: false,\n outlineRenderShadowmap: false,\n outlineShadowmap: null\n};\n\nfunction getUniforms({outlineEnabled, outlineRenderShadowmap, outlineShadowmap} = INITIAL_STATE) {\n const uniforms: Record<string, any> = {};\n if (outlineEnabled !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uEnabled = outlineEnabled;\n }\n if (outlineRenderShadowmap !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uRenderOutlines = outlineRenderShadowmap;\n }\n if (outlineShadowmap !== undefined) {\n uniforms.outline_uShadowmap = outlineShadowmap;\n }\n return uniforms;\n}\n\nconst vs = `\\\n#version 300 es\nin float instanceZLevel;\nout float outline_vzLevel;\nout vec4 outline_vPosition;\n\n// Set the z level for the outline shadowmap rendering\nvoid outline_setZLevel(float zLevel) {\n outline_vzLevel = zLevel;\n}\n\n// Store an adjusted position for texture2DProj\nvoid outline_setUV(vec4 position) {\n // mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n`;\n\nconst fs = `\\\nuniform bool outline_uEnabled;\nuniform bool outline_uRenderOutlines;\nuniform sampler2D outline_uShadowmap;\n\nin float outline_vzLevel;\n// in vec2 outline_vUV;\nin vec4 outline_vPosition;\n\nout vec4 fragColor;\n\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\n\n// Return a darker color in shadowmap\nvec4 outline_filterShadowColor(vec4 color) {\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\n}\n\n// Return a darker color if in shadowmap\nvec4 outline_filterDarkenColor(vec4 color) {\n if (outline_uEnabled) {\n float maxZLevel;\n if (outline_vPosition.q > 0.0) {\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\n } else {\n discard;\n }\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\n vec4(color.rgb * 0.5, color.a);\n } else {\n discard;\n }\n }\n return color;\n}\n\n// if enabled and rendering outlines - Render depth to shadowmap\n// if enabled and rendering colors - Return a darker color if in shadowmap\n// if disabled, just return color\nvec4 outline_filterColor(vec4 color) {\n if (outline_uEnabled) {\n return outline_uRenderOutlines ?\n outline_filterShadowColor(color) :\n outline_filterDarkenColor(color);\n }\n return color;\n}\n`;\n\nexport const outline = {\n name: 'outline',\n vs,\n fs,\n getUniforms\n} as const satisfies ShaderModule;\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {DefaultProps} from '@deck.gl/core';\nimport {CompositeLayer, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ScatterplotLayer} from '@deck.gl/layers';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {PathOutlineLayer, PathOutlineLayerProps} from '../path-outline-layer/path-outline-layer';\nimport {Arrow2DGeometry} from './arrow-2d-geometry';\n\nimport {createPathMarkers} from './create-path-markers';\nimport {getClosestPointOnPolyline} from './polyline';\nimport {Vector3} from '@math.gl/core';\n\nconst DISTANCE_FOR_MULTI_ARROWS = 0.1;\nconst ARROW_HEAD_SIZE = 0.2;\nconst ARROW_TAIL_WIDTH = 0.05;\n// const ARROW_CENTER_ADJUST = -0.8;\n\nconst DEFAULT_MARKER_LAYER = SimpleMeshLayer;\n\nexport type PathMarkerLayerProps<DataT> = PathOutlineLayerProps<DataT> & {\n getDirection?: (x) => any;\n getMarkerColor?: (x) => number[];\n getMarkerPercentages?: (x: any, info: any) => number[];\n highlightPoint?: any;\n highlightIndex?: number;\n MarkerLayer?: any;\n markerLayerProps?: any;\n sizeScale?: number;\n fp64?: boolean;\n nebulaLayer?: any;\n};\n\nconst DEFAULT_MARKER_LAYER_PROPS = {\n mesh: new Arrow2DGeometry({headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH})\n};\n\nconst defaultProps: DefaultProps<PathMarkerLayerProps<any>> = Object.assign(\n {},\n PathOutlineLayer.defaultProps,\n {\n MarkerLayer: DEFAULT_MARKER_LAYER,\n markerLayerProps: DEFAULT_MARKER_LAYER_PROPS,\n\n sizeScale: 100,\n fp64: false,\n\n highlightIndex: -1,\n highlightPoint: null,\n\n getPath: (x) => x.path,\n getColor: (x) => x.color,\n getMarkerColor: (x) => [0, 0, 0, 255],\n getDirection: (x) => x.direction,\n getMarkerPercentages: (object, {lineLength}) =>\n lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5]\n }\n);\n\nexport class PathMarkerLayer<\n DataT = any,\n ExtraPropsT = Record<string, unknown>\n> extends CompositeLayer<ExtraPropsT & Required<PathMarkerLayerProps<DataT>>> {\n static layerName = 'PathMarkerLayer';\n static defaultProps = defaultProps;\n\n state: {\n closestPoint: Vector3 | null;\n closestPoints?: {position: Vector3}[];\n markers: any[];\n mesh: Arrow2DGeometry;\n } = undefined!;\n\n initializeState() {\n this.state = {\n markers: [],\n mesh: new Arrow2DGeometry({headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH}),\n closestPoint: null,\n closestPoints: []\n };\n }\n\n projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {\n if (coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {\n const [dx, dy] = viewport.metersToLngLatDelta(xyz);\n const [x, y] = coordinateOrigin;\n return viewport.projectFlat([x + dx, dy + y]);\n } else if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS) {\n const [dx, dy] = xyz;\n const [x, y] = coordinateOrigin;\n return viewport.projectFlat([x + dx, dy + y]);\n }\n\n return viewport.projectFlat(xyz);\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {\n const {\n data,\n getPath,\n getDirection,\n getMarkerColor,\n getMarkerPercentages,\n coordinateSystem,\n coordinateOrigin\n } = this.props;\n\n const {viewport} = this.context;\n const projectFlat = (o) => this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);\n this.state.markers = createPathMarkers({\n data,\n getPath,\n getDirection,\n getColor: getMarkerColor,\n getMarkerPercentages,\n projectFlat\n });\n this._recalculateClosestPoint();\n }\n if (changeFlags.propsChanged) {\n if (props.point !== oldProps.point) {\n this._recalculateClosestPoint();\n }\n }\n }\n\n _recalculateClosestPoint() {\n const {highlightPoint, highlightIndex} = this.props;\n if (highlightPoint && highlightIndex >= 0) {\n const object = this.props.data[highlightIndex];\n const points = this.props.getPath(object, null as any);\n const {point} = getClosestPointOnPolyline({points, p: highlightPoint});\n this.state.closestPoints = [{position: point}];\n } else {\n this.state.closestPoints = [];\n }\n }\n\n getPickingInfo({info}) {\n return Object.assign(info, {\n // override object with picked feature\n object: (info.object && info.object.path) || info.object\n });\n }\n\n renderLayers() {\n return [\n new PathOutlineLayer(\n this.props,\n this.getSubLayerProps({\n id: 'paths',\n // Note: data has to be passed explicitly like this to avoid being empty\n data: this.props.data\n })\n ),\n new this.props.MarkerLayer(\n this.getSubLayerProps(\n Object.assign({}, this.props.markerLayerProps, {\n id: 'markers',\n data: this.state.markers,\n getOrientation: (x) => [0, -x.angle, 0],\n getColor: (x) => x.color,\n sizeScale: this.props.sizeScale,\n fp64: this.props.fp64,\n pickable: false,\n parameters: {\n blend: false,\n depthTest: false\n }\n })\n )\n ),\n this.state.closestPoints &&\n new ScatterplotLayer({\n id: `${this.props.id}-highlight`,\n data: this.state.closestPoints,\n fp64: this.props.fp64\n })\n ];\n }\n}\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Geometry} from '@luma.gl/engine';\n\nexport class Arrow2DGeometry extends Geometry {\n constructor(opts = {}) {\n super(\n Object.assign({}, opts, {\n attributes: getArrowAttributes(opts),\n topology: 'triangle-list' as const\n })\n );\n }\n}\n\nfunction getArrowAttributes({length = 1, headSize = 0.2, tailWidth = 0.05, tailStart = 0.05}) {\n const texCoords = [\n // HEAD\n 0.5,\n 1.0,\n 0,\n 0.5 - headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 + headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0\n ];\n\n const normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1];\n\n // Center and scale\n const positions = new Array(texCoords.length);\n for (let i = 0; i < texCoords.length / 3; i++) {\n const i3 = i * 3;\n positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;\n positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;\n positions[i3 + 2] = 0;\n }\n return {\n positions: {size: 3, value: new Float32Array(positions)},\n normals: {size: 3, value: new Float32Array(normals)},\n texCoords: {size: 2, value: new Float32Array(texCoords)}\n };\n}\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Vector2} from '@math.gl/core';\n\n/** GeoJSON style position coordinate vector */\nexport type Position = [number, number] | [number, number, number];\n\n/** [red, green, blue, alpha] in premultiplied alpha format */\nexport type Color = [number, number, number, number];\n\nexport interface PathMarker {\n position: Position;\n angle: number;\n color: Color;\n object: unknown;\n}\n\nfunction getLineLength(vPoints) {\n // calculate total length\n let lineLength = 0;\n for (let i = 0; i < vPoints.length - 1; i++) {\n lineLength += vPoints[i].distance(vPoints[i + 1]);\n }\n return lineLength;\n}\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_DIRECTION = {forward: true, backward: false};\n\nexport function createPathMarkers({\n data,\n getPath = (x, context) => x.path,\n getDirection = (x) => x.direction,\n getColor = (x) => DEFAULT_COLOR,\n getMarkerPercentages = (x, info) => [0.5],\n projectFlat\n}): PathMarker[] {\n const markers: PathMarker[] = [];\n\n for (const object of data) {\n const path = getPath(object, null);\n const direction = getDirection(object) || DEFAULT_DIRECTION;\n const color = getColor(object);\n\n const vPoints = path.map((p) => new Vector2(p));\n const vPointsReverse = vPoints.slice(0).reverse();\n\n // calculate total length\n const lineLength = getLineLength(vPoints);\n\n // Ask for where to put markers\n const percentages = getMarkerPercentages(object, {lineLength});\n\n // Create the markers\n for (const percentage of percentages) {\n if (direction.forward) {\n const marker = createMarkerAlongPath({\n path: vPoints,\n percentage,\n lineLength,\n color,\n object,\n projectFlat\n });\n markers.push(marker);\n }\n\n if (direction.backward) {\n const marker = createMarkerAlongPath({\n path: vPointsReverse,\n percentage,\n lineLength,\n color,\n object,\n projectFlat\n });\n markers.push(marker);\n }\n }\n }\n\n return markers;\n}\n\nfunction createMarkerAlongPath({\n path,\n percentage,\n lineLength,\n color,\n object,\n projectFlat\n}): PathMarker {\n const distanceAlong = lineLength * percentage;\n let currentDistance = 0;\n let previousDistance = 0;\n let i = 0;\n for (i = 0; i < path.length - 1; i++) {\n currentDistance += path[i].distance(path[i + 1]);\n if (currentDistance > distanceAlong) {\n break;\n }\n previousDistance = currentDistance;\n }\n\n // If reached the end of the loop without exiting early,\n // undo the final increment to avoid a null-pointer exception\n if (i === path.length - 1) {\n i -= 1;\n }\n\n const vDirection = path[i + 1].clone().subtract(path[i]).normalize();\n const along = distanceAlong - previousDistance;\n const vCenter = vDirection.clone().multiply(new Vector2(along, along)).add(path[i]);\n\n const vDirection2 = new Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));\n\n const angle = (vDirection2.verticalAngle() * 180) / Math.PI;\n\n return {position: [vCenter.x, vCenter.y, 0], angle, color, object};\n}\n", "// deck.gl-community\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Vector3, clamp} from '@math.gl/core';\n\n// Return the closest point on a line segment\nexport function getClosestPointOnLine({p, p1, p2, clampToLine = true}) {\n const lineVector = new Vector3(p2).subtract(p1);\n const pointVector = new Vector3(p).subtract(p1);\n let dotProduct = lineVector.dot(pointVector);\n if (clampToLine) {\n dotProduct = clamp(dotProduct, 0, 1);\n }\n\n return lineVector.lerp(p1, p2, dotProduct);\n}\n\n// Return the closest point on a line segment\nexport function getClosestPointOnPolyline({p, points}) {\n p = new Vector3(p);\n let pClosest: Vector3 | null = null;\n let distanceSquared = Infinity;\n let index = -1;\n for (let i = 0; i < points.length - 1; ++i) {\n const p1 = points[i];\n const p2 = points[i + 1];\n const pClosestOnLine = getClosestPointOnLine({p, p1, p2});\n const distanceToLineSquared = p.distanceSquared(pClosestOnLine);\n if (distanceToLineSquared < distanceSquared) {\n distanceSquared = distanceToLineSquared;\n pClosest = pClosestOnLine;\n index = i;\n }\n }\n return {\n point: pClosest,\n index,\n p1: points[index],\n p2: points[index + 1],\n distanceSquared,\n distance: Math.sqrt(distanceSquared)\n };\n}\n"],
"mappings": "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",
"names": ["import_core", "import_layers", "import_core", "defaultProps"]
}