diff --git a/packages/frontend/src/utility/room/controller.ts b/packages/frontend/src/utility/room/controller.ts index 9e7a74b6ce..c052d9abbd 100644 --- a/packages/frontend/src/utility/room/controller.ts +++ b/packages/frontend/src/utility/room/controller.ts @@ -44,7 +44,7 @@ export class RoomController { this.worker.postMessage({ type: 'init', canvas: offscreen, roomState: this.roomState.value }, [offscreen]); this.isReady.value = true; } else { - const babylonEngine = new BABYLON.WebGPUEngine(canvas); + const babylonEngine = new BABYLON.WebGPUEngine(canvas, { doNotHandleContextLost: true }); babylonEngine.compatibilityMode = false; await babylonEngine.initAsync(); this.engine = new RoomEngine(this.roomState.value, { canvas, engine: babylonEngine }); diff --git a/packages/frontend/src/utility/room/engine.ts b/packages/frontend/src/utility/room/engine.ts index a8f215dc2f..e2f82d5c3b 100644 --- a/packages/frontend/src/utility/room/engine.ts +++ b/packages/frontend/src/utility/room/engine.ts @@ -311,6 +311,7 @@ class ModelManager { } merged.freezeWorldMatrix(); merged.metadata = { ...this.root.metadata }; + if (!this.hasTexture) merged.convertToUnIndexedMesh(); this.bakedMeshes = [merged]; this.bakedCallback?.([...this.bakedMeshes, ...excludeMeshes]); @@ -757,6 +758,8 @@ export class RoomEngine extends EventEmitter { this.emit('loadingProgress', { progress: loadedCount / objects.length }); }))); + this.scene.blockMaterialDirtyMechanism = true; + if (SNAPSHOT_RENDERING) { this.sr.enableSnapshotRendering(); }