space-game/vite.config.ts
Michael Mainguy 0bb27691fe
All checks were successful
Build / build (push) Successful in 1m42s
Add WebGPU XR rendering pipeline via XRGPUBinding
Create a parallel WebGPU XR path that uses XRGPUBinding and
XRProjectionLayer instead of the WebGL-only XRWebGLLayer, while
preserving the existing WebGL XR path as the default fallback.

New files in src/core/xr-webgpu/:
- xrGpuTypes.ts: TypeScript declarations for XRGPUBinding spec types
- xrGpuSessionSetup.ts: GPUDevice access and session init helpers
- xrGpuTextureProvider.ts: Per-frame GPUTexture swap via hwTex.set()
- xrGpuLayerWrapper.ts: WebXRLayerWrapper subclass for projection layers
- xrGpuRenderTarget.ts: WebXRRenderTarget using XRGPUBinding
- xrGpuEntryPoint.ts: Public API for availability check and creation

Modified xrEntryHandler.ts to conditionally route through WebGPU or
WebGL XR entry based on XRGPUBinding availability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 08:29:31 -06:00

86 lines
3.3 KiB
TypeScript

import {defineConfig} from "vite";
import { svelte } from '@sveltejs/vite-plugin-svelte';
/** @type {import('vite').UserConfig} */
export default defineConfig({
plugins: [svelte()],
test: {},
define: {},
build: {
sourcemap: true,
rollupOptions: {
output: {
manualChunks: {
'babylon-inspector': ['@babylonjs/inspector'],
}
}
}
},
optimizeDeps: {
esbuildOptions: {
define: {
global: 'window',
}
},
// Include BabylonJS modules - force pre-bundle to prevent dynamic import issues
// Shaders must be explicitly included to avoid dynamic import failures through CloudFlare proxy
include: [
'@babylonjs/core',
// Core shaders (WebGL)
'@babylonjs/core/Shaders/default.vertex',
'@babylonjs/core/Shaders/default.fragment',
'@babylonjs/core/Shaders/rgbdDecode.fragment',
'@babylonjs/core/Shaders/procedural.vertex',
// PBR shaders (WebGL)
'@babylonjs/core/Shaders/pbr.vertex',
'@babylonjs/core/Shaders/pbr.fragment',
'@babylonjs/core/Shaders/pbrDebug.fragment',
// Particle shaders (WebGL)
'@babylonjs/core/Shaders/particles.vertex',
'@babylonjs/core/Shaders/particles.fragment',
'@babylonjs/core/Shaders/gpuRenderParticles.vertex',
'@babylonjs/core/Shaders/gpuRenderParticles.fragment',
// Other common shaders (WebGL)
'@babylonjs/core/Shaders/standard.fragment',
'@babylonjs/core/Shaders/postprocess.vertex',
'@babylonjs/core/Shaders/pass.fragment',
'@babylonjs/core/Shaders/shadowMap.vertex',
'@babylonjs/core/Shaders/shadowMap.fragment',
'@babylonjs/core/Shaders/depth.vertex',
'@babylonjs/core/Shaders/depth.fragment',
// WGSL shaders (WebGPU equivalents)
'@babylonjs/core/ShadersWGSL/default.vertex',
'@babylonjs/core/ShadersWGSL/default.fragment',
'@babylonjs/core/ShadersWGSL/rgbdDecode.fragment',
'@babylonjs/core/ShadersWGSL/procedural.vertex',
'@babylonjs/core/ShadersWGSL/pbr.vertex',
'@babylonjs/core/ShadersWGSL/pbr.fragment',
'@babylonjs/core/ShadersWGSL/particles.vertex',
'@babylonjs/core/ShadersWGSL/particles.fragment',
'@babylonjs/core/ShadersWGSL/postprocess.vertex',
'@babylonjs/core/ShadersWGSL/pass.fragment',
'@babylonjs/core/ShadersWGSL/shadowMap.vertex',
'@babylonjs/core/ShadersWGSL/shadowMap.fragment',
'@babylonjs/core/ShadersWGSL/depth.vertex',
'@babylonjs/core/ShadersWGSL/depth.fragment',
'@babylonjs/loaders',
'@babylonjs/havok',
'@babylonjs/materials',
'@babylonjs/procedural-textures'
],
// Prevent cache invalidation issues with CloudFlare proxy
force: false,
// Exclude patterns that trigger unnecessary re-optimization
exclude: []
},
server: {
port: 3000,
allowedHosts: true
},
// appType: 'spa' is default - Vite automatically serves index.html for SPA routes
preview: {
port: 3000,
},
base: "/"
})