diff --git a/packages/frontend/src/world/room/controller.ts b/packages/frontend/src/world/room/controller.ts index 3f7e4fb992..a4ef5df6ee 100644 --- a/packages/frontend/src/world/room/controller.ts +++ b/packages/frontend/src/world/room/controller.ts @@ -19,7 +19,7 @@ export type RoomControllerOptions = { workerMode?: boolean; graphicsQuality: number; fps: number | null; - resolution: number | null; + resolution: number; useVirtualJoystick?: boolean; }; @@ -96,11 +96,19 @@ export class RoomController { if (this.options.resolution === 2) babylonEngine.setHardwareScalingLevel(0.5); if (this.options.resolution === 0.5) babylonEngine.setHardwareScalingLevel(2); - this.engine = new RoomEngine(this.roomState.value, { canvas, engine: babylonEngine, ...this.options }); + this.engine = new RoomEngine(this.roomState.value, { + canvas, + engine: babylonEngine, + sharpen: this.options.resolution >= 1, + ...this.options, + }); + this.engine.on('loadingProgress', ({ progress }) => { this.initializeProgress.value = progress; }); + await this.engine.init(); + this.initializeProgress.value = 1; this.isReady.value = true; diff --git a/packages/frontend/src/world/room/engine.ts b/packages/frontend/src/world/room/engine.ts index 5f41d2cfae..8dca72ea18 100644 --- a/packages/frontend/src/world/room/engine.ts +++ b/packages/frontend/src/world/room/engine.ts @@ -225,6 +225,7 @@ export class RoomEngine extends EventEmitter { engine: BABYLON.WebGPUEngine; graphicsQuality: number; fps: number | null; + sharpen: boolean; useVirtualJoystick?: boolean; }) { super(); @@ -455,8 +456,10 @@ export class RoomEngine extends EventEmitter { //pipeline.chromaticAberration.radialIntensity = 2; } - pipeline.sharpenEnabled = true; - pipeline.sharpen.edgeAmount = 0.5; + if (options.sharpen) { + pipeline.sharpenEnabled = true; + pipeline.sharpen.edgeAmount = 0.5; + } } if (_DEV_) { diff --git a/packages/frontend/src/world/room/worker.ts b/packages/frontend/src/world/room/worker.ts index 8ef20a87c3..ad6837787e 100644 --- a/packages/frontend/src/world/room/worker.ts +++ b/packages/frontend/src/world/room/worker.ts @@ -24,11 +24,19 @@ onmessage = async (event) => { if (event.data.options.resolution === 2) babylonEngine.setHardwareScalingLevel(0.5); if (event.data.options.resolution === 0.5) babylonEngine.setHardwareScalingLevel(2); - engine = new RoomEngine(roomState, { canvas, engine: babylonEngine, ...event.data.options }); + engine = new RoomEngine(roomState, { + canvas, + engine: babylonEngine, + sharpen: event.data.options.resolution >= 1, + ...event.data.options, + }); + engine.on('loadingProgress', ({ progress }) => { self.postMessage({ type: 'progress', progress }); }); + await engine.init(); + self.postMessage({ type: 'inited' }); break; }