@deck.gl/extensions 8.10.0-alpha.2 → 8.10.0-alpha.5

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 (144) hide show
  1. package/LICENSE +1 -1
  2. package/dist/dist.dev.js +38 -660
  3. package/dist/es5/brushing/brushing-extension.js +48 -54
  4. package/dist/es5/brushing/brushing-extension.js.map +1 -1
  5. package/dist/es5/clip/clip-extension.js +32 -37
  6. package/dist/es5/clip/clip-extension.js.map +1 -1
  7. package/dist/es5/collision-filter/collision-filter-effect.js +217 -225
  8. package/dist/es5/collision-filter/collision-filter-effect.js.map +1 -1
  9. package/dist/es5/collision-filter/collision-filter-extension.js +49 -56
  10. package/dist/es5/collision-filter/collision-filter-extension.js.map +1 -1
  11. package/dist/es5/collision-filter/collision-filter-pass.js +31 -34
  12. package/dist/es5/collision-filter/collision-filter-pass.js.map +1 -1
  13. package/dist/es5/data-filter/data-filter-extension.js +126 -132
  14. package/dist/es5/data-filter/data-filter-extension.js.map +1 -1
  15. package/dist/es5/fill-style/fill-style-extension.js +101 -109
  16. package/dist/es5/fill-style/fill-style-extension.js.map +1 -1
  17. package/dist/es5/fp64/fp64-extension.js +12 -16
  18. package/dist/es5/fp64/fp64-extension.js.map +1 -1
  19. package/dist/es5/mask/mask-effect.js +208 -216
  20. package/dist/es5/mask/mask-effect.js.map +1 -1
  21. package/dist/es5/mask/mask-extension.js +57 -63
  22. package/dist/es5/mask/mask-extension.js.map +1 -1
  23. package/dist/es5/mask/mask-pass.js +36 -42
  24. package/dist/es5/mask/mask-pass.js.map +1 -1
  25. package/dist/es5/path-style/path-style-extension.js +81 -89
  26. package/dist/es5/path-style/path-style-extension.js.map +1 -1
  27. package/dist/es5/terrain/height-map-builder.js +73 -80
  28. package/dist/es5/terrain/height-map-builder.js.map +1 -1
  29. package/dist/es5/terrain/terrain-cover.js +155 -162
  30. package/dist/es5/terrain/terrain-cover.js.map +1 -1
  31. package/dist/es5/terrain/terrain-effect.js +233 -242
  32. package/dist/es5/terrain/terrain-effect.js.map +1 -1
  33. package/dist/es5/terrain/terrain-extension.js +44 -51
  34. package/dist/es5/terrain/terrain-extension.js.map +1 -1
  35. package/dist/es5/terrain/terrain-pass.js +61 -65
  36. package/dist/es5/terrain/terrain-pass.js.map +1 -1
  37. package/dist/es5/terrain/terrain-picking-pass.js +56 -62
  38. package/dist/es5/terrain/terrain-picking-pass.js.map +1 -1
  39. package/dist/esm/brushing/brushing-extension.js +2 -5
  40. package/dist/esm/brushing/brushing-extension.js.map +1 -1
  41. package/dist/esm/brushing/shader-module.js +67 -4
  42. package/dist/esm/brushing/shader-module.js.map +1 -1
  43. package/dist/esm/clip/clip-extension.js +33 -14
  44. package/dist/esm/clip/clip-extension.js.map +1 -1
  45. package/dist/esm/collision-filter/collision-filter-effect.js +10 -19
  46. package/dist/esm/collision-filter/collision-filter-effect.js.map +1 -1
  47. package/dist/esm/collision-filter/collision-filter-extension.js +2 -5
  48. package/dist/esm/collision-filter/collision-filter-extension.js.map +1 -1
  49. package/dist/esm/collision-filter/shader-module.js +76 -4
  50. package/dist/esm/collision-filter/shader-module.js.map +1 -1
  51. package/dist/esm/data-filter/aggregator.js +45 -2
  52. package/dist/esm/data-filter/aggregator.js.map +1 -1
  53. package/dist/esm/data-filter/data-filter-extension.js +2 -5
  54. package/dist/esm/data-filter/data-filter-extension.js.map +1 -1
  55. package/dist/esm/data-filter/shader-module.js +86 -6
  56. package/dist/esm/data-filter/shader-module.js.map +1 -1
  57. package/dist/esm/fill-style/fill-style-extension.js +2 -5
  58. package/dist/esm/fill-style/fill-style-extension.js.map +1 -1
  59. package/dist/esm/fill-style/shaders.glsl.js +60 -5
  60. package/dist/esm/fill-style/shaders.glsl.js.map +1 -1
  61. package/dist/esm/fp64/fp64-extension.js +1 -3
  62. package/dist/esm/fp64/fp64-extension.js.map +1 -1
  63. package/dist/esm/fp64/project64.glsl.js +81 -1
  64. package/dist/esm/fp64/project64.glsl.js.map +1 -1
  65. package/dist/esm/mask/mask-effect.js +10 -20
  66. package/dist/esm/mask/mask-effect.js.map +1 -1
  67. package/dist/esm/mask/mask-extension.js +3 -6
  68. package/dist/esm/mask/mask-extension.js.map +1 -1
  69. package/dist/esm/mask/mask-pass.js +2 -6
  70. package/dist/esm/mask/mask-pass.js.map +1 -1
  71. package/dist/esm/mask/shader-module.js +61 -6
  72. package/dist/esm/mask/shader-module.js.map +1 -1
  73. package/dist/esm/path-style/path-style-extension.js +2 -5
  74. package/dist/esm/path-style/path-style-extension.js.map +1 -1
  75. package/dist/esm/path-style/shaders.glsl.js +79 -8
  76. package/dist/esm/path-style/shaders.glsl.js.map +1 -1
  77. package/dist/esm/terrain/height-map-builder.js +8 -17
  78. package/dist/esm/terrain/height-map-builder.js.map +1 -1
  79. package/dist/esm/terrain/shader-module.js +59 -7
  80. package/dist/esm/terrain/shader-module.js.map +1 -1
  81. package/dist/esm/terrain/terrain-cover.js +11 -22
  82. package/dist/esm/terrain/terrain-cover.js.map +1 -1
  83. package/dist/esm/terrain/terrain-effect.js +11 -21
  84. package/dist/esm/terrain/terrain-effect.js.map +1 -1
  85. package/dist/esm/terrain/terrain-extension.js +2 -5
  86. package/dist/esm/terrain/terrain-extension.js.map +1 -1
  87. package/dist/esm/terrain/terrain-pass.js +1 -1
  88. package/dist/esm/terrain/terrain-pass.js.map +1 -1
  89. package/dist/esm/terrain/terrain-picking-pass.js +2 -4
  90. package/dist/esm/terrain/terrain-picking-pass.js.map +1 -1
  91. package/dist.min.js +36 -35
  92. package/package.json +2 -2
  93. package/typed/brushing/brushing.d.ts +0 -39
  94. package/typed/brushing/brushing.d.ts.map +0 -1
  95. package/typed/brushing/brushing.js +0 -83
  96. package/typed/brushing/shader-module.js +0 -116
  97. package/typed/clip/clip.d.ts +0 -32
  98. package/typed/clip/clip.d.ts.map +0 -1
  99. package/typed/clip/clip.js +0 -114
  100. package/typed/collide/collide-effect.d.ts +0 -28
  101. package/typed/collide/collide-effect.d.ts.map +0 -1
  102. package/typed/collide/collide-pass.d.ts +0 -14
  103. package/typed/collide/collide-pass.d.ts.map +0 -1
  104. package/typed/collide/collide.d.ts +0 -41
  105. package/typed/collide/collide.d.ts.map +0 -1
  106. package/typed/collide/shader-module.d.ts +0 -4
  107. package/typed/collide/shader-module.d.ts.map +0 -1
  108. package/typed/collision-filter/collision-filter.d.ts +0 -41
  109. package/typed/collision-filter/collision-filter.d.ts.map +0 -1
  110. package/typed/common/projection-utils.d.ts +0 -27
  111. package/typed/common/projection-utils.d.ts.map +0 -1
  112. package/typed/data-filter/aggregator.js +0 -98
  113. package/typed/data-filter/data-filter.d.ts +0 -90
  114. package/typed/data-filter/data-filter.d.ts.map +0 -1
  115. package/typed/data-filter/data-filter.js +0 -159
  116. package/typed/data-filter/shader-module.js +0 -152
  117. package/typed/fill-style/fill-style.d.ts +0 -86
  118. package/typed/fill-style/fill-style.d.ts.map +0 -1
  119. package/typed/fill-style/fill-style.js +0 -152
  120. package/typed/fill-style/shaders.glsl.js +0 -95
  121. package/typed/fp64/fp64.d.ts +0 -8
  122. package/typed/fp64/fp64.d.ts.map +0 -1
  123. package/typed/fp64/fp64.js +0 -34
  124. package/typed/fp64/project64.glsl.js +0 -100
  125. package/typed/fp64/project64.js +0 -50
  126. package/typed/index.js +0 -9
  127. package/typed/mask/mask.d.ts +0 -30
  128. package/typed/mask/mask.d.ts.map +0 -1
  129. package/typed/mask/mask.js +0 -48
  130. package/typed/mask/shader-module.js +0 -73
  131. package/typed/mask/utils.d.ts +0 -13
  132. package/typed/mask/utils.d.ts.map +0 -1
  133. package/typed/path-style/path-style.d.ts +0 -66
  134. package/typed/path-style/path-style.d.ts.map +0 -1
  135. package/typed/path-style/path-style.js +0 -107
  136. package/typed/path-style/shaders.glsl.js +0 -93
  137. package/typed/terrain/height-map.d.ts +0 -27
  138. package/typed/terrain/height-map.d.ts.map +0 -1
  139. package/typed/terrain/shader-module-offset.d.ts +0 -4
  140. package/typed/terrain/shader-module-offset.d.ts.map +0 -1
  141. package/typed/terrain/shader-module-source.d.ts +0 -4
  142. package/typed/terrain/shader-module-source.d.ts.map +0 -1
  143. package/typed/terrain/terrain.d.ts +0 -21
  144. package/typed/terrain/terrain.d.ts.map +0 -1
