UNPKG

@deck.gl/arcgis

Version:

Use deck.gl as a custom ArcGIS API for JavaScript layer

8 lines (7 loc) 21.6 kB
{ "version": 3, "sources": ["../src/index.ts", "../src/deck-props.ts", "../src/deck-layer.ts", "../src/commons.ts", "../src/deck-layer-view-2d.ts", "../src/deck-renderer.ts", "../src/load-modules.ts"], "sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport createDeckProps from './deck-props';\nimport createDeckLayer from './deck-layer';\nimport createDeckLayerView2D from './deck-layer-view-2d';\nimport createDeckRenderer from './deck-renderer';\n\nimport Accessor from '@arcgis/core/core/Accessor';\nimport Layer from '@arcgis/core/layers/Layer';\nimport BaseLayerViewGL2D from '@arcgis/core/views/2d/layers/BaseLayerViewGL2D';\nimport * as externalRenderers from '@arcgis/core/views/3d/externalRenderers';\n\n// require-style loader\nexport {loadArcGISModules} from './load-modules';\n\n// ESM-style classes\nconst DeckProps = createDeckProps(Accessor);\nconst DeckLayerView2D = createDeckLayerView2D(BaseLayerViewGL2D);\nexport const DeckLayer = createDeckLayer(DeckProps, Layer, DeckLayerView2D);\nexport const DeckRenderer = createDeckRenderer(DeckProps, externalRenderers);\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nconst properties = {\n layers: {},\n layerFilter: {},\n parameters: {},\n effects: {},\n pickingRadius: {},\n onBeforeRender: {},\n onAfterRender: {},\n onClick: {},\n onHover: {},\n onDragStart: {},\n onDrag: {},\n onDragEnd: {},\n onError: {},\n debug: {},\n drawPickingColors: {},\n getCursor: {},\n getTooltip: {}\n};\n\n/* eslint-disable callback-return */\nexport default function createDeckProps(Accessor) {\n const DeckProps = Accessor.createSubclass({\n properties,\n\n constructor() {\n this._callbacks = {};\n\n this.watch(Object.keys(properties), (newValue, oldValue, propName) => {\n this.emit('change', {[propName]: newValue});\n });\n },\n\n on(eventName, cb) {\n this._callbacks[eventName] = this._callbacks[eventName] || [];\n this._callbacks[eventName].push(cb);\n },\n\n emit(eventName, details) {\n const callbacks = this._callbacks[eventName];\n if (callbacks) {\n for (const cb of callbacks) {\n cb(details);\n }\n }\n },\n\n toJSON() {\n const result = {};\n for (const key of this.keys()) {\n if (this[key] !== undefined) {\n result[key] = this[key];\n }\n }\n return result;\n }\n });\n\n return DeckProps;\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport default function createDeckLayer(DeckProps, Layer, DeckLayerView2D) {\n // A layer that displays inside a MapView using an instance\n // of the layer view defined above.\n return Layer.createSubclass({\n properties: {\n deck: {},\n blendMode: {},\n effect: {}\n },\n\n constructor() {\n this.deck = new DeckProps();\n },\n\n // Called by the MapView whenever a layer view\n // needs to be created for a given layer.\n createLayerView(view) {\n if (view.type === '2d') {\n return new DeckLayerView2D({\n view,\n layer: this\n });\n }\n\n // eslint-disable-next-line\n console.error(\n 'DeckLayer does not support SceneView at the moment. Use DeckRenderer instead.'\n );\n\n return null;\n }\n });\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-invalid-this */\n\nimport {GL} from '@luma.gl/constants';\nimport type {Device, Texture, Framebuffer} from '@luma.gl/core';\nimport {Deck} from '@deck.gl/core';\nimport {Model, Geometry} from '@luma.gl/engine';\nimport {WebGLDevice} from '@luma.gl/webgl';\n\ninterface Renderer {\n redraw: () => void;\n}\n\nexport type RenderResources = {\n deck: Deck;\n texture: Texture;\n model: Model;\n fbo: Framebuffer;\n};\n\nasync function createDeckInstance(gl: WebGL2RenderingContext): Promise<{\n deckInstance: Deck;\n device: Device;\n}> {\n return new Promise(resolve => {\n const deckInstance = new Deck({\n // Input is handled by the ArcGIS API for JavaScript.\n controller: false,\n\n // We use the same WebGL context as the ArcGIS API for JavaScript.\n gl,\n\n // We need depth testing in general; we don't know what layers might be added to the deck.\n parameters: {\n depthCompare: 'less-equal'\n },\n\n // To disable canvas resizing, since the FBO is owned by the ArcGIS API for JavaScript.\n width: null,\n height: null,\n\n onDeviceInitialized: (device: Device) => {\n resolve({deckInstance, device});\n }\n });\n });\n}\n\nexport async function initializeResources(\n this: Renderer,\n gl: WebGL2RenderingContext\n): Promise<RenderResources> {\n const {deckInstance, device} = await createDeckInstance(gl);\n\n const texture = device.createTexture({\n format: 'rgba8unorm',\n width: 1,\n height: 1,\n sampler: {\n minFilter: 'linear',\n magFilter: 'linear',\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge'\n }\n });\n\n const model = new Model(device, {\n vs: `\\\n#version 300 es\nin vec2 pos;\nout vec2 v_texcoord;\nvoid main(void) {\n gl_Position = vec4(pos, 0.0, 1.0);\n v_texcoord = (pos + 1.0) / 2.0;\n}\n `,\n fs: `\\\n#version 300 es\nprecision mediump float;\nuniform sampler2D deckglTexture;\nin vec2 v_texcoord;\nout vec4 fragColor;\n\nvoid main(void) {\n vec4 imageColor = texture(deckglTexture, v_texcoord);\n imageColor.rgb *= imageColor.a;\n fragColor = imageColor;\n}\n `,\n bindings: {\n deckglTexture: texture\n },\n parameters: {\n depthWriteEnabled: true,\n depthCompare: 'less-equal',\n blendColorSrcFactor: 'one',\n blendColorDstFactor: 'one-minus-src-alpha',\n blendAlphaSrcFactor: 'one',\n blendAlphaDstFactor: 'one-minus-src-alpha',\n blendColorOperation: 'add',\n blendAlphaOperation: 'add'\n },\n geometry: new Geometry({\n topology: 'triangle-strip',\n attributes: {\n pos: {size: 2, value: new Int8Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1])}\n }\n }),\n vertexCount: 6,\n disableWarnings: true\n });\n\n const fbo = device.createFramebuffer({\n id: 'deckfbo',\n width: 1,\n height: 1,\n colorAttachments: [texture],\n depthStencilAttachment: 'depth16unorm'\n });\n\n deckInstance.setProps({\n // This deck renders into an auxiliary framebuffer.\n _framebuffer: fbo,\n\n _customRender: redrawReason => {\n if (redrawReason === 'arcgis') {\n deckInstance._drawLayers(redrawReason);\n } else {\n this.redraw();\n }\n }\n });\n\n return {deck: deckInstance, texture, fbo, model};\n}\n\nexport function render(\n resources: RenderResources,\n viewport: {\n width: number;\n height: number;\n longitude: number;\n latitude: number;\n zoom: number;\n altitude?: number;\n pitch: number;\n bearing: number;\n }\n) {\n const {model, deck, fbo} = resources;\n const device = model.device;\n if (device instanceof WebGLDevice) {\n // @ts-ignore device.getParametersWebGL should return `any` not `void`?\n const screenFbo: Framebuffer = device.getParametersWebGL(GL.FRAMEBUFFER_BINDING);\n const {width, height, ...viewState} = viewport;\n\n /* global window */\n const dpr = window.devicePixelRatio;\n const pixelWidth = Math.round(width * dpr);\n const pixelHeight = Math.round(height * dpr);\n\n fbo.resize({width: pixelWidth, height: pixelHeight});\n\n deck.setProps({viewState});\n // redraw deck immediately into deckFbo\n deck.redraw('arcgis');\n\n // We overlay the texture on top of the map using the full-screen quad.\n\n const textureToScreenPass = device.beginRenderPass({\n framebuffer: screenFbo,\n parameters: {viewport: [0, 0, pixelWidth, pixelHeight]},\n clearColor: false,\n clearDepth: false\n });\n try {\n model.draw(textureToScreenPass);\n } finally {\n textureToScreenPass.end();\n }\n }\n}\n\nexport function finalizeResources(resources: RenderResources) {\n resources.deck.finalize();\n resources.model.destroy();\n resources.fbo.destroy();\n resources.texture.destroy();\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {initializeResources, render, finalizeResources} from './commons';\n\nexport default function createDeckLayerView2D(BaseLayerViewGL2D) {\n return BaseLayerViewGL2D.createSubclass({\n properties: {\n cancelInitialization: null,\n resources: null\n },\n\n // Attach is called as soon as the layer view is ready to start rendering.\n async attach() {\n // We use a full-screen quad and shaders to composite the frame rendered\n // with deck.gl on top of the MapView. Composition uses the MapView context.\n const gl = this.context;\n\n let cancelled = false;\n this.cancelInitialization = () => (cancelled = true);\n const resources = await initializeResources.call(this, gl);\n // If the layer got detached while awaiting, do not proceed\n if (cancelled) {\n finalizeResources(resources);\n return;\n }\n this.resources = resources;\n\n // Update deck props\n this.layer.deck.on('change', props => resources.deck.setProps(props));\n\n // We need to start drawing the deck.gl layer immediately.\n resources.deck.setProps(this.layer.deck.toJSON());\n },\n\n redraw() {\n this.requestRender();\n },\n\n // Called when the layer must be destroyed.\n detach() {\n this.cancelInitialization?.();\n if (this.resources) {\n finalizeResources(this.resources);\n this.resources = null;\n }\n },\n\n // Called every time that the layer view must be rendered.\n render(renderParameters) {\n if (!this.resources) {\n return;\n }\n\n const [width, height] = this.view.state.size;\n // The view state must be kept in-sync with the MapView of the ArcGIS API.\n const state = renderParameters.state;\n\n render(this.resources, {\n width,\n height,\n latitude: this.view.center.latitude,\n longitude: this.view.center.longitude,\n zoom: this.view.featuresTilingScheme.scaleToLevel(state.scale),\n bearing: -state.rotation,\n pitch: 0\n });\n }\n });\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-invalid-this */\nimport {initializeResources, render, finalizeResources, RenderResources} from './commons';\n\nimport SceneView from '@arcgis/core/views/SceneView';\nimport type {DeckProps} from '@deck.gl/core';\n\n/** Convert ArcGIS FOV to WebMercatorViewport altitude */\nfunction arcgisFOVToDeckAltitude(fov: number, aspectRatio: number): number {\n // ArcGIS fov is corner-to-corner\n const D = Math.sqrt(1 + aspectRatio ** 2);\n const halfFOV = (fov / 2 / 180) * Math.PI;\n return D / 2 / Math.tan(halfFOV);\n}\n\nexport default function createDeckRenderer(DeckProps, externalRenderers) {\n class DeckRenderer {\n view: SceneView;\n deck: any;\n resources: RenderResources | null = null;\n cancelInitialization: (() => void) | null = null;\n\n constructor(view: SceneView, props: DeckProps) {\n this.view = view;\n this.deck = new DeckProps(props);\n }\n\n async setup(context) {\n const gl = context.gl;\n\n let cancelled = false;\n this.cancelInitialization = () => (cancelled = true);\n const resources = await initializeResources.call(this, gl);\n // If the renderer got disposed while awaiting, do not proceed\n if (cancelled) {\n finalizeResources(resources);\n return;\n }\n\n this.deck.on('change', props => resources.deck.setProps(props));\n\n resources.deck.setProps(this.deck.toJSON());\n this.resources = resources;\n }\n\n dispose() {\n this.cancelInitialization?.();\n if (this.resources) {\n finalizeResources(this.resources);\n }\n }\n\n redraw() {\n externalRenderers.requestRender(this.view);\n }\n\n render() {\n const [width, height] = this.view.size;\n\n render(this.resources!, {\n width,\n height,\n latitude: this.view.center.latitude,\n longitude: this.view.center.longitude,\n altitude: arcgisFOVToDeckAltitude(this.view.camera.fov, width / height),\n zoom: this.view.zoom,\n bearing: this.view.camera.heading,\n pitch: this.view.camera.tilt\n });\n }\n }\n\n return DeckRenderer;\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport createDeckProps from './deck-props';\nimport createDeckLayer from './deck-layer';\nimport createDeckLayerView2D from './deck-layer-view-2d';\nimport createDeckRenderer from './deck-renderer';\nimport {loadModules as esriLoaderLoadModules, ILoadScriptOptions} from 'esri-loader';\n\ntype LoadedModules = {\n DeckLayer: any;\n DeckRenderer: any;\n modules?: unknown[];\n};\n\nlet arcGIS: LoadedModules;\n\nexport async function loadArcGISModules(\n modules: string[],\n loadScriptOptions: ILoadScriptOptions\n): Promise<LoadedModules> {\n const namespace = Array.isArray(modules) ? null : modules;\n await loadArcGISModule(namespace, loadScriptOptions);\n\n if (Array.isArray(modules)) {\n return esriLoaderLoadModules(modules, loadScriptOptions).then(array => {\n return {...arcGIS, modules: array};\n });\n }\n return arcGIS;\n}\n\nasync function loadArcGISModule(\n esri,\n loadScriptOptions: ILoadScriptOptions\n): Promise<LoadedModules> {\n if (arcGIS) {\n // Already loaded\n return arcGIS;\n }\n if (esri) {\n // Using user-provided dependencies\n // Right now this object has to be manually assembled - let @arcgis/webpack-plugin handle this?\n const Layer = esri.layers.Layer;\n const Accessor = esri.core.Accessor;\n const BaseLayerViewGL2D = esri.views['2d'].layers.BaseLayerViewGL2D;\n const externalRenderers = esri.views['3d'].externalRenderers;\n\n return initialize(Layer, Accessor, BaseLayerViewGL2D, externalRenderers);\n }\n\n const [Layer, Accessor, BaseLayerViewGL2D, externalRenderers] = await esriLoaderLoadModules(\n [\n 'esri/layers/Layer',\n 'esri/core/Accessor',\n 'esri/views/2d/layers/BaseLayerViewGL2D',\n 'esri/views/3d/externalRenderers'\n ],\n loadScriptOptions\n );\n return initialize(Layer, Accessor, BaseLayerViewGL2D, externalRenderers);\n}\n\nfunction initialize(Layer, Accessor, BaseLayerViewGL2D, externalRenderers): LoadedModules {\n const DeckProps = createDeckProps(Accessor);\n const DeckLayerView2D = createDeckLayerView2D(BaseLayerViewGL2D);\n const DeckLayer = createDeckLayer(DeckProps, Layer, DeckLayerView2D);\n const DeckRenderer = createDeckRenderer(DeckProps, externalRenderers);\n\n arcGIS = {DeckLayer, DeckRenderer};\n return arcGIS;\n}\n"], "mappings": "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", "names": ["Accessor", "DeckProps", "DeckProps", "Layer", "DeckLayerView2D", "BaseLayerViewGL2D", "DeckProps", "externalRenderers", "DeckRenderer", "esriLoaderLoadModules", "Layer", "Accessor", "BaseLayerViewGL2D", "externalRenderers", "DeckProps", "DeckLayerView2D", "DeckLayer", "DeckRenderer", "Accessor", "BaseLayerViewGL2D", "Layer"] }