sgi-demos

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

Old problems require modern solutions.

This is the original SGI demo source code, compiled for the web using Emscripten and SDL2. Rendering is done using an IRIS GL software rasterizer 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, in order to run in the browser and to build with compilers 30+ years later. For more implementation details, see the architecture doc.

Working demos

Somewhat working demos

Firmly WIP demos

Build instructions

Mac

  1. Install Homebrew if you don’t have it, then get SDL2 and Emscripten:
    brew install SDL2
    brew install emscripten
    
  2. 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"
    
  3. Install clang toolchain and SDL2 in MSYS2 CLANG64 shell:
    pacman -Syu
    pacman -S base-devel mingw-w64-clang-x86_64-toolchain
    pacman -S mingw-w64-clang-x86_64-SDL2
    
  4. Clone emscripten from Github. Cloning seems to work best with MSYS2 rather than using pacman. Follow the default install directions, not the Windows directions!

  5. Add this line to the ~/.bashrc file in MSYS2 CLANG64 shell:
    source /path/to/emsdk/emsdk_env.sh
    
  6. Build:
    git clone https://github.com/sgi-demos/sgi-demos.git
    cd sgi-demos
    make
    

To do

Credits