From 58e617af6dec24425bc3f26aead492a25b946bd0 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 28 Apr 2026 12:20:14 +0900 Subject: [PATCH] wip --- .../frontend/src/world/room/controller.ts | 5 ++- packages/frontend/src/world/room/engine.ts | 36 +++++++++---------- packages/frontend/src/world/room/worker.ts | 5 ++- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/packages/frontend/src/world/room/controller.ts b/packages/frontend/src/world/room/controller.ts index 2893348b9e..6b73f5a24c 100644 --- a/packages/frontend/src/world/room/controller.ts +++ b/packages/frontend/src/world/room/controller.ts @@ -7,7 +7,7 @@ import { reactive, ref, shallowRef, triggerRef, watch } from 'vue'; import * as BABYLON from '@babylonjs/core'; import { cm } from '../utility.js'; import RoomWorker from './worker?worker'; -import { RoomEngine } from './engine.js'; +import { GRAPHICS_QUALITY_MEDIUM, RoomEngine } from './engine.js'; import type { ShallowRef } from 'vue'; import type { RoomState } from './engine.js'; import type { ObjectDef, RoomStateObject } from './object.js'; @@ -82,7 +82,7 @@ export class RoomController { } }; } else { - const babylonEngine = new BABYLON.WebGPUEngine(canvas, { doNotHandleContextLost: true, powerPreference: 'high-performance' }); + const babylonEngine = new BABYLON.WebGPUEngine(canvas, { doNotHandleContextLost: true, powerPreference: 'high-performance', antialias: this.options.graphicsQuality >= GRAPHICS_QUALITY_MEDIUM }); babylonEngine.compatibilityMode = false; babylonEngine.enableOfflineSupport = false; babylonEngine.onContextLostObservable.add(() => { @@ -99,7 +99,6 @@ export class RoomController { this.engine = new RoomEngine(this.roomState.value, { canvas, engine: babylonEngine, - sharpen: this.options.resolution >= 1, ...this.options, }); diff --git a/packages/frontend/src/world/room/engine.ts b/packages/frontend/src/world/room/engine.ts index 5c1081e75a..13efd6ebc9 100644 --- a/packages/frontend/src/world/room/engine.ts +++ b/packages/frontend/src/world/room/engine.ts @@ -226,7 +226,6 @@ export class RoomEngine extends EventEmitter { engine: BABYLON.WebGPUEngine; graphicsQuality: number; fps: number | null; - sharpen: boolean; useVirtualJoystick?: boolean; }) { super(); @@ -429,30 +428,27 @@ export class RoomEngine extends EventEmitter { } } - if (options.graphicsQuality >= GRAPHICS_QUALITY_MEDIUM) { + if (options.graphicsQuality >= GRAPHICS_QUALITY_HIGH) { const pipeline = new BABYLON.DefaultRenderingPipeline('default', true, this.scene); + pipeline.samples = 4; - if (options.graphicsQuality >= GRAPHICS_QUALITY_HIGH) { - // snapshot renderingと相性が悪そう - //pipeline.depthOfFieldEnabled = true; - //pipeline.depthOfField.focusDistance = 1500; - //pipeline.depthOfField.focalLength = 20; - //pipeline.depthOfField.fStop = 1.4; + // snapshot renderingと相性が悪そう + //pipeline.depthOfFieldEnabled = true; + //pipeline.depthOfField.focusDistance = 1500; + //pipeline.depthOfField.focalLength = 20; + //pipeline.depthOfField.fStop = 1.4; - pipeline.bloomEnabled = true; - pipeline.bloomThreshold = 0.95; - pipeline.bloomWeight = 0.3; - pipeline.bloomKernel = 256; - pipeline.bloomScale = 2; + pipeline.bloomEnabled = true; + pipeline.bloomThreshold = 0.95; + pipeline.bloomWeight = 0.3; + pipeline.bloomKernel = 256; + pipeline.bloomScale = 2; - //pipeline.chromaticAberrationEnabled = true; - //pipeline.chromaticAberration.radialIntensity = 2; - } + //pipeline.chromaticAberrationEnabled = true; + //pipeline.chromaticAberration.radialIntensity = 2; - if (options.sharpen) { - pipeline.sharpenEnabled = true; - pipeline.sharpen.edgeAmount = 0.5; - } + 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 957cd1e40c..8322d08473 100644 --- a/packages/frontend/src/world/room/worker.ts +++ b/packages/frontend/src/world/room/worker.ts @@ -4,7 +4,7 @@ */ import * as BABYLON from '@babylonjs/core'; -import { RoomEngine } from './engine.js'; +import { GRAPHICS_QUALITY_MEDIUM, RoomEngine } from './engine.js'; import type { RoomState } from './engine.js'; let engine: RoomEngine | null = null; @@ -17,7 +17,7 @@ onmessage = async (event) => { case 'init': { const roomState = event.data.roomState as RoomState; canvas = event.data.canvas as HTMLCanvasElement; - const babylonEngine = new BABYLON.WebGPUEngine(canvas, { doNotHandleContextLost: true, powerPreference: 'high-performance' }); + const babylonEngine = new BABYLON.WebGPUEngine(canvas, { doNotHandleContextLost: true, powerPreference: 'high-performance', antialias: event.data.options.graphicsQuality >= GRAPHICS_QUALITY_MEDIUM }); babylonEngine.compatibilityMode = false; babylonEngine.enableOfflineSupport = false; await babylonEngine.initAsync(); @@ -27,7 +27,6 @@ onmessage = async (event) => { engine = new RoomEngine(roomState, { canvas, engine: babylonEngine, - sharpen: event.data.options.resolution >= 1, ...event.data.options, });