2006-01-24

近況

RTR 読書会は続行中. 隔週で週末に 2 時間, 持ち回りで輪読をしている. 場所は秋葉原の会議室つき喫茶店を適当にチョイス. 担当者は担当範囲を読み込み, 輪読の資料を作ってくることになっている. 資料のスタイルは人それぞれで, ほとんど全部訳をつくる人も入れば ポイントだけ図を使って説明する人もいる. 私は PPT 風箇条書き. その章の内容によっても適したスタイルは違う気がする. いずれにせよホワイトボードは必須.

学生の頃に読んだ時にはわからなかったが, RTR はけっこう説明が冗長な部分も多い. そういう部分をいかにすばやく適当に済ますかが進度に影響している. 冗長なのはうっとうしいのだが自分がよくわかっていない時には便利なので, そういう本も輪読でこなせるようにスタイルを確立する方が前向きだと思う.

隔週二時間なので進みは遅い. ただこれより本格的にやろうとすると負担は大きそう. 進みが遅いのは悶々とすることもあるが良いところもある. たとえば周辺資料を物色する意欲がわくのは良い. 読破モードの時にはあまりそういう気にならない.

たとえば最近 A-Buffer というのが出てきた. RTR の説明を読んでもいまいちピンとこず, ただよくわからない複雑な仕組みだと思っていた. 一人で読んでいるとそれまでのところを, 読書会をすると A-Buffer って何なんだという話で盛り上りしかし誰もわからず, 結局出典をあたることにした. "The A-buffer, an Antialiased Hidden Surface Method" がそれ. 著者の Loren Carpenter は Pixar の Co-founder だそうな. 古い論文を読んで有名人のものにあたるとちょっと嬉しい.

A-buffer

A-Buffer は antialiasing と transparent をサポートした hidden surface の仕組み. REYES に実装されている. "anti-aliased, area-averaged, accumulation buffer" で A-buffer と命名されたようだ. 基本的なアイデアは pixel に自身を cover する fragment 一式を Z でソートされた線型リストで繋いでおいて, 最終画像を作る時にリストをたどって fragment の cover 状態をマージし ピクセルの色を決定するというもの. もちろん普通にやると滅茶苦茶コストがかかるので, リストが伸びないように色々細工をする. その工夫が話題の中心となる.

このころは素朴な時代だったのか技術自体が素朴だからか, 解説も割と詳しく実装に踏みこんでいて面白い. たとえばリストの要素がひとつの時は Z 値の符合を反転しておき リストの先頭ポインタの部分に即値で色を入れるとか, カバレッジビットの計算はビット演算 8 回もあればできるんだとか, 話が細かい. Hacker's Delight の世界.

A-buffer が現役のアルゴリズムなのかはさておき, ハードウェアを前提とした最近の乱暴な方法とは毛色が違うから AA 話の好きな人は楽しく読めると思う. 世の中の AA 実装では Coverage Computation 学派と Supersampling 学派が闘いを繰り広げているが, Coverage Computation 学派の人は (最近は少数派だと思うけど) 特にビット演算のアイデアなどでヒントを得ることができるかもしれない.

なお, その後, A-Buffer はハードウェアでも何度か実装されたという. 代表的なのは OpenGL に入っている multisampling の話. "Hardware Accelerated Rendering Of Antialiasing Using A Modified A-buffer Algorithm" これは読んでもよくわからなかった. そもそも Apple と 3dfx と SGI の研究者が一緒に書いて素直に読めるものが できるとは思えない...と自分を慰めつつ挫折.

オブジェクトとしてのピクセル

以前 "Deep Shadow Maps" を 読んだ時も感じたのは, Pixer のアイデアは一つの画素を単なる値ではなくて色々な状態をもつ オブジェクトとして扱うことに長けているという印象. たとえば A-Buffer の pixel は線型リストだし, Deep Shadow Map の texel は Z から遮蔽量への関数オブジェクトだった. 私にとって画素は 32 ビットの整数値か, せいぜいが実数 (HDR) だから, その富豪的かつエレガントな発想には感動する. 最近は pixel shader の登場で texel に色々な値を押し込むようになってきた. 時代に先駆けてそういう考え方をしているのは ソフトウェア・レンダラ開発者ならではということもできるだろうし, なによりやはり Pixar はすごいのだろう. そもそもプログラマブル・シェーダからして Renderman の十八番だ.

などと思い, 若干の懐古趣味と羨望を交えながら復習を終えるのでした. 継続して参加者募集中です. omo (at) dodgson (dot) org まで御連絡を.