(57)【特許請求の範囲】
【請求項１】
重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度（１−αn）と、光源色データINTnが与えられ、
前記画像処理装置は、
重なり合うピクセルの前記透明度（１−αn）の乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、
ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、
ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、
前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し、当該修正したピクセル色データを累積するカラー合成処理を行うカラー合成ユニットとを有し、
前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置。
【請求項２】
請求項１において、
更に、フレーム内の複数のポリゴンデータまたはそのピクセルデータを、前記表示画面内の手前側から深さ方向に順番に並び替えるソーターユニットを有し、当該ソーターユニットが、光源計算ユニット及びテクスチャ処理ユニットに、前記ピクセルデータを供給し、前記ブレンド処理ユニットに前記ピクセルデータを手前側から深さ方向の順に供給することを特徴とする画像処理装置。
【請求項３】
請求項１において、
前記カラー合成処理は、処理中のピクセルのピクセル色データTXCOn、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Ｘn-1との乗算値を求め、それらを累積する処理であることを特徴とする画像処理装置。
【請求項４】
請求項３において、
前記カラー合成処理により求められた累積値が、前記表示用画像データとして使用されることを特徴とする画像処理装置。
【請求項５】
請求項１において、
更に、深さ方向のピクセルの前記乗算値Ｘn、ピクセル色データTXCOn、光源色データINTn、不透明度αnのデータを記録するピクセルワークメモリユニットを有し、前記カラー合成ユニットは、該ピクセルワークメモリユニットに上記データが全て記録されたピクセルについて、前記カラー合成処理を行うことを特徴とする画像処理装置。
【請求項６】
請求項２において、
前記ブレンド処理ユニットは、更に、前記ソーターユニットから供給されるポリゴンの不透明度または透明度と、テクスチャの不透明度または透明度から、ピクセルの不透明度αnまたは透明度（１−αn）を生成することを特徴とする画像処理装置。
【請求項７】
請求項１において、
前記テクスチャ処理ユニットは、更に、ポリゴン色データPCOLnと前記テクスチャ座標に対応するテクスチャの色データＴとに従って、前記ピクセル色データTXCOnを求める複数のテクスチャ処理回路を有し、空き状態にあるテクスチャ処理回路が順次前記ピクセル色データを生成することを特徴とする画像処理装置。
【請求項８】
請求項１において、
前記光源計算ユニットは、光源色データINTnを求める複数の光源計算回路を有し、空き状態にある光源処理回路が順次前記光源色データを生成することを特徴とする画像処理装置。
【請求項９】
重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、
前記画像処理装置は、
重なり合うピクセルの前記ソース混合係数SRnの乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、
ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、
ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、
前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し、当該修正したピクセル色データを累積するカラー合成処理を行うカラー合成ユニットとを有し、
前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置。
【請求項１０】
請求項９において、
前記カラー合成処理は、処理中のピクセルのピクセル色データTXCOn、光源色データINTn、ディスティネーション混合係数DEn、及び、一つ手前側のピクセルの前記乗算値Ｘn-1との乗算値を求め、それらを累積する処理であり、当該累積値が前記表示用画像データとして使用されることを特徴とする画像処理装置。
【請求項１１】
重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理方法において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度（１−αn）と、光源色データINTnとが与えられ、
前記画像処理方法は、
コンピュータが、重なり合うピクセルの前記透明度（１−αn）の乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理工程と、
コンピュータが、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算処理工程と、
コンピュータが、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理工程と、
コンピュータが、前記深さ方向の各ピクセルに対して、順不同で、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し、当該修正したピクセル色データを累積するカラー合成処理を行うカラー合成工程とを有し、
前記光源計算処理工程及びテクスチャ処理工程の少なくとも一方で、対応するデータ生成処理を並列に行うことを特徴とする画像処理方法。
【請求項１２】
重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理方法において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、
前記画像処理方法は、
コンピュータが、重なり合うピクセルの前記ソース混合係数SRnの乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理工程と、
コンピュータが、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算工程と、
コンピュータが、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向のピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理工程と、
コンピュータが、前記深さ方向の各ピクセルに対して、順不同で、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し、当該修正したピクセル色データを累積するカラー合成処理を行うカラー合成工程とを有し、
前記光源計算工程及びテクスチャ処理工程の少なくとも一方で、対応するデータ生成処理を並列に行うことを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半透明ポリゴンを含む複数のポリゴンに対する画像処理装置及びその方法にかかり、特に、半透明ポリゴンに必要な透明度を利用したブレンディング処理や重なり合う複数のポリゴンに対する一般的なブレンディング処理を、より効率的に且つ短時間で処理することができる画像処理装置及びその方法に関する。
【０００２】
【従来の技術】
ゲーム装置やシミュレーション装置において、操作入力に応じてキャラクタ等を構成する複数のポリゴンの位置を求め、それらのポリゴンのうち表示されるポリゴンに対してレンダリング処理を行って画像データを生成し、それらを表示することが行われる。
【０００３】
半透明ポリゴンに対するレンダリング処理は、不透明ポリゴンと異なり、その後方（奥側）に位置する他のポリゴンとのブレンディング処理を伴うので、表示画面内の奥側の半透明ポリゴンから順にブレンディング処理を含むレンダリング処理を行うことが必要である。
【０００４】
一方、不透明のポリゴンに対するレンダリング処理は、表示画面内の奥行きを示すＺ値を利用した陰面消去処理を行うことで、複数のポリゴンのレンダリングの順番に制約を課すことなく、重なり合う部分の処理が行われる。また、不透明ポリゴンと半透明ポリゴンとが混在する場合は、上記のＺ値を利用した陰面消去処理によって不透明ポリゴンを任意の順番で処理し、その後、半透明ポリゴンを奥側から順に処理する方法が一般的である。
【０００５】
【発明が解決しようとする課題】
ところが、レンダリング処理において、処理すべきポリゴン数が多くなると、決められたフレーム間の時間内でレンダリング処理が完了しない場合がある。その場合、画像処理の質を重視すると全ての半透明ポリゴンのレンダリング処理が終了するまで待たなければならず、表示中のキャラクタの動きが停止することになり、ゲーム装置あるいはシュミレーション装置において不都合である。また、キャラクタの動きを重視するとフレーム間の時間内で処理されないポリゴンが存在することになる。その場合、半透明ポリゴンのレンダリング処理が、より奥側のポリゴンから処理されるので、画像内で最も重要なキャラクタの一つである手前側のポリゴンの処理が切り捨てられることになる。
【０００６】
更に、不透明ポリゴンと半透明ポリゴンのレンダリング処理は、上記した通り、それぞれの効率を重視すると、それらのポリゴンを分けて別々に処理する必要があり、画像処理の負担を増大させる。かかる負担の増大は、上記と同様にフレーム間の時間内での画像処理の完了を困難にさせる。
【０００７】
更に、半透明ポリゴンに対する不透明度を利用したブレンディング処理に限定されず、一般的なブレンディング処理においても、表示画面のより奥側のポリゴンの色データを先に求め、その色データと次に処理するポリゴンの色データとに対して、所定のソース混合計数とディスティネーション混合計数とによりブレンディング処理することが提案されている。この場合も、表示画面の奥側のポリゴンから順番に処理することが要求され、半透明ポリゴンの場合と同様の課題を有する。
【０００８】
そこで、本出願人は、上記課題を解決する発明を提案した。例えば、特願平11-225426号、1999年８月９日出願の「ブレンディング処理を含む画像処理装置及びその方法」である。本件は、本願出願時点では未公開であり、従って公知ではない。この発明では、半透明ポリゴンのレンダリング処理を、表示画面内の手前側、つまり視点側のポリゴンから深さ方向に順に行うことを特徴とする。そのために、表示画面内の手前側から順に並べた時のｎ番目のポリゴンに、色データＴn と不透明度αn とが与えられる場合、ワークデータＸn として、
Ｘn ＝（１−αn ）・Ｘn-1 
を求め、更に画像データＤn として、
Ｄn ＝Ｄn-1 ＋Ｔn ・αn ・Ｘn-1 
を求め、ワークデータＸn 及び画像データＤn を求める上記の演算処理を全てのポリゴンに対して行う。そして、最後の画像データＤn を、表示用の画像データとして利用する。
【０００９】
本発明は、上記の画像処理アルゴリズムを利用して、より高速にレンダリング処理を行うことができる新規な画像処理装置及び画像処理方法を提供するものである。
【００１０】
本発明の目的は、半透明ポリゴンの画像処理において、フレーム間の時間内により手前側のポリゴンのレンダリング処理を確実に行うことができる画像処理装置、その方法を提供することにある。
【００１１】
更に、本発明の目的は、不透明ポリゴンと半透明ポリゴンが混在したポリゴンの画像処理において、両ポリゴンを区別することなくレンダリング処理することができ、更に処理効率を高めた画像処理装置、その方法を提供することにある。
【００１２】
更に、本発明の目的は、一般的なブレンディング処理において、処理効率を高めた画像処理装置、その画像処理方法を提供することにある。
【００１３】
【課題を解決するための手段】
本発明の第１の側面は、半透明ポリゴンのレンダリング処理を、表示画面内の手前側のポリゴンから順にワークデータＸnを求めると共に、光源からの色データINTnを求める光源計算処理や、テクスチャカラーなどを利用して色データTXCOnを求めるテクスチャ処理を、複数のポリゴンに対して並列に行う。そして、上記のワークデータＸn、光源色データINTn、色データTXCOn及び不透明度αnとから、画像データＦＢnを求めて累積するカラー合成処理を、複数のポリゴンに対して順不同で行うことを特徴とする。
【００１４】
そのために、表示画面内の手前側から順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と不透明度αn と光源色データINTnが与えられる場合、ワークデータＸn として、
Ｘn ＝（１−αn ）・Ｘn-1 
を全てのポリゴンに対して表示画面内の手前側から順番に求める。更に、画像データＦＢn として、乗算値INTn・TXCOn ・αn ・Ｘn-1を全てのポリゴンに対して求め、累積する。即ち、
ＦＢ ＝Σ（INTn・TXCOn ・αn ・Ｘn-1 ）
の演算を行う、これは、重なり合うポリゴンの各画像データＦＢnを加算する演算であるので、各画像データＦＢnは、深さ方向の複数のポリゴンに対して順不同で求めることができる。そして、全て累積した画像データＦＢを、表示用の画像データとして利用する。
【００１５】
上記において、ワークデータＸn の初期値Ｘ0 は、例えば１が好ましい。また、画像データＦＢn の初期値ＦＢ0 は、例えば０が好ましい。
【００１６】
上記の画像処理では、画像データＦＢは、ピクセル色データTXCOnと、不透明度αnと、光源色データINTn及びワークデータＸnの積算した値INTn・TXCOn ・αn ・Ｘn-1を加算（累積）した値（ｎ＝０〜ｊ、ｊは重なったポリゴンの枚数）である。そして、各ポリゴンに対する積算値INTn・TXCOn ・αn ・Ｘn-1を求める演算は、他のポリゴンに影響を受けないので、上記した通り、順不同で行うことができる。そして、光源からポリゴンに与えられる影響を示す光源色データINTnの演算は、ポリゴンの種類に応じて簡単な場合と複雑な場合とが混在する。また、テクスチャカラー等を利用してピクセル色データTXCOnを求める演算処理も、ポリゴンに応じて簡単な場合と複雑な場合とが混在する。一方、透明度の累積乗算値であるワークデータＸn ＝（１−αn ）・Ｘn-1 は、他のポリゴンのワークデータＸn-1 の影響を受けるので、スクリーンの手前から深さ方向に順番に行う必要がある。但し、この演算処理自体は、単純であり、処理工数は少ない。
【００１７】
そこで、本発明では、演算処理工数が比較的高い光源計算処理やテクスチャ処理を、複数のポリゴンに対して並列に行い、これらの処理が終了したポリゴンから順に、積算値INTn・TXCOn ・αn ・Ｘn-1を求める処理とそれらを累積加算する処理とからなるカラー合成処理を行う。その結果、従来非常に演算負荷が重かった光源計算処理やテクスチャ処理を短時間で効率的に行うことができる。
【００１８】
上記のワークデータＸn は、手前側（視点側）のｎ枚の半透明ポリゴンの透明度（１−α）が乗算された値を意味する。従って、重なり合う複数のポリゴンに対して、手前側のポリゴンから順番にワークデータを求める処理をすることで、全てのポリゴンに対するワークデータＸnを順番に求めることができる。それぞれのポリゴンのレンダリング処理では、ピクセル色データTXCOn を、それより手前のｎ−１枚のポリゴンの透明度を乗算したワークデータ値Ｘn-1 と、透明度αnと、光源色データINTn応じて、演算処理して画像データＦＢnを求める。そして、それぞれのポリゴンに対して求められた画像データＦＢnが累積（加算）されて、表示用の画像データＦＢが求められる。
【００１９】
本発明の別の側面は、重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度（１−αn）と、光源色データINTnが与えられ、
前記画像処理装置は、
重なり合うピクセルの前記透明度（１−αn）の乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、
ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、
ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、
前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、
前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置である。または、その画像処理方法である。
【００２０】
更に、本発明の別の側面は、重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、
表示画面内の手前側から深さ方向に順に並べた時のｎ番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、
前記画像処理装置は、
重なり合うピクセルの前記ソース混合係数SRnの乗算値Ｘnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、
ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、
ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、
前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Ｘn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、
前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置である。また、その画像処理方法である。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲がその実施の形態に限定されるものではない。
【００２２】
最初に、先願の特願平11-225426号で提案した、ブレンディング処理方法について説明する。
【００２３】
図１は、半透明ポリゴンの重なり例を説明する図である。この例では、３枚の半透明ポリゴンＰ１，Ｐ２，Ｐ３と、１枚の不透明ポリゴンＰ４とが、表示画面内の奥行き方向（Ｚ値）について手前から順に重なっている。従って、領域Ｃ４の画像データＣ4 は、不透明ポリゴンＰ４のテクスチャデータから環境光等に応じて形成される色データＴ4 そのままである。
【００２４】
本明細書において、ポリゴンの色データＴは、例えばポリゴン自体の色データ、模様を含むテクスチャ色データ、更に、テクスチャ色データやポリゴン自体の色データにシェーディング処理した後の色データ等を含む。それらのいずれかの色データを代表して、ポリゴンの色データＴと称する。また、ブレンディング処理などにより求められた色データは、表示に利用される画像データＣである。従って、画像データＣも一種の色データである。
【００２５】
即ち、Ｃ4 ＝Ｔ4                             （１）
また、領域Ｃ３は、不透明ポリゴンＰ４上に半透明ポリゴンＰ３が重なっているので、その画像データは、半透明ポリゴンＰ３の不透明度α3 （α3 ＝１で不透明、α3 ＝０で透明、１＞α3 ＞０で半透明）及び色データＴ3 に従って、ポリゴンＰ４，Ｐ３の色データをブレンディングした色データとなる。即ち、従来の一般的なレンダリング方法によれば、領域Ｃ３の色データは、
Ｃ3 ＝α3 Ｔ3 ＋（１−α3 ）Ｃ4             （２）
で求められる。
【００２６】
同様に、領域Ｃ２の画像データＣ2 も、半透明ポリゴンＰ２の不透明度α2 及び色データＴ2と領域Ｃ３の色データＣ3 とから、
Ｃ2 ＝α2 Ｔ2 ＋（１−α2 ）Ｃ3             （３）
で求められ、更に、領域Ｃ１の画像データＣ1 も、
Ｃ1 ＝α1 Ｔ1 ＋（１−α1 ）Ｃ2             （４）
で求められる。
【００２７】
以上の通り、半透明ポリゴンに対するレンダリング処理は、画像データＣnを求めるために、他のポリゴンとの重なり合う領域において、より奥側の画像データＣn+1 を再帰的に参照してブレンディング処理を行う必要がある。従って、表示画面内の奥側から順にポリゴンのレンダリング処理を行うのが一般的である。
【００２８】
そこで、先願で提案した発明は、上記した従来の課題を解決するために、表示画面内の手前側から順にポリゴンのレンダリング処理を行うことを特徴とする。この発明によれば、上記の式（２）、（３）、（４）から、Ｃ1 について開くと、
0004411713.tif 000002
となり、更に、Ｔn についてまとめると、
0004411713.tif 000003
ここで、ポリゴンＰ４が不透明ポリゴンであり、不透明度データα4 ＝１とし、更に、任意のワークデータＸn として、
0004411713.tif 000004
と定義するとする。但し、Ｘ0 ＝１とする。
【００２９】
上記式（６）を式（５）に挿入すると、
0004411713.tif 000005
となり、各々のＴn αn Ｘn-1 に着目すれば、
ＦＢn ＝ＦＢn-1 ＋Ｔn αn Ｘn-1                               （７）
とすることができる。但し、ＦＢ0 ＝０である。その結果、ｎ＝４の場合は、
ＦＢ4 ＝Ｃ1 
が成立する。
【００３０】
即ち、従来のブレンディング処理と同じ処理を、上記の式（６）と（７）を利用することで、表示画面内の手前側から順にポリゴンのデータとして、色データＴn とその不透明度αn を与えて、全ての重なり合うポリゴンに対する演算処理を行うことにより、最終的に得られる画像データＦＢn は、図１の領域Ｃ１の画像データＣ1 と同じになる。従って、新たに定義したワークデータＸn を利用して、画像データＦＢn ＝ＦＢn-1 ＋Ｔn αn Ｘn-1 を求めることができる。これらの数式のインデックスから明らかな通り、これらの演算において、より奥側のポリゴンのデータを再帰的に呼び出す必要はなくなる。
【００３１】
図２は、上記の演算を利用する本発明のレンダリング処理を、図１の例に適用した時の演算式を示す図表である。図２（１）に、先願の発明の場合を、図２（２）に従来例の場合をそれぞれ示す。
【００３２】
図２の図表から明らかな通り、従来例のレンダリング処理によれば、半透明のポリゴンに対して、奥側のポリゴンＰ4 の色データＴ4 と不透明度α4 と初期値Ｃ5 を利用して、領域Ｃ４の画像データＣ4 が求められ、更に、一つ手前のポリゴンＰ3 の色データＴ3 と不透明度α3 と初期値Ｃ4 を利用して、領域Ｃ３の画像データＣ3 が求められる。更に、領域Ｃ２の画像データＣ2 及び領域Ｃ１の画像データＣ1 が順に求められる。
【００３３】
それに対して、先願の発明によれば、上記の式（６）、（７）を利用することで、最初に最も手前に位置するポリゴンＰ１の色データＴ1 と不透明度α1 と初期値Ｘ0 とＦＢ0 を利用して、途中の画像データＦＢ1 が求められ、更に、一つ奥側のポリゴンＰ2 の色データＴ2 と不透明度α2 と上記の途中の画像データＦＢ1 を利用して、次の途中の画像データＦＢ2 が求められる。更に、同様にして次の途中の画像データＦＢ3 、ＦＢ4 が求められる。そして、全てのポリゴンのデータに対する処理が終了した最終画像データＦＢ4 が、領域Ｃ１の画像データＣ1 として利用される。
【００３４】
従って、この先願発明によれば、半透明ポリゴンに対するレンダリング処理は、手前側のポリゴンに対するデータ（色データＴと不透明度データα）を利用して次々に演算処理することができる。更に、後述する具体例で明らかになるが、より奥側のポリゴンに対するレンダリング処理では、ワークデータＸn-1 が小さくなる傾向にあり、そのワークデータＸn-1 を利用して求められる途中の画像データＦＢn も変化が少なくなる傾向にある。従って、ある程度ワークデータＸn-1 が小さくなると、あるいは０になると、それ以降の奥側のポリゴンのデータに対するレンダリング処理を省略しても、表示される画像への影響は殆どないことが理解される。
【００３５】
更に、上記のレンダリング処理の演算において、不透明ポリゴンに対しては、単に不透明度αn を１（不透明）とすれば、上記の演算をそのまま適用して処理することができる。即ち、不透明度αn ＝１の場合は、ワークデータＸn ＝０となり、それより奥側のポリゴンのレンダリング処理の結果に変化はなくなり、実質的にそれらの奥側のポリゴンに対するレンダリングは不要になる。従って、この先願発明のレンダリング処理を利用することにより、半透明ポリゴンと不透明ポリゴンとを混在させても、より手前側のポリゴンから順に、半透明と不透明を区別なく処理することができる。
【００３６】
上記したワークデータＸn は、物理的には、ｎ枚のポリゴンを重ねた時の透明度（１−α）の累積乗算された値を意味する。即ち、上記の式（６）から明らかな通り、ワークデータＸn は、各ポリゴンの透明度（１−α）が全て乗算された値である。つまり、透明度の高いポリゴン、例えば（１−α）が１に近いポリゴンが重ねられる場合に、その奥側に位置するｎ枚目のポリゴンの色データＴn を追加する場合は、それより手前のｎ−１枚の重なったポリゴンの透明度（１−α）の累積乗算値に応じて、画像データＦＢn-1 に影響を与える。そして、望ましくは、ｎ枚目のポリゴンの不透明度αn に応じた色データＴn が、加えられる。ｎ枚目のポリゴン自身が透明なポリゴン（１−αn ＝１）の場合は、その色データＴn は加えられるべきではないからである。
【００３７】
以上の様に、上記の式（７）
ＦＢn ＝ＦＢn-1 ＋Ｔn αn Ｘn-1 
によるレンダリング処理は、第１に、処理しようとする奥側のポリゴンの色データＴn を、それより手前のｎ−１枚のポリゴンの透明度を累積した値Ｘn-1 に応じて、手前のｎ−１枚のポリゴンが重ねられた画像データＦＢn-1 に加える処理である。
【００３８】
第２に、上記の式（７）によるレンダリング処理は、処理中のポリゴンの透明度に応じて、その色データＴn を加えることを行う。即ち、処理中のポリゴンの不透明度αn に応じた色データＴn の成分を、それより手前のｎ−１枚のポリゴンの透明度の累積された値Ｘn-1 に応じて、ｎ−１枚重なったポリゴンの画像データＦＢn-1 に加えることを意味する。
【００３９】
そして、透明度の累積値Ｘn の初期値Ｘ0 ＝１の意味は、最初のポリゴンより手前には、別のポリゴンが存在しないので、透明度は最大であることを意味する。従って、最初のポリゴンの色データＴ1 は、そのまま画像データＦＢ1 として利用される。但し、最初のポリゴン自身の不透明度α1 に応じた色データＴ1 の成分が画像データＦＢ1 として利用される。尚、画像データＦＢn の初期値ＦＢ0 ＝０の意味は、色の輝度値が０であることを意味し、何ら色の成分がない真っ黒の状態を意味する。画像データの初期値ＦＢ0 は、必ずしも真っ黒である必要はない。
【００４０】
以上、先願で提案した画像処理方法を説明した。この画像処理は、次の演算式に従う。
【００４１】
ＦＢn ＝ＦＢn-1 ＋Ｔn αn Ｘn-1                                （７）
Ｘn ＝Ｘn-1 （１−αn ）                                     （６）
そこで、上記の（７）式を書き換えると、
ＦＢn ＝Σ（Ｔn αn Ｘn-1 ）                                  （８）
とすることができる。これは、表示画面内の深さ方向において、各ポリゴンの不透明度αnと、ポリゴン色データＴnと、ワークデータＸn-1との積を、それぞれ加算した累積値である。
【００４２】
ここで、ポリゴンの色データＴnは、ポリゴン自体の色やテクスチャカラーに環境光等の光源の色の影響を反映した色データである。この点をより詳細に説明すると、次の通りである。画像データは、ポリゴンの頂点データに対して与えられるポリゴンの自の色PCOL（以下ポリゴン色データPCOL）と、テクスチャ色データTXとから得られる色データTXCO（以下ピクセル色データTXCO）に、光源からの色データINTの影響を加えて求められる。
【００４３】
光源の色データについては、例えば、黄色い光源からのディフューズド光による影響は、所定の強度を持つ黄色の色データINTで表すことができる。或いは、周囲の赤い壁紙からのアンビエント光による影響は、所定の強度を持つ赤色の色データINTで表すことができる。そして、ポリゴンの銀色のメタル生地によるスペキュラー光による影響は、所定の強度を持つ銀色の色データINTで表すこともできる。従って、それらの光源からの色データとして、ここでは、光源色データINTと総称する。その結果、式（７）の色データＴnは、光源の影響も加えて、
Ｔn＝TXCOn・INTn
と置き換えることができる。即ち、
Ｘn ＝Ｘn-1・（１−αn ）                                    （６）
ＦＢn ＝ＦＢn-1 ＋INTn・TXCOn ・αn・ Ｘn-1                    （７）
ＦＢn ＝Σ（INTn・TXCOn ・αn・ Ｘn-1 ）                      （８）
上記の演算式から明らかな通り、画像データＦＢnは、各ポリゴンについて、１つ手前のポリゴンに対する透明度（１−αn）の積であるワークデータＸn-1と、当該ポリゴンの不透明度αnと、光源色データINTnと、ピクセル色データTXCOnとを求めて、逐次フレームバッファ内に格納される画像データＦＢに加算していくことで、求めることができる。しかも、各ポリゴンにおけるINTn・TXCOn ・αn・ Ｘn-1を求める演算は、ワークデータが求まっていれば、他の重なり合うポリゴンの演算結果には依存しない。従って、重なり合うポリゴンに対して、上記のポリゴン毎のINTn・TXCOn ・αn・ Ｘn-1を求める演算は、順不同で行うことができる。
【００４４】
ゲームやシュミレーションにおいて、リアルタイムに画像処理を行う場合、上記の光源色データINTnを求める演算処理は、場合によっては多くの光源に対する演算処理を行う必要があり、非常に工数が高い演算処理になる。同様に、ポリゴンの自の色であるポリゴン色データPCOLとテクスチャ色データTXとから得られるピクセル色データTXCOを求めるテクスチャ処理においても、テクスチャがないポリゴンや、複数のテクスチャデータを有するポリゴンや、更に、細分値ＬＯＤに対応して与えられる複数のテクスチャから、それらの中間の細分値に対応するテクスチャを求めるトライリニアフィルタ処理が必要なポリゴンなどが存在し、それらのポリゴンのテクスチャ処理は、非常に工数がかかる演算処理が必要な場合がある。
【００４５】
そこで、本発明の好ましい実施の形態例では、光源計算処理やテクスチャ処理を、複数のポリゴンに対して並列に処理を行うようにする。その為に、画像処理装置内に、光源計算回路やテクスチャ処理回路を複数個設ける。そして、複数のポリゴンの演算処理を、空いている処理回路に順次を分配することで処理効率を上げる。これにより、全体の画像処理時間を短くすることができる。
【００４６】
［画像処理装置］
図３は、本発明の実施の形態例におけるレンダリング処理プロセッサを有するゲーム装置の構成図である。レンダリング処理プロセッサ２０は、画像処理装置であり、ゲーム装置やシュミレーション装置内に設けられる。図３に示されたゲーム装置には、メインＣＰＵ１０と、ゲームプログラムが格納されたプログラムＲＯＭと、ゲームプログラム実行時などに利用されるワークＲＡＭ１４と、レンダリング処理プロセッサ２０とが、内部バス１６を介して接続される。
【００４７】
メインＣＰＵ１０は、図示しないオペレータからの操作入力に応答して、ゲームプログラムを実行し、必要な画像処理を行う。図３の例では、オブジェクトの移動のためのマトリクス演算や透視変換などのジオメトリ処理は、メインＣＰＵで行われているものとする。もちろん、このジオメトリ処理は、別途設けた専用の処理プロセッサによって行われても良い。
【００４８】
レンダリング処理プロセッサ２０は、メインＣＰＵ１０により発行されるレンダリング処理を指示する描画コマンドを格納する描画コマンドメモリ２２と、その描画コマンドを解釈するセットアップブロック２４とを有する。セットアップブロック２４は、表示画面内にあるポリゴンデータと、光源データとを、ソーターユニット２６に与える。
【００４９】
ポリゴンデータは、頂点データを有し、各頂点データは、例えば、表示画面内の二次元座標データ（ｘ、ｙ）、奥行き（深さ）を示すＺ値、色データPCOL、不透明度（または透明度）αp、法線ベクトルデータ（Nx,Ny,Nz）、テクスチャ座標（Tx,Ty）などを含む。
【００５０】
ソータユニット２６は、供給されるポリゴンデータの視点からの距離であるＺ値（深さの値）に従って、ポリゴンを深さ方向に並び替えて、ユニット内のメモリに記録する。従って、ソータユニット２６内には、フレーム内の複数のポリゴンについてのデータを一旦保存する。そして、ソータユニット２６は、表示画面のピクセル毎に、深さ方向の順番で、ポリゴンの不透明度データαpをブレンド処理ユニット３０に供給する。ブレンド処理ユニットでは、テクスチャの不透明度αtを使用するポリゴンの場合は、ポリゴンの頂点データから得られる不透明度αpと、テクスチャの不透明度αtとを合成して求めたピクセル不透明度αnに従って、ワークデータＸnを求める処理を行う。上記のテクスチャの不透明度αtをテクスチャメモリ２８から読み出すために、ピクセルのテクスチャ座標をソーターユニット２６から供給される必要がある。
【００５１】
また、テクスチャの不透明度αtを使用しないポリゴンの場合は、ポリゴンの頂点データから得られる不透明度αpをピクセルの不透明度αnとして、ワークデータＸnを求める。ワークデータを求める処理は、具体的には、上記式（６）のＸn ＝Ｘn-1 （１−αn ）に従う演算を行う処理である。
【００５２】
尚、テクスチャメモリ２８には、テクスチャの不透明度αtと、テクスチャ色データＴとが格納される。このテクスチャメモリ２８には、テクスチャデータがプログラムＲＯＭ１２から直接ダウンロードされ、保存される。また、このテクスチャメモリ２８は、ワークＲＡＭ１４内の記憶領域に設けることもできる。
【００５３】
ブレンド処理ユニット３０は、上記の通り、ピクセル毎に且つ深さ方向のワークデータＸnと不透明度αnとを生成し、ピクセルワークメモリユニット３６に供給する。ワークデータＸnと不透明度αnとは、ピクセルワークメモリユニット３６内のピクセルワークメモリ内に記録される。
【００５４】
テクスチャ処理ユニット３２は、ソータユニット２６から、ピクセル毎に、テクスチャ座標（Tx,Ty）と、ポリゴン色データPCOLと、三次元座標（Ｘ，Ｙ，Ｚ）値などを供給され、テクスチャ座標に従って、テクスチャメモリ２８からテクスチャ色データＴを読み出し、ポリゴンの地の色であるポリゴン色データPCOLとテクスチャ色データＴとを合成し、ピクセル色データTXCOnを求める処理を行う。この処理は、必ずしも表示画面の深さ方向の順に行う必要はない。そして、このテクスチャ処理ユニット内には、処理回路が複数設けられ、複数のピクセルに対する処理が、順次空いている処理回路に分配されて行われる。その結果、ピクセル色データTXCOnは、順不同で生成される。このピクセル色データTXCOnもピクセルワークメモリユニット３６内のメモリに記録される。
【００５５】
光源計算ユニット３４は、ソータユニット２６から、光源データと共に、ピクセル毎の三次元座標値（Ｘ，Ｙ，Ｚ）と法線ベクトル（Nx,Ny,Nz）を供給される。そして、光源からの色データINTnが求められる。この処理も、表示画面の深さ方向の順に行う必要はない。そして、この光源計算ユニット内には、処理回路が複数設けられ、複数のピクセルに対する処理が、順次空いている処理回路に分配されて行われる。その結果、ピクセルの光源色データINTnは、順不同で生成される。この光源色データINTnもピクセルワークメモリユニット３６内のメモリに記録される。
【００５６】
光源色データの生成は、例えばディフーズ光の場合は、光源の輝度ベクトルとピクセルの法線ベクトルの内積値を、光源の色データに乗算して求められる。
【００５７】
ピクセルワークメモリユニット３６内に、深さ方向でｎ番目のピクセルについて、上記のワークデータＸn、不透明度αn、ピクセル色データTXCOn、及び光源色データINTnが全て格納されると、それらのデータがカラー合成ユニット３８に供給される。カラー合成ユニット３８では、それらのデータを乗算して、フレームバッファ４０内の画像データＦＢに加算し、新たに求められた画像データＦＢをフレームバッファ４０内に上書きする。この画像データＦＢは、ピクセル色データに対して光源処理され且つブレンド処理された色データである。
【００５８】
全てのピクセルについて、上記のカラー合成処理が行われると、フレームバッファ４０内には、１フレームの表示に使用される画像データＦＢが格納された状態になる。そこで、このフレームバッファ４０内の画像データＦＢが、表示装置４４に必要な形態の画像データに変換され、表示装置４４に供給される。
【００５９】
以上が、レンダリング処理プロセッサ２０内の処理の流れである。ここでは、ブレンド処理ユニット３０のみが、深さ方向の順番でピクセルのデータを受け取り、ワークデータＸnを求める処理を順次行う。また、テクスチャ処理ユニット３２や光源計算ユニット３４では、それぞれの演算処理が非常に重たいので、複数の処理回路が設けられ、並列に処理される。しかも、複数の処理回路に対して、空いている処理回路に順次処理が分配されることで、全体の処理スピードを上げることができる。但し、かかる処理をしたことにより、ピクセル色データTXCOnや光源色データINTnの生成処理が、深さ方向において前後して完了する。しかし、カラー合成ユニット３８は、かかるデータ生成の処理が完了したピクセルから順にカラー合成処理を行うことができるので、何ら支障はない。
【００６０】
次に、ソーターユニット２６、ブレンド処理ユニット３０、テクスチャ処理ユニット３２、光源計算ユニット３４、ピクセルワークメモリユニット３６及びカラー合成ユニット３８の構成を説明する。
【００６１】
図４は、ソーターユニット２６の構成図である。ソータユニット２６は、頂点データからなるポリゴンデータＰＧ0〜ＰＧjを供給され、各ポリゴン内のピクセルデータを生成するピクセル生成部５０と、ピクセル生成部５０が生成したピクセルデータＰＸ0,0〜ＰＸi,jを、各ピクセル毎に深さ方向の順番で並び替えて、蓄積するピクセルソータ５２，５４，５６とを有する。
【００６２】
ピクセルソータは、表示画面の画素（ピクセル）の数だけ設けられることが望ましい。しかしながら、画面の画素数は、例えば６４０×４８０等と膨大になるので、画面の一部分、例えば８×８＝６４画素分のピクセルソータを設けるのが、現実的である。その場合は、i＝６４画素となる。或いは極端な例では、１画素だけのピクセルソータであっても良い。
【００６３】
各ピクセルデータＰＸm,nは、図４に示される通り、例えば座標値（Ｘ，Ｙ，Ｚ）値、ポリゴンの地の色であるポリゴン色データPCOL、ポリゴンの頂点データから補間演算により求められる不透明度αp、テクスチャ座標（Tx,Ty）、及び法線ベクトル（Nx,Ny,Nz）を有する。頂点データからなるポリゴンデータから、かかるピクセルデータを生成するアルゴリズムは、種々の方法が提案されている。最も一般的には、ラスタスキャン法が利用される。ラスタスキャン法によれば、ポリゴン内のＸ軸とＹ軸方向に走査される各ピクセルデータが、ポリゴンの頂点データを補間演算することにより求められる。また、フラクタル法を利用してピクセルデータを求めることもできる。フラクタル法については、本出願人が別途出願した特開平11-144074号公報に開示されている。
【００６４】
図４のソーターユニットによれば、ピクセル毎のピクセルデータＰＸm,nが、Ｚ値に基づいて、深さ方向に順番に並べられる。
【００６５】
図５は、別のソーターユニットの構成図である。このソーターユニット２６は、ポリゴンデータＰＧ0〜ＰＧjを、Ｚ値に従ってソートし、深さ方向に順番に並び替えて、ポリゴンソーター５８に格納する。そして、その並び替えられたポリゴンデータが、より手前側から深さ方向に沿って順に、ピクセル生成部６０に供給される。ピクセル生成部６０は、ポリゴンデータから、上記したラスタスキャン法やフラクタル法によりポリゴン内のピクセルデータＰＸ0,0〜ＰＸi,jを生成する。従って、ピクセルデータは、より手前側から深さ方向にそって順番に、ブレンド処理ユニット３０、テクスチャ処理ユニット３２、光源計算ユニット３４に供給される。
【００６６】
図６は、ブレンド処理ユニットの構成図である。ここに示されたブレンド処理ユニット３０には、ポリゴンの頂点データから求められた不透明度（透明度）αpと、テクスチャ座標とが、深さ方向に沿って順番に供給される。例えば、最も手前側にソートされたピクセルデータＰＸm,0（ｍ＝０〜i）の不透明度データαpが供給され、そのピクセルに対応するテクスチャの不透明度データαtがテクスチャメモリ２８から読み出される。透明度処理回路３０１は、例えば、これらの不透明度データの積算や、その他の所定の処理により合成したピクセルの不透明度αnを求める。テクスチャの不透明度データが存在しない場合は、ポリゴンの不透明度データαｐが、そのまま、ピクセルの不透明度αｎとなる。
【００６７】
ブレンド処理ユニット３０は、更に、乗算器３０２と減算器３０３とＸデータワークメモリ３０４とを有し、Ｘデータワークメモリ３０４から１つ手前のピクセルのワークデータＸn-1が読み出されると共に、ピクセルワークメモリユニット３６内の対応するピクセルのｎ番目の領域に格納される。そして、読み出したワークデータＸn-1と不透明度αｎとから、当該処理中のｎ番目のピクセルのワークデータＸｎ＝Ｘn-1（１−αｎ）が求められる。求められたワークデータＸｎは、ワークデータメモリ３０４内に更新される。また、不透明度αｎは、ピクセルワークメモリユニット３６内の対応するピクセルのｎ番目の領域に格納される。
【００６８】
図１７は、ブレンド処理ユニット３０の変形例を示す図である。この例は、図６のブレンド処理ユニット３０に比較して、ワークデータＸn-1と不透明度αｎとの乗算を行う乗算器３０５が追加されている点で異なる。従って、乗算器３０５で求められた積Ｘn-1・αｎが、ピクセルワークメモリユニット３６内の対応するピクセルのｎ番目の領域に格納される。かかる乗算器３０５を設けることにより、後述するピクセルワークメモリユニットとカラー合成ユニットの構成を簡略化することができる。
【００６９】
このブレンド処理ユニット３０では、上記した通り、最も手前にあるピクセルについてのワークデータＸｎが、不透明度αｎと１つ前のワークデータＸn-1とから順番に求められる。この演算処理は、乗算器と減算器などにより行われ比較的軽い処理であるので、全ての深さ方向のピクセルに対する演算は、比較的短時間で完了することができる。
【００７０】
ブレンド処理ユニット３０は、必要であれば、複数ユニット設けて、各ユニットを表示画面（スクリーン）座標に対応付けて並列化することができる。かかる構成の場合でも、各処理ユニットは、対応するピクセルについて手前側から深さ方向に向かって順番にワークデータを求める演算を行う。
【００７１】
図７は、光源計算ユニットの構成図である。光源計算ユニット３４は、光源計算を行う複数の光源計算回路３４２，３４３，３４４を有する。図７の例では、３つの光源計算回路が設けられ、光源計算を並列に処理することができる。光源計算ユニット３４は、更に、ソーターユニットからのピクセルの光源データを供給され、空き状態の光源計算回路３４２，３４３，３４４に順次光源計算処理を分配する演算指示分配回路３４１が設けられる。更に、光源計算ユニット３４は、光源計算回路が生成した光源色データINTを、生成順にピクセルワークメモリユニット３６に供給する演算結果出力回路３４５が設けられる。
【００７２】
図８は、光源計算回路の動作タイミングチャート図である。ここでは、６つのピクセルデータPX1〜PX6に対する光源計算回路の動作のタイミングが示される。図８の例では、ピクセルデータPX1に対する光源計算処理に６クロックを要するとする。同様に、ピクセルデータPX2〜PX6の処理クロック数が、２，３，７，４，２と仮定する。そして、ソーターユニット２６から、光源計算に必要なピクセルデータとして、光源データと座標値（Ｘ，Ｙ，Ｚ）と法線ベクトル（Nx,Ny,Nz）とが順番に供給されたとする。
【００７３】
上記の場合、演算指示分配回路３４１は、空き状態にある光源計算回路に順次その処理を分配する。図８に示される通り、最初にクロック１のサイクルでピクセルデータPX1に対する演算処理が、計算回路１に割り当てられる。ここでは、処理を割り当てるために、ピクセルデータをユニット内のバス３４６を経由して供給するので、１クロックサイクルを要するとする。そして、ピクセルデータPX1に対する計算は、計算回路１で６クロックサイクルを要して完了する。
【００７４】
次に供給されたピクセルデータPX2の処理は、光源計算回路２に割り当てられる。バス３４６を利用する割り当て処理は、ピクセルデータPX1と重なることができないので、クロック２のサイクルで割り当てが行われ、計算回路２で２サイクルを要して計算が完了する。また、次のピクセルデータPX3は、光源計算回路３に割り当てられる。そして、３クロックサイクルで処理が完了する。
【００７５】
その後供給されるピクセルデータPX4の処理は、クロック４で空き状態にある光源計算回路２にアサインされる。そして、７クロックサイクルで処理が完了する。同様に、ピクセルデータPX5は、クロック６で空き状態になる光源計算回路３に供給される。ピクセルデータPX6は、クロック７で空き状態になる光源計算回路１に供給される。
【００７６】
図８から明らかな通り、６つのピクセルデータに対する光源計算は、クロック１０で全ての計算が終了する。このピクセルデータに対する光源計算をシリアルに実行した場合は、合計で、6+2+3+7+4+2＝２４クロックサイクルを要する。それに比べて、２倍以上早く処理を完了することができる。これは、複数の光源計算回路を設け、複数のピクセルデータに対する光源計算を、並列に且つ空き状態の計算回路に順次処理を分配したことで、実現できたのである。但し、それぞれのピクセルデータに対する計算結果は、順不同で完了する。
【００７７】
図９は、テクスチャ処理ユニットの構成図である。この構成は、光源計算ユニットと同等であり、複数のテクスチャ処理回路３２２，３２３，３２４が設けられ、光源計算ユニットの場合と同様に、空き状態にある処理回路に順次テクスチャ処理が割り当てられる。演算指示分配回路３２１は、テクスチャ処理に必要なピクセルデータを、３つの処理回路に分配する。各テクスチャ処理回路は、テクスチャ座標（Tx,Ty）に従ってテクスチャメモリ２８からテクスチャ色データＴを読み出し、供給されたポリゴンの地肌のポリゴン色データPCOLと合成して、ピクセル色データTXCOnを生成する。
【００７８】
このテクスチャ処理は、ピクセル毎に処理サイクルにバラツキがあるので、複数の処理回路３２２，３２３，３２４のうち空き状態にある回路が、複数のピクセルに対するテクスチャ処理を行う。それらの動作タイミングに関しては、光源計算において図８で説明したアルゴリズムと同じである。従って、ピクセル色データTXCOnも、順不同で生成され、ピクセルワークメモリユニット３６に格納される。
【００７９】
上記の光源計算ユニット３４やテクスチャ処理ユニット３２には、共通のポリゴンに対応するピクセルデータが連続して供給されることが望ましい。同じポリゴンに対するピクセルデータであれば、共通の処理が含まれる場合があり、それぞれのユニットの処理効率を高めることができるからである。
【００８０】
図１０は、ピクセルワークメモリユニットの構成図である。ピクセルワークメモリユニット３６は、ブレンド処理ユニット３０から供給されるワークデータＸn、不透明度αn、テクスチャ処理ユニット３２から供給されるポリゴン内のピクセル色データTXCOn、光源計算ユニット３４から供給される光源色データINTnとを、ピクセル毎に記録するピクセルワークメモリ３６２を有する。図１０には、ピクセルワークメモリ３６２が、演算済みのピクセルデータEPX0,0〜EPXi,jを格納するマトリクス状のメモリ領域で構成されることが示されている。ピクセルデータEPXm,nは、図１０中に示される通り、上記のワークデータＸn-1、不透明度αn、ピクセル色データTXCOn、光源色データINTnと、それらのデータが格納されたことを示す４つのフラグＦ１〜Ｆ４を有する。ピクセルデータEPXm,nの、ｍは表示画面上のピクセルを区別し、ｎは表示画面の深さ方向のピクセルを区別する。但し、ｎは必ずしも深さ方向の順番である必要はない。
【００８１】
ピクセルワークメモリユニット３６は、更に、供給される演算済みのピクセルデータを、それぞれのメモリ領域に記録するピクセルワークメモリコントローラ３６１を有する。ピクセルワークメモリコントローラ３６１は、演算済みのピクセルデータが格納されると、格納されたデータに対応するフラグＦ１〜Ｆ４を、未格納状態の０から、格納状態の１に変更する。更に、ピクセルワークメモリコントローラ３６１は、それらの４つのフラグが全て１になったピクセルデータを、順次、カラー合成ユニット３８に供給する。
【００８２】
ブレンド処理ユニット３０は、ワークデータＸn、不透明度αnを、手前側から深さ方向の順で求め、ピクセルワークメモリユニット３６に供給する。従って、ピクセルデータの上記２つのデータに対応するフラグＦ１、Ｆ２は、最も手前から深さ方向の順番に、即ちEPXm,0、EPXm,1、EPXm,2  ．．．EPXm,jの順番で、格納状態に変更される。また、ピクセル色データTXCOn及び光源色データINTnは、それぞれテクスチャ処理ユニット３２と光源計算ユニット３４で求められるが、複数の回路のうち、空き状態にある回路を順次利用して求められるので、生成されるタイミングは必ずしも深さ方向の順番にはならない。その結果、４つのデータが全てピクセルワークメモリ３６２に格納されるタイミングも、ピクセルによって順不同となる。
【００８３】
そこで、ピクセルワークメモリコントローラ３６１は、各ピクセルデータの４つのフラグを監視し、すべて格納済みになったピクセルデータEPXから、カラー合成ユニット３８に供給される。
【００８４】
図１１は、カラー合成ユニットの構成図である。カラー合成器３８は、乗算器３８１と加算器３８２とを有する。乗算器３８１は、ピクセルワークメモリコントローラ３６１から供給されるピクセルデータEPXm,nのワークデータＸn-1、不透明度αn、ピクセル色データTXCOn、光源色データINTnを乗算する。加算器３８２は、フレームバッファ４０内の処理中のピクセルに対応する画像データＦＢと、上記乗算結果とを加算し、新たに生成された画像データＦＢを、フレームバッファ４０の同じピクセル領域に格納する。この演算処理は、必ずしも深さ方向に順番に行われるわけではなく、順不同で行われる。カラー合成ユニット３８は、同じピクセルにおいて、深さ方向の全てのピクセルデータEPXm,nについて上記演算を行うことにより、表示用画像データＦＢを、フレームバッファ４０内に格納することができる。
【００８５】
図１６に示したブレンド処理ユニットの変形例が利用される場合は、カラー合成ユニット３８の乗算器３８１には、ワークデータＸｎと不透明度αｎとの乗算値が供給される。従って、その分、乗算器３８１の構成を簡略化することができる。
【００８６】
図３に戻り、全てのピクセルに対する最終的な画像データＦＢが、フレームバッファ４０に格納されると、その画像データＦＢが表示制御部４２を経由して、表示装置４４に供給され、表示される。
【００８７】
図１２は、上記したレンダリング処理プロセッサの処理フローチャート図である。セットアップブロック２４が、描画コマンドを解読して、ポリゴンデータをソーターユニット２６に供給する（Ｓ１０）。ソーターユニット２６は、ポリゴンをピクセルに分解して、ピクセルソータ５２，５４，５６に供給する（Ｓ１２）。ピクセルソータは、視点からの距離（深さ、Ｚ値）に応じて、ピクセルデータを並び替える（Ｓ１４）。その後、ソータユニット２６は、手前のピクセルから順に、ピクセルデータを、ブレンド処理ユニット３０、テクスチャ処理ユニット３２、光源計算ユニット３４に供給する（Ｓ１６）。
【００８８】
各処理ユニットでは、上記した通り、ワークデータＸｎの生成（Ｓ１８）、ピクセル色データTXCOnの生成（Ｓ２０）、及び光源色データINTnの生成（Ｓ２２）を行う。ブレンド処理ユニット３０は、手前のピクセルから順番にワークデータを求める必要があるが、テクスチャ処理ユニット３２や光源計算ユニット３４は、複数の処理回路の空き状態の回路を順次利用して、順不同でデータを生成する。ブレンド処理ユニット３０は、手前のピクセルから順番にワークデータを求めるが、深さ方向において、不透明度αnが１である不透明ピクセルまでワークデータを求めたら、それ以降のワークデータＸｎは０であるので、ブレンド処理は終了する。従って、ブレンド処理部は、必ずしも深さ方向の全てのピクセルに対して処理を繰り返すとは限らない。
【００８９】
そして、各ピクセルのデータの生成が完了すると、カラー合成ユニットは、演算済みのピクセルデータから、各ピクセルの光源処理とブレンド処理された色データINTn・TXCOn ・αn ・Ｘn-1を演算で求め、フレームバッファ内の画像データに加算して、再度格納する（Ｓ２４）。
【００９０】
上記の工程Ｓ１６〜Ｓ２４が、各ピクセルの深さ方向の全てのピクセルデータについて終了し、且つ全てのピクセルについて終了するまで、繰り返される。そして、全てのピクセルについて処理が終了すると、フレームバッファ内に格納された画像データにより、表示が行われる（Ｓ２６）。工程Ｓ１０〜Ｓ２６が、フレーム毎に繰り返される。
【００９１】
［汎用的なブレンド処理への適用］
上記の実施の形態例では、半透明ポリゴンの色とその奥側に位置するポリゴンの色とを不透明度αで混合ブレンディング処理する場合に、手前側のポリゴンから順番に処理する例を説明した。しかしながら、一般的なコンピュータを利用したグラフィックライブラリには、例えばオープンＧＬ（Graphic Library）で規格化されているように、多用なブレンディング処理ができるようになっている。その一般化されたブレンディング処理は、以前処理して求めたフレームバッファ内の色データＦＢm-1と今回処理中のピクセルの色データPIXｍとを、それぞれソース混合計数ＳＲｍとディスティネーション混合計数ＤＥｍとでブレンディングすることにある。即ち、演算式で表すと、今回の処理で求められてフレームバッファ内に格納される色データＦＢｍは、
ＦＢｍ＝PIXｍ＊DEｍ＋ＦＢm-1＊SRｍ                （８）
となる。但し、ｍは整数であり、小さいほど先に処理される（＊は積を表す。以下同様）。
【００９２】
上記のブレンディング演算式において、ソース混合計数ＳＲｍとディスティネーション混合計数ＤＥｍとは、次の１１種類のうちから適宜選択される。
【００９３】
０、FBn-1、PIXｎ、PIXｎ*α、FBn-1*α、１、１−FBn-1、１−PIXｎ、１−PIXｎ*α、１−FBn-1*α、（FB1-n*α、１−PIXｎ*α）のうちいずれか小さい方上記の式（８）から理解される通り、一般的なブレンディング処理は、描画前のフレームバッファの色データを必要とし、また演算結果も描画順序に依存している。従って、一般的なコンピュータ・グラフィックにおいては、ブレンディング処理の必要なポリゴンは奥側より順に描画するのが通例である。
【００９４】
図１３は、半透明ポリゴンの混合ブレンディング処理を示す図である。手前側の半透明ポリゴンＰＧｍと、奥側のポリゴンＰＧm-1が一部重なっていて、手前側の半透明ポリゴンＰＧｍの不透明度がαの場合である。この場合は、従来例で説明した通り、奥側のポリゴンＰＧm-1の色データＦＢm-1が先に求められ、それに手前側の半透明ポリゴンＰＧｍの色データが、不透明度αｍと透明度（１−αｍ）によって、混合ブレンディング処理される。即ち、その演算式は、図示される通り、
ＦＢｍ＝PIXｍ＊αｍ＋ＦＢm-1＊（１−αｍ）        （９）
即ち、上記式（９）は、一般式（８）において、ディスティネーション混合係数DEｍ＝αｍで、ソース混合係数SRｍ＝（１−αｍ）にした場合に対応する。
【００９５】
図１４は、補助フィルタ処理の具体例を示す図である。汎用的なグラフィックライブラリには、ブレンド処理として補助フィルタ処理がある。この処理は、図１３の半透明ポリゴンの混合ブレンディング処理と異なり、奥側のポリゴンＰＧm-1の色データがその手前側のポリゴンＰＧｍの混合係数αｍにかかわらず、そのまま減衰することなく残される処理である。
【００９６】
例えば、手前側のポリゴンＰＧｍが炎に対応するポリゴンであり、奥側のポリゴンＰＧm-1が所定の不透明ポリゴンの場合を想定する。この場合は、視点からは炎のポリゴンＰＧｍを通して不透明ポリゴンＰＧm-1を見ていることになる。その場合は、炎ポリゴンＰＧｍの色は加算されるが、奥側のポリゴンＰＧm-1の色データが減衰することはない。
【００９７】
その場合は、炎ポリゴンＰＧｍの色データPIXｍに対してディスティネーション混合係数DEｍ＝αｍ、ソース混合係数SRｍ＝１にすることにより、上記の一般式（８）を利用することができる。その結果、補助フィルタ処理の演算式は、図示される通り、
ＦＢｍ＝PIXｍ＊αｍ＋ＦＢm-1＊１        （１０）
となる。即ち、前回の処理で求めたポリゴンＰＧm-1の色データＦＢm-1をそのまま残し、今回処理中のポリゴンＰＧｍの色データPIXｍに混合係数αｍ分だけ加算する処理である。
【００９８】
この補助フィルタ処理は、上記の炎ポリゴンの例以外に、例えば赤い光源からの光がポリゴンＰＧm-1に照射されている場合も、同様の処理が適用される。
【００９９】
図１５は、更に、カラーフィルタ処理を示す図である。カラーフィルタ処理では、例えば、背景にあるポリゴンＰＧm-1の特定の色成分だけを抽出するために、手前側にそれ自身は色成分を持たないカラーフィルタポリゴンＰＧｍを配置させる。そして、このブレンディング処理演算では、特定の色成分だけを抽出させるために、背景のポリゴンＰＧm-1の色データＦＢm-1にカラーフィルタポリゴンＰＧｍの色抽出データPIXｍを乗算する。
【０１００】
即ち、その演算式は、図示される通り、
ＦＢｍ＝PIXｍ＊０＋ＦＢm-1＊PIXｍ          （１１）
となる。この演算式は、一般式（８）に対して、カラーフィルタポリゴンＰＧｍの色抽出データPIXｍに対してディスティネーション混合係数DEｍ＝０、前回求めた色データＦＢm-1に対してソース混合係数SRｍ＝PIXｍにすることにより得られる。
【０１０１】
以上の通り、半透明ポリゴンの混合ブレンディング処理以外に、補色フィルタ処理やカラーフィルタ処理などの様々なブレンディング処理は、一般式（８）に、適宜選択したディスティネーション混合係数DEｍとソース混合係数SRｍと適用して演算処理することができる。通常のコンピュータ・グラフィック処理装置は、上記の一般式（８）に適用できるように構成され、その結果、ディスティネーション混合係数DEｍとソース混合係数SRｍとを適宜選択して行うことにより、様々なブレンディング処理が可能になる。
【０１０２】
そこで、上記の一般的なブレンディング処理に対して、視点側から（手前側）ポリゴンを順番に処理することができる方法、処理装置について、以下に説明する。
【０１０３】
図１の場合と同様に、４枚のポリゴンが手前側から重なっていると仮定する。その場合、一般式（８）に対して、ｍ＝１〜４により、次の４つの演算式が導かれる。
【０１０４】
ＦＢ1＝PIX1＊DE1＋ＦＢ0＊SR1          （２１）
ＦＢ2＝PIX2＊DE2＋ＦＢ1＊SR2          （２２）
ＦＢ3＝PIX3＊DE3＋ＦＢ2＊SR3          （２３）
ＦＢ4＝PIX4＊DE4＋ＦＢ3＊SR4          （２４）
ここで、留意すべき点は、上記ブレンディング処理は、奥側のポリゴンを先に処理してその色データがフレームバッファに記録されているので、ｍが大きいほど手前のポリゴンを意味し、ｍが小さいほど奥側のポリゴンを意味することである。
【０１０５】
そこで、上記の（２１）〜（２４）について、式（５）（６）（７）で行ったように、最も手前のポリゴンの色データをＦＢ4からＤ1に、最も奥側のポリゴンの色データをＦＢ1からＤ4にそれぞれ置き換え、半透明ポリゴンの場合と同様に、処理中のピクセルの色データPIXをピクセル色データTXCOnと光源色データINTnの乗算値TXCOn＊INTnに置き換えると、次の通りである。つまり、Ｄ4＝ＦＢ1〜Ｄ1＝ＦＢ4とし、PIX4＝TXCO1＊INT1〜PIX1＝TXCO4＊INT4すると、
Ｄ4＝TXCO4＊INT4＊DE4＋Ｄ5＊SR4            （３１）
Ｄ3＝TXCO3＊INT3＊DE3＋Ｄ4＊SR3            （３２）
Ｄ2＝TXCO2＊INT2＊DE2＋Ｄ3＊SR2            （３３）
Ｄ1＝TXCO1＊INT1＊DE1＋Ｄ2＊SR1            （３４）
そこで、ワークデータＸn（但しＸ0＝１）を、
Ｘn＝SRn＊Ｘn-1＝SRn＊SRn-1＊SRn-2＊…＊SR1        （３５）
とすると、式（３４）は、次の通り展開される。
【０１０６】
Ｄ1＝TXCO1＊INT1＊DE1＊Ｘ0＋TXCO2＊INT2＊DE2＊Ｘ1＋TXCO3＊INT3＊DE3＊Ｘ2＋TXCO4＊INT4＊DE4＊Ｘ3
であるから、各TXCOn＊INTn＊DEn＊Ｘn-1に注目すると、
0004411713.tif 000006
と一般化することができる。この場合上記の置き換えにより、ｎが小さいほど手前のポリゴンを意味しているので、より手前のポリゴンから順番にブレンディング処理を行うことができることを意味している。即ち、より手前に位置するポリゴンの処理結果Ｄn-1を利用して、次の奥側に位置するポリゴンのデータＤnを求めることができるのである。そして、上記の式（３５）と（３６）において、SRｎ＝（１−αｎ）、DEｎ＝αｎと置き換え、更にポリゴンの色データＤnをフレームバッファのデータＦＢnに置き換えると、半透明ポリゴンの処理で示した式（６）（７）と同じになることが理解される。
【０１０７】
上記の式（３５）によれば、ワークデータＸnは、ソース混合係数SRｎの累積値である。また、上記の式（３６）によれば、視点からｎ枚目のポリゴンを処理した結果の色データＤn（ＦＢn）は、ｎ枚目のポリゴンの色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn と、手前に位置するｎ−１枚のポリゴンのソース混合係数SR1〜SRn-1の累積乗算値（ワークデータ）Ｘn-1 とに応じて処理し、全ての画像データＤnを加算するレンダリング処理により求められる。しかも、ワークデータＸnが所定の最低値よりも小さくなると、その後のポリゴンの処理を省略しても表示される色データに大きな影響を与えないことは、半透明ポリゴンのブレンド処理と同じである。
【０１０８】
図１６は、上記の汎用レンダリング処理を行う場合の、レンダリング処理プロセッサ内に設けられるブレンド処理ユニットの構成図である。上記の通り、汎用レンダリング処理に適用する場合は、ブレンド処理ユニット３０が、ソース係数SRnを乗算したワークデータＸnを、視点側から奥行き方向に沿って順に求める必要がある。その場合、ソース係数SRnは、ブレンディング処理の種類によって、不透明度αnを使用する場合や、テクスチャ色データＴnを使用する場合に、それぞれ区別して処理しなければならない。
【０１０９】
図１６に示したブレンド処理ユニット３０は、ソース、ディスティネーション係数生成回路３０１と、乗算器３０２と、Ｘデータワークメモリ３０４を有する。係数生成回路３０１は、テクスチャメモリ２８Ａ、２８Ｂから、テクスチャの不透明度αtとテクスチャの色データＴを読み出すことができる。また、係数生成回路３０１に、ソーターユニットから、ピクセルの不透明度αpとテクスチャ座標（Tx,Ty）が供給される。
【０１１０】
ブレンディング処理の種類に応じて、係数生成回路３０１は、ソース混合係数SRnとして、１−αn、１、Ｔnをそれぞれ生成し、乗算器３０２に供給する。乗算器３０２は、そのソース混合係数SRnをＸデータワークメモリ３０４から読み出されたワークデータＸn-1と乗算する。また、係数生成回路３０１は、ディスティネーション混合係数DEnも同時に出力し、ピクセルワークメモリ３６に供給し、格納する。更に、Ｘデータワークメモリ３０４から読み出されたワークデータＸn-1も、ピクセルワークメモリ３６に供給され、格納される。上記の３つのブレンディング処理では、ディスティネーション混合係数DEnは、不透明度αnか、０のいずれかである。
【０１１１】
即ち、ブレンド処理ユニット３０では、次の様に混合係数を選択することで、上記した３つの処理を行うことができる。
【０１１２】
半透明ポリゴンの混合ブレンディング処理：DEｎ＝αｎ、SRｎ＝１−αｎ
補助フィルタ処理                      ：DEｎ＝αｎ、SRｎ＝１
カラーフィルタ処理                    ：DEｎ＝０  、SRｎ＝Ｔn
上記の例以外にも、種々の混合係数を選択することができる。例えば、０、Ｔｎ＊αｎ、１、１−Ｔｎ、１−Ｔｎ＊αｎ等を適宜選択することができる。但し、データＦＢn-1、即ち、後で処理して求められる色データＤn+1を含む混合係数を選択することはできない。
【０１１３】
図１８は、ブレンド処理ユニットの変形例を示す図である。図１６に比較して、図１８の変形例は、更にディスティネーション係数DEnとＸワークデータＸn-1とを乗算する乗算器３０５を有する。そして、この乗算器３０５の乗算値Ｘn-1＊DEnが、ピクセルワークメモリユニット３６に格納される。かかるブレンド処理ユニットを利用することで、カラー合成ユニットの乗算器３８１の構成を簡略化することができる。
【０１１４】
テクスチャ処理ユニット３２、光源計算ユニット３４の構成は、汎用ブレンディング処理の場合でも前述と同じである。即ち、比較的大きな処理工数を必要とするピクセル色データTXCOnの生成（テクスチャ処理）や、光源色データを求める光源計算は、並列回路により順不同で求め、逐次ピクセルワークメモリユニット３６に格納する。そして、ピクセルデータの処理が完了したピクセルから、カラー合成ユニット３８により合成処理が行われる。
【０１１５】
カラー合成ユニット３８では、一つ手前のワークデータＸn-1、ディスティネーション混合係数DEn、ピクセルの色データTXCOn及び光源色データINTnが、乗算器３８１で乗算され、フレームバッファ４０内の画像データＦＢに加算され、フレームバッファ４０に再書き込みされる。
【０１１６】
図１６に示したブレンド処理ユニット３０は、カラーフィルタ処理の場合に、ソース混合係数SRnとして、テクスチャの色データＴをそのまま利用した。しかしながら、より厳密にカラーフィルタの色データを求めるためには、テクスチャ処理ユニット３２により生成されるピクセル色データTXCOnと、光源計算ユニット３４により生成される光源色データINTnとを乗算して光源処理する必要がある。従って、その光源処理されたピクセル色データをブレンド処理ユニット３０に供給してソース混合係数として利用する必要がある。その為に、カラーフィルタ処理において、ブレンド処理ユニット３０によるワークデータの生成処理が、しばらく停止する必要がある。そして、それぞれ生成されてピクセルワークメモリに記録されたピクセルの色データTXCOnと光源色データINTnを、ブレンディング処理ユニット３０に供給しながら、ワークデータＸnを生成する。
【０１１７】
上記の処理は、カラーフィルタ処理の場合に限定されるので、全体のレンダリング処理に与える影響は、それほど大きくない。
【０１１８】
以上の実施の形態例において、レンダリング処理プロセッサ２０内のブレンド処理ユニット３０、テクスチャ処理ユニット３２、及び光源計算ユニット３４は、それぞれマイクロコンピュータによって実現されても良い。レンダリング処理プロセッサ２０が、１チップのプロセッサで実現される場合は、それらの処理ユニットとしてマイクロコンピュータの構成を有するマクロ回路が埋め込まれる。その場合、テクスチャ処理ユニット３２、光源計算ユニット３４は、複数のマイクロコンピュータを有し、それぞれの処理をプログラムを実行することにより行う。複数ユニット設けられたマイクロコンピュータは、空き状態になりしだい、テクスチャ処理と光源計算が分配されるので、各ピクセルの処理時間が異なっても、全体の処理時間を短くすることができる。
【０１１９】
以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【０１２０】
【発明の効果】
以上説明した通り、本発明によれば、半透明ポリゴンの画像処理において、表示画面の視点側のポリゴンから奥行き方向に沿って順に処理するアルゴリズムを採用することで、奥行き方向について順不同でカラー合成処理を行うことができる。その結果、より高速に処理可能なレンダリングプロセッサを実現することができる。
【０１２１】
また、本発明によれば、一般的なブレンディング処理を行うことができる汎用レンダリングプロセッサにおいても、同様により高速に処理する構成を実現することができる。
【図面の簡単な説明】
【図１】半透明ポリゴンの重なり例を説明する図である。
【図２】本発明及び従来例のレンダリング処理を、図１の例に適用した時の演算式を示す図表である。
【図３】本発明の実施の形態例におけるレンダリング処理プロセッサを有するゲーム装置の構成図である。
【図４】ソーターユニットの構成図である。
【図５】別のソーターユニットの構成図である。
【図６】ブレンド処理ユニットの構成図である。
【図７】光源計算ユニットの構成図である。
【図８】光源計算回路の動作タイミングチャート図である。
【図９】テクスチャ処理ユニットの構成図である。
【図１０】ピクセルワークメモリユニットの構成図である。
【図１１】カラー合成ユニットの構成図である。
【図１２】レンダリングプロセッサの処理フローチャート図である。
【図１３】半透明ポリゴンの混合ブレンディング処理を示す図である。
【図１４】補助フィルタ処理を示す図である。
【図１５】カラーフィルタ処理を示す図である。
【図１６】汎用レンダリング処理を行う場合のブレンド処理ユニットの構成図である。
【図１７】ブレンド処理ユニットの変形例の構成図である。
【図１８】汎用レンダリング処理を行う場合のブレンド処理ユニットの変形例の構成図である。
【符号の説明】
３４        レンダラ、レンダリング処理部
３４２      Ｘバッファ、ワークデータバッファ
３４３      Ｄバッファ、画像データバッファ
Ｔn         色データ、テクスチャデータ
Ｄn         画像データ
αn         不透明度データ
Ｐ１〜Ｐ４  ポリゴン
【図１】
0004411713.tif 000007
【図２】
0004411713.tif 000008
【図３】
0004411713.tif 000009
【図４】
0004411713.tif 000010
【図５】
0004411713.tif 000011
【図６】
0004411713.tif 000012
【図７】
0004411713.tif 000013
【図８】
0004411713.tif 000014
【図９】
0004411713.tif 000015
【図１０】
0004411713.tif 000016
【図１１】
0004411713.tif 000017
【図１２】
0004411713.tif 000018
【図１３】
0004411713.tif 000019
【図１４】
0004411713.tif 000020
【図１５】
0004411713.tif 000021
【図１６】
0004411713.tif 000022
【図１７】
0004411713.tif 000023
【図１８】
0004411713.tif 000024