世界を動かす技術を、日本語で。

古いSGIデモをWASMを通じてブラウザで再現

2025年9月22日原文(github.com)

概要

SGIの往年のデモを、現代のブラウザで実行可能にしたプロジェクトの紹介。 EmscriptenとSDL2を活用し、元のC/C++コードを最小限の修正でWeb対応。 IRIS GLソフトウェアラスタライザやSDL2によるイベント処理を採用。 デモごとに独立したページとWASMバイナリを提供。 ビルド手順や今後のTODO、クレジット情報も網羅。

SGIデモをブラウザで再現するプロジェクト概要

  • SGIデモ のオリジナルソースコードを EmscriptenSDL2 で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 SDL2
    • brew install emscripten
  • ビルド手順
    • git clone https://github.com/sgi-demos/sgi-demos.git
    • cd sgi-demos
    • make

Windows環境

  • Winget未導入ならインストール
  • MSYS2をcmd.exeからインストール
    • winget install MSYS2.MSYS2
    • setx PATH "%PATH%C:\msys64\clang64\bin"
  • MSYS2 CLANG64シェルでclangツールチェーンとSDL2をインストール
    • pacman -Syu
    • pacman -S base-devel mingw-w64-clang-x86_64-toolchain
    • pacman -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.git
    • cd sgi-demos
    • make

今後の課題・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他: 歴史的資料保存

Hackerたちの意見

シリコン・グラフィックスは90年代初頭のコンピュータグラフィックス界での主役だったよね。

NVidiaが注目されてるのは、SGIから重要な人材を雇ったからだね。

1994年にオラクルでキャリアをスタートしたんだけど、シリコン・グラフィックス(まだ正式にはSGIじゃなかった)の「マジックバス」がレッドウッドショアーズの駐車場に来て、みんなで並んで中に入ってデモを見た時のことは今でも覚えてる。その時、本当に未来にいる気分だったな。

1995年か1996年頃、友達がSGIのシステムでスピーダーバイクのグラフィックス/ゲームデモを体験したって言ってたんだ。SGIのプロモーションイベントみたいなところで。スクリーンショットや動画を見つけられなくて、ここにあればいいなと思ってたけど、残念ながらなかった。誰か覚えてる人いる?

もしかして「Vroom」かな?宇宙でのスロットカー・レースゲームだよ。https://nixdoc.net/man-pages/irix/man6/vroom.6.html 動画: https://www.youtube.com/shorts/imguo4oUd-c?app=desktop

GLTronとArmagetron Advanced、どっちが好き?

それ、Unixシステムだよね!知ってるよ。

俺、年取ったなぁ。その参照は1993年のものだよ。ネタバレはしないけど、知らない人のために: https://imdb.com/title/tt0107290/

あの映画が公開されたとき、私は学校に通っていて、コンピュータサイエンスの学生専用の寮に住んでたんだ。みんなで映画を見に行って、彼女がそのセリフを言ったとき、みんな大爆笑しちゃって、劇場の他の人たちは困惑してたよ。

あの3Dファイルマネージャーは「fsn」って呼ばれてたよ。それから「fsv」っていうgtk/Linuxポートもある。僕はgtk+3に更新したバージョンをここで管理してるよ: https://github.com/jabl/fsv 。残念ながら、生活が忙しくてgtk4に移行したり、いくつかの欠けてる機能を追加する時間が取れなかったんだ。

技術的にはそれほどすごくないけど、1998年から2025年までのNvidia(nVidia?)のテクノロジーデモのコンピレーションは歴史的に興味深いよ。https://www.youtube.com/watch?v=DfWSJvKFMPE

それめっちゃ面白い!HNに投稿する価値ありだね。

Hacker Newsで議論の続きを見る