@deck.gl/extensions 8.10.0-alpha.4 → 8.10.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/dist.dev.js +38 -660
  2. package/dist/es5/brushing/brushing-extension.js +48 -54
  3. package/dist/es5/brushing/brushing-extension.js.map +1 -1
  4. package/dist/es5/clip/clip-extension.js +32 -37
  5. package/dist/es5/clip/clip-extension.js.map +1 -1
  6. package/dist/es5/collision-filter/collision-filter-effect.js +217 -225
  7. package/dist/es5/collision-filter/collision-filter-effect.js.map +1 -1
  8. package/dist/es5/collision-filter/collision-filter-extension.js +49 -56
  9. package/dist/es5/collision-filter/collision-filter-extension.js.map +1 -1
  10. package/dist/es5/collision-filter/collision-filter-pass.js +31 -34
  11. package/dist/es5/collision-filter/collision-filter-pass.js.map +1 -1
  12. package/dist/es5/data-filter/data-filter-extension.js +126 -132
  13. package/dist/es5/data-filter/data-filter-extension.js.map +1 -1
  14. package/dist/es5/fill-style/fill-style-extension.js +101 -109
  15. package/dist/es5/fill-style/fill-style-extension.js.map +1 -1
  16. package/dist/es5/fp64/fp64-extension.js +12 -16
  17. package/dist/es5/fp64/fp64-extension.js.map +1 -1
  18. package/dist/es5/mask/mask-effect.js +208 -216
  19. package/dist/es5/mask/mask-effect.js.map +1 -1
  20. package/dist/es5/mask/mask-extension.js +57 -63
  21. package/dist/es5/mask/mask-extension.js.map +1 -1
  22. package/dist/es5/mask/mask-pass.js +36 -42
  23. package/dist/es5/mask/mask-pass.js.map +1 -1
  24. package/dist/es5/path-style/path-style-extension.js +81 -89
  25. package/dist/es5/path-style/path-style-extension.js.map +1 -1
  26. package/dist/es5/terrain/height-map-builder.js +73 -80
  27. package/dist/es5/terrain/height-map-builder.js.map +1 -1
  28. package/dist/es5/terrain/terrain-cover.js +155 -162
  29. package/dist/es5/terrain/terrain-cover.js.map +1 -1
  30. package/dist/es5/terrain/terrain-effect.js +233 -242
  31. package/dist/es5/terrain/terrain-effect.js.map +1 -1
  32. package/dist/es5/terrain/terrain-extension.js +44 -51
  33. package/dist/es5/terrain/terrain-extension.js.map +1 -1
  34. package/dist/es5/terrain/terrain-pass.js +61 -65
  35. package/dist/es5/terrain/terrain-pass.js.map +1 -1
  36. package/dist/es5/terrain/terrain-picking-pass.js +56 -62
  37. package/dist/es5/terrain/terrain-picking-pass.js.map +1 -1
  38. package/dist/esm/brushing/brushing-extension.js +2 -5
  39. package/dist/esm/brushing/brushing-extension.js.map +1 -1
  40. package/dist/esm/brushing/shader-module.js +67 -4
  41. package/dist/esm/brushing/shader-module.js.map +1 -1
  42. package/dist/esm/clip/clip-extension.js +33 -14
  43. package/dist/esm/clip/clip-extension.js.map +1 -1
  44. package/dist/esm/collision-filter/collision-filter-effect.js +10 -19
  45. package/dist/esm/collision-filter/collision-filter-effect.js.map +1 -1
  46. package/dist/esm/collision-filter/collision-filter-extension.js +2 -5
  47. package/dist/esm/collision-filter/collision-filter-extension.js.map +1 -1
  48. package/dist/esm/collision-filter/shader-module.js +76 -4
  49. package/dist/esm/collision-filter/shader-module.js.map +1 -1
  50. package/dist/esm/data-filter/aggregator.js +45 -2
  51. package/dist/esm/data-filter/aggregator.js.map +1 -1
  52. package/dist/esm/data-filter/data-filter-extension.js +2 -5
  53. package/dist/esm/data-filter/data-filter-extension.js.map +1 -1
  54. package/dist/esm/data-filter/shader-module.js +86 -6
  55. package/dist/esm/data-filter/shader-module.js.map +1 -1
  56. package/dist/esm/fill-style/fill-style-extension.js +2 -5
  57. package/dist/esm/fill-style/fill-style-extension.js.map +1 -1
  58. package/dist/esm/fill-style/shaders.glsl.js +60 -5
  59. package/dist/esm/fill-style/shaders.glsl.js.map +1 -1
  60. package/dist/esm/fp64/fp64-extension.js +1 -3
  61. package/dist/esm/fp64/fp64-extension.js.map +1 -1
  62. package/dist/esm/fp64/project64.glsl.js +81 -1
  63. package/dist/esm/fp64/project64.glsl.js.map +1 -1
  64. package/dist/esm/mask/mask-effect.js +10 -20
  65. package/dist/esm/mask/mask-effect.js.map +1 -1
  66. package/dist/esm/mask/mask-extension.js +3 -6
  67. package/dist/esm/mask/mask-extension.js.map +1 -1
  68. package/dist/esm/mask/mask-pass.js +2 -6
  69. package/dist/esm/mask/mask-pass.js.map +1 -1
  70. package/dist/esm/mask/shader-module.js +61 -6
  71. package/dist/esm/mask/shader-module.js.map +1 -1
  72. package/dist/esm/path-style/path-style-extension.js +2 -5
  73. package/dist/esm/path-style/path-style-extension.js.map +1 -1
  74. package/dist/esm/path-style/shaders.glsl.js +79 -8
  75. package/dist/esm/path-style/shaders.glsl.js.map +1 -1
  76. package/dist/esm/terrain/height-map-builder.js +8 -17
  77. package/dist/esm/terrain/height-map-builder.js.map +1 -1
  78. package/dist/esm/terrain/shader-module.js +59 -7
  79. package/dist/esm/terrain/shader-module.js.map +1 -1
  80. package/dist/esm/terrain/terrain-cover.js +11 -22
  81. package/dist/esm/terrain/terrain-cover.js.map +1 -1
  82. package/dist/esm/terrain/terrain-effect.js +11 -21
  83. package/dist/esm/terrain/terrain-effect.js.map +1 -1
  84. package/dist/esm/terrain/terrain-extension.js +2 -5
  85. package/dist/esm/terrain/terrain-extension.js.map +1 -1
  86. package/dist/esm/terrain/terrain-pass.js +1 -1
  87. package/dist/esm/terrain/terrain-pass.js.map +1 -1
  88. package/dist/esm/terrain/terrain-picking-pass.js +2 -4
  89. package/dist/esm/terrain/terrain-picking-pass.js.map +1 -1
  90. package/dist.min.js +36 -35
  91. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/terrain/terrain-effect.ts"],"names":["TerrainEffect","Map","gl","dummyHeightMap","Texture2D","width","height","data","Uint8Array","terrainPass","TerrainPass","id","terrainPickingPass","TerrainPickingPass","HeightMapBuilder","isSupported","heightMap","log","warn","ProgramManager","getDefaultProgramManager","addDefaultModule","terrainModule","opts","initialize","layers","layer","props","operation","includes","setChangeFlags","extensionsChanged","pickZ","isDrapingEnabled","viewports","isPicking","viewport","getRenderableLayers","terrainLayers","filter","l","length","offsetLayers","state","terrainDrawMode","_updateHeightMap","drapeLayers","_updateTerrainCovers","getRenderFramebuffer","heightMapBounds","bounds","terrainCover","terrainCovers","get","useTerrainHeightMap","terrainSkipRender","delete","undefined","values","clear","shouldUpdate","renderHeightMap","moduleParameters","devicePixelRatio","drawToTerrainHeightMap","layerNeedsRedraw","terrainCoverNeedsRedraw","isDirty","_updateTerrainCover","_pruneTerrainCovers","terrainLayer","renderPass","TerrainCover","set","targetLayer","renderTerrainCover","err","raiseError","idsToRemove","isActive","push"],"mappings":"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","sourcesContent":["import {Texture2D, ProgramManager} from '@luma.gl/core';\nimport {log} from '@deck.gl/core';\n\nimport {terrainModule, TerrainModuleSettings} from './shader-module';\nimport {TerrainCover} from './terrain-cover';\nimport {TerrainPass} from './terrain-pass';\nimport {TerrainPickingPass, TerrainPickingPassRenderOptions} from './terrain-picking-pass';\nimport {HeightMapBuilder} from './height-map-builder';\n\nimport type {Effect, PreRenderOptions, Layer, Viewport} from '@deck.gl/core';\n\n/** Class to manage terrain effect */\nexport class TerrainEffect implements Effect {\n id = 'terrain-effect';\n props = null;\n useInPicking = true;\n\n /** true if picking in the current pass */\n private isPicking: boolean = false;\n /** true if should use in the current pass */\n private isDrapingEnabled: boolean = false;\n /** An empty texture as placeholder */\n private dummyHeightMap: Texture2D;\n /** A texture encoding the ground elevation, updated once per redraw. Used by layers with offset mode */\n private heightMap?: HeightMapBuilder;\n private terrainPass!: TerrainPass;\n private terrainPickingPass!: TerrainPickingPass;\n /** One texture for each primitive terrain layer, into which the draped layers render */\n private terrainCovers: Map<string, TerrainCover> = new Map();\n\n initialize(gl: WebGLRenderingContext) {\n this.dummyHeightMap = new Texture2D(gl, {\n width: 1,\n height: 1,\n data: new Uint8Array([0, 0, 0, 0])\n });\n this.terrainPass = new TerrainPass(gl, {id: 'terrain'});\n this.terrainPickingPass = new TerrainPickingPass(gl, {id: 'terrain-picking'});\n\n if (HeightMapBuilder.isSupported(gl)) {\n this.heightMap = new HeightMapBuilder(gl);\n } else {\n log.warn('Terrain offset mode is not supported by this browser')();\n }\n\n ProgramManager.getDefaultProgramManager(gl).addDefaultModule(terrainModule);\n }\n\n preRender(gl: WebGLRenderingContext, opts: PreRenderOptions): void {\n if (!this.dummyHeightMap) {\n // First time this effect is in use, initialize resources and register the shader module\n this.initialize(gl);\n for (const layer of opts.layers) {\n // Force the terrain layer (and its descendents) to rebuild their models with the new shader\n if (layer.props.operation.includes('terrain')) {\n layer.setChangeFlags({extensionsChanged: true});\n }\n }\n }\n\n // @ts-expect-error pickZ only defined in picking pass\n if (opts.pickZ) {\n // Do not update if picking attributes\n this.isDrapingEnabled = false;\n return;\n }\n\n const {viewports, isPicking = false} = opts;\n this.isPicking = isPicking;\n this.isDrapingEnabled = true;\n\n // TODO - support multiple views?\n const viewport = viewports[0];\n const layers = (isPicking ? this.terrainPickingPass : this.terrainPass).getRenderableLayers(\n viewport,\n opts as TerrainPickingPassRenderOptions\n );\n\n const terrainLayers = layers.filter(l => l.props.operation.includes('terrain'));\n if (terrainLayers.length === 0) {\n return;\n }\n\n if (!isPicking) {\n const offsetLayers = layers.filter(l => l.state.terrainDrawMode === 'offset');\n if (offsetLayers.length > 0) {\n this._updateHeightMap(terrainLayers, viewport, opts);\n }\n }\n\n const drapeLayers = layers.filter(l => l.state.terrainDrawMode === 'drape');\n this._updateTerrainCovers(terrainLayers, drapeLayers, viewport, opts);\n }\n\n getModuleParameters(layer: Layer): TerrainModuleSettings {\n const {terrainDrawMode} = layer.state;\n\n return {\n heightMap: this.heightMap?.getRenderFramebuffer(),\n heightMapBounds: this.heightMap?.bounds,\n dummyHeightMap: this.dummyHeightMap,\n terrainCover: this.isDrapingEnabled ? this.terrainCovers.get(layer.id) : null,\n useTerrainHeightMap: terrainDrawMode === 'offset',\n terrainSkipRender: terrainDrawMode === 'drape' || !layer.props.operation.includes('draw')\n };\n }\n\n cleanup(): void {\n if (this.dummyHeightMap) {\n this.dummyHeightMap.delete();\n this.dummyHeightMap = undefined;\n }\n\n if (this.heightMap) {\n this.heightMap.delete();\n this.heightMap = undefined;\n }\n\n for (const terrainCover of this.terrainCovers.values()) {\n terrainCover.delete();\n }\n this.terrainCovers.clear();\n }\n\n private _updateHeightMap(terrainLayers: Layer[], viewport: Viewport, opts: PreRenderOptions) {\n if (!this.heightMap) {\n // Not supported\n return;\n }\n\n const shouldUpdate = this.heightMap.shouldUpdate({layers: terrainLayers, viewport});\n if (!shouldUpdate) {\n return;\n }\n\n this.terrainPass.renderHeightMap(this.heightMap, {\n ...opts,\n layers: terrainLayers,\n moduleParameters: {\n heightMapBounds: this.heightMap.bounds,\n dummyHeightMap: this.dummyHeightMap,\n devicePixelRatio: 1,\n drawToTerrainHeightMap: true\n }\n });\n }\n\n private _updateTerrainCovers(\n terrainLayers: Layer[],\n drapeLayers: Layer[],\n viewport: Viewport,\n opts: PreRenderOptions\n ) {\n // Mark a terrain cover as dirty if one of the drape layers needs redraw\n const layerNeedsRedraw: Record<string, boolean> = {};\n for (const layer of drapeLayers) {\n if (layer.state.terrainCoverNeedsRedraw) {\n layerNeedsRedraw[layer.id] = true;\n layer.state.terrainCoverNeedsRedraw = false;\n }\n }\n for (const terrainCover of this.terrainCovers.values()) {\n terrainCover.isDirty = terrainCover.isDirty || terrainCover.shouldUpdate({layerNeedsRedraw});\n }\n\n for (const layer of terrainLayers) {\n this._updateTerrainCover(layer, drapeLayers, viewport, opts);\n }\n\n if (!this.isPicking) {\n this._pruneTerrainCovers();\n }\n }\n\n private _updateTerrainCover(\n terrainLayer: Layer,\n drapeLayers: Layer[],\n viewport: Viewport,\n opts: PreRenderOptions\n ) {\n const renderPass = this.isPicking ? this.terrainPickingPass : this.terrainPass;\n let terrainCover = this.terrainCovers.get(terrainLayer.id);\n if (!terrainCover) {\n terrainCover = new TerrainCover(terrainLayer);\n this.terrainCovers.set(terrainLayer.id, terrainCover);\n }\n try {\n const isDirty = terrainCover.shouldUpdate({\n targetLayer: terrainLayer,\n viewport,\n layers: drapeLayers\n });\n if (this.isPicking || terrainCover.isDirty || isDirty) {\n renderPass.renderTerrainCover(terrainCover, {\n ...opts,\n layers: drapeLayers,\n moduleParameters: {\n dummyHeightMap: this.dummyHeightMap,\n terrainSkipRender: false,\n devicePixelRatio: 1\n }\n });\n terrainCover.isDirty = false;\n }\n } catch (err) {\n terrainLayer.raiseError(err as Error, `Error rendering terrain cover ${terrainCover.id}`);\n }\n }\n\n private _pruneTerrainCovers() {\n /** Prune the cache, remove textures for layers that have been removed */\n const idsToRemove: string[] = [];\n for (const [id, terrainCover] of this.terrainCovers) {\n if (!terrainCover.isActive) {\n idsToRemove.push(id);\n }\n }\n for (const id of idsToRemove) {\n this.terrainCovers.delete(id);\n }\n }\n}\n"],"file":"terrain-effect.js"}
1
+ {"version":3,"sources":["../../../src/terrain/terrain-effect.ts"],"names":["TerrainEffect","id","props","useInPicking","isPicking","isDrapingEnabled","dummyHeightMap","heightMap","terrainPass","terrainPickingPass","terrainCovers","Map","initialize","gl","Texture2D","width","height","data","Uint8Array","TerrainPass","TerrainPickingPass","HeightMapBuilder","isSupported","log","warn","ProgramManager","getDefaultProgramManager","addDefaultModule","terrainModule","preRender","opts","layers","layer","operation","includes","setChangeFlags","extensionsChanged","pickZ","viewports","viewport","getRenderableLayers","terrainLayers","filter","l","length","offsetLayers","state","terrainDrawMode","_updateHeightMap","drapeLayers","_updateTerrainCovers","getModuleParameters","getRenderFramebuffer","heightMapBounds","bounds","terrainCover","get","useTerrainHeightMap","terrainSkipRender","cleanup","delete","undefined","values","clear","shouldUpdate","renderHeightMap","moduleParameters","devicePixelRatio","drawToTerrainHeightMap","layerNeedsRedraw","terrainCoverNeedsRedraw","isDirty","_updateTerrainCover","_pruneTerrainCovers","terrainLayer","renderPass","TerrainCover","set","targetLayer","renderTerrainCover","err","raiseError","idsToRemove","isActive","push"],"mappings":"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","sourcesContent":["import {Texture2D, ProgramManager} from '@luma.gl/core';\nimport {log} from '@deck.gl/core';\n\nimport {terrainModule, TerrainModuleSettings} from './shader-module';\nimport {TerrainCover} from './terrain-cover';\nimport {TerrainPass} from './terrain-pass';\nimport {TerrainPickingPass, TerrainPickingPassRenderOptions} from './terrain-picking-pass';\nimport {HeightMapBuilder} from './height-map-builder';\n\nimport type {Effect, PreRenderOptions, Layer, Viewport} from '@deck.gl/core';\n\n/** Class to manage terrain effect */\nexport class TerrainEffect implements Effect {\n id = 'terrain-effect';\n props = null;\n useInPicking = true;\n\n /** true if picking in the current pass */\n private isPicking: boolean = false;\n /** true if should use in the current pass */\n private isDrapingEnabled: boolean = false;\n /** An empty texture as placeholder */\n private dummyHeightMap: Texture2D;\n /** A texture encoding the ground elevation, updated once per redraw. Used by layers with offset mode */\n private heightMap?: HeightMapBuilder;\n private terrainPass!: TerrainPass;\n private terrainPickingPass!: TerrainPickingPass;\n /** One texture for each primitive terrain layer, into which the draped layers render */\n private terrainCovers: Map<string, TerrainCover> = new Map();\n\n initialize(gl: WebGLRenderingContext) {\n this.dummyHeightMap = new Texture2D(gl, {\n width: 1,\n height: 1,\n data: new Uint8Array([0, 0, 0, 0])\n });\n this.terrainPass = new TerrainPass(gl, {id: 'terrain'});\n this.terrainPickingPass = new TerrainPickingPass(gl, {id: 'terrain-picking'});\n\n if (HeightMapBuilder.isSupported(gl)) {\n this.heightMap = new HeightMapBuilder(gl);\n } else {\n log.warn('Terrain offset mode is not supported by this browser')();\n }\n\n ProgramManager.getDefaultProgramManager(gl).addDefaultModule(terrainModule);\n }\n\n preRender(gl: WebGLRenderingContext, opts: PreRenderOptions): void {\n if (!this.dummyHeightMap) {\n // First time this effect is in use, initialize resources and register the shader module\n this.initialize(gl);\n for (const layer of opts.layers) {\n // Force the terrain layer (and its descendents) to rebuild their models with the new shader\n if (layer.props.operation.includes('terrain')) {\n layer.setChangeFlags({extensionsChanged: true});\n }\n }\n }\n\n // @ts-expect-error pickZ only defined in picking pass\n if (opts.pickZ) {\n // Do not update if picking attributes\n this.isDrapingEnabled = false;\n return;\n }\n\n const {viewports, isPicking = false} = opts;\n this.isPicking = isPicking;\n this.isDrapingEnabled = true;\n\n // TODO - support multiple views?\n const viewport = viewports[0];\n const layers = (isPicking ? this.terrainPickingPass : this.terrainPass).getRenderableLayers(\n viewport,\n opts as TerrainPickingPassRenderOptions\n );\n\n const terrainLayers = layers.filter(l => l.props.operation.includes('terrain'));\n if (terrainLayers.length === 0) {\n return;\n }\n\n if (!isPicking) {\n const offsetLayers = layers.filter(l => l.state.terrainDrawMode === 'offset');\n if (offsetLayers.length > 0) {\n this._updateHeightMap(terrainLayers, viewport, opts);\n }\n }\n\n const drapeLayers = layers.filter(l => l.state.terrainDrawMode === 'drape');\n this._updateTerrainCovers(terrainLayers, drapeLayers, viewport, opts);\n }\n\n getModuleParameters(layer: Layer): TerrainModuleSettings {\n const {terrainDrawMode} = layer.state;\n\n return {\n heightMap: this.heightMap?.getRenderFramebuffer(),\n heightMapBounds: this.heightMap?.bounds,\n dummyHeightMap: this.dummyHeightMap,\n terrainCover: this.isDrapingEnabled ? this.terrainCovers.get(layer.id) : null,\n useTerrainHeightMap: terrainDrawMode === 'offset',\n terrainSkipRender: terrainDrawMode === 'drape' || !layer.props.operation.includes('draw')\n };\n }\n\n cleanup(): void {\n if (this.dummyHeightMap) {\n this.dummyHeightMap.delete();\n this.dummyHeightMap = undefined;\n }\n\n if (this.heightMap) {\n this.heightMap.delete();\n this.heightMap = undefined;\n }\n\n for (const terrainCover of this.terrainCovers.values()) {\n terrainCover.delete();\n }\n this.terrainCovers.clear();\n }\n\n private _updateHeightMap(terrainLayers: Layer[], viewport: Viewport, opts: PreRenderOptions) {\n if (!this.heightMap) {\n // Not supported\n return;\n }\n\n const shouldUpdate = this.heightMap.shouldUpdate({layers: terrainLayers, viewport});\n if (!shouldUpdate) {\n return;\n }\n\n this.terrainPass.renderHeightMap(this.heightMap, {\n ...opts,\n layers: terrainLayers,\n moduleParameters: {\n heightMapBounds: this.heightMap.bounds,\n dummyHeightMap: this.dummyHeightMap,\n devicePixelRatio: 1,\n drawToTerrainHeightMap: true\n }\n });\n }\n\n private _updateTerrainCovers(\n terrainLayers: Layer[],\n drapeLayers: Layer[],\n viewport: Viewport,\n opts: PreRenderOptions\n ) {\n // Mark a terrain cover as dirty if one of the drape layers needs redraw\n const layerNeedsRedraw: Record<string, boolean> = {};\n for (const layer of drapeLayers) {\n if (layer.state.terrainCoverNeedsRedraw) {\n layerNeedsRedraw[layer.id] = true;\n layer.state.terrainCoverNeedsRedraw = false;\n }\n }\n for (const terrainCover of this.terrainCovers.values()) {\n terrainCover.isDirty = terrainCover.isDirty || terrainCover.shouldUpdate({layerNeedsRedraw});\n }\n\n for (const layer of terrainLayers) {\n this._updateTerrainCover(layer, drapeLayers, viewport, opts);\n }\n\n if (!this.isPicking) {\n this._pruneTerrainCovers();\n }\n }\n\n private _updateTerrainCover(\n terrainLayer: Layer,\n drapeLayers: Layer[],\n viewport: Viewport,\n opts: PreRenderOptions\n ) {\n const renderPass = this.isPicking ? this.terrainPickingPass : this.terrainPass;\n let terrainCover = this.terrainCovers.get(terrainLayer.id);\n if (!terrainCover) {\n terrainCover = new TerrainCover(terrainLayer);\n this.terrainCovers.set(terrainLayer.id, terrainCover);\n }\n try {\n const isDirty = terrainCover.shouldUpdate({\n targetLayer: terrainLayer,\n viewport,\n layers: drapeLayers\n });\n if (this.isPicking || terrainCover.isDirty || isDirty) {\n renderPass.renderTerrainCover(terrainCover, {\n ...opts,\n layers: drapeLayers,\n moduleParameters: {\n dummyHeightMap: this.dummyHeightMap,\n terrainSkipRender: false,\n devicePixelRatio: 1\n }\n });\n terrainCover.isDirty = false;\n }\n } catch (err) {\n terrainLayer.raiseError(err as Error, `Error rendering terrain cover ${terrainCover.id}`);\n }\n }\n\n private _pruneTerrainCovers() {\n /** Prune the cache, remove textures for layers that have been removed */\n const idsToRemove: string[] = [];\n for (const [id, terrainCover] of this.terrainCovers) {\n if (!terrainCover.isActive) {\n idsToRemove.push(id);\n }\n }\n for (const id of idsToRemove) {\n this.terrainCovers.delete(id);\n }\n }\n}\n"],"file":"terrain-effect.js"}
@@ -9,16 +9,12 @@ exports.default = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
13
 
16
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
15
 
18
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
17
 
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
18
  var _core = require("@deck.gl/core");
23
19
 
24
20
  var _terrainEffect = require("./terrain-effect");
@@ -43,59 +39,56 @@ var TerrainExtension = function (_LayerExtension) {
43
39
  return _super.apply(this, arguments);
44
40
  }
45
41
 
46
- (0, _createClass2.default)(TerrainExtension, [{
47
- key: "getShaders",
48
- value: function getShaders() {
49
- return {
50
- modules: [_shaderModule.terrainModule]
51
- };
52
- }
53
- }, {
54
- key: "initializeState",
55
- value: function initializeState() {
56
- var _this$context$deck;
42
+ var _proto = TerrainExtension.prototype;
43
+
44
+ _proto.getShaders = function getShaders() {
45
+ return {
46
+ modules: [_shaderModule.terrainModule]
47
+ };
48
+ };
49
+
50
+ _proto.initializeState = function initializeState() {
51
+ var _this$context$deck;
52
+
53
+ (_this$context$deck = this.context.deck) === null || _this$context$deck === void 0 ? void 0 : _this$context$deck._addDefaultEffect(new _terrainEffect.TerrainEffect());
54
+ };
55
+
56
+ _proto.updateState = function updateState(params) {
57
+ var props = params.props,
58
+ oldProps = params.oldProps;
57
59
 
58
- (_this$context$deck = this.context.deck) === null || _this$context$deck === void 0 ? void 0 : _this$context$deck._addDefaultEffect(new _terrainEffect.TerrainEffect());
60
+ if (this.state.terrainDrawMode && props.terrainDrawMode === oldProps.terrainDrawMode && props.extruded === oldProps.extruded) {
61
+ return;
59
62
  }
60
- }, {
61
- key: "updateState",
62
- value: function updateState(params) {
63
- var props = params.props,
64
- oldProps = params.oldProps;
65
-
66
- if (this.state.terrainDrawMode && props.terrainDrawMode === oldProps.terrainDrawMode && props.extruded === oldProps.extruded) {
67
- return;
68
- }
69
-
70
- var terrainDrawMode = props.terrainDrawMode;
71
-
72
- if (!terrainDrawMode) {
73
- var _this$getAttributeMan;
74
-
75
- var is3d = this.props.extruded;
76
- var attributes = (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.attributes;
77
- var hasAnchor = attributes && 'instancePositions' in attributes;
78
- terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';
79
- }
80
-
81
- this.setState({
82
- terrainDrawMode: terrainDrawMode
83
- });
63
+
64
+ var terrainDrawMode = props.terrainDrawMode;
65
+
66
+ if (!terrainDrawMode) {
67
+ var _this$getAttributeMan;
68
+
69
+ var is3d = this.props.extruded;
70
+ var attributes = (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.attributes;
71
+ var hasAnchor = attributes && 'instancePositions' in attributes;
72
+ terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';
84
73
  }
85
- }, {
86
- key: "onNeedsRedraw",
87
- value: function onNeedsRedraw() {
88
- var state = this.state;
89
-
90
- if (state.terrainDrawMode === 'drape') {
91
- state.terrainCoverNeedsRedraw = true;
92
- }
74
+
75
+ this.setState({
76
+ terrainDrawMode: terrainDrawMode
77
+ });
78
+ };
79
+
80
+ _proto.onNeedsRedraw = function onNeedsRedraw() {
81
+ var state = this.state;
82
+
83
+ if (state.terrainDrawMode === 'drape') {
84
+ state.terrainCoverNeedsRedraw = true;
93
85
  }
94
- }]);
86
+ };
87
+
95
88
  return TerrainExtension;
96
89
  }(_core.LayerExtension);
97
90
 
98
91
  exports.default = TerrainExtension;
99
- (0, _defineProperty2.default)(TerrainExtension, "defaultProps", defaultProps);
100
- (0, _defineProperty2.default)(TerrainExtension, "extensionName", 'TerrainExtension');
92
+ TerrainExtension.defaultProps = defaultProps;
93
+ TerrainExtension.extensionName = 'TerrainExtension';
101
94
  //# sourceMappingURL=terrain-extension.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/terrain/terrain-extension.ts"],"names":["defaultProps","terrainDrawMode","undefined","TerrainExtension","modules","terrainModule","context","deck","_addDefaultEffect","TerrainEffect","params","props","oldProps","state","extruded","is3d","attributes","getAttributeManager","hasAnchor","setState","terrainCoverNeedsRedraw","LayerExtension"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAIA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,eAAe,EAAEC;AADE,CAArB;;IAoBqBC,gB;;;;;;;;;;;;WAInB,sBAAoD;AAClD,aAAO;AACLC,QAAAA,OAAO,EAAE,CAACC,2BAAD;AADJ,OAAP;AAGD;;;WAED,2BAAoD;AAAA;;AAClD,iCAAKC,OAAL,CAAaC,IAAb,0EAAmBC,iBAAnB,CAAqC,IAAIC,4BAAJ,EAArC;AACD;;;WAED,qBAEEC,MAFF,EAGE;AACA,UAAOC,KAAP,GAA0BD,MAA1B,CAAOC,KAAP;AAAA,UAAcC,QAAd,GAA0BF,MAA1B,CAAcE,QAAd;;AAEA,UACE,KAAKC,KAAL,CAAWZ,eAAX,IACAU,KAAK,CAACV,eAAN,KAA0BW,QAAQ,CAACX,eADnC,IAGAU,KAAK,CAACG,QAAN,KAAmBF,QAAQ,CAACE,QAJ9B,EAKE;AACA;AACD;;AAED,UAAKb,eAAL,GAAwBU,KAAxB,CAAKV,eAAL;;AACA,UAAI,CAACA,eAAL,EAAsB;AAAA;;AAGpB,YAAMc,IAAI,GAAG,KAAKJ,KAAL,CAAWG,QAAxB;AACA,YAAME,UAAU,4BAAG,KAAKC,mBAAL,EAAH,0DAAG,sBAA4BD,UAA/C;AACA,YAAME,SAAS,GAAGF,UAAU,IAAI,uBAAuBA,UAAvD;AACAf,QAAAA,eAAe,GAAGc,IAAI,IAAIG,SAAR,GAAoB,QAApB,GAA+B,OAAjD;AACD;;AACD,WAAKC,QAAL,CAAc;AAAClB,QAAAA,eAAe,EAAfA;AAAD,OAAd;AACD;;;WAED,yBAAqC;AACnC,UAAMY,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAIA,KAAK,CAACZ,eAAN,KAA0B,OAA9B,EAAuC;AACrCY,QAAAA,KAAK,CAACO,uBAAN,GAAgC,IAAhC;AACD;AACF;;;EA9C2CC,oB;;;8BAAzBlB,gB,kBACGH,Y;8BADHG,gB,mBAEI,kB","sourcesContent":["import {LayerExtension, UpdateParameters} from '@deck.gl/core';\nimport {TerrainEffect} from './terrain-effect';\nimport {terrainModule} from './shader-module';\n\nimport type {Layer} from '@deck.gl/core';\n\nconst defaultProps = {\n terrainDrawMode: undefined\n};\n\nexport type TerrainExtensionProps = {\n /**\n * controls whether an object is drawn over the terrain surface by its anchor (usually defined by an accessor called `getPosition`, e.g. icon, scatterplot) or by its geometry (e.g. path, polygon).\n * If not specified, it is automatically deduced from the layer.\n */\n terrainDrawMode?: 'offset' | 'drape';\n};\n\ntype TerrainExtensionState = {\n /** Resolved fitting mode */\n terrainDrawMode: 'offset' | 'drape';\n /** Set when a layer is flagged as needs redraw */\n terrainCoverNeedsRedraw: boolean;\n};\n\n/** Allows layers to show/hide objects by a geofence. */\nexport default class TerrainExtension extends LayerExtension {\n static defaultProps = defaultProps;\n static extensionName = 'TerrainExtension';\n\n getShaders(this: Layer<TerrainExtensionProps>): any {\n return {\n modules: [terrainModule]\n };\n }\n\n initializeState(this: Layer<TerrainExtensionProps>) {\n this.context.deck?._addDefaultEffect(new TerrainEffect());\n }\n\n updateState(\n this: Layer<TerrainExtensionProps>,\n params: UpdateParameters<Layer<TerrainExtensionProps>>\n ) {\n const {props, oldProps} = params;\n\n if (\n this.state.terrainDrawMode &&\n props.terrainDrawMode === oldProps.terrainDrawMode &&\n // @ts-ignore `extruded` may not exist in props\n props.extruded === oldProps.extruded\n ) {\n return;\n }\n\n let {terrainDrawMode} = props;\n if (!terrainDrawMode) {\n // props.extruded is used as an indication that the layer is 2.5D\n // @ts-ignore `extruded` may not exist in props\n const is3d = this.props.extruded as boolean;\n const attributes = this.getAttributeManager()?.attributes;\n const hasAnchor = attributes && 'instancePositions' in attributes;\n terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';\n }\n this.setState({terrainDrawMode});\n }\n\n onNeedsRedraw(this: Layer<{}>): void {\n const state = this.state as TerrainExtensionState;\n if (state.terrainDrawMode === 'drape') {\n state.terrainCoverNeedsRedraw = true;\n }\n }\n}\n"],"file":"terrain-extension.js"}
1
+ {"version":3,"sources":["../../../src/terrain/terrain-extension.ts"],"names":["defaultProps","terrainDrawMode","undefined","TerrainExtension","getShaders","modules","terrainModule","initializeState","context","deck","_addDefaultEffect","TerrainEffect","updateState","params","props","oldProps","state","extruded","is3d","attributes","getAttributeManager","hasAnchor","setState","onNeedsRedraw","terrainCoverNeedsRedraw","LayerExtension","extensionName"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAIA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,eAAe,EAAEC;AADE,CAArB;;IAoBqBC,gB;;;;;;;;;;;;SAInBC,U,GAAA,sBAAoD;AAClD,WAAO;AACLC,MAAAA,OAAO,EAAE,CAACC,2BAAD;AADJ,KAAP;AAGD,G;;SAEDC,e,GAAA,2BAAoD;AAAA;;AAClD,+BAAKC,OAAL,CAAaC,IAAb,0EAAmBC,iBAAnB,CAAqC,IAAIC,4BAAJ,EAArC;AACD,G;;SAEDC,W,GAAA,qBAEEC,MAFF,EAGE;AACA,QAAOC,KAAP,GAA0BD,MAA1B,CAAOC,KAAP;AAAA,QAAcC,QAAd,GAA0BF,MAA1B,CAAcE,QAAd;;AAEA,QACE,KAAKC,KAAL,CAAWf,eAAX,IACAa,KAAK,CAACb,eAAN,KAA0Bc,QAAQ,CAACd,eADnC,IAGAa,KAAK,CAACG,QAAN,KAAmBF,QAAQ,CAACE,QAJ9B,EAKE;AACA;AACD;;AAED,QAAKhB,eAAL,GAAwBa,KAAxB,CAAKb,eAAL;;AACA,QAAI,CAACA,eAAL,EAAsB;AAAA;;AAGpB,UAAMiB,IAAI,GAAG,KAAKJ,KAAL,CAAWG,QAAxB;AACA,UAAME,UAAU,4BAAG,KAAKC,mBAAL,EAAH,0DAAG,sBAA4BD,UAA/C;AACA,UAAME,SAAS,GAAGF,UAAU,IAAI,uBAAuBA,UAAvD;AACAlB,MAAAA,eAAe,GAAGiB,IAAI,IAAIG,SAAR,GAAoB,QAApB,GAA+B,OAAjD;AACD;;AACD,SAAKC,QAAL,CAAc;AAACrB,MAAAA,eAAe,EAAfA;AAAD,KAAd;AACD,G;;SAEDsB,a,GAAA,yBAAqC;AACnC,QAAMP,KAAK,GAAG,KAAKA,KAAnB;;AACA,QAAIA,KAAK,CAACf,eAAN,KAA0B,OAA9B,EAAuC;AACrCe,MAAAA,KAAK,CAACQ,uBAAN,GAAgC,IAAhC;AACD;AACF,G;;;EA9C2CC,oB;;;AAAzBtB,gB,CACZH,Y,GAAeA,Y;AADHG,gB,CAEZuB,a,GAAgB,kB","sourcesContent":["import {LayerExtension, UpdateParameters} from '@deck.gl/core';\nimport {TerrainEffect} from './terrain-effect';\nimport {terrainModule} from './shader-module';\n\nimport type {Layer} from '@deck.gl/core';\n\nconst defaultProps = {\n terrainDrawMode: undefined\n};\n\nexport type TerrainExtensionProps = {\n /**\n * controls whether an object is drawn over the terrain surface by its anchor (usually defined by an accessor called `getPosition`, e.g. icon, scatterplot) or by its geometry (e.g. path, polygon).\n * If not specified, it is automatically deduced from the layer.\n */\n terrainDrawMode?: 'offset' | 'drape';\n};\n\ntype TerrainExtensionState = {\n /** Resolved fitting mode */\n terrainDrawMode: 'offset' | 'drape';\n /** Set when a layer is flagged as needs redraw */\n terrainCoverNeedsRedraw: boolean;\n};\n\n/** Allows layers to show/hide objects by a geofence. */\nexport default class TerrainExtension extends LayerExtension {\n static defaultProps = defaultProps;\n static extensionName = 'TerrainExtension';\n\n getShaders(this: Layer<TerrainExtensionProps>): any {\n return {\n modules: [terrainModule]\n };\n }\n\n initializeState(this: Layer<TerrainExtensionProps>) {\n this.context.deck?._addDefaultEffect(new TerrainEffect());\n }\n\n updateState(\n this: Layer<TerrainExtensionProps>,\n params: UpdateParameters<Layer<TerrainExtensionProps>>\n ) {\n const {props, oldProps} = params;\n\n if (\n this.state.terrainDrawMode &&\n props.terrainDrawMode === oldProps.terrainDrawMode &&\n // @ts-ignore `extruded` may not exist in props\n props.extruded === oldProps.extruded\n ) {\n return;\n }\n\n let {terrainDrawMode} = props;\n if (!terrainDrawMode) {\n // props.extruded is used as an indication that the layer is 2.5D\n // @ts-ignore `extruded` may not exist in props\n const is3d = this.props.extruded as boolean;\n const attributes = this.getAttributeManager()?.attributes;\n const hasAnchor = attributes && 'instancePositions' in attributes;\n terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';\n }\n this.setState({terrainDrawMode});\n }\n\n onNeedsRedraw(this: Layer<{}>): void {\n const state = this.state as TerrainExtensionState;\n if (state.terrainDrawMode === 'drape') {\n state.terrainCoverNeedsRedraw = true;\n }\n }\n}\n"],"file":"terrain-extension.js"}
@@ -11,8 +11,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
15
 
18
16
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -41,81 +39,79 @@ var TerrainPass = function (_LayersPass) {
41
39
  return _super.apply(this, arguments);
42
40
  }
43
41
 
44
- (0, _createClass2.default)(TerrainPass, [{
45
- key: "getRenderableLayers",
46
- value: function getRenderableLayers(viewport, opts) {
47
- var layers = opts.layers;
48
- var result = [];
42
+ var _proto = TerrainPass.prototype;
49
43
 
50
- var drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);
44
+ _proto.getRenderableLayers = function getRenderableLayers(viewport, opts) {
45
+ var layers = opts.layers;
46
+ var result = [];
51
47
 
52
- for (var i = 0; i < layers.length; i++) {
53
- var layer = layers[i];
48
+ var drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);
54
49
 
55
- if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
56
- result.push(layer);
57
- }
58
- }
50
+ for (var i = 0; i < layers.length; i++) {
51
+ var layer = layers[i];
59
52
 
60
- return result;
53
+ if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
54
+ result.push(layer);
55
+ }
61
56
  }
62
- }, {
63
- key: "renderHeightMap",
64
- value: function renderHeightMap(heightMap, opts) {
65
- var _this = this;
66
57
 
67
- var target = heightMap.getRenderFramebuffer();
68
- var viewport = heightMap.renderViewport;
58
+ return result;
59
+ };
69
60
 
70
- if (!target || !viewport) {
71
- return;
72
- }
61
+ _proto.renderHeightMap = function renderHeightMap(heightMap, opts) {
62
+ var _this = this;
73
63
 
74
- target.resize(viewport);
75
- (0, _core.withParameters)(this.gl, {
76
- clearColor: [0, 0, 0, 0],
77
- blend: true,
78
- blendFunc: [1, 1],
79
- blendEquation: 32776,
80
- depthTest: false
81
- }, function () {
82
- return _this.render(_objectSpread(_objectSpread({}, opts), {}, {
83
- target: target,
84
- pass: 'terrain-height-map',
85
- layers: opts.layers,
86
- viewports: [viewport],
87
- effects: []
88
- }));
89
- });
64
+ var target = heightMap.getRenderFramebuffer();
65
+ var viewport = heightMap.renderViewport;
66
+
67
+ if (!target || !viewport) {
68
+ return;
90
69
  }
91
- }, {
92
- key: "renderTerrainCover",
93
- value: function renderTerrainCover(terrainCover, opts) {
94
- var _this2 = this;
95
70
 
96
- var target = terrainCover.getRenderFramebuffer();
97
- var viewport = terrainCover.renderViewport;
71
+ target.resize(viewport);
72
+ (0, _core.withParameters)(this.gl, {
73
+ clearColor: [0, 0, 0, 0],
74
+ blend: true,
75
+ blendFunc: [1, 1],
76
+ blendEquation: 32776,
77
+ depthTest: false
78
+ }, function () {
79
+ return _this.render(_objectSpread(_objectSpread({}, opts), {}, {
80
+ target: target,
81
+ pass: 'terrain-height-map',
82
+ layers: opts.layers,
83
+ viewports: [viewport],
84
+ effects: []
85
+ }));
86
+ });
87
+ };
88
+
89
+ _proto.renderTerrainCover = function renderTerrainCover(terrainCover, opts) {
90
+ var _this2 = this;
91
+
92
+ var target = terrainCover.getRenderFramebuffer();
93
+ var viewport = terrainCover.renderViewport;
94
+
95
+ if (!target || !viewport) {
96
+ return;
97
+ }
98
98
 
99
- if (!target || !viewport) {
100
- return;
101
- }
99
+ var layers = terrainCover.filterLayers(opts.layers);
100
+ target.resize(viewport);
101
+ (0, _core.withParameters)(this.gl, {
102
+ clearColor: [0, 0, 0, 0],
103
+ depthTest: false
104
+ }, function () {
105
+ return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
106
+ target: target,
107
+ pass: "terrain-cover-".concat(terrainCover.id),
108
+ layers: layers,
109
+ effects: [],
110
+ viewports: [viewport]
111
+ }));
112
+ });
113
+ };
102
114
 
103
- var layers = terrainCover.filterLayers(opts.layers);
104
- target.resize(viewport);
105
- (0, _core.withParameters)(this.gl, {
106
- clearColor: [0, 0, 0, 0],
107
- depthTest: false
108
- }, function () {
109
- return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
110
- target: target,
111
- pass: "terrain-cover-".concat(terrainCover.id),
112
- layers: layers,
113
- effects: [],
114
- viewports: [viewport]
115
- }));
116
- });
117
- }
118
- }]);
119
115
  return TerrainPass;
120
116
  }(_core2._LayersPass);
121
117
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/terrain/terrain-pass.ts"],"names":["TerrainPass","viewport","opts","layers","result","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","heightMap","target","getRenderFramebuffer","renderViewport","resize","gl","clearColor","blend","blendFunc","blendEquation","depthTest","render","pass","viewports","effects","terrainCover","filterLayers","id","LayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IASaA,W;;;;;;;;;;;;WACX,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAiF;AAC/E,UAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,UAAMC,MAAe,GAAG,EAAxB;;AACA,UAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBL,QAAzB,EAAmCC,IAAnC,EAAyC,IAAzC,CAA1B;;AACA,WAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,MAAM,CAACK,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,YAAME,KAAK,GAAGN,MAAM,CAACI,CAAD,CAApB;;AACA,YAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DP,UAAAA,MAAM,CAACQ,IAAP,CAAYH,KAAZ;AACD;AACF;;AAED,aAAOL,MAAP;AACD;;;WAED,yBAAgBS,SAAhB,EAA6CX,IAA7C,EAAsF;AAAA;;AAEpF,UAAMY,MAAM,GAAGD,SAAS,CAACE,oBAAV,EAAf;AACA,UAAMd,QAAQ,GAAGY,SAAS,CAACG,cAA3B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAACb,QAAhB,EAA0B;AACxB;AACD;;AAEDa,MAAAA,MAAM,CAACG,MAAP,CAAchB,QAAd;AAEA,gCACE,KAAKiB,EADP,EAEE;AACEC,QAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADd;AAEEC,QAAAA,KAAK,EAAE,IAFT;AAGEC,QAAAA,SAAS,EAAE,MAHb;AAIEC,QAAAA,aAAa,OAJf;AAKEC,QAAAA,SAAS,EAAE;AALb,OAFF,EASE;AAAA,eACE,KAAI,CAACC,MAAL,iCACKtB,IADL;AAEEY,UAAAA,MAAM,EAANA,MAFF;AAGEW,UAAAA,IAAI,EAAE,oBAHR;AAIEtB,UAAAA,MAAM,EAAED,IAAI,CAACC,MAJf;AAKEuB,UAAAA,SAAS,EAAE,CAACzB,QAAD,CALb;AAME0B,UAAAA,OAAO,EAAE;AANX,WADF;AAAA,OATF;AAmBD;;;WAED,4BAAmBC,YAAnB,EAA+C1B,IAA/C,EAAwF;AAAA;;AAEtF,UAAMY,MAAM,GAAGc,YAAY,CAACb,oBAAb,EAAf;AACA,UAAMd,QAAQ,GAAG2B,YAAY,CAACZ,cAA9B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAACb,QAAhB,EAA0B;AACxB;AACD;;AAED,UAAME,MAAM,GAAGyB,YAAY,CAACC,YAAb,CAA0B3B,IAAI,CAACC,MAA/B,CAAf;AACAW,MAAAA,MAAM,CAACG,MAAP,CAAchB,QAAd;AAEA,gCACE,KAAKiB,EADP,EAEE;AACEC,QAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADd;AAEEI,QAAAA,SAAS,EAAE;AAFb,OAFF,EAME;AAAA,eACE,MAAI,CAACC,MAAL,iCACKtB,IADL;AAEEY,UAAAA,MAAM,EAANA,MAFF;AAGEW,UAAAA,IAAI,0BAAmBG,YAAY,CAACE,EAAhC,CAHN;AAIE3B,UAAAA,MAAM,EAANA,MAJF;AAKEwB,UAAAA,OAAO,EAAE,EALX;AAMED,UAAAA,SAAS,EAAE,CAACzB,QAAD;AANb,WADF;AAAA,OANF;AAgBD;;;EA3E8B8B,kB","sourcesContent":["import {withParameters} from '@luma.gl/core';\nimport {Layer, Viewport, _LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';\nimport type {HeightMapBuilder} from './height-map-builder';\nimport type {TerrainCover} from './terrain-cover';\n\nimport GL from '@luma.gl/constants';\n\nexport type TerrainPassRenderOptions = LayersPassRenderOptions;\n\n/** Renders textures used by the TerrainEffect render pass */\nexport class TerrainPass extends LayersPass {\n getRenderableLayers(viewport: Viewport, opts: TerrainPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n }\n }\n\n return result;\n }\n\n renderHeightMap(heightMap: HeightMapBuilder, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating height map')\n const target = heightMap.getRenderFramebuffer();\n const viewport = heightMap.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n clearColor: [0, 0, 0, 0],\n blend: true,\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: GL.MAX,\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: 'terrain-height-map',\n layers: opts.layers!,\n viewports: [viewport],\n effects: []\n })\n );\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating terrain cover ' + terrainCover.id)\n const target = terrainCover.getRenderFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n clearColor: [0, 0, 0, 0],\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: `terrain-cover-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport]\n })\n );\n }\n}\n"],"file":"terrain-pass.js"}
1
+ {"version":3,"sources":["../../../src/terrain/terrain-pass.ts"],"names":["TerrainPass","getRenderableLayers","viewport","opts","layers","result","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","renderHeightMap","heightMap","target","getRenderFramebuffer","renderViewport","resize","gl","clearColor","blend","blendFunc","blendEquation","depthTest","render","pass","viewports","effects","renderTerrainCover","terrainCover","filterLayers","id","LayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IASaA,W;;;;;;;;;;;;SACXC,mB,GAAA,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAiF;AAC/E,QAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,QAAMC,MAAe,GAAG,EAAxB;;AACA,QAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBL,QAAzB,EAAmCC,IAAnC,EAAyC,IAAzC,CAA1B;;AACA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,MAAM,CAACK,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,UAAME,KAAK,GAAGN,MAAM,CAACI,CAAD,CAApB;;AACA,UAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DP,QAAAA,MAAM,CAACQ,IAAP,CAAYH,KAAZ;AACD;AACF;;AAED,WAAOL,MAAP;AACD,G;;SAEDS,e,GAAA,yBAAgBC,SAAhB,EAA6CZ,IAA7C,EAAsF;AAAA;;AAEpF,QAAMa,MAAM,GAAGD,SAAS,CAACE,oBAAV,EAAf;AACA,QAAMf,QAAQ,GAAGa,SAAS,CAACG,cAA3B;;AAEA,QAAI,CAACF,MAAD,IAAW,CAACd,QAAhB,EAA0B;AACxB;AACD;;AAEDc,IAAAA,MAAM,CAACG,MAAP,CAAcjB,QAAd;AAEA,8BACE,KAAKkB,EADP,EAEE;AACEC,MAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADd;AAEEC,MAAAA,KAAK,EAAE,IAFT;AAGEC,MAAAA,SAAS,EAAE,MAHb;AAIEC,MAAAA,aAAa,OAJf;AAKEC,MAAAA,SAAS,EAAE;AALb,KAFF,EASE;AAAA,aACE,KAAI,CAACC,MAAL,iCACKvB,IADL;AAEEa,QAAAA,MAAM,EAANA,MAFF;AAGEW,QAAAA,IAAI,EAAE,oBAHR;AAIEvB,QAAAA,MAAM,EAAED,IAAI,CAACC,MAJf;AAKEwB,QAAAA,SAAS,EAAE,CAAC1B,QAAD,CALb;AAME2B,QAAAA,OAAO,EAAE;AANX,SADF;AAAA,KATF;AAmBD,G;;SAEDC,kB,GAAA,4BAAmBC,YAAnB,EAA+C5B,IAA/C,EAAwF;AAAA;;AAEtF,QAAMa,MAAM,GAAGe,YAAY,CAACd,oBAAb,EAAf;AACA,QAAMf,QAAQ,GAAG6B,YAAY,CAACb,cAA9B;;AAEA,QAAI,CAACF,MAAD,IAAW,CAACd,QAAhB,EAA0B;AACxB;AACD;;AAED,QAAME,MAAM,GAAG2B,YAAY,CAACC,YAAb,CAA0B7B,IAAI,CAACC,MAA/B,CAAf;AACAY,IAAAA,MAAM,CAACG,MAAP,CAAcjB,QAAd;AAEA,8BACE,KAAKkB,EADP,EAEE;AACEC,MAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADd;AAEEI,MAAAA,SAAS,EAAE;AAFb,KAFF,EAME;AAAA,aACE,MAAI,CAACC,MAAL,iCACKvB,IADL;AAEEa,QAAAA,MAAM,EAANA,MAFF;AAGEW,QAAAA,IAAI,0BAAmBI,YAAY,CAACE,EAAhC,CAHN;AAIE7B,QAAAA,MAAM,EAANA,MAJF;AAKEyB,QAAAA,OAAO,EAAE,EALX;AAMED,QAAAA,SAAS,EAAE,CAAC1B,QAAD;AANb,SADF;AAAA,KANF;AAgBD,G;;;EA3E8BgC,kB","sourcesContent":["import {withParameters} from '@luma.gl/core';\nimport {Layer, Viewport, _LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';\nimport type {HeightMapBuilder} from './height-map-builder';\nimport type {TerrainCover} from './terrain-cover';\n\nimport GL from '@luma.gl/constants';\n\nexport type TerrainPassRenderOptions = LayersPassRenderOptions;\n\n/** Renders textures used by the TerrainEffect render pass */\nexport class TerrainPass extends LayersPass {\n getRenderableLayers(viewport: Viewport, opts: TerrainPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n }\n }\n\n return result;\n }\n\n renderHeightMap(heightMap: HeightMapBuilder, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating height map')\n const target = heightMap.getRenderFramebuffer();\n const viewport = heightMap.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n clearColor: [0, 0, 0, 0],\n blend: true,\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: GL.MAX,\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: 'terrain-height-map',\n layers: opts.layers!,\n viewports: [viewport],\n effects: []\n })\n );\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating terrain cover ' + terrainCover.id)\n const target = terrainCover.getRenderFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n clearColor: [0, 0, 0, 0],\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: `terrain-cover-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport]\n })\n );\n }\n}\n"],"file":"terrain-pass.js"}
@@ -7,11 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.TerrainPickingPass = void 0;
9
9
 
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
11
 
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
13
 
16
14
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
17
15
 
@@ -21,8 +19,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
21
19
 
22
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
21
 
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
22
  var _core = require("@deck.gl/core");
27
23
 
28
24
  var _core2 = require("@luma.gl/core");
@@ -50,79 +46,77 @@ var TerrainPickingPass = function (_PickLayersPass) {
50
46
  }
51
47
 
52
48
  _this = _super.call.apply(_super, [this].concat(args));
53
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "drawParameters", {});
49
+ _this.drawParameters = {};
54
50
  return _this;
