SGI demos from long ago, running in your browser today.
It's a UNIX system. I know this!
This is the original SGI demo source code, compiled for the web using Emscripten and SDL2. Rendering is done via an IRIS GL-to-GLES2/3 rasterizer or a reference software rasterizer forked from the Alice 4 project. Event handling is done by SDL2, with events translated into GL's event system.
Each demo is a separate web page, with its own Javascript + WASM compiled by Emscripten from the original C/C++ source. Native Linux, Mac, and Windows builds are also available. Minimal modifications have been made to the original source, only what is necessary to build them 30+ years later for modern hardware and the browser.
See the copyright doc for thorough copyright considerations, the architecture doc for implementation details, and the latest smoke test for build status.
Working demos
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Arena | Bounce | Buttonfly | Cedit | Electropaint 1988 | Electropaint 1989 |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Electropaint 1994 | Flight | Flight 3.4 | Gview: the Barcelona Pavilion | Ideas in Motion | Insect |
![]() | ![]() | ![]() | ![]() | ![]() |
| Jello | Logo | Newave | Performer Town | Twilight |
Demos coming next
- More IRIS GL demos
- Aux/Tk OpenGL demos
- GLUT OpenGL demos
- Inventor Slotcars, Maze
- Performer Matterhorn, Yosemite
Build
Mac
- Install Homebrew if you don't have it, then get SDL2 and Emscripten:
brew install SDL2 brew install emscripten
- Build:
git clone https://github.com/sgi-demos/sgi-demos.git
cd sgi-demos
makeWindows
-
Install Winget if you don't have it.
-
Install MSYS2 from cmd.exe, in order to get the clang compiler:
winget install MSYS2.MSYS2
setx PATH "%PATH%C:\msys64\clang64\bin"- Install clang toolchain, SDL2, and bison (for buttonfly menu parsing) in MSYS2 CLANG64 shell:
pacman -Syu pacman -S base-devel mingw-w64-clang-x86_64-toolchain pacman -S mingw-w64-clang-x86_64-SDL2 pacman -S bison
-
Clone emscripten from Github. Cloning seems to work best with MSYS2 rather than using pacman. Follow the default install directions, not the Windows directions!
-
Add this line to the
~/.bashrcfile in MSYS2 CLANG64 shell:
source /path/to/emsdk/emsdk_env.sh- Build:
git clone https://github.com/sgi-demos/sgi-demos.git
cd sgi-demos
makeTo do
- Demos coming next
- Fix logged issues
- Provide context for each demo:
- Overlay text in lower corner: Name, author, year, code link, provenance (IRIX version, dev toolbox, demo cd, etc.)
- Brief description/history/context for each demo - Obtain descriptions from .Info slide files
- Link to demo man page
- Add 'inspect demo' mode to pause, orbit, zoom, pan, fly through demo scene (as a hidden override to the demo's own controls)
- Add popup/overlay help to show available key/mouse inputs
- Provide virtual mouse and keyboard for touch devices:
- Only display virtual keys and mouse functions used by the demo; use demo's qdevice() calls to determine this
- Displayed as transparent virtual mouse and key pictures overlaid on demo
- On always for touch devices
- On/off for mouse/keyboard devices, as hints
License
The sgi-demos code (the IRIS GL implementation, rasterizers, SDL layers, shims, build files, tests, and docs) is Apache License 2.0; see LICENSE and NOTICE. The original SGI demos, headers, and data, and Electropaint, are not covered by that license and retain their original authors' terms; several carry SGI's or the author's permissive notice, the rest are used under fair use. Every original notice is preserved. The full provenance and fair-use record for every demo and library is in docs/COPYRIGHT.md. This project is not affiliated with or endorsed by Hewlett Packard Enterprise, Silicon Graphics, or Tristram Visual.
Credits
- Everyone who worked at SGI, for the eye candy and the baller computers.
- The Alice 4 folks, for the inspiration and the GL implementation.
- drvink for the custom MIPS decompiler and resulting ep decompilation, Electroportis
- Claude Fable 5 for gobbling up the to do list at incredible speed.
- Emscripten and SDL teams, for making a web port possible.
- Internet Archive, Bitsavers, WinWorld, IRIXNet, fsck.technology, jrra.zone, and others, for saving the history.
















