(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5731566
(24)【登録日】2015年4月17日
(45)【発行日】2015年6月10日
(54)【発明の名称】情報処理装置、制御方法、及び記録媒体
(51)【国際特許分類】
G06T 15/80 20110101AFI20150521BHJP
【FI】
G06T15/80
【請求項の数】13
【全頁数】15
(21)【出願番号】特願2013-90778(P2013-90778)
(22)【出願日】2013年4月23日
(65)【公開番号】特開2014-215720(P2014-215720A)
(43)【公開日】2014年11月17日
【審査請求日】2013年10月31日
(73)【特許権者】
【識別番号】308033283
【氏名又は名称】株式会社スクウェア・エニックス
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】徳吉 雄介
【審査官】
千葉 久博
(56)【参考文献】
【文献】
特開2013−041568(JP,A)
【文献】
”Game Programming Gems 8 日本語版 初版”,株式会社ボーンデジタル,2011年 2月25日,第1版,p.31-36
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00−15/87
G06T 19/00,19/20
G09G 5/00−5/42
(57)【特許請求の範囲】
【請求項1】
3次元シーンを描画に使用する鏡面反射用の間接照明バッファを生成する情報処理装置であって、
前記間接照明バッファを描画する視点パラメータを決定する決定手段と、
前記間接照明バッファよりも低い解像度を有する低解像度間接照明バッファと、生成する前記間接照明バッファの各画素に対応する前記3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報とを取得する取得手段と、
前記取得手段により取得された前記低解像度間接照明バッファを高解像度化することで前記間接照明バッファを生成する生成手段と、を有し、
前記生成手段は、前記高解像度化により生成される前記間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる前記低解像度間接照明バッファの画素に対応するオブジェクトとの、前記決定手段により決定された視点パラメータと各オブジェクトの前記鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成する
ことを特徴とする情報処理装置。
【請求項2】
前記生成手段は、前記類似度に応じて複数の前記生成に用いる画素の画素値を重み付け加算することで、前記高解像度化により生成される前記間接照明バッファの画素の画素値を算出することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記生成手段はさらに、前記高解像度化により生成される前記間接照明バッファの画素の画素値を、該画素に対応するオブジェクトと前記生成に用いる画素に対応するオブジェクトの距離及び深度値に応じて、複数の前記生成に用いる画素の画素値を重み付け加算することで算出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記取得手段は、異なる時間について生成された複数の前記低解像度間接照明バッファを取得し、
前記生成手段はさらに、前記生成に用いる画素が含まれる前記低解像度間接照明バッファが生成された時間に応じて複数の前記生成に用いる画素の画素値を重み付け加算することで、前記高解像度化により生成される前記間接照明バッファの画素の画素値を算出する
ことを特徴とする請求項2または3に記載の情報処理装置。
【請求項5】
前記鏡面反射のローブは、対象のオブジェクトの反射特性で規定される双方向反射分布関数により定義され、
前記類似度は、2つの画素に対応するオブジェクトについての双方向反射分布関数の内積で規定される
ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記生成手段は、2つの画素に対応するオブジェクトについての双方向反射分布関数を近似した球面ガウス関数の内積を求めることで前記類似度を算出することを特徴とする請求項5に記載の情報処理装置。
【請求項7】
3次元シーンを描画した画面を生成する情報処理装置であって、
前記画面を描画する視点パラメータを決定する決定手段と、
前記決定手段により決定された視点パラメータに基づいて、前記画面の各画素に対応する前記3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報を取得する取得手段と、
前記取得手段により取得された前記反射特性及び前記鏡面反射方向の特定に用いる情報を用いて、前記視点パラメータに対応し、かつ前記画面よりも低い解像度を有する少なくとも鏡面反射用の低解像度間接照明バッファを生成する第1の生成手段と、
前記第1の生成手段により生成された前記低解像度間接照明バッファを高解像度化することで、前記画面と同一の解像度を有する鏡面反射用の間接照明バッファを生成する第2の生成手段と、
前記第2の生成手段により生成された前記間接照明バッファを使用し、前記視点パラメータについて前記3次元シーンを描画した前記画面を描画する描画手段と、を有し、
前記第2の生成手段は、前記高解像度化により生成される前記間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる前記低解像度間接照明バッファの画素に対応するオブジェクトとの、前記決定手段により決定された視点パラメータと各オブジェクトの前記鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成する
ことを特徴とする情報処理装置。
【請求項8】
前記第2の生成手段は、前記類似度に応じて複数の前記生成に用いる画素の画素値を重み付け加算することで、前記高解像度化により生成される前記間接照明バッファの画素の画素値を算出することを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記第2の生成手段により生成された前記間接照明バッファのうち、生成に用いられた前記低解像度間接照明バッファの画素との前記類似度が所定の値以下である領域の画素について、前記反射特性及び前記鏡面反射方向の特定に用いる情報を用いて前記画面と同一の解像度で部分的に間接照明バッファを生成し、更新する更新手段をさらに有することを特徴とする請求項7または8に記載の情報処理装置。
【請求項10】
前記描画手段は、少なくとも2段階の描画処理により前記画面を描画し、
前記取得手段は、前記描画手段の前段の描画処理において描画された、後段の描画処理において参照される所定のチャネルの中間バッファから前記反射特性及び前記鏡面反射方向の特定に用いる情報を取得し、
前記描画手段は、前記後段の描画処理において、前記間接照明バッファを使用して前記画面を描画する
ことを特徴とする請求項7乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
3次元シーンを描画に使用する鏡面反射用の間接照明バッファを生成する情報処理装置の制御方法であって、
前記情報処理装置の決定手段が、前記間接照明バッファを描画する視点パラメータを決定する決定工程と、
前記情報処理装置の取得手段が、前記間接照明バッファよりも低い解像度を有する低解像度間接照明バッファと、生成する前記間接照明バッファの各画素に対応する前記3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報とを取得する取得工程と、
前記情報処理装置の生成手段が、前記取得工程において取得された前記低解像度間接照明バッファを高解像度化することで前記間接照明バッファを生成する生成工程と、を有し、
前記生成手段は前記生成工程において、前記高解像度化により生成される前記間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる前記低解像度間接照明バッファの画素に対応するオブジェクトとの、前記決定工程において決定された視点パラメータと各オブジェクトの前記鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成する
ことを特徴とする情報処理装置の制御方法。
【請求項12】
3次元シーンを描画した画面を生成する情報処理装置の制御方法であって、
前記情報処理装置の決定手段が、前記画面を描画する視点パラメータを決定する決定工程と、
前記情報処理装置の取得手段が、前記決定工程において決定された視点パラメータに基づいて、前記画面の各画素に対応する前記3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報を取得する取得工程と、
前記情報処理装置の第1の生成手段が、前記取得工程において取得された前記反射特性及び前記鏡面反射方向の特定に用いる情報を用いて、前記視点パラメータに対応し、かつ前記画面よりも低い解像度を有する少なくとも鏡面反射用の低解像度間接照明バッファを生成する第1の生成工程と、
前記情報処理装置の第2の生成手段が、前記第1の生成工程において生成された前記低解像度間接照明バッファを高解像度化することで、前記画面と同一の解像度を有する鏡面反射用の間接照明バッファを生成する第2の生成工程と、
前記情報処理装置の描画手段が、前記第2の生成工程において生成された前記間接照明バッファを使用し、前記視点パラメータについて前記3次元シーンを描画した前記画面を描画する描画工程と、を有し、
前記第2の生成手段は前記第2の生成工程において、前記高解像度化により生成される前記間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる前記低解像度間接照明バッファの画素に対応するオブジェクトとの、前記決定工程において決定された視点パラメータと各オブジェクトの前記鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成する
ことを特徴とする情報処理装置の制御方法。
【請求項13】
コンピュータを、請求項1乃至10のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、制御方法、及び記録媒体に関し、特に3次元シーン描画に係る照明計算技術に関する。
【背景技術】
【0002】
3次元CG(Three-Dimensional Computer Graphics)は、ゲームや映画に限らず、様々な分野において視覚化表現方法として用いられている。このような3次元CG生成の技術分野では、近年、より写実的な描写、あるいは上質な描画表現に近づけるために様々な手法が提案されている。
【0003】
3次元CGをより写実的な描写とするための表現手法として、大域照明(Global Illumination)による影響を反映させる手法がある。該手法では、1つの描画オブジェクトについて、定義された照明(光源)によって直接生じた陰影を描画するだけでなく、該光源から放出された光が他の描画オブジェクトによって反射されることで現れる間接照明も考慮して陰影を描画することで、よりリアリティ味のある描画表現を提供することができる。
【0004】
一方で大域照明に係る処理は、複雑な光の伝搬を追跡するレイトレーシング手法等を用いるため、一般に計算量が多いことが知られている。このような大域照明をゲームのようなリアルタイムの画面描画が要求される場面で利用するために、様々な効率化手法が提案されている。効率化手法の1つに、所謂遅延レンダリング(Deferred Rendering)がある(特許文献1、非特許文献1)。該手法では、描画範囲に含まれる複数のオブジェクトの各々について照明計算を実行しながら描画するのではなく、前段の描画処理で照明計算を行わずに描画範囲全体について照明計算に用いるジオメトリ(G-Buffer)を描画する。そして、該ジオメトリを利用して最終的な出力画面に必要な照明計算のみを行った後に後段の描画処理を実行して最終出力画面を描画することで、不要な照明計算を排除して効率的に画面生成を行う。
【0005】
また近年では、表示装置の高解像度化(表示領域の多画素化)に伴い、例えば家庭用のゲーム装置には、表示装置の画素数に対応した画面をリアルタイムに描画可能な性能が望まれる。つまり、大域照明に係る処理の計算量は描画する画面の画素数に比例するため、画素数が多くなるほど描画処理に要する時間が増大する。非特許文献2には、最終的な出力画面よりも低い解像度で大域照明演算を行うことで計算量を削減し、その後不足する画素をアップサンプリング処理において補間することで描画処理を効率化する方法を提案している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第5155462号公報
【非特許文献】
【0007】
【非特許文献1】オレス・シィシュコフツォフ(Oles Shishkovtsov)著、「スタルケルにおける遅延シェーディング (Deferred Shading in S.T.A.L.K.E.R.)」、GPUジェムス2(GPU Gems 2),アディソン・ウェスレー(Addison-Wesley)、2005年、pp.143-166
【非特許文献2】ロベール・ヘルツォーク(Robert Herzog)、外3名著、「GPUにおける時空アップサンプリング(Spatio-temporal upsampling on the gpu)」、インタラクティブ3次元グラフィックス及びゲーム 2010論文 エーシーエム・シーグラフ・シンポジウム(Proc. i3D 2010 : ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games)、2011年、p.91−98
【発明の概要】
【発明が解決しようとする課題】
【0008】
非特許文献2のように、低解像度で行った大域照明の演算結果(間接照明バッファ)をアップサンプリングする場合、補間により生成される画素(補間画素)の値は、演算結果を有する周囲の画素(周囲画素)を
・該周囲画素に描画されたオブジェクトの深度値
・該周囲画素に描画されたオブジェクト面の法線ベクトル
・該周囲画素と補間画素との距離
・該周囲画素がサンプリングされた時期
に応じて重み付け加算することで算出されている。
【0009】
遅延レンダリングでは、後段の描画処理が行われる前に、G-Bufferの情報に基づいて間接照明バッファが生成される。具体的には、例えばG-Bufferとして出力された法線やPhong exponent等の反射パラメータの情報を考慮して大域照明演算を行うことで、拡散反射や鏡面反射用の間接照明バッファが生成される。非特許文献2では、これらの間接照明バッファを低解像度で生成した後、上述の重み付けパラメータに基づいて高解像度化することで、最終的な出力画面に使用する間接照明バッファを生成している。
【0010】
しかしながら、法線ベクトルに応じて反射方向が規定される拡散反射と異なり、鏡面反射は視線方向に応じて反射方向が変化するものであるため、上述のような重み付けパラメータでは鏡面反射を好適に再現することができなかった。
【0011】
本発明は、上述の問題点に鑑みてなされたものであり、3次元シーンにおける鏡面反射を、高速かつ好適に再現する情報処理装置、制御方法、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0012】
前述の目的を達成するために、本発明の一態様に係る情報処理装置は、以下の構成を備えることを特徴とする。具体的には情報処理装置は、3次元シーンを描画に使用する鏡面反射用の間接照明バッファを生成する情報処理装置であって、間接照明バッファを描画する視点パラメータを決定する決定手段と、間接照明バッファよりも低い解像度を有する低解像度間接照明バッファと、生成する間接照明バッファの各画素に対応する3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報とを取得する取得手段と、取得手段により取得された低解像度間接照明バッファを高解像度化することで間接照明バッファを生成する生成手段と、を有し、生成手段は、高解像度化により生成される間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる低解像度間接照明バッファの画素に対応するオブジェクトとの、決定手段により決定された視点パラメータと各オブジェクトの鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成することを特徴とする。
【0013】
前述の目的を達成するために、本発明の別の態様に係る情報処理装置は、以下の構成を備えることを特徴とする。具体的には情報処理装置は、3次元シーンを描画した画面を生成する情報処理装置であって、画面を描画する視点パラメータを決定する決定手段と、決定手段により決定された視点パラメータに基づいて、画面の各画素に対応する3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報を取得する取得手段と、取得手段により取得された反射特性及び鏡面反射方向の特定に用いる情報を用いて、視点パラメータに対応し、かつ画面よりも低い解像度を有する少なくとも鏡面反射用の低解像度間接照明バッファを生成する第1の生成手段と、第1の生成手段により生成された低解像度間接照明バッファを高解像度化することで、画面と同一の解像度を有する鏡面反射用の間接照明バッファを生成する第2の生成手段と、第2の生成手段により生成された間接照明バッファを使用し、視点パラメータについて3次元シーンを描画した画面を描画する描画手段と、を有し、第2の生成手段は、高解像度化により生成される間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる低解像度間接照明バッファの画素に対応するオブジェクトとの、決定手段により決定された視点パラメータと各オブジェクトの鏡面反射方向の特定に用いる情報とで規定される視線方向についての鏡面反射のローブの類似度に基づいて生成することを特徴とする。
【発明の効果】
【0014】
このような構成により本発明によれば、3次元シーンにおける鏡面反射を、高速かつ好適に再現することが可能となる。
【図面の簡単な説明】
【0015】
【
図1】本発明の実施形態に係るPC100の機能構成を示したブロック図
【
図2】本発明の実施形態に係るPC100において実行されるゲーム処理を例示したフローチャート
【
図3】本発明の実施形態に係るGPU104が実行する鏡面反射用の間接照明バッファのアップサンプリング処理を例示したフローチャート
【
図5】信用度の低いアップサンプリング処理が行われたと想定される個所を示した図
【発明を実施するための形態】
【0016】
[実施形態]
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、情報処理装置の一例としての、大域照明が適用されたゲーム画面を生成可能なPCに、本発明を適用した例を説明する。しかし、本発明は、鏡面反射用の間接照明バッファから、より高い解像度を有する間接照明バッファを生成することが可能な任意の機器に適用可能である。
【0017】
《PC100の構成》
図1は、本発明の実施形態に係るPC100の機能構成を示すブロック図である。
【0018】
CPU101は、PC100が有する各ブロックの動作を制御する。具体的にはCPU101は、ROM102あるいは記録媒体106に格納された各ブロックの動作プログラムを読み出して実行する。
【0019】
ROM102は、例えば書き換え可能な不揮発性メモリである。ROM102は、PC100が有する各ブロックの動作プログラムに加え、各ブロックの動作に必要な各種パラメータを格納する。RAM103は、揮発性メモリである。RAM103は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データを記憶する格納領域としても用いられる。
【0020】
GPU104は、後述の表示部107に表示するゲーム画面の生成を行う。GPU104は、CPU101より描画命令及びゲーム画面の描画に用いるカメラの位置及び方向の情報(視点パラメータ)を受信すると、該描画命令に係る描画オブジェクトを記録媒体106から読み出し、内蔵する不図示のGPUメモリに格納する。GPU104は、描画オブジェクトをキャッシュメモリに展開した後、所定の演算を行って接続されたVRAM105に描画することで、ゲーム画面を生成する。
【0021】
なお、本実施形態では、リアルタイムにゲーム画面を生成して提供するゲームコンテンツの、ゲーム画面の描画時に行われる大域照明演算について説明する。上述したように、大域照明演算は計算量が多い処理であるため、本実施形態のGPU104は、ゲーム画面の生成に係る描画処理において、2段階の描画処理を含む遅延レンダリングを行い、計算量を低減する。
【0022】
遅延レンダリングでは、描画オブジェクトごとに陰影処理(Shading)→描画の流れをとる所謂Forward Renderingとは異なり、前段の描画処理では陰影処理を行わずに、最終的に生成されるゲーム画面の全体を示すジオメトリについて所定のチャネルの中間バッファ(G-Buffer)を描画する。具体的には前段の描画処理では、ジオメトリについて間接照明(大域照明)や直接照明の演算、あるいは後段の描画処理に用いられるNormalバッファ、Diffuseバッファ、Specularバッファ、及びDepthバッファ等が描画される。またこの他に、照明演算に使用される、ゲーム画面の各画素に対応する描画オブジェクトの反射特性を示すバッファが生成される。反射特性は、例えばBlinn-Phong反射モデルのPhong exponent等の、描画オブジェクトの材質(マテリアル)等に応じて変化する、鏡面反射の鋭さを示すパラメータであってよい。なお、前段の描画処理で生成される各種中間バッファは、最終的に出力するゲーム画面と同一の解像度を有する。
【0023】
また後段の描画処理では、中間バッファに基づいてジオメトリに必要な照明演算及びテクスチャの適用を行うことで、最終的な出力であるゲーム画面を生成する。このように、遅延レンダリングを実行することで、遮蔽により不要となる演算を排除し、ジオメトリについて必要最小限の処理でゲーム画面を生成することができる。
【0024】
なお、本実施形態ではこのような2段階の描画処理によりゲーム画面を生成する遅延レンダリングを行うものとして説明するが、本発明の実施はこれに限られるものではない。即ち、本発明は演算量の低減のために少なくとも2段階の描画処理を行ってゲーム画面を生成する態様において適用されるものであってもよいし、上述したForward Renderingでゲーム画面を生成する態様において適用されるものであってもよい。また、前段の描画処理で生成する中間バッファは上述のバッファに限られるものではなく、他のチャネルのバッファが描画されてもよい。
【0025】
記録媒体106は、例えばHDD等の、PC100に着脱可能に接続される記録装置である。本実施形態では記録媒体106には、ゲームコンテンツの提供に係るゲーム処理のプログラムと、画面の描画処理において用いられる各描画オブジェクトのデータ(モデル、テクスチャ、反射特性の情報等)や、3次元シーンに配置される光源情報等が記録されているものとする。
【0026】
表示部107は、例えばLCD等の表示装置である。表示部107は、PC100と一体となって形成されていてもよいし、PC100の外部に有線あるいは無線で接続されていてよい。
【0027】
《ゲーム処理》
このような構成をもつ本実施形態のPC100において実行される、ゲームコンテンツに係るゲーム画面を生成して表示部107に表示するゲーム処理について、
図2のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、CPU101が、例えば記録媒体106に記憶されている対応する処理プログラムを読み出し、RAM103に展開して実行することにより実現することができる。なお、本ゲーム処理は、例えばゲームコンテンツに係るアプリケーションが起動された際に開始され、1フレームごとに繰り返し実行されるものとして説明する。
【0028】
S201で、CPU101は、不図示のユーザインタフェースを介して入力されたユーザによる操作入力を反映し、ゲーム画面の生成に必要なゲーム進行に係る各種パラメータを変更する。ゲーム進行に係る各種パラメータには、ゲーム画面を生成する視点パラメータや3次元シーン内に存在するキャラクタ等の位置情報等を含む。
【0029】
S202で、CPU101は、S201において変更された視点パラメータについての3次元シーンの描画命令をGPU104に伝送する。
【0030】
S203で、GPU104は、描画命令に従って描画範囲に含まれる3次元シーン内の描画オブジェクトを特定し、対応するデータを用いて前段の描画処理を実行し、所定のチャネルの中間バッファ(G-Buffer)を描画する。本実施形態で描画される中間バッファは、上述したようにNormalバッファ、Diffuseバッファ、Specularバッファ、Depthバッファ、及びゲーム画面の各画素に対応する描画オブジェクトのPhong exponentを記録したバッファ(反射特性バッファ)であるものとする。なお、対応するデータは、例えば初めて描画される際にGPU104により記録媒体106から読み出され、GPUメモリに格納されるものとする。
【0031】
S204で、GPU104は、生成するゲーム画面よりも低い解像度を有する間接照明バッファを生成する。間接照明バッファは、ray tracing、voxel cone tracing等の大域照明演算を行う手法を用いて生成される。間接照明バッファは、上述したように反射の種類によってその特性が異なるため、本実施形態では拡散反射用及び鏡面反射用のそれぞれについて生成されるものとする。なお、本発明は鏡面反射用の間接照明バッファをアップサンプリングにより生成した場合の再現度の低下を改善するものであるため、以下の説明では鏡面反射用の間接照明バッファについて主に説明する。拡散反射用の間接照明バッファについては、従来のように法線ベクトル等に応じた重み付け加算によりアップサンプリングにおける画素補間が行われてよい。
【0032】
S205で、GPU104は、S204において生成した低解像度の間接照明バッファをアップサンプリングし、ゲーム画面と同一の解像度を有する間接照明バッファを生成するアップサンプリング処理を実行する。
【0033】
〈アップサンプリング処理〉
ここで、本ステップで実行されるアップサンプリング処理のうち、鏡面反射用の間接照明バッファのアップサンプリング処理について、
図3のフローチャートを用いて詳細を説明する。
【0034】
S301で、GPU104は、アップサンプリングにより生成される画素のうち、まだ画素値の算出が完了していない画素(対象画素)を選択する。
【0035】
S302で、GPU104は、低解像度の鏡面反射用の間接照明バッファ(低解像度間接照明バッファ)の画素から、対象画素の画素値の生成に参照する画素(参照画素)を特定する。参照画素は、例えば生成する間接照明バッファにおいて対象画素を中心とする所定の領域に含まれる画素のうち、低解像度間接照明バッファに対応画素が存在する画素であってよい。
【0036】
S303で、GPU104は、参照画素の各々について、対象画素との鏡面反射のローブの類似度に対応する重み係数を算出する。
【0037】
反射のローブは、各画素に対応する描画オブジェクトの物体表面における反射特性を表す双方向反射分布関数(BRDF:Bidirectional Reflectance Distribution Function)により規定される。物体表面がランバート面のように一様に拡散される反射特性を示す場合はBRDFは定数となる。しかしながら、鏡面反射のように視点に依存して反射特性が変化する場合はBRDFはそれぞれ視線方向を考慮する必要がある。
【0038】
ところで、BRDFで規定されるローブの類似度を、2つの画素に対応するオブジェクト表面におけるBRDFの正規化した分布における内積として定義するものとすると、BRDFの内積に必ずしも解析解があるとは限らないという問題がある。このため、本実施形態では内積やノルムの解析解が与えられている球面ガウス関数(spherical Gaussian)に近似可能なBRDFモデルを使用することでローブの類似度を算出する。特に、voxel cone tracingにより大域照明演算を行う場合、使用されるBRDFはガウス分布に近似可能であることが前提となっているため、本実施形態に記載の方法と親和性は高い。しかしながら、本発明の実施はこれに限られるものではなく、2つの画素に対応するオブジェクト表面における鏡面反射のローブの類似度を算出可能なものであれば実施可能である。即ち、本発明は、現存のBRDFの内積を得る近似手法が適用可能なケースに限られるものではなく、ローブの類似度を定量的に与える手法が適用可能なケースについて実施可能である。
【0039】
以下、球面ガウス関数に近似可能なBRDFについて、鏡面反射のローブの類似度に対応する重み係数を与える重み関数の導出について説明する。
【0040】
まず入射方向ωから入射し、視線方向ω
oに反射される反射のBRDF:f(ω
o, ω)は、入射方向と反射方向(視線方向)のhalfway vector:ω
h及び法線nに関する分布関数を有する。このような分布関数のいくつかは、文献「All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance」に記述されるように、
として球面ガウス関数に近似して表現できる。さらに、該球面ガウス関数を球面ワーピングにより入射方向ωに関する分布に変換すると、
となる。ここで、ω
rは完全鏡面反射する方向であり、視線方向と法線を用いて
として規定される。
【0041】
本実施形態では、対象画素i及び参照画素jについてのBRDFを
と近似し、鏡面反射のローブの類似度を、正規化した分布におけるこれらの内積として規定し、これを重み関数として使用する。
【0042】
球面ガウス関数は、
で定義され、該式におけるξが
図4に示すようなローブの軸ベクトル、λがマテリアルに依存するローブの鋭さを示し、μがローブの振幅を示している。球面ガウス関数の内積の解析解は
として与えられ、該内積からノルムも
として与えられる。
【0043】
即ち、対象画素i及び参照画素jについての重み関数w
i,jは、これらの式より
として導出される(0≦w
i,j≦1)。
【0044】
つまり、対象画素及び参照画素について、反射特性バッファのPhong exponentを変換して得られた鋭さλと、視点パラメータと各画素に対応するオブジェクト面の3次元的位置及びその法線ベクトルにより規定される完全鏡面反射する方向とから、鏡面反射のローブの類似度である重み関数を算出することができる。なお、対応するオブジェクト面の3次元的位置は、視点パラメータとDepthバッファ、該面の法線ベクトルはNormalバッファから取得できる。なお、対応するオブジェクト面の3次元的位置は視点パラメータとDepthバッファから算出される必要はなく、例えば3次元的位置を示す別のバッファをG-Bufferとして描画し、それを利用するものとしてもよい。
【0045】
GPU104は、該重み関数に従って各参照画素について重み係数を算出し、処理をS304に移す。
【0046】
S304で、GPU104は、S303において算出した各参照画素についての重み係数を用いて、アップサンプリングにより生成される対象画素の画素値を算出する。具体的には対象画素の画素値S
iは、各参照画素の画素値S
jを用いて
として算出できる。即ち、本アップサンプリング処理では、鏡面反射のローブの類似度に応じて対象画素への参照画素の反映度を変更することができるため、法線ベクトルの類似度に応じて補間を行う従来手法に比べて、より好適な鏡面反射用の間接照明バッファを生成することができる。なお、本実施形態では発明の理解のために、Bilateral upsamplingの補間演算のうちの、鏡面反射のローブの類似度に基づく重み付け演算のみを説明するが、この他にも上述したような各画素に対応する描画オブジェクトの距離及び深度に応じた重み付け演算を考慮してもよい。
【0047】
S305で、GPU104は、アップサンプリングにより生成される画素のうち、まだ画素値の算出が完了していない画素が存在するか否かを判断する。GPU104は、まだ画素値の算出が完了していない画素が存在すると判断した場合は処理をS301に戻し、存在しないと判断した場合は本アップサンプリング処理を完了し、ゲーム処理のS206に処理を移す。
【0048】
なお、本実施形態のアップサンプリング処理では説明を簡単にするため、対象画素を順に選択して画素値の算出を行うものとして説明したが、本アップサンプリング処理はGPU104の複数の演算コアにより並列実行されてもよいことは容易に理解されよう。
【0049】
S206で、GPU104は、G-Bufferを参照し、必要なデカルテクスチャの適用、直接照明演算処理を行い、ゲーム画面を描画する(後段の描画処理の完了)。
【0050】
S207で、CPU101は、GPU104によりVRAM105に描画されたゲーム画面を表示部107に伝送して表示させ、本ゲーム処理を完了する。
【0051】
このように、本実施形態のゲーム処理では、鏡面反射用の間接照明バッファの生成を
1.低い解像度で大域照明演算を行うことで演算量を低下させ、
2.アップサンプリング時に各描画オブジェクトの反射特性に応じた鏡面反射のローブ
の類似度に応じて補間する
ことができるため、好適に鏡面反射を再現した間接照明バッファを得ることができる。
【0052】
なお、対象画素の生成に参照された参照画素についての重み係数が、いずれも非類似と判断する所定の値以下である場合は、補間により対象画素の画素値を算出することが好ましくないと考えられる。例えば
図5のように各画素の生成に用いられた参照画素の重み係数の総和を示した分布において、該総和が所定の値以下となる領域(図において黒に近い色味)については、好適に対応するオブジェクト面における鏡面反射を再現できておらず、信用度が低いと考えられる。このため、低解像度ではなくゲーム画面の解像度で、あるいは低解像度間接照明バッファを生成した解像度よりも高い解像度で追加サンプリング(大域照明演算)を行うことで、より正しい値に更新してもよい。なお、
図5の例ではアップサンプリングにより生成される画素についての参照画素は同数であるものとし、重み係数の総和を示した分布で追加サンプリングの有無を判断するものとして説明したが、判断に使用する分布の生成基準がこれに限られないことは容易に理解されよう。
【0053】
このように鏡面反射のローブの類似度を示した重み係数を用いて追加サンプリングの有無を判断することで、より正確な鏡面反射用の間接照明バッファを得ることができる。即ち、アップサンプリング処理では補間処理を行うため、従来の法線ベクトルを使用する手法のように適切な重み付けが行われなかった場合には、得られる間接照明バッファに不整合が生じる。このようにして生じた不整合には、検出が容易なエイリアシングやフリッカリングも含まれるが、検出が困難あるいは不可能なボケも含まれる。つまり、ボケが生じた、従来手法では不整合を検出して追加サンプリングする判断に至らなかった領域についても、上述の重み係数の分布を用いることで検出し、画質を向上させることができる。
【0054】
また、本実施形態では1つの低解像度間接照明バッファから、ゲーム画面の描画に用いる間接照明バッファをアップサンプリングにより生成するものとして説明したが、参照される低解像度間接照明バッファは1つに限定される必要はない。即ち、ラウンドロビン式に各々サンプリング位置を変更しながら複数のフレームにおいてサンプリングされた低解像度間接照明バッファをアップサンプリングに使用してもよい。この場合、サンプリングした時期に応じて適用される重み係数を異ならせる(例えば生成されたフレームが古いほど係数を小さく)ことで、視点移動や光源移動を考慮しながら重み付け演算に使用することができる。なお、このような時間方向の低解像度間接照明バッファを使用する場合、複数の低解像度間接照明バッファを保持しておく必要はない。つまり、例えばゲーム画面と同一解像度を有するバッファを用意しておき、アップサンプリング処理後に現フレームについて生成した低解像度間接照明バッファを用いて対応画素を更新したものを次フレームの処理で参照するようにしてよい。
【0055】
以上説明したように、本実施形態の情報処理装置は、3次元シーンにおける鏡面反射を、高速かつ好適に再現することができる。具体的には情報処理装置は、間接照明バッファよりも低い解像度を有する低解像度間接照明バッファと、生成する間接照明バッファの各画素に対応する3次元シーン内のオブジェクトの反射特性及び該オブジェクトの位置における鏡面反射方向の特定に用いる情報とを取得する。そして低解像度間接照明バッファを高解像度化することで間接照明バッファを生成する。このとき情報処理装置は、高解像度化により生成される間接照明バッファの画素を、少なくとも、該画素に対応するオブジェクトと該画素の生成に用いる低解像度間接照明バッファの画素に対応するオブジェクトとの鏡面反射のローブの類似度に基づいて生成する。
【0056】
[その他の実施形態]
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。また本発明に係る情報処理装置は、コンピュータを情報処理装置として機能させるプログラムによっても実現可能である。該プログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供/配布することができる。