55
51
  }
56
52
 
57
- (0, _createClass2.default)(TerrainPickingPass, [{
58
- key: "getRenderableLayers",
59
- value: function getRenderableLayers(viewport, opts) {
60
- var layers = opts.layers;
61
- var result = [];
62
- this.drawParameters = {};
53
+ var _proto = TerrainPickingPass.prototype;
63
54
 
64
- this._resetColorEncoder(opts.pickZ);
55
+ _proto.getRenderableLayers = function getRenderableLayers(viewport, opts) {
56
+ var layers = opts.layers;
57
+ var result = [];
58
+ this.drawParameters = {};
65
59
 
66
- var drawParamsByIndex = this._getDrawLayerParams(viewport, opts);
60
+ this._resetColorEncoder(opts.pickZ);
67
61
 
68
- for (var i = 0; i < layers.length; i++) {
69
- var layer = layers[i];
62
+ var drawParamsByIndex = this._getDrawLayerParams(viewport, opts);
70
63
 
71
- if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
72
- result.push(layer);
73
- this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;
74
- }
75
- }
64
+ for (var i = 0; i < layers.length; i++) {
65
+ var layer = layers[i];
76
66
 
77
- return result;
67
+ if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
68
+ result.push(layer);
69
+ this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;
70
+ }
78
71
  }
79
- }, {
80
- key: "renderTerrainCover",
81
- value: function renderTerrainCover(terrainCover, opts) {
82
- var _this2 = this;
83
72
 
84
- var target = terrainCover.getPickingFramebuffer();
85
- var viewport = terrainCover.renderViewport;
73
+ return result;
74
+ };
86
75
 
87
- if (!target || !viewport) {
88
- return;
89
- }
76
+ _proto.renderTerrainCover = function renderTerrainCover(terrainCover, opts) {
77
+ var _this2 = this;
90
78
 
91
- var layers = terrainCover.filterLayers(opts.layers);
92
- var terrainLayer = terrainCover.targetLayer;
79
+ var target = terrainCover.getPickingFramebuffer();
80
+ var viewport = terrainCover.renderViewport;
93
81
 
94
- if (terrainLayer.props.pickable) {
95
- layers.unshift(terrainLayer);
96
- }
82
+ if (!target || !viewport) {
83
+ return;
84
+ }
85
+
86
+ var layers = terrainCover.filterLayers(opts.layers);
87
+ var terrainLayer = terrainCover.targetLayer;
97
88
 
98
- target.resize(viewport);
99
- (0, _core2.withParameters)(this.gl, {
100
- depthTest: false
101
- }, function () {
102
- return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
103
- pickingFBO: target,
104
- pass: "terrain-cover-picking-".concat(terrainCover.id),
105
- layers: layers,
106
- effects: [],
107
- viewports: [viewport],
108
- cullRect: undefined,
109
- deviceRect: viewport,
110
- pickZ: false
111
- }));
112
- });
89
+ if (terrainLayer.props.pickable) {
90
+ layers.unshift(terrainLayer);
113
91
  }
114
- }, {
115
- key: "getLayerParameters",
116
- value: function getLayerParameters(layer, layerIndex, viewport) {
117
- if (this.drawParameters[layer.id]) {
118
- return this.drawParameters[layer.id];
119
- }
120
92
 
121
- var parameters = (0, _get2.default)((0, _getPrototypeOf2.default)(TerrainPickingPass.prototype), "getLayerParameters", this).call(this, layer, layerIndex, viewport);
122
- parameters.blend = true;
123
- return parameters;
93
+ target.resize(viewport);
94
+ (0, _core2.withParameters)(this.gl, {
95
+ depthTest: false
96
+ }, function () {
97
+ return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
98
+ pickingFBO: target,
99
+ pass: "terrain-cover-picking-".concat(terrainCover.id),
100
+ layers: layers,
101
+ effects: [],
102
+ viewports: [viewport],
103
+ cullRect: undefined,
104
+ deviceRect: viewport,
105
+ pickZ: false
106
+ }));
107
+ });
108
+ };
109
+
110
+ _proto.getLayerParameters = function getLayerParameters(layer, layerIndex, viewport) {
111
+ if (this.drawParameters[layer.id]) {
112
+ return this.drawParameters[layer.id];
124
113
  }
125
- }]);
114
+
115
+ var parameters = (0, _get2.default)((0, _getPrototypeOf2.default)(TerrainPickingPass.prototype), "getLayerParameters", this).call(this, layer, layerIndex, viewport);
116
+ parameters.blend = true;
117
+ return parameters;
118
+ };
119
+
126
120
  return TerrainPickingPass;
