以下、添付された図面を参照しながら、例示のためだけの実施形態について詳細に説明する。下記実施形態は、技術的思想を具体化するためだけのものであり、権利範囲を制限したり限定したりするものではないことは言うまでもない。詳細な説明及び実施形態から、当該技術分野に属する当業者であるならば、容易に類推することができるものは、権利範囲に属すると解釈される。
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部構成要素または一部段階は、含まれないこともあり、または追加的な構成要素または段階をさらに含んでもよいと解釈されなければならない。
また、本明細書で使用される「第1」または「第2」のように序数を含む用語は、多様な構成要素についての説明に使用することができるが、かような用語は、1つの構成要素を他の構成要素からの区別であったり、説明の便宜であったりする目的で使用され得る。
また、本明細書で言及されるデバイス100、400、1100、1500、1600、1700、2100は、デスクトップコンピュータ、ノート型パソコン、スマートフォン、PDA(personal digital assistant)、携帯型メディアプレイヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを例として挙げることができるが、それらに制限されるものではない。また、デバイス100、400、1100、1500、1600、1700、2100は、仮想現実(virtual reality)を実現するためのデバイスにもなる。一例として、デバイス100、400、1100、1500、1600、1700、2100は、HMD(head mounted display)にもなる。すなわち、デバイス100、400、1100、1500、1600、1700、2100は、コンテンツのディスプレイのためのグラフィックスプロセッシング機能を有する装置であり、デバイス100、400、1100、1500、1600、1700、2100の範疇には、多様な装置が含まれてもよい。
また、本明細書で言及されるGPU(graphics processing unit)110、410、1110、1530、1630、1730、2150は、グラフィック専用プロセッサであり、三次元イメージ上の三次元客体を、ディスプレイ用の二次元イメージにレンダリングするために具現化されたハードウェアでもある。例えば、GPU110、410、1110、1530、1630、1730、2150は、シェーディング、ブレンディング、イルミネーティングのような多様な機能、及びディスプレイされるピクセルに係わるピクセル値を生成するための多様な機能を遂行することもできる。
また、本明細書で言及されるメモリ120、420、1120、1540、1640、1740、2160は、デバイス100、400、1100、1500、1600、1700、2100内で処理される各種データを保存するハードウェアであり、例えば、メモリ120、420、1120、1540、1640、1740、2160は、GPU110、410、1110、1530、1630、1730、2150で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ120、420、1120、1540、1640、1740、2160は、GPU110、410、1110、1530、1630、1730、2150によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120、420、1120、1540、1640、1740、2160は、DRAM(dynamic random access memory)・SRAM(static random access memory)のようなRAM(random access memory)、ROM(read only memory)、EEPROM(electrically erasable and programmable read only memory)、CD(compact disc)−ROM、ブルーレイ(登録商標(Blu-ray))、他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid state drive)またはフラッシュメモリを含み、さらにデバイス100、400、1100、1500、1600、1700、2100にアクセスされる外部の他のストレージデバイスを含んでもよい。
また、本明細書で言及されるバス130、430、1130、2170は、デバイス100、400、1100、1500、1600、1700、2100内のハードウェア間でデータを送受信することができるように、ハードウェアを連結させるハードウェアであり、バス130、430、1130、2170は、例えば、PCI(peripheral component interconnect)バス、PCI Expressバスのような多様な種類を含んでもよい。
また、本明細書で言及されるGPU110、410、1110、1530、1630、1730、2150は、両眼視差映像(binocular disparity image)に係わるレンダリングを行うことができる。すなわち、GPU110、410、1110、1530、1630、1730、2150は、両眼視差映像を示すために、両眼視差を有する第1映像及び第2映像それぞれに対するレンダリングを行うことができる。例えば、第1映像は、左目(left eye)に係わる映像、第2映像は、右目(right eye)に係わる映像でもある。以下では、説明の便宜性のために、両眼視差を有する第1映像及び第2映像を、第1映像及び第2映像と縮約して表現する。
以下では、図面を参照し、本発明の実施例について詳細に説明する。
図1は、一実施形態によるデバイス100に係わるブロック図を示している。
デバイス100は、一実施形態によって、GPU110、メモリ120及びバス130を含んでもよい。図1に図示されたデバイス100は、本実施形態に係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
GPU110は、一実施形態によって、第1映像に対するレンダリングを行うことができる。GPU110は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度情報を生成することができる。第1映像の深度情報は、第1映像のピクセルそれぞれの深度値を含んでもよい。例えば、第1映像の深度情報は、第1映像の深度バッファ(depth buffer)にもなる。また、GPU110は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラー情報を生成することができる。第1映像のカラー情報は、第1映像の各ピクセルのカラー値を含んでもよい。例えば、第1映像のカラー情報は、第1映像のカラーバッファ(color buffer)にもなる。
メモリ120は、一実施形態によって、第1映像に対するレンダリング結果として生成される第1映像の深度情報を保存することができる。また、一実施形態によって、メモリ120は、第1映像に対するレンダリング結果として生成される第1映像のカラー情報を保存することができる。
GPU110は、一実施形態によって、メモリ120に保存された第1映像の深度情報またはカラー情報に基づいて、再投影(reprojection)を行うことができる。再投影は、第1映像のピクセルと対応する第2映像の一部ピクセルを決定し、第2映像の一部ピクセルのピクセル値を、第1映像のピクセルのピクセル値であるように決定することを意味する。ピクセル値の例としては、ピクセルが有する深度値またはカラー値にもなる。一実施形態によって、再投影は、第1映像の深度情報及びカラー情報に基づいて、オクルージョンマップ(occlusion map)、及び第2映像のカラーバッファを生成する内容を含んでもよい。また、再投影は、第1映像の深度情報及びカラー情報に基づいて、第2映像の深度バッファ、及び第2映像のカラーバッファを生成する内容を含んでもよい。
第1映像が第1視点を基準に客体をレンダリングした映像であり、第2映像が第2視点を基準に同一客体をレンダリングした映像である場合、客体の所定部分が第1映像の第1ピクセルで見られ、同一客体の所定部分が第2映像の第2ピクセルで見られるならば、第1映像の第1ピクセルと、第2映像の第2ピクセルは、互いに対応すると見られる。例えば、第1視点が左目であり、第2視点が右目である場合、第1映像の(x,y)座標を有するピクセルと対応する第2映像のピクセルの座標は(x+d,y)にもなる。すなわち、第1映像のピクセルと対応する第2映像のピクセルは、x軸上で変化量dほど差を有することができる。また、第1視点では見える客体が、第2視点では見えないこともあるために、第1映像の全てのピクセルが、第2映像のピクセルと対応するものではない。すなわち、第1映像のピクセルと対応関係を有する第2映像のピクセルは、第2映像の一部ピクセルにもなる。従って、第1映像のピクセルと対応関係を有する第2映像のピクセルが、第2映像の一部ピクセルであるならば、第2映像の他の一部ピクセルは、第1映像のピクセルと対応関係を有さないピクセルにもなる。
一実施形態によって、GPU110は、第1映像の深度情報に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができる。さらに具体的な実施形態は、以下、図2で説明する。
図2A及び図2Bは、GPU110が、第1映像のピクセルと対応する第2映像のピクセルを決定する実施形態を示している。
図2Aは、第1カメラ視点212を基準にレンダリングされた第1映像214を示す。図2Bは、第2カメラ視点222を基準にレンダリングされた第2映像224を示す。例えば、第1カメラ視点212は、左目にもなり、第1映像214は、左目映像にもなる。また、第2カメラ視点222は、右目にもなり、第2映像224は、右目映像にもなる。図2Aによれば、深度値zを有する客体216は、第1映像214のβピクセルで見られるので、第1映像214のβピクセルの座標は、(x’,y,z)と表現される。
次に、GPU110は、第1カメラ視点212及び第2カメラ視点222に係わる情報、及びβピクセルの座標情報に基づいて、βピクセルと対応する第2映像224のαピクセルを決定することができる。すなわち、図2Aの客体216と同一客体218が第2映像224のαピクセルで見られる。一実施形態によって、GPU110は、下記数式(1)を介して、βピクセルと対応する第2映像224のαピクセルを決定することができる。
数式(1)において、b及びfは、第1カメラ視点212及び第2カメラ視点222に係わる情報であり、bは、baselineを意味し、fは、focal lengthを意味する。また、zは、第1映像214のβピクセルの深度値を意味し、dは、βピクセルのx座標の変化量を示す。従って、GPU110は、数式(1)を介してdを計算することができ、第2映像224のαピクセルの座標として、(x,y,z)=(x’−d,y,z)を決定することができる。すなわち、GPU110は、第2映像224に対するレンダリングを行わず、カメラ視点に係わる情報、及び第1映像214のβピクセルの深度値を利用して、βピクセルと対応する第2映像224のαピクセルを決定することができる。従って、GPU110は、第1映像214のβピクセルの深度値またはカラー値を、第2映像224のαピクセルの深度値またはカラー値であるように決定することができる。
また、図1のGPU110は、一実施形態によって、再投影を行い、オクルージョンマップを生成することができる。オクルージョンマップは、第1映像のピクセルと対応する第2映像の一部ピクセルと、第1映像のピクセルと対応しない第2映像の他の一部ピクセルとを区分するためのマップを意味する。従って、GPU110は、第1映像の深度情報に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができ、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。
また、一実施形態によって、GPU110は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。任意の値は、ユーザによる既設定値でもある。次に、GPU110は、第2映像のカラーバッファに基づいて、任意の値に決定された第2映像の他の一部ピクセルを確認することにより、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。
一実施形態によって、メモリ120は、GPU110によって生成されたオクルージョンマップ、または第2映像のカラーバッファを保存することができる。
GPU110は、一実施形態によって、メモリ120に保存されたオクルージョンマップまたはカラーバッファに基づいて、第2映像のピクセルに係わる選択的レンダリングを行うことができる。一実施形態によって、GPU110は、メモリ120に保存されたオクルージョンマップに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。オクルージョンマップでは、第1映像のピクセルと対応する第2映像の一部ピクセル、第1映像のピクセルと対応しない第2映像の他の一部ピクセルが区分されているために、GPU110は、オクルージョンマップによって、第2映像の一部ピクセルについては、ラスタ化(rasterization)を行わず、第2映像の他の一部ピクセルについては、ラスタ化を行うことができる。ラスタ化に続き、GPU110は、第2映像の他の一部ピクセルに対して、ピクセルシェーディング(pixel shading)のようなさらなる演算を行うことができ、結果として、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、GPU110は、メモリ120に保存済みの第2映像のカラーバッファを読み取ることができ、GPU110は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、読み出した第2映像のカラーバッファを修正することができる。すなわち、GPU110は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、GPU110は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
一実施形態によって、GPU110は、再投影を行い、第1映像のピクセルと対応する第2映像の一部ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第2映像の他の一部ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファを生成することができる。すなわち、GPU110は、第1映像のピクセルと対応する第2映像の第1ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第1映像のピクセルと対応しない第2映像の第2ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファを生成することができる。所定の値は、ユーザによって既設定の初期値(clear value)でもある。同様に、GPU110は、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。
メモリ120は、一実施形態によって、GPU110によって生成された第2映像の深度バッファ及びカラーバッファを保存することができる。
GPU110は、一実施形態によって、メモリ120に保存された第2映像の深度バッファ及びカラーバッファに基づいて、第2映像のピクセルに係わる選択的レンダリングを行うことができる。一実施形態によって、GPU110は、メモリ120に保存された第2映像の深度バッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。GPU110は、一実施形態によって、メモリ120に保存された第2映像の深度バッファを利用して、第1映像のピクセルと対応する第2映像の一部ピクセル、及び第1映像のピクセルと対応しない第2映像の他の一部ピクセルに係わる深度テスト(Z−test)を行うことができる。メモリ120に保存された第2映像の深度バッファにおいては、第2映像の一部ピクセルが第1映像のピクセルの深度値を有するために、第2映像の一部ピクセルは、深度テストを通過することができず、結果として、GPU110は、深度テスト以後の過程において、第2映像の一部ピクセルに係わる演算を行わない。また、メモリ120に保存された第2映像の深度バッファにおいては、第2映像の他の一部ピクセルが、初期値のような所定値を有するために、第2映像の他の一部ピクセルは、深度テストを通過し、GPU110は、深度テスト以後の過程において、第2映像の他の一部ピクセルに係わる演算を続けて行うことができる。一実施形態によって、GPU110は、深度テストを通過した第2映像の他の一部ピクセルに対して、ピクセルシェーディングを行うことができ、結果として、GPU110は、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、GPU110は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、メモリ120に保存済みの第2映像のカラーバッファを修正することができる。すなわち、GPU110は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、GPU110は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
従って、デバイス100は、第2映像をレンダリングする場合、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができるが、演算量を減少させ、デバイス100の性能を高めることができる。すなわち、デバイス100は、第1映像のピクセルと対応する第2映像の一部ピクセルについては、再投影を介してピクセル値を獲得することができ、第2映像の他の一部ピクセルについては、選択的レンダリングを行ってピクセル値を獲得することができるので、第2映像の全てのピクセルに対してレンダリングを行う場合より演算量を減少させることができる。
図3は、一実施形態による、デバイス100が両眼視差を有する第1映像及び第2映像に対するレンダリングを行うフローチャートを示している。
図3に図示された方法は、図1のデバイス100によって遂行され、重複説明については省略する。
段階S310において、デバイス100は、一実施形態によって、第1映像に対するレンダリングを行うことができる。デバイス100は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度情報を生成することができる。第1映像の深度情報は、第1映像の深度バッファにもなる。また、デバイス100は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラー情報を生成することができる。第1映像のカラー情報は、第1映像のカラーバッファにもなる。
段階S320において、デバイス100は、一実施形態によって、レンダリング結果として生成される第1映像の深度情報に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定し、再投影を行うことができる。一実施形態によって、再投影は、第1映像の深度情報及びカラー情報に基づいて、オクルージョンマップ、及び第2映像のカラーバッファを生成する内容を含んでもよい。また、再投影は、第1映像の深度情報及びカラー情報に基づいて、第2映像の深度バッファ、及び第2映像のカラーバッファを生成する内容を含んでもよい。
一実施形態によるデバイス100は、再投影を行い、オクルージョンマップを生成することができる。すなわち、デバイス100は、第1映像の深度情報に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができ、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。
また、デバイス100は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。次に、デバイス100は、第2映像のカラーバッファに基づいて、所定値に決定された第2映像の他の一部ピクセルを確認することにより、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。
デバイス100は、生成されたオクルージョンマップ、または第2映像のカラーバッファを内部メモリに保存することができる。
他の実施形態によるデバイス100は、再投影を行い、第1映像のピクセルと対応する第2映像の一部ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第2映像の他の一部ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファを生成することができる。すなわち、デバイス100は、第1映像のピクセルと対応する第2映像の第1ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第1映像のピクセルと対応しない第2映像の第2ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファを生成することができる。同様に、デバイス100は、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。
デバイス100は、生成された第2映像の深度バッファ、または第2映像のカラーバッファを内部メモリに保存することができる。
段階S330において、一実施形態によるデバイス100は、再投影に基づいて、第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。
一実施形態によるデバイス100は、オクルージョンマップに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。オクルージョンマップにおいては、第1映像のピクセルと対応する第2映像の一部ピクセル、第1映像のピクセルと対応しない第2映像の他の一部ピクセルが区分されているために、デバイス100は、オクルージョンマップによって、第2映像の一部ピクセルについては、ラスタ化を行わず、第2映像の他の一部ピクセルについては、ラスタ化を行うことができる。ラスタ化に続いて、デバイス100は、第2映像の他の一部ピクセルに対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、デバイス100は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、生成済みの第2映像のカラーバッファを修正することができる。すなわち、デバイス100は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、デバイス100は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
他の実施形態によるデバイス100は、第2映像の深度バッファに基づいて、第2映像のピクセルに係わる選択的レンダリングを行うことができる。一実施形態によるデバイス100は、生成済みの第2映像の深度バッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。デバイス100は、一実施形態によって、第2映像の深度バッファを利用して、第1映像のピクセルと対応する第2映像の一部ピクセル、及び第1映像のピクセルと対応しない第2映像の他の一部ピクセルに係わる深度テスト(Z−test)を行うことができる。第2映像の深度バッファにおいては、第2映像の一部ピクセルが第1映像のピクセルの深度値を有するために、第2映像の一部ピクセルは、深度テストを通過することができず、結果として、デバイス100は、深度テスト以後の過程において、第2映像の一部ピクセルに係わる演算を行わない。また、第2映像の深度バッファにおいては、第2映像の他の一部ピクセルが、初期値のような所定値を有するために、第2映像の他の一部ピクセルは、深度テストを通過し、デバイス100は、深度テスト以後の過程において、第2映像の他の一部ピクセルに係わる演算を続けて行うことができる。一実施形態によるデバイス100は、深度テストを通過した第2映像の他の一部ピクセルに対して、ピクセルシェーディングを行うことができ、結果として、デバイス100は、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、デバイス100は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、生成済みの第2映像のカラーバッファを修正することができる。すなわち、デバイス100は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、デバイス100は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
図4は、一実施形態によるデバイス400に係わるブロック図を示している。
デバイス400は、一実施形態によって、GPU410、メモリ420及びバス430を含んでもよい。図4に図示されたデバイス400は、本実施形態に係わる構成要素だけが図示されている。従って、図4に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
GPU410は、一実施形態によって、第1映像に対するレンダリングを行うことができる。GPU410は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度バッファ422を生成することができる。第1映像の深度バッファ422は、第1映像のピクセルそれぞれの深度値を含んでもよい。また、GPU410は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラーバッファ424を生成することができる。第1映像のカラーバッファ424は、第1映像の各ピクセルのカラー値を含んでもよい。
メモリ420は、一実施形態によって、第1映像に対するレンダリング結果として生成される第1映像の深度バッファ422を保存することができる。また、一実施形態によって、メモリ420は、第1映像に対するレンダリング結果として生成される第1映像のカラーバッファ424を保存することができる。
GPU410は、一実施形態によって、シェーダ412及びラスタライザ414を含んでもよい。図4に図示されたGPU410は、本実施形態に係わる構成要素だけが図示されている。従って、図4に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
一実施形態によって、シェーダ412は、メモリ420に保存された第1映像の深度バッファ422に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができる。また、シェーダ412は、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップ428を生成することができる。一実施形態によって、シェーダ412は、第2映像の一部ピクセルについては、0の値を設定し、第2映像の他の一部ピクセルについては、1の値を設定し、オクルージョンマップ428を生成することができる。ただし、0または1の値は、ただの例示であり、オクルージョンマップ428は、0または1以外の値を含んでもよい。
また、一実施形態によって、シェーダ412は、第1映像のカラーバッファ422に基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファ426を生成することができる。任意の値は、ユーザによって既設定の値でもある。次に、シェーダ412は、第2映像のカラーバッファ426に基づいて、任意の値に決定された第2映像の他の一部ピクセルを確認することにより、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップ428を生成することができる。
図5は、シェーダ412がオクルージョンマップを生成する一実施形態を示している。
図5の領域510は、第1視点512及び第2視点514から、スクリーン516を介して客体518を眺めるところを示している。従って、GPU410は、第1視点512及び第2視点514それぞれを基準に、両眼視差映像に対するレンダリングを行うことができる。
GPU410は、一実施形態によって、第1視点512を基準に、第1映像520に対するレンダリングを行うことができる。従って、GPU410は、第1映像520に対するレンダリングを行い、客体518を示す第1映像520の深度バッファまたはカラーバッファを生成することができる。すなわち、GPU410は、客体518を示すピクセル522それぞれの深度値及びカラー値を計算することができる。
シェーダ412は、第1映像520の深度バッファに基づいて、再投影を行うことができる。すなわち、シェーダ412は、ピクセル522の深度値に基づいて、ピクセル522と対応する第2映像530の一部ピクセル532を決定することができる。従って、シェーダ412は、ピクセル522と対応する第2映像530の一部ピクセル532と、ピクセル522と対応しない第2映像530の他の一部ピクセル534とを区分するオクルージョンマップ540を生成することができる。一実施形態によって、シェーダ412は、第2映像530の一部ピクセル532と同一位置のピクセル542については、0の値に設定し、第2映像530の他の一部ピクセル534と同一位置のピクセル544については、1の値に設定し、オクルージョンマップ540を生成することができる。
また、他の実施形態によって、シェーダ412は、第1映像520のカラーバッファに基づいて、第2映像の一部ピクセル532それぞれのカラー値は、第1映像520のピクセル522それぞれのカラー値であるように決定し、第2映像530の他の一部ピクセル534それぞれのカラー値は、任意の値であるように決定し、第2映像530のカラーバッファを生成することができる。次に、シェーダ412は、第2映像530のカラーバッファに基づいて、任意の値に決定された第2映像530の他の一部ピクセル534を確認することにより、第2映像530の一部ピクセル532と、第2映像530の他の一部ピクセル534とを区分するオクルージョンマップ540を生成することができる。
図4のメモリ420は、シェーダ412によって生成されたオクルージョンマップ428、及び第2映像のカラーバッファ426を保存することができる。
GPU410は、一実施形態によって、メモリ420に保存されたオクルージョンマップ428、または第2映像のカラーバッファ426に基づいて、第2映像のピクセルに係わる選択的レンダリングを行うことができる。一実施形態によって、GPU410は、メモリ420に保存されたオクルージョンマップ428に基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。さらに具体的には、オクルージョンマップにおいて、第1映像のピクセルと対応する第2映像の一部ピクセル、第1映像のピクセルと対応しない第2映像の他の一部ピクセルが区分されているために、ラスタライザ414は、オクルージョンマップ428によって、第2映像の一部ピクセルについては、ラスタ化を行わず、第2映像の他の一部ピクセルについては、ラスタ化を行うことができる。
図6は、ラスタライザ414が、オクルージョンマップに基づいてラスタ化を行う一実施形態を示している。
一実施形態によって、図5の第1映像のピクセルと対応する第2映像610の一部ピクセル611のうち、第1領域612がラスタライザ414に入力される。ラスタライザ414は、オクルージョンマップ620に基づいて、第1領域612に該当するピクセル615に対して、ラスタ化を省略することができる。すなわち、オクルージョンマップ620においては、第1領域612に該当するピクセル615が0の値に設定されているので、ラスタライザ414は、ピクセル615に対するラスタ化を省略することができる。同様に、ラスタライザ414は、オクルージョンマップ620に基づいて、第2映像610の一部ピクセル611のうち、第2領域613に該当するピクセルに係わるラスタ化を省略することができる。オクルージョンマップ620においては、第1映像のピクセルと対応しない第2映像610の他の一部ピクセル614が1の値に設定されているので、ラスタライザ414は、他の一部ピクセル614に対するラスタ化を行うことができる。
図4のGPU410は、一実施形態によって、第2映像の他の一部ピクセルに係わるラスタ化に続いて、第2映像の他の一部ピクセルに対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、GPU410は、メモリ420に保存済みの第2映像のカラーバッファ426を読み取ることができ、GPU410は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、読み出した第2映像のカラーバッファ426を修正することができる。すなわち、GPU410は、第2映像のカラーバッファ426で決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、GPU410は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス400は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
図7は、一実施形態によって、GPU410が第2映像のカラーバッファを修正する実施形態を示している。
一実施形態によって、シェーダ412は、第1映像のピクセルと対応する第2映像の一部ピクセル712を決定することができる。次に、シェーダ412は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセル712それぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定することができ、第2映像の他の一部ピクセル714それぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファ710を生成することができる。図7の第2映像のカラーバッファ710において、一部ピクセル712それぞれのカラー値は、Rに決定され、他の一部ピクセル714それぞれのカラー値は、任意の値である#に決定されたが、カラー値は、Rまたは#に限定されるものではない。また、説明の便宜上、一部ピクセル712それぞれのカラー値がRと表示されたが、一部ピクセル712それぞれのカラー値は、互いに異なる値を有することができる。
一実施形態によって、ラスタライザ414は、オクルージョンマップ428に基づいて、第2映像の他の一部ピクセル722を選択してラスタ化を行うことができる。図7では、第2映像のカラーバッファ710で示される第2映像の他の一部ピクセル714と、第2映像の他の一部ピクセル722は、互いに同一位置のピクセルである。
一実施形態によって、GPU410は、第2映像の他の一部ピクセル722に対するラスタ化に続いて、他の一部ピクセル722に対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、他の一部ピクセル722それぞれのカラー値を計算することができる。図7の第2映像の他の一部ピクセル722それぞれのカラー値がCに計算されたが、カラー値は、Cに限定されるものではない。また、説明の便宜上、他の一部ピクセル722それぞれのカラー値がCに表示されたが、他の一部ピクセル722それぞれのカラー値は、互いに異なる値を有することができる。
従って、GPU410は、第2映像のカラーバッファ710で任意の値#に決定された他の一部ピクセル714それぞれのカラー値を、レンダリングを介して計算された他の一部ピクセル722それぞれのカラー値であるCに決定し、完成された第2映像のカラーバッファ720を生成することができる。
一実施形態によって、図4のシェーダ412は、第2映像の他の一部ピクセルを含む第1ピクセルグループに所定値を設定し、拡張されたオクルージョンマップを生成することができる。すなわち、シェーダ412は、オクルージョンマップ428において、第2映像の他の一部ピクセルが有する値を第2映像の他の一部ピクセルを含む第1ピクセルグループが有するように設定し、拡張されたオクルージョンマップを生成することができる。従って、第1ピクセルグループは、第2映像の他の一部ピクセル、及び第1ピクセルグループのうち、第2映像の他の一部ピクセルではない第2ピクセルグループによって構成される。
図8は、シェーダ412が、オクルージョンマップを拡張する実施形態を示している。
シェーダ412は、オクルージョンマップ810だけではなく、拡張されたオクルージョンマップ820を生成することができる。すなわち、シェーダ412は、第2映像530の他の一部ピクセル534と同一位置のピクセル812に1の値を付与し、オクルージョンマップ810を生成することができ、またシェーダ412は、第2映像530の他の一部ピクセル534より広い範囲のピクセルである第1ピクセルグループ822に1の値を付与し、拡張されたオクルージョンマップ820を生成することができる。第1ピクセルグループ822には、第2映像の他の一部ピクセル824、及び第1ピクセルグループ822において、他の一部ピクセル824ではない第2ピクセルグループ826を含んでもよい。例えば、シェーダ412は、第2映像530の他の一部ピクセル534と同一位置のピクセル812を基準に、3×3ピクセル830の範囲において1の値を付与し、拡張されたオクルージョンマップ820を生成することができる。
図4のGPU410は、一実施形態によって、拡張されたオクルージョンマップに基づいて、第2映像の他の一部ピクセルより広い範囲のピクセルである第1ピクセルグループを選択してレンダリングを行うことができる。すなわち、ラスタライザ414は、拡張されたオクルージョンマップに基づいて、第2映像の第1ピクセルグループを選択してラスタ化を行うことができる。ラスタ化に続いて、GPU410は、第2映像の第1ピクセルグループに対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、第2映像の第1ピクセルグループを構成するピクセルそれぞれのカラー値を計算することができる。第2映像の第1ピクセルグループには、第2映像の他の一部ピクセルを含むので、GPU410は、メモリ420に保存済みの第2映像のカラーバッファ426で決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。また、GPU410は、レンダリング結果として計算された第2ピクセルグループを構成するピクセルそれぞれのカラー値と、カラーバッファ426で決定された第2ピクセルグループに該当するカラー値とに基づいて、カラーバッファ426で決定された第2ピクセルグループに該当するカラー値を修正することができる。例えば、GPU410は、レンダリング結果として計算された第2ピクセルグループのピクセルそれぞれのカラー値、及びカラーバッファ426で決定された第2ピクセルグループに該当するカラー値の平均値を計算し、計算された平均値に、カラーバッファ426で決定された第2ピクセルグループに該当するカラー値を修正することができる。さらに具体的な実施形態は、以下、図9で説明する。
図9は、GPU410が、拡張されたオクルージョンマップに基づいて第2映像のカラーバッファを修正する実施形態を示している。
一実施形態によって、シェーダ412は、第1映像のピクセルと対応する第2映像の一部ピクセル912を決定することができる。次に、シェーダ412は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセル912それぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定することができ、第2映像の他の一部ピクセル914それぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファ910を生成することができる。図9の第2映像のカラーバッファ910において、一部ピクセル912それぞれのカラー値は、Rに決定され、他の一部ピクセル914それぞれのカラー値は、任意の値である#に決定されたが、カラー値は、Rまたは#に限定されるものではない。また、説明の便宜上、一部ピクセル912それぞれのカラー値がRと表示されたが、一部ピクセル912それぞれのカラー値は、互いに異なる値を有することができる。
一実施形態によって、ラスタライザ414は、拡張されたオクルージョンマップ820に基づいて、第2映像の第1ピクセルグループ922を選択してラスタ化を行うことができる。
一実施形態によって、GPU410は、第1ピクセルグループ922に対するラスタ化に続いて、第1ピクセルグループ922に対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、第1ピクセルグループ922それぞれのカラー値を計算することができる。図9の第2映像の第1ピクセルグループ922それぞれのカラー値がCに計算されたが、カラー値は、Cに限定されるものではない。また、説明の便宜上、第1ピクセルグループ922それぞれのカラー値がCに表示されたが、第1ピクセルグループ922それぞれのカラー値は、互いに異なる値を有することができる。
従って、GPU410は、第2映像のカラーバッファ910において、任意の値#に決定された他の一部ピクセル914それぞれのカラー値を、レンダリングを介して計算されたカラー値であるCに修正することができる。また、レンダリング結果として計算された第2ピクセルグループ924のピクセルそれぞれのカラー値であるCと、第2ピクセルグループ924と同一位置のピクセルであるカラーバッファ910のピクセルグループ916のカラー値であるRとを利用して、ピクセルグループ916のカラー値RをAに修正することができ、結果として、完成された第2映像のカラーバッファ930を完成することができる。例えば、GPU410は、カラー値Rとカラー値Cとの平均値を計算し、計算された平均値Aを、ピクセルグループ916のカラー値に修正することができる。また、説明の便宜上、修正されたカラー値がAと表示されたが、カラー値は、互いに異なる値を有することができる。
図10は、一実施形態による、デバイス400が両眼視差を有する第1映像及び第2映像に対するレンダリングを行うフローチャートを示している。
図10に図示された方法は、図4のデバイス400によって遂行され、重複説明については省略する。
段階S1010において、デバイス400は、一実施形態によって、第1映像に対するレンダリングを行うことができる。デバイス400は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度バッファを生成することができる。また、デバイス400は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラーバッファを生成することができる。デバイス400は、生成された第1映像の深度バッファ、及び第1映像のカラーバッファを内部メモリに保存することができる。
段階S1020において、デバイス400は、第1映像の深度バッファに基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定し、オクルージョンマップを生成することができる。すなわち、デバイス400は、第1映像の深度バッファに基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができ、デバイス400は、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。一実施形態によるデバイス400は、第2映像の一部ピクセルについては、0の値を設定し、第2映像の他の一部ピクセルについては、1の値を設定し、オクルージョンマップを生成することができる。ただし、0または1の値は、ただの例示であり、オクルージョンマップは、0または1以外の値を含んでもよい。
また、一実施形態によるデバイス400は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。次に、デバイス400は、第2映像のカラーバッファに基づいて、任意の値に決定された第2映像の他の一部ピクセルを確認することにより、第2映像の一部ピクセルと、第2映像の他の一部ピクセルとを区分するオクルージョンマップを生成することができる。
一実施形態によるデバイス400は、生成されたオクルージョンマップ、または第2映像のカラーバッファを内部メモリに保存することができる。
段階S1030において、デバイス400は、オクルージョンマップに基づいて、第2映像内の他の一部ピクセルを選択してレンダリングを行うことができる。すなわち、デバイス400は、オクルージョンマップに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。さらに具体的には、オクルージョンマップにおいて、第1映像のピクセルと対応する第2映像の一部ピクセル、及び第1映像のピクセルと対応しない第2映像の他の一部ピクセルが区分されているために、デバイス400は、オクルージョンマップによって、第2映像の一部ピクセルについては、ラスタ化を行わず、第2映像の他の一部ピクセルについては、ラスタ化を行うことができる。
デバイス400は、一実施形態によって、第2映像の他の一部ピクセルに係わるラスタ化に続いて、第2映像の他の一部ピクセルに対して、ピクセルシェーディングのようなさらなる演算を行うことができ、結果として、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、デバイス400は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、生成済みの第2映像のカラーバッファを修正することができる。すなわち、デバイス400は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、デバイス400は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス400は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
図11は、一実施形態によるデバイス1100に係わるブロック図を示している。
デバイス1100は、一実施形態によって、GPU1110、メモリ1120及びバス1130を含んでもよい。図11に図示されたデバイス1100は、本実施形態に係わる構成要素だけが図示されている。従って、図11に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
GPU1110は、一実施形態によって、第1映像に対するレンダリングを行うことができる。GPU1110は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度バッファ1122を生成することができる。第1映像の深度バッファ1122は、第1映像のピクセルそれぞれの深度値を含んでもよい。また、GPU1110は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラーバッファ1124を生成することができる。第1映像のカラーバッファ1124は、第1映像の各ピクセルのカラー値を含んでもよい。
メモリ1120は、一実施形態によって、第1映像に対するレンダリング結果として生成される第1映像の深度バッファ1122を保存することができる。また、一実施形態によって、メモリ1120は、第1映像に対するレンダリング結果として生成される第1映像のカラーバッファ1124を保存することができる。
GPU1110は、一実施形態によって、シェーダ1112及びZ−テスト部1114を含んでもよい。図11に図示されたGPU1110は、本実施形態に係わる構成要素だけが図示されている。従って、図11に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
一実施形態によって、シェーダ1112は、メモリ1120に保存された第1映像の深度バッファ1122に基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定することができる。また、一実施形態によって、シェーダ1112は、第1映像の深度バッファ1122に基づいて、第2映像の一部ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第2映像の他の一部ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファ1126を生成することができる。所定の値は、ユーザによって既設定の初期値でもある。
同様に、シェーダ1112は、第1映像のカラーバッファ1124に基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファ1128を生成することができる。任意の値は、ユーザによって既設定の値でもある。
図12は、シェーダ1112が、第2映像の深度バッファを生成する一実施形態を示している。
図12の領域1210は、第1視点1212及び第2視点1214から、スクリーン1216を介して客体1218を眺めるところを示している。従って、GPU1110は、第1視点1212及び第2視点1214それぞれを基準に、両眼視差映像に対するレンダリングを行うことができる。
GPU1110は、一実施形態によって、第1視点1212を基準に、第1映像1220に対するレンダリングを行うことができる。従って、GPU1110は、第1映像1220に対するレンダリングを行い、客体1218を示す第1映像1220の深度バッファまたはカラーバッファを生成することができる。すなわち、GPU1110は、客体1218を示すピクセル1222それぞれの深度値及びカラー値を計算することができる。
シェーダ1112は、第1映像1220の深度バッファに基づいて、再投影を行うことができる。すなわち、シェーダ1112は、ピクセル1222の深度値に基づいて、ピクセル1222と対応する第2映像1230の一部ピクセル1232を決定することができる。従って、シェーダ1112は、第2映像1230の一部ピクセル1232と同一位置のピクセル1242については、第1映像1220のピクセル1222それぞれの深度値zに設定し、第2映像1230の他の一部ピクセル1234と同一位置のピクセル1244については、所定値0に設定し、第2映像1230の深度バッファ1240を生成することができる。また、説明の便宜上、ピクセル1242それぞれの深度値がzと表示されたが、ピクセル1242それぞれの深度値は、互いに異なる値を有することができる。また、シェーダ1112は、第1映像1220のカラーバッファに基づいて、第2映像の一部ピクセル1232それぞれのカラー値は、第1映像1220のピクセル1222それぞれのカラー値であるように決定し、第2映像1230の他の一部ピクセル1234それぞれのカラー値は、任意の値であるように決定し、第2映像1230のカラーバッファを生成することができる。
図11のメモリ1120は、一実施形態によって、シェーダ1112によって生成された第2映像の深度バッファ1126、及び第2映像のカラーバッファ1128を保存することができる。
GPU1110は、一実施形態によって、メモリ1120に保存された第2映像の深度バッファ1126、または第2映像のカラーバッファ1128に基づいて、第2映像のピクセルに係わる選択的レンダリングを行うことができる。一実施形態によって、GPU1110は、メモリ1120に保存された第2映像の深度バッファ1126に基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。さらに具体的には、Z−テスト部1114は、一実施形態によって、メモリ1120に保存された第2映像の深度バッファ1126を利用して、第1映像のピクセルと対応する第2映像の一部ピクセル、及び第1映像のピクセルと対応しない第2映像の他の一部ピクセルに係わる深度テスト(Z−test)を行うことができる。メモリ1120に保存された第2映像の深度バッファ1126において、第2映像の一部ピクセルは、第1映像のピクセルの深度値を有するために、第2映像の一部ピクセルは、深度テストを通過することができず、結果として、GPU1110は、深度テスト以後の過程において、第2映像の一部ピクセルに係わる演算を行わない。また、メモリ1120に保存された第2映像の深度バッファ1126において、第2映像の他の一部ピクセルは、初期値のような所定値を有するために、第2映像の他の一部ピクセルは、深度テストを通過し、GPU1110は、深度テスト以後の過程において、第2映像の他の一部ピクセルに係わる演算を続けて行うことができる。一実施形態によって、GPU1110は、深度テストを通過した第2映像の他の一部ピクセルに対して、ピクセルシェーディングを行うことができ、結果として、GPU1110は、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、GPU1110は、メモリ1120に保存済みの第2映像のカラーバッファ1128を読み取ることができ、GPU1110は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、読み出した第2映像のカラーバッファ1128を修正することができる。すなわち、GPU1110は、第2映像のカラーバッファ1128で決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、GPU1110は、第2映像の他の一部ピクセルを選択してレンダリングを行うことができ、メモリ1120に保存済みの第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。すなわち、GPU1110は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス1100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
図13は、GPU1110が、第2映像のカラーバッファを修正する実施形態を示している。
一実施形態によって、シェーダ1112は、第1映像のピクセルと対応する第2映像の一部ピクセル1312を決定することができる。次に、シェーダ1112は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセル1312それぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定することができ、第2映像の他の一部ピクセル1314それぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファ1310を生成することができる。図13の第2映像のカラーバッファ1310において、一部ピクセル1312それぞれのカラー値は、Rに決定され、他の一部ピクセル1314それぞれのカラー値は、任意の値である#に決定されたが、カラー値は、Rまたは#に限定されるものではない。また、説明の便宜上、一部ピクセル1312それぞれのカラー値がRと表示されたが、一部ピクセル1312それぞれのカラー値は、互いに異なる値を有することができる。
一実施形態によって、Z−テスト部1114は、第2映像の深度バッファに基づいて、第2映像の一部ピクセル1322、及び第2映像の他の一部ピクセル1324に対する深度テスト(Z−test)を行うことができる。図13では、第2映像の他の一部ピクセル1312と、第2映像の他の一部ピクセル1324は、互いに同一位置のピクセルである。次に、GPU1110は、深度テストを通過した第2映像の他の一部ピクセル1324に対して、ピクセルシェーディングのようなさらなる演算を続けて行うことができ、結果として、GPU1110は、他の一部ピクセル1324それぞれのカラー値を計算することができる。図13において、第2映像の他の一部ピクセル1324それぞれのカラー値がCと計算されたが、カラー値は、Cに限定されるものではない。また、説明の便宜上、他の一部ピクセル1324それぞれのカラー値がCと表示されたが、他の一部ピクセル1324それぞれのカラー値は、互いに異なる値を有することができる。
従って、GPU1110は、第2映像のカラーバッファ1310において、任意の値#に決定された他の一部ピクセル1314それぞれのカラー値を、レンダリングを介して計算された他の一部ピクセル1324それぞれのカラー値であるCに決定し、完成された第2映像のカラーバッファ1320を生成することができる。
図14は、一実施形態による、デバイス1100が両眼視差を有する第1映像及び第2映像に対するレンダリングを行うフローチャートを示している。
図14に図示された方法は、図11のデバイス1100によって遂行され、重複説明については省略する。
段階S1410において、デバイス1100は、一実施形態によって、第1映像に対するレンダリングを行うことができる。デバイス1100は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像の深度バッファを生成することができる。また、デバイス1100は、一実施形態によって、第1映像に対するレンダリングを行い、第1映像のカラーバッファを生成することができる。デバイス1100は、生成された第1映像の深度バッファ、及び第1映像のカラーバッファを内部メモリに保存することができる。
段階S1420において、デバイス1100は、一実施形態によって、第1映像の深度バッファに基づいて、第1映像のピクセルと対応する第2映像の一部ピクセルを決定し、第2映像の深度バッファを生成することができる。すなわち、デバイス1100は、第1映像の深度バッファに基づいて、第2映像の一部ピクセルそれぞれの深度値は、第1映像のピクセルそれぞれの深度値であるように決定し、第2映像の他の一部ピクセルそれぞれの深度値は、所定値であるように決定し、第2映像の深度バッファを生成することができる。所定の値は、ユーザによって既設定の初期値でもある。
また、デバイス1100は、第1映像のカラーバッファに基づいて、第2映像の一部ピクセルそれぞれのカラー値は、第1映像のピクセルそれぞれのカラー値であるように決定し、第2映像の他の一部ピクセルそれぞれのカラー値は、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。任意の値は、ユーザによって既設定の値でもある。デバイス1100は、生成された第2映像の深度バッファ、及び第2映像のカラーバッファを内部メモリに保存することができる。
段階S1430において、デバイス1100は、第2映像の深度バッファに基づいて、第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。デバイス1100は、一実施形態によって、第2映像の深度バッファを利用して、第1映像のピクセルと対応する第2映像の一部ピクセル、及び第1映像のピクセルと対応しない第2映像の他の一部ピクセルに係わる深度テスト(Z−test)を行うことができる。第2映像の深度バッファにおいて、第2映像の一部ピクセルは、第1映像のピクセルの深度値を有するために、第2映像の一部ピクセルは、深度テストを通過することができず、結果として、デバイス1100は、深度テスト以後の過程において、第2映像の一部ピクセルに係わる演算を行わない。また、第2映像の深度バッファにおいて、第2映像の他の一部ピクセルは、初期値のような所定値を有するために、第2映像の他の一部ピクセルは、深度テストを通過し、デバイス1100は、深度テスト以後の過程において、第2映像の他の一部ピクセルに係わる演算を続けて行うことができる。一実施形態によるデバイス1100は、深度テストを通過した第2映像の他の一部ピクセルに対して、ピクセルシェーディングを行うことができ、結果として、デバイス1100は、第2映像の他の一部ピクセルそれぞれのカラー値を計算することができる。従って、デバイス1100は、第2映像の他の一部ピクセルそれぞれのカラー値を介して、生成済みの第2映像のカラーバッファを修正することができる。すなわち、デバイス1100は、第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。
従って、デバイス1100は、第2映像の他の一部ピクセルを選択してレンダリングを行うことができ、生成済みの第2映像のカラーバッファで決定された任意の値を、レンダリング結果として計算される第2映像の他の一部ピクセルのカラー値に修正することができる。すなわち、デバイス1100は、第2映像の全てのピクセルに係わるレンダリングを行うのではなく、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことにより、第2映像のカラーバッファを完成することができる。一実施形態によるデバイス1100は、完成された第2映像のカラーバッファを介して、第2映像を出力することができる。
図15は、一実施形態によるデバイス1500に係わるブロック図を示している。
デバイス1500は、アプリケーション1510、デバイスドライバ1520、GPU1530及びメモリ1540を含んでもよい。図15に図示されたデバイス1500は、本実施形態に係わる構成要素だけが図示されている。従って、図15に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
アプリケーション1510は、一実施形態によって、API(application program interface)を介して、両眼視差映像(binocular disparity image)に対するレンダリングまたはタイル基盤レンダリング(tile based rendering)に係わる情報をデバイスドライバ1520に提供することができる。このとき、アプリケーション1510は、OpenGL、OpenGL ESまたはDirect3のようなAPI標準を介して、両眼視差映像に対するレンダリングまたはタイル基盤レンダリングに係わる情報をデバイスドライバ1520に提供することができる。すなわち、アプリケーション1510は、両眼視差映像を示すために、両眼視差を有する第1映像及び第2映像それぞれに対するレンダリングまたはタイル基盤レンダリングに係わる情報を、APIを介して、デバイスドライバ1520に提供することができる。また、一実施形態によって、アプリケーション1510は、第1映像及び第2映像それぞれに対するレンダリングまたはタイル基盤レンダリングに係わる情報を、APIの拡張などを介して、デバイスドライバ1520に明示的に提供することができる。
デバイスドライバ1520は、一実施形態によって、アプリケーション1510から受信されたAPIを分析し、GPU1530で処理可能なコマンド(command)に変換し、GPU1530にコマンドを伝送することができる。一実施形態によるデバイスドライバ1520は、第1映像及び第2映像に対する少なくとも1つのドローコマンド(draw command)をGPU1530に伝送することができる。ドローコマンドは、所定の映像、または所定のフレームにいかなるオブジェクトをレンダリングするかということを示す命令語であり、一実施形態によって、ドローコマンドは、ドローコール(drawcall)として表現することができる。例えば、ドローコマンドは、映像またはフレームに、所定の個数の四角形または三角形を描くためのコマンドでもある。
一実施形態によるデバイスドライバ1520は、ドローコマンドと共に、ドローコマンドと関連した状態情報(state information)をGPU1530に伝送することができる。状態情報は、ドローコマンドにバインディング(binding)された状態を示すが、状態情報は、所定のオブジェクトをレンダリングするために必要な情報を意味する。例えば、状態情報は、所定のオブジェクトに係わる座標情報のようなソースデータ(source data)、テクスチャタイプ(texture type)、カメラ視点情報を含み、状態情報は、ステート(state)として表現される。一実施形態によるデバイスドライバ1520は、1つのドローコマンドと、第1映像及び第2映像それぞれに係わる状態情報とをGPU1530に伝送することができる。第1映像及び第2映像それぞれは、同一オブジェクトに対して、互いに異なる視角から眺めた映像であるために、第1映像及び第2映像に係わる状態情報は、カメラ視点に係わる情報だけが、第1映像及び第2映像ごとにそれぞれ異なるように表現され、残りの情報は、第1映像及び第2映像ごとにそれぞれ同一に表現される。すなわち、デバイスドライバ1520は、1つのドローコマンドと共に、第1映像及び第2映像に係わる1対の状態情報をGPU1530に伝送することができる。
GPU1530は、一実施形態によるデバイスドライバ1520から受信した両眼視差映像に係わるドローコマンド及び状態情報に基づいて、両眼視差を有する第1映像及び第2映像に対するレンダリングを行うことができる。また、GPU1530は、一実施形態によるデバイスドライバ1520から受信した両眼視差映像に係わるドローコマンド及び状態情報に基づいて、第1映像及び第2映像に対するタイル基盤レンダリング(tile based rendering)を遂行することができる。
GPU1530及びメモリ1540は、図1のGPU110及びメモリ120で説明した内容、図4のGPU410及びメモリ420で説明した内容、または図11のGPU1110及びメモリ1120で説明した内容を含むが、重複説明は省略する。
図16は、一実施形態によるデバイス1600に係わるブロック図を示している。
デバイス1600は、アプリケーション1610、デバイスドライバ1620、GPU1630及びメモリ1640を含んでもよい。図16に図示されたデバイス1600は、本実施形態に係わる構成要素だけが図示されている。従って、図16に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
アプリケーション1610及びデバイスドライバ1620は、図15のアプリケーション1510及びデバイスドライバ1520の内容を含んでもよいが、重複内容については、説明を省略する。また、GPU1630及びメモリ1640は、図15のGPU1530及びメモリ1540の内容を含んでもよいが、重複内容については、説明を省略する。
また、GPU1630は、タイル基盤レンダリング(tile-based rendering)を行うことができる。タイル基盤という用語は、映像の各フレームを複数のタイルに区分した(divideまたはpartitioning)後、タイル単位でレンダリングを行うことを意味する。タイル基盤のアーキテクチャは、ピクセル単位でフレームを処理するときより演算量が少なくなるために、スマートフォン、タブレットデバイスのように、比較的処理性能が低いモバイルデバイス(または、エンベデッドデバイス)で使用するグラフィックスレンダリング方法でもある。以下では、説明の便宜性のために、GPU1630がレンダリングを行うという表現は、GPU1630がタイル基盤レンダリングを行うという意味を含むものとする。
GPU1630は、一実施形態によって、スケジューラ1632、グラフィックスパイプライン(graphics pipeline)1634及びタイルバッファ1636を含んでもよい。図16に図示されたGPU1630は、本実施形態に係わる構成要素だけが図示されている。従って、図16に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
スケジューラ1632は、一実施形態によるデバイスドライバ1620から、両眼視差を有する第1映像及び第2映像に対する少なくとも1つのドローコマンド及び状態情報を受信することができる。
スケジューラ1632は、一実施形態によって、少なくとも1つのドローコマンドを所定の単位を有するバッチに分割することができ、バッチをグラフィックスパイプライン1634に順次に割り当てることができる。例えば、スケジューラ1632は、100個のプリミティブ(primitive)に対するドローコマンドを、20個のプリミティブに対するドローコマンドの単位を有するバッチに分割し、ドローコマンドを5個のバッチとして、グラフィックスパイプライン1634に順次に割り当てることができる。また、一実施形態によって、スケジューラ1632が、バッチをグラフィックスパイプライン1634に割り当てる場合、スケジューラ1632は、1つのバッチを、第1映像及び第2映像それぞれのために、グラフィックスパイプライン1634に2回ずつ割り当てることができる。すなわち、スケジューラ1632は、バッチのうち第1バッチをグラフィックスパイプライン1634に割り当てる場合、第1映像のために、第1バッチをグラフィックスパイプライン1634に割り当てることができ、次に、第2映像のために、第1バッチをグラフィックスパイプライン1634に割り当てることができる。
グラフィックスパイプライン1634は、一実施形態によって、割り当てられたバッチによって、第1映像及び第2映像それぞれに係わるタイルビニング(tile binning)を行うことができる。タイルビニングは、第1映像及び第2映像を、所定の個数のタイルに分割し、第1映像及び第2映像の各タイル上で、少なくとも1つのドローコマンドが遂行されるか否かということを示すビニング情報を生成するプロセスでもある。さらに具体的には、タイルビニングは、第1映像を具現化するための第1フレーム、及び第2映像を具現化するための第2フレームそれぞれを、所定の個数のタイルに分割するのである。例えば、100×100ピクセルの第1フレームを、4個のタイルに分割すれば、1個のタイルの大きさは、25×25ピクセルになる。従って、以下では、第1映像を所定の個数のタイルに分割する内容は、第1映像を具現化するための第1フレームを所定の個数のタイルに分割する内容と同等であると見て、第1映像のタイルという表現は、第1映像を具現化するための第1フレームに含まれたタイルという表現と同等であると見る。また、タイルビニングは、二次元または三次元の客体を構成するバーテックス(vertices)、プリミティブ(primitives)またはパッチ(patches)が、第1映像及び第2映像のいずれのタイルに含まれるかということを示すタイルリストを生成するプロセスでもある。また、タイルビニングは、第1映像及び第2映像の各タイルに含まれたバーテックスまたはプリミティブに係わる情報を獲得するプロセスでもある。バーテックスまたはプリミティブに係わる情報の例としては、バーテックスまたはプリミティブの識別子、位置、色相及び質感に係わる情報にもなる。
一実施形態によって、グラフィックスパイプライン1634は、割り当てられたバッチ、及び割り当てられたバッチと関連した状態情報によって、第1映像及び第2映像それぞれに係わるタイルビニングを行うことができる。一実施形態によって、グラフィックスパイプライン1634は、割り当てられたバッチのうち第1バッチ、及び第1バッチと関連した状態情報を受信することができる。第1バッチと関連した状態情報は、第1映像及び第2映像それぞれのカメラ視点情報を含むので、グラフィックスパイプライン1634は、第1バッチを1回だけ割り当てられても、第1バッチ、及び第1バッチと関連した状態情報によって、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。また、一実施形態によって、グラフィックスパイプライン1634は、第1バッチ、及び第1バッチと関連した状態情報を第1映像及び第2映像それぞれに対して2回割り当てられ、グラフィックスパイプライン1634は、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。
グラフィックスパイプライン1634は、タイルビニングを行い、少なくとも1つのドローコマンドが、第1映像及び第2映像のいずれのタイル上で遂行されるかということを示すビニング情報(binning information)を生成することができる。一実施形態によって、グラフィックスパイプライン1634は、タイルビニングの遂行結果として生成されたビニング情報を、タイルバッファ1636またはメモリ1640に保存することができる。
グラフィックスパイプライン1634は、生成されたビニング情報に基づいて、第1映像のタイルそれぞれに対するレンダリングを行うことができる。
一実施形態によって、グラフィックスパイプライン1634は、第1映像のタイルである第1タイルないし第nタイルに対するレンダリングを順次に行い、第1タイルないし第nタイルそれぞれの深度バッファまたはカラーバッファを生成することができる。また、タイルバッファ1636は、順次に生成された少なくとも1つのタイルの深度バッファまたはカラーバッファを、許容可能な容量の範囲まで臨時に保存することができる。次に、flush命令語によって、一時的に保存された少なくとも1つの深度バッファまたはカラーバッファは、メモリ1640に保存される。従って、第1映像のタイルである第1タイルないし第nタイルそれぞれの深度バッファは、第1映像の深度バッファとしてメモリ1640に保存される。また、第1映像のタイルである第1タイルないし第nタイルそれぞれのカラーバッファは、第1映像のカラーバッファとしてメモリ1640に保存される。
次に、グラフィックスパイプライン1634は、メモリ1640に保存された第1映像の深度バッファ及びカラーバッファを基に再投影を行い、第2映像の深度バッファ及びカラーバッファを生成することができる。また、グラフィックスパイプライン1634は、メモリ1640に保存された第1映像の深度バッファ及びカラーバッファを基に再投影を行い、オクルージョンマップ、及び第2映像のカラーバッファを生成することができる。
他の実施形態によって、グラフィックスパイプライン1634は、第1映像のタイルのうち第1タイルに対するレンダリングを行い、第1タイルの深度バッファ及びカラーバッファを生成することができる。タイルバッファ1636は、生成された第1タイルの深度バッファ及びカラーバッファを保存することができる。次に、グラフィックスパイプライン1634は、タイルバッファ1636に保存された第1タイルの深度バッファに基づいて、第1タイルのピクセルと対応する第2映像の第1ピクセルを決定することができる。次に、グラフィックスパイプライン1634は、第1映像のタイルのうち第2タイルに対するレンダリングを行い、第2タイルの深度バッファ及びカラーバッファを生成することができる。タイルバッファ1636は、生成された第2タイルの深度バッファ及びカラーバッファを保存することができる。次に、グラフィックスパイプライン1634は、タイルバッファ1636に保存された第2タイルの深度バッファに基づいて、第2タイルのピクセルと対応する第2映像の第2ピクセルを決定することができる。同様に、グラフィックスパイプライン1634は、第1映像のタイルのうち第nタイルに対するレンダリングを行い、第nタイルの深度バッファに基づいて、第nタイルのピクセルと対応する第2映像の第nピクセルを決定することができる。従って、グラフィックスパイプライン1634は、第2映像の第1ピクセルないし第nピクセルと、第2映像の残りピクセルとを区分するオクルージョンマップを生成することができ、生成されたオクルージョンマップを、メモリ1640に保存することができる。また、グラフィックスパイプライン1634は、第1タイルないし第nタイルのカラーバッファに基づいて、第2映像の第1ピクセルないし第nピクセルそれぞれのカラー値を、第1タイルないし第nタイルのピクセルそれぞれのカラー値であるように決定し、第2映像の残りピクセルは、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。同様に、グラフィックスパイプライン1634は、第1タイルないし第nタイルの深度バッファに基づいて、第2映像の第1ピクセルないし第nピクセルそれぞれの深度値を、第1タイルないし第nタイルのピクセルそれぞれの深度値であるように決定し、第2映像の残りピクセルは、所定値であるように決定し、第2映像の深度バッファを生成することができる。また、グラフィックスパイプライン1634は、生成された第2映像のカラーバッファ及び深度バッファをメモリ1640に保存することができる。
グラフィックスパイプライン1634は、一実施形態によって、メモリ1640に保存された第2映像の深度バッファ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。すなわち、一実施形態によって、グラフィックスパイプライン1634は、第2映像の深度バッファ及びカラーバッファに含まれた第2映像の第1タイルないし第nタイルそれぞれの深度バッファ及びカラーバッファをメモリ1640から順次に読み取り、タイルレンダリングを行うことができる。すなわち、グラフィックスパイプライン1634は、第2映像の第nタイルの深度バッファ及びカラーバッファをメモリ1640から読み取り、タイルバッファ1636に保存することができる。次に、グラフィックスパイプライン1634は、タイルバッファ1636に保存された第nタイルの深度バッファ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の第nタイルのピクセルを選択してレンダリングを行うことができる。レンダリング遂行結果として決定された第nタイルのピクセルのカラー値は、第nタイルのカラーバッファに保存され、第nタイルのカラーバッファは、メモリ1640に保存される。また、グラフィックスパイプライン1634は、一実施形態によって、メモリ1640に保存されたオクルージョンマップ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。すなわち、一実施形態によって、グラフィックスパイプライン1634は、オクルージョンマップに基づいて、第2映像のカラーバッファに含まれた第2映像の第1タイルないし第nタイルそれぞれのカラーバッファをメモリ1640から順次に読み取り、タイルレンダリングを行うことができる。
また、一実施形態によって、スケジューラ1632は、第2映像の第1タイルないし第nタイルそれぞれに対するスケジューリングを行い、スケジューリングによって、グラフィックスパイプライン1634は、第2映像の第1タイルないし第nタイルに対するタイルレンダリングを行うことができる。
スケジューラ1632は、一実施形態によって、オクルージョンマップに基づいて、第2映像の第1タイルないし第nタイルそれぞれに対するスケジューリングを行うか否かということを決定することができる。次に、グラフィックスパイプライン1634は、スケジューリングを行うと決定されたタイルに対するタイルレンダリングを行うことができる。すなわち、スケジューラ1632は、オクルージョンマップに基づいて決定された第2映像の所定のタイルについては、スケジューリングを省略することができ、結果として、グラフィックスパイプライン1634は、所定のタイルに対するレンダリングを省略することができる。一実施形態によって、スケジューラ1632は、オクルージョンマップに基づいて、第2映像の第1タイルのピクセルのうち第1映像のピクセルと対応するピクセルがあるか否かということを確認することができ、第1映像のピクセルと対応するピクセルが第1タイルになければ、スケジューラ1632は、第1タイルに対するスケジューリングを省略することができる。従って、グラフィックスパイプライン1634は、第2映像の第1タイルに対するレンダリングを省略することができる。また、一実施形態によって、グラフィックスパイプライン1634は、オクルージョンマップを生成するとき、第2映像の各タイルごとに、第1ピクセルと対応するピクセルの個数を、オクルージョンマップのヘッダ(header)情報として生成することができる。従って、スケジューラ1632は、オクルージョンマップのヘッダ情報を確認し、第2映像の各タイルごとにスケジューリングを行うか否かということを決定することができる。
図17は、一実施形態によるデバイス1700に係わるブロック図を示している。
デバイス1700は、アプリケーション1710、デバイスドライバ1720、GPU1730及びメモリ1740を含んでもよい。図17に図示されたデバイス1700は、本実施形態に係わる構成要素だけが図示されている。従って、図17に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
アプリケーション1710、デバイスドライバ1720、GPU1730及びメモリ1740は、図16のアプリケーション1610、デバイスドライバ1620、GPU1630及びメモリ1640の内容を含んでもよいが、重複内容については、説明を省略する。
GPU1730は、一実施形態によって、スケジューラ1732、複数のグラフィックスパイプライン1734及びタイルバッファ1736を含んでもよい。図17に図示されたGPU1730は、本実施形態に係わる構成要素だけが図示されている。従って、図17に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
また、スケジューラ1732及びタイルバッファ1736は、図16のスケジューラ1632及びタイルバッファ1636の内容を含んでもよいが、重複内容については、説明を省略する。また、複数のグラフィックスパイプライン1734それぞれは、図16のグラフィックスパイプライン1634の内容を含んでもよいが、重複内容については、説明を省略する。
スケジューラ1732は、一実施形態によって、少なくとも1つのドローコマンドを所定の単位を有するバッチに分割することができ、バッチを複数のグラフィックスパイプライン1734ごとにそれぞれ割り当てることができる。また、一実施形態によって、スケジューラ1732がバッチを複数のグラフィックスパイプライン1734それぞれに割り当てる場合、スケジューラ1732は、1つのバッチを、第1映像及び第2映像それぞれのために、1つのグラフィックスプロセッサに2回ずつ割り当てることができる。すなわち、スケジューラ1732は、バッチのうち第1バッチを複数のグラフィックスパイプライン1734のうち第1グラフィックスプロセッサに割り当てる場合、第1映像のために、第1バッチを第1グラフィックスプロセッサに割り当てることができ、第2映像のために、第1バッチを第1グラフィックスプロセッサに割り当てることができる。
複数のグラフィックスパイプライン1734は、一実施形態によって、割り当てられたバッチによって、第1映像及び第2映像それぞれに係わるタイルビニングを行うことができる。
一実施形態によって、複数のグラフィックスパイプライン1734は、割り当てられたバッチ、及び割り当てられたバッチと関連した状態情報によって、第1映像及び第2映像それぞれに係わるタイルビニングを行うことができる。一実施形態によって、複数のグラフィックスパイプライン1734のうち第1グラフィックスプロセッサは、割り当てられたバッチのうち第1バッチ、及び第1バッチと関連した状態情報を受信することができる。第1バッチと関連した状態情報は、第1映像及び第2映像それぞれのカメラ視点情報を含むので、第1グラフィックスプロセッサは、第1バッチを1回だけ割り当てられても、第1バッチ、及び第1バッチと関連した状態情報によって、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。また、一実施形態によって、第1グラフィックスプロセッサは、第1バッチ、及び第1バッチと関連した状態情報を、第1映像及び第2映像それぞれに対して2回割り当てられ、第1グラフィックスプロセッサは、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。
図18は、GPU1730がタイルビニングを行う実施形態を示している。
スケジューラ1732は、一実施形態によって、ドローコマンド1810を、複数のバッチ1820に分割することができる。また、スケジューラ1732は、複数のバッチ1820を、第1映像に係わる複数のバッチ1830として、複数のグラフィックスパイプライン1734に割り当てることができ、複数のバッチ1820を、第2映像に係わる複数のバッチ1840として複数のグラフィックスパイプライン1734に割り当てることができる。すなわち、スケジューラ1732は、複数のバッチ1820を2回ずつ複数のグラフィックスパイプライン1734に割り当てることができる。
複数のグラフィックスパイプライン1734は、割り当てられたバッチ、及び割り当てられたバッチと関連した状態情報に基づいて、第1映像及び第2映像それぞれに係わるタイルビニングを行うことができる。
また、図18において、点線矢印で図示されているように、スケジューラ1732は、複数のバッチ1820を1回ずつだけ複数のグラフィックスパイプライン1734に割り当てることができる。また、スケジューラ1732は、複数のバッチ1820と関連した状態情報を、タイルバッファ1736に保存することができる。従って、複数のグラフィックスパイプライン1734それぞれは、タイルバッファ1736に保存された状態情報、及び複数のバッチ1820によって、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。
従って、グラフィックスパイプラインに割り当てられたバッチは、同一プリミティブを対象にするために、割り当てられたバッチに基づいて、グラフィックスパイプラインが、第1映像及び第2映像それぞれに対して、同一プリミティブを対象にタイルビニングを行うことができ、そのことは、プリミティブに係わる情報が保存されている内部メモリへのアクセスを最小化させることができる。
複数のグラフィックスパイプライン1734は、タイルビニングを行い、少なくとも1つのドローコマンドが、第1映像及び第2映像のいずれのタイル上で遂行されるかということを示すビニング情報を生成することができる。一実施形態によって、複数のグラフィックスパイプライン1734は、タイルビニングの遂行結果として生成されたビニング情報を、タイルバッファ1736またはメモリ1740に保存することができる。
図19は、一実施形態によるデバイス1500、1600、1700が、両眼視差を有する第1映像及び第2映像に対するタイル基盤レンダリングを行うフローチャートを示している。
図19に図示された方法は、図15、図16、図17のデバイス1500、1600、1700によって遂行され、重複説明については省略する。
段階S1910において、デバイス1500、1600、1700は、少なくとも1つのドローコマンドに基づいて、両眼視差を有する第1映像及び第2映像それぞれに対してタイルビニングを行うことができる。さらに具体的には、デバイス1500、1600、1700は、少なくとも1つのドローコマンド、及び少なくとも1つのドローコマンドと関連した状態情報に基づいて、タイルビニングを行うことができる。タイルビニングを行うさらに具体的な実施形態を、以下、図20で説明する。
図20は、一実施形態によって、図19のS1910についてさらに詳細に説明するためのフローチャートである。
段階2010において、デバイス1700は、一実施形態によって、少なくとも1つのドローコマンドを、所定の単位を有するバッチに分割することができ、分割されたバッチを、デバイス1700内の複数のグラフィックスパイプラインごとにそれぞれ割り当てることができる。また、一実施形態によるデバイス1700は、バッチそれぞれを、第1映像及び第2映像それぞれのために、複数のグラフィックスパイプラインそれぞれに2回ずつ割り当てることができる。すなわち、デバイス1700は、バッチのうち第1バッチを、複数のグラフィックスパイプラインのうち第1グラフィックスプロセッサに割り当てる場合、第1映像のために、第1バッチを、第1グラフィックスパイプラインに割り当てることができ、第2映像のために、第1バッチを、第1グラフィックスパイプラインに割り当てることができる。
段階S2020において、デバイス1700は、一実施形態によって、割り当てられたバッチ、及びバッチと対応する状態情報に基づいて、第1映像及び第2映像それぞれに係わるタイルビニングを行うことができる。さらに具体的には、デバイス1700内の複数のグラフィックスパイプラインは、バッチ、及びバッチと関連した状態情報を2回割り当てられ、それによって、複数のグラフィックスパイプラインは、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。また、複数のグラフィックスパイプラインはバッチと関連した状態情報が、第1映像及び第2映像それぞれのカメラ視点情報を含むために、バッチ及び状態情報を1回だけ割り当てられても、第1映像に係わるタイルビニング、及び第2映像に係わるタイルビニングをそれぞれ行うことができる。
図19の段階S1920において、デバイス1500、1600、1700は、第1映像のタイルに対するレンダリングを行うことができる。すなわち、デバイス1500、1600、1700は、第1映像のタイルである第1タイルないし第nタイルに対するレンダリングを順次に行い、第1タイルないし第nタイルそれぞれの深度バッファまたはカラーバッファを生成することができる。また、一実施形態によるデバイス1500、1600、1700は、順次に生成された少なくとも1つのタイルの深度バッファまたはカラーバッファを、許容可能な容量の範囲まで一時的に内部バッファに保存することができる。次に、flush命令語によって、内部バッファに一時的に保存された少なくとも1つの深度バッファまたはカラーバッファは、デバイス1500、1600、1700の内部メモリに保存される。従って、第1映像のタイルである第1タイルないし第nタイルそれぞれの深度バッファは、第1映像の深度バッファとして、デバイス1500、1600、1700の内部メモリに保存される。また、第1映像のタイルである第1タイルないし第nタイルそれぞれのカラーバッファは、第1映像のカラーバッファとして、デバイス1500、1600、1700の内部メモリに保存される。
段階S1930において、デバイス1500、1600、1700は、第1映像のタイルそれぞれの深度バッファを基に、第1映像のタイルのピクセルと対応する第2映像の一部ピクセルを決定し、再投影を行うことができる。さらに具体的には、デバイス1500、1600、1700は、第1映像のタイルのうち第1タイルの深度バッファに基づいて、第1タイルのピクセルと対応する第2映像の第1ピクセルを決定することができる。次に、デバイス1500、1600、1700は、第1映像のタイルのうち第2タイルの深度バッファに基づいて、第2タイルのピクセルと対応する第2映像の第2ピクセルを決定することができる。同様に、デバイス1500、1600、1700は、第1映像のタイルのうち第nタイルの深度バッファに基づいて、第nタイルのピクセルと対応する第2映像の第nピクセルを決定することができる。従って、デバイス1500、1600、1700は、第2映像の第1ピクセルないし第nピクセルと、第2映像の残りピクセルとを区分するオクルージョンマップを生成することができ、生成されたオクルージョンマップを内部メモリに保存することができる。また、デバイス1500、1600、1700は、第1タイルないし第nタイルのカラーバッファに基づいて、第2映像の第1ピクセルないし第nピクセルそれぞれのカラー値を、第1タイルないし第nタイルのピクセルそれぞれのカラー値であるように決定し、第2映像の残りピクセルは、任意の値であるように決定し、第2映像のカラーバッファを生成することができる。同様に、デバイス1500、1600、1700は、第1タイルないし第nタイルの深度バッファに基づいて、第2映像の第1ピクセルないし第nピクセルそれぞれの深度値を、第1タイルないし第nタイルのピクセルそれぞれの深度値であるように決定し、第2映像の残りピクセルは、所定値であるように決定し、第2映像の深度バッファを生成することができる。また、デバイス1500、1600、1700は、生成された第2映像のカラーバッファ及び深度バッファを内部メモリに保存することができる。
段階S1940において、デバイス1500、1600、1700は、再投影に基づいて、第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。デバイス1500、1600、1700は、一実施形態によって、保存済みの第2映像の深度バッファ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。すなわち、一実施形態によるデバイス1500、1600、1700は、第2映像の深度バッファ及びカラーバッファに含まれた第2映像の第1タイルないし第nタイルそれぞれの深度バッファ及びカラーバッファを内部メモリから順次に読み取り、タイルレンダリングを行うことができる。すなわち、デバイス1500、1600、1700は、第2映像の第nタイルの深度バッファ及びカラーバッファを内部メモリから読み取り、内部バッファに保存することができる。次に、デバイス1500、1600、1700は、内部バッファに保存された第nタイルの深度バッファ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の第nタイルのピクセルを選択してレンダリングを行うことができる。レンダリング遂行結果として決定された第nタイルのピクセルのカラー値は、第nタイルのカラーバッファに保存され、第nタイルのカラーバッファは、内部メモリに保存される。また、デバイス1500、1600、1700は、他の実施形態によって、保存済みのオクルージョンマップ及びカラーバッファに基づいて、第1映像のピクセルと対応しない第2映像の他の一部ピクセルを選択してレンダリングを行うことができる。すなわち、一実施形態によるデバイス1500、1600、1700は、オクルージョンマップに基づいて、第2映像のカラーバッファに含まれた第2映像の第1タイルないし第nタイルそれぞれのカラーバッファを内部メモリから順次に読み取り、タイルレンダリングを行うことができる。
また、一実施形態によるデバイス1500、1600、1700は、第2映像の第1タイルないし第nタイルに対するスケジューリングを行うことができ、スケジューリングによってデバイス1500、1600、1700は、第2映像の第1タイルないし第nタイルに対するタイルレンダリングを行うことができる。
デバイス1500、1600、1700は、一実施形態によって、オクルージョンマップに基づいて、第2映像の第1タイルないし第nタイルそれぞれに対するスケジューリングを行うか否かということを決定することができる。次に、デバイス1500、1600、1700は、スケジューリングを行うと決定されたタイルに対するタイルレンダリングを行うことができる。すなわち、デバイス1500、1600、1700は、オクルージョンマップによって決定された第2映像の所定のタイルについては、スケジューリングを省略することができ、結果として、デバイス1500、1600、1700は、所定のタイルに対するレンダリングを省略することができる。一実施形態によるデバイス1500、1600、1700は、オクルージョンマップに基づいて、第2映像の第1タイルのピクセルのうち第1映像のピクセルと対応するピクセルがあるか否かということを確認することができ、第1映像のピクセルと対応するピクセルが第1タイルになければ、デバイス1500、1600、1700は、第1タイルに対するスケジューリングを省略することができる。従って、デバイス1500、1600、1700は、第2映像の第1タイルに対するレンダリングを省略することができる。また、一実施形態によるデバイス1500、1600、1700は、オクルージョンマップを生成するとき、第2映像の各タイルごとに、第1ピクセルと対応するピクセルの個数をオクルージョンマップのヘッダ情報として生成することができる。従って、デバイス1500、1600、1700は、オクルージョンマップのヘッダ情報を確認し、第2映像の各タイルごとに、スケジューリングを省略するか否かということを決定することができる。
図21は、一実施形態によるデバイス2100のブロック図を示している。
一実施形態によるデバイス2100は、GPU2150、CPU2140、メモリ2160、バス2170、ディスプレイ部2110、入力部2120及び通信部2130を含む。図21に図示されたデバイス2100には、実施形態に係わる構成要素だけが図示されている。従って、図21に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
GPU2150及びメモリ2160は、図1のGPU110及びメモリ120で説明した内容、図4のGPU410及びメモリ420で説明した内容、図11のGPU1110及びメモリ1120で説明した内容、図15のGPU1530及びメモリ1540、図16のGPU1630及びメモリ1640、または図17のGPU1730及びメモリ1740で説明した内容を含んでもよいが、重複説明は省略する。
CPU2140は、デバイス2100の全般的な動作及び機能を制御するハードウェアである。例えば、CPU2140は、運用体制(OS:operating system)を駆動し、GPU2150のためのグラフィックスAPI(application program interface)を呼び出し、GPU2150のドライバを実行させることができる。また、CPU2140は、メモリ2160に保存された多様なアプリケーション、例えば、ウェブブラウジングアプリケーション、ゲームアプリケーション、ビデオアプリケーションなどを実行することができる。
ディスプレイ部2110は、デバイス2100で処理されていたり、あるいは処理される情報などの各種情報をユーザに表示するための表示インターフェーシング手段である。ディスプレイ部2110は、デバイス2100で処理される情報をユーザに視覚的であって直観的に提供するためのGUI(graphic user interface)をディスプレイすることもできる。例えば、ディスプレイ部2110は、GPU2150によって処理されたグラフィックデータをディスプレイすることができる。ディスプレイ部2110は、LCD(liquid crystal display)、LED(light emitting diode)、PDP(plasma display panel)などの多様なディスプレイパネルによって具現化される。
入力部2120は、ユーザから情報を入力されるための、入力インターフェーシング手段である。入力部2120は、タッチパッド、トラックボール、マウス、キーボード、ゲーム用コントローラのような形態によって具現化される。ディスプレイ部2110と入力部2120は、一体化されたタッチスクリーンのハードウェアによっても具現化される。
通信部2130は、移動通信のための移動通信モジュール、有線/無線LAN(local area network)モジュール、近距離無線通信のためのWi−Fi(wireless fidelity)モジュール、Bluetooth(登録商標)モジュール、NFC(near field communication)モジュールなどを含んでもよい。
上述の本実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部(permanent storage);外部装置と通信する通信ポート;タッチパネル、キー(key)、ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムよってに具現化される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令として、コンピュータで読み取り可能な記録媒体上に保存される。ここで、コンピュータで読み取り可能な記録媒体として、磁気記録媒体(例えば、ROM(read only memory)、RAM(random access memory)、フロッピー(登録商標)ディスク、ハードディスクなど)及び光学的判読媒体(例えば、CD(compact disc)−ROM、DVD(digital versatile disc))などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式で、コンピュータが判読可能なコードが保存されて実行される。該媒体は、コンピュータによって判読可能であり、メモリに保存され、プロセッサで実行される。
本実施形態は、機能的なブロック構成及び多様な処理段階において示される。そうした機能ブロックは、特定機能を実行する多様な個数のハードウェア構成及び/またはソフトウェア構成によって具現化される。例えば、該実施形態は、1以上のマイクロプロセッサの制御、または他の制御装置によって多様な機能を実行することができる、メモリ、プロセッシング、ロジック(logic)、ルックアップテーブル(look-up table)のような直接回路構成を採用することができる。構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるところと類似して、本実施形態は、データ構造、プロセス、ルーチンまたは他のプログラミング構成の組み合わせによって具現化される多様なアルゴリズムを含み、C、C++、ジャバ(登録商標(Java))、アセンブラ(assembler)のようなプログラミング言語またはスクリプティング言語によって具現化される。機能的な側面は、1以上のプロセッサで実行されるアルゴリズムによって具現化される。また、本実施形態は、電子的な環境設定、信号処理及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、広く使用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋し、ソフトウェアの一連の処理(routines)の意味を含んでもよい。
本実施形態で説明する特定の実施例は、例示であり、いかなる方法によっても技術的範囲を限定するものではない。明細書の簡潔化のために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略される。また、図面に図示された構成要素間の線の連結または連結部材は、機能的な連結及び/または物理的または回路的な連結を例示的に示したものであり、実際の装置では、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路の連結として示される。
本明細書(特に、特許請求の範囲で)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもに該当する。また、範囲(range)を記載した場合、前記範囲に属する個別的な値を含むものであり(それに反する記載がなければ)、詳細な説明において、前記範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載するか、あるいはそれに反する記載がなければ、前記段階は、適切な順序で遂行される。必ずしも前記段階の記載順序に限定されるものではない。全ての例または例示的な用語(例えば、など)の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前記例または例示的な用語によって、範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲またはその均等物の範疇内で、設計条件及びファクタによって構成されるということが分かるであろう。