S.F. Page

Programming,Music,etc...

8色パレットカラーグラフィックスをWebGLでエミュレートするアイデアその2 - PCグラフィックスを懐かしむ。楽しむ。(5)

寝ても覚めてもというほどでもないが、極力GPUを使って8色パレットカラーをエミュレートする方法を考えている。 ビット演算をJavaScriptにさせるアイデアはコストが高い感じがする。Chrome CanaryやFirefoxではオプション設定でWebGL 2.0を動かすことができるから、それで再チャレンジしようかなとも思った。それはそれで試してみたいのだが、2つ目のアイデアが浮かんだので、それを試してみようと思っている。

それは以下のようなものである。

  • 320x240のフレームバッファを用意する。
  • シェーダープログラムは2つ用意する。1つ目はフレームバッファにピクセルを描画するもの、もう1つは画面にフレームバッファの内容を描画するものである。
  • 1つ目のプログラムでフレームバッファにGPUでピクセルを描画する。ピクセルの色情報はRのみに1-7の値をセットし、他は0をセットする。
  • 2つ目のプログラムでフレームバッファをテクスチャにして、画面サイズと同じ四角形ポリゴンを1枚描く。フラグメントシェーダは、テクスチャの色情報をインデックスに、uniform変数で与えたパレット情報テーブルを使い色をルックアップするように作る。そうすることで、パレットをエミュレートする。

JavaScriptからは、シェーダーにXY座標とピクセルの色番号を指定するのみで、後はすべてGPUに処理させるのである。 このアイデアをもとに早速実装を始めることにする。