Skip to content
View sgi-demos's full-sized avatar
♾️
♾️

Block or report sgi-demos

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sgi-demos/README.md

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 using an IRIS GL-to-GLES2/3 rasterizer with 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 architecture doc for more implementation details, and the latest smoke test for build status.

Working demos

  • Arena - no network play yet
  • Bounce
  • Buttonfly - Wade Olsen
  • Cedit - Paul Haeberli, 1984
  • Electropaint 1988 - David Tristram, 1988; IRIS GL, earliest version, Panel Library v7 from the 1988 Usenet posting (no sliders yet)
  • Electropaint 1989 - David Tristram, 1989; IRIS GL, Panel Library 9.6; driven by Tristram's authentic default script; keyboard toggles
  • Electropaint 1994 (OpenGL, decompiled) - 1994, IRIX screensaver decompiled by drvink; smooth HLS color + the famous default script
  • Electropaint 1994 (OpenGL, reversed) 1994, reversed to somewhat-readable code and restored IRIS GL version's 4-fold mirrors + 30° camera — M toggles the original 1994 look
  • Flight 1988 - Gary Tarolli, 1988; colormap-mode original, nearly original source (25 diff lines total) at the authentic 1280×1024; splash, plane menu, takeoff, crashes, and stable night mode all work; no network play
  • Flight 1994 Rob Mace, 1994, version 3.4; the definitive IRIX release: RGB, lighting, 8 planes, full-width 3D horizon, instrument panel, HUD, upgraded plane models; no texture/fog/sound/network yet
  • Gview (Barcelona) - Late 1980s; reversed from IRIX 3 binary: fly-through and turntable modes work; no materials, movie loops, or binary model cache; Performer/Inventor pre-cursor perhaps?
  • Ideas
  • Insect Thant Tessman, mid-1980s; originally for the IRIS 2400
  • Jello Thant Tessman, 1987
  • Logo Thant Tessman, 1987
  • Newave - Late 1980s , originally for the 4D/70G; note the wave starts flat: right-click, edit, then go
  • Twilight - Howard Look, 1991

Demos coming next

  • More IRIS GL demos
  • Aux/Tk OpenGL demos
  • GLUT OpenGL demos
  • Inventor Slotcars, Maze
  • Performer Town, 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 all-demos-in-one page thumbnail screenshot gallery 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

Credits

Pinned Loading

  1. sgi-demos sgi-demos Public

    SGI demos from long ago, running in your browser today.

    C 89 8

  2. sgi-performer sgi-performer Public

    SGI Performer source and binaries archive

    C 2