(57)【要約】【課題】レイ・トレース画素データとラスタ化画素データとを含む画像を生成するシステムおよび方法を提供する。【解決手段】シナジスティック・プロセッシング・ユニット（ＳＰＵ）が、レンダリング・アルゴリズムを使用して、高品質画像レンダリングを必要とするオブジェクトのレイ・トレース・データを生成する。このレイ・トレース・データを断片化し、各断片はレイ・トレース画素深さ値とレイ・トレース画素色値とを含む。ラスタライザがレイ・トレース画素深さ値を対応するラスタ化画素深さ値と比較し、対応するラスタ化断片の方が視点に「より近い」場合にレイ・トレース画素データをラスタ化画素データで上書きし、その結果、合成データが得られる。表示サブシステムがこの結果として得られた合成データを使用してユーザの表示装置上に画像を生成する。【選択図】図１
2009505184.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって、
画面位置に対応するラスタ化画素データを選択するステップと、
複数のレイ・トレース画素データに含まれる、前記画面位置に対応する第１のレイ・トレース画素データを取り出すステップと、
前記第１のレイ・トレース画素データを前記ラスタ化画素データと比較するステップと、
前記比較に基づいて前記第１のレイ・トレース画素データを前記ラスタ化画素データに置き換えるステップと、
残りの前記複数のレイ・トレース画素データと前記ラスタ化画素データとを使用して画像を生成するステップと
を含む方法。
【請求項２】
前記比較するステップは、
前記第１のレイ・トレース画素データに含まれるレイ・トレース画素深さ値を取り出すステップと、
前記ラスタ化画素データに含まれるラスタ化画素深さ値を取り出すステップと、
前記レイ・トレース画素深さ値を基準にした前記ラスタ化画素深さ値によって前記ラスタ化画素データが前記画面位置における前記レイ・トレース画素データの前面に配置されるか否かを判断するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記置き換えるステップは、
深さバッファ内にある前記レイ・トレース画素深さ値を前記ラスタ化画素深さ値で上書きするステップと、
前記第１のレイ・トレース画素データに含まれるレイ・トレース画素色値を前記ラスタ化画素データに含まれるラスタ化画素色値で上書きするステップと
をさらに含む、請求項２に記載の方法。
【請求項４】
高品質画像レンダリング・オブジェクトに対応するモデル・データを取り出すステップと、
前記モデル・データからレイ・トレース・データをレンダリングするために、レンダリング・アルゴリズムを使用するステップと、
前記レイ・トレース・データを前記複数のレイ・トレース画素データにまでセグメント化するステップと
をさらに含む、請求項２に記載の方法。
【請求項５】
ポリゴンをレンダリングするためにラスタライザを使用するステップと、
前記ポリゴンを複数のラスタ化画素データにまでセグメント化するステップであって、前記ラスタ化画素データは前記複数のラスタ化画素データに含まれる、ステップと
をさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記複数のレイ・トレース画素データは、レイ・キャスティング・アルゴリズムとレイ・トレーシング・アルゴリズムとから成るグループから選択されたレンダリング・アルゴリズムを使用して生成される、請求項１ないし５のいずれかに記載の方法。
【請求項７】
複数の異種プロセッサと共有メモリと共有バスとを含むブロードバンド・プロセッサ・アーキテクチャを使用して実行され、
前記複数の異種プロセッサは、異なる命令セットを使用し、前記共有メモリと前記共有バスとを共用する、
請求項１ないし６のいずれかに記載の方法。
【請求項８】
コンピュータ可読コードを有するコンピュータ動作可能媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ可読コードは、
画面位置に対応するラスタ化画素データを選択し、
複数のレイ・トレース画素データに含まれる、前記画面位置に対応する第１のレイ・トレース画素データを取り出し、
前記第１のレイ・トレース画素データを前記ラスタ化画素データと比較し、
前記比較に基づいて前記第１のレイ・トレース画素データを前記ラスタ化画素データに置き換え、
残りの前記複数のレイ・トレース画素データと前記ラスタ化画素データとを使用して画像を生成する効果を有するコンピュータ・プログラム製品。
【請求項９】
前記コンピュータ可読コードは、
前記第１のレイ・トレース画素データに含まれるレイ・トレース画素深さ値を取り出し、
前記ラスタ化画素データに含まれるラスタ化画素深さ値を取り出し、
前記レイ・トレース画素深さ値を基準にした前記ラスタ化画素深さ値によって前記ラスタ化画素データが前記画面位置における前記レイ・トレース画素データの前面に配置されるか否かを判断する効果をさらに有する請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記コンピュータ可読コードは、
深さバッファ内にある前記レイ・トレース画素深さ値を前記ラスタ化画素深さ値で上書きし、
前記第１のレイ・トレース画素データに含まれるレイ・トレース画素色値を前記ラスタ化画素データに含まれるラスタ化画素色値で上書きする効果をさらに有する請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
前記コンピュータ可読コードは、
高品質画像レンダリング・オブジェクトに対応するモデル・データを取り出し、
レンダリング・アルゴリズムを使用して、前記モデル・データからレイ・トレース・データをレンダリングし、
前記レイ・トレース・データを前記複数のレイ・トレース画素データにセグメント化する効果をさらに有する請求項９に記載のコンピュータ・プログラム製品。
【請求項１２】
前記コンピュータ可読コードは、
ラスタライザを使用してポリゴンをレンダリングし、
前記ポリゴンを複数のラスタ化画素データにセグメント化する効果をさらに有し、前記ラスタ化画素データは前記複数のラスタ化画素データに含まれる請求項８ないし１１のいずれかに記載のコンピュータ・プログラム製品。
【請求項１３】
前記複数のレイ・トレース画素データは、レイ・キャスティング・アルゴリズムとレイ・トレーシング・アルゴリズムとから成るグループから選択されたレンダリング・アルゴリズムを使用して生成される請求項８ないし１２のいずれかに記載のコンピュータ・プログラム製品。
【請求項１４】
前記コンピュータ可読コードは、複数の異種プロセッサと共有メモリと共有バスとを含むブロードバンド・プロセッサ・アーキテクチャを使用して実行され、
前記複数の異種プロセッサは異なる命令セットを使用し、前記共有メモリと前記共有バスとを共用する請求項８ないし１３のいずれかに記載のコンピュータ・プログラム製品。
【請求項１５】
１つまたは複数のプロセッサと、
前記プロセッサがアクセス可能なメモリと、
前記プロセッサがアクセス可能な１つまたは複数の不揮発性記憶装置と、
リンクされたデータ構造をトラバースする画像生成ツールと
を含み、前記画像生成ツールは、
画面位置に対応するラスタ化画素データを選択し、
前記不揮発性記憶装置のうちの１つから、複数のレイ・トレース画素データに含まれる、前記画面位置に対応する第１のレイ・トレース画素データを取り出し、
前記第１のレイ・トレース画素データを前記ラスタ化画素データと比較し、
前記比較に基づいて、前記不揮発性記憶装置のうちの１つの記憶装置内の前記第１のレイ・トレース画素データを前記ラスタ化画素データに置き換え、
残りの前記複数のレイ・トレース画素データと前記ラスタ化画素データとを使用して表示装置上に画像を生成する
効果を有する、情報処理システム。
【請求項１６】
前記画像生成ツールは、
前記不揮発性記憶装置の１つから、前記第１のレイ・トレース画素データに含まれるレイ・トレース画素深さ値を取り出し、
前記不揮発性記憶装置の１つから、前記ラスタ化画素データに含まれるラスタ化画素深さ値を取り出し、
前記レイ・トレース画素深さ値を基準とした前記ラスタ化画素深さ値によって前記ラスタ化画素データが前記画面位置における前記レイ・トレース画素データの前面に配置されるか否かを判断する効果をさらに有する請求項１５に記載の情報処理システム。
【請求項１７】
前記画像生成ツールは、
前記不揮発性記憶装置の１つにある深さバッファ内の前記レイ・トレース画素深さ値を前記ラスタ化画素深さ値で上書きし、
前記不揮発性記憶装置の１つにおいて、前記第１のレイ・トレース画素データに含まれるレイ・トレース画素色値を前記ラスタ化画素データに含まれるラスタ化画素色値で上書きする効果をさらに有する請求項１６に記載の情報処理システム。
【請求項１８】
前記画像生成ツールは、
前記不揮発性記憶装置の１つから、高品質画像レンダリング・オブジェクトに対応するモデル・データを取り出し、
レンダリング・アルゴリズムを使用して前記モデル・データからレイ・トレース・データをレンダリングし、
前記レイ・トレース・データを前記複数のレイ・トレース画素データにセグメント化する効果をさらに有する請求項１６に記載の情報処理システム。
【請求項１９】
前記画像生成ツールは、
ラスタライザを使用してポリゴンをレンダリングし、
前記ポリゴンを複数のラスタ化画素データにセグメント化する効果をさらに有し、前記ラスタ化画素データは前記複数のラスタ化画素データに含まれる請求項１５ないし１８のいずれかに記載の情報処理システム。
【請求項２０】
前記複数のレイ・トレース画素データは、レイ・キャスティング・アルゴリズムとレイ・トレーシング・アルゴリズムとから成るグループから選択されたレンダリング・アルゴリズムを使用して生成される請求項１５ないし１９のいずれかに記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には深さバッファ付き表示装置を用いてレイ・トレーシングを行うシステムおよび方法に関する。より詳細には、本発明は、共用深さバッファを使用してレイ・トレース画像をラスタ化画像と合成するシステムおよび方法に関する。
【背景技術】
【０００２】
最近のコンピュータ画像生成技術により、コンピュータ・ゲームやフライト・シミュレーションなどの応用分野でリアルな画像が生成されている。コンピュータ・システムの処理速度の高速化が、リアルなコンピュータ画像の生成を可能にする主要な要因の１つである。コンピュータ画像、特にゲーム・アプリケーションにおけるコンピュータ画像は、一般に、画像の生成のためにレンダリングされる多くのオブジェクトを含む。たとえば、ゲーム・アプリケーションは、風景、山、空、雲、車両、人物などのオブジェクトを含むことがある。コンピュータ画像を生成するために多くの手法が利用可能である。レイ・トレーシングは、オブジェクトをレンダリングするために広く使われている手法である。レイ・トレーシングは、ハイト・フィールドなどの特定の種類のプリミティブに基づいて画像をレンダリングするために最適化することができ、それによっていずれの視点から見ても仮想３次元に見える場面を２次元画像の形で生成することができる。当業者ならわかるように、本明細書で述べるレイ・トレーシングは、レイ・キャスティングなど他の同様のレンダリング技法も含む。レイ・トレーシングは、高品質画像レンダリング方法であるが、高度な浮動小数点演算を必要とし、メモリ・アクセスのパターンが不規則かつ帯域幅が大きいために、ユーザのパフォーマンス要求を満たせない場合があるという問題がある。
【０００３】
他の一般的なコンピュータ画像生成手法として、ポリゴン・レンダリングがある。この手法では、ラスタライザがポリゴンを断片に分解し、観察者から画面空間内の「断片」までの距離に対応する深さ値を記憶する深さバッファを使用して、観察者にどの断片が見えるかを判断する。たとえば、車両に対応するラスタ化断片があり、その車両の前に立つ歩行者に対応するラスタ化断片がある場合がある。この例では、ラスタライザは、車両の前に立つ歩行者を表示する特定の画面位置でどのラスタ化断片を使用するかを、深さバッファの値に基づいて判断する。ポリゴン・レンダリングは、高パフォーマンスの画像レンダリング方法であるが、ユーザの画像品質要求を満たさない画像を生成する場合があるという問題がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、レイ・トレーシング・レンダリングの高品質の利点を、ポリゴン・レンダリングの高パフォーマンスの利点と組み合わせて、リアルなコンピュータ生成画像を効率的に生成するシステムおよび方法が必要である。
【課題を解決するための手段】
【０００５】
共用深さバッファを使用し、レイ・トレース画像とラスタ化画像とを合成する方法、コンピュータ・プログラム製品、およびシステムを提供する。シナジスティック・プロセッシング・ユニット（ＳＰＵ：Synergistic Processing Unit）が、レンダリング・アルゴリズムを使用して、レイ・トレース色データとレイ・トレース深さデータとを含むレイ・トレース・データを生成する。ラスタライザが、他のオブジェクトについて、ラスタ化色データとラスタ化深さデータとを含むラスタ化データを生成する。ラスタライザは、画素などの区分された位置毎にレイ・トレース深さデータとラスタ化深さデータとを比較し、その比較に基づいて、特定の位置でレイ・トレース・データをラスタ化データと置き換える。その結果、レイ・トレース・データとラスタ化データとを含む合成データが生成される。次に、表示サブシステムがこの合成データを使用して、ユーザが見る画像を生成する。
【０００６】
ＳＰＵが、高品質画像レンダリングを必要とする特定のオブジェクトに対応する３次元モデル・データを、システム・メモリから取り出す。レイ・キャスティングまたはレイ・トレーシングなどのレンダリング・アルゴリズムが、このモデル・データを使用してレイ・トレース・データを生成する。このレイ・トレース・データはレイ・トレース画素データ「断片」として記憶される。当業者ならわかるように、これらの画素断片は、画面上の画素位置、または他の画像セグメント化技法に基づく位置に対応することができる。
【０００７】
各レイ・トレース画素データ断片は、レイ・トレース画素深さ値とレイ・トレース画素色値とを含む。レイ・トレース画素深さ値は、深さバッファに記憶され、観察者から画面空間内のその断片までの距離に対応する。たとえば、レイ・トレース画素深さ値は「８０」とすることができ、これは表示される画像全体を基準にしてユーザから８０単位分離れて表示される断片に対応する。レイ・トレース画素色値は、カラー・バッファに記憶され、断片に対応する色情報を含む。
【０００８】
ラスタライザは、特定のオブジェクトのポリゴンをレンダリングし、そのポリゴンの１つを画面空間の断片に分解する。これは「ラスタ化画素データ」として記憶される。各ラスタ化画素データ断片は、ラスタ化画素深さ値とラスタ化画素色値とを含む。ラスタ化画素深さ値は、観察者から画面空間内のその断片までの距離である。たとえば、ラスタ化画素深さ値「２０」は、表示される画像全体を基準にしてユーザから２０単位分離れて表示されるラスタ化断片に対応する。ラスタ化画素色値は、その断片に対応する色情報を含む。
【０００９】
ラスタライザは、システム・メモリを指示し、深さバッファからレイ・トレース画素深さ値の１つを取り出す。ラスタライザは、そのレイ・トレース画素深さ値を、同じ画面空間に対応するラスタ化画素深さ値と比較して、ラスタ化画素データを対応するレイ・トレース画素データの代わりに表示すべきか否かを判断する。たとえば、山の前に車両がある場合などのように特定の画面位置について、ラスタ化画素深さ値が２０、対応するレイ・トレース画素深さ値が４０の場合がある。この例では、ラスタ化断片の方がレイ・トレース断片よりも観察者に「近い」。したがって、この特定の画面位置ではレイ・トレース画素データの代わりにラスタ化画素データを表示すべきである。
【００１０】
ラスタライザが、ラスタ化画素データをそれに対応するレイ・トレース画素データの前面に表示すべきであると判断した場合、ラスタライザは深さバッファ内のレイ・トレース画素深さ値をラスタ化画素深さ値で上書きし、カラー・バッファ内のレイ・トレース画素色値をラスタ化画素色値で上書きする。ラスタ化断片毎に、ラスタライザはそのラスタ化画素深さ値を対応するレイ・トレース画素深さ値と比較し、それに応じてシステム・メモリ内にあるデータをラスタ化データで上書きする。
【００１１】
次に、ラスタライザは、他のポリゴンを画面空間断片に分解し、それら断片のラスタ化画素深さ値を深さバッファ内にある深さ値と比較する。ラスタライザは、特定の画面位置で既存のデータを複数回上書きすることができる。たとえば、特定の画面位置について、ラスタライザはレイ・トレース画素データを車両に対応するラスタ化画素データで上書きし、次に、そのラスタ化画素データを、車両の前に立つ人物に対応する他のラスタ化画素データで上書きすることができる。
【００１２】
ラスタライザが各ポリゴンの各断片の断片比較を終わると、深さバッファとカラー・バッファには、レイ・トレース画素データとラスタ化画素データを含む、画面表示する画像を表す「合成」データが記憶される。表示サブシステムがこの合成データをスキャンし、ユーザの表示画面上に画像を生成する。
【００１３】
上記は要約であるため、当然ながら簡略化、一般化したものを記載したに過ぎず、詳細は省いている。したがって、上記の要約は例示的なものであり、限定を意図したものではないことが当業者ならわかるであろう。本発明の他の態様、特徴、および利点は、特許請求の範囲によってのみ規定されるものであり、以下の非限定的な詳細な説明を読めばわかるであろう。
【００１４】
次に、本発明について、単に例示として、添付の図面に示される本発明の好ましい実施形態を参照しながら説明する。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明の一例の詳細な説明を示すが、これは本発明自体を限定するものとみなすべきではない。任意の数の変形態様も、添付の特許請求の範囲で規定される本発明の範囲に含まれ得る。
【００１６】
図１は、ラスタライザが、レイ・トレース画素データを対応する深さ値に基づいてラスタ化画素データで上書きする様子を示す図である。ブロードバンド・プロセッサ・アーキテクチャ１００は、シナジスティック・プロセッシング・ユニット（ＳＰＵ）１１０とシステム・メモリ１３０とを含む。ＳＰＵ１１０は、デジタル信号プロセッサ、マイクロコントローラ、マイクロプロセッサ、またはこれらのコアの組合せなどの処理コアである。好ましい実施形態では、ＳＰＵ１１０は、ローカル・メモリ、レジスタ、４個の浮動小数点演算ユニット、４個の整数演算ユニットを備える。当業者ならわかるように、必要な処理能力に応じて、ＳＰＵ１１０はこれより少ない数、または多い数の浮動小数点演算ユニットおよび整数演算ユニットを備えることができる。
【００１７】
ＳＰＵ１１０は、レイ・キャスティングやレイ・トレーシングなどによって特定のオブジェクトの色値と深さ値をレンダリングするレンダリング・アルゴリズム１２０を含む。たとえば、レンダリング・アルゴリズム１２０は、１）画面の各画素を通して視点からの光線を生成し、２）場面を通して光線を追跡して三角形のヒット・ポイントを求め、３）ヒット・ポイントに基づいて光線に陰影を付けることができる。当業者ならわかるように、ＳＰＵ１１０はレンダリング・アルゴリズム１２０をサポートすることができる既成の装置としてもよい。
【００１８】
ＳＰＵ１１０は、システム・メモリ１３０からモデル・データ１４０を取り出す。モデル・データ１４０は、高品質の画像レンダリング・オブジェクトに対応する３次元データである。たとえば、ユーザは、ユーザが見るためのリアルな画像を作成するために、建物を高品質画像としてレンダリングしたい場合がある。レンダリング・アルゴリズム１２０は、モデル・データ１４０を使用して、オブジェクトを表す色値と深さ値を含むレイ・トレース・データ１５０を生成する。生成された後、ＳＰＵ１１０はレイ・トレース・データ１５０をレイ・トレース画素データの「断片」としてシステム・メモリ１３０に記憶する。各レイ・トレース画素データは、レイ・トレース画素深さ値とレイ・トレース画素色値とを含む。レイ・トレース画素深さ値は、深さバッファ１５５（システム・メモリ１３０内の記憶域）に記憶され、観察者から画面空間内の断片までの距離に対応する。たとえば、レイ・トレース画素の深さ値が「８０」である場合、表示される画像全体を基準としてユーザから８０単位分離れて表示される断片に対応する。レイ・トレース画素の色値はカラー・バッファ１６０に記憶され、断片に対応する色情報を含む。システム・メモリ１３０は、コンピュータ記憶装置やコンピュータ・ハード・ドライブなどの揮発性または不揮発性記憶域に格納することができる。
【００１９】
ラスタライザ１７５は、ポリゴン・レンダリングが可能な既成のラスタライザ装置またはソフトウェア／ファームウェアとすることができる。ラスタライザ１７５は、特定のオブジェクトのポリゴンをレンダリングし、そのポリゴンの１つを画面空間の断片に分解する。断片は「ラスタ化画素データ」断片として記憶される。各ラスタ化画素データ断片は、ラスタ化画素深さ値とラスタ化画素色値とを含む。ラスタ化画素深さ値は、観察者から画面空間内の断片までの距離に対応する。たとえば、ラスタ化画素深さ値が「２０」の場合は、表示される画像全体を基準にしてユーザから２０単位分離れたところに表示されるラスタ化断片に対応する。ラスタ化画素色値は色情報を含み、その他にラスタ化断片に対応する補助的情報も含むことができる。
【００２０】
ラスタライザ１７５は、システム・メモリ１３０を指示し、入出力部１６５を介して深さバッファ１５５から画面空間内の位置に対応する第１のレイ・トレース画素データ（レイ・トレース画素深さ値１７０）を取り出す。ラスタライザ１７５は、ラスタ化画素データを画面上のその特定の位置のレイ・トレース画素データの代わりに表示すべきか否かを判断するために、レイ・トレース画素深さ値１７０を、同じ画面空間位置に対応するラスタ化画素深さ値と比較する。たとえば、山の前に車両がある場合などのように、画面上の特定の位置のラスタ化画素深さ値が２０、それに対応するレイ・トレース画素深さ値が４０という場合がある。この例では、ラスタ化断片の方が、レイ・トレース画素断片よりも観察者に「近い」。したがって、ラスタ化画素データを画面上のその特定の位置にあるレイ・トレース画素データの代わりに表示すべきである。
【００２１】
ラスタライザ１７５が、ラスタ化画素データをある画面位置にあるレイ・トレース画素データの代わりに表示すべきであると判断した場合、ラスタライザ１７５は、レイ・トレース・データをラスタ化画素データ１８０で上書きする。これには、深さバッファ１５５内のラスタ化画素深さ値１７０をラスタ化画素深さ値で上書きし、カラー・バッファ１６０内のレイ・トレース画素色値をラスタ化画素色値で上書きする必要がある。ラスタ化断片毎に、ラスタライザ１７５はそのラスタ化画素深さ値を対応するレイ・トレース画素深さ値と比較し、それに応じてシステム・メモリ１３０内のレイ・トレース画素データをラスタ化画素データで上書きする。
【００２２】
次に、ラスタライザ１７５は、他のポリゴンを画面空間断片に分解する処理に進み、そのラスタ化画素深さ値を深さバッファ１８５内にある深さ値と比較する。画面上の特定の位置で、ラスタライザ１７５は既存のデータを複数回ラスタ化データで上書きすることもある。たとえば、画面上の特定の位置について、ラスタライザ１７５はレイ・トレース画素データを車両に対応するラスタ化画素データで上書きし、次に、そのラスタ化画素データを車両の前に立つ人物に対応する他のラスタ化画素データで上書きすることができる。
【００２３】
ラスタライザ１７５が各ポリゴンの各断片の断片比較を完了すると、システム・メモリ１３０には、レイ・トレース画素データとラスタ化画素データを含む、画面上表示する画像を表す「合成」データ１８５が記憶される。表示サブシステム１９０が、システム・メモリ１３０から合成データ１８５を走査出力し、表示装置１９５上に画像を生成する。
【００２４】
図２は、モデル・データからレイ・トレース・データを生成し、特定の深さ値に基づいてそのレイ・トレース・データの一部をラスタ化データで上書きする処理の各ステップを示す高水準フローチャートである。シナジスティック・プロセッシング・ユニット（ＳＰＵ）が、レイ・トレーシングやレイ・キャスティングなどのレンダリング・アルゴリズムを使用して、モデル・データからレイ・トレース・データを生成し、ラスタライザが、ラスタ化データの方がレイ・トレース・データよりも視点に「近い」か否かに基づいて、レイ・トレース・データの一部をラスタ化データで上書きする。
【００２５】
２００で処理が開始し、システム・メモリ１３０からモデル・データを取り出す（ステップ２１０）。モデル・データ１４０は、芝生や山などの特定のオブジェクトに対応するデータである。ステップ２２０で、レンダリング・アルゴリズムを使用してモデル・データ１４０からレイ・トレース・データを生成する。システム・メモリ１３０とモデル・データ１４０は、図１に示すものと同じである。
【００２６】
ステップ２２５で、レイ・トレース・データ１５０をシステム・メモリ１３０に記憶する。レイ・トレース・データ１５０は、レイ・トレース画素データの断片の形で記憶され、各断片はレイ・トレース画素深さ値とレイ・トレース画素色値とを含む。レイ・トレース画素深さ値は、その特定の断片の深さに対応する。レイ・トレース画素色値は色値を含み、その他に補助的情報も含むことができる。レイ・トレース・データ１５０は、図１に示すものと同じである。
【００２７】
ラスタライザは、システム・メモリ１３０からレイ・トレース画素深さ値１７０を取り出し、断片単位でレイ・トレース画素データをラスタ化画素データと比較する。レイ・トレース断片に「重ね合わさる」ラスタ化断片の場合は、対応するレイ・トレース画素データをラスタ化画素データ１８０で上書きする（事前定義済み処理ブロック２３０。詳細は図３および対応する本文を参照）。ラスタライザがラスタ化断片の処理を終了した後は、システム・メモリ１３０にはレイ・トレース・データとラスタ化データとが記憶され、その結果として合成データ１８５が得られる。合成データ１８５は図１に示すものと同じである。
【００２８】
ステップ２４０で、表示サブシステムがシステム・メモリ１３０から合成データ１８５を取り出し、表示装置１９５上に画像を表示する。この画像は図１に示すものと同じである。処理は２６０で終了する。
【００２９】
図３は、レイ・トレース画素深さ値を対応するラスタ化画素深さ値と比較し、比較に基づいてレイ・トレース画素データをラスタ化画素データで上書きする処理の各ステップを示すフローチャートである。
【００３０】
処理が３００で開始すると、ラスタライザはオブジェクト（たとえば車両、人物など）に対応するポリゴンをレンダリングし、それらのポリゴンをポリゴン記憶部３０８に記憶する（ステップ３０５）。ポリゴン記憶部３０８は、コンピュータ記憶装置などの揮発性記憶域に格納することができる。ステップ３１０で、ポリゴン記憶部３０８から第１のポリゴンを選択し、選択したポリゴンをステップ３２０で画面空間断片すなわち「ラスタ化画素データ」断片に断片化する。
【００３１】
各ラスタ化画素データ断片は、ラスタ化画素深さ値とラスタ化画素色値とを含む。ラスタ化画素深さ値は、観察者から画面空間内の断片までの距離に対応する。たとえば、ラスタ化画素深さ値が「２０」の場合は、表示される画像全体を基準にしてユーザから２０単位分離れたところに表示される断片に対応する。ラスタ化画素色値は色情報を含み、さらにそのポリゴン断片に対応する補助的情報も含むことができる。
【００３２】
ステップ３３０で、画面位置に対応するラスタ化画素データ断片を選択し、ステップ３４０で、深さバッファ１８０から同じ画面位置に対応するレイ・トレース画素深さ値を取り出す。深さバッファ１８０は図１の示すものと同じである。ステップ３５０で、選択したラスタ化画素データの深さ値をレイ・トレース画素深さ値と比較する。
【００３３】
深さ値の比較に基づいて、ラスタ化画素データをレイ・トレース画素データの前面に表示すべきか否かを判断する（決定３６０）。たとえば、山の前に車両がある場合のように、画面の特定の位置のラスタ化画素深さ値が２０でそれに対応するレイ・トレース画素深さ値が４０の場合がある。この例では、ラスタ化断片の方がレイ・トレース断片よりも観察者に「近い」ため、レイ・トレース画素データの代わりにラスタ化画素データを表示すべきである。
【００３４】
レイ・トレース画素データの代わりにラスタ化画素データを表示すべき場合、決定３６０は「Yes」分岐３６８に分岐し、深さバッファ１８０内のレイ・トレース画素深さ値をラスタ化画素深さ値で上書きし、カラー・バッファ１６０内の対応するレイ・トレース画素色値を対応するラスタ化画素色値で上書きする（ステップ３７０）。カラー・バッファ１６０は図１に示すものと同じである。
【００３５】
一方、ラスタ化断片がレイ・トレース断片の「背後」にある場合、決定３６０は「No」分岐３６２に分岐し、ラスタ化画素データを無視し（ステップ３６５）、それによってシステム・メモリ１３０内のレイ・トレース画素データを保持する。
【００３６】
選択されたポリゴンに対応する未処理の断片が他にあるか否かを判断する（決定３８０）。未処理の断片がまだある場合、決定３８０は「Yes」分岐３８２に分岐してループ・バックし、次のラスタ化画素データを選択し（ステップ３８５）、処理する。このループは、選択されたポリゴンに対応する各ラスタ化断片が処理されるまで続き、処理し終わった時点で決定３８０は「No」分岐３８８に分岐する。
【００３７】
断片に分割して処理すべきポリゴンがポリゴン記憶部３０８に他にまだあるか否かを判断する（決定３９０）。未処理のポリゴンが他にもある場合、決定３９０は「Yes」分岐３９２に分岐してループ・バックし、次のポリゴンを選択し（ステップ３９５）、処理する。このループは、処理すべきポリゴンがなくなるまで続き、なくなった時点で決定３９０は「No」分岐３９７に分岐し、処理は３９９で戻る。
【００３８】
図４に、本発明を実施することができるコンピュータ装置であるブロードバンド・プロセッサ・アーキテクチャのブロック図を示す。ＢＰＡ１００は、複数の異種プロセッサと、共有メモリと、共有バスとを含む。異種プロセッサは、共有メモリおよび共有バスを共用する互いに異なる命令セットを有するプロセッサである。たとえば、異種プロセッサの１つがデジタル信号プロセッサであり、他方の異種プロセッサがマイクロプロセッサであり、両者が同じ記憶空間を共有するものであってもよい。
【００３９】
ＢＰＡ１００は、図１に示すものと同じであり、共有メモリおよび共有バスを共用する異種プロセッサを含む。ＢＰＡ１００は、入出力部１６５を介して外部装置との間で情報を送受信し、その情報をプロセッサ・エレメント・バス４６０を使用して制御プレーン４１０とデータ・プレーン４４０に渡す。制御プレーン４１０はＢＰＡ１００を管理し、データ・プレーン４４０に作業を渡す。入出力部１６５は図１に示すものと同じである。
【００４０】
制御プレーン４１０は、オペレーティング・システム（ＯＳ）４２５を実行する処理ユニット４２０を含む。たとえば、処理装置４２０はＢＰＡ１００に内蔵されたＰｏｗｅｒＰＣコアとし、ＯＳ４２５はＬｉｎｕｘオペレーティング・システムとしてもよい。処理ユニット４２０は、ＢＰＡ１００のための共用メモリ・マップ・テーブルを管理する。メモリ・マップ・テーブルは、Ｌ２メモリ４３０や、データ・プレーン４４０に含まれる非プライベート・メモリなど、ＢＰＡ１００に含まれる記憶場所に対応する。Ｌ２メモリは、図１に示すシステム・メモリ１３０に対応するものであってもよい。
【００４１】
データ・プレーン４４０は、シナジスティック・プロセッシング・コンプレックス（ＳＰＣ）４４５、４５０、および４５５を含む。各ＳＰＣは、データ情報を処理するために使用され、各ＳＰＣは異なる命令セットを有することができる。たとえば、ＢＰＡ１００を無線通信システムで使用し、各ＳＰＣが変調、チップ速度処理、符号化、ネットワーク・インターフェース処理など、別々の処理タスクを行ってもよい。他の例として、各ＳＰＣが同じ命令セットを有し、並行して使用して、並行処理によって利点が得られる動作を行ってもよい。各ＳＰＣは、図１に示すシナジスティック・プロセッシング・ユニット（ＳＰＵ）１１０のような、デジタル信号プロセッサ、マイクロコントローラ、マイクロプロセッサ、またはこれらのコアの組合せなどの処理コアであるＳＰＵを備える。
【００４２】
ＳＰＣ４４５、４５０および４５５は、制御プレーン４１０、データ・プレーン４４０、入出力部１６５の間で情報を受け渡しするプロセッサ・エレメント・バス４６０に接続されている。ラスタライザ１７５は、ポリゴンをレンダリングするためのポリゴン・エンジンを含み、入出力部１６５を介してＢＰＡ１００との間でデータを送受信する。ラスタライザ１７５は図１に示すものと同じである。
【００４３】
バス４６０は、入出力部１６５、制御プレーン４１０、データ・プレーン４４０の間で情報を受け渡しするオンチップ・コヒーレント・マルチプロセッサ・バスである。入出力部１６５は、ＢＰＡ１００に接続された周辺装置に基づいて入出力コントローラにインターフェース・ピンを動的に割り当てる、柔軟性のある入出力論理を備える。
【００４４】
図４に示すコンピュータ・システムは本明細書に記載の処理を実行することができるが、このコンピュータ・システムはコンピュータ・システムの一例に過ぎない。当業者なら、他の多くのコンピュータ・システム設計でも本明細書に記載の処理を実行可能であることがわかるであろう。
【００４５】
本発明の好ましい実施形態の１つは、クライアント・アプリケーション、すなわち、たとえばコンピュータのランダム・アクセス・メモリに常駐するコード・モジュール内の命令のセット（プログラム・コード）である。この命令のセットは、コンピュータが必要とするまで、たとえばハード・ディスク・ドライブまたは光学ディスク（最終的にＣＤ  ＲＯＭで使用）やフロッピー（登録商標）・ディスク（最終的にフロッピー（登録商標）・ディスク・ドライブで使用）などの取外し可能記憶装置など、他のコンピュータ記憶装置に格納しておくことができ、インターネットまたはその他のコンピュータ・ネットワークを介してダウンロードすることもできる。したがって、本発明はコンピュータで使用するためのコンピュータ・プログラム製品として実施することができる。さらに、上記の様々な方法はソフトウェアによって選択的に起動または再構成される汎用コンピュータで好都合に実施されるが、当業者なら、このような方法を、必要な方法ステップを実行するように構成されたハードウェア、フレームウェア、またはより特化された装置で行うこともできることがわかるであろう。
【００４６】
以上、本発明の特定の実施形態について図示し、説明したが、本明細書に記載の教示に基づき、当業者なら、本発明および本発明のより広い態様から逸脱することなく、変更および修正を加えることができることが明らかであろう。したがって、特許請求の範囲は、そのようなすべての変更および修正を本発明の範囲内にあるものとして含むものである。さらに、本発明は、特許請求の範囲によってのみ規定されるものと理解すべきである。導入された特定の数の請求要素を意図している場合にはそのような意図が特許請求の範囲に明示的に記載され、そのような記載がない場合にはそのような限定はないということが、当業者ならわかるであろう。たとえば、これに限らないが、わかりやすいように例を挙げると、特許請求の範囲には、請求要素を導入するために「少なくとも１つの」や「１つまたは複数の」という導入語句が記載されている。しかし、そのような語句を使用したことを、不定冠詞「a」または「an」による請求要素の導入によって、導入された当該請求要素を含む特定の請求項が当該要素を１つだけ含む発明に限定されることを意味するものとして解釈すべきではない。このことは、同じ請求項が「１つまたは複数の」または「少なくとも１つの」と、「a」または「an」などの不定冠詞とを含む場合であっても言える。また、同じことは定冠詞の付いた請求項における使用についても当てはまる。
【図面の簡単な説明】
【００４７】
【図１】ラスタライザが、レイ・トレース画素データを、対応する深さ値に基づいてラスタ化画素データで上書きする様子を示す図である。
【図２】モデル・データからレイ・トレース・データを生成し、特定の深さ値に基づいてそのレイ・トレース・データの一部をラスタ化データで上書きする処理のステップを示す高水準フローチャートである。
【図３】レイ・トレース画素深さ値を対応するラスタ化画素深さ値と比較し、その比較に基づいてレイ・トレース画素データをラスタ化画素データで上書きする処理のステップを示すフローチャートである。
【図４】ブロードバンド・プロセッサ・アーキテクチャ（ＢＰＡ：BroadbandProcessor Architecture）を示す図であり、本明細書に記載の演算処理を行うことができるコンピュータ・システムの一例を示す略図である。
【図１】
2009505184.tif 000003
【図２】
2009505184.tif 000004
【図３】
2009505184.tif 000005
【図４】
2009505184.tif 000006
【国際調査報告】
2009505184.tif 000007
2009505184.tif 000008