Skip to main content

CRITICAL: WebGPU Required

Hyperscape requires WebGPU. WebGL WILL NOT WORK. This is a hard requirement due to our use of TSL (Three Shading Language) for all materials and post-processing effects. TSL only works with the WebGPU node material pipeline.
BREAKING CHANGE (February 27, 2026): All WebGL fallback code has been removed in commit 47782ed. The game will not render without WebGPU support.

Why WebGPU-Only?

TSL Shaders

All materials use Three.js Shading Language (TSL) which requires WebGPU:
TSL Features Used:
  • Node-based material system
  • GPU-computed animations (dissolve, fade, flicker)
  • Procedural noise and patterns
  • Custom vertex/fragment shaders

Post-Processing Effects

All post-processing uses TSL-based node materials:
Effects:
  • Bloom (glow effects)
  • Tone mapping (HDR to SDR)
  • Color grading (LUT-based)
  • Outline rendering (entity highlights)

No Fallback Path

There is NO WebGL fallback because:
  • TSL compiles to WGSL (WebGPU Shading Language)
  • WGSL cannot run on WebGL
  • Rewriting all shaders for WebGL would require months of work
  • WebGPU provides better performance and features

Browser Requirements

Supported Browsers

Check your browser’s WebGPU support at webgpureport.org

Safari 17 Support Removed

BREAKING CHANGE (commit 205f96491, February 27, 2026): Safari 17 support was removed. Safari 18+ (macOS 15 Sequoia or later) is now required. Reason:
  • Safari 17 had incomplete WebGPU implementation
  • Missing features caused rendering bugs
  • Safari 18 provides full WebGPU support
Migration:
  • Update macOS to 15.0+ (Sequoia)
  • Update Safari to 18.0+
  • Or use Chrome 113+ / Edge 113+

GPU Requirements

Desktop GPUs

Minimum:
  • NVIDIA GTX 1060 or equivalent
  • AMD RX 580 or equivalent
  • Intel Arc A380 or equivalent
Recommended:
  • NVIDIA RTX 3060 or better
  • AMD RX 6600 or better
  • Intel Arc A750 or better

Mobile GPUs

iOS:
  • iPhone 12 or newer (A14 Bionic+)
  • iPad Air 4th gen or newer
  • iPad Pro 3rd gen or newer
Android:
  • Snapdragon 888 or newer
  • Mali-G78 or newer
  • Adreno 660 or newer
Mobile WebGPU support is experimental. Desktop browsers provide the best experience.

Enabling WebGPU

Chrome / Edge

WebGPU is enabled by default in Chrome 113+ and Edge 113+. Verify:
  1. Open chrome://gpu
  2. Check “WebGPU” status
  3. Should show “Hardware accelerated”
If disabled:
  1. Go to chrome://settings
  2. System → “Use hardware acceleration when available”
  3. Enable the toggle
  4. Restart browser

Safari

WebGPU is enabled by default in Safari 18+ (macOS 15+). Verify:
  1. Safari → Preferences → Advanced
  2. Check “Show Develop menu in menu bar”
  3. Develop → Experimental Features
  4. Verify “WebGPU” is checked
If disabled:
  1. Develop → Experimental Features → WebGPU
  2. Check the box
  3. Restart Safari

Firefox

WebGPU is behind a flag in Firefox (not recommended for production use). Enable:
  1. Open about:config
  2. Search for dom.webgpu.enabled
  3. Set to true
  4. Restart Firefox
Firefox WebGPU support is incomplete. Use Chrome or Edge for best experience.

Server/Streaming Requirements

For Vast.ai and other GPU servers running the streaming pipeline:

Hardware Requirements

GPU:
  • NVIDIA GPU with Vulkan support (REQUIRED)
  • RTX 3060 Ti or better recommended
  • Vulkan 1.2+ support
Display:
  • Must run headful with Xorg or Xvfb (NOT headless Chrome)
  • Chrome uses ANGLE/Vulkan backend to access WebGPU
  • Headless mode does NOT support WebGPU
Drivers:
  • NVIDIA driver 535+ recommended
  • Vulkan ICD installed (/usr/share/vulkan/icd.d/nvidia_icd.json)

Software Requirements

Environment Configuration

