@treasuryspatial/map-kit 0.1.4 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"mapThreeLayer.d.ts","sourceRoot":"","sources":["../src/mapThreeLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAyMhF"}
1
+ {"version":3,"file":"mapThreeLayer.d.ts","sourceRoot":"","sources":["../src/mapThreeLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuPhF"}
@@ -20,6 +20,7 @@ export function createMapThreeLayer(options) {
20
20
  let targetHeight = 0;
21
21
  let renderDisabled = false;
22
22
  let errorCount = 0;
23
+ let hasRenderable = false;
23
24
  const log = (...args) => {
24
25
  if (!debug)
25
26
  return;
@@ -44,6 +45,28 @@ export function createMapThreeLayer(options) {
44
45
  log(`Framebuffer incomplete (${label})`, status);
45
46
  }
46
47
  };
48
+ const updateRenderable = (group) => {
49
+ if (!group) {
50
+ hasRenderable = false;
51
+ return;
52
+ }
53
+ let found = false;
54
+ group.traverse((child) => {
55
+ if (found)
56
+ return;
57
+ const mesh = child;
58
+ if (!mesh.isMesh)
59
+ return;
60
+ if (mesh.visible === false)
61
+ return;
62
+ const geometry = mesh.geometry;
63
+ const position = geometry?.getAttribute?.('position');
64
+ if (position && position.count > 0) {
65
+ found = true;
66
+ }
67
+ });
68
+ hasRenderable = found;
69
+ };
47
70
  const layer = {
48
71
  id,
49
72
  type: 'custom',
@@ -57,6 +80,8 @@ export function createMapThreeLayer(options) {
57
80
  context: gl,
58
81
  antialias: true,
59
82
  logarithmicDepthBuffer: true,
83
+ alpha: true,
84
+ premultipliedAlpha: true,
60
85
  });
61
86
  renderer.autoClear = false;
62
87
  renderer.outputColorSpace = THREE.SRGBColorSpace;
@@ -97,6 +122,8 @@ export function createMapThreeLayer(options) {
97
122
  return;
98
123
  if (!renderer || !scene || !camera || !rootGroup || !renderTarget)
99
124
  return;
125
+ if (!hasRenderable)
126
+ return;
100
127
  try {
101
128
  camera.projectionMatrix = new THREE.Matrix4().fromArray(matrix);
102
129
  if (mercatorOrigin) {
@@ -113,8 +140,16 @@ export function createMapThreeLayer(options) {
113
140
  log('renderTarget resized', { width: targetWidth, height: targetHeight });
114
141
  }
115
142
  renderer.setRenderTarget(renderTarget);
116
- renderer.clear(true, true, true);
143
+ renderer.resetState();
117
144
  const gl = renderer.getContext();
145
+ gl.disable(gl.SCISSOR_TEST);
146
+ gl.disable(gl.STENCIL_TEST);
147
+ gl.colorMask(true, true, true, true);
148
+ gl.depthMask(true);
149
+ renderer.setViewport(0, 0, targetWidth, targetHeight);
150
+ renderer.setClearColor(0x000000, 0);
151
+ renderer.setClearAlpha(0);
152
+ renderer.clear(true, true, true);
118
153
  checkFramebuffer(gl, 'prerender');
119
154
  renderer.render(scene, camera);
120
155
  logGlError(gl, 'prerender');
@@ -134,13 +169,24 @@ export function createMapThreeLayer(options) {
134
169
  return;
135
170
  if (!renderer || !screenScene || !screenCamera)
136
171
  return;
172
+ if (!hasRenderable)
173
+ return;
137
174
  try {
138
175
  renderer.resetState();
139
176
  gl.disable(gl.DEPTH_TEST);
177
+ gl.depthMask(false);
178
+ gl.disable(gl.STENCIL_TEST);
179
+ gl.disable(gl.SCISSOR_TEST);
180
+ gl.colorMask(true, true, true, true);
140
181
  gl.enable(gl.BLEND);
141
- gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
182
+ gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
183
+ const canvas = mapRef?.getCanvas();
184
+ if (canvas) {
185
+ renderer.setViewport(0, 0, canvas.width, canvas.height);
186
+ }
142
187
  renderer.render(screenScene, screenCamera);
143
188
  logGlError(gl, 'render');
189
+ renderer.resetState();
144
190
  mapRef?.triggerRepaint();
145
191
  }
146
192
  catch (err) {
@@ -157,6 +203,10 @@ export function createMapThreeLayer(options) {
157
203
  layer,
158
204
  setGroup: (group) => {
159
205
  meshGroup = group;
206
+ updateRenderable(group);
207
+ if (debug) {
208
+ log('group set', { hasRenderable });
209
+ }
160
210
  if (rootGroup) {
161
211
  rootGroup.clear();
162
212
  if (meshGroup)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treasuryspatial/map-kit",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "main": "./dist/index.js",