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.
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| 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 |
- More IRIS GL demos
- Aux/Tk OpenGL demos
- GLUT OpenGL demos
- Inventor Slotcars, Maze
- Performer Matterhorn, Yosemite
- 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
make-
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
make- 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
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.
- 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.

















