概要
SGIの往年のデモを、現代のブラウザで実行可能にしたプロジェクトの紹介。 EmscriptenとSDL2を活用し、元のC/C++コードを最小限の修正でWeb対応。 IRIS GLソフトウェアラスタライザやSDL2によるイベント処理を採用。 デモごとに独立したページとWASMバイナリを提供。 ビルド手順や今後のTODO、クレジット情報も網羅。
SGIデモをブラウザで再現するプロジェクト概要
- SGIデモ のオリジナルソースコードを Emscripten と SDL2 でWeb対応
- IRIS GL ソフトウェアラスタライザ(Alice 4プロジェクト由来)による描画
- SDL2によるイベント処理、GLイベントシステムへの変換
- 各デモは 独立したWebページ ・ Javascript+WASM (元C/C++コードからEmscriptenでビルド)
- ソースコードの修正は最小限、35年新しいコンパイラへの適応のみ
動作確認済みデモ
- Buttonfly
- Bounce
- Ideas
- Insect
- Jello
- Logo
- Twilight
一部動作に問題のあるデモ
- Flight
- コックピット描画の不具合
- Web版では飛行機が遅い
- ナイトモードで「ちらつき」
- ネットワークプレイ非対応
- Newave
- メッシュ編集不可
- ポップアップメニュー非対応
- ワイヤーフレームのみ
- Arena
- ネットワークプレイ非対応
ビルド手順
Mac環境
- Homebrew未導入ならインストール
- SDL2とEmscriptenのインストール
brew install SDL2brew install emscripten
- ビルド手順
git clone https://github.com/sgi-demos/sgi-demos.gitcd sgi-demosmake
Windows環境
- Winget未導入ならインストール
- MSYS2をcmd.exeからインストール
winget install MSYS2.MSYS2setx PATH "%PATH%C:\msys64\clang64\bin"
- MSYS2 CLANG64シェルでclangツールチェーンとSDL2をインストール
pacman -Syupacman -S base-devel mingw-w64-clang-x86_64-toolchainpacman -S mingw-w64-clang-x86_64-SDL2
- emscriptenをGithubからクローン(MSYS2推奨、pacman経由は非推奨)
- emscriptenのインストール手順はデフォルトを参照(Windows向け手順は使わない)
~/.bashrcに以下を追加source /path/to/emsdk/emsdk_env.sh
- ビルド手順
git clone https://github.com/sgi-demos/sgi-demos.gitcd sgi-demosmake
今後の課題・TODO
- OpenGLES/WebGLによるレンダリング(作業中)
- 任意ウィンドウサイズ対応
- GLデモを独立した WASMワーカー/スレッド で実行(SDLイベントループ分割回避)
- ポップアップメニュー(SGI伝統のフォント含む)対応
- さらなるデモの追加
- Electropaint
- Cedit
- その他IRIS GLデモ
- OpenGL, GLUT, Inventor, Performerデモ
- 各デモの基本情報表示
- 名前、作者、年(画面下部テキスト)、コードリンク
- バーチャルマウス・キーボード表示
- デモで使用するキー・マウスのみ表示
- qdevice()呼び出しで判定
- 透明オーバーレイ表示
- タッチデバイスでは常時表示
- マウス/キーボードデバイスではヒントとしてON/OFF切替
- 各デモの説明・歴史・背景
- .Infoスライドファイルから取得可能な情報も活用
- manページへのライブリンク
クレジット
- SGI全スタッフ: eye candy と 高性能コンピュータ の功績
- Alice 4プロジェクト関係者: GL実装 とインスピレーション
- Emscripten・SDLチーム: Web移植 実現
- Internet Archive、Bitsavers、WinWorld、IRIXNet他: 歴史的資料保存