@deck.gl/extensions 9.0.0-beta.10 → 9.0.0-beta.11

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 (50) hide show
  1. package/dist/collision-filter/collision-filter-effect.d.ts +4 -2
  2. package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -1
  3. package/dist/collision-filter/collision-filter-effect.js +10 -9
  4. package/dist/collision-filter/collision-filter-pass.d.ts +3 -2
  5. package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -1
  6. package/dist/collision-filter/collision-filter-pass.js +5 -7
  7. package/dist/data-filter/data-filter-extension.d.ts +5 -5
  8. package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
  9. package/dist/data-filter/data-filter-extension.js +45 -38
  10. package/dist/data-filter/shader-module.d.ts +30 -0
  11. package/dist/data-filter/shader-module.d.ts.map +1 -1
  12. package/dist/data-filter/shader-module.js +40 -20
  13. package/dist/dist.dev.js +571 -535
  14. package/dist/index.cjs +517 -478
  15. package/dist/index.cjs.map +4 -4
  16. package/dist/mask/mask-effect.d.ts +5 -4
  17. package/dist/mask/mask-effect.d.ts.map +1 -1
  18. package/dist/mask/mask-effect.js +9 -11
  19. package/dist/mask/mask-pass.d.ts +45 -3
  20. package/dist/mask/mask-pass.d.ts.map +1 -1
  21. package/dist/mask/mask-pass.js +17 -9
  22. package/dist/path-style/path-style-extension.d.ts.map +1 -1
  23. package/dist/path-style/path-style-extension.js +1 -0
  24. package/dist/terrain/terrain-cover.d.ts.map +1 -1
  25. package/dist/terrain/terrain-cover.js +2 -1
  26. package/dist/terrain/terrain-effect.d.ts +4 -5
  27. package/dist/terrain/terrain-effect.d.ts.map +1 -1
  28. package/dist/terrain/terrain-effect.js +6 -16
  29. package/dist/terrain/terrain-pass.d.ts +42 -0
  30. package/dist/terrain/terrain-pass.d.ts.map +1 -1
  31. package/dist/terrain/terrain-pass.js +24 -16
  32. package/dist/terrain/terrain-picking-pass.d.ts.map +1 -1
  33. package/dist/terrain/terrain-picking-pass.js +9 -8
  34. package/dist/terrain/utils.d.ts +1 -0
  35. package/dist/terrain/utils.d.ts.map +1 -1
  36. package/dist/terrain/utils.js +10 -6
  37. package/dist.min.js +63 -40
  38. package/package.json +6 -6
  39. package/src/collision-filter/collision-filter-effect.ts +23 -23
  40. package/src/collision-filter/collision-filter-pass.ts +7 -11
  41. package/src/data-filter/data-filter-extension.ts +57 -49
  42. package/src/data-filter/shader-module.ts +109 -43
  43. package/src/mask/mask-effect.ts +30 -19
  44. package/src/mask/mask-pass.ts +22 -16
  45. package/src/path-style/path-style-extension.ts +1 -0
  46. package/src/terrain/terrain-cover.ts +2 -1
  47. package/src/terrain/terrain-effect.ts +8 -19
  48. package/src/terrain/terrain-pass.ts +37 -34
  49. package/src/terrain/terrain-picking-pass.ts +19 -23
  50. package/src/terrain/utils.ts +12 -6