127
121
  }(_core._PickLayersPass);
128
122
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/terrain/terrain-picking-pass.ts"],"names":["TerrainPickingPass","viewport","opts","layers","result","drawParameters","_resetColorEncoder","pickZ","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","id","layerParameters","terrainCover","target","getPickingFramebuffer","renderViewport","filterLayers","terrainLayer","targetLayer","props","pickable","unshift","resize","gl","depthTest","render","pickingFBO","pass","effects","viewports","cullRect","undefined","deviceRect","layerIndex","parameters","blend","PickLayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAMA;;;;;;;;;;IAQaA,kB;;;;;;;;;;;;;;;iGAO2B,E;;;;;;WAEtC,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAwF;AACtF,UAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,UAAMC,MAAe,GAAG,EAAxB;AACA,WAAKC,cAAL,GAAsB,EAAtB;;AACA,WAAKC,kBAAL,CAAwBJ,IAAI,CAACK,KAA7B;;AACA,UAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBR,QAAzB,EAAmCC,IAAnC,CAA1B;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,MAAM,CAACQ,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,YAAME,KAAK,GAAGT,MAAM,CAACO,CAAD,CAApB;;AACA,YAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DV,UAAAA,MAAM,CAACW,IAAP,CAAYH,KAAZ;AACA,eAAKP,cAAL,CAAoBO,KAAK,CAACI,EAA1B,IAAgCR,iBAAiB,CAACE,CAAD,CAAjB,CAAqBO,eAArD;AACD;AACF;;AAED,aAAOb,MAAP;AACD;;;WAED,4BAAmBc,YAAnB,EAA+ChB,IAA/C,EAA+F;AAAA;;AAE7F,UAAMiB,MAAM,GAAGD,YAAY,CAACE,qBAAb,EAAf;AACA,UAAMnB,QAAQ,GAAGiB,YAAY,CAACG,cAA9B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAAClB,QAAhB,EAA0B;AACxB;AACD;;AAED,UAAME,MAAM,GAAGe,YAAY,CAACI,YAAb,CAA0BpB,IAAI,CAACC,MAA/B,CAAf;AACA,UAAMoB,YAAY,GAAGL,YAAY,CAACM,WAAlC;;AACA,UAAID,YAAY,CAACE,KAAb,CAAmBC,QAAvB,EAAiC;AAC/BvB,QAAAA,MAAM,CAACwB,OAAP,CAAeJ,YAAf;AACD;;AACDJ,MAAAA,MAAM,CAACS,MAAP,CAAc3B,QAAd;AAEA,iCACE,KAAK4B,EADP,EAEE;AACEC,QAAAA,SAAS,EAAE;AADb,OAFF,EAKE;AAAA,eACE,MAAI,CAACC,MAAL,iCACK7B,IADL;AAEE8B,UAAAA,UAAU,EAAEb,MAFd;AAGEc,UAAAA,IAAI,kCAA2Bf,YAAY,CAACF,EAAxC,CAHN;AAIEb,UAAAA,MAAM,EAANA,MAJF;AAKE+B,UAAAA,OAAO,EAAE,EALX;AAMEC,UAAAA,SAAS,EAAE,CAAClC,QAAD,CANb;AASEmC,UAAAA,QAAQ,EAAEC,SATZ;AAUEC,UAAAA,UAAU,EAAErC,QAVd;AAWEM,UAAAA,KAAK,EAAE;AAXT,WADF;AAAA,OALF;AAoBD;;;WAED,4BAA6BK,KAA7B,EAA2C2B,UAA3C,EAA+DtC,QAA/D,EAAwF;AACtF,UAAI,KAAKI,cAAL,CAAoBO,KAAK,CAACI,EAA1B,CAAJ,EAAmC;AACjC,eAAO,KAAKX,cAAL,CAAoBO,KAAK,CAACI,EAA1B,CAAP;AACD;;AACD,UAAMwB,UAAU,0HAA4B5B,KAA5B,EAAmC2B,UAAnC,EAA+CtC,QAA/C,CAAhB;AACAuC,MAAAA,UAAU,CAACC,KAAX,GAAmB,IAAnB;AACA,aAAOD,UAAP;AACD;;;EAvEqCE,qB","sourcesContent":["import {\n Layer,\n Viewport,\n LayersPassRenderOptions,\n _PickLayersPass as PickLayersPass\n} from '@deck.gl/core';\nimport {withParameters} from '@luma.gl/core';\nimport type {TerrainCover} from './terrain-cover';\n\nexport type TerrainPickingPassRenderOptions = LayersPassRenderOptions & {\n pickZ: boolean;\n};\n\n/** Renders textures used by the TerrainEffect picking pass */\nexport class TerrainPickingPass extends PickLayersPass {\n /** Save layer index for use when drawing to terrain cover.\n * When a terrain cover's picking buffer is rendered,\n * we need to make sure each layer receives a consistent index (encoded in the alpha channel)\n * so that a picked color can be decoded back to the correct layer.\n * Updated in getRenderableLayers which is called in TerrainEffect.preRender\n */\n drawParameters: Record<string, any> = {};\n\n getRenderableLayers(viewport: Viewport, opts: TerrainPickingPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n this.drawParameters = {};\n this._resetColorEncoder(opts.pickZ);\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;\n }\n }\n\n return result;\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPickingPassRenderOptions>) {\n // console.log('Updating terrain cover for picking ' + terrainCover.id)\n const target = terrainCover.getPickingFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n const terrainLayer = terrainCover.targetLayer;\n if (terrainLayer.props.pickable) {\n layers.unshift(terrainLayer);\n }\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n pickingFBO: target,\n pass: `terrain-cover-picking-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport],\n // Disable the default culling because TileLayer would cull sublayers based on the screen viewport,\n // not the viewport of the terrain cover. Culling is already done by `terrainCover.filterLayers`\n cullRect: undefined,\n deviceRect: viewport,\n pickZ: false\n })\n );\n }\n\n protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {\n if (this.drawParameters[layer.id]) {\n return this.drawParameters[layer.id];\n }\n const parameters = super.getLayerParameters(layer, layerIndex, viewport);\n parameters.blend = true;\n return parameters;\n }\n}\n"],"file":"terrain-picking-pass.js"}
1
+ {"version":3,"sources":["../../../src/terrain/terrain-picking-pass.ts"],"names":["TerrainPickingPass","drawParameters","getRenderableLayers","viewport","opts","layers","result","_resetColorEncoder","pickZ","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","id","layerParameters","renderTerrainCover","terrainCover","target","getPickingFramebuffer","renderViewport","filterLayers","terrainLayer","targetLayer","props","pickable","unshift","resize","gl","depthTest","render","pickingFBO","pass","effects","viewports","cullRect","undefined","deviceRect","getLayerParameters","layerIndex","parameters","blend","PickLayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAMA;;;;;;;;;;IAQaA,kB;;;;;;;;;;;;;;;UAOXC,c,GAAsC,E;;;;;;SAEtCC,mB,GAAA,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAwF;AACtF,QAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,QAAMC,MAAe,GAAG,EAAxB;AACA,SAAKL,cAAL,GAAsB,EAAtB;;AACA,SAAKM,kBAAL,CAAwBH,IAAI,CAACI,KAA7B;;AACA,QAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBP,QAAzB,EAAmCC,IAAnC,CAA1B;;AACA,SAAK,IAAIO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,MAAM,CAACO,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,UAAME,KAAK,GAAGR,MAAM,CAACM,CAAD,CAApB;;AACA,UAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DT,QAAAA,MAAM,CAACU,IAAP,CAAYH,KAAZ;AACA,aAAKZ,cAAL,CAAoBY,KAAK,CAACI,EAA1B,IAAgCR,iBAAiB,CAACE,CAAD,CAAjB,CAAqBO,eAArD;AACD;AACF;;AAED,WAAOZ,MAAP;AACD,G;;SAEDa,kB,GAAA,4BAAmBC,YAAnB,EAA+ChB,IAA/C,EAA+F;AAAA;;AAE7F,QAAMiB,MAAM,GAAGD,YAAY,CAACE,qBAAb,EAAf;AACA,QAAMnB,QAAQ,GAAGiB,YAAY,CAACG,cAA9B;;AAEA,QAAI,CAACF,MAAD,IAAW,CAAClB,QAAhB,EAA0B;AACxB;AACD;;AAED,QAAME,MAAM,GAAGe,YAAY,CAACI,YAAb,CAA0BpB,IAAI,CAACC,MAA/B,CAAf;AACA,QAAMoB,YAAY,GAAGL,YAAY,CAACM,WAAlC;;AACA,QAAID,YAAY,CAACE,KAAb,CAAmBC,QAAvB,EAAiC;AAC/BvB,MAAAA,MAAM,CAACwB,OAAP,CAAeJ,YAAf;AACD;;AACDJ,IAAAA,MAAM,CAACS,MAAP,CAAc3B,QAAd;AAEA,+BACE,KAAK4B,EADP,EAEE;AACEC,MAAAA,SAAS,EAAE;AADb,KAFF,EAKE;AAAA,aACE,MAAI,CAACC,MAAL,iCACK7B,IADL;AAEE8B,QAAAA,UAAU,EAAEb,MAFd;AAGEc,QAAAA,IAAI,kCAA2Bf,YAAY,CAACH,EAAxC,CAHN;AAIEZ,QAAAA,MAAM,EAANA,MAJF;AAKE+B,QAAAA,OAAO,EAAE,EALX;AAMEC,QAAAA,SAAS,EAAE,CAAClC,QAAD,CANb;AASEmC,QAAAA,QAAQ,EAAEC,SATZ;AAUEC,QAAAA,UAAU,EAAErC,QAVd;AAWEK,QAAAA,KAAK,EAAE;AAXT,SADF;AAAA,KALF;AAoBD,G;;SAESiC,kB,GAAV,4BAA6B5B,KAA7B,EAA2C6B,UAA3C,EAA+DvC,QAA/D,EAAwF;AACtF,QAAI,KAAKF,cAAL,CAAoBY,KAAK,CAACI,EAA1B,CAAJ,EAAmC;AACjC,aAAO,KAAKhB,cAAL,CAAoBY,KAAK,CAACI,EAA1B,CAAP;AACD;;AACD,QAAM0B,UAAU,0HAA4B9B,KAA5B,EAAmC6B,UAAnC,EAA+CvC,QAA/C,CAAhB;AACAwC,IAAAA,UAAU,CAACC,KAAX,GAAmB,IAAnB;AACA,WAAOD,UAAP;AACD,G;;;EAvEqCE,qB","sourcesContent":["import {\n Layer,\n Viewport,\n LayersPassRenderOptions,\n _PickLayersPass as PickLayersPass\n} from '@deck.gl/core';\nimport {withParameters} from '@luma.gl/core';\nimport type {TerrainCover} from './terrain-cover';\n\nexport type TerrainPickingPassRenderOptions = LayersPassRenderOptions & {\n pickZ: boolean;\n};\n\n/** Renders textures used by the TerrainEffect picking pass */\nexport class TerrainPickingPass extends PickLayersPass {\n /** Save layer index for use when drawing to terrain cover.\n * When a terrain cover's picking buffer is rendered,\n * we need to make sure each layer receives a consistent index (encoded in the alpha channel)\n * so that a picked color can be decoded back to the correct layer.\n * Updated in getRenderableLayers which is called in TerrainEffect.preRender\n */\n drawParameters: Record<string, any> = {};\n\n getRenderableLayers(viewport: Viewport, opts: TerrainPickingPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n this.drawParameters = {};\n this._resetColorEncoder(opts.pickZ);\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;\n }\n }\n\n return result;\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPickingPassRenderOptions>) {\n // console.log('Updating terrain cover for picking ' + terrainCover.id)\n const target = terrainCover.getPickingFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n const terrainLayer = terrainCover.targetLayer;\n if (terrainLayer.props.pickable) {\n layers.unshift(terrainLayer);\n }\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n pickingFBO: target,\n pass: `terrain-cover-picking-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport],\n // Disable the default culling because TileLayer would cull sublayers based on the screen viewport,\n // not the viewport of the terrain cover. Culling is already done by `terrainCover.filterLayers`\n cullRect: undefined,\n deviceRect: viewport,\n pickZ: false\n })\n );\n }\n\n protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {\n if (this.drawParameters[layer.id]) {\n return this.drawParameters[layer.id];\n }\n const parameters = super.getLayerParameters(layer, layerIndex, viewport);\n parameters.blend = true;\n return parameters;\n }\n}\n"],"file":"terrain-picking-pass.js"}
@@ -1,4 +1,3 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { LayerExtension } from '@deck.gl/core';
3
2
  import shaderModule from './shader-module';
4
3
  const defaultProps = {
@@ -61,8 +60,6 @@ export default class BrushingExtension extends LayerExtension {
61
60
  }
62
61
 
63
62
  }
64
-
65
- _defineProperty(BrushingExtension, "defaultProps", defaultProps);
66
-
67
- _defineProperty(BrushingExtension, "extensionName", 'BrushingExtension');
63
+ BrushingExtension.defaultProps = defaultProps;
64
+ BrushingExtension.extensionName = 'BrushingExtension';
68
65
  //# sourceMappingURL=brushing-extension.js.map