BREAKING CHANGE: Headless mode is NOT supported. Deployment FAILS if WebGPU cannot initialize (no soft fallbacks).

Deployment Validation

The deploy-vast.sh script validates WebGPU requirements:
Deployment Fails If:
  • NVIDIA GPU not detected
  • Vulkan ICD missing
  • Display server not running
  • WebGPU preflight test fails
No Soft Fallbacks:
  • Previous versions fell back to headless mode
  • Headless mode doesn’t support WebGPU
  • Now deployment FAILS immediately if WebGPU unavailable

Removed Features

WebGL Fallback (BREAKING)

Removed in commit 47782ed (February 27, 2026):
Now:

URL Parameters (REMOVED)

Environment Variables (DEPRECATED)

Why Kept:
  • Backwards compatibility with old configs
  • Prevents deployment failures from stale env files
  • Logged as warnings when set

Error Messages

User-Facing Errors

When WebGPU is unavailable, users see:
Error Code: SYSTEM_WEBGL_ERROR (renamed from WebGL, kept for compatibility) Location: packages/client/src/lib/errorCodes.ts

Developer Errors

When WebGPU fails during development:

Migration Guide

For Developers

If you have code that checks for WebGL:

For Deployment

Update your deployment configs:

For Users

If you see “WebGPU not supported” error:
  1. Check browser version:
    • Chrome: chrome://version (need 113+)
    • Edge: edge://version (need 113+)
    • Safari: Safari → About Safari (need 18+)
  2. Update browser:
  3. Enable hardware acceleration:
    • Chrome/Edge: chrome://settings → System → “Use hardware acceleration”
    • Safari: Preferences → Advanced → Experimental Features → WebGPU
  4. Update GPU drivers:

Testing WebGPU Support

Browser Console Test

Open browser console and run:

WebGPU Report

Visit webgpureport.org to see:
  • WebGPU availability
  • GPU adapter information
  • Supported features and limits
  • Browser compatibility

Common Issues

”WebGPU not supported” Error

Cause: Browser doesn’t support WebGPU Solutions:
  1. Update browser to Chrome 113+, Edge 113+, or Safari 18+
  2. Enable hardware acceleration in browser settings
  3. Update GPU drivers
  4. Check for browser extensions blocking WebGPU

Black Screen / No Rendering

Cause: WebGPU initialized but rendering failed Solutions:
  1. Check browser console for WebGPU errors
  2. Verify GPU drivers are up to date
  3. Try different browser (Chrome vs Edge vs Safari)
  4. Disable browser extensions
  5. Clear browser cache and reload

”GPU process was unable to boot”

Cause: GPU access disabled or driver issue Solutions:
  1. Enable hardware acceleration: chrome://settings → System
  2. Update GPU drivers
  3. Check for GPU blocklist: chrome://gpu → “Problems Detected”
  4. Try --ignore-gpu-blocklist flag (development only)

Streaming Shows Black Frames

Cause: WebGPU not initializing on remote server Solutions:
  1. Check GPU diagnostics: bunx pm2 logs hyperscape-duel --lines 500 | grep "GPU Diagnostics"
  2. Verify display server: echo $DISPLAY && xdpyinfo
  3. Check Vulkan: vulkaninfo --summary
  4. Review preflight test: bunx pm2 logs hyperscape-duel | grep preflight
  5. Ensure STREAM_CAPTURE_HEADLESS=false

Development Rules

DO NOT:

  • ❌ Add WebGL fallback code
  • ❌ Use --disable-webgpu flags
  • ❌ Use forceWebGL parameters
  • ❌ Create headless Chrome configurations without GPU/WebGPU support
  • ❌ Suggest WebGL as an alternative

DO:

  • ✅ Assume WebGPU availability in all renderer code
  • ✅ Throw errors immediately if WebGPU unavailable
  • ✅ Use TSL for all custom shaders
  • ✅ Test on WebGPU-capable browsers only
  • ✅ Document WebGPU requirements in user-facing docs

WebGPU Diagnostics

GPU diagnostics and preflight testing

Deployment Guide

Production deployment with GPU configuration

Troubleshooting

Common issues and solutions

Rendering Architecture

Three.js WebGPU renderer architecture