From f55adc19d38c47cf39dfdb1d12b7a667321261be Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 3 Jun 2026 08:42:07 +0900 Subject: [PATCH] registerBabylonRuntime --- .../src/avatarPreviewEngineNonWorker.ts | 6 ++---- .../src/avatarPreviewEngineWorker.ts | 8 +++----- .../src/babylonRuntime.ts | 20 +++++++++++++++++++ .../src/room/nonWorker.ts | 6 ++---- .../src/room/previewEngineNonWorker.ts | 6 ++---- .../src/room/previewEngineWorker.ts | 8 +++----- .../src/room/worker.ts | 8 +++----- 7 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 packages/frontend-misskey-world-engine/src/babylonRuntime.ts diff --git a/packages/frontend-misskey-world-engine/src/avatarPreviewEngineNonWorker.ts b/packages/frontend-misskey-world-engine/src/avatarPreviewEngineNonWorker.ts index 68f206edd9..f862ba860e 100644 --- a/packages/frontend-misskey-world-engine/src/avatarPreviewEngineNonWorker.ts +++ b/packages/frontend-misskey-world-engine/src/avatarPreviewEngineNonWorker.ts @@ -4,13 +4,11 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; import { AvatarPreviewEngine } from './avatarPreviewEngine.js'; +import { registerBabylonRuntime } from './babylonRuntime.js'; import type { PlayerProfile } from './PlayerContainer.js'; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); +registerBabylonRuntime(); export async function createAvatarPreviewEngine(params: { canvas: HTMLCanvasElement; options: { graphicsQuality: number; resolution: number; fps: number | null }; profile: PlayerProfile; diff --git a/packages/frontend-misskey-world-engine/src/avatarPreviewEngineWorker.ts b/packages/frontend-misskey-world-engine/src/avatarPreviewEngineWorker.ts index 3be60378c2..22c516192a 100644 --- a/packages/frontend-misskey-world-engine/src/avatarPreviewEngineWorker.ts +++ b/packages/frontend-misskey-world-engine/src/avatarPreviewEngineWorker.ts @@ -4,17 +4,15 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; import { AvatarPreviewEngine } from './avatarPreviewEngine.js'; +import { registerBabylonRuntime } from './babylonRuntime.js'; import type { PlayerProfile } from './PlayerContainer.js'; +registerBabylonRuntime(); + let engine: AvatarPreviewEngine | null = null; let canvas: OffscreenCanvas | null = null; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); - // TODO: 他のWorkerと実装を共通化 onmessage = async (event) => { //console.log('Worker received message:', event.data); diff --git a/packages/frontend-misskey-world-engine/src/babylonRuntime.ts b/packages/frontend-misskey-world-engine/src/babylonRuntime.ts new file mode 100644 index 0000000000..5c8f1460f4 --- /dev/null +++ b/packages/frontend-misskey-world-engine/src/babylonRuntime.ts @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import * as BABYLON from '@babylonjs/core/pure'; +//import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; + +export function registerBabylonRuntime(): void { + BABYLON.RegisterCoreEngineExtensions(); + BABYLON.RegisterFullWebGPUEngineExtensions(); + //BABYLON.RegisterEnginesWebGPUExtensionsEngineRawTexture(); + BABYLON.RegisterBufferAlign(); + BABYLON.RegisterCubeTexture(); + BABYLON.RegisterStandardMaterial(); + BABYLON.RegisterCollisionCoordinator(); + BABYLON.RegisterPostProcessRenderPipelineManagerSceneComponent( + BABYLON.PostProcessRenderPipelineManager, + ); +} diff --git a/packages/frontend-misskey-world-engine/src/room/nonWorker.ts b/packages/frontend-misskey-world-engine/src/room/nonWorker.ts index 3525f0c801..2fa733ad97 100644 --- a/packages/frontend-misskey-world-engine/src/room/nonWorker.ts +++ b/packages/frontend-misskey-world-engine/src/room/nonWorker.ts @@ -4,13 +4,11 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; +import { registerBabylonRuntime } from '../babylonRuntime.js'; import { RoomEngine } from './engine.js'; import type { RoomState, RoomAttachments } from 'misskey-world/src/room/type.js'; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); +registerBabylonRuntime(); export async function createRoomEngine(params: { roomState: RoomState; roomAttachments: RoomAttachments; canvas: HTMLCanvasElement; options: { antialias: boolean; resolution: number; fov: number; graphicsQuality: number; fps: number | null; useVirtualJoystick?: boolean; }; diff --git a/packages/frontend-misskey-world-engine/src/room/previewEngineNonWorker.ts b/packages/frontend-misskey-world-engine/src/room/previewEngineNonWorker.ts index 7ab0a2ce94..fdb949d3c3 100644 --- a/packages/frontend-misskey-world-engine/src/room/previewEngineNonWorker.ts +++ b/packages/frontend-misskey-world-engine/src/room/previewEngineNonWorker.ts @@ -4,12 +4,10 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; +import { registerBabylonRuntime } from '../babylonRuntime.js'; import { RoomFurniturePreviewEngine } from './previewEngine.js'; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); +registerBabylonRuntime(); export async function createRoomPreviewEngine(params: { canvas: HTMLCanvasElement; options: { graphicsQuality: number; resolution: number; fps: number | null }; diff --git a/packages/frontend-misskey-world-engine/src/room/previewEngineWorker.ts b/packages/frontend-misskey-world-engine/src/room/previewEngineWorker.ts index 6572ee5a91..e5443ea010 100644 --- a/packages/frontend-misskey-world-engine/src/room/previewEngineWorker.ts +++ b/packages/frontend-misskey-world-engine/src/room/previewEngineWorker.ts @@ -4,16 +4,14 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; +import { registerBabylonRuntime } from '../babylonRuntime.js'; import { RoomFurniturePreviewEngine } from './previewEngine.js'; +registerBabylonRuntime(); + let engine: RoomFurniturePreviewEngine | null = null; let canvas: OffscreenCanvas | null = null; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); - // TODO: 他のWorkerと実装を共通化 onmessage = async (event) => { //console.log('Worker received message:', event.data); diff --git a/packages/frontend-misskey-world-engine/src/room/worker.ts b/packages/frontend-misskey-world-engine/src/room/worker.ts index dcb1b1598d..3f11fe66dd 100644 --- a/packages/frontend-misskey-world-engine/src/room/worker.ts +++ b/packages/frontend-misskey-world-engine/src/room/worker.ts @@ -4,17 +4,15 @@ */ import * as BABYLON from '@babylonjs/core/pure'; -import '@babylonjs/core/Engines/WebGPU/Extensions/engine.rawTexture'; +import { registerBabylonRuntime } from '../babylonRuntime.js'; import { RoomEngine } from './engine.js'; import type { RoomState, RoomAttachments } from 'misskey-world/src/room/type.js'; +registerBabylonRuntime(); + let engine: RoomEngine | null = null; let canvas: OffscreenCanvas | null = null; -BABYLON.RegisterFullEngineExtensions(); -BABYLON.RegisterEnginesExtensionsEngineRawTexture(); -BABYLON.RegisterCollisionCoordinator(); - // TODO: 他のWorkerと実装を共通化 onmessage = async (event) => { //console.log('Worker received message:', event.data);