(57)【要約】【課題】レイ・トレーシング（光線追跡）を実行する方法および装置を提供する。【解決手段】２次レイにより横切られたオブジェクトからの色寄与をマージあるいは付加することによって、画像処理システムは、更なる色寄与が決定されることに伴い、２次レイにより横切られたオブジェクトからのピクセルに対する色寄与を累積することができる。さらに、色寄与のスケーリング因子をオブジェクトおよびオブジェクトを横切る２次レイに関連付けることにより、２次レイ／オブジェクト交差に起因する色寄与は、ピクセルに対するオリジナル・レイ／オブジェクト交差からの色寄与より後に計算され得る。【選択図】図５
2010505164.tif 000002
【特許請求の範囲】
【請求項１】
レイ・トレーシング画像処理システムにおいてピクセルの色を決定する方法であって、
前記ピクセルを通して３次元シーン中に１次レイを発するステップと、
前記１次レイにより横切られた第１プリミティブの色値に基づいて前記ピクセルについて初期色値を決定するステップと、
前記１次レイにより横切られた前記第１プリミティブから前記シーン中に少なくとも１つの２次レイを発するステップと、
前記２次レイにより横切られた第２プリミティブの色値と前記１次レイにより横切られた前記第１プリミティブに関連付けられているスケーリング因子とに基づいて前記ピクセルについての色値を更新するステップと、
を含む方法。
【請求項２】
前記２次レイにより横切られた前記プリミティブから少なくとも１つの更なる２次レイを前記シーン中に発するステップと、
前記更なる２次レイにより横切られた第３プリミティブの色値と、前記第１プリミティブおよび前記第２プリミティブに基づく第２スケーリング因子とに基づいて前記ピクセルについての前記色値を更新するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記第１プリミティブに関連付けられている前記スケーリング因子は、前記第１プリミティブの反射特性または屈折特性のうちの少なくとも１つに基づいて決定される、請求項１に記載の方法。
【請求項４】
前記第２スケーリング因子は、前記第１プリミティブに関連付けられている前記スケーリング因子と前記第２プリミティブに関連付けられているスケーリング因子との組み合わせに基づいて計算される、請求項２に記載の方法。
【請求項５】
前記第２プリミティブに関連付けられている前記スケーリング因子は、前記第２プリミティブの反射特性または屈折特性のうちの少なくとも１つに基づいて決定される、請求項４に記載の方法。
【請求項６】
前記組み合わせは、前記第１プリミティブに関連付けられている前記スケーリング因子に、前記第２プリミティブに関連付けられている前記スケーリング因子を乗じることによって決定される、請求項４に記載の方法。
【請求項７】
メモリ・キャッシュと、
ピクセルを通して３次元シーン中にオリジナル・レイを発し、第１リーフ・ノードに達するまで空間インデックスを前記オリジナル・レイで横断するように構成された第１処理エレメントと、
前記オリジナル・レイおよび前記第１リーフ・ノードを定義する情報を前記第１処理エレメントから受け取り、前記オリジナル・レイにより横切られた第１プリミティブの色に基づいて前記ピクセルに対する第１色寄与を決定し、前記第１プリミティブに基づいて色寄与の第１スケーリング因子を決定し、前記オリジナル・レイと前記第１プリミティブとの交差に基づいて少なくとも１つの２次レイを発し、前記色寄与の第１スケーリング因子を前記少なくとも１つの２次レイに関連付けるように構成された第２処理エレメントと、
を含む画像処理システム。
【請求項８】
前記色寄与の第１スケーリング因子は少なくとも前記第１プリミティブの反射特性または屈折特性に基づく、請求項７に記載の画像処理システム。
【請求項９】
前記ピクセルに対応する前記メモリ・キャッシュ内の記憶場所をさらに含み、
前記第２処理エレメントは、前記ピクセルに対する前記第１色寄与を、前記第１ピクセルに対応する前記記憶場所に格納するように構成されている、
請求項７に記載の画像処理システム。
【請求項１０】
前記第１処理エレメントは、さらに、第２リーフ・ノードに達するまで前記空間インデックスを前記２次レイで横断するように構成されており、
前記第２処理エレメントは、前記２次レイおよび前記第２リーフ・ノードを定義する情報を前記第１処理エレメントから受け取り、前記２次レイにより横切られた第２プリミティブの色に基づいて前記ピクセルに対する第２色寄与を決定し、前記第１プリミティブおよび前記第２プリミティブに基づいて色寄与の第２スケーリング因子を決定し、前記２次レイと前記第２プリミティブとの交差に基づいて少なくとも１つの更なる２次レイを発し、前記色寄与の第２スケーリング因子を前記少なくとも１つの更なる２次レイに関連付けるようにさらに構成されている、
請求項９に記載の画像処理システム。
【請求項１１】
前記第１処理エレメントは、前記ピクセルに対応する前記メモリ・キャッシュ内の前記記憶場所から前記ピクセルの色を読み出し、前記記憶場所から読み出された前記ピクセルの前記色を、前記ピクセルに対する前記第２色寄与と組み合わせ、その組み合わせを前記ピクセルに対応する前記メモリ・キャッシュ内の前記記憶場所に格納するようにさらに構成されている、請求項１０に記載の画像処理システム。
【請求項１２】
前記色寄与の第２スケーリング因子は、前記第１プリミティブの特性と前記第２プリミティブの特性との組み合わせに基づいて決定される、請求項１０に記載の画像処理システム。
【請求項１３】
前記色寄与の第２スケーリング因子は、前記第１プリミティブに関連付けられているスケーリング因子に、前記第２プリミティブに関連付けられているスケーリング因子を乗じることによって決定される、請求項１２に記載の画像処理システム。
【請求項１４】
請求項１ないし６のうちのいずれかの請求項のステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータ処理の分野に関し、特にレイ・トレーシング（光線追跡）画像処理システムにおけるピクセル色の決定に関する。
【背景技術】
【０００２】
３次元シーンから２次元画像をレンダリング（再現）するプロセスは一般に画像処理と称されている。最新のコンピュータ産業が進化するに連れて画像処理も進化する。画像処理の進化の１つの目標は、３次元シーンの２次元シミュレーションあるいはレンダリングをなるべくリアルにすることである。リアルな画像のレンダリングについての１つの制約は、現代のモニタがピクセルを用いて画像を表示することである。
【０００３】
ピクセルは、モニタ上で照明され得る最小の空間領域である。たいていの最新のコンピュータ・モニタは、画面あるいはレンダリングされるシーンの全体を構成するために数十万又は数百万のピクセルの組み合わせを使用する。個々のピクセルは格子パターンに配列され、全体としてモニタの表示領域全体を覆う。各々のピクセルは、見られる最終的画像をレンダリングするために照明され得る。
【０００４】
ピクセルを使用する２次元モニタ上に実世界（リアルワールド）の３次元シーンをレンダリングするための１つの技術はラスタ化と呼ばれる。ラスタ化は、ベクトル・フォーマットで表された２次元画像（シーン内の幾何学的オブジェクトの数学的表現）を取って、その画像をモニタ上で表示するために個々のピクセルに変換するプロセスである。ラスタ化は図形を迅速に、割合に少量の計算力を用いてレンダリングすることに関しては有効であるけれども、ラスタ化には幾つかの欠点がある。例えば、ラスタ化は光の物理的特性に基づいてはおらず、むしろラスタ化は２次元平面に投影されたシーン内の３次元の幾何学的オブジェクトの形状に基づくので、ラスタ化はしばしばリアリズムの欠如という欠点を有する。更に、ラスタ化でシーンをレンダリングするのに必要とされる計算力は、レンダリングされるべきシーンの複雑さの増大に正比例して増大する。画像処理がより現実的（リアル）になるのに伴って、レンダリングされるシーンもより複雑になる。従って、ラスタ化は複雑さに正比例して増大するので、ラスタ化は画像処理が進化するに連れて困難になる。
【０００５】
実世界の３次元シーンをピクセルを用いる２次元モニタ上にレンダリングするための他の１つの技術はレイ・トレーシング（光線追跡）と呼ばれる。レイ・トレーシング技術は、仮想レイ（光線と同様に振る舞うレイ）の伝播を、コンピュータ・スクリーンにレンダリングされるべき３次元シーンの中に追跡する。該レイは、コンピュータ・スクリーンの背後に座っている観察者の目（単数又は複数）から生じて、コンピュータ・スクリーンを構成するピクセルを３次元シーンの方へ通過する。各々の追跡されるレイはシーンの中へ進み、シーン内のオブジェクト（物体）と交差することができる。レイがシーン内のオブジェクトを横切ったならば、そのレイが照射されている（ｅｘｐｏｓｅｄ）色及び光の量、あるいはその欠如、を計算するために該オブジェクトの特性と他の幾つかの寄与因子とが使用される。その後、その追跡されるレイが通過したピクセルの最終的な色を決定するために、それらの計算が使用される。
【０００６】
レイを追跡するプロセスは単一のシーンについて多数回実行される。例えば、画面内の各ピクセルのために単一のレイが追跡され得る。コンピュータ・スクリーンの２次元画面を構成する全てのピクセルの色を決定するために充分な数のレイが追跡されたならば、３次元シーンの２次元合成がコンピュータ・スクリーンで観察者に対して表示され得る。
【０００７】
レイ・トレーシングは、通例、ラスタ化よりリアルに実世界３次元シーンをレンダリングする。それは、レイ・トレーシングが、ラスタ化で行われるように単に３次元形状を２次元平面上に投影するのではなく，光が実世界環境においてどの様に進み振る舞うかをシミュレートするという事実にある程度起因する。従って、レイ・トレーシングを用いてレンダリングされる図形は私たちの目が実世界で見慣れているものをモニタ上により精密に描く。
【０００８】
さらに、レイ・トレーシングは、シーンがより複雑になるのに従ってラスタ化よりも良好にシーンの複雑さの増大に対処する。レイ・トレーシングはシーンの複雑さと共に対数的に増大する。それは、シーンがより複雑になっても同じ数のレイがシーン中に放たれ得るという事実に起因する。従って、レイ・トレーシングは、シーンがより複雑になるとき計算力要件に関してラスタ化が苦しむように苦しむことは無い。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
レイ・トレーシングの１つの大きな欠点は、シーンをレンダリングするために多数の計算、従って処理力、が必要とされることである。これは、高速レンダリングが必要とされるときに問題をもたらす。例えば、画像処理システムがゲーム・コンソールなどの動画目的で図形をレンダリング（再現）するときなどがこれにあたる。レイ・トレーシングのために計算要件が増大しているのでリアルに見えるように充分速く動画をレンダリングすることは困難である（リアルな動画は毎秒約２０ないし２４フレームである）。
【００１０】
従って、レイ・トレーシングを実行するより効率的な技術及び装置に対するニーズが存在する。
【課題を解決するための手段】
【００１１】
本発明の実施態様は、一般的にレイ・トレーシングを実行する方法及び装置を提供する。
【００１２】
本発明の一実施態様に従って、レイ・トレーシング画像処理システムにおいてピクセルの色を決定する方法は、そのピクセルを通して３次元シーン中に１次レイを発するステップと、１次レイにより横切られた第１プリミティブの色値に基づいてそのピクセルについて初期色値を決定するステップと、１次レイにより横切られたプリミティブからシーン中に少なくとも１つの２次レイを発するステップと、２次レイにより横切られた第２プリミティブの色値と１次レイにより横切られた第１プリミティブに関連付けられているスケーリング因子とに基づいてそのピクセルについての色値を更新するステップとを含む。
【００１３】
本発明の他の１つの実施態様に従って、画像処理システムは、メモリ・キャッシュと、ピクセルを通して３次元シーン中にオリジナル・レイを発し、第１リーフ・ノードに達するまで空間インデックスをオリジナル・レイで横断するように構成された第１処理エレメントと、オリジナル・レイ及び第１リーフ・ノードを定義する情報を第１処理エレメントから受け取り、オリジナル・レイにより横切られた第１プリミティブの色に基づいてピクセルに対する第１色寄与を決定し、第１プリミティブに基づいて色寄与の第１スケーリング因子を決定し、オリジナル・レイと第１プリミティブとの交差に基づいて少なくとも１つの２次レイを発し、色寄与の第１スケーリング因子を少なくとも１つの２次レイに関連付ける第２処理エレメントとを含む。
【００１４】
本発明の他の１つの実施態様に従って、コンピュータ可読媒体はプログラムを含み、そのプログラムは、一般的に、ピクセルを通して３次元シーン中に１次レイを発することと、１次レイにより横切られた第１プリミティブの色値に基づいてそのピクセルについて初期色値を決定することと、１次レイにより横切られたプリミティブからシーン中に少なくとも１つの２次レイを発することと、２次レイにより横切られた第２プリミティブの色値と１次レイにより横切られた第１プリミティブに関連付けられているスケーリング因子とに基づいてそのピクセルについての色値を更新することとをコンピュータに実行させる。
【発明を実施するための最良の形態】
【００１５】
本発明の実施態様は、レイ・トレーシング法を用いて画像を処理するときにピクセルの色を更新する方法および装置を提供する。本発明の一実施態様に従って、３次元シーン内でオリジナル（1次）・レイ及び２次レイにより横切られるオブジェクトにスケーリング因子が関連付けられ得る。画像処理システムによって発せられて第１処理エレメントにより空間インデックスを通して追跡されるオリジナル・レイがオブジェクトを横切ったならば、その横切られたオブジェクトの色は、オリジナル・レイが通過したピクセルの色を更新するために使用され得る。さらに、オリジナル・レイが通過したピクセルの色に３次元シーン内の他のオブジェクトが寄与するか否かを判定するために、オリジナル・レイがオブジェクトを横切ったポイントから２次レイが放出され得る。本発明の一実施態様に従って、放出された２次レイを定義する情報は前のレイ（例えば、オリジナル・レイ）により横切られたオブジェクトに関連付けられたスケーリング因子を含むこともできる。前のレイ（例えば、オリジナル・レイ）により横切られたオブジェクトに関連付けられているスケーリング因子を含めることにより、２次レイが横切るオブジェクトからのピクセルへの付加的色寄与が、オリジナル・レイが横切るオブジェクトに起因する該ピクセルへの色寄与から独立に（例えば、後に、あるいは別の処理エレメントにより）計算され得る。
【００１６】
以下では、本発明の実施態様が参照される。しかし、本発明は特定の記述される実施態様に限定されないということが理解されるべきである。その代わりに、以下の特徴およびエレメントの任意の組み合わせは、異なる実施態様に関連してもしなくても、本発明を具体化し実施すると考えられる。さらに、種々の実施態様において本発明は従来技術と比べて多数の利点を提供する。しかし、本発明の実施態様は他の可能な解決策と比べて、かつ、または従来技術と比べて、利点を達成できるけれども、特定の利点が所与の実施態様によって達成されるか否かは本発明を限定しない。従って、以下の側面、特徴、実施態様および利点は、単に実例となるものであって、請求項において明示的に述べられている場合を除いて添付請求項の要素あるいは限定事項とは考えられない。同様に、“本発明”への言及は、本書において開示されている独創的内容の一般化と解されてはならず、また、請求項において明示的に述べられている場合を除いて添付請求項の要素あるいは限定事項と見なされてはならない。
【００１７】
本発明の一実施態様は、コンピュータ・システムと共に用いられるプログラムとして実施される。該プログラムは、（本書に記載されている方法を含む）実施態様の機能を定義し、種々のコンピュータ可読媒体に含まれ得る。実例となるコンピュータ可読媒体は、（ｉ）書き換え不可能な記憶媒体（例えば、ＣＤ−ＲＯＭドライブにより読み出し可能なＣＤ−ＲＯＭディスクのようなコンピュータ内の読み出し専用記憶装置など）に永久的に格納されている情報、（ｉｉ）書き換え可能な記憶媒体（例えば、ディスケット・ドライブまたはハードディスク・ドライブ内のフレキシブル・ディスクなど）に格納されている可変情報、および（ｉｉｉ）コンピュータまたは電話ネットワークを通すなどして無線通信を含む通信媒体によりコンピュータに伝えられる情報を含むが、これらに限定されない。後者の実施態様は、インターネットおよび他のネットワークからダウンロードされる情報を特に含む。この様なコンピュータ可読媒体は、本発明の機能を指示するコンピュータ可読命令を担うときには、本発明の実施態様を代表する。
【００１８】
一般に、本発明の実施態様を実施するために実行されるルーチンは、オペレーティング・システム、または特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクトまたは命令のシーケンスの一部分であり得る。本発明のコンピュータ・プログラムは、通例、ネイティブのコンピュータによって機械可読フォーマットに、従って実行可能な命令に変換される多数の命令から構成される。また、プログラムは、プログラムに局所的に存在するかあるいはメモリまたは記憶装置上にある変数およびデータ構造も含む。さらに、以下で記載される種々のプログラムは、本発明の特定の実施態様でそれらがそのために実行されるところのアプリケーションに基づいて識別され得る。しかし、後に続く特定のプログラム用語は単に便宜上用いられているということが認識されるべきであり、従って本発明は、その様な用語により特定され、かつ、または示唆される特定のアプリケーションだけに用いられることに限定されるべきではない。
【００１９】
代表的なプロセッサ・レイアウトと通信ネットワーク
図１は、本発明の一実施態様に従う、マルチ・コア処理エレメント１００を示す。マルチ・コア処理エレメント１００は複数の基本スループット・エンジン１０５（Ｂａｓｉｃ  Ｔｈｒｏｕｇｈｐｕｔ  Ｅｎｇｉｎｅ（ＢＴＥ））を含む。ＢＴＥ１０５は、複数の処理スレッドとコア・キャッシュ（例えば、Ｌ１キャッシュ）とを含むことができる。各ＢＴＥ内に配置された処理スレッドは、共有されるマルチ・コア処理エレメント・キャッシュ１１０（例えば、Ｌ２キャッシュ）へアクセスすることができる。
【００２０】
ＢＴＥ１０５は、複数の受信箱（ｉｎｂｏｘ）１１５へもアクセスできる。受信箱１１５はメモリ・マップ・アドレス空間（ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ａｄｄｒｅｓｓ  ｓｐａｃｅ）であり得る。受信箱１１５は、ＢＴＥ１０５の各々の中に配置されている処理スレッドにマッピングされ得る。ＢＴＥ内に配置された各スレッドは、メモリ・マップ受信箱（ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ｉｎｂｏｘ）と、他のメモリ・マップ受信箱１１５の全てへアクセスできる。受信箱１１５は、ＢＴＥ１０５により使用される短いレイテンし（遅延時間）、高帯域幅通信ネットワークを構成する。
【００２１】
ＢＴＥは、互いに通信しデータ処理作業をＢＴＥ間で再分配するために受信箱１１５をネットワークとして使用することができる。或る実施態様については、例えばＢＴＥ１０５による処理の結果を受け入れるために、通信網において別々の送信箱（ｏｕｔｂｏｘ）が使用され得る。他の実施態様については、受信箱１１５は送信箱としても作用することができて、例えば１つのＢＴＥ１０５は、処理機能の結果を、その結果を使用する他のＢＴＥ１０５の受信箱に直接書き込む。
【００２２】
画像処理システムの総合的性能は、ＢＴＥが作業をどのくらい良く分割して再分配できるかに結び付けられ得る。受信箱１１５のネットワークは、共有されるマルチ・コア処理エレメント・キャッシュ１１０をフレーム間コヒーレンシー（一貫性）を持たないＢＴＥ通信データ・パケットで壊すこと無く作業を集めて他のＢＴＥに分配するために、使用され得る。１フレームあたりに数百万の三角形をレンダリングできる画像処理システムは、この様に結合された多数のＢＴＥ１０５を含むことができる。
【００２３】
本発明の一実施態様では、１つのＢＴＥ１０５のスレッドはワークロード・マネージャに割り当てられ得る。画像処理システムは、３次元シーンから２次元画像をレンダリング（再現）するために種々のソフトウェアおよびハードウェア・コンポーネントを使用することができる。本発明の一実施態様では、画像処理システムは、該画像処理システムにより発せられたレイで空間インデックスを横断するためにワークロード・マネージャを使用することができる。空間インデックスは、図４に関して以下でさらに記載されるように、割合に大きな３次元シーンをより小さな境界ボリュームに分割するために使用されるツリー型データ構造として実現され得る。画像処理のためにレイ・トレーシング法を用いる画像処理システムは、レイ−境界ボリューム交差（ｒａｙ−ｂｏｕｎｄｉｎｇ  ｖｏｌｕｍｅ  ｉｎｔｅｒｓｅｃｔｉｏｎ）を迅速に決定するために空間インデックスを使用することができる。本発明の一実施態様では、ワークロード・マネージャは、空間インデックスを用いることによってレイ−境界ボリューム交差試験を実行することができる。
【００２４】
本発明の一実施態様では、マルチ・コア処理エレメント１００上のマルチ・コア処理エレメントＢＴＥ１０５の他のスレッドはベクトル・スループット・エンジン（ＶＴＥ）であり得る。ワークロード・マネージャがレイ−境界ボリューム交差を判定した後、該ワークロード・マネージャは、受信箱１１５を介して、該レイを複数のベクトル・スループット・エンジンのうちの１つへ発する（送る）ことができる。ベクトル・スループット・エンジンは、その後、該レイが該境界ボリュームに含まれるプリミティブ（ｐｒｉｍｉｔｉｖｅ）を横切るか否かを判定することができる。ベクトル・スループット・エンジンは、該レイが通過したピクセルの色を決定することに関連する動作を実行することもできる。
【００２５】
図２は、本発明の一実施態様に従う、マルチ・コア処理エレメント２００のネットワークを示す。図２は、マルチ・コア処理エレメント１００のＢＴＥのうちの１つのスレッドがワークロード・マネージャ２０５である本発明の一実施態様をも示している。本発明の一実施態様に従って、マルチ・コア処理エレメント２００のネットワークの中の各マルチ・コア処理エレメント２２０１−Ｎは１つのワークロード・マネージャ２０５１−Ｎを含むことができる。本発明の一実施態様に従って、マルチ・コア処理エレメント２００のネットワークの中の各マルチ・コア処理エレメント２２０１−Ｎは複数のベクトル・スループット・エンジン（ＶＴＥ）２１０も含むことができる。
【００２６】
本発明の一実施態様に従って、ワークロード・マネージャ（ＷＭ）２０５１−Ｎは、他のマルチ・コア処理エレメント２２０１−Ｎの他のワークロード・マネージャ２０５１−Ｎまたはベクトル・スループット・エンジン（ＶＴＥ）２１０あるいはその両方と通信するために高速バス２２５を使用することができる。ベクトル・スループット・エンジン２１０の各々は、他のベクトル・スループット・エンジン２１０または他のワークロード・マネージャ２０５１−Ｎと通信するために高速バス２２５を使用することができる。ワークロード・マネージャ・プロセッサ２０５は、画像処理関連タスクを集めて他のワークロード・マネージャ２０５１−Ｎに分配し、かつ、または、タスクを他のベクトル・スループット・エンジン２１０に分配するために、高速バス２２５を使用することができる。高速バス２２５の使用は、ワークロード・マネージャ２０５１−Ｎがワークロード・マネージャ通信に関連するデータ・パケットでキャッシュ２３０に影響を及ぼすことなく通信することを可能にする。
【００２７】
代表的な３次元シーン
図３は、画像処理システムによりレンダリングされるべき代表的な３次元シーン３０５である。３次元シーン３０５の中にオブジェクト３２０が存在し得る。図３のオブジェクト３２０は、異なる幾何学的形状のオブジェクトである。図３では４つのオブジェクト３２０だけが示されているが、典型的な３次元シーン内のオブジェクトの数は、もっと多いことも少ないこともある。一般に、３次元シーンは、図３に示されているものより多くのオブジェクトを有するであろう。
【００２８】
図３に見られるように、オブジェクトは様々な幾何学的形状およびサイズのものである。例えば、図３の１つのオブジェクトはピラミッド３２０Ａである。図３の他のオブジェクトは箱３２０Ｂ−３２０Ｄである。多くの最新の画像処理システムでは、オブジェクトは、しばしば、より小さな幾何学的形状（例えば、正方形、円、三角形など）に分解される。そのとき、より大きなオブジェクトは幾つかのより小さな簡単な幾何学的形状によって表される。これらのより小さな幾何学的形状は、しばしば、プリミティブ（ｐｒｉｍｉｔｉｖｅ）と称される。
【００２９】
シーン３０５の中に光源３２５Ａ，３２５Ｂも示されている。これらの光源は、シーン３０５内に位置するオブジェクト３２０を照明することができる。さらに、シーン３０５内での光源３２５とオブジェクト３２０との位置により、光源はシーン３０５内のオブジェクト上に陰影を投じさせる。
【００３０】
３次元シーン３０５は、画像処理システムによって２次元画像にレンダリングされ得る。画像処理システムは２次元画像をモニタ３１０上に表示させることもできる。モニタ３１０は、最終的２次元画像をレンダリングするために様々な色の多数のピクセル３３０を使用することができる。
【００３１】
３次元シーン３２０を２次元画像にレンダリングするために使用される１つの方法はレイ・トレーシングと呼ばれる。レイ・トレーシングは、観察者３１５の視点から３次元シーン３２０中にレイを“発する”あるいは“放つ”画像処理システムによって達成される。レイは、光線と同様の特性および挙動を有する。
【００３２】
観察者３１５の位置から生じて３次元シーン３０５を横断する１つのレイ３４０が図３に見られる。レイ３４０が観察者３１５から３次元シーン３０５へと横断するとき、レイ３４０は、画像処理システムによって最終的な２次元画像がレンダリングされる平面を通過する。図３においては、この平面はモニタ３１０によって表される。その平面、すなわちモニタ３１０、をレイ３４０が通過するポイントはピクセル３３５によって表されている。
【００３３】
先に簡単に論じられたように、たいていの画像処理システムは、モニタ３１０上に最終的シーンをレンダリングするために数千（数百万ではないとしても）のピクセルのグリッド３３０を使用する。グリッド３３０はフレームと称され得る。各々のピクセルは、モニタ３１０上に最終的な合成２次元画像をレンダリングするために異なる色を表示することができる。３次元シーンから２次元画像をレンダリングするためにレイ・トレーシング画像処理法を使用する画像処理システムは、発せられた１つまたは複数のレイが３次元シーン内で出会う色を計算する。そのとき画像処理シーンは、レイが観察者から３次元シーンへの途上に通過したピクセルに、レイが出会った色を割り当てる。
【００３４】
ピクセルあたりに発せられるレイの数は一様でない。レンダリングされる特定のシーンのために、或るピクセルについては多くのレイが発せられ得る。その場合、そのピクセルの最終的な色は、そのピクセルのために発せられたレイの全てからの各々の色寄与により決定される。他のピクセルについては、２次元画像におけるピクセルの結果の色を決定するために単一のレイだけが発せられ得る。或るピクセルについては画像処理システムによってレイがまったく発せられない場合にはその色は画像処理システム内のアルゴリズムによって決定され、近似され、あるいは割り当てられ得る。
【００３５】
２次元画像におけるピクセル３３５の最終的な色を決定するために、画像処理システムはレイ３４０がシーン内のオブジェクトを横切るか否かを判定しなければならない。もしレイがシーン内のオブジェクトを横切らなければ、それにはデフォルト背景色（例えば、昼または夜の空を表す青または黒）が割り当てられ得る。逆に、レイ３４０が３次元シーンを横断するとき、レイ３０５はオブジェクトに当たるかもしれない。レイがシーン内のオブジェクトに当たるとき、レイが通過するピクセルにそのオブジェクトの色が割り当てられ得る。しかし、オブジェクトの色は、ピクセルに割り当てられる前に決定されなければならない。
【００３６】
オリジナル・レイ３４０が当たるオブジェクトの色には多くの因子が寄与し得る。例えば、３次元シーン内の光源はオブジェクトを照明することができる。さらに、オブジェクトの物理的特性はオブジェクトの色に寄与することができる。例えば、もしオブジェクトが反射性または透明であるならば、そのオブジェクトの色に他の非光源オブジェクトが寄与し得る。
【００３７】
３次元シーン内の他のオブジェクトからの効果を判定するためにオリジナル・レイがオブジェクトを横切ったポイントから２次レイが発せられ得る。例えば、オリジナル・レイ３４０がオブジェクトを横切ったポイントへの光の寄与を判定するためにシャドウ・レイ３４１が発せられ得る。もしオブジェクトが半透明特性を有するならば、画像処理システムは、どんな色または光がオブジェクトのボディを通して伝播されるかを判定するために伝播されるかあるいは屈折させられたレイ３４４を発することができる。もしオブジェクトが反射特性を有するならば、画像処理システムは、オブジェクト３２０上にどんな色または光が反射されるかを判定するために、反射されたレイを発することができる。
【００３８】
１つのタイプの２次レイはシャドウ・レイであり得る。各シャドウ・レイは、オリジナル・レイとオブジェクトとの交差のポイントから、３次元シーン３０５内の光源まで追跡され得る。もし該レイが光源に到達する前に他のオブジェクトに出会うこと無く光源に到達したならば、光源は、オリジナル・レイが当たったオブジェクトの、オリジナル・レイが当たったポイントを照明する。
【００３９】
例えば、シャドウ・レイ３４１Ａは、オリジナル・レイ３４０がオブジェクト３２０Ａを横切ったポイントから発せられて光源３２５Ａに向かう方向に横断することができる。シャドウ・レイ３４１Ａは、シーン３０５内の他のオブジェクト３２０と出会うこと無く光源３２５Ａに到達する。従って、光源３２５Ａは、オブジェクト３２０Ａの、オリジナル・レイ３４０が横切ったポイントを照明する。
【００４０】
他のシャドウ・レイは、オブジェクトのオリジナル・レイが当たったポイントと、３次元シーン内で他のオブジェクトにより遮られた光源との間に自分たちの経路を有することができる。もしオブジェクト上のオリジナル・レイが当たったポイントと光源との間の経路を遮断しているオブジェクトが不透明であるならば、光源は、オブジェクトの、オリジナル・レイが当たったポイントを照明しないであろう。従って、光源は、オリジナル・レイの色に寄与することができず、従って２次元画像内でレンダリングされるべきピクセルの色にも寄与することができない。しかし、もしオブジェクトが半透明あるいは透明であれば、光源は、オブジェクトのオリジナル・レイが当たったポイントを照明することができる。
【００４１】
例えば、シャドウ・レイ３４１Ｂは、オリジナル・レイ３４０がオブジェクト３２０Ａと交差したポイントから発せられて、光源３２５Ｂに向かう方向に横断することができる。この例では、シャドウ・レイ３４１Ｂの経路はオブジェクト３２０Ｄによって遮断される。もしオブジェクト３２０Ｄが不透明ならば、光源３２５Ｂは、オブジェクト３２０Ａの、オリジナル・レイ３４０が横切ったポイントを照明しない。しかし、もし、オブジェクト３２０Ｄがシャドウ・レイに対して半透明または透明であるならば、光源３２５Ｂはオブジェクト３２０Ａの、オリジナル・レイ３４０が横切ったポイントを照明することができる。
【００４２】
他の１つのタイプの２次レイは、伝播あるいは屈折させられるレイである。屈折させられるレイは、もしオリジナル・レイと交差したオブジェクトが透明または半透明の特性（例えば、ガラス）を有するならば画像処理システムによって発せられ得る。屈折させられたレイは、オリジナル・レイがオブジェクトに当たった角度に関して或る角度でオブジェクトを横断する。例えば、屈折させられたレイ３４４は、オリジナル・レイ３４０が横切ったオブジェクト３２０Ａを横断するように見える。
【００４３】
他の１つのタイプの２次レイは伝播あるいは屈折させられるレイである。もしオリジナル・レイと交差したオブジェクトが反射特性（例えば、金属仕上げ）を有するならば、オブジェクト上にどんな色または光が反射され得るのかを判定するために、反射されたレイが画像処理システムによって発せられるであろう。反射されたレイは、オリジナル・レイがオブジェクトを横切った角度に関して或る角度をなしてオブジェクトから遠ざかる。例えば、オリジナル・レイ３４０が横切ったオブジェクト３２０Ａ上にどんな色または光が反射され得るのかを判定するために、反射されたレイ３４３が画像処理システムによって発せられ得る。
【００４４】
全ての２次レイ（例えば、シャドウ・レイ、伝播されたレイ、反射されたレイ、など）の色および光の総寄与は、オリジナル・レイが通過したピクセルの最終の色をもたらすであろう。
【００４５】
代表的なＫＤ−ツリー
レイ・トレーシングを実行するときに出会う１つの問題は、発せられたレイが、レンダリングされるべきシーンの中のオブジェクトを横切るか否かを速やかにかつ効率的に判定することである。レイ交差判定をより効率的にする当業者に知られている１つの方法は、空間インデックスを使用することである。空間インデックスは３次元のシーンあるいは世界を、プリミティブを含むかもしれないし含まないかもしれないより小さなボリューム（３次元シーン全体よりは小さい）に分割する。画像処理システムは、レイがより小さなボリュームに含まれているプリミティブを横切り得るか否かを判定するために、これらのより小さなボリュームの既知の境界を使用することができる。もしレイがプリミティブを含むボリュームを横切るならば、そのボリューム内に含まれるプリミティブの既知の位置および寸法と対照して該レイの軌跡を用いてレイ交差試験を実行することができる。もしレイが特定のボリュームを横切らなければ、そのボリューム内に含まれているプリミティブに対してレイ−プリミティブ交差試験を実行する必要は無い。さらに、もしレイがプリミティブを含まない境界ボリュームを横切るならば、その境界ボリュームに対してレイ−プリミティブ交差試験を実行する必要は無い。従って、必要であるかもしれないレイ−プリミティブ交差試験の数を減らすことによって、空間インデックスの使用はレイ・トレーシング画像処理システムの性能を大幅に向上させる。種々の空間インデックス加速データ構造の幾つかの例は、オクツリー（ｏｃｔｒｅｅ）、ｋ次元ツリー（ｋｄ−ツリー）、およびバイナリ空間分割ツリー（ＢＳＰツリー）である。幾つかの異なる空間インデックス構造が存在するけれども、本発明の実施態様の記述を平易にするために、以下の例ではｋｄ−ツリーが使用される。しかし、当業者は、種々のタイプの空間インデックスのいずれにも本発明の実施態様が応用され得ることを容易に認識するであろう。
【００４６】
ｋｄ−ツリーは、シーンまたは空間全体をより小さなボリュームに分割するために軸整列境界ボリュームを使用する。すなわち、ｋｄ−ツリーは、シーンに含まれる３次元空間を、既知の軸に平行な分割平面の使用を通じて分割することができる。分割平面は、より大きな空間をより小さな境界ボリュームに分割する。それらのより小さな境界ボリュームは全体としてシーン内の空間全体を構成する。より大きな境界ボリュームを２つのより小さな境界ボリュームに分割する（分ける）決定は、画像処理システムによってｋｄ−ツリー構成アルゴリズムの使用を通じて行われ得る。
【００４７】
境界ボリュームをより小さなボリュームに何時分割するかを決定するための１つの基準は、その境界ボリュームに含まれているプリミティブの数であり得る。すなわち、境界ボリュームが所定閾値より多くのプリミティブを含んでいる限り、ツリー構成アルゴリズムは、より多くの分割平面を描くことによってボリュームを分割し続けることができる。境界ボリュームをより小さなボリュームに何時分割するかを決定するための他の１つの基準は、境界ボリュームに含まれる空間の量であり得る。さらに、境界ボリュームを分割し続ける決定は、境界ボリュームを生じさせる平面が何個のプリミティブを横切り得るかに基づくこともできる。
【００４８】
シーンの分割は、ノード、ブランチおよびリーフから構成されるバイナリ・ツリー構造により表すことができる。ツリー内の各内部ノードは割合に大きな境界ボリュームを表すことができるが、ノードは、その割合に大きな境界ボリュームの分割平面による分割の後に結果として生じる２つの割合に小さな分割されたボリュームを表すことのできるサブ・ノードへのブランチを含むことができる。軸整列ｋｄ−ツリーでは、各内部ノードは、他のノードへのブランチを２つだけ含むことができる。内部ノードは１つまたは２つのリーフ・ノードへのブランチ（すなわち、ポインタ）を含むことができる。リーフ・ノードは、より小さなボリュームにそれ以上細分されなくてプリミティブへのポインタを含むノードである。内部ノードは、さらに細分される他の内部ノードへのブランチをも含むことができる。内部ノードは、分割平面がどんな軸に沿って描かれかつその軸に沿って該分割平面が何処に描かれたかを判定するために必要とされる情報をも含むことができる。
【００４９】
代表的境界ボリューム
図４の（Ａ）−（Ｃ）は、画像処理システムによってレンダリングされるべき２次元空間と、対応するｋｄ−ツリーとを示す。簡単のために、ｋｄ−ツリーの構築を説明するために２次元空間が使用されるけれども、ｋｄ−ツリーは３次元シーンを表すためにも使用され得る。図４の（Ａ）−（Ｃ）の２次元説明図では、分割平面の代わりに分割線が示され、３次元構造で使用される境界ボリュームの代わりに境界エリアが示されている。しかし、当業者は、これらの概念がオブジェクトを含む３次元シーンに容易に応用され得ることを速やかに認識するであろう。
【００５０】
図４の（Ａ）は、モニタ３１０で表示されるべき最終の画像においてレンダリングされるべきプリミティブ４１０を含む２次元シーン４０５を示す。シーンのボリューム全体を表す最大のボリュームは、境界ボリューム１（ＢＶ１）に囲まれている。対応するｋｄ−ツリーにおいて、これは、ルート・ノードあるいは世界ノードとしても知られているトップ・レベル・ノード４５０により表すことができる。画像処理システムの一実施態様では、境界ボリュームが例えば２つより多くのプリミティブを含むときに画像処理システムは境界ボリュームをより小さな境界ボリュームに分割し続けることができる。前記のように、境界ボリュームをより小さな境界ボリュームに分割し続ける決定は多くの因子に基づくことができるが、この例では説明を容易にするために、境界ボリュームを分割し続ける決定はプリミティブの数だけに基づく。図４の（Ａ）に見られるように、ＢＶ１は６個のプリミティブを含み、従ってｋｄ−ツリー構成アルゴリズムはＢＶ１をより小さな境界ボリュームに分割することができる。
【００５１】
図４の（Ｂ）は、図４の（Ａ）に示されているのと同じ２次元シーン４０５を示す。しかし、図４の（Ｂ）ではツリー構成アルゴリズムはＢＶ１を２つのより小さな境界ボリュームＢＶ２およびＢＶ３に分割している。ＢＶ１の分割は、ｘ軸に沿ってポイントｘ１で分割平面ＳＰ１４１５を描くことによって、達成された。ＢＶ１のこの分割は、ｋｄ−ツリーにおいても、内部のあるいは親のノードＢＶ１４５０の下のＢＶ２およびＢＶ３にそれぞれ対応する２つのノード４５５および４６０として表される。ＢＶ１を表す内部ノードは、今、ＢＶ１の下の２つのノード（例えば、ＢＶ２およびＢＶ３）へのポインタ、どの軸に沿って分割平面が描かれたか（例えば、ｘ軸）、その軸に沿って何処で該分割平面が描かれたか（例えば、ポイントｘ１で）というような情報（これらに限定されない）を記憶することができる。
【００５２】
ｋｄ−ツリー構成アルゴリズムは、境界ボリュームＢＶ３を、それが所定閾値より多くの（例えば、２つより多くの）プリミティブを含んでいるので、分割し続けることができる。しかし、境界ボリュームＢＶ２はその数より少ないかあるいは等しい数のプリミティブ（例えば、２つのプリミティブ４１０Ａだけ）を含んでいるので、ｋｄ−ツリー構成アルゴリズムは境界ボリュームＢＶ２を分割し続けることはできない。ＢＶ２のような、それ以上分割あるいは細分されないノードは、リーフ・ノードと称される。
【００５３】
図４の（Ｃ）は、図４の（Ｂ）に示されているのと同じ２次元シーン４０５を示す。しかし、図４Ｃでは、ｋｄ−ツリー構成アルゴリズムはＢＶ３を２つのより小さな境界ボリュームＢＶ４およびＢＶ５に分割している。ｋｄ構成アルゴリズムは、ｙ軸に沿ってポイントｙ１で分割平面を用いてＢＶ３を分割している。ＢＶ３は２つのサブ・ノードに分割されているので、それはこの時点で内部ノードと称され得る。ＢＶ３の分割も、ｋｄ−ツリーにおいて、ＢＶ４およびＢＶ５にそれぞれ対応する２つのリーフ・ノード４６５および４７０として表される。ＢＶ４およびＢＶ５は、これらが表すボリュームがより小さな境界ボリュームにさらに分割されないので、リーフ・ノードである。２つのリーフ・ノードＢＶ４およびＢＶ５は、ｋｄ−ツリーにおいて分割された境界ボリュームを表す内部ノードＢＶ３の下に置かれている。
【００５４】
ＢＶ３を表す内部ノードは、２つのリーフ・ノード（すなわち、ＢＶ４およびＢＶ５）へのポインタ、どの軸に沿って分割平面が描かれたか（すなわち、ｙ軸）、その軸に沿って何処で該分割平面が描かれたか（すなわち、ポイントｙ１で）というような情報（これらに限定されない）を記憶することができる。
【００５５】
ｋｄ−ツリー構成アルゴリズムは、この時点で、境界ボリュームを分割するのをやめることができる。なぜならば、シーン内に位置する全ての境界ボリュームが、１つの境界ボリュームに囲まれることのできる最大所定数より少ないかまたは等しい数のプリミティブを含むからである。リーフ・ノードは、各リーフが表す境界ボリュームの中に囲まれているプリミティブへのポインタを含むことができる。例えば、リーフ・ノードＢＶ２はプリミティブ４１０Ａへのポインタを含むことができ、リーフ・ノードＢＶ４はプリミティブ４１０Ｂへのポインタを含むことができ、リーフ・ノードＢＶ５はプリミティブ４１０Ｃへのポインタを含むことができる。
【００５６】
レイ・トレーシング画像処理システムは、空間インデックス（ｋｄ−ツリー）を横断するためにワークロード・マネージャ２０５を使用することができる。ｋｄ−ツリーを横断することは、レイがサブ・ノード内に含まれているプリミティブを横切るか否か判定するために取るべきあるいは進むべき、ｋｄ−ツリーのより下のレベルのノード（サブ・ノード）へのブランチを選択することを含み得る。ワークロード・マネージャ２０５は、ｋｄ−ツリーを横断しあるいは通過するために、発せられたレイの座標および軌跡を使用することができる。レイ−境界ボリューム交差試験を実行することにより、ワークロード・マネージャ２０５は、レイがｋｄ−ツリー構造内のノードにより表される境界ボリュームの平面を横切るか否かを判定することができる。もしレイがプリミティブだけを含む境界ボリューム（すなわち、リーフ・ノード）を横切るならば、ワークロード・マネージャ２０５は、そのレイおよび関連する情報を、レイ−プリミティブ交差試験のためにベクトル・スループット・エンジン（ＶＴＥ）２１０に送ることができる。レイ−プリミティブ交差試験は、レイが境界ボリューム内のプリミティブを横切るか否か判定するために実行され得る。この方法は、１つのレイについてシーン内に含まれる各プリミティブに対してレイ−プリミティブ交差試験を実行するのに比べて、レイがシーン内のオブジェクトを横切るか否か判定するために、より少数のレイ−プリミティブ交差試験が必要とされるという結果をもたらす。
【００５７】
結果として得られたｋｄ−ツリー構造、あるいは他の空間インデックス構造は、プロセッサ・キャッシュ２３０に格納され得る。ｋｄ−ツリーと、ｋｄ−ツリーを含む対応するデータのサイズとは、プロセッサ・キャッシュ２３０に格納されるべく最適化され得る。ｋｄ−ツリーをプロセッサ・キャッシュ２３０に格納することは、レイが画像処理システムにより発せられるたびにメモリからｋｄ−ツリーを取り出すことを必要とせずに、ワークロード・マネージャが画像処理システムにより発せられたレイでｋｄ−ツリーを横断することを可能にすることができる。
【００５８】
ピクセル色累積（ｃｏｌｏｒ  ａｃｃｕｍｕｌａｔｉｏｎ）
本発明の一実施態様に従って、画像処理システムによって時間に関して前に３次元シーン内に発せられたレイが、２次レイに起因する全ての色寄与（例えば、反射と屈折とに起因する）が計算されたか否かに関わらず、ピクセルの色に寄与し得るように、色寄与のスケーリング因子を用いるピクセル色累積アルゴリズムが使用され得る。
【００５９】
図３を参照して記載されたように、３次元シーンからレンダリングされる最終的２次元画像は、数百万ではないとしても数千のピクセルを含み得る。画像処理システムは、ピクセルを通して３次元シーンの中へ、該ピクセルに割り当てる色を決定するために、レイを発することができる。レイが３次元シーン内のオブジェクトに当たったとき、レイが発せられた後にレイが通過したピクセルの色を決定するためにそのオブジェクトの色が使用され得る。さらに、３次元シーン内の他のオブジェクト（１次レイから放出された２次レイが当たった）も該ピクセルの色に寄与することができる。
【００６０】
例えば、図５は、オリジナル・レイ５４０が３次元シーン５０５の中に発せられることを示している。オリジナル・レイ５４０は、視点５１５から発せられて、３次元シーン５０５の中に進んでいくとき、ピクセル５３５を横断する。ピクセル５３５は、画像処理システムによってレンダリングされるべき最終の２次元画像またはフレーム５１０の一部であり得る。オリジナル・レイ５４０が３次元シーン５０５を横断していくとき、オリジナル・レイ５４０は第１オブジェクト５４５のポイントＡに当たりあるいはポイントＡを横切ることができる。横切られた第１オブジェクト５４５の色は、オリジナル・レイ５４０が通過したピクセル５３５の色を決定するために画像処理システムによって使用され得る。さらに、横切られたオブジェクト５４５が或る特性を有するならば、他のオブジェクト（例えば、５５０，５６０）もピクセル５３５の色に寄与することができる。例えば、オブジェクト５４５は、他のオブジェクト（例えば、５５０、５６０）に、横切られたオブジェクト５４５の、オリジナル・レイ５４０が横切ったポイント（Ａ）の色に対して寄与させることのできる反射特性（例えば、鏡のような仕上げ）または屈折特性（例えば、半透明）あるいはその両方を持つことができる。交差ポイント（Ａ）の色の寄与は、オリジナル・レイ５４０が通過したピクセル５３５の色を変化させることができる。
【００６１】
オリジナル・レイ５４０により横切られたオブジェクト５４０の反射または屈折特性に起因して他のオブジェクトがピクセルに色を与えるか否か判定するために画像処理システムによって２次レイ（例えば、５４０１−３）が発せられ得る。レイ・トレーシング法を用いる画像処理システムは、リアルな２次元画像をレンダリングするために全ての２次レイからの色の寄与を計算することができる。
【００６２】
図４に関して上で記載されたように、レイ・トレーシング法を用いる画像処理システムでは、ワークロード・マネージャ（ＷＭ）２０５は、レイがリーフ・ノードを横切るか否か判定するために空間インデックス（例えば、ｋｄ−ツリー）を横断することができる。レイがプリミティブだけを含む境界ボリューム（すなわち、リーフ・ノード）を横切るならば、ワークロード・マネージャ２０５は、そのレイを定義する情報と、その横切られたリーフ・ノードを定義する情報とを、レイ−プリミティブ交差試験のためにベクトル・スループット・エンジン（ＶＴＥ）２１０に送ることができる。レイ−プリミティブ交差試験は、レイがリーフ・ノードにより画定される境界ボリュームの中のプリミティブを横切るか否かを判定するために実行され得る。レイ−プリミティブ交差試験を実行するほかに、ベクトル・スループット・エンジン２１０は、レイが確かにプリミティブを横切ると判定した後、レイが通過したピクセルに与えられるべき該プリミティブの交差ポイントにおける色を判定することができる。
【００６３】
さらに、ベクトル・スループット・エンジン２１０は、横切られたオブジェクトの表面特性（例えば、反射性、屈折性）に基づいて１つまたは複数の２次レイを発しあるいは放出することができる。ベクトル・スループット・エンジン２１０は、２次レイのための軌跡を計算して該レイをワークロード・マネージャに空間インデックスを通しての横断のために送ることによって、２次レイを放出することができる。ワークロード・マネージャ（ＷＭ）２０５は空間インデックスを通して該２次レイを追跡することができ、ベクトル・スループット・エンジン２１０は該２次レイが３次元シーン内のオブジェクト（プリミティブ）を横切るか否か判定するために計算を行うことができる。さらに、もし該２次レイが３次元シーン内のオブジェクトを横切るならば、ベクトル・スループット・エンジン２１０は、オリジナル・レイが通過したピクセルに対してそのオブジェクトがどんな色を与えるかを計算することができる。
【００６４】
２次レイからピクセルへの色寄与は、一連の以前のレイにより横切られた１つまたは複数のオブジェクトの特性に依存する。一連の以前のレイは、２次レイを放出させた、２次レイより前のレイの全てであり得る。
【００６５】
例えば、２次レイ５４０３からの図５に示されているピクセル５３５への色寄与は、該２次レイを放出させた該２次レイより前のレイのシリーズ（すなわち、レイ５４０、レイ５４０１、およびレイ５４０２）により横切られたオブジェクト（すなわち、オブジェクト１、オブジェクト２、およびオブジェクト３）の特性に依存する。
【００６６】
ピクセルの色を決定する１つの方法は、ピクセル５３５に関連するオリジナル・レイと２次レイの全てとを空間インデックスを通して移動させ、それらの、ピクセル５３５に対する色寄与を、フレーム５１０内の第２のあるいは異なるピクセルを通して次のオリジナル・レイを発する前に、計算することによって該ピクセルの最終の色を計算することであり得る。この様に、２次レイが依存するオブジェクトの特性はメモリ（例えば、キャッシュまたはローカル・データ・レジスタ）に存在し、後に放出された各２次レイについて２次レイ色寄与を決定するために使用され得る。
【００６７】
しかし、オリジナル・レイとその後の２次レイとから放出され得る２次レイの数が多く、各２次レイの色寄与を決定するために必要とされる計算の数が多いために、他のレイを３次元シーン中に発するのを待つことは、処理エレメント（例えば、ワークロード・マネージャ２０５またはベクトル・スループット・エンジン２１０）が２次レイ関連の計算の多数の暫定的な結果をメモリ内に不必要に維持することを必要とする。さらに、２次レイの全てが空間インデックスを通して通過させられるまで他のレイを３次元シーン中に発するのを待つことは、処理エレメントが割合に長い時間にわたって待つことを必要とし得る。従って、３次元シーンから２次元画像をレンダリングするのに必要な合計の時間が増大し、レイ・トレーシング画像処理システムの性能が低下する可能性がある。
【００６８】
しかし、本発明の実施態様に従って、ピクセルの色を決定する他の１つの方法は、レイが３次元シーン内でオブジェクトを横切ったときにピクセルの色を更新あるいは累積（集積）することであり得る。レイが３次元シーン内のオブジェクトを横切るときにピクセルの色を更新するために、２次レイと３次元シーン内のオブジェクトとに色寄与のスケーリング因子を関連付けることができる。以下でさらに記載されるように、色寄与のスケーリング因子は、前に横切られたオブジェクトの特性に依存する計算が、前に横切られたオブジェクトに関連する計算から独立して計算されることを可能にし得る。従って、ピクセルの色を決定するために計算の全てを終えるのとは著しく違って、ピクセルの色はレイが３次元シーン内のオブジェクトを横切るときに更新され得る。
【００６９】
２次レイに起因するピクセルへの色寄与を決定するために独立の計算を可能にすることによって（すなわち、色寄与のスケーリング因子を用いることにより）、計算は別々の処理エレメントによって実行され得る。さらに、本発明の実施態様に従って、２次レイからの色寄与が別々の処理エレメントによって計算されるので、（例えばフレーム・バッファに格納されている）ピクセルの色を別々の処理エレメントが更新することができる。従って、１つの処理エレメントがピクセルへの全ての２次レイからの色寄与を決定することによってそのピクセルの最終の色を決定するのとは著しく違って、該ピクセルに割り当てる色を決定するために全ての２次レイが３次元シーン５０５を通して追跡されるまで待つことを必要とせずに複数の処理エレメントによって２次レイからの色寄与が実行され得る。この方法は、ピクセルの最終の色を決定するためにより少ない時間を必要とすることができ、従ってレイ・トレーシング画像処理システムの性能を改善することができる。
【００７０】
図６は、本発明の一実施態様に従う、オリジナル・レイおよび２次レイが２次元画像オブジェクトを横切ることに起因するピクセル５３５の色を累積する方法６００を示すフローチャートを示す。方法６００は、ステップ６０５から始まり、このときレイ・トレーシング画像処理システムは３次元シーン５０５中にオリジナル・レイ５４０を発する。該レイは３次元シーン５０５の中に発せられるので、該レイはオリジナル・レイと称され得る。これは、３次元シーン５０５の中の、オリジナル・レイまたは２次レイがオブジェクトに当たるポイントから発せられあるいは放出され得る２次レイとは対照的である。
【００７１】
オリジナル・レイ５４０がシーン中に発せられるとき、画像処理システムは色寄与のスケーリング因子をオリジナル・レイ５４０に関連付けることができる。これは、２次レイとは著しく違って、３次元シーン中に発せられるオリジナル・レイであるから、スケーリング因子は例えば１すなわち１００％であり得る。ステップ６３０に関して後に説明されるように、横切られたオブジェクトから発せられる２次レイ（例えば、５４０１−３）については色寄与のスケーリング因子は異なり得る。オリジナル・レイ５４０が３次元シーン５０５の方へ行くときに通過したピクセル５３５を定義する情報もオリジナル・レイ５４０に関連付けられることができる。
【００７２】
次にステップ６１０で画像処理システムは空間インデックス（例えば、ｋｄ−ツリー）を通してオリジナル・レイ５４０を追跡するためにワークロード・マネージャ２０５を使用することができる。ワークロード・マネージャ２０５は、リーフ・ノード（すなわちプリミティブだけを含む境界ボリュームを画定するノード）に達するまで空間インデックスを通して該レイを追跡し続けることができる。
【００７３】
リーフ・ノードに達した後、ステップ６１５で、ワークロード・マネージャ２０５は、レイ５４０を定義する情報（例えば、軌跡、色寄与のスケーリング因子、ピクセル５３５を定義する情報、など）をレイ−プリミティブ交差試験のためにベクトル・スループット・エンジン２１０に送ることができる。複数のワークロード・マネージャ２０５１−ｎと複数のベクトル・スループット・エンジン２１０１−ｎとを使用する画像処理システムでは、オリジナル・レイ５４０をリーフ・ノードまで追跡したワークロード・マネージャは、レイ情報を例えば複数の受信箱１１５と高速バス２２５とを介して複数のベクトル・スループット・エンジン２１０１−ｎのうちのいずれかに送ることができる。
【００７４】
ベクトル・スループット・エンジン２１０がレイ情報を受け取った後、ステップ６２０でベクトル・スループット・エンジン２１０はレイ−プリミティブ交差試験を実行することができる。レイ−プリミティブ交差試験の結果に基づいて、ベクトル・スループット・エンジン２１０はレイ５４０がリーフ・ノード内に位置するプリミティブを横切ったか否か判定することができる。レイ５４０がリーフ・ノードに含まれる単一のプリミティブを横切ったとこの時点で判定されたとしても、レイ５４０は複数のプリミティブを横切ったかも知れず、その場合には、ベクトル・スループット・エンジン２１０は視点５１５から横切られたプリミティブまでの距離を判定することによってどのプリミティブが最初に横切られたのかを判定することができ、その場合、最短距離が最初に横切られたプリミティブであり、従って見えるプリミティブ（すなわち、ピクセル５３５に色を与えるプリミティブ）である。
【００７５】
もしステップ６２５でレイ５４０がリーフ・ノードに含まれるどのプリミティブも横切らなかったとベクトル・スループット・エンジン２１０が判定したならば、画像処理システムはステップ６３０に進むことができ、ここでベクトル・スループット・エンジン２１０は、レイが通過したピクセルの色を決定することができる。レイは該リーフ・ノードに対応する境界ボリューム内のどのオブジェクトも横切らなかったのでベクトル・スループット・エンジン２１０はレイ５４０が通過したピクセル５３５に色を割り当てることができず、ワークロード・マネージャ２０５は、レイ５４０がプリミティブを含む他のリーフ・ノードを横切るか否か判定するために空間インデックスを再横断することができる。あるいは、ベクトル・スループット・エンジン２１０は、レイ５４０が通過したピクセル５３５に３次元シーン５０５の背景色を割り当てることができる。
【００７６】
しかし、該リーフ・ノード内のオブジェクト５４５（すなわち、オブジェクト５４５の一部分を表すプリミティブ）をレイ５４０が横切ったとベクトル・スループット・エンジン２１０がステップ６２５において判定したならば、画像処理システムはステップ６３５に進むことができる。ステップ６３５において、ベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０がオブジェクト５４５を横切ったポイント（例えば、ポイントＡ）におけるオブジェクト５４５の色を決定することができる。この交差ポイントにおけるオブジェクト５４５の色は、オリジナル・レイ５４０が通過したピクセル５３５の色として使用されるかあるいはピクセル５３５の色に割り当てられることができる。しかし、追跡されているレイ５４０に関連付けられた色寄与のスケーリング因子は、オブジェクト５４５がピクセルに与える色の量を変更し得る。追跡されているレイが画像処理システムにより発せられたオリジナル・レイ５４０であるならば、色寄与のスケーリング因子は、例えば、１００％であり得る。この１００％は、ピクセル５３５に対して、横切られたオブジェクト５４５からピクセル５３５に与えられる色の量をスケーリング（すなわち、低減）することなく、それが横切ったオブジェクト５４５の色が割り当てられるべきことを示すことができる。
【００７７】
横切られたオブジェクトが、オリジナル・レイが通過したピクセルに与え得る色の量を決定するために、色寄与のスケーリング因子が使用され得る。２次レイにより横切られたオブジェクトからの色寄与が反射または屈折を通してのものであるので、オブジェクトが与える色の量は、スケーリングされ得る。２次レイにより横切られたオブジェクトは、オリジナル・レイにより横切られたオブジェクトと同じ強度の量でオリジナル・ピクセルに自分の色を与えるのではなくて、オリジナル・レイにより横切られたオブジェクトへの反射または屈折を通してより少ない程度に色を与える。従って、２次レイがそれから放出されたところのオブジェクトの物理的特性（例えば、反射性、屈折性）に基づくスケーリング因子が２次レイに関連付けられ得る。
【００７８】
レイ５４０が通過したピクセル５３５の色が横切られたオブジェクト５４５の色と対応するスケーリング因子とに基づいて更新された後、ステップ６４０において画像処理システムは（ベクトル・スループット・エンジン２１０の使用を通して）、レイ５４０がオブジェクト５４５を横切ったポイントから２次レイを放出しあるいは発することができる。例えば、２次レイ５４０１は、オリジナル・レイ５４０がオブジェクト１  ５４５を横切ったポイントＡから発せられ得る。２次レイ（例えば、５４０１）は、図３に関して上で記載されたように交差の角度により決まる軌跡を伴って放出されあるいは発せられ得る。２次レイは、オリジナル・レイ５４０が通過したピクセル５３５に付加的な色を与えることができる。２次レイは、横切られたオブジェクト（例えば、オブジェクト１  ５４５）に対して、もしその横切られたオブジェクトが色を反射するか（例えば、メタリック仕上げまたはミラー仕上げ）あるいは少なくとも部分的に透明で（例えば、ガラス片または水）色が伝播することを可能にするならば、付加的な色を与えることができる。２次レイ（例えば、５４０２または５４０３）からの更なる色寄与がフレーム５１０内の正しいピクセル５３５に割り当てられ得るように、各２次レイ５４０１を定義する情報は、オリジナル・レイが通過したピクセル５３５を定義する情報をも含むことができる。
【００７９】
ベクトル・スループット・エンジン２１０が２次レイを放出するとき、各２次レイに色寄与のスケーリング因子が割り当てられ得る。２次レイ（例えば５４０１）についての色寄与のスケーリング因子は、その２次レイ５４０１がそこから放出されたところのオブジェクト（例えば、オブジェクト１  ５４５）の特性に基づいて決定され得る。さらに、本発明の実施態様に従って、色寄与のスケーリング因子は、例えば、オブジェクトの表面特性、レイと横切られたオブジェクトとの間の交差の入射角、および、オリジナル・レイが通過したピクセルに対して２次レイが持つことのできる色寄与を変更し得る３次元シーンの環境特性のうちの少なくとも１つなどの、任意の数の特性に基づいて決定され得る。
【００８０】
例えば、もしオブジェクトがメタリック仕上げをして高度に反射性を有するのであれば、ベクトル・スループット・エンジン２１０により放出される反射された２次レイに関連付けられた色寄与のスケーリング因子は大であり得る（例えば、８５％すなわち０．８５）。大きな色寄与の反射性スケーリング因子は、他の横切られたオブジェクトがかなりの量の色を、その２次レイがそこから放出されたところのオブジェクトに、従ってオリジナル・レイが通過したピクセルに、与え得るということを示すことができる。対照的に、もし横切られたオブジェクトがマット仕上げを有するならば、そのオブジェクトについての色寄与の反射性スケーリング因子は小であり得る（例えば、３５％すなわち０．３５）。小さな色寄与の反射性スケーリング因子は、２次レイにより横切られた他のオブジェクトが、オリジナル・レイが通過したピクセルにかなりの量の色を与え得ない（すなわち、該オブジェクトへ反射し得ない）ということを示すことができる。説明の複雑さを低減するために、図５は反射性２次レイ（５４０１−３）を示しているに過ぎない。
【００８１】
さらに、色寄与の屈折性スケーリング因子が、屈折させられた２次レイに関連付けられ得る。色寄与の反射性スケーリング因子と同様に、色寄与の屈折性スケーリング因子も、前のレイ（例えば、オリジナル・レイ５４０）により横切られたオブジェクトの特性に基づいて決定され得る。例えば、横切られたオブジェクトが透明ならば、そのオブジェクトについての色寄与の屈折性スケーリング因子は大であり得る（例えば、９５％すなわち０．９５）。大きな色寄与の屈折性スケーリング因子は、２次屈折レイにより横切られたオブジェクトが、該オブジェクトの、前のレイ（例えば、オリジナル・レイ５４０）が横切ったポイントに、従ってオリジナル・レイが通過したピクセルに、かなりの量の色を与え得るということを示すことができる。対照的に、もしオブジェクトが部分的に不透明であるならば、そのオブジェクトについての色寄与の屈折性スケーリング因子は小であり（例えば、２５％すなわち０．２５）、屈折２次レイにより横切られたオブジェクトが該オブジェクトの、前のレイ（例えば、オリジナル・レイ５４０）が横切ったポイントにかなりの量の色を与え得ないということを示す。
【００８２】
色寄与のスケーリング因子が１つまたは複数の２次レイに関連付けられた後、画像処理システムはステップ６４５に進むことができ、ここでベクトル・スループット・エンジン６４５は、放出された２次レイを１つまたは複数のワークロード・マネージャに送りあるいは渡すことができる。例えば、ベクトル・スループット・エンジン２１０は、２次レイを定義する情報（例えば、軌跡、色寄与のスケーリング因子、オリジナル・レイが通過したピクセルを定義する情報）を、複数の受信箱１１５または高速バス２２５あるいはその両方を介してワークロード・マネージャ２０５に渡すことができる。さらに、複数の２次レイが放出された場合（例えば、反射された２次レイおよび屈折させられた２次レイ）、それらの２次レイは別々のワークロード・マネージャに送られ得る。例えば、反射された２次レイは第１ワークロード・マネージャ２０５１に送られることができ、屈折させられた２次レイは第２ワークロード・マネージャ２０５３に送られることができる。
【００８３】
ステップ６４５で２次レイ情報がワークロード・マネージャ２０５または複数のワークロード・マネージャ２０５１−ｎに送られた後、画像処理システムはステップ６１０に進むことができ、ここでワークロード・マネージャ２０５または複数のワークロード・マネージャ２０５１−ｎは、３次元シーン５０５を表す１つまたは複数の空間インデックスを通して１つまたは複数の２次レイを追跡することができる。画像処理システムは、ステップ６１０から方法６００の残りのステップを通って、２次レイが３次元シーン５０５内のまだ他にもあるオブジェクトに当たるかを判定し、もし当たるならば新しい色寄与のスケーリング因子を伴う新しい２次レイを放出し、従って、横切られたオブジェクトの、オリジナル・レイ５４０が通過したピクセル５３５に対する色寄与を判定することができる。
【００８４】
オリジナル・レイとは対照的に、もし２次レイ５４０１が３次元シーン５０５内のオブジェクトを横切るならば、ベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０が通過したピクセル５３５に対して２次レイ５４０１により横切られたオブジェクト５５０がどれだけの量の色を与えることができるかを判定するために、２次レイ５４０１に関連付けられている色寄与のスケーリング因子を使用することができる。これは、例えば、前に横切られたオブジェクト５４５に関連付けられているスケーリング因子と、現在横切られているオブジェクト５５０の色とを掛け合わせることによって達成され得る。この新しいスケーリングされた色寄与値は、オリジナル・レイ５４０が通過したピクセル５３５の色を更新する責任を有するワークロード・マネージャ２０５に送り戻され得る。ワークロード・マネージャ２０５は、そのスケーリングされた色寄与（２次レイがオブジェクトを横切ったときに決定された）をフレーム・バッファに既に格納されているピクセルの色値（例えば、オリジナル・レイがオブジェクトを横切ったときに決定された色）にマージ（合併）しあるいは付加することができる。
【００８５】
２次レイにより横切られたオブジェクトからの色寄与をマージ合併し付加することによって、画像処理システムは、更なる色寄与が判定されてゆくに連れて、２次レイにより横切られたオブジェクトからのピクセルに対する色寄与を累積してゆくことができる。さらに、色寄与のスケーリング因子をオブジェクトに、従って該オブジェクトから放出された２次レイに関連付けることにより、２次レイ／オブジェクト交差に起因する色寄与は、オリジナル・レイ／オブジェクト交差からの色寄与より後に計算され得る。従って、ベクトル・スループット・エンジン２１０および（結果として）ワークロード・マネージャ２０５は、ピクセルの色を更新する前に全ての２次レイ／オブジェクト交差が判定されるのを待たなくても良い。
【００８６】
本発明の一実施態様に従って、特定のワークロード・マネージャ２０５は、オリジナル・レイ５４０が通過したピクセル５３５の色更新を維持することを担当でき得る。さらに、３次元シーン５０５からレンダリングされる最終の２次元画像５１０を構成し得る全てのピクセルについての色情報は、フレーム・バッファに格納され得る。フレーム・バッファは、モニタ５１０のピクセル・レイアウトに対応する２次元メモリ空間であり得る。フレーム・バッファは、ワークロード・マネージャ２０５のキャッシュに、あるいはマルチ・コア処理エレメント１００の共有されるキャッシュ１１０に格納され得る。ワークロード・マネージャ２０５は、オリジナル・レイ５４０が通過したピクセル５３５に対応するフレーム・バッファ内の記憶場所に色情報を書き込むことによってフレーム・バッファにおける該ピクセルの色を更新することができる。
【００８７】
ベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０が通過したピクセル５３５を定義する情報と共に色情報を担当するワークロード・マネージャ２０５に送ることによって、レイ５４０が通過したピクセル５３５の色の変化をワークロード・マネージャ２０５に知らせることができる。該ピクセルについて担当するワークロード・マネージャ２０５は、レイ５４０を定義した情報とともにベクトル・スループット・エンジン２１０に送られたピクセル５３５情報により決定され得る。ワークロード・マネージャ２０５は、ピクセル５３５に関連付けられたベクトル・スループット・エンジン２１０からピクセル５３５を定義する情報と色更新とを受け取ると、該ピクセルの色を更新することができる。１つのピクセルの色について担当する単一のワークロード・マネージャを持つことにより、オリジナル・レイとオブジェクトとの交差から、あるいは２次レイとオブジェクトとの交差から決定される色は、オブジェクトと２次レイとに関連する更なる決定を待つことを必要とせずに、累積され得る。
【００８８】
代表的なピクセル色累積
図７は、本発明の一実施態様に従って画像処理システムによってレンダリングされるべき代表的３次元シーン５０５を示す。図７は、図５に示されている３次元シーン５０５に類似している。しかし、図７は、３次元シーン５０５内の各オブジェクトに関連付けられたスケーリング因子を示している。さらに、図７は、レイが３次元シーン５０５の中へ横断してゆくにつれてオリジナル・レイ５４５が通過したピクセル５３５の色を更新することを示している。
【００８９】
図７に示されているように、オリジナル・レイ５４０が３次元シーン５０５の中へ発せられ得る。画像処理システムは、ワークロード・マネージャ２０５の使用を通じて空間インデックス（例えば、ｋｄ−ツリー）を通してレイ５４０を追跡して、青いオブジェクト５４５の全体または青いオブジェクト５４５の一部分を囲むリーフ・ノードにより定義される境界ボリュームをレイ５４０が横切ることを判定することができる。この判定に応じて、ワークロード・マネージャ２０５はレイ５４０と、横切られたリーフ・ノードとを定義する情報をベクトル・スループット・エンジン２１０に送ることができ、そこでレイ−プリミティブ交差試験が実行され得る。レイ−プリミティブ交差試験の結果として、ベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０が青いオブジェクト５４５のポイントＡを横切ると判定することができる。さらに、ベクトル・スループット・エンジン２１０は、青いオブジェクト５４５がオリジナル・レイと該オブジェクトとの交差のポイントにおいて（すなわち、ポイントＡにおいて）実際に青いことを判定することができる。従ってベクトル・スループット・エンジン２１０はそのピクセル色情報をピクセル５３５について担当するワークロード・マネージャ２０５に送ることができる。その担当するワークロード・マネージャ２０５は、その後、そのピクセルに対応するフレーム・バッファ内の記憶場所を青色で更新することができる。
【００９０】
理解を容易にするために、３次元シーン５０５内の３つのオブジェクト（すなわち、青いオブジェクト５４５、赤いオブジェクト５５０、および緑のオブジェクト５６０）の各々は反射特性を有するけれども屈折特性を有しない。従って、レイと各オブジェクトとの交差に応答して、画像処理システムは屈折性２次レイを発せずに反射性２次レイだけを発することができる。しかし、本発明の実施態様が屈折性２次レイにも応用され得ることは当業者にとっては明らかであるはずである。
【００９１】
従って、図７に示されているように、画像処理システムあるいはベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０と青いオブジェクト５４５との交差のポイント（すなわち、ポイントＡ）から反射された２次レイ５４０１を発することができる。ベクトル・スループット・エンジン２１０は、反射された２次レイ５４０１を定義する情報に色寄与のスケーリング因子を関連付けることもできる。その色寄与のスケーリング因子は、前のレイにより横切られたオブジェクト（すなわち、青いオブジェクト５４５）の特性に基づくことができる。従って、ベクトル・スループット・エンジン２１０は、青いオブジェクト５４５についての反射性の色寄与のスケーリング因子（すなわち、０．５０）を反射された２次レイ５４０１に関連付けることができる。
【００９２】
画像処理システムは、その後、３次元シーン５０５を表す空間インデックスを通して２次レイ５４０１を通過（横断）させるためにワークロード・マネージャ２０５を使用することができる。ワークロード・マネージャは、赤いオブジェクト５５０を囲むリーフ・ノードまで２次レイ５４０１を通過させることができる。ワークロード・マネージャ、その後、２次レイ５４０１を定義する情報（例えば、軌跡、色寄与のスケーリング因子、ピクセル５３５識別情報）と該リーフ・ノードを定義する情報とをベクトル・スループット・エンジン２１０に送ることができる。
【００９３】
ベクトル・スループット・エンジン２１０は、その後、レイ−プリミティブ交差試験を行い、該リーフ・ノードに対応する境界ボリュームの中のプリミティブ／オブジェクトを２次レイが横切ったか否かを判定することができる。図７に示されているように、ベクトル・スループット・エンジンは、反射された２次レイ５４０１が赤いオブジェクト５５０のポイントＢを横切ると判定することができる。２次レイ５４０１が赤いオブジェクト５５０を横切ると判定した後、ベクトル・スループット・エンジン２１０は、オリジナル・レイ５４０が通過したピクセル５３５に赤いオブジェクト５５０が加える色寄与を判定することができる。
【００９４】
図示されているように、ベクトル・スループット・エンジン２１０は、本発明の一実施態様に従って、青いオブジェクトと２次レイ５４０１とに関連付けられた色寄与のスケーリング因子を赤いオブジェクト５５０の色に適用することによってピクセル５３５への色寄与を計算することができる。例えば、赤いオブジェクト５５０からのスケーリングされた色寄与（０．５＊赤）を決定するために、赤いオブジェクトの色（すなわち、赤）に、２次レイ５４０１に関連付けられているスケーリング因子（すなわち、０．５０）を乗じることができる。そのスケーリングされた色寄与が計算された後、ベクトル・スループット・エンジン２１０は、そのスケーリングされた色寄与を、オリジナル・レイ５４０が通過したピクセル５３５に対応するフレーム・バッファ内の記憶場所を更新する担当のワークロード・マネージャ２０５に、送ることができる。
【００９５】
図７に示されているように、ワークロード・マネージャ２０５は、付加的なスケーリングされた色寄与（０．５＊赤）を、フレーム・バッファ内の該ピクセルに既に割り当てられている色（青）に加えることができる。これは、青いオブジェクトが、赤いオブジェクトの色のスケーリングされた部分を反射するという事実を適切に反映するであろう。従って、実生活の場合と同様に、観察者５１５の位置にいる人は、青いオブジェクト５４５からの青い色と、青いオブジェクト５４５により反射された赤い色との組み合わせを見るであろう。
【００９６】
ベクトル・スループット・エンジン２１０がスケーリングされた色寄与をワークロード・マネージャ２０５に送った後、ベクトル・スループット・エンジン２１０は、反射された２次レイ５４０２を交差ポイントＢから発することができる。反射された２次レイ５４０２を定義する情報の中にはスケーリング因子があり得る。２次レイ５４０２についてのスケーリング因子は、青いオブジェクトについての寄与のスケーリング因子と赤いオブジェクトのスケーリング因子との積であり得る。すなわち、２次レイとオブジェクトとの交差から２次レイが生成されるときには、本発明の一実施態様に従って、その新しい２次レイについての色寄与のスケーリング因子は、前に横切られた全てのオブジェクトに関連付けられている色寄与のスケーリング因子の積であり得る。
【００９７】
従って、２次レイ５４０２についての色寄与のスケーリング因子は、青いオブジェクト５４５についての色寄与のスケーリング因子と赤いオブジェクト５５０についての色寄与のスケーリング因子との積（すなわち、０．５０＊０．７５）であり得る。新しいオブジェクトが２次レイにより横切られるたびに色寄与のスケーリング因子を乗じるので、２次レイにより横切られたオブジェクトからの、オリジナル・レイ５４０が通過したピクセル５３５への色寄与の量は、より多くのオブジェクトが横切られてゆくにつれて減少してゆく。
【００９８】
さらに、ベクトル・スループット・エンジン２１０は、反射された２次レイ５４０が緑のオブジェクト５６０のポイントＣを横切ると判定することができる。ベクトル・スループット・エンジン２１０は、その後、緑のオブジェクトの色と、オリジナル・レイ５４０が通過したピクセル５３５に対して緑のオブジェクト５６０が与える色の量とを判定することができる。
【００９９】
ベクトル・スループット・エンジン２１０は、色寄与のスケーリング因子と、横切られた緑のオブジェクト５６０の色とを乗じることにより（例えば、０．５０＊０．７５＊緑）、ピクセル５３５に与えられるレイ５４０２についてのスケーリングされた色を判定することができる。ベクトル・スループット・エンジン２１０は、その後、スケーリングされた色寄与を、ピクセル５３５の色を更新する担当のワークロード・マネージャ２０５に送ることができる。図７に示されているように、ワークロード・マネージャ２０５は、緑のオブジェクト５６０からのスケーリングされた色寄与をフレーム・バッファに既に存在する色に加える（すなわち、青＋０．５０＊赤＋０．５０＊０．７５＊緑）ことによって該ピクセルの色を更新することができる。
【０１００】
さらに、図示されているように画像処理システムは交差ポイントＣから他の反射された２次レイ５４０３を放出することができる。ワークロード・マネージャ２０５は２次レイ５４０３がポイントＤを含むリーフ・ノードを横切ると判定することができ、ベクトル・スループット・エンジン２１０は２次レイ５４０３が該リーフ・ノードに含まれるどのプリミティブをも横切らないと判定することができる。ベクトル・スループット・エンジン２１０は、２次レイ５４０３がどのオブジェクトも横切らずに３次元シーン５０５から出ると判定し、従ってピクセル５３５に与えられる色を判定するために背景色が使用されるべきであると判定することができる。
【０１０１】
従って、ベクトル・スループット・エンジン２１０は、前に横切られたオブジェクトにより決定されるスケーリング因子と背景色とを乗じることにより（例えば、０．５０＊０．７５＊０．２５＊背景色）、背景色からのスケーリングされた色寄与を決定することができる。ベクトル・スループット・エンジン２１０は、その後、そのスケーリングされた色寄与を、フレーム・バッファ内のピクセル５３５の色を更新する担当のワークロード・マネージャ２０５に送ることができる。従って、ワークロード・マネージャ２０５は、その後、背景からの色寄与をフレーム・バッファ内のピクセルの色に加えることによって（すなわち、青＋０．５０＊赤＋０．５０＊０．７５＊緑＋０．５０＊０．７５＊０．２５＊背景色）、フレーム・バッファ内のピクセル５３５の色を更新することができる。
【０１０２】
２次レイにより横切られたオブジェクトからの色寄与をマージあるいは付加することによって、画像処理システムは、更なる色寄与が判定されるにつれて、２次レイにより横切られたオブジェクトからのピクセルへの色寄与を累積することができる。さらに、色寄与のスケーリング因子をオブジェクトと、該オブジェクトを横切る２次レイとに関連付けることにより、２次レイ／オブジェクト交差に起因する色寄与は、オリジナル・レイ／オブジェクト交差からのピクセルへの色寄与より後に計算され得る。従って、ベクトル・スループット・エンジンあるいはワークロード・マネージャは、ピクセルの色を更新する前に全ての２次レイ／オブジェクト交差が判定されるのを待たなくても良い。
【０１０３】
叙上は本発明の実施態様に向けられているけれども、本発明の他の更なる実施態様が、その基本範囲から逸脱すること無く考案されることができ、その範囲は次の請求項により決定される。
【図面の簡単な説明】
【０１０４】
【図１】本発明の一実施態様に従うマルチ・コア処理エレメントを示す。
【図２】本発明の実施態様に従うマルチ・コア処理エレメント・ネットワークを示す。
【図３】本発明の一実施態様に従う、画像処理システムによってレンダリングされるべき代表的３次元シーンである。
【図４】本発明の一実施態様に従う、画像処理システムによってレンダリングされるべき２次元空間と画像処理システムにより作成される対応する空間インデックスとを示す。
【図５】本発明の一実施態様に従う、画像処理システムによりレンダリングされるべき代表的３次元シーンを示す。
【図６】本発明の一実施態様に従う、ピクセルの色を更新する方法を示すフローチャートである。
【図７】本発明の一実施態様に従う、画像処理システムによりレンダリングされるべき代表的３次元シーンを示す。
【図１】
2010505164.tif 000003
【図２】
2010505164.tif 000004
【図３】
2010505164.tif 000005
【図４】
2010505164.tif 000006
【図５】
2010505164.tif 000007
【図６】
2010505164.tif 000008
【図７】
2010505164.tif 000009
【国際調査報告】
2010505164.tif 000010
2010505164.tif 000011
2010505164.tif 000012