現在、次世代の3Dゲームグラフィックス技術として実用化が進められているものにPRT(Precomputed Radiance Transfer)がある。

PRTは日本語訳では「事前計算・放射輝度・伝搬」ということになり、なにをするものか難解なキーワードとなっているが、現在、近代GPUの活用テーマとしてはもっとも盛んなものの1つであり、近代リアルタイム3Dグラフィックスを語る上ではどうしても避けられないものになりつつある。

今回より、このPRT技術についての基本事項と、最先端のPRT技術の最新動向までを紹介する。

PRTとはリアルタイム大局照明

現在のリアルタイム3Dグラフィックスでは、光源を設定したら基本的にはその光源の光を直接受ける陰影の計算しか行わない手抜きが大前提となっている。

現実世界では、光源からの光が第三者に遮蔽されたり、あるいは光がある物体に当たって反射したその光も、また光源となりうる(二次光源)。しかし、現在のリアルタイム3Dグラフィックスではこうした処理は省略されるか疑似手法(フェイク)で代用されることが多い。フェイクでもそれなりにつじつまが合っているように見えればそれはそれでいいのだが、なにか違和感が残ってしまう局面も少なくはない。

こうした遮蔽や相互反射などを取り扱い、複雑な照明を再現しようとするのが「大局的な照明技術」(Global Illumination : グローバルイルミネーション)という技術/概念だ。

しかし、大局照明は複雑であり計算量も多いため、まじめに実装していたのでは、とてもリアルタイムで動かすのは難しい。

そこで、この大局照明を、複雑な光の伝搬についてはオフライン(非リアルタイム)で時間を掛けて予め計算してしまい、リアルタイムレンダリング時にはその事前計算結果を利用して実現してしまおうというアイディアが登場する。

この1つが「PRT」ということになる。

このPRTが脚光を浴び始めたのは、2002年にSIGGRAPH 2002にて「Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequency Lighting Environments.」(Peter-Pike Sloan)という論文が発表されてからだ。

この開祖的アイディアでは、あるシーンについてPRTを行う際には、光源は動かせるものの「そのシーンに登場しているキャラクタやオブジェクトは一切動かせない」という、リアルタイム3Dグラフィックスにとっては致命的な制約があった。そこで「動かない背景についてのみPRTを使う」という限定条件付きで3Dゲームグラフィックスに応用する例も提唱されたが、メモリ使用量や得られる効果のバランスを考えると実用性は低いと言わざるを得なかった。

しかし、この論文が起爆剤となり、各方面で研究開発が行われるようになった。その甲斐あって、ここ数年の間に、そのシーンをリアルタイムに動かしても適用可能なPRTの技法、いうなれば「動的なPRT」までもが発表されてきたのである。

本連載では、この動的PRTの基礎理論までを紹介するが、いきなり動的PRTに飛躍しても意味不明だと思われるので、最も基本的なPRTである「静的PRT」……すなわち「そのシーンに登場しているキャラクタやオブジェクトは一切動かない」、固定的なシーンにおける静的PRTから順番に見ていくことにしよう。(続く)

PRTの基本概念

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