現在、次世代の3Dゲームグラフィックス技術として実用化が進められているものにPRT(Precomputed Radiance Transfer)がある。 PRTは日本語訳では「事前計算・放射輝度・伝搬」ということになり、なにをするものか難解なキーワードとなっているが、現在、近代GPUの活用テーマとしてはもっとも盛んなものの1つであり、近代リアルタイム3Dグラフィックスを語る上ではどうしても避けられないものになりつつある。 今回より、このPRT技術についての基本事項と、最先端のPRT技術の最新動向までを紹介する。 PRTとはリアルタイム大局照明 現在のリアルタイム3Dグラフィックスでは、光源を設定したら基本的にはその光源の光を直接受ける陰影の計算しか行わない手抜きが大前提となっている。 現実世界では、光源からの光が第三者に遮蔽されたり、あるいは光がある物体に当たって反射したその光も、また光源
球面調和関数を使ってキューブマップを近似してみました。 下の図はかなり手抜きアリアリで適当に作ってます。 SHを5次まで計算して,圧縮画像が出力されるようにプログラムを作りました。 下図は,元画像と球面調和関数を使って近似した画像を比較したものです。 最初のセットがPaul Debevecさんのとこから持ってきた画像で,次のセットは以前XNAのサンプルで使ったことのあるTerragen使って作った画像です。 さて,近似データの作成ですが…それほど難しくはありません。 SH投影して,球面調和関数のスケーリング係数を求めます。あとはこの求まったスケーリング係数を使って球面調和関数の値をスケーリング倍して,足し合わせてやれば近似できます。トライゼットの西川さんが書かれている記事に説明があるので【コラム】3Dグラフィックス・マニアックス(68)事前計算放射輝度伝搬(PRT)~PRTの基本。静的PR
そろそろ,GI系もまともに勉強しなきゃヤヴァイんじゃないかと思ったので,まずはSHからお勉強です。 プログラム的にはXNAで実装したものとほぼ同じものです。 球面調和関数ですが,「いったいこの難しそうな響きの関数は何につかうの?」と思われるでしょう。球面調和関数は,レンダリング方程式を近似して解く際に用いられたりします。 まずはレンダリング方程式から…。 レンダリング方程式は,その名の通りレンダリングを司る方程式です。この方程式は1986にJames Kajiyaによって発表された"The Rendering Equation"という論文に書かれているものだそうです。この論文発表以降,レンダリング方程式の解を正確に近似できるということが,GI(Global Illumiation:大局照明)の定義として用いられるようになったそうです。 GI系の論文を見るとレンダリング方程式がよく出てくるの
SPHERICAL HARMONIC LIGHTING Spherical Harmonic Lighting: The Gritty Details Robin Green, R&D Programmer, Sony Computer Entertainment America robin_green@playstation.sony.com January 16, 2003 Introduction Spherical Harmonic lighting (SH lighting) is a technique for calculating the lighting on 3D models from area light sources that allows us to capture, relight and display global illumination sty
カナダのウォータールー大学でコンピュータ・サイエンスの修士号を取得した後、Max-Planck-Institut Informatik(MPII)の博士課程に進んだKautz氏は、ここで正真正銘のリアルタイム・レンダリング研究に取り組みはじめた。この時期のリアルタイム・レンダリングは、GPUなどを導入して従来のソフトウェアが行ってきた“フォトリアリスティック・レンダリング”に相当する質の高いレンダリングを、さらに高速化することを目指すようになっていた。したがって、これまでソフトウェアを前提にして考案されてきたフォトリアリスティック・レンダリングの技法を、どのようにしてGPUに適した形に作り変えるかが鍵となっていた。 そのための方法として当時主流になっていたものの1 つに、環境マップを用いたイメージベースト・ライティングがあった。この方法における環境マップは環境光を表しており、環境マップの各
■何をやっているの 今回の方法は、環境マップを適当な係数を掛けて平均することにより入射光をSH展開して扱いやすくしておき、後は法線ベクトルからコサイン項(max(N.ω,0))のSH展開を求め、両者の積を足すことによって、拡散光を導出します。 数式で説明すれば、拡散光に関するレンダリング方程式 の入射光Liに関して、SH展開 を施すと(これは頑張ればリアルタイムで可能である)、レンダリング方程式は のように変形できる。ここで、積分された部分を1つにまとめてしまえば、 と、ラディアンスを単純な積和の形で書くことができる。 これは、シェーダで計算可能な量である。 Almは、 である。この量は、lm以外には、法線ベクトルNにしか依存しないので、あらかじめ計算しておくことが可能である。今回は、法線ベクトルを反射ベクトルとみなすスフィアマップ に、テーブルとしてその値を埋め込んだ。ここで、赤はl=
~ Precomputed Diffuse Radiance Transfer ~ 下の画像をクリックすると、影が動くアニメーションが見られます(注意:3.2MB)。 ■はじめに ということで、PRTです。PRTとは、Peter-Pilke Sloan らがSIGGRAPH 2002 の論文Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequency Lighting Environmentsで提案したグローバルイルミネーションを高速に反映させる手法です。物体表面から反射される光を任意の入射光に関してあらかじめ求めておいて、その結果を球面調和関数の係数として展開することによって、現在のGPUにとってはそれほど負荷を掛けることなくグローバルイルミネーションを実現します。 ただし、ここでは拡散光
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く