@deck.gl/arcgis 9.3.4 → 9.3.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.
package/dist/commons.d.ts CHANGED
@@ -9,10 +9,6 @@ export type RenderResources = {
9
9
  texture: Texture;
10
10
  model: Model;
11
11
  fbo: Framebuffer;
12
- _externalFramebuffer?: {
13
- handle: WebGLFramebuffer;
14
- wrapper: Framebuffer;
15
- };
16
12
  };
17
13
  export declare function initializeResources(this: Renderer, gl: WebGL2RenderingContext): Promise<RenderResources>;
18
14
  export declare function render(resources: RenderResources, viewport: {
@@ -24,6 +20,8 @@ export declare function render(resources: RenderResources, viewport: {
24
20
  altitude?: number;
25
21
  pitch: number;
26
22
  bearing: number;
23
+ views?: unknown;
24
+ viewState?: unknown;
27
25
  }): void;
28
26
  export declare function finalizeResources(resources: RenderResources): void;
29
27
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,OAAO,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AACnC,OAAO,EAAC,KAAK,EAAW,MAAM,iBAAiB,CAAC;AAIhD,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,WAAW,CAAC;IACjB,oBAAoB,CAAC,EAAE;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC,CAAC;CACzE,CAAC;AA8BF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,sBAAsB,GACzB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED,wBAAgB,MAAM,CACpB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE;IACR,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,QAgDF;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,QAM3D"}
1
+ {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,OAAO,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AACnC,OAAO,EAAC,KAAK,EAAW,MAAM,iBAAiB,CAAC;AAIhD,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AA8BF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,sBAAsB,GACzB,OAAO,CAAC,eAAe,CAAC,CAiG1B;AAED,wBAAgB,MAAM,CACpB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE;IACR,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,QAmFF;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,QAK3D"}
package/dist/commons.js CHANGED
@@ -57,7 +57,9 @@ out vec4 fragColor;
57
57
 
58
58
  void main(void) {
59
59
  vec4 imageColor = texture(deckglTexture, v_texcoord);
60
- imageColor.rgb *= imageColor.a;
60
+ // FBO stores premultiplied RGBA (rgb already multiplied by alpha).
61
+ // The composite blend (ONE, ONE_MINUS_SRC_ALPHA) handles premultiplied
62
+ // input correctly; multiplying again here would darken overlays.
61
63
  fragColor = imageColor;
62
64
  }
63
65
  `,
@@ -65,8 +67,8 @@ void main(void) {
65
67
  deckglTexture: texture
66
68
  },
67
69
  parameters: {
68
- depthWriteEnabled: true,
69
- depthCompare: 'less-equal',
70
+ depthWriteEnabled: false,
71
+ depthCompare: 'always',
70
72
  blendColorSrcFactor: 'one',
71
73
  blendColorDstFactor: 'one-minus-src-alpha',
72
74
  blendAlphaSrcFactor: 'one',
@@ -95,6 +97,13 @@ void main(void) {
95
97
  _framebuffer: fbo,
96
98
  _customRender: redrawReason => {
97
99
  if (redrawReason === 'arcgis') {
100
+ // ArcGIS renders with alphaSrc=ZERO (preserves destination alpha for its
101
+ // own compositing pipeline). Without resetting this, deck layers inherit
102
+ // that blend state and write alpha=0 into the FBO, making the composite
103
+ // shader output (0,0,0,0) everywhere. Reset to standard premultiplied-alpha
104
+ // blend so the FBO stores correct RGBA for the composite pass.
105
+ const glCtx = device.gl;
106
+ glCtx.blendFuncSeparate(glCtx.ONE, glCtx.ONE_MINUS_SRC_ALPHA, glCtx.ONE, glCtx.ONE_MINUS_SRC_ALPHA);
98
107
  deckInstance._drawLayers(redrawReason);
99
108
  }
100
109
  else {
@@ -108,33 +117,65 @@ export function render(resources, viewport) {
108
117
  const { model, deck, fbo } = resources;
109
118
  const device = model.device;
110
119
  if (device instanceof WebGLDevice) {
111
- const { width, height, ...viewState } = viewport;
120
+ // @ts-ignore device.getParametersWebGL should return `any` not `void`?
121
+ const rawScreenFbo = device.getParametersWebGL(36006);
122
+ const { width, height, views, viewState, ...defaultViewState } = viewport;
112
123
  /* global window */
113
124
  const dpr = window.devicePixelRatio;
114
125
  const pixelWidth = Math.round(width * dpr);
115
126
  const pixelHeight = Math.round(height * dpr);
116
- // Wrap the external framebuffer handle so luma.gl treats it as a proper Framebuffer resource.
117
- const externalFbo = device.getParametersWebGL(36006);
118
- let screenFbo = null;
119
- if (externalFbo) {
120
- if (resources._externalFramebuffer?.handle !== externalFbo) {
121
- resources._externalFramebuffer?.wrapper.destroy();
122
- const wrapper = device.createFramebuffer({
123
- handle: externalFbo,
124
- width: pixelWidth,
125
- height: pixelHeight
126
- });
127
- resources._externalFramebuffer = { handle: externalFbo, wrapper };
128
- }
129
- screenFbo = resources._externalFramebuffer.wrapper;
130
- }
131
127
  fbo.resize({ width: pixelWidth, height: pixelHeight });
132
- deck.setProps({ viewState });
128
+ // luma's Framebuffer.resize() clones and destroys the color attachment texture when
129
+ // dimensions change, leaving the cached texture reference and the model sampler binding
130
+ // pointing at a destroyed GPU handle. Re-sync if the attachment was replaced.
131
+ const currentTexture = fbo.colorAttachments[0].texture ?? fbo.colorAttachments[0];
132
+ if (currentTexture !== resources.texture) {
133
+ resources.texture = currentTexture;
134
+ model.setBindings({ deckglTexture: currentTexture });
135
+ }
136
+ // Pass CSS pixel dimensions — deck handles DPR internally. Passing physical
137
+ // pixels would double-apply DPR and project layer geometry off-screen.
138
+ // Without width/height, deck's viewport aspect diverges from ArcGIS's,
139
+ // causing the overlay to drift off the ground plane under tilt/rotation.
140
+ const deckProps = {
141
+ width,
142
+ height,
143
+ viewState: viewState || defaultViewState
144
+ };
145
+ if (views) {
146
+ deckProps.views = views;
147
+ }
148
+ deck.setProps(deckProps);
133
149
  // redraw deck immediately into deckFbo
134
150
  deck.redraw('arcgis');
135
151
  // We overlay the texture on top of the map using the full-screen quad.
152
+ const { gl } = device;
153
+ // drawBuffers is per-FBO state not tracked by luma's state cache;
154
+ // restore it for the screen FBO after rendering to the offscreen FBO.
155
+ if (rawScreenFbo) {
156
+ gl.bindFramebuffer(36160, rawScreenFbo);
157
+ gl.drawBuffers([36064]);
158
+ }
159
+ else {
160
+ gl.drawBuffers([1029]);
161
+ }
162
+ // The model sets blend factors but not blend:true, so
163
+ // setDeviceParameters won't enable blending on its own.
164
+ gl.enable(3042);
165
+ gl.blendFuncSeparate(1, 771, 1, 771);
166
+ gl.blendEquationSeparate(32774, 32774);
167
+ // luma's WEBGLRenderPass duck-types the framebuffer prop, reading `.handle`, `.width`,
168
+ // `.height`, and `.colorAttachments`. A raw WebGLFramebuffer has none of those, which
169
+ // breaks viewport auto-setup and draw-buffer selection. Build a minimal adapter that
170
+ // luma's state tracker accepts; `'handle' in obj` is true, so the raw FBO is bound.
171
+ const screenFboAdapter = {
172
+ handle: rawScreenFbo,
173
+ width: pixelWidth,
174
+ height: pixelHeight,
175
+ colorAttachments: [null]
176
+ };
136
177
  const textureToScreenPass = device.beginRenderPass({
137
- framebuffer: screenFbo,
178
+ framebuffer: screenFboAdapter,
138
179
  parameters: { viewport: [0, 0, pixelWidth, pixelHeight] },
139
180
  clearColor: false,
140
181
  clearDepth: false
@@ -152,6 +193,5 @@ export function finalizeResources(resources) {
152
193
  resources.model.destroy();
153
194
  resources.fbo.destroy();
154
195
  resources.texture.destroy();
155
- resources._externalFramebuffer?.wrapper.destroy();
156
196
  }
157
197
  //# sourceMappingURL=commons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commons.js","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commons.js","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  import { RenderResources } from "./commons.js";
2
2
  import SceneView from '@arcgis/core/views/SceneView';
3
3
  import type { DeckProps } from '@deck.gl/core';
4
- export default function createDeckRenderer(DeckProps: any, externalRenderers: any): {
5
- new (view: SceneView, props: DeckProps): {
4
+ export default function createDeckRenderer(DeckProps: any, RenderNode: any): {
5
+ new (viewOrProps: SceneView | ({
6
+ view: SceneView;
7
+ } & DeckProps), props?: DeckProps): {
6
8
  view: SceneView;
7
9
  deck: any;
8
10
  resources: RenderResources | null;
9
11
  cancelInitialization: (() => void) | null;
10
- setup(context: any): Promise<void>;
12
+ renderNode: any;
13
+ setup(_context?: unknown): Promise<void>;
11
14
  dispose(): void;
12
15
  redraw(): void;
13
16
  render(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"deck-renderer.d.ts","sourceRoot":"","sources":["../src/deck-renderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiD,eAAe,EAAC,qBAAkB;AAE1F,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAU7C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,SAAS,KAAA,EAAE,iBAAiB,KAAA;eAOjD,SAAS,SAAS,SAAS;cALvC,SAAS;cACT,GAAG;mBACE,eAAe,GAAG,IAAI;8BACX,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;;;;;;EAqD5C"}
1
+ {"version":3,"file":"deck-renderer.d.ts","sourceRoot":"","sources":["../src/deck-renderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiD,eAAe,EAAC,qBAAkB;AAE1F,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAyF7C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,SAAS,KAAA,EAAE,UAAU,KAAA;sBAQnC,SAAS,GAAG,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAC,GAAG,SAAS,CAAC,UAAU,SAAS;cANjF,SAAS;cACT,GAAG;mBACE,eAAe,GAAG,IAAI;8BACX,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;oBAC7B,GAAG;yBAiJQ,OAAO;;;;;EAqBjC"}
@@ -3,56 +3,207 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  /* eslint-disable no-invalid-this */
5
5
  import { initializeResources, render, finalizeResources } from "./commons.js";
6
- /** Convert ArcGIS FOV to WebMercatorViewport altitude */
7
- function arcgisFOVToDeckAltitude(fov, aspectRatio) {
8
- // ArcGIS fov is corner-to-corner
9
- const D = Math.sqrt(1 + aspectRatio ** 2);
10
- const halfFOV = (fov / 2 / 180) * Math.PI;
11
- return D / 2 / Math.tan(halfFOV);
6
+ import MapView from "../../core/src/views/map-view.js";
7
+ // Web Mercator scale at zoom 0 for 256 px tiles; deck.gl uses 512 px tiles,
8
+ // so the final zoom is shifted by -1.
9
+ const ARCGIS_WEB_MERCATOR_SCALE_AT_ZOOM_0 = 591657550.5;
10
+ const DECK_GROUND_MPP_AT_ZOOM_0 = 78271.484;
11
+ const METERS_PER_DEG_LAT = 111320;
12
+ const ARCGIS_DIAGONAL_FOV_RADIANS = (55 * Math.PI) / 180;
13
+ const ALTITUDE_BLEND_START_TILT = 65;
14
+ const ALTITUDE_BLEND_END_TILT = 80;
15
+ function getDistanceMeters(a, b) {
16
+ const midLatRad = (((a.latitude + b.latitude) / 2) * Math.PI) / 180;
17
+ const dLatM = (a.latitude - b.latitude) * METERS_PER_DEG_LAT;
18
+ const dLngM = (a.longitude - b.longitude) * METERS_PER_DEG_LAT * Math.cos(midLatRad);
19
+ return Math.sqrt(dLatM * dLatM + dLngM * dLngM);
12
20
  }
13
- export default function createDeckRenderer(DeckProps, externalRenderers) {
21
+ function getZoom(view, longitude, latitude, width, height) {
22
+ const focalPoint = view.toMap({ x: width / 2, y: height / 2 });
23
+ const focalPointRight = view.toMap({ x: width / 2 + 1, y: height / 2 });
24
+ if (focalPoint && focalPointRight) {
25
+ const horizontalMetersPerPixel = getDistanceMeters(focalPoint, focalPointRight);
26
+ if (horizontalMetersPerPixel > 0) {
27
+ const latitudeRad = (latitude * Math.PI) / 180;
28
+ return Math.log2((DECK_GROUND_MPP_AT_ZOOM_0 * Math.cos(latitudeRad)) / horizontalMetersPerPixel);
29
+ }
30
+ }
31
+ return Math.log2(ARCGIS_WEB_MERCATOR_SCALE_AT_ZOOM_0 / view.scale) - 1;
32
+ }
33
+ function smoothstep(edge0, edge1, value) {
34
+ const t = Math.max(0, Math.min(1, (value - edge0) / (edge1 - edge0)));
35
+ return t * t * (3 - 2 * t);
36
+ }
37
+ function getFovMatchedAltitude(width, height) {
38
+ const aspect = width / height;
39
+ const verticalTan = Math.tan(ARCGIS_DIAGONAL_FOV_RADIANS / 2) / Math.sqrt(1 + aspect * aspect);
40
+ return 0.5 / verticalTan;
41
+ }
42
+ function getAltitude(tilt, slantAltitude, width, height) {
43
+ const fovAltitude = getFovMatchedAltitude(width, height);
44
+ const blend = smoothstep(ALTITUDE_BLEND_START_TILT, ALTITUDE_BLEND_END_TILT, tilt);
45
+ return slantAltitude * (1 - blend) + fovAltitude * blend;
46
+ }
47
+ function getArcGISMatrixViewState(view, longitude, latitude, zoom, resolution, altitude) {
48
+ return {
49
+ views: new MapView({ id: 'arcgis-scene' }),
50
+ viewState: {
51
+ 'arcgis-scene': {
52
+ id: 'arcgis-scene',
53
+ longitude,
54
+ latitude,
55
+ zoom,
56
+ pitch: view.camera.tilt,
57
+ bearing: view.camera.heading,
58
+ altitude,
59
+ position: [0, 0, 0],
60
+ resolution
61
+ }
62
+ }
63
+ };
64
+ }
65
+ export default function createDeckRenderer(DeckProps, RenderNode) {
14
66
  class DeckRenderer {
15
- constructor(view, props) {
67
+ constructor(viewOrProps, props) {
16
68
  this.resources = null;
17
69
  this.cancelInitialization = null;
18
- this.view = view;
19
- this.deck = new DeckProps(props);
20
- }
21
- async setup(context) {
22
- const gl = context.gl;
23
- let cancelled = false;
24
- this.cancelInitialization = () => (cancelled = true);
25
- const resources = await initializeResources.call(this, gl);
26
- // If the renderer got disposed while awaiting, do not proceed
27
- if (cancelled) {
28
- finalizeResources(resources);
29
- return;
70
+ this.renderNode = null;
71
+ if (viewOrProps && typeof viewOrProps === 'object' && 'view' in viewOrProps) {
72
+ const { view, ...deckProps } = viewOrProps;
73
+ this.view = view;
74
+ this.deck = new DeckProps(deckProps);
30
75
  }
31
- this.deck.on('change', props => resources.deck.setProps(props));
32
- resources.deck.setProps(this.deck.toJSON());
33
- this.resources = resources;
76
+ else {
77
+ this.view = viewOrProps;
78
+ this.deck = new DeckProps(props);
79
+ }
80
+ let isInitializing = false;
81
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
82
+ const self = this;
83
+ const DeckRenderNode = RenderNode.createSubclass({
84
+ consumes: { required: ['composite-color'] },
85
+ produces: 'composite-color',
86
+ initialize() { },
87
+ render(inputs) {
88
+ // biome-ignore lint/complexity/noThisInStatic: RenderNode render is an instance method
89
+ // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
90
+ const renderNode = this;
91
+ const passthrough = inputs.find(i => i.name === 'composite-color');
92
+ if (!self.resources && !isInitializing) {
93
+ const gl = renderNode.gl;
94
+ if (gl) {
95
+ isInitializing = true;
96
+ let cancelled = false;
97
+ self.cancelInitialization = () => {
98
+ cancelled = true;
99
+ };
100
+ initializeResources
101
+ .call(self, gl)
102
+ .then(resources => {
103
+ isInitializing = false;
104
+ if (cancelled) {
105
+ finalizeResources(resources);
106
+ return;
107
+ }
108
+ self.deck.on('change', deckProps => resources.deck.setProps(deckProps));
109
+ resources.deck.setProps(self.deck.toJSON());
110
+ self.resources = resources;
111
+ renderNode.requestRender();
112
+ })
113
+ .catch(err => {
114
+ isInitializing = false;
115
+ // eslint-disable-next-line no-console
116
+ console.error('DeckRenderer: failed to initialize resources', err);
117
+ });
118
+ }
119
+ return passthrough;
120
+ }
121
+ if (!self.resources) {
122
+ return passthrough;
123
+ }
124
+ const output = renderNode.bindRenderTarget();
125
+ const gl = renderNode.gl;
126
+ const dpr = window.devicePixelRatio || 1;
127
+ const width = gl.drawingBufferWidth / dpr;
128
+ const height = gl.drawingBufferHeight / dpr;
129
+ // Keep deck.gl's SceneView approximation anchored at the ArcGIS
130
+ // focal point every frame. Zoom comes from the actual horizontal
131
+ // ground meters-per-pixel at screen center (`toMap(center)` and
132
+ // `toMap(center + 1px)`), which stays stable under tilt in local
133
+ // SceneView. We keep the older `view.scale` formula only as a
134
+ // fallback when focal-point sampling is unavailable.
135
+ //
136
+ // deck.gl's `altitude` still couples camera distance and FOV, while
137
+ // ArcGIS keeps them separate. We therefore compute a slant-distance
138
+ // altitude from the live camera position and focal point, then only
139
+ // at high tilt blend toward the ArcGIS fixed-FOV altitude. That
140
+ // preserves the better mid-tilt camera match while reducing the
141
+ // remaining extreme-angle drift.
142
+ const cameraPos = self.view.camera.position;
143
+ const focalPoint = self.view.toMap({ x: width / 2, y: height / 2 });
144
+ const latitude = focalPoint ? focalPoint.latitude : self.view.center.latitude;
145
+ const longitude = focalPoint ? focalPoint.longitude : self.view.center.longitude;
146
+ const midLatRad = (((latitude + cameraPos.latitude) / 2) * Math.PI) / 180;
147
+ const dLatM = (cameraPos.latitude - latitude) * METERS_PER_DEG_LAT;
148
+ const dLngM = (cameraPos.longitude - longitude) * METERS_PER_DEG_LAT * Math.cos(midLatRad);
149
+ const horizM = Math.sqrt(dLatM * dLatM + dLngM * dLngM);
150
+ const slantM = Math.sqrt(horizM * horizM + cameraPos.z * cameraPos.z);
151
+ const zoom = getZoom(self.view, longitude, latitude, width, height);
152
+ const viewportHeightM = height * self.view.resolution;
153
+ const slantAltitude = slantM / viewportHeightM;
154
+ const altitude = getAltitude(self.view.camera.tilt, slantAltitude, width, height);
155
+ const arcgisMatrixView = getArcGISMatrixViewState(self.view, longitude, latitude, zoom, self.view.resolution, altitude);
156
+ try {
157
+ if (arcgisMatrixView) {
158
+ render(self.resources, {
159
+ width,
160
+ height,
161
+ latitude,
162
+ longitude,
163
+ altitude,
164
+ zoom,
165
+ bearing: self.view.camera.heading,
166
+ pitch: self.view.camera.tilt,
167
+ ...arcgisMatrixView
168
+ });
169
+ }
170
+ else {
171
+ render(self.resources, {
172
+ width,
173
+ height,
174
+ latitude,
175
+ longitude,
176
+ altitude,
177
+ zoom,
178
+ bearing: self.view.camera.heading,
179
+ pitch: self.view.camera.tilt
180
+ });
181
+ }
182
+ }
183
+ catch (e) {
184
+ // eslint-disable-next-line no-console
185
+ console.error('DeckRenderer: render error', e);
186
+ }
187
+ return output;
188
+ }
189
+ });
190
+ this.renderNode = new DeckRenderNode({ view: this.view });
34
191
  }
192
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
193
+ async setup(_context) { }
35
194
  dispose() {
36
195
  this.cancelInitialization?.();
37
196
  if (this.resources) {
38
197
  finalizeResources(this.resources);
198
+ this.resources = null;
39
199
  }
200
+ this.renderNode = null;
40
201
  }
41
202
  redraw() {
42
- externalRenderers.requestRender(this.view);
203
+ this.renderNode?.requestRender();
43
204
  }
44
205
  render() {
45
- const [width, height] = this.view.size;
46
- render(this.resources, {
47
- width,
48
- height,
49
- latitude: this.view.center.latitude,
50
- longitude: this.view.center.longitude,
51
- altitude: arcgisFOVToDeckAltitude(this.view.camera.fov, width / height),
52
- zoom: this.view.zoom,
53
- bearing: this.view.camera.heading,
54
- pitch: this.view.camera.tilt
55
- });
206
+ this.renderNode?.requestRender();
56
207
  }
57
208
  }
58
209
  return DeckRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"deck-renderer.js","sourceRoot":"","sources":["../src/deck-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deck-renderer.js","sourceRoot":"","sources":["../src/deck-renderer.ts"],"names":[],"mappings":"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"}