@@ -1,10 +1,19 @@
1
- import {GL} from '@luma.gl/constants';
1
+ import {RenderPipelineParameters} from '@luma.gl/core';
2
2
  import {Layer, Viewport, _LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';
3
3
  import type {HeightMapBuilder} from './height-map-builder';
4
4
  import type {TerrainCover} from './terrain-cover';
5
5
 
6
6
  export type TerrainPassRenderOptions = LayersPassRenderOptions;
7
7
 
8
+ const TERRAIN_BLENDING: RenderPipelineParameters = {
9
+ blendColorOperation: 'max',
10
+ blendColorSrcFactor: 'one',
11
+ blendColorDstFactor: 'one',
12
+ blendAlphaOperation: 'max',
13
+ blendAlphaSrcFactor: 'one',
14
+ blendAlphaDstFactor: 'one'
15
+ };
16
+
8
17
  /** Renders textures used by the TerrainEffect render pass */
9
18
  export class TerrainPass extends LayersPass {
10
19
  getRenderableLayers(viewport: Viewport, opts: TerrainPassRenderOptions): Layer[] {
@@ -32,24 +41,15 @@ export class TerrainPass extends LayersPass {
32
41
 
33
42
  target.resize(viewport);
34
43
 
35
- this.device.withParametersWebGL(
36
- {
37
- clearColor: [0, 0, 0, 0],
38
- blend: true,
39
- blendFunc: [GL.ONE, GL.ONE],
40
- blendEquation: GL.MAX,
41
- depthTest: false
42
- },
43
- () =>
44
- this.render({
45
- ...opts,
46
- target,
47
- pass: 'terrain-height-map',
48
- layers: opts.layers!,
49
- viewports: [viewport],
50
- effects: []
51
- })
52
- );
44
+ this.render({
45
+ ...opts,
46
+ target,
47
+ pass: 'terrain-height-map',
48
+ layers: opts.layers!,
49
+ viewports: [viewport],
50
+ effects: [],
51
+ clearColor: [0, 0, 0, 0]
52
+ });
53
53
  }
54
54
 
55
55
  renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPassRenderOptions>) {
@@ -64,20 +64,23 @@ export class TerrainPass extends LayersPass {
64
64
  const layers = terrainCover.filterLayers(opts.layers!);
65
65
  target.resize(viewport);
66
66
 
67
- this.device.withParametersWebGL(
68
- {
69
- clearColor: [0, 0, 0, 0],
70
- depthTest: false
71
- },
72
- () =>
73
- this.render({
74
- ...opts,
75
- target,
76
- pass: `terrain-cover-${terrainCover.id}`,
77
- layers,
78
- effects: [],
79
- viewports: [viewport]
80
- })
81
- );
67
+ this.render({
68
+ ...opts,
69
+ target,
70
+ pass: `terrain-cover-${terrainCover.id}`,
71
+ layers,
72
+ effects: [],
73
+ viewports: [viewport],
74
+ clearColor: [0, 0, 0, 0]
75
+ });
76
+ }
77
+
78
+ protected getLayerParameters(layer: Layer<{}>, layerIndex: number, viewport: Viewport) {
79
+ return {
80
+ ...layer.props.parameters,
81
+ blend: true,
82
+ depthTest: false,
83
+ ...(layer.props.operation.includes('terrain') && TERRAIN_BLENDING)
84
+ };
82
85
  }
83
86
  }
@@ -53,33 +53,29 @@ export class TerrainPickingPass extends PickLayersPass {
53
53
  }
54
54
  target.resize(viewport);
55
55
 
56
- this.device.withParametersWebGL(
57
- {
58
- depthTest: false
59
- },
60
- () =>
61
- this.render({
62
- ...opts,
63
- pickingFBO: target,
64
- pass: `terrain-cover-picking-${terrainCover.id}`,
65
- layers,
66
- effects: [],
67
- viewports: [viewport],
68
- // Disable the default culling because TileLayer would cull sublayers based on the screen viewport,
69
- // not the viewport of the terrain cover. Culling is already done by `terrainCover.filterLayers`
70
- cullRect: undefined,
71
- deviceRect: viewport,
72
- pickZ: false
73
- })
74
- );
56
+ this.render({
57
+ ...opts,
58
+ pickingFBO: target,
59
+ pass: `terrain-cover-picking-${terrainCover.id}`,
60
+ layers,
61
+ effects: [],
62
+ viewports: [viewport],
63
+ // Disable the default culling because TileLayer would cull sublayers based on the screen viewport,
64
+ // not the viewport of the terrain cover. Culling is already done by `terrainCover.filterLayers`
65
+ cullRect: undefined,
66
+ deviceRect: viewport,
67
+ pickZ: false
68
+ });
75
69
  }
76
70
 
77
71
  protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {
72
+ let parameters: any;
78
73
  if (this.drawParameters[layer.id]) {
79
- return this.drawParameters[layer.id];
74
+ parameters = this.drawParameters[layer.id];
75
+ } else {
76
+ parameters = super.getLayerParameters(layer, layerIndex, viewport);
77
+ parameters.blend = true;
80
78
  }
81
- const parameters = super.getLayerParameters(layer, layerIndex, viewport);
82
- parameters.blend = true;
83
- return parameters;
79
+ return {...parameters, depthTest: false};
84
80
  }
85
81
  }
@@ -6,23 +6,29 @@ export function createRenderTarget(
6
6
  opts: {
7
7
  id: string;
8
8
  float?: boolean;
9
+ interpolate?: boolean;
9
10
  }
10
11
  ) {
11
12
  return device.createFramebuffer({
12
13
  id: opts.id,
13
14
  colorAttachments: [
14
15
  device.createTexture({
16
+ id: opts.id,
15
17
  ...(opts.float && {
16
18
  format: 'rgba32float',
17
19
  type: GL.FLOAT
18
20
  }),
19
21
  mipmaps: false,
20
- sampler: {
21
- minFilter: 'linear',
22
- magFilter: 'linear',
23
- addressModeU: 'clamp-to-edge',
24
- addressModeV: 'clamp-to-edge'
25
- }
22
+ sampler:
23
+ opts.interpolate === false
24
+ ? {
25
+ minFilter: 'nearest',
26
+ magFilter: 'nearest'
27
+ }
28
+ : {
29
+ minFilter: 'linear',
30
+ magFilter: 'linear'
31
+ }
26
32
  })
27
33
  ]
28
34
  });