Skip to content

Commit b4289a2

Browse files
committed
Fix #1394 Closes #1395 performance issues during transitions
- Remove call to Renderer#clearDepth
1 parent 9484377 commit b4289a2

File tree

5 files changed

+41
-17
lines changed

5 files changed

+41
-17
lines changed

packages/core/src/adapters/EquirectangularAdapter.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -367,11 +367,20 @@ export class EquirectangularAdapter extends AbstractAdapter<string, Texture, Pan
367367
-Math.PI / 2
368368
).scale(-1, 1, 1);
369369

370-
return new Mesh(geometry, new MeshBasicMaterial());
370+
return new Mesh(geometry);
371371
}
372372

373-
setTexture(mesh: EquirectangularMesh, textureData: EquirectangularTexture) {
374-
(mesh.material as MeshBasicMaterial).map = textureData.texture;
373+
setTexture(mesh: EquirectangularMesh, textureData: EquirectangularTexture, transition?: boolean) {
374+
const material = new MeshBasicMaterial();
375+
376+
material.map = textureData.texture;
377+
378+
if (transition) {
379+
material.depthTest = false;
380+
material.depthWrite = false;
381+
}
382+
383+
mesh.material = material;
375384
}
376385

377386
setTextureOpacity(mesh: EquirectangularMesh, opacity: number) {

packages/core/src/services/Renderer.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,6 @@ export class Renderer extends AbstractService {
300300

301301
const group = new Group();
302302
const mesh = this.viewer.adapter.createMesh();
303-
mesh.onBeforeRender = function (renderer) {
304-
// must be drawn on top
305-
renderer.clearDepth();
306-
};
307303
this.viewer.adapter.setTexture(mesh, textureData, true);
308304
this.viewer.adapter.setTextureOpacity(mesh, 0);
309305
this.setPanoramaPose(textureData.panoData, mesh);

packages/cubemap-adapter/src/CubemapAdapter.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,10 +359,10 @@ export class CubemapAdapter extends AbstractAdapter<CubemapPanorama, Texture[],
359359
materials.push(new MeshBasicMaterial());
360360
}
361361

362-
return new Mesh(geometry, materials);
362+
return new Mesh(geometry, []);
363363
}
364364

365-
setTexture(mesh: CubemapMesh, textureData: CubemapTexture) {
365+
setTexture(mesh: CubemapMesh, textureData: CubemapTexture, transition?: boolean) {
366366
const { texture, panoData } = textureData;
367367

368368
for (let i = 0; i < 6; i++) {
@@ -371,7 +371,16 @@ export class CubemapAdapter extends AbstractAdapter<CubemapPanorama, Texture[],
371371
texture[i].rotation = Math.PI;
372372
}
373373

374-
mesh.material[i].map = texture[i];
374+
const material = new MeshBasicMaterial();
375+
376+
material.map = texture[i];
377+
378+
if (transition) {
379+
material.depthTest = false;
380+
material.depthWrite = false;
381+
}
382+
383+
mesh.material.push(material);
375384
}
376385
}
377386

packages/cubemap-tiles-adapter/src/CubemapTilesAdapter.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,12 @@ export class CubemapTilesAdapter extends AbstractAdapter<
193193
setTexture(mesh: CubemapMesh, textureData: CubemapTexture, transition: boolean) {
194194
if (transition) {
195195
this.state.inTransition = true;
196-
this.__setTexture(mesh, textureData);
196+
this.__setTexture(mesh, textureData, true);
197197
return;
198198
}
199199

200200
this.__cleanup();
201-
this.__setTexture(mesh, textureData);
201+
this.__setTexture(mesh, textureData, false);
202202

203203
this.state.materials = mesh.material;
204204
this.state.geom = mesh.geometry;
@@ -213,7 +213,7 @@ export class CubemapTilesAdapter extends AbstractAdapter<
213213
setTimeout(() => this.__refresh());
214214
}
215215

216-
private __setTexture(mesh: CubemapMesh, { texture, panoData }: CubemapTexture) {
216+
private __setTexture(mesh: CubemapMesh, { texture, panoData }: CubemapTexture, transition: boolean) {
217217
for (let i = 0; i < 6; i++) {
218218
let material;
219219
if (texture) {
@@ -227,6 +227,11 @@ export class CubemapTilesAdapter extends AbstractAdapter<
227227
material = new MeshBasicMaterial({ opacity: 0, transparent: true });
228228
}
229229

230+
if (transition) {
231+
material.depthTest = false;
232+
material.depthWrite = false;
233+
}
234+
230235
for (let j = 0; j < NB_GROUPS_BY_FACE; j++) {
231236
mesh.material.push(material);
232237
}

packages/equirectangular-tiles-adapter/src/EquirectangularTilesAdapter.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,17 +270,17 @@ export class EquirectangularTilesAdapter extends AbstractAdapter<
270270
/**
271271
* Applies the base texture and starts the loading of tiles
272272
*/
273-
setTexture(mesh: EquirectangularMesh, textureData: EquirectangularTexture, transition: boolean) {
273+
setTexture(mesh: EquirectangularMesh, textureData: EquirectangularTexture, transition?: boolean) {
274274
const { texture } = textureData;
275275

276276
if (transition) {
277277
this.state.inTransition = true;
278-
this.__setTexture(mesh, texture);
278+
this.__setTexture(mesh, texture, true);
279279
return;
280280
}
281281

282282
this.__cleanup();
283-
this.__setTexture(mesh, texture);
283+
this.__setTexture(mesh, texture, false);
284284

285285
this.state.materials = mesh.material;
286286
this.state.geom = mesh.geometry;
@@ -295,14 +295,19 @@ export class EquirectangularTilesAdapter extends AbstractAdapter<
295295
setTimeout(() => this.__refresh());
296296
}
297297

298-
private __setTexture(mesh: EquirectangularMesh, texture: Texture) {
298+
private __setTexture(mesh: EquirectangularMesh, texture: Texture, transition: boolean) {
299299
let material;
300300
if (texture) {
301301
material = new MeshBasicMaterial({ map: texture });
302302
} else {
303303
material = new MeshBasicMaterial({ color: this.config.backgroundColor });
304304
}
305305

306+
if (transition) {
307+
material.depthTest = false;
308+
material.depthWrite = false;
309+
}
310+
306311
for (let i = 0; i < this.NB_GROUPS; i++) {
307312
mesh.material.push(material);
308313
}

0 commit comments

Comments
 (0)