(57)【要約】ディスプレー画面上に立体画像をレンダリングするコンピュータグラフィックスプロセッサ（２０、５０）ならびに方法である。かかるコンピュータグラフィックスプロセッサ（２０、５０）は、プリミティブの投影後に、当該プリミティブのピクセルトラバーサル処理を実行するよう構成されたラスタライザ（２３、５３）を備えている。さらに、ラスタライザ（２３、５３）は、１又はいくつかのビューについて、次のプリミティブの画素横断処理を実行する前に、複数のビューについて最初のプリミティブの画素横断処理を実行するよう構成される。【選択図面】図２.
2009517770.tif 000002
【特許請求の範囲】
【請求項１】
プリミティブの投影後に、当該プリミティブのピクセルトラバーサルを実行するよう構成されたラスタライザ（２３、５３）を備えた、ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサ（２０、５０）であって、前記ラスタライザ（２３、５３）は、一以上のビューについて次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するよう構成されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項２】
請求項１のコンピュータグラフィックスプロセッサ（２０、５０）において、前記ラスタライザ（２３、５３）は、前記複数のビューの全てのビューについて前記次のプリミティブのピクセルトラバーサルを実行する前に、前記複数のビューの全てのビューについて前記第一のプリミティブのピクセルトラバーサルを実行するよう構成されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項３】
請求項１又は請求項２のコンピュータグラフィックスプロセッサ（２０、５０）において、前記ラスタライザ（２３、５３）は、前記第一のプリミティブが完全にトラバースされるまでであって、前記第一のプリミティブと同様の方法により次のプリミティブのピクセルトラバーサルが実行される前に、前記第一のプリミティブのペアであって、当該ペアが画素のグループおよび特定のビューを備えたものについてピクセルトラバーサルを実行し、次に、前記第一のプリミティブの他のペア、それに続くペアについてもピクセルトラバーサルを続行するよう構成されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項４】
請求項３のコンピュータグラフィックスプロセッサ（２０、５０）において、前記ラスタライザ（２３、５３）は、前記プリミティブの前記ピクセルトラバーサル中に、当該ラスタライザ（２３、５３）により前記ペアが処理される順序を決定するため適合される、セレクタ（３０、６０）に動作可能に接続されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項５】
請求項４のコンピュータグラフィックスプロセッサ（２０、５０）において、前記セレクタ（３０、６０）は、前記複数のビューの各ビューについての効率的な尺度(efficiency measure)に基づいて、前記順序を決定するよう構成され、当該セレクタ（３０、６０）は、テクスチャ空間における前記テクスチャトラバーサル方向(du、dv)上の画素グループの代表点の前記テクスチャ座標(tui、tvi)を投影することに対応する
【数３】
2009517770.tif 000008
に基づいて、効率的な尺度を決定するよう構成され、Miは、ビューiについての効率的な尺度であり、前記画素グループは、ビューiについての次の移動対象であり、次の移動対象について選択されたビューは、ビューｋであり、Mkは全てのＭiの最も小さい値であること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項６】
先行するいずれの請求項にかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサ（５０）は、
少なくとも第一のビューについて、フラグメントシェーダプログラムを実行することにより、前記少なくとも第一のビューのフラグメントを生成し、
少なくとも第二のビューについて、前記少なくとも第一のビューの前記生成されたフラグメントに基づき、前記少なくとも第二のビューのフラグメントを生成するよう、適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項７】
請求項６のコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサ（５０）は、メモリ（６２）を備えており、
前記第一ビューの前記生成されたフラグメントを前記メモリ（６２）中に一時的に記憶し、
前記第二のビューについては、前記第二ビューの前記フラグメントの位置を前記第一ビュー内に投影することにより、当該第二のビューのフラグメントの位置を生成し、
前記第二ビューの前記フラグメントの前記投影された位置の近傍の前記第一のビューのフラグメントが、前記メモリ（６２）内に記憶されている場合、前記近傍における前記フラグメントに基づいて前記第二ビューの前記フラグメントを生成し、あるいは、そうではなく、
前記第二ビューの前記フラグメントについて、前記フラグメントシェーダプログラムを実行することにより、前記第二ビューの前記フラグメントを生成するよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項８】
請求項７にかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサは、前記第二ビューの前記フラグメントについてのテクスチャ座標を生成し、前記第二ビューの前記フラグメントの位置を前記第一ビュー内に投影するため、これらのテクスチャ座標を用いるよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項９】
請求項７から請求項８のいずれにかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサ（５０）は、前記近傍内の前記フラグメントに基づき、前記近傍における前記フラグメントの加重平均(weighted average)として、前記第二ビューの前記フラグメントを生成するよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項１０】
請求項７から請求項８のいずれにかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサ（５０）は、
前記近傍内の前記第一ビューの少なくとも２つのフラグメントが前記メモリ（６２）内に記憶されている場合に、前記投影された位置に最も近い前記少なくとも２つのフラグメントの前記２つについて直線的補間(linear interpolation)を実行することにより、前記第二ビューの前記フラグメントを生成し、あるいは、
前記近傍内の前記第一ビューの正確な１つのフラグメントが前記メモリ（６２）内に記憶されている場合には、前記正確な１つのフラグメントと同様の前記第二ビューの前記フラグメントを生成するよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項１１】
請求項６にかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサは、メモリ（６２）を備えており、
前記第一ビューの前記生成されたフラグメントを前記メモリ（６２）中に一時的に記憶し、
第二のビューについては、その算術平均(arithmetic average)が前記第二ビューの前記フラグメントの位置である２つの位置を、前記第一のビュー内に投影することにより、前記第二ビューのフラグメントを生成し、
前記投影された位置の近傍の前記第一のビューのフラグメントが、前記メモリ（６２）内に記憶されている場合、前記近傍における前記フラグメントに基づいて前記第二ビューの前記フラグメントを生成し、あるいは、そうではなく、
前記第二ビューの前記フラグメントについて、前記フラグメントシェーダプログラムを実行することにより、当該第二のビューの前記フラグメントを生成するよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項１２】
先行するいずれの請求項にかかるコンピュータグラフィックスプロセッサ（５０）において、当該コンピュータグラフィックスプロセッサ（５０）は、一部又は全てのビューのフラグメントを、共通のカラーバッファにおいて重み付けするよう適合されること、
を特徴とするコンピュータグラフィックスプロセッサ。
【請求項１３】
プリミティブの投影後に、当該プリミティブのピクセルトラバーサルを実行するステップを備えた、ディスプレー上に立体画像をレンダリングする方法であって、
一以上の次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するステップを備えたこと、
を特徴とする方法。
【請求項１４】
請求項１３の方法において、前記実行するステップは、前記複数のビューの全てのビューについて次のプリミティブのピクセルトラバーサルを実行する前に、前記複数のビューの全てのビューについて、前記第一プリミティブの前記ピクセルトラバーサルを実行するステップ、を備えたこと、
を特徴とする方法。
【請求項１５】
請求項１３又は請求項１４の方法において、前記実行するステップは、前記第一のプリミティブが完全にトラバースされるまでであって、前記第一のプリミティブと次のプリミティブのピクセルトラバーサルが実行される前に、前記第一のプリミティブのペアであって、当該ペアが画素のグループおよび特定のビューを備えたものについてピクセルトラバーサルを実行し、次に、前記第一のプリミティブの他のペア、それに続くペアについてもピクセルトラバーサルを続行するステップを備えたこと、
を特徴とする方法。
【請求項１６】
請求項１５の方法であって、さらに、前記プリミティブの前記ピクセルトラバーサル中に、前記ペアが処理される順序を決定するステップを備えたこと、
を特徴とする方法。
【請求項１７】
請求項１６の方法において、前記順序を決定するステップは、前記複数のビューの各ビューについての効率的な尺度に基づいて、前記順序を決定するステップ、ならびに、テクスチャ空間における前記テクスチャトラバーサル方向(du、dv)上の画素グループの代表点の前記テクスチャ座標(tui、tvi)を投影することに対応する
【数３】
2009517770.tif 000009
に基づいて、効率的な尺度を決定するステップを備え、Miは、ビューiについての効率的な尺度であり、前記画素グループは、ビューiについての次の移動対象であり、次の移動対象について選択されたビューは、ビューｋであり、Mkは全てのＭiの最も小さい値であること、
を特徴とする方法。
【請求項１８】
請求項１３から請求項１７のいずれの請求項にかかる方法であって、
フラグメントシェーダプログラムを実行することにより、少なくとも第一ビューのフラグメントを生成するステップ、ならびに
前記少なくとも第一ビューの前記生成されたフラグメントに基づき、少なくとも第二ビューのフラグメント生成するステップ、を備えたこと、
を特徴とする方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスの分野に関する。より具体的に述べると、本発明は、ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびに方法に関する。
【関連技術】
【０００２】
ディスプレースクリーン上に立体（３Ｄ）画像を表示することは、より一般的なものになりつつある。立体映像は、たとえば、ステレオイメージ、ホログラフィック技術、あるいは、ディスプレーを複数平面にすること等を用いることによって創り出すことができる。したがって、立体画像は、立体のシーンから創り出された二次元画像のセットであってもよい。すなわち、二次元画像のセットは、立体のインプレッションを集めることにより生成されている。かかるセットは、少なくとも一の画像を含んでいる。
【０００３】
ステレオイメージを創り出すために、異なる方法が存在する。かかるイメージは、たとえば、二次元（２Ｄ）表示の時分割であってもよいが、通常、これには、視聴者が特別なメガネ等の属性を身につけることが要求される。ステレオイメージが同時に表示される場合、かかるイメージは、偏向メガネ又は頭装着型ディスプレーを用いて適切な目に誘導することができる。この解決手法の欠点は、通常、２つの画像では、”周囲を見回す(look around)”能力しか創り出すことしかできないことである。また、立体効果を得るためには、視聴者がメガネ又は頭装着型ディスプレーを身につけなければならないことが挙げられる。このことは、視聴者にとって不愉快であろう。
【０００４】
代替的な解決法においては、パララックスバリア(parallax barrier)等の画面を分割する手段によってディスプレースクリーン上で前記ステレオイメージが分割される。かかるディスプレースクリーンは、ディスプレースクリーン上の立体画像を見るために特殊なメガネ又は他の周辺機器を必要としないことを意味する裸眼立体(autostereoscopic)画面であってもよい。しかし、通常、この解決法は、固定した位置における一人の視聴者のためだけに機能する。また、”視野角(viewing zone)”は狭い。”視野角”の外側において、観察者は、複数の画像又はステレオ反転(stereo inversion)を見ることになる。このことは、表示された立体画像の不快な見方に、導かれてしまう。
【０００５】
２００５年にマット・ファルによって編集され、アディソン・ウェズレィにより発行された”ジーフォースシリーズ  ＧＰＵアーキテクチャ（ＧＰＵ  Gems 2)”においてエメット・キルガリフ氏ならびにランディ・フェルナンド氏により、コンピュータグラフィックスプロセッサ（ＣＧＰ）が提案されている。図１は、かかる従来のＣＧＰ１０のブロック図を示している。ＣＧＰ１０は、プログラム可能なバーテックスシェーダＰＶＳ１１を備えてもよい。かかるＰＶＳ１１は、バーテックス毎の演算を実行するため適用してもよい。かかるバーテックス毎の演算は、図１に示されたＣＧＰパイプライン(CGP pipeline)を介して送られた各バーテックスに適用してもよい。当該バーテックス毎の演算は、たとえば様々なマトリクス変換（たとえば、対象物を活動させ、位置させ、適応させるため）、投影、照明についての演算、スキニング(skinning)、アニメーション、ならびに他のバーテックス毎の演算を含むようにしてもよい。
【０００６】
一般に、ＰＶＳ１１が自身の動作を終えると、バーテックスがスクリーン空間に変換されている。また、他の様々なバーテックス毎のデータ、たとえば、テクスチャ座標、拡散ならびに鏡面反射色と同等の属性(attributes like diffuse and specular color)を、前記バーテックスとともに図１のＣＧＰパイプラインの下方に送るようにしてもよい。次に、頂点を、たとえば、三角形、多角形、線、点、曲面等のプリミティブと呼ばれるグループにしてもよい。
【０００７】
また、ＣＧＰ１０は、ラスタライザ設定ユニットＲＳＵ１２を備えてもよい。当該ＲＳＵ１２は、たとえば、プリミティブ毎の動作、視認できないプリミティブの除去、画面の可視領域を横切るプリミティブをクリップ、あるいは、ラスタライゼーション等の準備のためのデータについてエッジおよび平面方程式(plane equation)の設定を実行するために適合するようにしてもよい。
【０００８】
また、ＣＧＰ１０は、ラスタライザ１３を備えてもよい。かかるラスタライザ１３は、どの画素位置（又は、複数のサンプリングが可能な場合は、サンプル）が、各投影されたプリミティブによって覆われるかを判断するため適合するようにしてもよい。これらは、”候補となる画素(candidate pixels)”として考えられるので、通常、これらの画素位置は、”フラグメント”と呼ばれる。なぜなら、これらがカラーバッファ、あるいは、フレームバッファ１９内に備えられたデプスバッファ(depth buffer)等の他のバッファ内に行き着くからである。かかるフラグメントは、Ｚカリングユニット（z-cull unit)１４に転送してもよい。保守的なテストを用いることにより、前記Ｚカリングユニット１４は、デプスバッファのコンテンツに関するフラグメントのグループが隠れている（すなわち、既にプリミティブがレンダリングされた）か否かについて判断することが可能となる。これにより、デプス(depth)が読み取られ、場合によっては、テクスチャリングが行われ、隠れたフラグメントについてフラグメントプログラムの実行を回避することが可能となる。これにより性能が向上する。
【０００９】
Ｚカリングユニット１４を通るプリミティブ内部のフラグメントについては、フラグメント処理ユニットＦＰＵ１５内でフラグメントシェーダプログラムを実行してもよい。たとえば、画素毎の演算ならびにメモリの取り出し(memory fetch)を実行するため、かかるＦＰＵ１５を適合するようにしてもよい。当該ＦＰＵ１５によって実行される処理を、ＦＰＵ１５に達する全てのフラグメントに適用してもよい。たとえば、テクスチャからのメモリの取り出し、ならびに、テクスチャからの結果を、画素毎の拡散およびスペキュラーシェーディング、あるいは、バンプマッピング等により演算された現実的な照明等の他の演算値との合併を実行するため前記ＦＰＵを適合するようにしてもよい。
【００１０】
ＦＰＵ１５により実行されるメモリの取り出しは、画像テクスチャへのアクセスを含んでもよく、これは、通常、テクスチャキャッシュメモリ装置ＴＣＭ１６を介して実行される。これは、テクスチャ帯域についての要求を低くするために実行される。テクスチャキャッシュメモリ装置１６においてデータが利用可能でない場合、かかるキャッシュのデータの一部が削除され、たとえば、外部メモリ装置ＥＸＭ１７から取り込むことが可能な所望データに置き換えられる。前記テクスチャキャッシュ１６の目標は、通常、外部メモリ１７からのメモリの取り出しを少なくすることである。
【００１１】
図１に示す従来のＣＧＰ１０において、フラグメントは、フラグメント処理ユニットにより、それらがラスタライズされ、”Ｚ−比較兼混合(Z-compare&blend)”ユニットであるＺＣ＆Ｂ１８に送られるような順番で処理がなされるようにする。かかるＺＣ＆Ｂユニット１８は、全てのプリミティブがレンダリングがされた場合に、視聴者に最も近い対象物が示されていることを確認するため等のデプスバッファに対するデプステスト（比較）を、各フラグメントについて実行するため適合してもよい。前記ＺＣ＆Ｂユニット１８は、たとえばステンシル動作、αブレンディング(alpha blending)等の他のテストを実行するため適合してもよい。最後に、もたらされた色を、フレームバッファ１９に書き込んでもよい。かかるフレームバッファ１９は、たとえば、カラーバッファ、デプスバッファ、ステンシルバッファ等を備えてもよい。ＣＧＰパイプライン１０全体を通じて全てのプリミティブが送られると、画像がレンダリングされ、これにより、たとえば、表示画面上への表示準備が整う。
【００１２】
マルチビューシステムを用いることが、ますます一般的になっている。マルチビューシステムは、何人かの視聴者に対して同時にステレオイメージを提供するとともに、比較的大きな視角を提供することが可能である。ビューの数が多ければ多いほど、通常は画質の向上を期待することができる。ディスプレーが表示すことが可能なビューの数（Ｎ）によって、画質ならびにディスプレースクリーン上に表すことが出来る運動視差(motion parallax)の全体を決定してもよい。
【００１３】
しかし、図１に示されたＣＧＰパイプラインは、１つのビューのためだけに用いられる。したがって、従来のＣＧＰ１０がＮ個の複数のビューのレンダリングのために用いられる場合、同じシーンは、各ビューについて１回、１個１個、Ｎ回レンダリングされる。一般に、特定のビューの全てのプリミティブは、次のビューの全てのプリミティブがＣＧＰ１０全体により処理される前に、ＣＧＰ１０全体によって処理される。このことは、性能の観点からは不利である。たとえば、立体のシーンがレンダリングされる場合、通常、シーンの異なる部分において多くの異なるテクスチャ画像が用いられる。Ｔ１およびＴ２で表される２つのテクスチャが、あるシーンで用いられると仮定する。まず、Ｔ１は、プリミティブのセットに適用され、ビュー１のためにレンダリングされ、次に、Ｔ２が、他のプリミティブのセットに適用され、ビュー１のためにレンダリングされる。テクスチャは一般に大きく、テクスチャキャッシュメモリ装置は一般に小さいので、ビュー１からのシーンが、ビュー１からのシーンのレンダリングが完了すると、Ｔ２からの画素のみがテクスチャキャッシュメモリ装置１６内に存することになる。しかし、ビュー２のレンダリングが開始されると、テクスチャＴ１を有するプリミティブがレンダリングされ、これにより、キャッシュコンテンツ（現在ではテクスチャＴ２からの画素を備える）を使うことができなくなる。
【００１４】
また、テクスチャデータは、各ビューについてテクスチャキャッシュメモリ装置１６から独立して持ってこられるので、従来のＣＧＰは、メモリ帯域の観点からも値の張るものになってしまう。これに代えて、前記ＣＧＰは、Ｎ個のＣＧＰが並列に用いられよう複製が可能である。しかし、この複製のため、ハードウエアの観点から高価なものになってしまう。さらに、これは、リソースの観点からコストがかかりすぎる。しかも、これは、Ｎ個の異なるＣＧＰ間の同期が必要となる。
【００１５】
【非特許文献１】アディソン・ウェズレィ発行  ”ジーフォースシリーズ  ＧＰＵアーキテクチャ（ＧＰＵ  Gems 2)”２００５年発行
【００１６】
【非特許文献２】ランス・ウィリアムスウィリアムス著  ”ピラミッド形パラメトリックス”コンピュータグラフィクス(ACM  SIGGRAPH83の会報)、１９８３年発行
【００１７】
【非特許文献３】トーマス・アケニン−モーラー及びジェイコブ・ストローム著  ”みんなためのグラフィックス：携帯電話用のハードウエアラスタライゼーションアーキテクチャ”グラフィックスにおけるＡＣＭトランザクション、２００３年７月発行
【発明の開示】
【００１８】
本発明の目的は、改良されたコンピュータグラフィックスプロセッサを提供することである。
【００１９】
第一の側面によると、ディスプレー上に立体画像をレンダリングするコンピュータグラフィックスプロセッサが提供される。かかるコンピュータグラフィックスプロセッサは、プリミティブの投影後に、当該プリミティブのピクセルトラバーサルを実行するよう構成される。また、当該ラスタライザは、一以上のビューについて次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するよう構成される。
【００２０】
前記ラスタライザは、前記複数のビューの全てのビューについて前記次のプリミティブのピクセルトラバーサルを実行する前に、前記複数のビューの全てのビューについて前記第一のプリミティブのピクセルトラバーサルを実行するよう構成するようにしてもよい。
【００２１】
さらに、前記ラスタライザは、前記第一のプリミティブが完全にトラバースされるまでであって、前記第一のプリミティブと同様の方法により次のプリミティブのピクセルトラバーサルが実行される前に、前記第一のプリミティブのペアであって、当該ペアが画素のグループおよび特定のビューにより定義されたものについてピクセルトラバーサルを実行し、次に、前記第一のプリミティブの他のペア、それに続くペアについてもピクセルトラバーサルを続行するよう構成してもよい。
【００２２】
また、前記ラスタライザは、前記プリミティブの前記ピクセルトラバーサル中に、当該ラスタライザにより前記ペアが処理される順序を決定するため適合される、セレクタに動作可能に接続してもよい。かかるセレクタは、前記複数のビューの各ビューについての効率的な尺度に基づいて、前記順序を決定するよう構成される。また、当該セレクタは、テクスチャ空間における前記テクスチャトラバーサル方向(du、dv)上の画素グループの代表点の前記テクスチャ座標(tui、tvi)を投影することに対応する
【００２３】
【数３】
2009517770.tif 000003
【００２４】
に基づいて、効率的な尺度を決定するよう構成され、Miは、ビューiについての効率的な尺度であり、前記画素グループは、ビューiについての次の移動対象であり、次の移動対象について選択されたビューは、ビューｋであり、Mkは全てのＭiの最も小さい値である。
【００２５】
前記コンピュータグラフィックスプロセッサは、少なくとも第一のビューについて、フラグメントシェーダプログラムを実行することにより、前記少なくとも第一のビューのフラグメントを生成するため適合してもよい。当該コンピュータグラフィックスプロセッサは、さらに、少なくとも第二のビューについて、前記少なくとも第一のビューの前記生成されたフラグメントに基づき、前記少なくとも第二のビューのフラグメントを生成するよう適合してもよい。
【００２６】
前記コンピュータグラフィックスプロセッサは、メモリを備え、前記第一ビューの前記生成されたフラグメントを前記メモリ中に一時的に記憶するよう適合してもよい。
【００２７】
当該第二のビューのフラグメントの位置を、前記第一のビュー内に投影してもよい。前記第二ビューのフラグメントの前記投影された位置の近傍の前記第一のビューのフラグメントが、前記メモリ内に記憶されている場合、前記近傍における前記フラグメントに基づいて前記第二ビューの前記フラグメントを生成してもよい。そうでなければ、前記フラグメントシェーダプログラムを実行することにより、前記第二ビューの前記フラグメントを生成してもよい。
【００２８】
前記コンピュータグラフィックスプロセッサは、前記第二ビューの前記フラグメントについてのテクスチャ座標を生成し、前記第二ビューの前記フラグメントの位置を前記第一ビュー内に投影するため、これらのテクスチャ座標を用いるよう適合してもよい。
【００２９】
当該コンピュータグラフィックスプロセッサは、前記近傍内の前記フラグメントに基づき、前記近傍における前記フラグメントの加重平均として、前記第二ビューの前記フラグメントを生成するよう適合してもよい。
【００３０】
前記近傍内の前記第一ビューの少なくとも２つのフラグメントが前記メモリ内に記憶されている場合に、前記投影された位置に最も近い前記少なくとも２つのフラグメントの前記２つについて直線的補間を実行することにより、前記第二ビューの前記フラグメントを生成してもよい。前記近傍内の前記第一ビューの正確な１つのフラグメントが前記メモリ内に記憶されている場合には、前記正確な１つのフラグメントと同様の前記第二ビューの前記フラグメントを生成してもよい。
【００３１】
その算術平均が前記第二ビューの前記フラグメントの位置である２つの位置を、前記第一のビュー内に投影してもよい。前記投影された位置の近傍の前記第一のビューのフラグメントが、前記メモリ内に記憶されている場合、前記近傍における前記フラグメントに基づいて前記第二ビューの前記フラグメントを生成してもよい。そうでなければ、前記フラグメントシェーダプログラムを実行することにより、当該第二のビューのフラグメントを生成してもよい。
【００３２】
前記コンピュータグラフィックスプロセッサは、一部又は全てのビューのフラグメントを、共通のカラーバッファにおいて重み付けするよう適合してもよい。
【００３３】
第二の側面によると、ディスプレー上に立体画像をレンダリングする方法であって、一以上の次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するステップを備えた方法が提供される。かかる方法は、一以上の次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するステップを備えている。
【００３４】
前記実行するステップは、前記複数のビューの全てのビューについての、次のプリミティブのピクセルトラバーサルを実行する前に、前記複数のビューの全てのビューについて、前記第一プリミティブの前記ピクセルトラバーサルを実行するステップを備えてもよい。
【００３５】
また、前記実行するステップは、前記第一のプリミティブが完全にトラバースされるまでであって、前記第一のプリミティブと次のプリミティブのピクセルトラバーサルが実行される前に、前記第一のプリミティブのペアであって、当該ペアが画素のグループおよび特定のビューにより定義されるものについてピクセルトラバーサルを実行し、次に、前記第一のプリミティブの他のペア、それに続くペアについてもピクセルトラバーサルを続行するステップを備えてもよい。
【００３６】
前記方法は、前記プリミティブの前記ピクセルトラバーサル中に、前記ペアが処理される順序を決定するステップを備えてもよい。当該順序を決定するステップは、さらに、前記複数のビューの各ビューについての効率的尺度に基づいて、前記順序を決定するステップ、ならびに、
【００３７】
【数３】
2009517770.tif 000004
【００３８】
に基づいて、効率的尺度を決定するステップを備え、ここで、Miは、ビューiについての効率的尺度であり、ここで、(du、dv)は、テクスチャ空間におけるテクスチャトラバーサル方向を表し、(fu、fv)は、前記テクスチャ空間における前記テクスチャトラバーサル方向上の画素の座標を示し、(tui、tvi)は、トラバーサルの対象となるビューiの次の画素についての前記テクスチャ空間における座標を表している。
【００３９】
前記方法は、フラグメントシェーダプログラムを実行することにより、少なくとも第一ビューのフラグメントを生成するステップ、ならびに、前記第一ビューの前記生成されたフラグメントに基づき、少なくとも第二ビューのフラグメントを生成するステップを備えてもよい。
【００４０】
第三の側面によると、コンピュータプログラム製品が提供される。かかるコンピュータプログラム製品は、コンピュータ機能を有する電子装置により前記コンピュータプログラムコード手段が動作する場合に、前記第二の側面に基づく方法を実行するためのコンピュータプログラムコード手段を備えている。
【００４１】
第四の側面によると、コンピュータ可読媒体が提供される。かかるコンピュータ可読媒体は、その上に、コンピュータ機能を有する電子装置により前記コンピュータプログラムコード手段が動作する場合に、前記第二の側面に基づく方法を実行するためのコンピュータプログラムコード手段を備えたコンピュータプログラム製品を記憶している。
【００４２】
また、本発明の実施形態は、従属請求項において定義される。
【００４３】
本発明の実施形態は、コンピュータグラフィックスプロセッサを動作させるのに必要とされるメモリ帯域幅を低減することが可能となる。さらに、本発明のいくつかの実施形態は、コンピュータグラフィックスプロセッサにより実行されるフラグメントシェーダプログラムの数を少なくすることができる。
【００４４】
本明細書において用いられる場合の”備えた／備える”という用語は、記載された特徴、整数(integers)、ステップ、あるいは部品の存在ついて特定するためのものであると理解されるべきであるが、一以上の他の特徴、整数、ステップ、部品、あるいは、それらのグループが存在すること又は追加することを排除するためのものでないことが強調されるべきである。
【実施形態の詳細な説明】
【００４５】
本発明の他の目的、特徴ならびに効果は、以下の実施形態の詳細な説明、添付された図面を参照することから明らかになる。
【００４６】
図２は、本発明の実施形態に基づくコンピュータグラフィクスプロセッサ（ＣＧＰ）２０を示している。かかるＣＧＰ２０は、一以上のディスプレースクリーン上に立体画像をレンダリングするため用いることができる。また、当該ＣＧＰ２０は、プリミティブの投影後にプリミティブのピクセルトラバーサルを実行するよう構成されたラスタライザ２３を備えている。前記プリミティブは、三角形、多角形、線、点、曲面等であってもよい。Ｎ個のビューを有するマルチビューシステムにおいて、投影されたプリミティブは、Ｎ個のビューの複数それぞれについてスクリーン空間の一部を占めてもよい。また、ピクセルトラバーサルは、ラスタライザ２３により実行されるプロセスであり、どの画素位置（あるいは、マルチサンプリングが可能な場合には、サンプル）が、レンダリングされるプリミティブの内側にあるか判断される。
【００４７】
ラスタライザ２３は、一以上のビューについての次のプリミティブのピクセルトラバーサルを実行する前に、複数のビューについて第一のプリミティブのピクセルトラバーサルを実行するよう構成するようにしてもよい。また、ラスタライザ２３は、Ｎ個のビューの全てのビューについての次のプリミティブのピクセルトラバーサルを実行する前に、Ｎ個のビューの全てのビューについての前記第一プリミティブのピクセルトラバーサルを実行するよう構成してもよい。さらに、ラスタライザ２３は、次のプリミティブのピクセルトラバーサルを実行する前に、全て又は複数のビューについて第一のプリミティブがレンダリングされるまで、”ペア(pair)”についてのピクセルトラバーサルを実行し、それに続いて他のペア、その他のペア等々についてのピクセルトラバーサルを実行しするよう構成してもよい。ここで用いたように、用語”ペア”は、画素のグループかつ特定のビューとして定義されるものと理解されるべきである。上のことを例証するため、プリミティブＰは、ディスプレースクリーンに異なるビューを投影するものと仮定する。このビューは、１からＮまで列挙される、ここで、Ｎは、ビューの総計である。各ビューに投影されたプリミティブは、Ｐiと呼ばれ、ここで、iは、ビューの数である。投影されたプリミティブＰは、第一ビューがＰ１と表され、第二ビューがＰ２と、Ｎ番目のビューがＰＮと表される。本発明のいくつかの実施形態によれば、ピクセルトラバーサル法を実施してもよく、ここで、ＰＮがレンダリングされるまで、Ｐ１が、最初に、次に、Ｐ２、Ｐ３等がレンダリングされる。Ｎ個のビュー全てについての第一のプリミティブＰがレンダリングされると、同様に、Ｎ個のビュー全てについての第二のプリミティブＰ'等、他のプリミティブについてレンダリングしてもよい。これにより、Ｎ近傍のビューについてのレンダリングにおける干渉性を悪用する(exploiting the coherency)効果を得ることが可能となる。たとえば、２つのビューについての互いに隣接する生成された画像は、非常によく似ているので、ここには、たくさんの干渉が存在する。したがって、アクセスされた各フラグメントにフラグメントプログラムを適用するプリミティブをレンダリングする場合、Ｐ１をレンダリングする場合に用いられたテクスチャからの画素が、Ｐ２、Ｐ３等をレンダリングする場合にテクスチャのキャッシュメモリ装置２６内に存する可能性が高い。これは、Ｎ個の異なるビューがほぼ同様のものであるという事実から生じた結果である。これによりテクスチャメモリの帯域を有効に利用することが可能となる。したがって、性能上の効果を期待することができる。一般に、コンピュータグラフィックスプロセッサにおいて、テクスチャリングは、メモリ帯域を消費する主要なものの１つであるので、このことが言える。
【００４８】
本発明の実施形態であって、２つの異なるビューについてのプリミティブがレンダリングされる場合について以下で説明する。しかし、これは制限的ではなく、例示的に解釈すべきである。このように、以下の推論は、Ｎ個のビューを伴うマルチビューシステムであって、ここで、Ｎ＞２であるものにも適用される。この例においては、２つの異なるビューが、Ｖ１およびＶ２として表されている。図２に示すように、ＣＧＰ２０は、２つのビューＶ１およびＶ２についてのバーテックス毎の(per-vertex)演算を実行するため適用される、プログラム可能なバーテックスシェーダＰＶＳ２１を備えてもよい。ビューのパラメータに依存する演算が複製される必要がある場合がある。しかし、両方のビューについて同じでもよい演算が多く存在しており、これらは１度演算する必要があるだけである。かかる演算は、たとえば、バーテックス毎のディスプレースメントマッピングあるいはディフューズシェーディングを含んでもよい。前記ＰＶＳ２１は、ラスタライザ設定ユニットＲＳＵ２２に動作可能に接続されてもよい。
【００４９】
当該ＲＳＵ２２は、ラスタライゼーション等に備えて、プリミティブ毎(per-premitive)の動作、視認できないリモートプリミティブ、スクリーンの視認可能な領域を横断するクリッププリミティブを実行、あるいは、データのエッジおよび平面方程式の設定を実行するために採用されている。前記ＲＳＵ２２は、いくつかの演算を複製する必要がある。前記２つのビューＶ１およびＶ２について、これは、パフォーマンス向上のため並行に、あるいは、ハードウエアを節約するために逐次行われる。しかし、前記２つのビューの間でシェアしてもよい演算も存在する。かかる演算は、たとえば、投影により変化する頂点(vertices)におけるデプス等を含むようにしてもよい。ビューＶ１およびＶ２について特定のプリミティブの設定演算を実行するためにかかるＲＳＵ２２を採用してもよい。
【００５０】
前記ＲＳＵ２２は、ラスタライザ２３に動作可能に接続可能である。ビューＶ１およびＶ２の両方についてスクリーン空間に投影された特定のプリミティブ内の画素を探すため、かかるラスタライザ２３を採用してもよい。いくつかの実施形態において、ラスタライザ２３は、セレクタ３０に動作可能に接続可能である。かかるラスタライザ２３ならびにセレクタ３０は、図２において別のユニットとして示されているが、かかるセレクタ３０がラスタライザ２３に組み込まれるようにしてもよいことを理解するべきである。ラスタライザ２３がどの順番で、ビューＶ１およびＶ２についてのプリミティブを処理すればよいのかを判断するため、かかるセレクタ３０を採用してもよい。たとえば、セレクタ３０によって、再処理される対象としてＶ１が選択されたと仮定する。セレクタ３０によってＶ１が選択されると、ラスタライザ２３は、ビューＶ１について特定のプリミティブ内で画素あるいは画素グループを探すようにしてもよい。このように、選ばれたビューについて特定のプリミティブ内で画素あるいは画素グループを検索するためにラスタライザ２３を採用してもよい。ある実施形態においては、前記２つのビューＶ１およびＶ２の各ビューについての効率的な尺度に基づいて、上述の順序を判断するために前記セレクタ３０を採用してもよい。このことについての詳細を以下に説明する。一般に、ラスタライザ２３により次に処理される画素グループおよび特定のビューを備えるペアを選択するためにセレクタを採用する、と言ってもよい。これにより、ビュー（たとえば、ビューＶ２）について画素グループを選択し、他のビュー（たとえば、ビューＶ１）等について画素グループの選択を続けることが可能である。
【００５１】
別の実施形態において、上記効率的尺度Ｍを更新するため前記セレクタ３０を採用してもよい。したがって、新しい画素あるいは画素のグループの処理を開始可能である場合、前記セレクタ３０が効率的尺度を更新することができる。次に、セレクタ３０は、更新の尺度に基づいて、前記２つのビューのどちらのビューを続けて処理するかを選択可能である。この情報は、ラスタライザ２３に送ってもよい。あるビューが選ばれると、ラスタライザ２３が、それについてのプリミティブにおいて画素あるいは画素のグループを見つけるようにしてもよい。したがって、まず、ラスタライザ２３により第一のビューＶ１からの一部のプリミティブが処理され、続いて、他のビュー（同じビューの場合もある）からの一部のプリミティブがラスタライザ２３によって処理され、それに続いて同様の処理を行うようにしてもよい。したがって、ラスタライザ２３が、どの順序でビューＶ１およびＶ２についての異なる画素のグループの処理をすべきか、について判断するためセレクタを採用してもよい。セレクタによってなされたかかる判断についての詳細を以下に説明する。
【００５２】
セレクタ３０は、特定のビューおよびその画素のグループとして定義されるペアを選び、さらに、他のペアを選択するため採用することも可能である。これを例示するため、ビューＶ１およびＶ２についてのプリミティブが三角形で描かれると仮定する。さらに、かかる三角形が、ビューＶ１について２つの画素グループＰ１およびＱ１を有すると仮定する。ビューＶ２については、前記三角形が、２つの画素グループＰ２およびＱ２を有すると仮定する。たとえば、Ｑ１およびＱ２は、全く同じ画素を有するようにしてもよい。任意の順序(arbitrary order)Ｐ１、Ｐ２、Ｑ１およびＱ２を実行するため前記セレクタを採用してもよい。Ｐ１がビューＶ１と関連するので、Ｐ１をペア（画素グループならびにビューから構成される）として見ることができる。同様に、Ｑ１がビューＶ１と関連するので、Ｑ１をペア（画素グループならびにビューから構成される）として見ることができる。同じことが、ビューＶ２における画素のグループＰ２ならびにＱ２にも適用可能である。
【００５３】
また、まずビューを、次に画素のグループを選択するためセレクタ３０を採用してもよい、ことが理解されるべきである。これに代え、まず、画素のグループを、次に、ビューを選択するためセレクタ３０を採用してもよい。単一のビューについては、従来のコンピュータグラフィクスプロセッサと実質的に同様に、コンピュータＣＧＰ２０を介して検索された画素又は画素グループを転送してもよい。Ｚカリングユニット２４において、Ｚカリングを実行するようにしてもよい。この後に、フラグメント処理ユニット２５におけるフラグメント処理を行ってもよい。かかるフラグメント処理ユニット２５は、テクスチャキャッシュメモリ装置２６を介してテクスチャにアクセスするため採用してもよい。当該テクスチャキャッシュメモリ装置２６は、外部メモリ装置２７から情報を取得するために適合させてもよい。次に、ＺＣ＆Ｂユニット(ZC&B-unit)２８において、特定の検索された画素あるいは画素グループについての陰面消去(Hidden surface removal)ならびに混合(blending)を実行するようにしてもよい。Ｖ１およびＶ２用の情報を保持するため、複製フレームバッファ２９を用いてもよい。
【００５４】
前記セレクタ３０によって実行された選択は、異なる方法によって行ってもよい。ある実施形態において、前記セレクタ３０は、特定のビューiを用いた処理を続けることによりどれだけ効率的であるか、に基づいて効率的尺度Ｍを判断するため適合するようにしてもよい。Ｎ個のビューの各ビューiは、自身の効率的尺度Ｍiを有しており、ここで、iは、セット｛１、２、．．．Ｎ、Ｎ−１｝の整数である。たとえば、ビューＶiの処理を続けるためには、効率的尺度Ｍiが小さい方がよい。新たな画素あるいは新しい画素のグループの処理を続ける場合、ビューｋについての処理を続けてもよく、ここで、Ｍｋは、効率的尺度Ｍ１、Ｍ２、．．．、ＭＮ  の最小値である。
【００５５】
画素あるいは画素グループは、ビューｋについて処理され、効率的尺度Ｍｋ を更新してもよい。この実施形態による効率的尺度は、たとえば、テクスチャキャッシュコンテンツ、異なるバッファのアクセスパターン、フラグメントシェーダの実行、あるいは、そのいずれの組み合わせに基づくものであってもよい。
【００５６】
ある実施形態において、前記セレクタ３０は、以下の説明に基づいて効率的尺度Ｍを判断するために適合される。ここでは、地平視差(horizontal parallax)のみ、すなわち、ビュー間のＸ座標のみが相違すること、が考慮される。しかし、このことは、制限的ではなく、例示的に解釈すべきである。この実施形態において、テクスチャキャッシュメモリ装置２６の内容は、Ｎ個のビュー全部について同時に表される。ピクセルトラバーサルの間、正規化された遠近的に正しい補正補間条件(normalized perspectively-correct interpolation parameters)(tu、tv)を表すレーショナルベースイズ機能を、各画素について演算してもよい。マックール等(McCool et al.)によると（グラフィックハードウエア２００１における、マイケル  マックール、クリス  ウエールズ、ならびに、ケヴィン  ムールによる”増加および階層的なヒルベルト曲線順エッジ方程式による多角形のラスタライゼーション(incremental and hierarchical hilbert order edge equation polygon rasterization)”）によると、前記(tu、tv)座標は、三角形のためのエッジ方程式を用いることにより各画素について演算可能である。他のプリミティブについては、他の方法を用いることもできる。三角形については、E0(x, y)、E1(x, y)、E2(x, y)で表され、(x, y)が画素座標である、３つのエッジ関数が存する。特定の画素について、前記(tu、tv)座標は、以下のように演算される：
tu＝Ｅ１(x, y)／(E0(x, y) + E1(x, y) + E2(x, y))
tv＝Ｅ2(x, y)／(E0(x, y) + E1(x, y) + E2(x, y))。
【００５７】
各頂上は、スカラsiであって、i=０、１、２を有しており、ここでは、遠近(perspective)を考慮に入れることにより、三角形にわたってこのスカラー値を補間したいすると仮定する。これは、以下のように実行される：
s(x, y)= (1 - tu - tv)S0 + tu*s1 + tv*s2。
【００５８】
他のテクスチャ座標の他の定義および／又は演算を、我々のアルゴリズムにも適用することが指摘されるべきである。
【００５９】
簡単に表示するため、前記正規化された遠近的に正しい補正補間条件(tu、tv)を、”テクスチャ座標”と呼んでもよく、これらのテクスチャ座標は、たとえば、０．０から１．０の範囲であってもよい。かかる座標系では、(tu、tv)が存する場所は、”テクスチャスペース”と呼ばれる。前記テクスチャ座標は、プリミティブにわたり、遠近中の任意のいずれの属性を補間するため用いてもよい。Ｎ個のビューの各ビューならびにプリミティブ内部の各点については、かかる座標が存在する。ビューＶ１について、前記座標は、(tu1、tv1)と呼ばれ、ビューＶ２について、前記座標は、(tu2、tv2)等と定義される。
【００６０】
図３ａ、図３ｂには、テクスチャキャッシュメモリ装置２６を考慮する効率的尺度についての背景が示されている。ビューＶ１  １０１ならびにビューＶ２  １０２の両方に関するスクリーン空間に投影されたプリミティブが示されている。簡易化のためにステレオシステムのみが示されているが、前記推論が、ビューＮのいずれの数にも適用されることが理解されるべきである。一度に一本の水平走査線が考慮される。前記水平走査線上に現れる投影されたプリミティブにおける画素が、図３ａに示されている。ビューＶ１について、これらの画素は、１０１a、１０１b、....１０１mであり、ビューＶ２について、これらの画素は、１０２a、１０２b、....１０２jである。図３ｂにおいて、テクスチャ空間においてトラバーサル方向に沿って対応する画素は、ビューＶ１について２０１内に、ビューＶ２について２０２内に示されるとともに、ビューＶ１とビューＶ２の組み合わせが２０３内に示される。ビューＶ１の画素は、塗り潰された楕円形で表示され、ビューＶ２の画素は、図３ａおよび図３ｂにおいて垂直の線で表示される。座標軸uおよびvは、組み合わされたビュー２０３において示される。見てとれるように、遠近のため、テクスチャ空間において、スクリーン空間における等間隔の標本点が不均等に配されている。しかし、これらは”テクスチャトラバーサル方向”と呼ばれる直線２５０上に配されている。また用いられる投影のタイプによって、２つのビューＶ１およびＶ２は、このテクスチャトラバーサル方向を共有するようにしてもよい。この例において、このことは、地平視差のみを考慮するということの結果である。２つのビューしか有しないシステムについては常に生じることであるが、より多くのビューを有するシステムについては、線上に存するビューの全ての視点が一般に求められている。視点を伴う水平走査線は、ワールドスペースにおける三次元平面と等しく、これらの平面は全てのビューとほぼ等しいので、その平面とプリミティブとの間の交点は、全てのビューと同じである。平面的なプリミティブ（たとえば、三角形）については、平面と三角形との間の交点は、線（全てのビューについて同じ）になり、この線は、テクスチャ空間内の線（テクスチャトラバーサル方向）に突出する。他のプリミティブについて、交点は、全てのビューについて同じになるが、交点の湾曲は、線でなくてもよい。
【００６１】
テクスチャキャッシュメモリ装置２６に関しては、テクスチャ空間における、たとえば、組み合わされたビュー２０３におけるビューＶ１およびＶ２の両方からスクリーン空間サンプルを分析することにより、画素を横切るための適切な順序が見つけられる。たとえば、テクスチャトラバーサル方向にサンプルが生じる順に、当該テクスチャトラバーサル方向に沿ってピクセルトラバーサルを実行することにより、高いテクスチャキャッシュ性能を得ることができる。こうするのは、とりわけ以下の理由からである。テクスチャマップがアクセスされると、通常、フィルタ処理済みの色の値は、たとえば、トライリニアミップマッピング（ランス・ウィリアムス著  ”ピラミッド形パラメトリックス(Pyramidal Parametrics)”コンピュータグラフィクス(ACM  SIGGRAPH83の会報)、１９８３年発行、を参照）を用いて所望される。このことは、テクスチャマップからフィルタ処理済みの色を作り出すためテクスチャ座標の周囲の近辺にアクセスがなされ、アクセスされたそれらの画素は、フィルタ処理済みの色を形成するため一緒に重み付けされることを意味する。フィルタ処理済みの色が演算されると、キャッシュは、フィルタ処理済みの色を作り出すためアクセスされたテクスチャからの全ての画素を含むようになる。ここで、アルゴリズムが、テクスチャトラバーサル方向に沿って最も近い点を選択した場合、テクスチャトラバーサル方向に沿って遠く離れた位置に存する点が選ばれた場合と比べ、一般的にはキャッシュの内容を再利用することが可能となる絶好のチャンスである。このことが正しい、ということのシュミレーションが示されている。[du、dv]が、テクスチャトラバーサル方向に沿ったベクトルを示すと仮定する。各ビューiについての効率的尺度Ｍi は、以下の式で定義することができる：
【００６２】
【数１】
2009517770.tif 000005
【００６３】
ここで、(fu、fv)は、テクスチャトラバーサル方向上のテクスチャ座標、たとえば、走査線上の最初の画素のテクスチャ座標である。したがって、Ｍi は、テクスチャトラバーサル方向において処理される次の画素のテクスチャ座標の投影にすぎない。そこに移動する次のビューは、単純に、効率的尺度Ｍi が最も小さいビューiである。これにより、テクスチャ空間におけるＮ個のビュー全てからのスクリーン空間サンプルの順序に対応するトラバーサルの順序を得ることができる。ビューiについて画素がアクセスされていた場合、次の画素についてのテクスチャ座標(tui 、tvi)が決定され、効率的尺度Ｍi を更新することができる。そこに移動する次のビューは、全てのビューについてのテクスチャトラバーサル方向上の全ての画素（あるいはサンプル）がアクセスされるまで、前述のように選択される。次に、プリミティブ全体、たとえば、全てのビューについてのピクセルトラバーサルが実行されるまで、次の水平走査線ならびにその対応テクスチャトラバーサル方向等が処理される。
【００６４】
Ｍi は、処理される画素（あるいはサンプル）の順序を選択するのに用いてもよいスケーラー値であり、これにより、Ｍi は、様々な方法によって演算可能であることが理解されるべきである。たとえば、各ビューiについての効率的尺度Ｍi は、以下の式により定義することも可能である。
【００６５】
【数２】
2009517770.tif 000006
【００６６】
この式は、(fu、fv)が含まれていない点で上記の式（１）と異なる。しかし、式（１）は、全ての走査線について(fu、fv)が一定であるので、同じ分類の順序を得ることができ、(fu、fv)のみを除去することは、Ｍi から定数を減じることであり、したがって、分類の順序が同じであってもよい。また、テクスチャトラバーサル方向について最も大きい（絶対値で）コンポーネントを見つけ、前記最大のコンポーネントに対応するtui又はtviのいずれかに基づいて、分類の順序を判断することも可能である。これによっても、同じ分類順序が与えられることがある。
【００６７】
以下には、処理能力を有するシステムに、本発明の実施形態の方法に基づくピクセルトラバーサルを実行させることを意図する疑似コードの例が示されている。ここでは、各走査線が同様に処理されるので、たった１本の走査線しか考慮されていないことに注意すべきである。また、以下の擬似コードは、単なる例示であることを理解するべきである。多くの異なる実施形態が可能であることが明らかであるべきである。
【００６８】
【表１】
2009517770.tif 000007
【００６９】
以下に、タイルベース(tiled-based)のピクセルトラバーサル法の一実施形態を示す。ここで用いられるように、タイルは、長方形の画素のセット、あるいは、他の形状の画素のセットであってもよい。上述の走査線ベースのトラバーサル法は、タイルベース毎(per tile basis)として機能するよう拡張してもよい。このことは、図３ａならびに図３ｂ中の画素を、画素ではなくタイルとして考慮することにより達成される。スクリーン空間中の長方形のタイルは、通常、テクスチャ空間中の凸四辺形(convex quadrilateral)に突出している。プリミティブが、ラスタデータに変換されたと仮定する。図４において、そのプリミティブを覆うタイルの特定の行が、Ｖ１  ３０１ならびにＶ２  ３０２についてのテクスチャ空間中に突出して示されている。ビューＶ１について突出しているタイルは、Ａ１、Ｂ１、Ｃ１、Ｄ１ならびにＥ１と名づけられる。ビューＶ２について突出しているタイルは、Ａ２、Ｂ２、Ｃ２、ならびにＤ２と名づけられる。突出しているタイルは、２つのビューについてのテクスチャ空間において同じ領域と重なる。これにより、高いテクスチャキャッシュ性能を得ることができる。このことは、それらがテクスチャトラバーサル方向に沿って現れる順序により、タイルが横切られる場合に特に正しい。実際、これは、同時に１つの画素しか考慮していない前述の実施形態と比較した場合の差となる。まず、各タイルにおけるテクスチャ座標(tuj、tvj)、たとえば、各タイルの中央における座標が演算される。各タイルの中央における座標を用いることは、単に例であり、タイルの他の座標を用いるようにしてもよい。テクスチャトラバーサル方向ベクトル[du、dv]は、２つの近接するタイルの中央におけるテクスチャ座標間の差として得られたベクトルである。[du、dv]は、様々な方法で決定されてもよく、タイルの中央におけるテクスチャ座標を決定することは、多くの選択肢の一つであることが理解されるべきである。また、前記トラバーサル法は、次のタイルの行へ移動する前に、タイルの行でプリミティブが重複する全てのタイルがアクセスされるよう設計される。これに関しては他の選択をすることも可能である。たとえば、前記タイルは、ジグザグの順序で移動するようにしてもよい。すなわち、常に左から右の順番に移動し、タイルの次の行へ下方に移動するのではなく、タイルの現在の行が終わると、前記タイルにジグザグの順序でアクセスすることが可能である。ジグザグの順序において、タイルの行の最後まで達すると、タイルの次の行に移動し、反対側（水平方向）で続行する。これにより、ジグザグと同様のトラバーサル順序が得られる。ジグザグと同様のトラバーサル順序の詳細については、トーマス・アケニン−モーラー及びジェイコブ・ストローム著  ”みんなためのグラフィックス：携帯電話用のハードウエアラスタライゼーションアーキテクチャ”グラフィックスにおけるＡＣＭトランザクション、２００３年７月発行に詳しい。
【００７０】
また、共通カラーバッファ機能を設けるようにしてもよい。かかる共通カラーバッファ機能は、一部又は全部のビューからのフラグメント出力値を蓄積するため用いても、たとえば、被写界深度(depth-of field)、モーションブラー(motion-blur)、ならびにアンチエイリアスをシミュレートするため用いてもよい。
【００７１】
上述の実施形態について、Ｎ個の異なるビューのため生成された画像は、Ｎ回複製され又はＮ回（各ビューについて１回）使用されると、図１の従来のコンピュータグラフィックスプロセッサにより生成された画像に対応することが理解される。したがって、図１で示すコンピュータグラフィックスプロセッサ１０と比較して、本発明の実施形態の性能の向上には、画質の劣化が含まれることがない。
【００７２】
以下で説明する他の実施形態によると、他のビューのために生成されたフラグメントに基づいて、いくつかのビューのフラグメントを近似させることにより、さらに性能が向上する。これにより、フラグメントシェーダプログラムの実行回数を低減することができる。追加の性能の向上には、画質が若干低下するというコストを支払わなければならない。
【００７３】
図５は、ある実施形態に基づくＣＧＰ５０のブロック図である。コンピュータグラフィックスプロセッサ５０は、ＰＶＳ５１、ＲＳＵ５２、ラスタライザ５３、Ｚカリングユニット５４、ＦＰＵ５５、テクスチャキャッシュメモリ装置５６、外部メモリ装置５７、ＺＣ＆Ｂユニット５８、フレームバッファ５９、ならびに、セレクタ６０を備えるようにしてもよい。これらのユニットは、図２に示された対応する部品と同様の動作をするよう構成してもよい。また、図５のＣＧＰ５０は、近似化ユニット６１およびシェーダ出力キャッシュ６２を備えている。近似化ユニット６１およびシェーダ出力キャッシュ６２は、一緒になってＦＰＵ５５からの出力の実質的な再使用を容易にする。
【００７４】
前記近似化ユニット６１は、ビューを分類するよう構成してもよい。”正確な(exact)”ならびに”近似する(approximated)”の２つのタイプのビューが用いられる。各々の近似するビューは、正確なビューと関連づけられる。
【００７５】
前記近似化ユニット６１は、”正確な”ならびに”近似する”のいずれに分類されているかに基づき、２つの異なるモードで動作するよう構成してもよい。
【００７６】
正確なビューについて、ＦＰＵ５５は、フラグメントシェーダプログラムを実行するため用いられ、さらにグラフィックスパイプラインに伝達される前に、当該フラグメントシェーダプログラムの出力、色、デプス、ステンシル等を、シェーダ出力キャッシュ６２に書き込むようにしてもいい。
【００７７】
近似するビューについては、フラグメントシェーダプログラムが前記近似するビューを処理する場合、当該近似するビューと関連する正確なビューにおいてプリミティブを処理する間に集められた情報を、フラグメントシェーダプログラムから得られるであろう出力を近似化するために用いてもよい。近似するビューにおけるプリミティブのフラグメントの座標は、関連づけられた正確なビューの表示平面上にマッピング（投影）される。フラグメント座標の近辺におけるフラグメントシェーダプログラムからの正確なビューの結果が、まだシェーダ出力キャッシュ６２に存する場合、近似するビューについてのフラグメントシェーダプログラムの出力は、前記キャッシュで見つけられた、近辺の入力の正確なビューについての当該フラグメントシェーダプログラムの出力をフィルタリングすることにより近似化される。シェーダキャッシュにおいて何ら結果が見つられなかった場合、近似するビューについてもフラグメントシェーダプログラムが実行される。
【００７８】
正確なビュー、ならびに、近似するビューを関連づけるため、テクスチャ座標を用い、マッピングアルゴリズムが提供される。かかるテクスチャ座標は、たとえば、パースペクティブ補正の重心座標(perspective-correct barycentric coordinates)であってもよい。前記アルゴリズムは、近似化されたビューにおけるプリミティブの位置を、関連する正確なビューにマッピングする。
【００７９】
一以上の正確なビューからの最新のフラグメント情報が記憶され、関連する近似するビューについてアクセス可能である場合に、シェーダ出力キャッシュ６２が設けられる。
【００８０】
いくつかの実施形態によると、ディスプレースクリーン上に立体画像をレンダリングする方法は、プリミティブの投影がなされた後にプリミティブのピクセルトラバーサルを実行するステップを備えている。かかる方法は、近辺のビューからのフラグメントシェーダプログラムの出力を近似化し、再使用するステップを備えている。
【００８１】
図５の実施形態において、近似化ユニット６１は、そのフラグメントがそれに属するペアが、”正確な(exact)”あるいは”近似化された(apprpximated)”のいずれに関連するかに応じて、フラグメントに異なる処理をするよう構成される。前記正確なビューは、複数のビューから選ばれた一以上のビューから構成され、ＦＰＵ５５を用いてフラグメントシェーダプログラムを実行することにより、それらにレンダリングが行われるという意味では同じである。このことから、正確なビューに対しては近似化が行われない。
【００８２】
近似化されたビューは、前記複数のビューの残りのビューとして選択される。各近似化ビューは、正確なビューに関連づけられる。各近似化ビューについて、関連する正確なビューは、通常、ビューというパラメータに関し、前記近似化されたビューに”最も近い”正確なビューである。
【００８３】
本発明の一実施形態によると、正確なビューは、フラグメントシェーダプログラムを実行することによりプリミティブをレンダリングし、かかる実行による出力が、”シェーダ出力”と呼ばれる。可能であれば、近似化されたビューは、正確なビューからのシェーダ出力を再び用い、近似化されたビューについて近似フラグメント出力を生成するため、一又はいくつかのシェーダ出力を一緒に重み付けするようにしてもよい。
【００８４】
現在処理中のフラグメントが、正確なビューに属する場合、ＦＰＵ５５を用いて前記フラグメントシェーダプログラムが実行される。さらにグラフィックスパイプラインに伝達される前に、当該フラグメントシェーダプログラムの出力、色、デプス(depth)、ステンシル(stencil)等を、シェーダ出力キャッシュ６２に書き込むようにしてもいい。かかるシェーダ出力キャッシュ６２は、オンチップメモリ、フリップフロップのセット専用、又は、オフチップメモリに記憶されたものであっても、あるいは、他のいずれの記憶方法を用いるものであってもよい。
【００８５】
現在処理中のフラグメントが、近似化されたビューに属する場合、関連する正確なビューを処理する間に集められた情報を、近似化ビューのフラグメントシェーダプログラム出力を近似化するために用いてもよい。フラグメント座標は、対応する正確なビューの表示表面上に投影される。これは、近似化ビュー(tuならびに tvと表される）におけるフラグメントについてのパースペクティブ補正の補間パラメータ(perspective-correct interpolation parameters)を用いて、対応する正確なビューにおける三角形の頂点（p、q、ならびにrと表される）の位置を補間することにより実行される。かかる補間は、以下の形式で行ってもよい：
c = (1 - tu - tv)・p + tu・q＋tv・r。
【００８６】
これらの演算は、多くの他の異なる方法により実行してもよく、ここで開示されている近似化は、これらと同様に機能することが理解される。
【００８７】
補間された位置ｃは、正確なビューのコンテクストにおける現在のフラグメントについてのスクリーン空間位置を演算するため投影される。この投影された位置は、投影位置の近辺におけるフラグメントのシェーダ出力についてシェーダ出力キャッシュ６２に問い合わせするため用いてもよい。近似化されたビューおよび正確なビューにおけるかかるフラグメントのシェーダ出力は、フィルタカーネルに基づく、近似化されたビューにおけるフラグメントの関係を用いて演算してもよい。また、シェーダ出力キャッシュ６２中の２の最も近い隣接対象間の直線的補間を用い、あるいは、近接する範囲に２のフラグメントが見つからない場合、単に最も近い隣接対象を設定することにより、それを演算するようにしてもよい。このことは、たとえば、フラグメントが三角形の端の近辺に存する場合に生じてもよい。
【００８８】
ある実施形態によると、その算術平均が平均化ビューのフラグメントの位置である２つの位置が、正確なビュー内に投影される。投影された位置に近接する正確なビューのフラグメントが、シェーダ出力キャッシュ６２中に記憶されると、近接する前記フラグメントに基づいて近似化されたビューのフラグメントが生成される。そうされない場合、フラグメントのシェーダプログラムを実行することにより近似化されたビューのフラグメントが生成される。
【００８９】
あるフラグメントについてのフラグメントシェーダプログラムの出力を近似化する間に、他のプリミティブからのデータの偶発的な使用を回避するため、シェーダ出力キャッシュ６２を、プリミティブのレンダリングの間でクリアしてもよい。かかるシェーダ出力キャッシュ６２は、ラスタライザ５３のトラバーサルの順序がインクリメンタルである、すなわち、できる限り近隣のタイルへ横断する場合、周期的な置き換え戦略(cyclic replacement strategy)を用いるようにしてもよい。この場合、周期的置き換え戦略は、最長時間未使用（ＬＲＵ）の置き換え戦略として効率的に機能する。他の置き換え戦略を、我々の発明と組み合わせるようにしてもよい。
【００９０】
シェーダ出力キャッシュ６２は、独立したフラグメント又はフラグメントのグループとして構成されてもよい。かかるシェーダ出力キャッシュ６２は、独立したキャッシュメモリ、あるいは、カラーバッファキャッシュ等の既存のキャッシュメモリを拡張するようにしてもよい。カラーバッファキャッシュを拡張することは、混合が可能な場合に近似化に用いることが出来ないという欠点を有する。
【００９１】
フラグメントの効率的尺度又はペアだけでなく、トラバーサルの順序まで効率的に演算することにより、あるフラグメント又はペアの効率的尺度(Mi)を近似化されたビューについて不利に扱うようにしてもよい。これにより、近似化ビューを効率的に遅延させ、関連するデータを用いて正確なビューによりシェーダ出力キャッシュ６２を満たすことが可能になる。この効果は、近似化されたビューが、フラグメントの出力を近似化する可能性が増加するということである。
【００９２】
正確なビューを、あるレンダリングプリミティブから次に変更してもよいことも理解されるべきである。このことは有利である。たとえば、そこでプリミティブの投影領域が最も大きいビューとして正確なビューが選ばれた場合、シュミレーションにおいてより高い性能を達成することができる。
【００９３】
ここで開示される近似化を、累積カラーレンダリング(accumulative color rendering)に用いてもよい。これについて、正確なビューならびに近似化されたビューは、通常、別々のデプスバッファを有しているが、両者は、ともに単一のカラーバッファを共有している。レンダリングの際、出力カラーは、カラーバッファで混合される。このことは、たとえば、領域のデプスを有する単一のビューの画像をレンダリングするために用いることができる。他の可能な用途としては、モーションブラーならびにアンチエイリアスがある。
【００９４】
本発明は、ここで述べた方法および機能の実行を可能にするコンピュータプログラム製品に埋め込んでもよい。前記コンピュータプログラム製品が、コンピュータ機能を有するシステムにおいてロードされ作動する場合に、本発明を実施してもよい。本明細書におけるコンピュータプログラム、ソフトウエアプログラム、プログラム製品又はソフトウエアは、いずれのプログラミング言語により書かれたものであって、処理能力を有するシステムに、直接あるいは他の言語、コード又は表記への変換後に特定の機能を実行させることを意図する命令のセットのコード又は表記のいずれの言い回しをも意味している。
【００９５】
最後に、図２および図５に示すように、ＲＳＵ２２、５２、ラスタライザ２３、５３、Ｚカリング２４、５４、ＦＰＵ２５、５５、ＴＣＭ２６、５６、ならびに、ＺＣ＆Ｂ２８、５８は、複製してもよい。これを実施することは本発明に必須ではないが、これにより、いくつかの場合にＣＧＰ２０、５０の性能がさらに向上する。しかし、ＰＶＳ２１、５１あるいはＥＸＭ２７、５７については、複製が不要であることに注意すべきである。いずれにせよ、いくつかの実施形態においては、複数のビューを扱うため、ＰＶＳ２１、５１に若干の変更を必要とする。
【００９６】
コンピュータグラフィックスプロセッサの使用の際に求められるメモリ周波帯域を低下させることが可能となることは、本発明の実施形態の利点である。上述の近似化されたビューならびに正確なビューを用いる実施形態については、ＦＰＵ５５がフラグメントシェーダプログラムを実行する回数が大幅に減少する、というさらに別の利点がある。フラグメントシェーダプログラムを実行することは、得られる性能を制限することができるので、このことは有利である。
【００９７】
４つの異なるビューからレンダリングされた特定の立体シーンに関するシュミレーションにおいては、従来のコンピュータグラフィックスプロセッサが、通常、テクスチャキャッシュメモリ装置に対し、本発明の実施形態と比べて最大２２０％以上の帯域を用いていることが示されている。この結果、本発明の実施形態は、コンピュータグラフィックスプロセッサの性能の向上を可能にする。
【００９８】
近似化ならびに正確なビューを用いたＣＧＰのシュミレーションにおいては、得られた画質が高く、近似化されたフラグメントの数も多いことが示されている。画質は、ＰＳＮＲ（ピーク信号対雑音比）を用いて測定することができ、それは、静止画像の圧縮でさえ高い値と考えられる約４３ｄＢ（デシベル）である。近似化されたビューにおける近似化されたフラグメントの数は、フラグメントのたった５％がフラグメントシェーダプログラム全体を実行することを意味する９５％に等しい。
【００９９】
したがって、本発明に基づくコンピュータグラフィックスプロセッサならびに方法のさらなる利点は、過度のメモリ帯域幅を必要とせず、高い画質でディスプレースクリーン上に立体画像を提供することである。これを実行するためには、従来のＧＰＵに対して適度の改良が必要となるのみである。したがって、改良された性能により高画質を可能とするコンピュータグラフィックスプロセッサの追加製造コストは、比較的安価なものである。本発明の実施形態は、携帯電話、携帯コンピュータ等のサイズに制限のある装置として実施されることが好ましい。また、携帯電話等のバッテリーにより駆動される装置として実施される場合、本発明の実施形態が、バッテリーが速く消耗することを回避するための構成を提供してもよい。しかし、本発明の実施形態は上述の装置に限定されない。本発明の実施形態は、デスクトップパーソナルコンピュータ、ラップトップ、ゲームコンソール、立体テレビ、ディスプレー内蔵型メガネを含む他の装置として実施されてもよいが、これらの用途に限定されない。
【０１００】
本発明は、特定の実施形態を参照した上で説明がなされてきた。しかし、本発明の範囲中であれば、上述の説明以外の他の実施形態も可能である。本発明の範囲中であれば、上述のものとは異なる方法のステップであって、ハードウエア又はソフトウエアによって実行されるものを提供してもよい。本発明の異なる特徴ならびにステップを、他の組み合わせに組み込むようにしてもよい。本発明の範囲は、添付された特許請求の範囲によってのみ特定される。
【図面の簡単な説明】
【０１０１】
【図１】図１は、従来のコンピュータグラフィクスプロセッサのブロック図である。
【図２】図２は、本発明の実施形態に基づくコンピュータグラフィクスプロセッサのブロック図である。
【図３ａ】図３ａは、２つの異なるビューからスクリーンに投影されたプリミティブを示す画素の略図である。
【図３ｂ】図３ｂは、図３ａのプリミティブについて、テクスチャ横断方向に沿ったテクスチャ空間における画素を示すスクリーンの略図である。
【図４】図４は、プリミティブについて、テクスチャ横断方向に沿ったテクスチャ空間における画素のタイルを示すスクリーンの略図である。
【図５】図５は、本発明の実施形態に基づくコンピュータグラフィクスプロセッサのブロック図である。
【図１】
2009517770.tif 000010
【図２】
2009517770.tif 000011
【図３ａ】
2009517770.tif 000012
【図３ｂ】
2009517770.tif 000013
【図４】
2009517770.tif 000014
【図５】
2009517770.tif 000015
【国際調査報告】
2009517770.tif 000016
2009517770.tif 000017
2009517770.tif 000018
2009517770.tif 000019