sgi-demos - Overview

GitHub

3 min read Original article ↗

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

ArenaBounceButtonflyCeditElectropaint 1988Electropaint 1989
ArenaBounceButtonflyCeditElectropaint 1988Electropaint 1989
Electropaint 1994FlightFlight 3.4Gview: the Barcelona PavilionIdeas in MotionInsect
Electropaint 1994FlightFlight 3.4Gview: the Barcelona PavilionIdeas in MotionInsect
JelloLogoNewavePerformer TownTwilight
JelloLogoNewavePerformer TownTwilight

Demos coming next

  • More IRIS GL demos
  • Aux/Tk OpenGL demos
  • GLUT OpenGL demos
  • Inventor Slotcars, Maze
  • Performer Matterhorn, Yosemite

Build

Mac

  1. Install Homebrew if you don't have it, then get SDL2 and Emscripten:
brew install SDL2
brew install emscripten
  1. Build:
git clone https://github.com/sgi-demos/sgi-demos.git
cd sgi-demos
make

Windows

  1. Install Winget if you don't have it.

  2. Install MSYS2 from cmd.exe, in order to get the clang compiler:

winget install MSYS2.MSYS2
setx PATH "%PATH%C:\msys64\clang64\bin"
  1. 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
  1. Clone emscripten from Github. Cloning seems to work best with MSYS2 rather than using pacman. Follow the default install directions, not the Windows directions!

  2. Add this line to the ~/.bashrc file in MSYS2 CLANG64 shell:

source /path/to/emsdk/emsdk_env.sh
  1. Build:
git clone https://github.com/sgi-demos/sgi-demos.git
cd sgi-demos
make

To 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