Ambient Occlusion demo for NativeClient

by syoyo

nacl_ao.png

NativeClient (NaCl) と呼ばれる x86 バイナリをほぼそのままブラウザで実行できるフレームワークが出たので、AO bench を NaCl に移植してみました.

http://lucille.atso-net.jp/nacl/ao.html
(NativeClient プラグインがインストールされている x86 マシンである必要があります.
処理速度が早いので、せっかくですからマウスでいじれるようにインタラクティブにしてみました)

source
http://lucille.svn.sourceforge.net/viewvc/lucille/angelina/nacl/ao/

速度ですが、処理時間をブラウザに戻す仕組みがよくわからなかったので目視レベルで確認しました.
ブラウザで動かしても速度がネイティブとちがうということはないです.
速度低下がほとんど無い事は、これは NaCl のドキュメントなどでも示されていますね.
ってか基本サンドボクシングが必要な部分に施された x86 コードまんまを実行しているので、
ブラウザで実行で速度低下がないというのも納得がいきます.

ネイティブとほとんど同じ速度で、というのはすごい特徴なのだろうけど
(ブラウザでレンダラとかレイトレを走らせるのも現実的になる)、
しかし実現の仕方がとても直接的というか、プラグインが結局は必要になるし、バイナリも x86 などのアーキ依存というのがちょっと気持ち悪いですね.
ユーザは多様なクライアントをサポートするとなると、
x86 や ARM それぞれにバイナリを作らなければならなくなるのでしょうか.

ところで、最初は NaCl は x86 コードをダイレクトに解釈して JIT したりサンドボクシングを施して、
Chrome の高速 JS エンジンで実行するという仕組みだと思ってました.
x86toLLVM でやろうとしたことを google に先を越された!みたいな.

おまけ

nacl って、どうしてもナッ○ルって読んでしまいますね.
また次に読めるのは何週後になるのだろう…

Advertisements