説明

ブレンディング処理を含む画像処理装置及びその方法

【課題】半透明ポリゴンのブレンド処理を伴うレンダリング処理を効率的に行うことができる画像処理装置を提供する。
【解決手段】本発明は、半透明ポリゴンのレンダリング処理を、表示画面内の手前側のポリゴンから順に透明度の累積乗算値であるワークデータXnを求めると共に、光源からの色データINTnを求める光源計算処理や、テクスチャカラーなどを利用して色データTXCOnを求めるテクスチャ処理を、複数のポリゴンに対して並列に行う。そして、上記のワークデータXn-1、光源色データINTn、色データTXCOn及び不透明度αnとから、画像データFBnを求めて累積するカラー合成処理を、複数のポリゴンに対して順不同で行うことを特徴とする。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、半透明ポリゴンを含む複数のポリゴンに対する画像処理装置及びその方法にかかり、特に、半透明ポリゴンに必要な透明度を利用したブレンディング処理や重なり合う複数のポリゴンに対する一般的なブレンディング処理を、より効率的に且つ短時間で処理することができる画像処理装置及びその方法に関する。
【0002】
【従来の技術】ゲーム装置やシミュレーション装置において、操作入力に応じてキャラクタ等を構成する複数のポリゴンの位置を求め、それらのポリゴンのうち表示されるポリゴンに対してレンダリング処理を行って画像データを生成し、それらを表示することが行われる。
【0003】半透明ポリゴンに対するレンダリング処理は、不透明ポリゴンと異なり、その後方(奥側)に位置する他のポリゴンとのブレンディング処理を伴うので、表示画面内の奥側の半透明ポリゴンから順にブレンディング処理を含むレンダリング処理を行うことが必要である。
【0004】一方、不透明のポリゴンに対するレンダリング処理は、表示画面内の奥行きを示すZ値を利用した陰面消去処理を行うことで、複数のポリゴンのレンダリングの順番に制約を課すことなく、重なり合う部分の処理が行われる。また、不透明ポリゴンと半透明ポリゴンとが混在する場合は、上記のZ値を利用した陰面消去処理によって不透明ポリゴンを任意の順番で処理し、その後、半透明ポリゴンを奥側から順に処理する方法が一般的である。
【0005】
【発明が解決しようとする課題】ところが、レンダリング処理において、処理すべきポリゴン数が多くなると、決められたフレーム間の時間内でレンダリング処理が完了しない場合がある。その場合、画像処理の質を重視すると全ての半透明ポリゴンのレンダリング処理が終了するまで待たなければならず、表示中のキャラクタの動きが停止することになり、ゲーム装置あるいはシュミレーション装置において不都合である。また、キャラクタの動きを重視するとフレーム間の時間内で処理されないポリゴンが存在することになる。その場合、半透明ポリゴンのレンダリング処理が、より奥側のポリゴンから処理されるので、画像内で最も重要なキャラクタの一つである手前側のポリゴンの処理が切り捨てられることになる。
【0006】更に、不透明ポリゴンと半透明ポリゴンのレンダリング処理は、上記した通り、それぞれの効率を重視すると、それらのポリゴンを分けて別々に処理する必要があり、画像処理の負担を増大させる。かかる負担の増大は、上記と同様にフレーム間の時間内での画像処理の完了を困難にさせる。
【0007】更に、半透明ポリゴンに対する不透明度を利用したブレンディング処理に限定されず、一般的なブレンディング処理においても、表示画面のより奥側のポリゴンの色データを先に求め、その色データと次に処理するポリゴンの色データとに対して、所定のソース混合計数とディスティネーション混合計数とによりブレンディング処理することが提案されている。この場合も、表示画面の奥側のポリゴンから順番に処理することが要求され、半透明ポリゴンの場合と同様の課題を有する。
【0008】そこで、本出願人は、上記課題を解決する発明を提案した。例えば、特願平11-225426号、1999年8月9日出願の「ブレンディング処理を含む画像処理装置及びその方法」である。本件は、本願出願時点では未公開であり、従って公知ではない。この発明では、半透明ポリゴンのレンダリング処理を、表示画面内の手前側、つまり視点側のポリゴンから深さ方向に順に行うことを特徴とする。そのために、表示画面内の手前側から順に並べた時のn番目のポリゴンに、色データTn と不透明度αn とが与えられる場合、ワークデータXn として、Xn =(1−αn )・Xn-1を求め、更に画像データDn として、Dn =Dn-1 +Tn ・αn ・Xn-1を求め、ワークデータXn 及び画像データDn を求める上記の演算処理を全てのポリゴンに対して行う。そして、最後の画像データDn を、表示用の画像データとして利用する。
【0009】本発明は、上記の画像処理アルゴリズムを利用して、より高速にレンダリング処理を行うことができる新規な画像処理装置及び画像処理方法を提供するものである。
【0010】本発明の目的は、半透明ポリゴンの画像処理において、フレーム間の時間内により手前側のポリゴンのレンダリング処理を確実に行うことができる画像処理装置、その方法を提供することにある。
【0011】更に、本発明の目的は、不透明ポリゴンと半透明ポリゴンが混在したポリゴンの画像処理において、両ポリゴンを区別することなくレンダリング処理することができ、更に処理効率を高めた画像処理装置、その方法を提供することにある。
【0012】更に、本発明の目的は、一般的なブレンディング処理において、処理効率を高めた画像処理装置、その画像処理方法を提供することにある。
【0013】
【課題を解決するための手段】本発明の第1の側面は、半透明ポリゴンのレンダリング処理を、表示画面内の手前側のポリゴンから順にワークデータXnを求めると共に、光源からの色データINTnを求める光源計算処理や、テクスチャカラーなどを利用して色データTXCOnを求めるテクスチャ処理を、複数のポリゴンに対して並列に行う。そして、上記のワークデータXn、光源色データINTn、色データTXCOn及び不透明度αnとから、画像データFBnを求めて累積するカラー合成処理を、複数のポリゴンに対して順不同で行うことを特徴とする。
【0014】そのために、表示画面内の手前側から順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と不透明度αn と光源色データINTnが与えられる場合、ワークデータXn として、Xn =(1−αn )・Xn-1を全てのポリゴンに対して表示画面内の手前側から順番に求める。更に、画像データFBn として、乗算値INTn・TXCOn ・αn ・Xn-1を全てのポリゴンに対して求め、累積する。即ち、FB =Σ(INTn・TXCOn ・αn ・Xn-1
の演算を行う、これは、重なり合うポリゴンの各画像データFBnを加算する演算であるので、各画像データFBnは、深さ方向の複数のポリゴンに対して順不同で求めることができる。そして、全て累積した画像データFBを、表示用の画像データとして利用する。
【0015】上記において、ワークデータXn の初期値X0 は、例えば1が好ましい。また、画像データFBn の初期値FB0 は、例えば0が好ましい。
【0016】上記の画像処理では、画像データFBは、ピクセル色データTXCOnと、不透明度αnと、光源色データINTn及びワークデータXnの積算した値INTn・TXCOn ・αn ・Xn-1を加算(累積)した値(n=0〜j、jは重なったポリゴンの枚数)である。そして、各ポリゴンに対する積算値INTn・TXCOn ・αn ・Xn-1を求める演算は、他のポリゴンに影響を受けないので、上記した通り、順不同で行うことができる。そして、光源からポリゴンに与えられる影響を示す光源色データINTnの演算は、ポリゴンの種類に応じて簡単な場合と複雑な場合とが混在する。また、テクスチャカラー等を利用してピクセル色データTXCOnを求める演算処理も、ポリゴンに応じて簡単な場合と複雑な場合とが混在する。一方、透明度の累積乗算値であるワークデータXn =(1−αn )・Xn-1 は、他のポリゴンのワークデータXn-1 の影響を受けるので、スクリーンの手前から深さ方向に順番に行う必要がある。但し、この演算処理自体は、単純であり、処理工数は少ない。
【0017】そこで、本発明では、演算処理工数が比較的高い光源計算処理やテクスチャ処理を、複数のポリゴンに対して並列に行い、これらの処理が終了したポリゴンから順に、積算値INTn・TXCOn ・αn ・Xn-1を求める処理とそれらを累積加算する処理とからなるカラー合成処理を行う。その結果、従来非常に演算負荷が重かった光源計算処理やテクスチャ処理を短時間で効率的に行うことができる。
【0018】上記のワークデータXn は、手前側(視点側)のn枚の半透明ポリゴンの透明度(1−α)が乗算された値を意味する。従って、重なり合う複数のポリゴンに対して、手前側のポリゴンから順番にワークデータを求める処理をすることで、全てのポリゴンに対するワークデータXnを順番に求めることができる。それぞれのポリゴンのレンダリング処理では、ピクセル色データTXCOn を、それより手前のn−1枚のポリゴンの透明度を乗算したワークデータ値Xn-1 と、透明度αnと、光源色データINTn応じて、演算処理して画像データFBnを求める。そして、それぞれのポリゴンに対して求められた画像データFBnが累積(加算)されて、表示用の画像データFBが求められる。
【0019】本発明の別の側面は、重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度(1−αn)と、光源色データINTnが与えられ、前記画像処理装置は、重なり合うピクセルの前記透明度(1−αn)の乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置である。または、その画像処理方法である。
【0020】更に、本発明の別の側面は、重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、前記画像処理装置は、重なり合うピクセルの前記ソース混合係数SRnの乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置である。また、その画像処理方法である。
【0021】
【発明の実施の形態】以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲がその実施の形態に限定されるものではない。
【0022】最初に、先願の特願平11-225426号で提案した、ブレンディング処理方法について説明する。
【0023】図1は、半透明ポリゴンの重なり例を説明する図である。この例では、3枚の半透明ポリゴンP1,P2,P3と、1枚の不透明ポリゴンP4とが、表示画面内の奥行き方向(Z値)について手前から順に重なっている。従って、領域C4の画像データC4 は、不透明ポリゴンP4のテクスチャデータから環境光等に応じて形成される色データT4 そのままである。
【0024】本明細書において、ポリゴンの色データTは、例えばポリゴン自体の色データ、模様を含むテクスチャ色データ、更に、テクスチャ色データやポリゴン自体の色データにシェーディング処理した後の色データ等を含む。それらのいずれかの色データを代表して、ポリゴンの色データTと称する。また、ブレンディング処理などにより求められた色データは、表示に利用される画像データCである。従って、画像データCも一種の色データである。
【0025】
即ち、C4 =T4 (1)
また、領域C3は、不透明ポリゴンP4上に半透明ポリゴンP3が重なっているので、その画像データは、半透明ポリゴンP3の不透明度α3 (α3 =1で不透明、α3 =0で透明、1>α3 >0で半透明)及び色データT3 に従って、ポリゴンP4,P3の色データをブレンディングした色データとなる。即ち、従来の一般的なレンダリング方法によれば、領域C3の色データは、C3 =α3 3 +(1−α3 )C4 (2)
で求められる。
【0026】同様に、領域C2の画像データC2 も、半透明ポリゴンP2の不透明度α2 及び色データT2と領域C3の色データC3 とから、C2 =α2 2 +(1−α2 )C3 (3)
で求められ、更に、領域C1の画像データC1 も、C1 =α1 1 +(1−α1 )C2 (4)
で求められる。
【0027】以上の通り、半透明ポリゴンに対するレンダリング処理は、画像データCnを求めるために、他のポリゴンとの重なり合う領域において、より奥側の画像データCn+1 を再帰的に参照してブレンディング処理を行う必要がある。従って、表示画面内の奥側から順にポリゴンのレンダリング処理を行うのが一般的である。
【0028】そこで、先願で提案した発明は、上記した従来の課題を解決するために、表示画面内の手前側から順にポリゴンのレンダリング処理を行うことを特徴とする。この発明によれば、上記の式(2)、(3)、(4)から、C1 について開くと、C1 =α1 1 +(1−α1 ){α2 2 +(1−α2 )[α3 3+(1−α3 )C4 ]}
となり、更に、Tn についてまとめると、 C1 =T1 α1 +T2 α2 (1−α1 )+T3 α3 (1−α1 )(1−α2
+C4 (1−α1 )(1−α2 )(1−α3 ) (5)
ここで、ポリゴンP4が不透明ポリゴンであり、不透明度データα4 =1とし、更に、任意のワークデータXn として、 Xn =(1−α1 )(1−α2 ....(1−αn
=Xn-1 (1−αn ) (6)
と定義するとする。但し、X0 =1とする。
【0029】上記式(6)を式(5)に挿入すると、 C1 =T1 α1 0 +T2 α2 1 +T3 α3 2 +C4 3 =T1 α1 0 +T2 α2 1 +T3 α3 2 +T4 α4 3 となり、各々のTn αn n-1 に着目すれば、 FBn =FBn-1 +Tn αn n-1 (7)
とすることができる。但し、FB0 =0である。その結果、n=4の場合は、FB4 =C1が成立する。
【0030】即ち、従来のブレンディング処理と同じ処理を、上記の式(6)と(7)を利用することで、表示画面内の手前側から順にポリゴンのデータとして、色データTn とその不透明度αn を与えて、全ての重なり合うポリゴンに対する演算処理を行うことにより、最終的に得られる画像データFBn は、図1の領域C1の画像データC1 と同じになる。従って、新たに定義したワークデータXn を利用して、画像データFBn =FBn-1 +Tn αn n-1 を求めることができる。これらの数式のインデックスから明らかな通り、これらの演算において、より奥側のポリゴンのデータを再帰的に呼び出す必要はなくなる。
【0031】図2は、上記の演算を利用する本発明のレンダリング処理を、図1の例に適用した時の演算式を示す図表である。図2(1)に、先願の発明の場合を、図2R>2(2)に従来例の場合をそれぞれ示す。
【0032】図2の図表から明らかな通り、従来例のレンダリング処理によれば、半透明のポリゴンに対して、奥側のポリゴンP4 の色データT4 と不透明度α4 と初期値C5 を利用して、領域C4の画像データC4 が求められ、更に、一つ手前のポリゴンP3 の色データT3 と不透明度α3 と初期値C4 を利用して、領域C3の画像データC3 が求められる。更に、領域C2の画像データC2 及び領域C1の画像データC1 が順に求められる。
【0033】それに対して、先願の発明によれば、上記の式(6)、(7)を利用することで、最初に最も手前に位置するポリゴンP1の色データT1 と不透明度α1 と初期値X0 とFB0 を利用して、途中の画像データFB1 が求められ、更に、一つ奥側のポリゴンP2 の色データT2 と不透明度α2 と上記の途中の画像データFB1 を利用して、次の途中の画像データFB2 が求められる。更に、同様にして次の途中の画像データFB3 、FB4 が求められる。そして、全てのポリゴンのデータに対する処理が終了した最終画像データFB4 が、領域C1の画像データC1 として利用される。
【0034】従って、この先願発明によれば、半透明ポリゴンに対するレンダリング処理は、手前側のポリゴンに対するデータ(色データTと不透明度データα)を利用して次々に演算処理することができる。更に、後述する具体例で明らかになるが、より奥側のポリゴンに対するレンダリング処理では、ワークデータXn-1 が小さくなる傾向にあり、そのワークデータXn-1 を利用して求められる途中の画像データFBn も変化が少なくなる傾向にある。従って、ある程度ワークデータXn-1 が小さくなると、あるいは0になると、それ以降の奥側のポリゴンのデータに対するレンダリング処理を省略しても、表示される画像への影響は殆どないことが理解される。
【0035】更に、上記のレンダリング処理の演算において、不透明ポリゴンに対しては、単に不透明度αn を1(不透明)とすれば、上記の演算をそのまま適用して処理することができる。即ち、不透明度αn =1の場合は、ワークデータXn =0となり、それより奥側のポリゴンのレンダリング処理の結果に変化はなくなり、実質的にそれらの奥側のポリゴンに対するレンダリングは不要になる。従って、この先願発明のレンダリング処理を利用することにより、半透明ポリゴンと不透明ポリゴンとを混在させても、より手前側のポリゴンから順に、半透明と不透明を区別なく処理することができる。
【0036】上記したワークデータXn は、物理的には、n枚のポリゴンを重ねた時の透明度(1−α)の累積乗算された値を意味する。即ち、上記の式(6)から明らかな通り、ワークデータXn は、各ポリゴンの透明度(1−α)が全て乗算された値である。つまり、透明度の高いポリゴン、例えば(1−α)が1に近いポリゴンが重ねられる場合に、その奥側に位置するn枚目のポリゴンの色データTn を追加する場合は、それより手前のn−1枚の重なったポリゴンの透明度(1−α)の累積乗算値に応じて、画像データFBn-1 に影響を与える。そして、望ましくは、n枚目のポリゴンの不透明度αn に応じた色データTn が、加えられる。n枚目のポリゴン自身が透明なポリゴン(1−αn =1)の場合は、その色データTn は加えられるべきではないからである。
【0037】以上の様に、上記の式(7)
FBn =FBn-1 +Tn αn n-1によるレンダリング処理は、第1に、処理しようとする奥側のポリゴンの色データTn を、それより手前のn−1枚のポリゴンの透明度を累積した値Xn-1 に応じて、手前のn−1枚のポリゴンが重ねられた画像データFBn-1 に加える処理である。
【0038】第2に、上記の式(7)によるレンダリング処理は、処理中のポリゴンの透明度に応じて、その色データTn を加えることを行う。即ち、処理中のポリゴンの不透明度αn に応じた色データTn の成分を、それより手前のn−1枚のポリゴンの透明度の累積された値Xn-1 に応じて、n−1枚重なったポリゴンの画像データFBn-1 に加えることを意味する。
【0039】そして、透明度の累積値Xn の初期値X0 =1の意味は、最初のポリゴンより手前には、別のポリゴンが存在しないので、透明度は最大であることを意味する。従って、最初のポリゴンの色データT1 は、そのまま画像データFB1 として利用される。但し、最初のポリゴン自身の不透明度α1 に応じた色データT1 の成分が画像データFB1 として利用される。尚、画像データFBn の初期値FB0 =0の意味は、色の輝度値が0であることを意味し、何ら色の成分がない真っ黒の状態を意味する。画像データの初期値FB0 は、必ずしも真っ黒である必要はない。
【0040】以上、先願で提案した画像処理方法を説明した。この画像処理は、次の演算式に従う。
【0041】
FBn =FBn-1 +Tn αn n-1 (7)
n =Xn-1 (1−αn ) (6)
そこで、上記の(7)式を書き換えると、 FBn =Σ(Tn αn n-1 ) (8)
とすることができる。これは、表示画面内の深さ方向において、各ポリゴンの不透明度αnと、ポリゴン色データTnと、ワークデータXn-1との積を、それぞれ加算した累積値である。
【0042】ここで、ポリゴンの色データTnは、ポリゴン自体の色やテクスチャカラーに環境光等の光源の色の影響を反映した色データである。この点をより詳細に説明すると、次の通りである。画像データは、ポリゴンの頂点データに対して与えられるポリゴンの自の色PCOL(以下ポリゴン色データPCOL)と、テクスチャ色データTXとから得られる色データTXCO(以下ピクセル色データTXCO)に、光源からの色データINTの影響を加えて求められる。
【0043】光源の色データについては、例えば、黄色い光源からのディフューズド光による影響は、所定の強度を持つ黄色の色データINTで表すことができる。或いは、周囲の赤い壁紙からのアンビエント光による影響は、所定の強度を持つ赤色の色データINTで表すことができる。そして、ポリゴンの銀色のメタル生地によるスペキュラー光による影響は、所定の強度を持つ銀色の色データINTで表すこともできる。従って、それらの光源からの色データとして、ここでは、光源色データINTと総称する。その結果、式(7)の色データTnは、光源の影響も加えて、Tn=TXCOn・INTnと置き換えることができる。即ち、 Xn =Xn-1・(1−αn ) (6)
FBn =FBn-1 +INTn・TXCOn ・αn n-1 (7)
FBn =Σ(INTn・TXCOn ・αn n-1 ) (8)
上記の演算式から明らかな通り、画像データFBnは、各ポリゴンについて、1つ手前のポリゴンに対する透明度(1−αn)の積であるワークデータXn-1と、当該ポリゴンの不透明度αnと、光源色データINTnと、ピクセル色データTXCOnとを求めて、逐次フレームバッファ内に格納される画像データFBに加算していくことで、求めることができる。しかも、各ポリゴンにおけるINTn・TXCOn ・αn n-1を求める演算は、ワークデータが求まっていれば、他の重なり合うポリゴンの演算結果には依存しない。従って、重なり合うポリゴンに対して、上記のポリゴン毎のINTn・TXCOn ・αn n-1を求める演算は、順不同で行うことができる。
【0044】ゲームやシュミレーションにおいて、リアルタイムに画像処理を行う場合、上記の光源色データINTnを求める演算処理は、場合によっては多くの光源に対する演算処理を行う必要があり、非常に工数が高い演算処理になる。同様に、ポリゴンの自の色であるポリゴン色データPCOLとテクスチャ色データTXとから得られるピクセル色データTXCOを求めるテクスチャ処理においても、テクスチャがないポリゴンや、複数のテクスチャデータを有するポリゴンや、更に、細分値LODに対応して与えられる複数のテクスチャから、それらの中間の細分値に対応するテクスチャを求めるトライリニアフィルタ処理が必要なポリゴンなどが存在し、それらのポリゴンのテクスチャ処理は、非常に工数がかかる演算処理が必要な場合がある。
【0045】そこで、本発明の好ましい実施の形態例では、光源計算処理やテクスチャ処理を、複数のポリゴンに対して並列に処理を行うようにする。その為に、画像処理装置内に、光源計算回路やテクスチャ処理回路を複数個設ける。そして、複数のポリゴンの演算処理を、空いている処理回路に順次を分配することで処理効率を上げる。これにより、全体の画像処理時間を短くすることができる。
【0046】[画像処理装置]図3は、本発明の実施の形態例におけるレンダリング処理プロセッサを有するゲーム装置の構成図である。レンダリング処理プロセッサ20は、画像処理装置であり、ゲーム装置やシュミレーション装置内に設けられる。図3に示されたゲーム装置には、メインCPU10と、ゲームプログラムが格納されたプログラムROMと、ゲームプログラム実行時などに利用されるワークRAM14と、レンダリング処理プロセッサ20とが、内部バス16を介して接続される。
【0047】メインCPU10は、図示しないオペレータからの操作入力に応答して、ゲームプログラムを実行し、必要な画像処理を行う。図3の例では、オブジェクトの移動のためのマトリクス演算や透視変換などのジオメトリ処理は、メインCPUで行われているものとする。もちろん、このジオメトリ処理は、別途設けた専用の処理プロセッサによって行われても良い。
【0048】レンダリング処理プロセッサ20は、メインCPU10により発行されるレンダリング処理を指示する描画コマンドを格納する描画コマンドメモリ22と、その描画コマンドを解釈するセットアップブロック24とを有する。セットアップブロック24は、表示画面内にあるポリゴンデータと、光源データとを、ソーターユニット26に与える。
【0049】ポリゴンデータは、頂点データを有し、各頂点データは、例えば、表示画面内の二次元座標データ(x、y)、奥行き(深さ)を示すZ値、色データPCOL、不透明度(または透明度)αp、法線ベクトルデータ(Nx,Ny,Nz)、テクスチャ座標(Tx,Ty)などを含む。
【0050】ソータユニット26は、供給されるポリゴンデータの視点からの距離であるZ値(深さの値)に従って、ポリゴンを深さ方向に並び替えて、ユニット内のメモリに記録する。従って、ソータユニット26内には、フレーム内の複数のポリゴンについてのデータを一旦保存する。そして、ソータユニット26は、表示画面のピクセル毎に、深さ方向の順番で、ポリゴンの不透明度データαpをブレンド処理ユニット30に供給する。ブレンド処理ユニットでは、テクスチャの不透明度αtを使用するポリゴンの場合は、ポリゴンの頂点データから得られる不透明度αpと、テクスチャの不透明度αtとを合成して求めたピクセル不透明度αnに従って、ワークデータXnを求める処理を行う。上記のテクスチャの不透明度αtをテクスチャメモリ28から読み出すために、ピクセルのテクスチャ座標をソーターユニット26から供給される必要がある。
【0051】また、テクスチャの不透明度αtを使用しないポリゴンの場合は、ポリゴンの頂点データから得られる不透明度αpをピクセルの不透明度αnとして、ワークデータXnを求める。ワークデータを求める処理は、具体的には、上記式(6)のXn =Xn-1 (1−αn )に従う演算を行う処理である。
【0052】尚、テクスチャメモリ28には、テクスチャの不透明度αtと、テクスチャ色データTとが格納される。このテクスチャメモリ28には、テクスチャデータがプログラムROM12から直接ダウンロードされ、保存される。また、このテクスチャメモリ28は、ワークRAM14内の記憶領域に設けることもできる。
【0053】ブレンド処理ユニット30は、上記の通り、ピクセル毎に且つ深さ方向のワークデータXnと不透明度αnとを生成し、ピクセルワークメモリユニット36に供給する。ワークデータXnと不透明度αnとは、ピクセルワークメモリユニット36内のピクセルワークメモリ内に記録される。
【0054】テクスチャ処理ユニット32は、ソータユニット26から、ピクセル毎に、テクスチャ座標(Tx,Ty)と、ポリゴン色データPCOLと、三次元座標(X,Y,Z)値などを供給され、テクスチャ座標に従って、テクスチャメモリ28からテクスチャ色データTを読み出し、ポリゴンの地の色であるポリゴン色データPCOLとテクスチャ色データTとを合成し、ピクセル色データTXCOnを求める処理を行う。この処理は、必ずしも表示画面の深さ方向の順に行う必要はない。そして、このテクスチャ処理ユニット内には、処理回路が複数設けられ、複数のピクセルに対する処理が、順次空いている処理回路に分配されて行われる。その結果、ピクセル色データTXCOnは、順不同で生成される。このピクセル色データTXCOnもピクセルワークメモリユニット36内のメモリに記録される。
【0055】光源計算ユニット34は、ソータユニット26から、光源データと共に、ピクセル毎の三次元座標値(X,Y,Z)と法線ベクトル(Nx,Ny,Nz)を供給される。そして、光源からの色データINTnが求められる。この処理も、表示画面の深さ方向の順に行う必要はない。そして、この光源計算ユニット内には、処理回路が複数設けられ、複数のピクセルに対する処理が、順次空いている処理回路に分配されて行われる。その結果、ピクセルの光源色データINTnは、順不同で生成される。この光源色データINTnもピクセルワークメモリユニット36内のメモリに記録される。
【0056】光源色データの生成は、例えばディフーズ光の場合は、光源の輝度ベクトルとピクセルの法線ベクトルの内積値を、光源の色データに乗算して求められる。
【0057】ピクセルワークメモリユニット36内に、深さ方向でn番目のピクセルについて、上記のワークデータXn、不透明度αn、ピクセル色データTXCOn、及び光源色データINTnが全て格納されると、それらのデータがカラー合成ユニット38に供給される。カラー合成ユニット38では、それらのデータを乗算して、フレームバッファ40内の画像データFBに加算し、新たに求められた画像データFBをフレームバッファ40内に上書きする。この画像データFBは、ピクセル色データに対して光源処理され且つブレンド処理された色データである。
【0058】全てのピクセルについて、上記のカラー合成処理が行われると、フレームバッファ40内には、1フレームの表示に使用される画像データFBが格納された状態になる。そこで、このフレームバッファ40内の画像データFBが、表示装置44に必要な形態の画像データに変換され、表示装置44に供給される。
【0059】以上が、レンダリング処理プロセッサ20内の処理の流れである。ここでは、ブレンド処理ユニット30のみが、深さ方向の順番でピクセルのデータを受け取り、ワークデータXnを求める処理を順次行う。また、テクスチャ処理ユニット32や光源計算ユニット34では、それぞれの演算処理が非常に重たいので、複数の処理回路が設けられ、並列に処理される。しかも、複数の処理回路に対して、空いている処理回路に順次処理が分配されることで、全体の処理スピードを上げることができる。但し、かかる処理をしたことにより、ピクセル色データTXCOnや光源色データINTnの生成処理が、深さ方向において前後して完了する。しかし、カラー合成ユニット38は、かかるデータ生成の処理が完了したピクセルから順にカラー合成処理を行うことができるので、何ら支障はない。
【0060】次に、ソーターユニット26、ブレンド処理ユニット30、テクスチャ処理ユニット32、光源計算ユニット34、ピクセルワークメモリユニット36及びカラー合成ユニット38の構成を説明する。
【0061】図4は、ソーターユニット26の構成図である。ソータユニット26は、頂点データからなるポリゴンデータPG0〜PGjを供給され、各ポリゴン内のピクセルデータを生成するピクセル生成部50と、ピクセル生成部50が生成したピクセルデータPX0,0〜PXi,jを、各ピクセル毎に深さ方向の順番で並び替えて、蓄積するピクセルソータ52,54,56とを有する。
【0062】ピクセルソータは、表示画面の画素(ピクセル)の数だけ設けられることが望ましい。しかしながら、画面の画素数は、例えば640×480等と膨大になるので、画面の一部分、例えば8×8=64画素分のピクセルソータを設けるのが、現実的である。その場合は、i=64画素となる。或いは極端な例では、1画素だけのピクセルソータであっても良い。
【0063】各ピクセルデータPXm,nは、図4に示される通り、例えば座標値(X,Y,Z)値、ポリゴンの地の色であるポリゴン色データPCOL、ポリゴンの頂点データから補間演算により求められる不透明度αp、テクスチャ座標(Tx,Ty)、及び法線ベクトル(Nx,Ny,Nz)を有する。頂点データからなるポリゴンデータから、かかるピクセルデータを生成するアルゴリズムは、種々の方法が提案されている。最も一般的には、ラスタスキャン法が利用される。ラスタスキャン法によれば、ポリゴン内のX軸とY軸方向に走査される各ピクセルデータが、ポリゴンの頂点データを補間演算することにより求められる。また、フラクタル法を利用してピクセルデータを求めることもできる。フラクタル法については、本出願人が別途出願した特開平11-144074号公報に開示されている。
【0064】図4のソーターユニットによれば、ピクセル毎のピクセルデータPXm,nが、Z値に基づいて、深さ方向に順番に並べられる。
【0065】図5は、別のソーターユニットの構成図である。このソーターユニット26は、ポリゴンデータPG0〜PGjを、Z値に従ってソートし、深さ方向に順番に並び替えて、ポリゴンソーター58に格納する。そして、その並び替えられたポリゴンデータが、より手前側から深さ方向に沿って順に、ピクセル生成部60に供給される。ピクセル生成部60は、ポリゴンデータから、上記したラスタスキャン法やフラクタル法によりポリゴン内のピクセルデータPX0,0〜PXi,jを生成する。従って、ピクセルデータは、より手前側から深さ方向にそって順番に、ブレンド処理ユニット30、テクスチャ処理ユニット32、光源計算ユニット34に供給される。
【0066】図6は、ブレンド処理ユニットの構成図である。ここに示されたブレンド処理ユニット30には、ポリゴンの頂点データから求められた不透明度(透明度)αpと、テクスチャ座標とが、深さ方向に沿って順番に供給される。例えば、最も手前側にソートされたピクセルデータPXm,0(m=0〜i)の不透明度データαpが供給され、そのピクセルに対応するテクスチャの不透明度データαtがテクスチャメモリ28から読み出される。透明度処理回路301は、例えば、これらの不透明度データの積算や、その他の所定の処理により合成したピクセルの不透明度αnを求める。テクスチャの不透明度データが存在しない場合は、ポリゴンの不透明度データαpが、そのまま、ピクセルの不透明度αnとなる。
【0067】ブレンド処理ユニット30は、更に、乗算器302と減算器303とXデータワークメモリ304とを有し、Xデータワークメモリ304から1つ手前のピクセルのワークデータXn-1が読み出されると共に、ピクセルワークメモリユニット36内の対応するピクセルのn番目の領域に格納される。そして、読み出したワークデータXn-1と不透明度αnとから、当該処理中のn番目のピクセルのワークデータXn=Xn-1(1−αn)が求められる。求められたワークデータXnは、ワークデータメモリ304内に更新される。また、不透明度αnは、ピクセルワークメモリユニット36内の対応するピクセルのn番目の領域に格納される。
【0068】図17は、ブレンド処理ユニット30の変形例を示す図である。この例は、図6のブレンド処理ユニット30に比較して、ワークデータXn-1と不透明度αnとの乗算を行う乗算器305が追加されている点で異なる。従って、乗算器305で求められた積Xn-1・αnが、ピクセルワークメモリユニット36内の対応するピクセルのn番目の領域に格納される。かかる乗算器305を設けることにより、後述するピクセルワークメモリユニットとカラー合成ユニットの構成を簡略化することができる。
【0069】このブレンド処理ユニット30では、上記した通り、最も手前にあるピクセルについてのワークデータXnが、不透明度αnと1つ前のワークデータXn-1とから順番に求められる。この演算処理は、乗算器と減算器などにより行われ比較的軽い処理であるので、全ての深さ方向のピクセルに対する演算は、比較的短時間で完了することができる。
【0070】ブレンド処理ユニット30は、必要であれば、複数ユニット設けて、各ユニットを表示画面(スクリーン)座標に対応付けて並列化することができる。かかる構成の場合でも、各処理ユニットは、対応するピクセルについて手前側から深さ方向に向かって順番にワークデータを求める演算を行う。
【0071】図7は、光源計算ユニットの構成図である。光源計算ユニット34は、光源計算を行う複数の光源計算回路342,343,344を有する。図7の例では、3つの光源計算回路が設けられ、光源計算を並列に処理することができる。光源計算ユニット34は、更に、ソーターユニットからのピクセルの光源データを供給され、空き状態の光源計算回路342,343,344に順次光源計算処理を分配する演算指示分配回路341が設けられる。更に、光源計算ユニット34は、光源計算回路が生成した光源色データINTを、生成順にピクセルワークメモリユニット36に供給する演算結果出力回路345が設けられる。
【0072】図8は、光源計算回路の動作タイミングチャート図である。ここでは、6つのピクセルデータPX1〜PX6に対する光源計算回路の動作のタイミングが示される。図8の例では、ピクセルデータPX1に対する光源計算処理に6クロックを要するとする。同様に、ピクセルデータPX2〜PX6の処理クロック数が、2,3,7,4,2と仮定する。そして、ソーターユニット26から、光源計算に必要なピクセルデータとして、光源データと座標値(X,Y,Z)と法線ベクトル(Nx,Ny,Nz)とが順番に供給されたとする。
【0073】上記の場合、演算指示分配回路341は、空き状態にある光源計算回路に順次その処理を分配する。図8に示される通り、最初にクロック1のサイクルでピクセルデータPX1に対する演算処理が、計算回路1に割り当てられる。ここでは、処理を割り当てるために、ピクセルデータをユニット内のバス346を経由して供給するので、1クロックサイクルを要するとする。そして、ピクセルデータPX1に対する計算は、計算回路1で6クロックサイクルを要して完了する。
【0074】次に供給されたピクセルデータPX2の処理は、光源計算回路2に割り当てられる。バス346を利用する割り当て処理は、ピクセルデータPX1と重なることができないので、クロック2のサイクルで割り当てが行われ、計算回路2で2サイクルを要して計算が完了する。また、次のピクセルデータPX3は、光源計算回路3に割り当てられる。そして、3クロックサイクルで処理が完了する。
【0075】その後供給されるピクセルデータPX4の処理は、クロック4で空き状態にある光源計算回路2にアサインされる。そして、7クロックサイクルで処理が完了する。同様に、ピクセルデータPX5は、クロック6で空き状態になる光源計算回路3に供給される。ピクセルデータPX6は、クロック7で空き状態になる光源計算回路1に供給される。
【0076】図8から明らかな通り、6つのピクセルデータに対する光源計算は、クロック10で全ての計算が終了する。このピクセルデータに対する光源計算をシリアルに実行した場合は、合計で、6+2+3+7+4+2=24クロックサイクルを要する。それに比べて、2倍以上早く処理を完了することができる。これは、複数の光源計算回路を設け、複数のピクセルデータに対する光源計算を、並列に且つ空き状態の計算回路に順次処理を分配したことで、実現できたのである。但し、それぞれのピクセルデータに対する計算結果は、順不同で完了する。
【0077】図9は、テクスチャ処理ユニットの構成図である。この構成は、光源計算ユニットと同等であり、複数のテクスチャ処理回路322,323,324が設けられ、光源計算ユニットの場合と同様に、空き状態にある処理回路に順次テクスチャ処理が割り当てられる。演算指示分配回路321は、テクスチャ処理に必要なピクセルデータを、3つの処理回路に分配する。各テクスチャ処理回路は、テクスチャ座標(Tx,Ty)に従ってテクスチャメモリ28からテクスチャ色データTを読み出し、供給されたポリゴンの地肌のポリゴン色データPCOLと合成して、ピクセル色データTXCOnを生成する。
【0078】このテクスチャ処理は、ピクセル毎に処理サイクルにバラツキがあるので、複数の処理回路322,323,324のうち空き状態にある回路が、複数のピクセルに対するテクスチャ処理を行う。それらの動作タイミングに関しては、光源計算において図8で説明したアルゴリズムと同じである。従って、ピクセル色データTXCOnも、順不同で生成され、ピクセルワークメモリユニット36に格納される。
【0079】上記の光源計算ユニット34やテクスチャ処理ユニット32には、共通のポリゴンに対応するピクセルデータが連続して供給されることが望ましい。同じポリゴンに対するピクセルデータであれば、共通の処理が含まれる場合があり、それぞれのユニットの処理効率を高めることができるからである。
【0080】図10は、ピクセルワークメモリユニットの構成図である。ピクセルワークメモリユニット36は、ブレンド処理ユニット30から供給されるワークデータXn、不透明度αn、テクスチャ処理ユニット32から供給されるポリゴン内のピクセル色データTXCOn、光源計算ユニット34から供給される光源色データINTnとを、ピクセル毎に記録するピクセルワークメモリ362を有する。図10には、ピクセルワークメモリ362が、演算済みのピクセルデータEPX0,0〜EPXi,jを格納するマトリクス状のメモリ領域で構成されることが示されている。ピクセルデータEPXm,nは、図10中に示される通り、上記のワークデータXn-1、不透明度αn、ピクセル色データTXCOn、光源色データINTnと、それらのデータが格納されたことを示す4つのフラグF1〜F4を有する。ピクセルデータEPXm,nの、mは表示画面上のピクセルを区別し、nは表示画面の深さ方向のピクセルを区別する。但し、nは必ずしも深さ方向の順番である必要はない。
【0081】ピクセルワークメモリユニット36は、更に、供給される演算済みのピクセルデータを、それぞれのメモリ領域に記録するピクセルワークメモリコントローラ361を有する。ピクセルワークメモリコントローラ361は、演算済みのピクセルデータが格納されると、格納されたデータに対応するフラグF1〜F4を、未格納状態の0から、格納状態の1に変更する。更に、ピクセルワークメモリコントローラ361は、それらの4つのフラグが全て1になったピクセルデータを、順次、カラー合成ユニット38に供給する。
【0082】ブレンド処理ユニット30は、ワークデータXn、不透明度αnを、手前側から深さ方向の順で求め、ピクセルワークメモリユニット36に供給する。従って、ピクセルデータの上記2つのデータに対応するフラグF1、F2は、最も手前から深さ方向の順番に、即ちEPXm,0、EPXm,1、EPXm,2 ...EPXm,jの順番で、格納状態に変更される。また、ピクセル色データTXCOn及び光源色データINTnは、それぞれテクスチャ処理ユニット32と光源計算ユニット34で求められるが、複数の回路のうち、空き状態にある回路を順次利用して求められるので、生成されるタイミングは必ずしも深さ方向の順番にはならない。その結果、4つのデータが全てピクセルワークメモリ362に格納されるタイミングも、ピクセルによって順不同となる。
【0083】そこで、ピクセルワークメモリコントローラ361は、各ピクセルデータの4つのフラグを監視し、すべて格納済みになったピクセルデータEPXから、カラー合成ユニット38に供給される。
【0084】図11は、カラー合成ユニットの構成図である。カラー合成器38は、乗算器381と加算器382とを有する。乗算器381は、ピクセルワークメモリコントローラ361から供給されるピクセルデータEPXm,nのワークデータXn-1、不透明度αn、ピクセル色データTXCOn、光源色データINTnを乗算する。加算器382は、フレームバッファ40内の処理中のピクセルに対応する画像データFBと、上記乗算結果とを加算し、新たに生成された画像データFBを、フレームバッファ40の同じピクセル領域に格納する。この演算処理は、必ずしも深さ方向に順番に行われるわけではなく、順不同で行われる。カラー合成ユニット38は、同じピクセルにおいて、深さ方向の全てのピクセルデータEPXm,nについて上記演算を行うことにより、表示用画像データFBを、フレームバッファ40内に格納することができる。
【0085】図16に示したブレンド処理ユニットの変形例が利用される場合は、カラー合成ユニット38の乗算器381には、ワークデータXnと不透明度αnとの乗算値が供給される。従って、その分、乗算器381の構成を簡略化することができる。
【0086】図3に戻り、全てのピクセルに対する最終的な画像データFBが、フレームバッファ40に格納されると、その画像データFBが表示制御部42を経由して、表示装置44に供給され、表示される。
【0087】図12は、上記したレンダリング処理プロセッサの処理フローチャート図である。セットアップブロック24が、描画コマンドを解読して、ポリゴンデータをソーターユニット26に供給する(S10)。ソーターユニット26は、ポリゴンをピクセルに分解して、ピクセルソータ52,54,56に供給する(S12)。ピクセルソータは、視点からの距離(深さ、Z値)に応じて、ピクセルデータを並び替える(S14)。その後、ソータユニット26は、手前のピクセルから順に、ピクセルデータを、ブレンド処理ユニット30、テクスチャ処理ユニット32、光源計算ユニット34に供給する(S16)。
【0088】各処理ユニットでは、上記した通り、ワークデータXnの生成(S18)、ピクセル色データTXCOnの生成(S20)、及び光源色データINTnの生成(S22)を行う。ブレンド処理ユニット30は、手前のピクセルから順番にワークデータを求める必要があるが、テクスチャ処理ユニット32や光源計算ユニット34は、複数の処理回路の空き状態の回路を順次利用して、順不同でデータを生成する。ブレンド処理ユニット30は、手前のピクセルから順番にワークデータを求めるが、深さ方向において、不透明度αnが1である不透明ピクセルまでワークデータを求めたら、それ以降のワークデータXnは0であるので、ブレンド処理は終了する。従って、ブレンド処理部は、必ずしも深さ方向の全てのピクセルに対して処理を繰り返すとは限らない。
【0089】そして、各ピクセルのデータの生成が完了すると、カラー合成ユニットは、演算済みのピクセルデータから、各ピクセルの光源処理とブレンド処理された色データINTn・TXCOn ・αn ・Xn-1を演算で求め、フレームバッファ内の画像データに加算して、再度格納する(S24)。
【0090】上記の工程S16〜S24が、各ピクセルの深さ方向の全てのピクセルデータについて終了し、且つ全てのピクセルについて終了するまで、繰り返される。そして、全てのピクセルについて処理が終了すると、フレームバッファ内に格納された画像データにより、表示が行われる(S26)。工程S10〜S26が、フレーム毎に繰り返される。
【0091】[汎用的なブレンド処理への適用]上記の実施の形態例では、半透明ポリゴンの色とその奥側に位置するポリゴンの色とを不透明度αで混合ブレンディング処理する場合に、手前側のポリゴンから順番に処理する例を説明した。しかしながら、一般的なコンピュータを利用したグラフィックライブラリには、例えばオープンGL(Graphic Library)で規格化されているように、多用なブレンディング処理ができるようになっている。その一般化されたブレンディング処理は、以前処理して求めたフレームバッファ内の色データFBm-1と今回処理中のピクセルの色データPIXmとを、それぞれソース混合計数SRmとディスティネーション混合計数DEmとでブレンディングすることにある。即ち、演算式で表すと、今回の処理で求められてフレームバッファ内に格納される色データFBmは、 FBm=PIXm*DEm+FBm-1*SRm (8)
となる。但し、mは整数であり、小さいほど先に処理される(*は積を表す。以下同様)。
【0092】上記のブレンディング演算式において、ソース混合計数SRmとディスティネーション混合計数DEmとは、次の11種類のうちから適宜選択される。
【0093】0、FBn-1、PIXn、PIXn*α、FBn-1*α、1、1−FBn-1、1−PIXn、1−PIXn*α、1−FBn-1*α、(FB1-n*α、1−PIXn*α)のうちいずれか小さい方上記の式(8)から理解される通り、一般的なブレンディング処理は、描画前のフレームバッファの色データを必要とし、また演算結果も描画順序に依存している。従って、一般的なコンピュータ・グラフィックにおいては、ブレンディング処理の必要なポリゴンは奥側より順に描画するのが通例である。
【0094】図13は、半透明ポリゴンの混合ブレンディング処理を示す図である。手前側の半透明ポリゴンPGmと、奥側のポリゴンPGm-1が一部重なっていて、手前側の半透明ポリゴンPGmの不透明度がαの場合である。この場合は、従来例で説明した通り、奥側のポリゴンPGm-1の色データFBm-1が先に求められ、それに手前側の半透明ポリゴンPGmの色データが、不透明度αmと透明度(1−αm)によって、混合ブレンディング処理される。即ち、その演算式は、図示される通り、 FBm=PIXm*αm+FBm-1*(1−αm) (9)
即ち、上記式(9)は、一般式(8)において、ディスティネーション混合係数DEm=αmで、ソース混合係数SRm=(1−αm)にした場合に対応する。
【0095】図14は、補助フィルタ処理の具体例を示す図である。汎用的なグラフィックライブラリには、ブレンド処理として補助フィルタ処理がある。この処理は、図13の半透明ポリゴンの混合ブレンディング処理と異なり、奥側のポリゴンPGm-1の色データがその手前側のポリゴンPGmの混合係数αmにかかわらず、そのまま減衰することなく残される処理である。
【0096】例えば、手前側のポリゴンPGmが炎に対応するポリゴンであり、奥側のポリゴンPGm-1が所定の不透明ポリゴンの場合を想定する。この場合は、視点からは炎のポリゴンPGmを通して不透明ポリゴンPGm-1を見ていることになる。その場合は、炎ポリゴンPGmの色は加算されるが、奥側のポリゴンPGm-1の色データが減衰することはない。
【0097】その場合は、炎ポリゴンPGmの色データPIXmに対してディスティネーション混合係数DEm=αm、ソース混合係数SRm=1にすることにより、上記の一般式(8)を利用することができる。その結果、補助フィルタ処理の演算式は、図示される通り、FBm=PIXm*αm+FBm-1*1 (10)
となる。即ち、前回の処理で求めたポリゴンPGm-1の色データFBm-1をそのまま残し、今回処理中のポリゴンPGmの色データPIXmに混合係数αm分だけ加算する処理である。
【0098】この補助フィルタ処理は、上記の炎ポリゴンの例以外に、例えば赤い光源からの光がポリゴンPGm-1に照射されている場合も、同様の処理が適用される。
【0099】図15は、更に、カラーフィルタ処理を示す図である。カラーフィルタ処理では、例えば、背景にあるポリゴンPGm-1の特定の色成分だけを抽出するために、手前側にそれ自身は色成分を持たないカラーフィルタポリゴンPGmを配置させる。そして、このブレンディング処理演算では、特定の色成分だけを抽出させるために、背景のポリゴンPGm-1の色データFBm-1にカラーフィルタポリゴンPGmの色抽出データPIXmを乗算する。
【0100】即ち、その演算式は、図示される通り、 FBm=PIXm*0+FBm-1*PIXm (11)
となる。この演算式は、一般式(8)に対して、カラーフィルタポリゴンPGmの色抽出データPIXmに対してディスティネーション混合係数DEm=0、前回求めた色データFBm-1に対してソース混合係数SRm=PIXmにすることにより得られる。
【0101】以上の通り、半透明ポリゴンの混合ブレンディング処理以外に、補色フィルタ処理やカラーフィルタ処理などの様々なブレンディング処理は、一般式(8)に、適宜選択したディスティネーション混合係数DEmとソース混合係数SRmと適用して演算処理することができる。通常のコンピュータ・グラフィック処理装置は、上記の一般式(8)に適用できるように構成され、その結果、ディスティネーション混合係数DEmとソース混合係数SRmとを適宜選択して行うことにより、様々なブレンディング処理が可能になる。
【0102】そこで、上記の一般的なブレンディング処理に対して、視点側から(手前側)ポリゴンを順番に処理することができる方法、処理装置について、以下に説明する。
【0103】図1の場合と同様に、4枚のポリゴンが手前側から重なっていると仮定する。その場合、一般式(8)に対して、m=1〜4により、次の4つの演算式が導かれる。
【0104】
FB1=PIX1*DE1+FB0*SR1 (21)
FB2=PIX2*DE2+FB1*SR2 (22)
FB3=PIX3*DE3+FB2*SR3 (23)
FB4=PIX4*DE4+FB3*SR4 (24)
ここで、留意すべき点は、上記ブレンディング処理は、奥側のポリゴンを先に処理してその色データがフレームバッファに記録されているので、mが大きいほど手前のポリゴンを意味し、mが小さいほど奥側のポリゴンを意味することである。
【0105】そこで、上記の(21)〜(24)について、式(5)(6)(7)で行ったように、最も手前のポリゴンの色データをFB4からD1に、最も奥側のポリゴンの色データをFB1からD4にそれぞれ置き換え、半透明ポリゴンの場合と同様に、処理中のピクセルの色データPIXをピクセル色データTXCOnと光源色データINTnの乗算値TXCOn*INTnに置き換えると、次の通りである。つまり、D4=FB1〜D1=FB4とし、PIX4=TXCO1*INT1〜PIX1=TXCO4*INT4すると、 D4=TXCO4*INT4*DE4+D5*SR4 (31)
3=TXCO3*INT3*DE3+D4*SR3 (32)
2=TXCO2*INT2*DE2+D3*SR2 (33)
1=TXCO1*INT1*DE1+D2*SR1 (34)
そこで、ワークデータXn(但しX0=1)を、 Xn=SRn*Xn-1=SRn*SRn-1*SRn-2*…*SR1 (35)
とすると、式(34)は、次の通り展開される。
【0106】D1=TXCO1*INT1*DE1*X0+TXCO2*INT2*DE2*X1+TXCO3*INT3*DE3*X2+TXCO4*INT4*DE4*X3であるから、各TXCOn*INTn*DEn*Xn-1に注目すると、 Dn=Dn-1+TXCOn*INTn*DEn*Xn-1 =Σ(TXCOn*INTn*DEn*Xn-1) (36)
と一般化することができる。この場合上記の置き換えにより、nが小さいほど手前のポリゴンを意味しているので、より手前のポリゴンから順番にブレンディング処理を行うことができることを意味している。即ち、より手前に位置するポリゴンの処理結果Dn-1を利用して、次の奥側に位置するポリゴンのデータDnを求めることができるのである。そして、上記の式(35)と(36)において、SRn=(1−αn)、DEn=αnと置き換え、更にポリゴンの色データDnをフレームバッファのデータFBnに置き換えると、半透明ポリゴンの処理で示した式(6)(7)と同じになることが理解される。
【0107】上記の式(35)によれば、ワークデータXnは、ソース混合係数SRnの累積値である。また、上記の式(36)によれば、視点からn枚目のポリゴンを処理した結果の色データDn(FBn)は、n枚目のポリゴンの色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn と、手前に位置するn−1枚のポリゴンのソース混合係数SR1〜SRn-1の累積乗算値(ワークデータ)Xn-1とに応じて処理し、全ての画像データDnを加算するレンダリング処理により求められる。しかも、ワークデータXnが所定の最低値よりも小さくなると、その後のポリゴンの処理を省略しても表示される色データに大きな影響を与えないことは、半透明ポリゴンのブレンド処理と同じである。
【0108】図16は、上記の汎用レンダリング処理を行う場合の、レンダリング処理プロセッサ内に設けられるブレンド処理ユニットの構成図である。上記の通り、汎用レンダリング処理に適用する場合は、ブレンド処理ユニット30が、ソース係数SRnを乗算したワークデータXnを、視点側から奥行き方向に沿って順に求める必要がある。その場合、ソース係数SRnは、ブレンディング処理の種類によって、不透明度αnを使用する場合や、テクスチャ色データTnを使用する場合に、それぞれ区別して処理しなければならない。
【0109】図16に示したブレンド処理ユニット30は、ソース、ディスティネーション係数生成回路301と、乗算器302と、Xデータワークメモリ304を有する。係数生成回路301は、テクスチャメモリ28A、28Bから、テクスチャの不透明度αtとテクスチャの色データTを読み出すことができる。また、係数生成回路301に、ソーターユニットから、ピクセルの不透明度αpとテクスチャ座標(Tx,Ty)が供給される。
【0110】ブレンディング処理の種類に応じて、係数生成回路301は、ソース混合係数SRnとして、1−αn、1、Tnをそれぞれ生成し、乗算器302に供給する。乗算器302は、そのソース混合係数SRnをXデータワークメモリ304から読み出されたワークデータXn-1と乗算する。また、係数生成回路301は、ディスティネーション混合係数DEnも同時に出力し、ピクセルワークメモリ36に供給し、格納する。更に、Xデータワークメモリ304から読み出されたワークデータXn-1も、ピクセルワークメモリ36に供給され、格納される。上記の3つのブレンディング処理では、ディスティネーション混合係数DEnは、不透明度αnか、0のいずれかである。
【0111】即ち、ブレンド処理ユニット30では、次の様に混合係数を選択することで、上記した3つの処理を行うことができる。
【0112】
半透明ポリゴンの混合ブレンディング処理:DEn=αn、SRn=1−αn 補助フィルタ処理 :DEn=αn、SRn=1 カラーフィルタ処理 :DEn=0 、SRn=Tn上記の例以外にも、種々の混合係数を選択することができる。例えば、0、Tn*αn、1、1−Tn、1−Tn*αn等を適宜選択することができる。但し、データFBn-1、即ち、後で処理して求められる色データDn+1を含む混合係数を選択することはできない。
【0113】図18は、ブレンド処理ユニットの変形例を示す図である。図16に比較して、図18の変形例は、更にディスティネーション係数DEnとXワークデータXn-1とを乗算する乗算器305を有する。そして、この乗算器305の乗算値Xn-1*DEnが、ピクセルワークメモリユニット36に格納される。かかるブレンド処理ユニットを利用することで、カラー合成ユニットの乗算器381の構成を簡略化することができる。
【0114】テクスチャ処理ユニット32、光源計算ユニット34の構成は、汎用ブレンディング処理の場合でも前述と同じである。即ち、比較的大きな処理工数を必要とするピクセル色データTXCOnの生成(テクスチャ処理)や、光源色データを求める光源計算は、並列回路により順不同で求め、逐次ピクセルワークメモリユニット36に格納する。そして、ピクセルデータの処理が完了したピクセルから、カラー合成ユニット38により合成処理が行われる。
【0115】カラー合成ユニット38では、一つ手前のワークデータXn-1、ディスティネーション混合係数DEn、ピクセルの色データTXCOn及び光源色データINTnが、乗算器381で乗算され、フレームバッファ40内の画像データFBに加算され、フレームバッファ40に再書き込みされる。
【0116】図16に示したブレンド処理ユニット30は、カラーフィルタ処理の場合に、ソース混合係数SRnとして、テクスチャの色データTをそのまま利用した。しかしながら、より厳密にカラーフィルタの色データを求めるためには、テクスチャ処理ユニット32により生成されるピクセル色データTXCOnと、光源計算ユニット34により生成される光源色データINTnとを乗算して光源処理する必要がある。従って、その光源処理されたピクセル色データをブレンド処理ユニット30に供給してソース混合係数として利用する必要がある。その為に、カラーフィルタ処理において、ブレンド処理ユニット30によるワークデータの生成処理が、しばらく停止する必要がある。そして、それぞれ生成されてピクセルワークメモリに記録されたピクセルの色データTXCOnと光源色データINTnを、ブレンディング処理ユニット30に供給しながら、ワークデータXnを生成する。
【0117】上記の処理は、カラーフィルタ処理の場合に限定されるので、全体のレンダリング処理に与える影響は、それほど大きくない。
【0118】以上の実施の形態例において、レンダリング処理プロセッサ20内のブレンド処理ユニット30、テクスチャ処理ユニット32、及び光源計算ユニット34は、それぞれマイクロコンピュータによって実現されても良い。レンダリング処理プロセッサ20が、1チップのプロセッサで実現される場合は、それらの処理ユニットとしてマイクロコンピュータの構成を有するマクロ回路が埋め込まれる。その場合、テクスチャ処理ユニット32、光源計算ユニット34は、複数のマイクロコンピュータを有し、それぞれの処理をプログラムを実行することにより行う。複数ユニット設けられたマイクロコンピュータは、空き状態になりしだい、テクスチャ処理と光源計算が分配されるので、各ピクセルの処理時間が異なっても、全体の処理時間を短くすることができる。
【0119】以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【0120】
【発明の効果】以上説明した通り、本発明によれば、半透明ポリゴンの画像処理において、表示画面の視点側のポリゴンから奥行き方向に沿って順に処理するアルゴリズムを採用することで、奥行き方向について順不同でカラー合成処理を行うことができる。その結果、より高速に処理可能なレンダリングプロセッサを実現することができる。
【0121】また、本発明によれば、一般的なブレンディング処理を行うことができる汎用レンダリングプロセッサにおいても、同様により高速に処理する構成を実現することができる。
【図面の簡単な説明】
【図1】半透明ポリゴンの重なり例を説明する図である。
【図2】本発明及び従来例のレンダリング処理を、図1の例に適用した時の演算式を示す図表である。
【図3】本発明の実施の形態例におけるレンダリング処理プロセッサを有するゲーム装置の構成図である。
【図4】ソーターユニットの構成図である。
【図5】別のソーターユニットの構成図である。
【図6】ブレンド処理ユニットの構成図である。
【図7】光源計算ユニットの構成図である。
【図8】光源計算回路の動作タイミングチャート図である。
【図9】テクスチャ処理ユニットの構成図である。
【図10】ピクセルワークメモリユニットの構成図である。
【図11】カラー合成ユニットの構成図である。
【図12】レンダリングプロセッサの処理フローチャート図である。
【図13】半透明ポリゴンの混合ブレンディング処理を示す図である。
【図14】補助フィルタ処理を示す図である。
【図15】カラーフィルタ処理を示す図である。
【図16】汎用レンダリング処理を行う場合のブレンド処理ユニットの構成図である。
【図17】ブレンド処理ユニットの変形例の構成図である。
【図18】汎用レンダリング処理を行う場合のブレンド処理ユニットの変形例の構成図である。
【符号の説明】
34 レンダラ、レンダリング処理部
342 Xバッファ、ワークデータバッファ
343 Dバッファ、画像データバッファ
n 色データ、テクスチャデータ
n 画像データ
αn 不透明度データ
P1〜P4 ポリゴン

【特許請求の範囲】
【請求項1】重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度(1−αn)と、光源色データINTnが与えられ、前記画像処理装置は、重なり合うピクセルの前記透明度(1−αn)の乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置。
【請求項2】請求項1において、更に、フレーム内の複数のポリゴンデータまたはそのピクセルデータを、前記表示画面内の手前側から深さ方向に順番に並び替えるソーターユニットを有し、当該ソーターユニットが、光源計算ユニット及びテクスチャ処理ユニットに、前記ピクセルデータを供給し、前記ブレンド処理ユニットに前記ピクセルデータを手前側から深さ方向の順に供給することを特徴とする画像処理装置。
【請求項3】請求項1において、前記カラー合成処理は、処理中のピクセルのピクセル色データTXCOn、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Xn-1との乗算値を求め、それらを累積する処理であることを特徴とする画像処理装置。
【請求項4】請求項3において、前記カラー合成処理により求められた累積値が、前記表示用画像データとして使用されることを特徴とする画像処理装置。
【請求項5】請求項1において、更に、深さ方向のピクセルの前記乗算値Xn、ピクセル色データTXCOn、光源色データINTn、不透明度αnのデータを記録するピクセルワークメモリユニットを有し、前記カラー合成ユニットは、該ピクセルワークメモリユニットに上記データが全て記録されたピクセルについて、前記カラー合成処理を行うことを特徴とする画像処理装置。
【請求項6】請求項1において、前記ブレンド処理ユニットは、更に、前記ソーターユニットから供給されるポリゴンの不透明度または透明度と、テクスチャの不透明度または透明度から、ピクセルの不透明度αnまたは透明度(1−αn)を生成することを特徴とする画像処理装置。
【請求項7】請求項1において、前記テクスチャ処理ユニットは、更に、ポリゴン色データPCOLnと前記テクスチャ座標に対応するテクスチャの色データTとに従って、前記ピクセル色データTXCOnを求める複数のテクスチャ処理回路を有し、空き状態にあるテクスチャ処理回路が順次前記ピクセル色データを生成することを特徴とする画像処理装置。
【請求項8】請求項1において、前記光源計算ユニットは、光源色データINTnを求める複数の光源計算回路を有し、空き状態にある光源処理回路が順次前記光源色データを生成することを特徴とする画像処理装置。
【請求項9】重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理装置において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、前記画像処理装置は、重なり合うピクセルの前記ソース混合係数SRnの乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理ユニットと、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算ユニットと、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理ユニットと、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成ユニットとを有し、前記光源計算ユニット及びテクスチャ処理ユニットの少なくとも一方が、対応するデータ生成処理を並列に行い、前記カラー合成ユニットが、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理装置。
【請求項10】前記カラー合成処理は、処理中のピクセルのピクセル色データTXCOn、光源色データINTn、ディスティネーション混合係数DEn、及び、一つ手前側のピクセルの前記乗算値Xn-1との乗算値を求め、それらを累積する処理であり、当該累積値が前記表示用画像データとして使用されることを特徴とする画像処理装置。
【請求項11】重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理方法において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、不透明度αn または透明度(1−αn)と、光源色データINTnとが与えられ、前記画像処理方法は、重なり合うピクセルの前記透明度(1−αn)の乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理工程と、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算処理と、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向の各ピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理工程と、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、不透明度αn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成工程とを有し、前記光源計算工程及びテクスチャ処理工程の少なくとも一方で、対応するデータ生成処理を並列に行い、前記カラー合成工程で、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理方法。
【請求項12】重なり合う複数のポリゴンに対する画像処理を行って、表示用画像データを生成する画像処理方法において、表示画面内の手前側から深さ方向に順に並べた時のn番目のポリゴンに、ピクセル色データTXCOn と、光源色データINTnと、ディスティネーション混合係数DEn 及びソース混合係数SRn についてのデータが与えられ、前記画像処理方法は、重なり合うピクセルの前記ソース混合係数SRnの乗算値Xnを、前記手前側から深さ方向の順に求めるブレンド処理工程と、ピクセルの光源データに従って、深さ方向の各ピクセルに対する光源色データINTnを求める光源計算工程と、ポリゴン色データPCOLn及びテクスチャ座標に従って、前記深さ方向のピクセルに対するピクセル色データTXCOnを求めるテクスチャ処理工程と、前記深さ方向の各ピクセルに対して、当該ピクセルのピクセル色データTXCOnを、光源色データINTn、ディスティネーション混合係数DEn、及び一つ手前側のピクセルの前記乗算値Xn-1に応じて修正し累積するカラー合成処理を行うカラー合成工程とを有し、前記光源計算工程及びテクスチャ処理工程の少なくとも一方で、対応するデータ生成処理を並列に行い、前記カラー合成工程で、前記カラー合成処理を深さ方向のピクセルについて順不同で行うことを特徴とする画像処理方法。

【図6】
image rotate


【図13】
image rotate


【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図5】
image rotate


【図14】
image rotate


【図15】
image rotate


【図4】
image rotate


【図7】
image rotate


【図8】
image rotate


【図9】
image rotate


【図10】
image rotate


【図11】
image rotate


【図12】
image rotate


【図16】
image rotate


【図17】
image rotate


【図18】
image rotate