04e3400ab9a850a82731744336ebb3e9def73c31
vec4(position, 0.0, 1.0) passes a vec3 plus two floats into a vec4 - five components into four. Invalid GLSL ES on both WebGL 1 and 2: THREE.WebGLProgram: Shader Error 0 - VALIDATE_STATUS false ERROR: 0:71: 'constructor' : too many arguments The whole post-processing pass failed and the game canvas read back as one colour, 0/64000 non-black pixels. position.xy is the vec2 the fullscreen quad needs. Verified headlessly with SwiftShader: 55-143 distinct colours, 63750/64000 lit pixels, no shader errors, scene hash changes after throttle + pitch.
Wings of the 90s - Flight Simulator
A period-accurate 3D flight simulator inspired by early 90s Amiga/DOS games like Comanche, F-15 Strike Eagle, and After Burner. Runs in any modern browser.
Features
- Authentic retro aesthetic — 320×200 VGA Mode X resolution, CRT post-processing (barrel distortion, scanlines, color quantization, chromatic aberration, vignette), EGA 16-color palette
- Loading screen with progress bar and cycling messages
- Main menu with keyboard navigation
- Procedural terrain — 2000m heightmap with vertex-colored hills, water plane, low-poly clouds
- Airport — Runway with markings, taxiway, control tower, hangars, fuel truck, windsock
- Low-poly Cessna-style aircraft with animated propeller and retractable landing gear
- 6-DOF flight physics — Thrust, drag, lift, gravity, ground friction, auto-leveling
- Flight HUD — Artificial horizon, airspeed, altimeter, heading tape, vertical speed indicator, throttle bar
- Sound — Engine drone tied to throttle, menu beeps
Controls
| Key | Action |
|---|---|
W / S |
Throttle up / down |
↑ / ↓ |
Pitch |
← / → |
Roll |
Q / E |
Yaw (rudder) |
C |
Toggle cockpit / chase camera |
Esc |
Pause / resume |
Getting Started
npm install
npm run dev
Open http://localhost:5173 in your browser.
Build
npm run build
Tech Stack
- Three.js r160 for 3D rendering
- Vite for dev server and builds
- Vanilla JS, no frameworks
- Web Audio API for sound
Languages
JavaScript
90.4%
CSS
4.9%
HTML
4.7%