@@ -9,10 +9,6 @@ exports.HeightMapBuilder = 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
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
12
  var _core = require("@luma.gl/core");
17
13
 
18
14
  var _projectionUtils = require("../utils/projection-utils");
@@ -22,99 +18,96 @@ var _utils = require("./utils");
22
18
  var MAP_MAX_SIZE = 2048;
23
19
 
24
20
  var HeightMapBuilder = function () {
21
+ HeightMapBuilder.isSupported = function isSupported(gl) {
22
+ return _core.Framebuffer.isSupported(gl, {
23
+ colorBufferFloat: true
24
+ });
25
+ };
26
+
25
27
  function HeightMapBuilder(gl) {
26
28
  (0, _classCallCheck2.default)(this, HeightMapBuilder);
27
- (0, _defineProperty2.default)(this, "renderViewport", null);
28
- (0, _defineProperty2.default)(this, "bounds", null);
29
- (0, _defineProperty2.default)(this, "fbo", void 0);
30
- (0, _defineProperty2.default)(this, "gl", void 0);
31
- (0, _defineProperty2.default)(this, "layers", []);
32
- (0, _defineProperty2.default)(this, "layersBounds", []);
33
- (0, _defineProperty2.default)(this, "layersBoundsCommon", null);
34
- (0, _defineProperty2.default)(this, "lastViewport", null);
29
+ this.renderViewport = null;
30
+ this.bounds = null;
31
+ this.fbo = void 0;
32
+ this.gl = void 0;
33
+ this.layers = [];
34
+ this.layersBounds = [];
35
+ this.layersBoundsCommon = null;
36
+ this.lastViewport = null;
35
37
  this.gl = gl;
36
38
  }
37
39
 
38
- (0, _createClass2.default)(HeightMapBuilder, [{
39
- key: "getRenderFramebuffer",
40
- value: function getRenderFramebuffer() {
41
- if (!this.renderViewport) {
42
- return null;
43
- }
40
+ var _proto = HeightMapBuilder.prototype;
44
41
 
45
- if (!this.fbo) {
46
- this.fbo = (0, _utils.createRenderTarget)(this.gl, {
47
- id: 'height-map',
48
- float: true
49
- });
50
- }
42
+ _proto.getRenderFramebuffer = function getRenderFramebuffer() {
43
+ if (!this.renderViewport) {
44
+ return null;
45
+ }
51
46
 
52
- return this.fbo;
47
+ if (!this.fbo) {
48
+ this.fbo = (0, _utils.createRenderTarget)(this.gl, {
49
+ id: 'height-map',
50
+ float: true
51
+ });
53
52
  }
54
- }, {
55
- key: "shouldUpdate",
56
- value: function shouldUpdate(_ref) {
57
- var _this = this;
58
-
59
- var layers = _ref.layers,
60
- viewport = _ref.viewport;
61
- var layersChanged = layers.length !== this.layers.length || layers.some(function (layer, i) {
62
- return layer !== _this.layers[i] || layer.props.transitions || layer.getBounds() !== _this.layersBounds[i];
53
+
54
+ return this.fbo;
55
+ };
56
+
57
+ _proto.shouldUpdate = function shouldUpdate(_ref) {
58
+ var _this = this;
59
+
60
+ var layers = _ref.layers,
61
+ viewport = _ref.viewport;
62
+ var layersChanged = layers.length !== this.layers.length || layers.some(function (layer, i) {
63
+ return layer !== _this.layers[i] || layer.props.transitions || layer.getBounds() !== _this.layersBounds[i];
64
+ });
65
+
66
+ if (layersChanged) {
67
+ this.layers = layers;
68
+ this.layersBounds = layers.map(function (layer) {
69
+ return layer.getBounds();
63
70
  });
71
+ this.layersBoundsCommon = (0, _projectionUtils.joinLayerBounds)(layers, viewport);
72
+ }
64
73
 
65
- if (layersChanged) {
66
- this.layers = layers;
67
- this.layersBounds = layers.map(function (layer) {
68
- return layer.getBounds();
69
- });
70
- this.layersBoundsCommon = (0, _projectionUtils.joinLayerBounds)(layers, viewport);
71
- }
74
+ var viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);
72
75
 
73
- var viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);
76
+ if (!this.layersBoundsCommon) {
77
+ this.renderViewport = null;
78
+ } else if (layersChanged || viewportChanged) {
79
+ var bounds = (0, _projectionUtils.getRenderBounds)(this.layersBoundsCommon, viewport);
74
80
 
75
- if (!this.layersBoundsCommon) {
81
+ if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
76
82
  this.renderViewport = null;
77
- } else if (layersChanged || viewportChanged) {
78
- var bounds = (0, _projectionUtils.getRenderBounds)(this.layersBoundsCommon, viewport);
79
-
80
- if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
81
- this.renderViewport = null;
82
- return false;
83
- }
84
-
85
- this.bounds = bounds;
86
- this.lastViewport = viewport;
87
- var scale = viewport.scale;
88
- var pixelWidth = (bounds[2] - bounds[0]) * scale;
89
- var pixelHeight = (bounds[3] - bounds[1]) * scale;
90
- this.renderViewport = pixelWidth > 0 || pixelHeight > 0 ? (0, _projectionUtils.makeViewport)({
91
- bounds: [viewport.center[0] - 1, viewport.center[1] - 1, viewport.center[0] + 1, viewport.center[1] + 1],
92
- zoom: viewport.zoom,
93
- width: Math.min(pixelWidth, MAP_MAX_SIZE),
94
- height: Math.min(pixelHeight, MAP_MAX_SIZE),
95
- viewport: viewport
96
- }) : null;
97
- return true;
83
+ return false;
98
84
  }
99
85
 
100
- return false;
101
- }
102
- }, {
103
- key: "delete",
104
- value: function _delete() {
105
- if (this.fbo) {
106
- this.fbo.color.delete();
107
- this.fbo.delete();
108
- }
86
+ this.bounds = bounds;
87
+ this.lastViewport = viewport;
88
+ var scale = viewport.scale;
89
+ var pixelWidth = (bounds[2] - bounds[0]) * scale;
90
+ var pixelHeight = (bounds[3] - bounds[1]) * scale;
91
+ this.renderViewport = pixelWidth > 0 || pixelHeight > 0 ? (0, _projectionUtils.makeViewport)({
92
+ bounds: [viewport.center[0] - 1, viewport.center[1] - 1, viewport.center[0] + 1, viewport.center[1] + 1],
93
+ zoom: viewport.zoom,
94
+ width: Math.min(pixelWidth, MAP_MAX_SIZE),
95
+ height: Math.min(pixelHeight, MAP_MAX_SIZE),
96
+ viewport: viewport
97
+ }) : null;
98
+ return true;
109
99
  }
110
- }], [{
111
- key: "isSupported",
112
- value: function isSupported(gl) {
113
- return _core.Framebuffer.isSupported(gl, {
114
- colorBufferFloat: true
115
- });
100
+
101
+ return false;
102
+ };
103
+
104
+ _proto.delete = function _delete() {
105
+ if (this.fbo) {
106
+ this.fbo.color.delete();
107
+ this.fbo.delete();
116
108
  }
117
- }]);
109
+ };
110
+
118
111
  return HeightMapBuilder;
119
112
  }();
120
113
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/terrain/height-map-builder.ts"],"names":["MAP_MAX_SIZE","HeightMapBuilder","gl","renderViewport","fbo","id","float","layers","viewport","layersChanged","length","some","layer","i","props","transitions","getBounds","layersBounds","map","layersBoundsCommon","viewportChanged","lastViewport","equals","bounds","scale","pixelWidth","pixelHeight","center","zoom","width","Math","min","height","color","delete","Framebuffer","isSupported","colorBufferFloat"],"mappings":"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","sourcesContent":["import {Framebuffer} from '@luma.gl/core';\nimport {joinLayerBounds, getRenderBounds, makeViewport, Bounds} from '../utils/projection-utils';\nimport {createRenderTarget} from './utils';\n\nimport type {Viewport, Layer} from '@deck.gl/core';\n\nconst MAP_MAX_SIZE = 2048;\n\n/**\n * Manages the lifecycle of the height map (a framebuffer that encodes elevation).\n * One instance of height map is is shared across all layers. It is updated when the viewport changes\n * or when some terrain source layer's data changes.\n * During the draw call of any terrainDrawMode:offset layers,\n * the vertex shader reads from this framebuffer to retrieve its z offset.\n */\nexport class HeightMapBuilder {\n /** Viewport used to draw into the texture */\n renderViewport: Viewport | null = null;\n /** Bounds of the height map texture, in cartesian space */\n bounds: Bounds | null = null;\n\n protected fbo?: Framebuffer;\n protected gl: WebGLRenderingContext;\n /** Last rendered layers */\n private layers: Layer[] = [];\n /** Last layer.getBounds() */\n private layersBounds: ([number[], number[]] | null)[] = [];\n /** The union of layersBounds in cartesian space */\n private layersBoundsCommon: Bounds | null = null;\n private lastViewport: Viewport | null = null;\n\n static isSupported(gl: WebGLRenderingContext): boolean {\n return Framebuffer.isSupported(gl, {colorBufferFloat: true});\n }\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n }\n\n /** Returns the height map framebuffer for read/write access.\n * Returns null when the texture is invalid.\n */\n getRenderFramebuffer(): Framebuffer | null {\n if (!this.renderViewport) {\n return null;\n }\n if (!this.fbo) {\n this.fbo = createRenderTarget(this.gl, {id: 'height-map', float: true});\n }\n return this.fbo;\n }\n\n /** Called every render cycle to check if the framebuffer needs update */\n shouldUpdate({layers, viewport}: {layers: Layer[]; viewport: Viewport}): boolean {\n const layersChanged =\n layers.length !== this.layers.length ||\n layers.some(\n (layer, i) =>\n // Layer instance is updated\n // Layer props might have changed\n // Undetermined props could have an effect on the output geometry of a terrain source,\n // for example getElevation+updateTriggers, elevationScale, modelMatrix\n layer !== this.layers[i] ||\n // Some prop is in transition\n layer.props.transitions ||\n // Layer's geometry bounds have changed\n layer.getBounds() !== this.layersBounds[i]\n );\n\n if (layersChanged) {\n // Recalculate cached bounds\n this.layers = layers;\n this.layersBounds = layers.map(layer => layer.getBounds());\n this.layersBoundsCommon = joinLayerBounds(layers, viewport);\n }\n\n const viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);\n\n if (!this.layersBoundsCommon) {\n this.renderViewport = null;\n } else if (layersChanged || viewportChanged) {\n const bounds = getRenderBounds(this.layersBoundsCommon, viewport);\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n this.renderViewport = null;\n return false;\n }\n\n this.bounds = bounds;\n this.lastViewport = viewport;\n\n const scale = viewport.scale;\n const pixelWidth = (bounds[2] - bounds[0]) * scale;\n const pixelHeight = (bounds[3] - bounds[1]) * scale;\n\n this.renderViewport =\n pixelWidth > 0 || pixelHeight > 0\n ? makeViewport({\n // It's not important whether the geometry is visible in this viewport, because\n // vertices will not use the standard project_to_clipspace in the DRAW_TO_HEIGHT_MAP shader\n // However the viewport must have the same center and zoom as the screen viewport\n // So that projection uniforms used for calculating z are the same\n bounds: [\n viewport.center[0] - 1,\n viewport.center[1] - 1,\n viewport.center[0] + 1,\n viewport.center[1] + 1\n ],\n zoom: viewport.zoom,\n width: Math.min(pixelWidth, MAP_MAX_SIZE),\n height: Math.min(pixelHeight, MAP_MAX_SIZE),\n viewport\n })\n : null;\n return true;\n }\n return false;\n }\n\n delete() {\n if (this.fbo) {\n this.fbo.color.delete();\n this.fbo.delete();\n }\n }\n}\n"],"file":"height-map-builder.js"}
1
+ {"version":3,"sources":["../../../src/terrain/height-map-builder.ts"],"names":["MAP_MAX_SIZE","HeightMapBuilder","isSupported","gl","Framebuffer","colorBufferFloat","renderViewport","bounds","fbo","layers","layersBounds","layersBoundsCommon","lastViewport","getRenderFramebuffer","id","float","shouldUpdate","viewport","layersChanged","length","some","layer","i","props","transitions","getBounds","map","viewportChanged","equals","scale","pixelWidth","pixelHeight","center","zoom","width","Math","min","height","delete","color"],"mappings":"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","sourcesContent":["import {Framebuffer} from '@luma.gl/core';\nimport {joinLayerBounds, getRenderBounds, makeViewport, Bounds} from '../utils/projection-utils';\nimport {createRenderTarget} from './utils';\n\nimport type {Viewport, Layer} from '@deck.gl/core';\n\nconst MAP_MAX_SIZE = 2048;\n\n/**\n * Manages the lifecycle of the height map (a framebuffer that encodes elevation).\n * One instance of height map is is shared across all layers. It is updated when the viewport changes\n * or when some terrain source layer's data changes.\n * During the draw call of any terrainDrawMode:offset layers,\n * the vertex shader reads from this framebuffer to retrieve its z offset.\n */\nexport class HeightMapBuilder {\n /** Viewport used to draw into the texture */\n renderViewport: Viewport | null = null;\n /** Bounds of the height map texture, in cartesian space */\n bounds: Bounds | null = null;\n\n protected fbo?: Framebuffer;\n protected gl: WebGLRenderingContext;\n /** Last rendered layers */\n private layers: Layer[] = [];\n /** Last layer.getBounds() */\n private layersBounds: ([number[], number[]] | null)[] = [];\n /** The union of layersBounds in cartesian space */\n private layersBoundsCommon: Bounds | null = null;\n private lastViewport: Viewport | null = null;\n\n static isSupported(gl: WebGLRenderingContext): boolean {\n return Framebuffer.isSupported(gl, {colorBufferFloat: true});\n }\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n }\n\n /** Returns the height map framebuffer for read/write access.\n * Returns null when the texture is invalid.\n */\n getRenderFramebuffer(): Framebuffer | null {\n if (!this.renderViewport) {\n return null;\n }\n if (!this.fbo) {\n this.fbo = createRenderTarget(this.gl, {id: 'height-map', float: true});\n }\n return this.fbo;\n }\n\n /** Called every render cycle to check if the framebuffer needs update */\n shouldUpdate({layers, viewport}: {layers: Layer[]; viewport: Viewport}): boolean {\n const layersChanged =\n layers.length !== this.layers.length ||\n layers.some(\n (layer, i) =>\n // Layer instance is updated\n // Layer props might have changed\n // Undetermined props could have an effect on the output geometry of a terrain source,\n // for example getElevation+updateTriggers, elevationScale, modelMatrix\n layer !== this.layers[i] ||\n // Some prop is in transition\n layer.props.transitions ||\n // Layer's geometry bounds have changed\n layer.getBounds() !== this.layersBounds[i]\n );\n\n if (layersChanged) {\n // Recalculate cached bounds\n this.layers = layers;\n this.layersBounds = layers.map(layer => layer.getBounds());\n this.layersBoundsCommon = joinLayerBounds(layers, viewport);\n }\n\n const viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);\n\n if (!this.layersBoundsCommon) {\n this.renderViewport = null;\n } else if (layersChanged || viewportChanged) {\n const bounds = getRenderBounds(this.layersBoundsCommon, viewport);\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n this.renderViewport = null;\n return false;\n }\n\n this.bounds = bounds;\n this.lastViewport = viewport;\n\n const scale = viewport.scale;\n const pixelWidth = (bounds[2] - bounds[0]) * scale;\n const pixelHeight = (bounds[3] - bounds[1]) * scale;\n\n this.renderViewport =\n pixelWidth > 0 || pixelHeight > 0\n ? makeViewport({\n // It's not important whether the geometry is visible in this viewport, because\n // vertices will not use the standard project_to_clipspace in the DRAW_TO_HEIGHT_MAP shader\n // However the viewport must have the same center and zoom as the screen viewport\n // So that projection uniforms used for calculating z are the same\n bounds: [\n viewport.center[0] - 1,\n viewport.center[1] - 1,\n viewport.center[0] + 1,\n viewport.center[1] + 1\n ],\n zoom: viewport.zoom,\n width: Math.min(pixelWidth, MAP_MAX_SIZE),\n height: Math.min(pixelHeight, MAP_MAX_SIZE),\n viewport\n })\n : null;\n return true;\n }\n return false;\n }\n\n delete() {\n if (this.fbo) {\n this.fbo.color.delete();\n this.fbo.delete();\n }\n }\n}\n"],"file":"height-map-builder.js"}
@@ -11,8 +11,6 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
11
11
 
12
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
13
 
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
14
  var _utils = require("./utils");
17
15
 
18
16
  var _projectionUtils = require("../utils/projection-utils");
@@ -26,200 +24,195 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
26
24
  var TerrainCover = function () {
27
25
  function TerrainCover(targetLayer) {
28
26
  (0, _classCallCheck2.default)(this, TerrainCover);
29
- (0, _defineProperty2.default)(this, "isDirty", true);
30
- (0, _defineProperty2.default)(this, "targetLayer", void 0);
31
- (0, _defineProperty2.default)(this, "renderViewport", null);
32
- (0, _defineProperty2.default)(this, "bounds", null);
33
- (0, _defineProperty2.default)(this, "fbo", void 0);
34
- (0, _defineProperty2.default)(this, "pickingFbo", void 0);
35
- (0, _defineProperty2.default)(this, "layers", []);
36
- (0, _defineProperty2.default)(this, "tile", void 0);
37
- (0, _defineProperty2.default)(this, "targetBounds", null);
38
- (0, _defineProperty2.default)(this, "targetBoundsCommon", null);
27
+ this.isDirty = true;
28
+ this.targetLayer = void 0;
29
+ this.renderViewport = null;
30
+ this.bounds = null;
31
+ this.fbo = void 0;
32
+ this.pickingFbo = void 0;
33
+ this.layers = [];
34
+ this.tile = void 0;
35
+ this.targetBounds = null;
36
+ this.targetBoundsCommon = null;
39
37
  this.targetLayer = targetLayer;
40
38
  this.tile = getTile(targetLayer);
41
39
  }
42
40
 
43
- (0, _createClass2.default)(TerrainCover, [{
44
- key: "id",
45
- get: function get() {
46
- return this.targetLayer.id;
47
- }
48
- }, {
49
- key: "isActive",
50
- get: function get() {
51
- return Boolean(this.targetLayer.getCurrentLayer());
52
- }
53
- }, {
54
- key: "shouldUpdate",
55
- value: function shouldUpdate(_ref) {
56
- var targetLayer = _ref.targetLayer,
57
- viewport = _ref.viewport,
58
- layers = _ref.layers,
59
- layerNeedsRedraw = _ref.layerNeedsRedraw;
60
-
61
- if (targetLayer) {
62
- this.targetLayer = targetLayer;
63
- }
41
+ var _proto = TerrainCover.prototype;
64
42
 
65
- var sizeChanged = viewport ? this._updateViewport(viewport) : false;
66
- var layersChanged = layers ? this._updateLayers(layers) : false;
43
+ _proto.shouldUpdate = function shouldUpdate(_ref) {
44
+ var targetLayer = _ref.targetLayer,
45
+ viewport = _ref.viewport,
46
+ layers = _ref.layers,
47
+ layerNeedsRedraw = _ref.layerNeedsRedraw;
67
48
 
68
- if (layerNeedsRedraw) {
69
- var _iterator = _createForOfIteratorHelper(this.layers),
70
- _step;
49
+ if (targetLayer) {
50
+ this.targetLayer = targetLayer;
51
+ }
71
52
 
72
- try {
73
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
74
- var id = _step.value;
53
+ var sizeChanged = viewport ? this._updateViewport(viewport) : false;
54
+ var layersChanged = layers ? this._updateLayers(layers) : false;
75
55
 
76
- if (layerNeedsRedraw[id]) {
77
- layersChanged = true;
78
- break;
79
- }
80
- }
81
- } catch (err) {
82
- _iterator.e(err);
83
- } finally {
84
- _iterator.f();
85
- }
86
- }
56
+ if (layerNeedsRedraw) {
57
+ var _iterator = _createForOfIteratorHelper(this.layers),
58
+ _step;
87
59
 
88
- return layersChanged || sizeChanged;
89
- }
90
- }, {
91
- key: "_updateLayers",
92
- value: function _updateLayers(layers) {
93
- var needsRedraw = false;
94
- layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;
95
-
96
- if (layers.length !== this.layers.length) {
97
- needsRedraw = true;
98
- } else {
99
- for (var i = 0; i < layers.length; i++) {
100
- var id = layers[i].id;
101
-
102
- if (id !== this.layers[i]) {
103
- needsRedraw = true;
60
+ try {
61
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
62
+ var id = _step.value;
63
+
64
+ if (layerNeedsRedraw[id]) {
65
+ layersChanged = true;
104
66
  break;
105
67
  }
106
68
  }
69
+ } catch (err) {
70
+ _iterator.e(err);
71
+ } finally {
72
+ _iterator.f();
107
73
  }
74
+ }
75
+
76
+ return layersChanged || sizeChanged;
77
+ };
78
+
79
+ _proto._updateLayers = function _updateLayers(layers) {
80
+ var needsRedraw = false;
81
+ layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;
108
82
 
109
- if (needsRedraw) {
110
- this.layers = layers.map(function (layer) {
111
- return layer.id;
112
- });
83
+ if (layers.length !== this.layers.length) {
84
+ needsRedraw = true;
85
+ } else {
86
+ for (var i = 0; i < layers.length; i++) {
87
+ var id = layers[i].id;
88
+
89
+ if (id !== this.layers[i]) {
90
+ needsRedraw = true;
91
+ break;
92
+ }
113
93
  }
94
+ }
114
95
 
115
- return needsRedraw;
96
+ if (needsRedraw) {
97
+ this.layers = layers.map(function (layer) {
98
+ return layer.id;
99
+ });
116
100
  }
117
- }, {
118
- key: "_updateViewport",
119
- value: function _updateViewport(viewport) {
120
- var targetLayer = this.targetLayer;
121
- var shouldRedraw = false;
122
-
123
- if (this.tile && 'boundingBox' in this.tile) {
124
- if (!this.targetBounds) {
125
- shouldRedraw = true;
126
- this.targetBounds = this.tile.boundingBox;
127
- var bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);
128
- var topRightCommon = viewport.projectPosition(this.targetBounds[1]);
129
- this.targetBoundsCommon = [bottomLeftCommon[0], bottomLeftCommon[1], topRightCommon[0], topRightCommon[1]];
130
- }
131
- } else if (this.targetBounds !== targetLayer.getBounds()) {
101
+
102
+ return needsRedraw;
103
+ };
104
+
105
+ _proto._updateViewport = function _updateViewport(viewport) {
106
+ var targetLayer = this.targetLayer;
107
+ var shouldRedraw = false;
108
+
109
+ if (this.tile && 'boundingBox' in this.tile) {
110
+ if (!this.targetBounds) {
132
111
  shouldRedraw = true;
133
- this.targetBounds = targetLayer.getBounds();
134
- this.targetBoundsCommon = (0, _projectionUtils.joinLayerBounds)([targetLayer], viewport);
112
+ this.targetBounds = this.tile.boundingBox;
113
+ var bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);
114
+ var topRightCommon = viewport.projectPosition(this.targetBounds[1]);
115
+ this.targetBoundsCommon = [bottomLeftCommon[0], bottomLeftCommon[1], topRightCommon[0], topRightCommon[1]];
135
116
  }
117
+ } else if (this.targetBounds !== targetLayer.getBounds()) {
118
+ shouldRedraw = true;
119
+ this.targetBounds = targetLayer.getBounds();
120
+ this.targetBoundsCommon = (0, _projectionUtils.joinLayerBounds)([targetLayer], viewport);
121
+ }
136
122
 
137
- if (!this.targetBoundsCommon) {
138
- return false;
139
- }
123
+ if (!this.targetBoundsCommon) {
124
+ return false;
125
+ }
140
126
 
141
- var newZoom = Math.ceil(viewport.zoom + 0.5);
142
-
143
- if (this.tile) {
144
- this.bounds = this.targetBoundsCommon;
145
- } else {
146
- var _this$renderViewport;
147
-
148
- var oldZoom = (_this$renderViewport = this.renderViewport) === null || _this$renderViewport === void 0 ? void 0 : _this$renderViewport.zoom;
149
- shouldRedraw = shouldRedraw || newZoom !== oldZoom;
150
- var newBounds = (0, _projectionUtils.getRenderBounds)(this.targetBoundsCommon, viewport);
151
- var oldBounds = this.bounds;
152
- shouldRedraw = shouldRedraw || !oldBounds || newBounds.some(function (x, i) {
153
- return x !== oldBounds[i];
154
- });
155
- this.bounds = newBounds;
156
- }
127
+ var newZoom = Math.ceil(viewport.zoom + 0.5);
157
128
 
158
- if (shouldRedraw) {
159
- this.renderViewport = (0, _projectionUtils.makeViewport)({
160
- bounds: this.bounds,
161
- zoom: newZoom,
162
- viewport: viewport
163
- });
164
- }
129
+ if (this.tile) {
130
+ this.bounds = this.targetBoundsCommon;
131
+ } else {
132
+ var _this$renderViewport;
165
133
 
166
- return shouldRedraw;
134
+ var oldZoom = (_this$renderViewport = this.renderViewport) === null || _this$renderViewport === void 0 ? void 0 : _this$renderViewport.zoom;
135
+ shouldRedraw = shouldRedraw || newZoom !== oldZoom;
136
+ var newBounds = (0, _projectionUtils.getRenderBounds)(this.targetBoundsCommon, viewport);
137
+ var oldBounds = this.bounds;
138
+ shouldRedraw = shouldRedraw || !oldBounds || newBounds.some(function (x, i) {
139
+ return x !== oldBounds[i];
140
+ });
141
+ this.bounds = newBounds;
167
142
  }
168
- }, {
169
- key: "getRenderFramebuffer",
170
- value: function getRenderFramebuffer() {
171
- if (!this.renderViewport || this.layers.length === 0) {
172
- return null;
173
- }
174
143
 
175
- if (!this.fbo) {
176
- this.fbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
177
- id: this.id
178
- });
179
- }
144
+ if (shouldRedraw) {
145
+ this.renderViewport = (0, _projectionUtils.makeViewport)({
146
+ bounds: this.bounds,
147
+ zoom: newZoom,
148
+ viewport: viewport
149
+ });
150
+ }
180
151
 
181
- return this.fbo;
152
+ return shouldRedraw;
153
+ };
154
+
155
+ _proto.getRenderFramebuffer = function getRenderFramebuffer() {
156
+ if (!this.renderViewport || this.layers.length === 0) {
157
+ return null;
182
158
  }
183
- }, {
184
- key: "getPickingFramebuffer",
185
- value: function getPickingFramebuffer() {
186
- if (!this.renderViewport || this.layers.length === 0 && !this.targetLayer.props.pickable) {
187
- return null;
188
- }
189
159
 
190
- if (!this.pickingFbo) {
191
- this.pickingFbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
192
- id: "".concat(this.id, "-picking")
193
- });
194
- }
160
+ if (!this.fbo) {
161
+ this.fbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
162
+ id: this.id
163
+ });
164
+ }
165
+
166
+ return this.fbo;
167
+ };
195
168
 
196
- return this.pickingFbo;
169
+ _proto.getPickingFramebuffer = function getPickingFramebuffer() {
170
+ if (!this.renderViewport || this.layers.length === 0 && !this.targetLayer.props.pickable) {
171
+ return null;
197
172
  }
198
- }, {
199
- key: "filterLayers",
200
- value: function filterLayers(layers) {
201
- var _this = this;
202
173
 
203
- return layers.filter(function (_ref2) {
204
- var id = _ref2.id;
205
- return _this.layers.includes(id);
174
+ if (!this.pickingFbo) {
175
+ this.pickingFbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
176
+ id: "".concat(this.id, "-picking")
206
177
  });
207
178
  }
208
- }, {
209
- key: "delete",
210
- value: function _delete() {
211
- var fbo = this.fbo,
212
- pickingFbo = this.pickingFbo;
213
-
214
- if (fbo) {
215
- fbo.texture.delete();
216
- fbo.delete();
217
- }
218
179
 
219
- if (pickingFbo) {
220
- pickingFbo.texture.delete();
221
- pickingFbo.delete();
222
- }
180
+ return this.pickingFbo;
181
+ };
182
+
183
+ _proto.filterLayers = function filterLayers(layers) {
184
+ var _this = this;
185
+
186
+ return layers.filter(function (_ref2) {
187
+ var id = _ref2.id;
188
+ return _this.layers.includes(id);
189
+ });
190
+ };
191
+
192
+ _proto.delete = function _delete() {
193
+ var fbo = this.fbo,
194
+ pickingFbo = this.pickingFbo;
195
+
196
+ if (fbo) {
197
+ fbo.texture.delete();
198
+ fbo.delete();
199
+ }
200
+
201
+ if (pickingFbo) {
202
+ pickingFbo.texture.delete();
203
+ pickingFbo.delete();
204
+ }
205
+ };
206
+
207
+ (0, _createClass2.default)(TerrainCover, [{
208
+ key: "id",
209
+ get: function get() {
210
+ return this.targetLayer.id;
211
+ }
212
+ }, {
213
+ key: "isActive",
214
+ get: function get() {
215
+ return Boolean(this.targetLayer.getCurrentLayer());
223
216
  }
224
217
  }]);
225
218
  return TerrainCover;