【レポート】

CEDEC2005 - マイクロソフト、Game Developers Dayで「XNA」を詳細解説

4 事前計算ライティング技術(2)

    西川善司  [2005/10/01]

    続いて紹介されたのは「双方スケール放射輝度伝搬(BSRT:Bi-Scale Radiance Transfer)」だ。

    細かい凹凸などの自己遮蔽まではサポートする、バンプマッピングの進化形のようなテクスチャマッピングに「双方行テクスチャ関数(BTF:Bidirectional Texture Functions)」というものがある。簡潔に言うとBSRTはBTFにまでPRTを適用するもの……というイメージになる。

    BTFは光源の位置や方向に応じてセルフシャドウまでが出るバンプマッピングみたいな技術。

    具体的にはPRTで頂点単位のライティングを行い、その頂点単位で伝搬した放射輝度をBTFに適用する……という流れになる。なお、BTFも事前に、微細な凹凸の相互マスク効果に配慮して、なおかつ局所的な放射輝度伝搬に適した放射輝度伝搬テクスチャ(RTT:Radiance Transfer Texture)の形式に積分変換しておく。

    なお、PRTの拡張形であるBSRTはPRTの弱点を継承しているのに加えて、PRTと比べるとピクセルシェーダへの負荷が大きいために重いという弱点がある。

    PRTを適用しやすいようにBTFを事前にRTTへ変換しておく。

    BTFのみを適用した鳥モデル。微細な凹凸がローカルな影付きで表現されている。

    PRTのみを適用した鳥モデル。その材質を表現する陰影がグローバルな影付きで表現されている

    BTF+PRTによるBSRT。ローカル、およびグローバルな陰影が表現できている。鳥の尻尾に鳥自身の影が投射されているセルフシャドウ表現に注目。その柔らかい光の中でミクロな凹凸表現も両立されている。

    ところで、PRTの問題点の1つに事前計算情報を格納したテクスチャデータが大きくなるというのがある。ビデオメモリの圧迫は実用上問題があるため、圧縮を考えなければならない。

    ロッシーな非可逆圧縮になるが、Sloan氏が例として挙げたのは圧縮メソッドとして一般的な「ベクトル量子化(VQ:Vector Quantization)」「主成分分析(PCA:Principle Component Analysus)」「クラスタ化主成分分析(CPCA:Clustered Principle Component Analysus)」の3つ。VQ+PCAともいうべきCPCAが、同一負荷条件で比較すると最も良いレンダリング結果を示すことがデモされた。実際にどのくらいの圧縮率でどの程度の品質になるかはケースバイケースで、なおかつ調整も可能だとしている。

    同一レンダリングコストで比較した各圧縮方式によるPRTの画質の違い

    この他、PRT関連の最新研究として、PRTに法線マッピング(法線マップを活用したバンプマッピング)を適用した例、PRTをモデルのローカルな変形に対応させたLDPRT(Local,Deformable PRT)を紹介した。

    ローカルに変形可能なPRTの概念。事前計算したPRTデータを変形に連動した回転処理を行うことで対応する。

    左はオリジナルのライティング状態。中央はモデルを変形してレイトレーシングを行って求めた結果。右はLDPRTによる結果。レイトレーシングの結果にかなり近く、見た目的な不自然さはない。

    7月末に公開されたDirectX SDKの最新版にはLDPRTのデモが同梱されている。コウモリの翼の向こう側の光が伝搬して透けて見えるが、この翼が変形しても破綻しないで自然なライティングが維持されているのが分かる。

    PRTはプログラマブルシェーダ2.0時代から急激に注目を集め始めたテーマで、現行GPUで、ギリギリ、リアルタイムで動作はするため、関連研究が盛んだ。しかし(将来的にはどうなるか分からないが)、現在は、まだまだ制限も多いため、多くの3Dゲームに実装されて日の目を見るまでにはもうしばらく掛かりそうだ。

    (トライゼット西川善司)

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン