JP4035649B2 - 画像処理装置及び画像処理方法 - Google Patents
画像処理装置及び画像処理方法 Download PDFInfo
- Publication number
- JP4035649B2 JP4035649B2 JP7631298A JP7631298A JP4035649B2 JP 4035649 B2 JP4035649 B2 JP 4035649B2 JP 7631298 A JP7631298 A JP 7631298A JP 7631298 A JP7631298 A JP 7631298A JP 4035649 B2 JP4035649 B2 JP 4035649B2
- Authority
- JP
- Japan
- Prior art keywords
- polygon
- mask
- data
- mask data
- shadow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータを利用した画像処理装置に関し、特に、レンダリング処理における複数のポリゴンの処理及び陰面処理の演算を少ないハードウエアでより効率的に行うことができる画像処理装置、その画像処理方法及びその画像処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
コンピュータを利用した画像処理装置は、ゲーム装置やシミュレーション装置等で広く利用される。かかる画像処理装置では、表示されるオブジェクトを形成するポリゴンが、ゲームプログラムやシミュレーションプログラムにより生成される。このポリゴンデータは、通常その頂点毎のパラメータを含む。頂点パラメータは、例えば、頂点の三次元空間内の座標や、頂点のテクスチャー座標、法線ベクトル、透明度を表すアルファ値、色関連データが含まれる。
【0003】
かかるポリゴンデータをもとに、まず、表示画面内のポリゴンをクリッピングにより選択し、それらの選択されたポリゴンについて、頂点の三次元座標が視点位置に従って表示画面上の二次元座標と奥行きを示すZ値とに透視変換される。その後、レンダリング処理により表示画面内に表示されるポリゴンのピクセルにおける画像データが求められる。この画像データは、例えばRGBの色データを有する。
【0004】
上記したレンダリング処理において、ポリゴン内のピクセルのパラメータの演算は、通常、ラスタスキャン法によりポリゴン内のピクセル座標を特定し、そのピクセル座標に従い頂点パラメータを補間演算する。即ち、頂点座標とピクセル座標から内分比を求め、その内分比に従って上記した頂点パラメータを補間演算する。
【0005】
また、レンダリング処理は、1つのフレーム単位で処理される。レンダリング処理において、表示すべきポリゴンをピクセル毎に判定する陰面処理の為に、ポリゴンのピクセルの奥行きを示すZ値が利用される。Z値を比較して、最もZ値が小さい(表示画面内で最も手前)場合に、その色データをフレームバッファメモリに格納する。従って、フレームバッファメモリに書き込まれたピクセルのZ値を格納するZ値バッファメモリが利用される。
【0006】
【発明が解決しようとする課題】
上記のラスタスキャンにおける補間演算では、頂点間を結ぶ直線上のエッジ点の座標やパラメータを演算し、両側のエッジ点から内部のピクセルの座標やパラメータを演算する。かかる補間演算では、通常除算演算を含み、かかる除算演算はコンピュータの演算回路にとって最も負荷の大きい演算である。しかも、ラスタスキャンに伴う補間演算は頻繁に行われるので、上記の負荷の高い演算はできれば避けるべきである。
【0007】
更に、不透明ポリゴンのレンダリング処理では、Z値比較を行って、表示画面の手前側のポリゴンのピクセルを有効にする。かかる演算処理において、例えばZ値バッファメモリに最も手前のピクセルのZ値を記憶して、逐次フレームバッファメモリに画像データを記憶することが行われる。かかる方法では、より奥に位置するポリゴンに対する画像データの生成とフレームバッファメモリへの画像データの書込みの処理工程が、後で処理され、より手前に位置するポリゴンの存在により無駄になることがあり、処理の効率を下げる原因となる。
【0008】
或いは、それを避ける方法として、最終的に表示すべきピクセルが決定するまで、ピクセル毎のポリゴンのIDをZ値バッファメモリに記憶しておくことが考えられるが、かかる方法でも、Z値バッファメモリへのポリゴンIDの書込み処理が無駄になることがあり、同様に処理の効率を下げる原因となる。
【0009】
更に、不透明でもない透明でもない半透明ポリゴンのレンダリング処理では、表示画面の奥側に位置するポリゴンの色と手前側に位置する半透明ポリゴンの色とをブレンディングする必要がある。かかる場合は、半透明ポリゴンのZ値に従って一旦ソーティングしてから、奥側から順にブレンディング処理を行う。しかし、かかるソーティング処理は、Z値の比較等を伴い処理の効率を下げる原因となる。
【0010】
更に、画像処理において、光源により形成される影の部分については、光源からの光に従ってその輝度を上げる等の処理を行わない影処理(影を付ける処理)が必要である。かかる影処理は、複雑なアルゴリズムが種々提案されているが、いずれも複雑な演算を必要とし、処理の効率を下げる原因となっている。
【0011】
そこで、本発明の目的は、上記の従来の課題を解決し、処理効率の高いレンダリング処理が可能な画像処理装置、その画像処理方法及びその画像処理プログラムを記録した記録媒体を提供することにある。
【0012】
更に、本発明の目的は、不透明ポリゴンのレンダリング処理を効率良く行うことが可能な画像処理装置、その画像処理方法及びその画像処理プログラムを記録した記録媒体を提供することにある。
【0013】
更に、本発明の目的は、半透明ポリゴンのレンダリング処理を効率良く行うことが可能な画像処理装置、その画像処理方法及びその画像処理プログラムを記録した記録媒体を提供することにある。
【0014】
更に、本発明の目的は、レンダリング処理における影処理を効率良く行うことが可能な画像処理装置、その画像処理方法及びその画像処理プログラムを記録した記録媒体を提供することにある。
【0015】
【課題を解決するための手段】
上記の目的を達成する為に、本発明は、ピクセルに対応して有効か無効か、或いは奇数か偶数かなどの2値データを保存するマスクレジスタを有効に利用して、それらのマスクデータに対する排他処理、排他的論理和処理、論理和処理等を行って、不透明ポリゴンの陰面処理、半透明ポリゴンのブレンディング処理、影の領域を求める影処理を効率的に行う。
【0016】
第1の発明は、複数のポリゴンを表示する為の画像データを生成する画像処理方法において、
前記ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他のポリゴンのZ値よりも手前側のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他のポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成をポリゴン毎に行うマスク生成工程と、
前記マスク生成工程により生成された前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、前記各ポリゴンのレンダリング処理を行うレンダリング処理工程と
を有することを特徴とする。
【0017】
上記の第1の発明は、不透明ポリゴン間の陰面処理を行うにあたり、第2のマスクデータによる排他処理を利用することで、それぞれのポリゴンの有効領域を新たな第2のマスクデータとして効率的に求めることができる。この第2のマスクデータは、最終的にレンダリング処理に利用されるものであり、以下に示される実施の形態例ではトランスマスクに格納される。
【0018】
第2の発明は、複数の半透明ポリゴンを表示する為の画像データを生成する画像処理方法において、
前記半透明ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記半透明ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示す半透明Z値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他の半透明ポリゴンの半透明Z値よりも奥側の半透明Z値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他の半透明ポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成を半透明ポリゴン毎に行うマスク生成工程と、
前記マスク生成工程で生成された前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、画像データを生成する前記各ポリゴンのレンダリング処理を行うレンダリング処理工程とを有し、
前記マスク生成工程で、更に、前記第1のマスクデータの有効領域から前記新たな第2のマスクデータの有効領域を削除する排他処理を行って新たな第1のマスクデータを生成し、前記新たな第1のマスクデータに基づいて次の前記新たな第2のマスクデータを生成し、
前記レンダリング処理工程で、前記次の新たな第2のマスクデータに従って前記レンダリング処理を行うことを特徴とする。
【0019】
上記の第2の発明では、半透明ポリゴンについて表示画面内で最も奥側に位置する領域を逆陰面処理と排他処理により新たな第2のマスクデータとして効率的に求めることができる。この第1のマスクデータは、処理すべき領域を示すマスクデータであり、以下に示される実施の形態例ではエリアマスクに格納される。また、第2のマスクデータは、最終的にレンダリング処理に利用されるものであり、以下に示される実施の形態例ではトランスマスクに格納される。
【0020】
更に、上記の第2の発明において、上記次の新たな第2のマスクデータの生成工程が、前記新たな第1のマスクデータから有効領域がなくなるまで繰り返されることを特徴とする。単にかかる工程を繰り返すことにより、重なり合った半透明ポリゴンのブレンディング処理を効率的に行うことができる。
【0021】
第3の発明は、描画対象ポリゴン上の影領域を表示する為の画像データを生成する画像処理方法において、
シャドーボリュームを規定するシャドーポリゴンの表示画面内の位置データを含むシャドーポリゴンデータから、表示画面内の前記シャドーポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、前記第1のマスクデータの有効ピクセル領域のうち前記描画対象ポリゴンのZ値より手前側(または奥側)のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、視線方向であって前記描画対象ポリゴンと視点(または無限遠)との間に位置するシャドーポリゴンの枚数の奇偶データを有する影処理マスクデータの該奇偶データを、前記第2のマスクデータの有効領域について奇偶反転して新たな影処理マスクデータを生成し、上記影処理マスクデータの生成を前記シャドーボリュームを規定する全てのシャドーポリゴンに対して行うマスク生成工程と、
前記マスク生成工程で生成された前記影処理マスクデータに従って、レンダリング処理を行うレンダリング処理工程とを有することを特徴とする。
【0022】
上記の第3の発明によれば、光源による影領域を影処理マスクデータとして効率的に求めることができる。この影処理マスクデータは、描画対象ポリゴン上の影の領域を示すマスクデータであり、以下に示す本実施の形態例では、エリアマスク領域に格納される。
【0023】
上記の第3の発明において、前記影処理マスクデータの生成がシャドーボリュームの数だけ繰り返し行われ、それぞれ生成された影処理マスクデータを最後に論理和処理して合成影処理マスクデータを生成し、前記のレンダリング処理工程で、その合成影処理マスクデータに従って影処理が行われる。
【0024】
【発明の実施の形態】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲がその実施の形態に限定されるものではない。
【0025】
図1は、本実施の形態例の画像処理装置の全体構成図である。図1の例は、ゲームプログラムやシミュレーションプログラムに従ってポリゴンデータや視点データなどを生成するCPU40と、そのポリゴンデータに含まれる頂点の三次元座標から、表示画面内に位置するポリゴンの表示画面内の二次元座標に透視変換を行うジオメトリ処理部48と、ジオメトリ処理部48が生成するポリゴンデータにしたがってレンダリングすべきポリゴンのピクセルを示すトランスマスクなどの各種マスクを生成するマスク生成部50と、マスク生成部50により生成されたトランスマスクやライトマスクなどを供給されて、ピクセルの画像データを生成するレンダリング処理部62と、レンダリング処理部62により生成された画像データが保存されるフレームバッファメモリ66とを有する。
【0026】
CPU40には、上記のプログラムを実行する為に、RAM42、ゲームプログラムが格納されるROM44、オペレータにより操作される操作部47からの操作信号を取り込む入力バッファ46とが、例えば共通のバスにより接続される。また、ジオメトリ処理部48には、ポリゴンデータを格納しておくポリゴンバッファ49が接続される。また、レンダリング処理部62には、テクスチャーデータが格納されるテクスチャーバッファメモリ64が接続される。そして、フレームバッファメモリ66の画像データが、CRTなどの表示装置68に供給される。
【0027】
図2は、上記のマスク生成部50の構成例を示す図である。図2のマスク生成部50の例は、ジオメトリ生成部48により生成されたポリゴンデータが供給され保存されるプリミティブバッファ52を有する。このプリミティブバッファ52は、ポリゴンデータ以外にも直線や点などの表示される要素のデータも供給されて保存する。直線や点の場合も、前述のジオメトリ処理部48で、その三次元データが表示画面の二次元座標に透視変換される。
【0028】
マスクコントロール部53は、2種類のマスクレジスタ、トランスマスクレジスタ533、エリアマスクレジスタ534を有し、マスクレジスタ内のビットデータに対して排他処理を行う排他処理部531と排他的論理和の処理を行う排他的論理和処理部532とを少なくとも有する。これらの処理部531,532の入力側と出力側にはマルチプレクサ540〜545が設けられ、これらのマルチプレクサの接続を適宜変更することにより、処理対象となる入力または出力マスクデータを選択することができる。
【0029】
これらのマスクレジスタは、例えばフレーム内を細分化したフラグメント領域内の全てのピクセルに対するビットデータを有するレジスタである。従って、後述する通りフラグメント領域が8×8の64ピクセルを有する領域の場合は、マスクレジスタは64ビットのレジスタの集合である。即ち、64個の2値データであり、より具体的には「1」と「0」の2値データを64個有する。
【0030】
トランスマスクレジスタ533は、例えば最終的に生成されたマスクデータを格納し、レンダリング処理部62にトランスファーされる。或いは、トランスマスクレジスタ533は、最終的なマスクデータを生成する過程で、半透明(translucent 、トランスルーセント) ポリゴンの描画位置のデータを格納する。更に、エリアマスクレジスタ534は、例えばポリゴンの描画対象の領域のデータを格納する。或いは、影処理におけるシャドーポリゴンの領域のデータ(影処理マスクデータ)を一時的に格納する。
【0031】
上記のトランスマスクレジスタとエリアマスクレジスタとを有するマスクコントロール部53は、上記のフラグメント領域の64ピクセルに対応して、65セット有する。即ち、64ピクセル全てが異なるポリゴンになっても、トランスマスクレジスタ533やエリアマスクレジスタ534が対応できる様に構成される。
【0032】
但し、エリアマスクレジスタ543は、影処理マスクデータを格納する場合は、シャドーボリュームの個数分だけ利用される。そして、それらのエリアマスクレジスタ543は、論理和処理部538により論理和処理されて、レンダリング処理部に合成影処理マスクデータとして供給される。
【0033】
これらのマスクレジスタに保存されたマスクデータは、供給されるマスクデータと或いはお互いのマスクデータと排他処理、排他的論理和処理或いは論理和処理される。そしてそれらの処理されたマスクデータが、再度所定のマスクレジスタに保存され、或いはレンダリング処理部に供給される。上記の処理は、排他処理部531、排他的論理和処理部532及び論理和処理部538で行われる。
【0034】
排他処理部531は、入力I1 I2 に対して、I1 ・(!I2 )を出力する。ここで、!I2 はI2 の否定論理を意味する。また、排他的論理和処理部532は、入力I1 I2 に対して、{I1 ・(!I2 )}+{!I1 ・(I2 )}を出力する。更に論理和処理部538は、入力I1 I2 ... I65に対して、I1 +I2 +....+I65を出力する。2値データであるマスクデータに対する上記の論理演算は、簡単な論理回路により行うことが可能である。
【0035】
マスク生成部50での処理の概略について説明する。ジオメトリ処理部48で生成されたポリゴンデータは、プリミティブバッファ52に供給され、保存される。そして、フラクタル処理に必要なポリゴンデータはフラクタルセットアップ部54に与えられる。また、エリアマスクレジスタ内のエリアマスクデータが、マルチプレクサ546を経由して、フラクタル処理部55に与えられる。
【0036】
フラクタル処理については、後に詳細に説明するが、フラクタル処理部55を利用することで、ポリゴンデータからフラグメント領域内のピクセルがいずれのポリゴンに属するかの演算、その場合の各ピクセルのZ値等のポリゴンデータの補間演算などを比較的容易に且つ短時間で行うことができる。
【0037】
フラクタル処理部55により生成されたマスクデータは、比較部56にて、Z値比較処理に従って、所定の処理が施されたマスクデータに加工され、再度マスクコントローラ部53に供給される。従って、比較部56内には、Z比較器564、トランスZ値比較器565が設けられる。それらの比較器564,565は、不透明ポリゴンのZ値を保存するZ値レジスタ561と、半透明ポリゴンのZ値等を保存するトランスZ値レジスタ562とを参照する。
【0038】
図2に示されたマスク生成部50の動作は、後述するマスク生成の詳細な説明によってより明確化される。
【0039】
図3は、ジオメトリ処理部により生成されるポリゴンデータの例を示す図である。図3には、二つのポリゴンID0,ID1のデータ例が示される。ポリゴンは、通常ラスタスキャン法や補間法での演算を簡単にするために、3角形で形成される。従って、それぞれのポリゴンは頂点00,01,02及び頂点10,11,12を有する。そして、各頂点のパラメータとして、表示画面上での二次元座標(x、y)と表示画面内の奥行きを示すZ値、そのポリゴンに与えられるテクスチャを示すテクスチャ座標(Tx、Ty)、三次元空間内での法線ベクトル(Nx,Ny,Nz)、透明度を示すα値及び色データが含まれる。法線ベクトルにより光源に対する処理が行われ、透明度を示すα値により半透明ポリゴンに対するブレンディング処理が行われる。
【0040】
更に、ポリゴンデータには、それぞれのポリゴンの属性を示すフィルタイプデータが含まれる。フィルタイプデータには、例えば、不透明ポリゴン、半透明ポリゴン、シャドーボリュームを構成するシャドーポリゴンなどである。本実施の形態例では、これらのポリゴンの属性に応じて異なる処理が施される。
【0041】
本実施の形態例における不透明ポリゴンに対する描画処理、半透明ポリゴンに対する描画処理及び影処理に対する描画処理を理解するためには、マスクレジスタに格納されるマスクデータと、それを効果的に生成するフラクタル処理を説明する必要がある。フラクタル処理とは、逐語的にいえば、自己相似的に処理することをいう。この処理は、ポリゴン内の各ピクセルのデータを演算する為に利用されるラスタスキャン法に代わる方法である。
【0042】
図4は、フラクタルな順番で領域をより小さい相似形に分裂しピクセルの座標データを求める方法(以下単にフラクタル法と称する。)について説明する図である。この図には、表示画面の一部のあるフラグメント領域20内の8×8のピクセルの座標を求める方法が示される。図4Aには、フラグメント領域20内の中心P0 に対して、それぞれ中心P1 、P2 、P3 、P4 の領域に4分割した状態が示される。中心P0 の座標(x0 ,y0 )に対して、4分割後の中心P1 、P2 、P3 、P4 の座標は、フラグメント20の一辺の長さを単純に8とすると、
P1 =(x0 −2,y0 −2)=(x1 ,y1 )
P2 =(x0 −2,y0 +2)=(x2 ,y2 )
P3 =(x0 +2,y0 +2)=(x3 ,y3 )
P4 =(x0 +2,y0 −2)=(x4 ,y4 )
で求められる。この演算には、除算は含まれず単に加算と減算だけからなる。
【0043】
図4Bには、更に、中心P1 、P2 、P3 、P4 それぞれの領域を4分割し、フラグメント領域20を新たな中心P11、P12、P13、P14、P21、P22...P43、P44の領域に16分割した状態が示される。それぞれの分割後の領域の中心P11、P12、...P43、P44の座標は、
P11=(x1 −1,y1 −1)=(x11,y11)
P12=(x1 −1,y1 +1)=(x11,y11)
P43=(x4 +1,y4 +1)=(x43,y43)
P44=(x4 +1,y4 −1)=(x44,y44)
で求められる。
【0044】
更に、図4Cには、中心P11、P12、P13、...P42、P43、P44それぞれの領域を4分割し、フラグメント領域20を新たな中心P111 、P112 ...P443 、P444 の領域に64分割した状態が示される。それぞれの分割後の領域の中心P111 、P112 、P443 、P444 の座標は、
P111 =(x11−0.5,y11−0.5)=(x111 ,y111 )
P112 =(x11−0.5,y11+0.5)=(x111 ,y111 )
P443 =(x44+0.5,y44+0.5)=(x443 ,y443 )
P444 =(x44+0.5,y44−0.5)=(x444 ,y444 )
で求められる。
【0045】
以上、図4A,B,Cに示される通り、フラクタル法によれば、フラグメント領域20を1領域、4領域、16領域、そして64領域と、それぞれの領域を更に小さい相似形の領域に分割していく。このフラクタル法によれば、それぞれの領域の表示画面での座標値は、上記した通り加算と減算だけで次々に求めることができる。しかも、このフラクタル法によれば、図4Cに示される通り、フラグメント領域20内のピクセルに対応できる64個の微小領域に対して、同時にその座標値や色関連データ等の属性データを求めることができる。その演算の回数は、上記した通り、3階層の演算で行うことができ、それぞれの演算は並列演算が可能である。このことは、この演算回路を構成する場合、並列演算器を3階層に形成すればよいことを意味する。この演算回路の構成については、後述する。
【0046】
上記したフラクタル法は、フラグメント領域内の中心P0 をスタートにして、64個のピクセルの表示画面内の座標を加算と減算により簡単に求めることができる。そこで、レンダリング処理の為に、各ピクセルにどのポリゴンの色をつければよいかを示すマスクデータを生成する必要がある。別の言葉でいえば、ポリゴン内に位置するピクセルを検出する必要がある。
【0047】
図5は、任意の点P(x,y)が、三角形のポリゴン10内に位置するか否かの判断のアルゴリズムについて説明する図である。二次元座標内の三点L,M,Nを頂点とする三角形の各辺LM,MN,NLについて、三角形の単位法線ベクトルを(a1 ,b1 )、(a2 ,b2 )、(a3 ,b3 )と、座標の原点から各辺に下ろした垂線の距離をc1 、c2 、c3 とする。この場合、任意の点P(x,y)が三角形の内部に位置するか外部に位置するかは、次の式の値dが負か正かにより判断できる。
【0048】
d1 =a1 x+b1 y+c1
d2 =a2 x+b2 y+c2
d3 =a3 x+b3 y+c3
上記のd1 ,d2 ,d3 が共に負になる場合は、点P(x,y)が三角形の内部に位置することは、数学的に自明である。かかる、アルゴリズムは、任意の点がある多角形の内部に位置するか否かの判断を行う場合に利用される。
【0049】
そこで、上記のフラクタル法に従って、64個のピクセルがあるポリゴンの内部に属するか否かの演算を行うことができる。例えば、点P0 に対しては、
d1 =a1 x0 +b1 y0 +c1
d2 =a2 x0 +b2 y0 +c2
d3 =a3 x0 +b3 y0 +c3
を演算して、d1 ,d2 ,d3 が共に負になるか否かの判断を行えば良い。
【0050】
更に、4分割した中心P1 、P2 、P3 、P4 の領域があるポリゴンの内部に属するか否かの演算は、点P1 に対しては、
d1 =a1 x1 +b1 y1 +c1 =a1 (x0 -2)+b1 (y0 -2)+c1
d2 =a2 x1 +b2 y1 +c2 =a2 (x0 -2)+b2 (y0 -2)+c2
d3 =a3 x1 +b3 y1 +c3 =a3 (x0 -2)+b3 (y0 -2)+c3
である。結局、点P0 の時に求めたd1 、d2 、d3 に対して、それぞれ
d1 =d1 −2a1 −2b1
d2 =d2 −2a2 −2b2
d3 =d3 −2a3 −2b3
という単純な減算を行うことで求めることができる。
【0051】
同様にして、16分割した中心P11、P12、P13、P14、P21、P22...P43、P44の領域についても、点P1 、P2 、P3 、P4 の時に求めたd1 、d2 、d3 に対して簡単な減算を行うことで求めることができる。例えば、中心P11の場合は、
d1 =d1 −a1 −b1
d2 =d2 −a2 −b2
d3 =d3 −a3 −b3
により求められる。
【0052】
同様にして、64分割した中心P111 、P112 ...P443 、P444 の領域についても簡単に演算を行うことができる。例えば、中心P111 の場合は、
d1 =d1 −0.5a1 −0.5b1
d2 =d2 −0.5a2 −0.5b2
d3 =d3 −0.5a3 −0.5b3
により求められる。
【0053】
以上の通り、各領域の中心点があるポリゴンの内部に属するか否かの判断の為の演算は、フラクタル法を利用することにより、極めて簡単に行うことができる。
【0054】
図6は、表示画面30内に3つのポリゴンPG1,PG2,PG3が表示される例を示す図である。この図6に示される通り、表示画面30は、複数のフラグメント領域FMに分割されている。そこで、中央付近のフラグメントFM9においては、ポリゴンPG1,PG2の一部が位置している。このフラグメントFM9を拡大すると、図6の左下の図になる。図に示される通り、64個のピクセルP1 〜P64に分割されている。その場合、ピクセルP1 〜P4 、P9 〜P15、P17〜P24、P25〜P32が、ポリゴンPG1に属する。更に、ピクセルP24、P31、P32、P38〜P40、P45〜P48、P51〜P56、P58〜P64が、ポリゴンPG2に属する。
【0055】
上記したフラクタル法により、64個のピクセルP1 〜P64がポリゴンに属するか否かの演算が、フレーム内のポリゴン全てに対して行われることで、フラグメント領域20内において、ポリゴンの位置が確認される。図6の右下に示される通り、フラグメント領域FM9において、ポリゴンPG1とPG2の位置が確認される。図中、一部分で二つのポリゴンPG1とPG2とが重なりあう。
【0056】
従来のポリゴン内をラスタスキャンする方法は、ポリゴン内のピクセルの座標を求めることで、各ピクセルにどのポリゴンの色を与えるかを求める。これに対して、上記の方法では、フラグメント領域内の全てのピクセルについて、その座標データを求めてその座標データからポリゴン内に位置するか否かの判断を行うことで、各ピクセルにどのポリゴンの色を与えれば良いかを求めることができる。
【0057】
レンダリング処理において、もう一つの基本的な処理は、重なりあうポリゴンについて、どのポリゴンを表示すべきかの判定をピクセル毎に行うことである。その為に、各ポリゴンのZ値を比較して、Z値が最も小さい(手前側の)ポリゴンを選択するアルゴリズムが知られている。或いは、半透明のポリゴンをレンダリングする時は、例えば奥側に位置するポリゴンの色データにそれと重なる手前側のポリゴンの色データを、手前側のポリゴンの透明度α値に従ってブレンディングすることが行われる。その場合も、Z値が比較される。
【0058】
このZ値比較法を行うためには、各ピクセルにおけるポリゴンのZ値を求める必要がある。このポリゴン毎のZ値の計算は、上記のフラクタル処理を行う場合に、非常に簡単に行うことができる。
【0059】
例えば、図4、5に戻って、点P0 のZ値Z0 は、次の演算式で求めることができる。
【0060】
Z0 =(∂z/∂x)x0 +(∂z/∂y)y0 +cz
それぞれの定数(∂z/∂x)、(∂z/∂y)及びczは、ポリゴンの1平面からユニークにきまる定数である。具体的には、(∂z/∂x)はポリゴンの平面のX軸方向の傾きであり、(∂z/∂y)はポリゴンの平面のY軸方向の傾きである。また、czは原点における平面のZ値である。
【0061】
かかる演算式から理解される通り、更に4分割した領域の例えば中心P1 のZ値Z1 は、
Z1 =Z0 −2(∂z/∂x)−2(∂z/∂y)
で求められる。更に16分割した領域の例えば中心P11のZ値Z11は、
Z11=Z1 −(∂z/∂x)−(∂z/∂y)
で求められ、更に64分割した領域の例えば中心P111 のZ値Z111 は、
Z111 =Z11−0.5(∂z/∂x)−0.5(∂z/∂y)
で求められる。従って、座標の場合と同様に、加算と減算により64個のピクセルにおけるポリゴンのZ値を簡単に求めることができる。
【0062】
従って、フラクタル法により、各ピクセルがポリゴンに属するか否かの判定と共に、そのピクセルのポリゴンのZ値の演算とを同時に行うこともできる。かかる演算は、フラグメント領域内において、ポリゴンの個数分だけ繰り返される。フレーム内の全てのポリゴンに対して、上記の演算が行われると、そのフラグメント領域内における、各ピクセルの表示すべきポリゴンとそのZ値とが求められる。
【0063】
ラスタライズ法によるラスタスキャンでは、ポリゴン内を走査して、その座標とZ値を演算し、各ピクセルの表示すべきポリゴンとそのZ値とが求められるが、上記した通りその演算には除算が含まれ、コンピュータからなる演算器にとって演算時間が長くなる。それに対して、上記のフラクタル法を使用することにより、その演算には基本的に加算と減算しか含まれない。従って、その演算時間は極めて短くなる。また、後述する通り、フラクタル法によれば、64ピクセルの場合は、並列演算を3階層だけ行うことにより64個分の座標、ポリゴン、Z値を求めることができる。従って、その点においても演算に要する時間を短くすることができる。
【0064】
図7は、フラクタル処理部55の具体的構成例を示す図である。図中、フラクタル処理に必要な初期値を求めるフラクタルセットアップ54から処理中のフラグメント領域の中心点での初期値が、フラクタル処理器の最初のフラクタル分割器FR0 に供給される。この初期値は、例えば、フラグメント領域の中心点P0 の二次元座標(x0 ,y0 )、処理中のポリゴンに対するポリゴン内か外かの判定値d1 ,d2 ,d3 、及びZ0 値である。そして、フラクタル分割器FR0 では、点P0 の初期値から、4分割した点P1 、P2 、P3 、P4 での二次元座標(x1 ,y1 )〜(x4 ,y4 )、その座標が処理中のポリゴンに対するポリゴン内か外かの判定値d1 ,d2 ,d3 (4種類)、及びZ値Z1 〜Z4 が求められる。この演算は、既に説明した通り、初期値に対して加算と減算だけで構成される。
【0065】
次に、フラクタル分割器FR1 〜FR4 では、4点P1 、P2 、P3 、P4 での二次元座標(x1 ,y1 )〜(x4 ,y4 )、その座標が処理中のポリゴンに対するポリゴン内か外かの判定値d1 ,d2 ,d3 (4種類)、及びZ値Z1 〜Z4 から、それぞれ4分割した点P11、P12、P13、P14...P43、P44のでの同様の値が演算される。
【0066】
同様に、三階層目の演算として、フラクタル分割器FR11〜FR14では、点P11〜P14の二次元座標(x11,y11)〜(x14,y14)、その座標が処理中のポリゴンに対するポリゴン内か外かの判定値d1 ,d2 ,d3 (4種類)、及びZ値Z11〜Z14から、更に分割した点P111 ,P112 〜P143 ,P144 に対する同様の値が求められる。
【0067】
フラクタル分割器FR21〜FR24では、点P21〜P24の同様の値から、更に分割した点P211 ,P212 〜P243 ,P244 の同様の値が求められる。フラクタル分割器FR31〜FR34及びFR41〜FR44においても、同様の演算が行われる。
【0068】
三階層目のフラクタル分割器FR11〜FR44では、それぞれのピクセル毎に設けたd1 ,d2 ,d3 が全て負か否かの判断が行われる。全て負の場合は、そのピクセルは処理中のポリゴン内に属することになる。そこで、更に、そのピクセルのZ値をZ値レジスタ561内のZ値と比較する。或いは、ピクセルのZ値をトランスZ値レジスタ内のZ値と比較する。若しくは、シャドーボリュームのIDと比較する。そして、例えば不透明ポリゴン内のピクセルのZ値がZ値レジスタ561内のZ値よりも小さい場合は、そのポリゴンが表示画面内で手前に位置することを意味するので、ピクセルのZ値がZ値レジスタ561に記録される。同時に、マスクレジスタ60の対応するマスクレジスタ533〜537にデータが書き込まれる。
【0069】
フラクタル処理を利用する場合は、図6で示したフラクタル処理器の通り、加算と減算の単純な演算を並列的に行うことができる。従って、1つのフラグメント領域について、各ピクセル毎の描画すべきポリゴンを求める演算を、初期値が与えられてから、この例では3階層の演算で完了することができる。それは、パイプライン処理におけるレイテンシーを短くすることができることを意味する。単純に1ピクセル毎に処理する場合に64回同じ演算を行うことに比較すると、フラクタル処理を利用する場合は演算時間を飛躍的に短縮することができる。
【0070】
図8は、マスクレジスタ60の詳細な構成例を示す図である。この図には、最下位層のフラクタル分割器FR11〜FR44が示される。このマスクレジスタは、64ビットのフラグビットが格納されるレジスタで構成される。フラグメント領域が64ピクセルで構成される場合は、そのレジスタが64+1個設けられる。そして、各レジスタにポリゴンが割り当てられる。
【0071】
例えば、ポリゴンPG1のポリゴンデータがフラクタルセットアップ部54に供給された時、フラクタル処理器55内で64ピクセルがポリゴンPG1に属するか否かの判断がなされて、ポリゴンPG1内に属することが判明すると、ポリゴンPG1が割り当てられているマスクレジスタ601の対応するピクセルのフラグビットが「1」にされる。或いは、ピクセルのZ値がZ値レジスタのZ値よりも小さい(手前側の)場合は、ポリゴンPG1が割り当てられているマスクレジスタ601(PG1)内の対応するピクセルのフラグビットが「1」にされる。その結果、そのピクセルはポリゴンPG1に属するデータであることが、或いはそのピクセルは表示対象のポリゴンPG1内のピクセルであることが記録される。即ち、フラグビットが「1」のピクセルがそのポリゴンの有効ピクセル領域を意味する。
【0072】
フラグメント領域が64ピクセルを有するので、マスクレジスタは、最大で64個必要になる。そして、演算中に使用される1つのマスクレジスタを加えて、合計65個のマスクレジスタが設けられる。
【0073】
図9は、上記したフラクタル処理のフローチャート図である。上記したフラクタル処理が図9のフローチャート図によって、より明確に理解される。ステップS30にてフラグメント領域が指定され、フレーム内のポリゴンデータがジオメトリ処理部48からプリミティブバッファ52に供給される(S32)。この場合、例えば頂点座標とそのZ値が与えられる。かかるポリゴンデータはマスクコントロール部53からフラクタルセットアップ部54に供給され、フラグメント領域の中心点P0 に対して、d値とZ値の初期値が求められる(S34)。その演算式は、すでに説明した通りである。
【0074】
そこで、マスクコントロール部53は、例えば全てのピクセルが有効領域となっているマスクデータをフラクタル処理部55に供給する。フラクタル処理部55では、上記の中心点P0 に対するd値とZ値の初期値から、4分割のフラクタ処理(S36)、16分割のフラクタ処理(S38)、そして64分割のフラクタ処理(S40)が行われる。その結果、フラグメント領域内のピクセル毎のd1 、d2 、d3 及びZ値が求められる。そして、d1 、d2 、d3 値が全て負か否かの判断により、そのピクセルが処理中のポリゴンの内部に属するか否かの判断が行われる(S42)。d1 、d2 、d3 値が全て負の場合は、ピクセルがポリゴン内部に属する。従って、d値が全て負にならないピクセルは上記マスクデータの有効領域から削除(データ「0」)される。
【0075】
更に、そのピクセルのZ値がZ値レジスタ561のZ値と比較される(S44)。Z値がZ値レジスタ内のZ値より小さい(手前側の)場合は、そのZ値がZ値レジスタ561に格納され、マスクレジスタの対応するレジスタにフラグ「1」が格納される(S46)。
【0076】
或いは、別の処理においては、ピクセルのZ値がトランスZ値レジスタ562のZ値と比較される(S44)。Z値がZ値レジスタ内のZ値より大きい(奥側の)場合は、そのZ値がトランスZ値レジスタ562に格納され、マスクレジスタの対応するレジスタにフラグ「1」が格納される(S46)。
【0077】
上記のいずれの処理を行うかは、目的とする処理に応じて異なる。上記のステップS44、S46は、図2において比較部56が処理する。
【0078】
上記の構成のマスクレジスタは、各ポリゴンのどのピクセルを描画すべきか、或いは有効にすべきかをフラグビットで記録する。従って、マスクレジスタは、ポリゴンの描画領域をマスクする機能或いはポリゴンの有効領域をマスクする機能を持つ。そして、フラグビットは1と0のデータであるので、複数のマスクデータに対して所定の論理計算を行う場合は、単にAND,OR,NAND,NORなどの論理ゲート回路を利用することができる。従って、かかるマスクデータに対する排他処理、排他的論理和処理及び論理和処理の演算は、簡単な論理ゲート回路により、短時間で効率的に行うことができる。
【0079】
以上の通り、フラクタル処理とそれにより生成されるフラグメント領域内のマスクデータが明確になった。そこで、以下に、フレーム内に含まれる不透明マスク、半透明マスク及びシャドーボリュームに対する描画処理について説明する。
【0080】
[描画処理の全体の流れ]
図10は、描画処理の全体の流れを示すフローチャート図である。この例では、フレーム内に不透明ポリゴンと、半透明ポリゴンとが存在し、更に光源による影処理が施される場合に、上記したフラクタル処理を利用してマスクデータを適宜生成して効率的に描画処理を行う。
【0081】
マスク生成部50は、ジオメトリ処理部48から不透明ポリゴンのデータを順次供給されて、不透明ポリゴンについての処理を行う(S10、S12)。概略的に説明すると、不透明ポリゴンの場合は、Z値が小さい(手前にある)ピクセルが最終的に描画されるピクセルである。従って、フラクタル処理を利用して不透明ポリゴン内の有効ピクセル領域を検出し同時にそのZ値を求める。そして、そのZ値がZ値レジスタ561内のZ値より小さい場合は、ポリゴンに対するトランスマスクデータを「1」にし、Z値レジスタ内のZ値を書き換える。その結果、ポリゴン毎に描画すべきピクセルのデータがトランスマスクデータとして生成される(S10)。このトランスマスクデータは、それまでに生成された別の不透明マスクのトランスマスクデータと排他処理されて保存される(S12)。
【0082】
全ての不透明ポリゴンに対して工程S10,S12が行われると、次に、ジオメトリ処理部48から光源からの光線が遮断された影空間であるシャドーボリュームを規定するシャドーポリゴンのデータがマスク生成部50に供給される。マスク生成部50では、影処理が行われ、不透明ポリゴン上であって光源からの光が照射されない影の領域を示す影処理マスクデータが生成される(S14)。
【0083】
そして、不透明ポリゴンのトランスマスクデータと、影処理により求められエリアマスク内に格納された影処理マスクデータとから、不透明ポリゴンのレンダリング処理が行われる(S16)。具体的には、マスクコントロール部53内のトランスマスクレジスタ533のトランスマスクデータとエリアマスクレジスタ534の影処理マスクデータとが、レンダリング処理部62に供給される。レンダリング処理部62では、トランスマスクデータで示された有効ピクセル領域に対応するポリゴンの画像データを生成して、フレームバッファ66に記録する。また、画像データの生成は、ピクセルのテクスチャ座標からテクスチャバッファ64内のテクスチャデータを取得し、また、色データから色データを取得し、法線ベクトルを利用して光源処理を施す。即ち、光源からの光が照射される領域では、例えば輝度値を高くする。また、影処理マスクデータに従う光源からの光が照射されない領域では、光源による処理を行わない。
【0084】
次に、半透明ポリゴンの処理が行われる(S18)。ここでの半透明ポリゴンとは、不透明でも透明でもないポリゴンであり、透明度α値が最大のポリゴンを含むポリゴンである。半透明ポリゴンの場合は、その透明度に応じて奥側に位置するポリゴンの色とブレンディング処理を行う必要がある。そこで、本実施の形態例では、後述するアルゴリズムにより、表示画面内の最も奥に位置する半透明ポリゴンの領域を示すトランスマスクを最初に生成する(S18)。そして、マスクコントロール部53がそのトランスマスクデータをレンダリング処理部52に与える。そして、レンダリング処理部52では、フレームバッファ66内の画像データと処理中の半透明ポリゴンの色データとでブレンディング処理を行う(S20)。そのブレンディング処理された画像データが再度フレームバッファ66に格納される。
【0085】
上記の工程S18,S20が、半透明ポリゴンの重なりの全ての層に対して繰り返して行われる。そして、最後にフレームバッファ66内の画像データが、表示装置68に供給され、表示される(S22)。
【0086】
以下、上記のそれぞれの処理について、具体的な例を利用して詳細に説明する。
【0087】
[不透明ポリゴンの処理]
図11は、不透明ポリゴンの処理を説明する為の例を示す図である。図11(A)には、表示画面101の例が示される。この表示画面101内には、ポリゴンA、ポリゴンB及びポリゴンCが図示される通り一部重なっている。図11(B)は、表示画面101の中央水平線に沿ったポリゴンの奥行きの関係を示す。即ち、ポリゴンAは最も奥(Z値最大)に位置し、ポリゴンB、CはポリゴンAよりも手前側に位置するが、互いに交差している。
【0088】
かかる不透明ポリゴンの場合は、ポリゴンが重なりあう領域は、奥側に位置するポリゴンの領域を消去する陰面消去処理が行われる。最も一般的な方法は、ラスタスキャン法によりそれぞれのポリゴンのピクセルのZ値を求め、Z値レジスタに既に書き込まれたZ値と比較するZバッファ法である。
【0089】
図12は、本実施の形態例の不透明ポリゴンの処理のフローチャート図である。本実施の形態例の不透明ポリゴンの処理は、フラクタル処理を利用してトランスマスクデータを生成する手法を利用する。図2に示された、マスクコントロール部53では、トランスマスクレジスタ533と排他処理部531とが使用され、比較器56では、不透明ポリゴンZ値レジスタ561と、Z比較器564とが使用される。そして、不透明ポリゴンのデータに従って、フラクタル処理部55でポリゴン領域を示すマスクデータを生成し、Z比較器564により陰面消去処理して奥側に位置する領域をマスクデータから削除して、それぞれのトランスマスクレジスタに保存する。また、各不透明ポリゴンのトランスマスクデータは、それぞれ排他処理部531により排他処理され、再度トランスマスクレジスタ533に保存される。上記の処理が全ての不透明ポリゴンに対して行われる。そして、最終的に形成されたトランスマスクレジスタのマスクデータがレンダリング処理部52に転送される。
【0090】
図13〜16は、図11の例を処理する場合のトランスマスクデータの変化を示す図である。また、図34〜37は、図12のフローチャートの各処理におけるデータの流れを示す図である。図34は、ステップS50〜S55の処理を、図35,36は、ステップS56の処理を、そして、図37はステップS57の処理をそれぞれ示す。これらの図12〜16、34〜37を参照しながら、不透明ポリゴンの処理を説明する。
【0091】
不透明ポリゴンの処理の順番は特に問わない。仮に、図11の例のポリゴンA,B,Cの順番に処理されるとする。先ず、ポリゴンAについて、プリミティブバッファ52は、ジオメトリ処理部48からポリゴンデータであるプリミティブデータまたはそのIDを受け取り、保存する(S50)。そして、プリミティブバッファ52は、ポリゴンデータのうちフラクタル処理に必要なデータをフラクタルセットアップ部54に供給する。このフラクタル処理に必要なデータとは、例えば、頂点パラメータの内の表示座標(X,Y)及びZ値である(S51)。マスクコントロール部53は、空いているエリアマスクレジスタ534にマスクパターンをセットして、フラクタル処理部55に初期マスクデータとして供給する(S52)。
【0092】
この初期マスクデータは、図13のマスク102を示すデータである。最初の処理では、初期マスクデータは全てのビットが有効「1」にセットされる。図13以下、黒い部分は有効領域であることを示す。
【0093】
次に、フラクタルセットアップ部54は、領域判定の為の初期値を求め、フラクタル処理部55に供給する(S53)。この初期値は、図9のステップS3で示された通り、d1,d2,d3,(∂z/∂x)、(∂z/∂y)、czなどである。そして、フラクタル処理部55は、初期値をもとに領域判定のフラクタル処理を行いマスクデータを求め、初期マスクデータと論理積演算する。フラクタル処理部55は、更にピクセルのZ値演算をフラクタル処理で求める(S54)。かかる領域判定のフラクタル処理とZ値演算のフラクタル処理は、既に説明した通りである。
【0094】
上記のフラクタル処理部55により生成されたマスクデータは、図13のマスクデータ103に示される通りである。ポリゴンAは、最初のポリゴンであるので、全ての領域が有効領域として判定される。かかるマスクデータ103及びZ値は、比較器56のZ比較器564に与えられる。
【0095】
Z比較器564は、上記フラクタル処理で求めたZ値とZレジスタ561のZ値と比較し、陰面消去処理によりマスクデータ103から陰の領域を削りマスクコントロール部53に与える。また、有効な領域に対応するZ値を不透明ポリゴンZ値レジスタ561に保存、更新する(S55)。この場合も、最初のポリゴンであるので陰面消去処理によっても削られる領域はなく、Z比較器564から出力されるマスクデータは、図13のマスク104の如くなる。このマスク104はマスクコントロール部53に与えられる。
【0096】
そして、マスクコントロール部53は、供給されたマスク104のデータをトランスマスクレジスタ533に保存し(S56、図35)、他のトランスマスクレジスタのマスクデータと排他処理を行い、他のマスクデータを削除する(S56、図36)。即ち、マスク104がポリゴンAに対応するトランスマスクレジスタ533に記録される。また、他のポリゴンは未だ処理されていないので、他のトランスマスクレジスタは存在しない。従って、ここでは他のトランスマスクとの排他処理は行われない。
【0097】
次に、ポリゴンBの処理が行われる。ポリゴンBについても、ポリゴンAと同様に、図12中のステップS50からS56の処理が行われる。図14に、ポリゴンBの場合の、ステップS52での初期値マスク107、ステップS54でフラクタル処理部が生成したマスク108及びステップS55でZ比較器564が生成してトランスマスクレジスタに保存されるマスク109が示される。そして、ステップS56にて、排他処理部531は、ポリゴンBのトランスマスク109とポリゴンAのトランスマスクレジスタ内のマスク104との排他処理演算を行い、重なり合う領域をポリゴンAのトランスマスク104から削除し、図16に示される新たなトランスマスク105を生成し、ポリゴンAのトランスマスクレジスタ533に保存する。
【0098】
ポリゴンBのトランスマスク109は、Z値比較の結果有効となった領域を有するので、先に処理されたポリゴンAのトランスマスク104と重なる領域は、ポリゴンAのトランスマスク104から削除されて、新たなトランスマスク105(図15)となる。
【0099】
図36に示される通り、この排他処理は、比較部56から供給されるポリゴンBのトランスマスクデータと、すでに保存されているポリゴンAのトランスマスクレジスタ533内のトランスマスクデータとの間で行われる。処理されたポリゴンAのトランスマスクデータは、再度トランスマスクレジスタ533内に保存される。また、ポリゴンBのトランスマスクデータは、異なるレイヤー内のトランスマスクレジスタ533内に保存される。
【0100】
上記の説明から理解されるとおり、トランスマスク109と104との排他処理は、有効領域のデータを「1」とすると、(109)・(!104)なる論理演算である。トランスマスク109とトランスマスク104の反転データとの論理積である。尚、本明細書内にて!は、反転論理を意味し、(!104)は(104)の反転或いは否定ビットを意味する。
【0101】
次に、ポリゴンCの処理が行われる。ポリゴンCについても、ポリゴンAと同様に、図12中のステップS50からS56の処理が行われる。図15に、ポリゴンCの場合の、ステップS52での初期マスク111、ステップS54でフラクタル処理部が生成したマスク112及びステップS55でZ比較器564が生成してトランスマスクレジスタに保存されるマスク113が示される。ポリゴンCの場合は、Z比較による陰面消去処理にて、処理済のポリゴンBの背面の領域が削除され、マスク113が生成される。そして、ステップS56にて、排他処理部531は、ポリゴンCのトランスマスク104とポリゴンAのトランスマスクレジスタ内のマスク105との排他処理演算を行い、重なり合う領域をポリゴンAのトランスマスク105から削除し、図16に示される新たなトランスマスク106を生成し、ポリゴンAのトランスマスクレジスタ533に保存する。同様に、排他処理部531は、ポリゴンCのトランスマスク104とポリゴンBのトランスマスクレジスタ内のマスク109との排他処理演算を行い、重なり合う領域をポリゴンBのトランスマスク109から削除し、図16に示される新たなトランスマスク110を生成し、ポリゴンBのトランスマスクレジスタ533に保存する。
【0102】
全ての不透明ポリゴンの処理が終了したので、最終的に各トランスマスクレジスタ内のトランスマスク106(ポリゴンA)、トランスマスク110(ポリゴンB)及びトランスマスク113(ポリゴンC)のデータが、それぞれのポリゴンデータと共にレンダリング処理部62に出力される(S57、図37)。
【0103】
レンダリング処理部では、ポリゴンAのトランスマスク106に従って、レンダリングすべき領域について、ポリゴンデータから画像データを演算で求め、フレームバッファ66に書き込む。同様に、ポリゴンB、Cのトランスマスク110,113に従って、レンダリングすべき領域について、画像データを求め、フレームバッファ66に書き込む。トランスマスク106,110,113はそれぞれ排他処理済であるので、重なり合う領域は存在しない。従って、レンダリング処理部での画像データを求める演算処理は無駄なく行われる。
【0104】
フラグメント領域が64ピクセルで構成される場合は、それぞれのトランスマスクレジスタは64ビットのデータから構成される。従って、上記の排他処理部531は、64組の排他論理(A・!IN、B・!IN、C・!IN)の演算回路を有する。即ち、トランスマスク105は論理演算A・!Bにより求められ、トランスマスク106は論理演算A・!Cにより求められる。また、トランスマスク110は論理演算B・!Cにより求められる。尚、上記のA,B,CはそれぞれポリゴンA,B,Cのトランスマスクデータを、!B、!CはそれぞれポリゴンB、Cのトランスマスクデータの反転データを示す。
【0105】
上記の通り、半透明ポリゴンの画像処理では、トランスマスクレジスタを利用して、それぞれのポリゴンの有効領域を示すマスクデータを生成し、Z値比較による陰面消去処理により手前側に位置する有効領域を示すマスクデータをトランスマスクとして生成し、そのトランスマスクと他のポリゴンのトランスマスクとの排他処理を行う。特に、ポリゴンの処理の順番に起因して必要になる処理済のポリゴンのトランスマスクとの陰面消去処理は、排他処理用の論理回路を利用することで容易に実現できる。更に、フラクタル処理を利用することにより、ポリゴンの存在領域の判定とZ値の演算を短時間で行うことも可能になる。
【0106】
[半透明ポリゴンの処理]
図17は、半透明ポリゴンの処理を説明する為の例を示す図である。図17(A)には、表示画面201の例が示される。この表示画面201内には、半透明ポリゴンE、半透明ポリゴンF、半透明ポリゴンG及び不透明ポリゴンDが、図示される通り一部重なりあっている。図17(B)は、表示画面201の中央水平線に沿ったポリゴンの奥行きの関係を示す。即ち、ポリゴンEは最も奥(Z値最大)に位置し、ポリゴンF、GはポリゴンEよりも手前側に位置するが、互いに交差している。そして、不透明ポリゴンDが最も手前(Z値最小)に位置する。
【0107】
かかる半透明ポリゴンの画像処理では、第1に不透明ポリゴンにより隠れている部分は、レンダリング処理の対象から除かれる。第2に、半透明ポリゴンの重なり合った領域は、それぞれの色データを手前側の半透明ポリゴンの透明度α値にしたがってブレンディング処理する必要がある。しかも、重なり合った領域の色データの演算は、常に、奥側のポリゴンの色データXに手前側のポリゴンの色データYを透明度α値にしたがって求められることが必要である。即ち、重なり合った領域の色データYYの演算は、YY=α・X+(1−α)・Yである。従って、重なり合う領域では、奥側のポリゴンの色データを含む画像データが先に生成され、手前側のポリゴンの色データを含む画像データが後で生成されて、ブレンディング処理されることが必要である。
【0108】
そこで、本実施の形態例では、図17の表示画面201に示された不透明ポリゴンDと半透明ポリゴンE,F,Gの画像処理を行う場合は、最初に不透明ポリゴンの処理を行い、その後、半透明ポリゴンの処理を行う。しかも、半透明ポリゴンについて、表示画面内のZ方向で最も奥にある1枚目のポリゴンの領域を最初にレンダリング処理し、その後、逐次2枚目のポリゴンの領域、3枚目のポリゴンの領域についてレンダリング処理を行う。そして、全てのポリゴンの領域が処理されるまで続ける。
【0109】
半透明ポリゴンの不透明ポリゴンにより隠れている領域を削除する処理は、上記してきた不透明ポリゴンのZ値レジスタ561のZ値と比較する陰面消去処理により実現可能である。一方、重なりあう半透明ポリゴンの奥側の領域は、半透明ポリゴンのZ値が格納されるトランスZ値レジスタ562のトランス(透明)Z値と比較しZ値が大きい場合に有効とする逆陰面消去処理により、検出することができる。それと同時に、不透明ポリゴンの画像処理でも行った通り、一旦生成されたトランスマスクを利用して、既に生成された他の半透明ポリゴンのトランスマスクと排他処理を行うことで、処理の順番にかかわらず、有効な最も奥側の領域を検出することができる。
【0110】
上記の処理を行う為に、マスクコントロール部53は、トランスマスクレジスタ533と、エリアマスクレジスタ534と排他処理部531とを使用する。トランスマスクレジスタとエリアマスクレジスタは、不透明ポリゴンの場合と同様に、64ピクセルのフラグメント領域の場合は、64+1の65組の64ビットのレジスタで構成される。また、比較器56は、不透明ポリゴンのZ値を格納するZ値レジスタ561と、半透明ポリゴンのトランスZ値を格納するトランスZ値レジスタ562と、Z比較器564とトランスZ比較器565とを利用する。エリアマスクとは、半透明ポリゴンの描画処理すべき領域を示すマスク(第1のマスク)である。従って、最初の処理では不透明ポリゴンにより隠れている領域を除いた全ての領域にビットデータ「1」が記録される。また、トランスマスクとは、レンダリング処理部に供給される半透明(トランスルーセント)ポリゴンのレンダリング対象領域を示すマスク(第2のマスク)である。そして、トランスマスクによりレンダリング処理される毎に、エリアマスクからレンダリング済のトランスマスクの領域が削除される。最後にエリアマスクが全て無効になると、半透明ポリゴンの画像処理が終了する。エリアマスクからトランスマスクの領域を削除する演算は、排他処理部531により行われる。そして、処理の必要上、同時に2つのマスクレジスタ533,534が使用される。
【0111】
図18は、半透明ポリゴンの画像処理のフローチャート(1)を示す図である。図19は、同フローチャート(2)を示す図である。更に、図20〜22は、表示画面の奥から1枚目の領域を有効領域とするトランスマスクの生成処理を行う時のエリアマスクとトランスマスクの変化を示す図である。図23,24は、表示画面の奥から2枚目の領域を有効領域とするトランスマスクの生成処理を行う時のエリアマスクとトランスマスクの変化を示す図である。そして、図25,26は、表示画面の奥から3枚目の領域のトランスマスク生成の処理を行う時のエリアマスクとトランスマスクの変化を示す図である。そして、図27は、図20〜26の全てを表示する図である。図27を適宜参照することで、画像処理の理解を容易にする。更に、図38〜42は、図18,19の半透明ポリゴンの処理フローチャートに対応した図2のマスク生成部50内のデータの流れを示す図である。
【0112】
これらの図を参照しながら、半透明ポリゴンの画像処理を説明する。前提として、不透明ポリゴンの画像処理を終了している。また、半透明ポリゴンの処理の順番は特に問わない。仮に、図17の例のポリゴンE,F,Gの順番に処理されるとする。先ず、ポリゴンEについて、プリミティブバッファ52は、ジオメトリ処理部48から半透明ポリゴンデータであるプリミティブデータまたはそのIDを受け取り、保存する(S50)。そして、プリミディブバッファ52は、ポリゴンデータのうちフラクタル処理に必要なデータをフラクタルセットアップ部54に供給する。このフラクタル処理に必要なデータとは、例えば、頂点パラメータの内の表示座標及びZ値である(S51)。マスクコントロール部53は、空いているマスクレジスタ534にマスクパターンをセットして、フラクタル処理部55に初期マスクデータとして供給する(S52)。
【0113】
この初期マスクデータは、図20のマスク202を示すデータである。最初の処理では、初期マスクデータは全てのビットが有効「1」にセットされる。
【0114】
次に、フラクタルセットアップ部54は、領域判定の為の初期値を求め、フラクタル処理部55に供給する(S53)。この初期値は、図9のステップS3で示された通り、d1,d2,d3,(∂z/∂x)、(∂z/∂y)、czなどである。そして、フラクタル処理部55は、初期値をもとに領域判定のフラクタル処理を行いマスクデータを求め、初期マスクデータと論理積演算する。フラクタル処理部55は、更にピクセルのZ値演算をフラクタル処理で求める(S54)。かかるマスクデータ及びZ値は、比較器56のZ比較器564に与えられる。
【0115】
Z比較器564は、上記フラクタル処理で求めたピクセルのZ値と不透明ポリゴンのZ値レジスタ561のZ値と比較し、陰面消去処理によりマスクデータから不透明ポリゴンDの陰になっている領域を削り、エリアマスクとしてマスクコントロール部53に与える。具体的には、ピクセルのZ値が不透明ポリゴンのZ値レジスタ561のZ値よりも小さい場合に有効、大きい場合に無効とされる。これが条件1である(S60)。この場合、エリアマスクは図20中のマスク204の通りになる。かかるエリアマスク204は、ポリゴンEの領域から手前側の不透明ポリゴンDの領域の部分が削除されていて、半透明ポリゴンのレンダリング対象領域を示す。このエリアマスク204はマスクコントロール部53に与えられる。
【0116】
次に、トランスZ比較器565は、フラクタル処理で求めたピクセルのZ値と半透明ポリゴンのトランスZ値レジスタ562のトランスZ値と比較し、逆陰面消去処理によりエリアマスクから他の半透明ポリゴンの手前の領域を削り、トランスマスク203−Pとしてマスクコントロール部53に与える。具体的には、ピクセルのZ値がトランスZ値レジスタ562のZ値よりも大きい場合に有効、小さい場合に無効とされる。これが条件2である。また、有効な領域に対応するトランスZ値をトランスZ値レジスタ562に保存、更新する(S61)。この場合は、最初の半透明ポリゴンEであるので、エリアマスク204の全ての領域がトランスマスク203−Pの領域となる。以上のステップS50〜S61でのデータの流れが、図38に示される。
【0117】
マスクコントロール部53は、供給されたエリアマスクデータ204をエリアマスクレジスタ534に、トランスマスクデータ203−Pをトランスマスクレジスタ533に保存する(S62、図39)。また、マスクコントロール部53は、トランスマスク203−Pについて、他のトランスマスクレジスタのトランスマスクデータと排他処理を行い、他のトランスマスクを削除する。この排他処理は、排他処理部531により行われる(S62、図40)。但し、半透明ポリゴンEは最初のポリゴンであるので、他の生成済のトランスマスクは存在しないので、この時点では排他処理は行われない。
【0118】
次に、半透明ポリゴンFの画像処理が、図21に示される様に行われる。半透明ポリゴンFについても、図18のステップS50〜S54及びS60〜62の処理が行われる。その結果、不透明ポリゴンと陰面消去処理されて条件1を満たすエリアマスク207が生成される(S60)。更に、処理済の半透明ポリゴンとの逆陰面消去処理により、上記条件2を満たすトランスマスク206−Pが生成される(S61)。トランスマスク206−Pから理解される通り、より奥側に位置する半透明ポリゴンEの領域が削除されている。そして、マスクコントロール部53は、そのポリゴンFのトランスマスク206−Pと、既に生成されている他のポリゴンEのトランスマスク203−Pとで排他処理を行う(S62、図40)。その結果、両トランスマスク203−Pと206−Pとの間で重なり合う領域は存在しないので、ポリゴンEのトランスマスク203−Pは変更ない。
【0119】
最後に、半透明ポリゴンGの画像処理が、図22に示される様に行われる。半透明ポリゴンGについても、図18のステップS50〜S54及びS60〜62の処理が行われる。その結果、不透明ポリゴンと陰面消去処理されて条件1を満たすエリアマスク210が生成される(S60)。更に、処理済の半透明ポリゴンとの逆陰面消去処理により、上記条件2を満たすトランスマスク209−Pが生成される(S61)。トランスマスク209−Pから理解される通り、より奥側に位置する半透明ポリゴンEの領域が削除されている。
【0120】
そして、マスクコントロール部53は、そのポリゴンGのトランスマスク209−Pと、既に生成されている他のポリゴンEのトランスマスク203−Pとで排他処理を行う(S62、図40)。その結果、両トランスマスク203−Pと209−Pとの間で重なり合う領域は存在しないので、最終的なポリゴンEのトランスマスク203(図20)は変更ない。同様に、マスクコントロール部53は、そのポリゴンGのトランスマスク209−Pと、既に生成されている他のポリゴンFのトランスマスク206−Pとで排他処理を行う(S62、図40)。その結果、両トランスマスク206−Pと209−Pとの間で重なり合う領域が、先に処理されていたポリゴンFのトランスマスク206−Pから削除される(図21の領域206D)。最終的なポリゴンFのトランスマスク206が、図21に示される通り生成される。また、ポリゴンGのトランスマスク209−Pは、最後の半透明ポリゴンであるので、そのまま最終のトランスマスク209となる。
【0121】
上記の条件1(不透明ポリゴンよりもZ値が小さい)と条件2(他の半透明ポリゴンよりもZ値が大きい)とを満たすポリゴンE,F,Gの領域が、それぞれトランスマスク203,206,209に示される。かかる領域は、図17から明らかな通り、表示画面の最も奥に位置する1枚目の領域を示す。
【0122】
そして、図19のフローチャートに示される通り、マスクコントロール部53は、トランスマスクレジスタ533にそれぞれ保存されている有効なトランスマスク203,206,209のデータを、そのポリゴンデータと共にレンダリング処理部62に出力する(S63、図41)。そして、レンダリング処理部62では、トランスマスクの有効領域について、色データを含む画像データを演算して求め、フレームバッファ66に保存する。かかる画像データの色データは、後で、より手前に位置する半透明ポリゴンの色データとブレンディング処理される。以上で、1枚目の領域の画像処理が終了した。
【0123】
次に、2枚目以上の領域の画像処理が、図19のフローチャートのステップS64〜S75により行われる。
【0124】
半透明ポリゴンの2枚目の領域を検出するにあたり、描画すべき領域を示すエリアマスク204,207,210から、すでに1枚目の領域として描画済の領域であるトランスマスク203,206,209の領域が削除される。即ち、マスクコントロール部53は、排他処理部531により、エリアマスクレジスタ534のそれぞれのポリゴンのエリアマスクデータとトランスマスクレジスタ533の対応するポリゴンのトランスマスクデータとの排他論理(AM・!TM、但しAMはエリアマスクデータで、!TMはトランスマスクデータの反転データ)演算を行い、その結果をエリアマスクレジスタ534に保存する(S64、図41))。
【0125】
そして、更に、Z比較器564は、トランスZ値レジスタ562をクリアする。即ち、レジスタ562のビットデータを全て「0」にする(S65)。以上で、半透明ポリゴンの2枚目の領域の判定の準備が整った。
【0126】
図23は、半透明ポリゴンFの2枚目の処理におけるエリアマスクとトランスマスクを示し、図24は、半透明ポリゴンGの2枚目の処理におけるエリアマスクとトランスマスクを示す。上記したステップS64の排他処理により、表示画面の最も奥に位置する半透明ポリゴンEのエリアマスク204は、トランスマスク203と一致し、全て削除されて、2枚目以降の処理は不要である。ポリゴンFはそのエリアマスク211の領域が、ポリゴンGはそのエリアマスク214の領域がそれぞれ未描画の領域である。
【0127】
図19のフローチャートに沿って及び図42を参照して説明すると、プリミティブバッファ52は、ポリゴンデータのうちフラクタル処理に必要なデータをフラクタルセットアップ部54に供給する(S66)。この処理は、ステップS51と同様である。また、マスクコントロール部53は、フラクタル処理部55にエリアマスクレジスタ534内のエリアマスクのデータ(初期マスクデータ)を供給する(S67)。即ち、ポリゴンFの場合はエリアマスク211、ポリゴンGの場合はエリアマスク214である。そして、フラクタルセットアップ部54は、領域判定の為の初期値を求め、フラクタル処理部55に供給する(S68)。この処理は、ステップS53と同様である。
【0128】
そして、フラクタル処理部55は、初期値をもとに領域判定のフラクタル処理を行いマスクデータを求め、エリアマスクデータ211または214と論理積演算し、更にピクセルのZ値演算をフラクタル処理で求める(S69)。Z比較器564は、不透明ポリゴンのZ値レジスタ561のZ値と比較し、陰面消去処理によりマスクデータから陰の領域を削り、エリアマスク213または216をマスクコントロール部に与える(S70)。ここの処理は、上記した条件1を満たす領域の判定である。
【0129】
次に、Z比較器564は、トランスZ値レジスタ562のトランスZ値と比較し、エリアマスク213または216からZ値が小さいより手前の領域を削りトランスマスク212または215を生成し、マスクコントロール部に与える。また、Z値が大きい奥側のZ値をトランスZ値レジスタ562に保存、更新する(S71)。即ち、上記の条件2を満足する領域を検出する。ポリゴンFから先に処理されたとすると、そのトランスマスク212ーPは、エリアマスク213と同じである。また、その後に処理されるポリゴンGのトランスマスク215ーPは、より奥に位置するポリゴンFの領域(図24中の領域215D)が逆陰面消去処理により削除される。
【0130】
そして、マスクコントロール部53は、供給されたエリアマスクデータ213または216をエリアマスクレジスタ534に、トランスマスクデータ212−Pまたは215−Pをトランスマスクレジスタ533にそれぞれ保存する(S72、図39)。そして、他のトランスマスクレジスタのトランスマスクデータと排他処理を行い、重なった領域を他のトランスマスクから削除する(S72、図40)。その結果、先に処理されたポリゴンFのトランスマスク212−PからポリゴンGのトランスマスク215−Pと重なった領域(図23中の領域212D)が削除され、トランスマスク212となる。
【0131】
有効なエリアマスクを有するポリゴンFとポリゴンGとの処理が終わると、2枚目の最終トランスマスク212,215が確定したことになる。そこで、マスクコントロール部53は、トランスマスクレジスタ533内の有効なトランスマスク212,215とポリゴンデータをレンダリング処理部62に出力する(S73、図41)。
【0132】
レンダリング処理部では、トランスマスクとポリゴンデータとから2枚目の色データを演算し、既に保存しているフレームバッファ66の画像データの色データに対して、2枚目のポリゴンの透明度α値に従って、上記した通りブレンディング処理を行う。その結果得られた色データは再度フレームバッファ66に保存される。
【0133】
ステップS64と同様に、マスクコントロール部53は、エリアマスク213,216から既に描画されたトランスマスク212,215の領域を削除する為に、排他処理部531により排他処理を行う(S74、図41)。その結果、図25,26に示される通り、未描画領域を示すエリアマスク217,220がそれぞれ生成される。その後、3枚目の領域についての処理が行われる。3枚目の領域の処理も、2枚目の領域の処理と同様に、トランスZ値レジスタ562をクリアし(S65)、ステップS66からS72が実行される。その結果、図25,26に示される通り、エリアマスク219,222とトランスマスク218,221とがそれぞれ生成され、それぞれのレジスタに保存される。
【0134】
そして、マスクコントロール部53は、有効なトランスマスク218,221とそのポリゴンデータをレンダリング処理部62に出力する(S73、図41)。レンダリング処理部62は、トランスマスク218,221の領域について、ブレンディング処理を行って、色データを含む画像データを再度フレームバッファ66に保存する。
【0135】
最後に、マスクコントロール部53は、エリアマスク219,222から描画済の領域を示すトランスマスク218,221を削除すると(S74、図41)、有効なエリアマスクは消滅する。即ち、全ての描画すべき領域の処理が終了したことになる(S75)。
【0136】
上記の半透明ポリゴンに対する処理において、不透明ポリゴンに対する陰面消去処理を行うために、条件1を満たすエリアマスクを生成した。しかし、不透明ポリゴンが存在せず、半透明ポリゴンのみの場合は、条件1の処理は省略される。
【0137】
以上の通り、半透明ポリゴンに対する処理は、エリアマスクレジスタ534とトランスマスクレジスタ533とを同時に利用して、描画すべきポリゴンの領域を奥側から順にトランスマスクレジスタ533に生成し、レンダリング処理部に供給する。そして、描画すべきポリゴンの領域をエリアマスクレジスタ534に保存し、レンダリング処理した領域を逐次削除していく。そして、エリアマスクレジスタ534の有効領域がなくなるまで、処理を繰り返す。2種類のマスクレジスタと排他処理部とを利用するだけで、半透明ポリゴンの処理を効率的に行うことができる。
【0138】
[影処理]
次に、影処理について説明する。影処理では、光源からの光がポリゴンによって遮断された領域を検出し、その領域については光源による処理を行わない。従って、その領域は輝度が低いままとなり、表示された時に影の領域として表示される。
【0139】
画像処理におけるZ値を利用した陰面消去処理を説明したが、同様のハードウエアを利用して物体の影を描くことができるシャドーポリゴン法が提案されている。例えば、特開平2-73479 である。かかるシャドーポリゴン法は、シャドーボリュームと呼ばれる影付けの為の仮想の物体を利用する。シャドーボリュームとは、光源と物体によって生じる影空間であり、そのシャドーボリュームの内側がその物体の影になる領域であり、その外側は光源の光が照射される領域である。
【0140】
シャドーボリュームは、半無限の多面体であり、それを構成する複数の側面はシャドーポリゴンと呼ばれる半無限の多角形である。但し、コンピュータを利用した実際の画像処理においては、シャドーボリュームは、有限な多面体として、シャドーポリゴンは有限の多角形として処理される。従って、シャードーボリュームは複数のシャードーポリゴンで構成され、シャドーポリゴンを通常のポリゴンと同様に取り扱い、影処理を行うことができる。
【0141】
本実施の形態例では、影処理に上記のエリアマスク534、排他的論理和処理部532及び論理和処理部538とを利用する。本実施の形態例の説明をする前に、上記の特開平2-73479 のアルゴリズムについて簡単に説明する。
【0142】
図28は、シャドーボリュームとそれを構成するシャドーポリゴンを利用した陰影処理を示す図である。この例では、光源LS1,LS2,LS3により形成されるシャドーボリュームSV1,SV2,SV3が、不透明ポリゴンP1,P2,P3により生成される。図中、左側の無限遠に光源が存在するので、不透明ポリゴンP1,P2,P3の右側にそれぞれシャドーボリュームSV1,SV2,SV3が生成される。また、図中、シャドーボリュームの断面が示され、従って、シャドーボリュームSV1はシャドーポリゴンSP11,SP12により形成され、シャドーボリュームSV2はシャドーポリゴンSP21,SP22により形成され、シャドーボリュームSV3はシャドーポリゴンSP31,SP32により形成される。
【0143】
今仮に、視点の位置がシャドーボリュームの外の位置の視点1にあるとする。シャドーボリュームの中に位置する陰の領域か、外に位置する光が照射されている領域かを検出するためには、視点1からZ軸の方向(矢印方向)にシャドーポリゴンを通過したか否かをカウントし、そのカウント値が偶数か奇数かを検出する。図28に示される通り、視点1が、シャドーボリュームの外側に位置する場合は、偶数がシャドーボリュームの外の領域、奇数がシャドーボリュームの中の領域であることが理解される。
【0144】
従って、あるポリゴンの表面が影の領域か否かの判断をするためには、そのポリゴンの位置よりも手前、即ちポリゴンの位置と視点の位置の間に存在するシャドーポリゴンの数をカウントし、そのカウント値が偶数であれば影の領域内、奇数であれば影の領域外であるとすれば良い。但し、視点2の如くシャドーボリュームSV1,SV2が重なる領域が存在する場合は、上記偶数、奇数の判断はできなくなる。その場合は、いずれか1つのシャドーボリュームについてのみ判断し、後に残りのシャドーボリュームについて判断する必要がある。
【0145】
例えば、図28中に示されるシャドーボリュームSV3を横切るポリゴンP4が存在するとすると、ポリゴンP4の領域a−bは、視点1との間にシャドーポリゴンSP31,SP32が2枚存在するので、シャドーボリュームSV3の外の領域と判断される。また、ポリゴンP4に領域b−cは、視点1との間にシャドーポリゴンSP32が1枚存在するので、シャドーボリュームSV3の中の領域と判断される。そして、領域c−dは、視点1との間にシャドーポリゴンが存在しないので、シャドーボリュームSV3の外と判断される。
【0146】
上記の通り、シャドーボリュームとシャドーポリゴンを利用した影処理は、上記説明したZ値を利用した陰面消去法と同様の方法を利用し、例えば視点との間に何枚のシャドーポリゴンが存在するかをカウントすることで行うことができる。
【0147】
尚、視点がシャドーボリューム内に位置する場合は、上記の奇数と偶数に対して、それぞれ影の領域外と影の領域内との関係が視点がシャドーボリューム外に位置する場合と逆になる。
【0148】
同様の考え方によれば、Z値がより大きいシャドーポリゴンを検出する逆陰面消去法と同様の方法が利用できる。即ち、ポリゴンP4と無限遠との間にあるシャドーポリゴンの数をカウントすることで、同様にポリゴンP4の領域がシャドーボリューム内に位置するか否かを検出できる。従って、その場合は、ポリゴンP4のZ値よりも大きいZ値を有するシャドーポリゴンの領域が、奇偶転換の対象領域となる。
【0149】
[影処理]
影処理の方法は、図2に示したマスク生成部を利用して、フラクタル処理によるシャドーポリゴンの有効領域をエリアマスクに生成し、視点との間のシャドーポリゴンの枚数の奇数か偶数かを格納する影処理マスクデータを生成してエリアマスクレジスタに保存することを基本とする。或いは、無限遠との間のシャドーポリゴンの枚数の奇数か偶数かを格納する影処理マスクデータを生成してエリアマスクレジスタに保存することを基本とする。更に、上記の影処理マスクデータをシャドーボリューム毎に生成し、最後の全てのシャドーボリュームに対応する影処理マスクデータの論理和をとり、合成された影処理マスクデータを生成してレンダリング処理部に供給する。シャドーボリュームが重なり合う領域はいずれにしても影になるので、それぞれのシャドーボリュームにより影になる領域を影処理マスクデータとして別々に求めて、最後の論理和をとる。また、影処理の前に不透明ポリゴンのレンダリングが終了し、そのZ値が不透明ポリゴンZ値レジスタ561に格納されていることを前提とする。
【0150】
従って、影処理では、図2中のマスク生成部50において、マスクコントロール部53の排他的論理和処理部532、論理和処理部538、シャドーボリューム毎に設けられたエリアマスクレジスタ534が利用される。また、比較部56の、不透明ポリゴンZ値レジスタ561とZ値比較器564とが利用されるだけである。
【0151】
図29は、影処理を説明する為の例を示す図である。図29(A)は、表示画面内のシャドーボリュームSV1,SV2と、通常ポリゴンP1,P2とからなる例であり、図29(B)は、Z値方向のシャドーボリュームSV1,SV2を構成するシャドーポリゴンの位置関係を示す。シャドーボリュームSV1,SV2は、いずれも三角錐であり、それぞれ画面前方のシャドーポリゴン1F、2Fと、画面後方の左右のシャドーポリゴン1L、1R及び2L、2Rで構成される。
【0152】
図30は、影処理のフローチャート図である。また、図31、図32は、図29の例を影処理により処理した場合の影処理マスクデータのエリアマスクを示す図である。そして、図33は、最後に合成された合成影処理マスクデータを示す図である。更に、図43〜45は、図30のフローチャートの各データの流れを示す図である。
【0153】
図30のフローチャートの概略は、シャドーボリューム毎に不透明ポリゴンと視点あるいは無限遠との間に位置するシャドーポリゴンを検出し、その個数が奇数か偶数かを格納する影処理マスクデータ(エリアマスクデータ)に対して、その検出された領域について奇数と偶数との反転処理を、排他的論理和処理により行う。この処理を全てのシャドーボリュームに対して繰り返し行い、最後に、それぞれのシャドーボリューム毎に生成したエリアマスクレジスタ内の影処理マスクデータを、論理和処理部538で処理して、合成された影処理マスクデータを生成し、レンダリング処理部に供給する。以下、図30のフローチャートに従って、及び図31〜33及び図43〜45を参照して影処理を詳細に説明する。
【0154】
先ず、不透明ポリゴンP1,P2の処理が終了していることが前提である。ステップS100〜S104は、半透明ポリゴンの画像処理の場合とほぼ同じであるが、影処理の場合は対象がシャドーポリゴンとなる点で異なる。先ず、シャドーポリゴン1Fについて、プリミティブバッファ52は、ジオメトリ処理部48からシャドーポリゴンデータであるプリミティブデータまたはそのIDを受け取り、保存する(S100)。そして、プリミティブバッファ52は、ポリゴンデータを記憶し、ポリゴンデータのうちフラクタル処理に必要なデータをフラクタルセットアップ部54に供給する。このフラクタル処理に必要なデータとは、例えば、頂点パラメータの内の表示座標及びZ値である(S101)。プリミティブバッファ52は、空いているエリアマスクレジスタにマスクパターンをセットして、フラクタル処理部55に初期マスクデータとして供給する(S102)。この初期マスクデータは、全てのビットが有効「1」にセットされる。
【0155】
次に、フラクタルセットアップ部54は、領域判定の為の初期値を求め、フラクタル処理部55に供給する(S103)。この初期値は、図9のステップS3で示された通り、d1,d2,d3,(∂z/∂x)、(∂z/∂y)、czなどである。そして、フラクタル処理部55は、初期値をもとに領域判定のフラクタル処理を行いマスクデータを求め、初期マスクデータと論理積演算する。フラクタル処理部55は、更にピクセルのZ値演算をフラクタル処理で求める(S104)。かかるマスクデータ及びZ値は、比較器56のZ比較器564に与えられる。
【0156】
Z比較器564は、上記フラクタル処理で求めたピクセルのZ値と不透明ポリゴンのZ値レジスタ561のZ値と比較し、陰面消去処理によりマスクデータから不透明ポリゴンP1,P2の陰になっている領域を削り、図31のエリアマスク402としてマスクコントロール部53に与える(S105、図43)。ここでの陰面消去処理は、具体的にはシャドーポリゴンのピクセルのZ値がZ値レジスタのZ値よりも小さい領域を有効にする処理である。或いは、前述の通り逆陰面消去処理により、ピクセルのZ値がZ値レジスタのZ値よりも大きい領域を有効にする処理でも良い。前者の場合は、不透明ポリゴンと視点との間に存在するシャドーポリゴンの領域を有効領域とするアルゴリズムである。後者は、不透明ポリゴンと無限遠との間を有効領域とする逆のアルゴリズムである。
【0157】
視点と不透明ポリゴンとの間のシャドーポリゴンをカウントする前者の処理では、ピクセルのZ値がZ値レジスタのZ値よりも小さい場合に有効、大きい場合に無効とされ、エリアマスクは図31中のマスク402の通りになる。かかるエリアマスク402は、シャドーポリゴン1Fの領域から手前側の不透明ポリゴンP1,P2の領域の部分が削除され、シャドーポリゴンの影処理対象領域を示す。
【0158】
そして、マスクコントロール部53は、排他的論理和処理部532により、比較器56から供給されたエリアマスクデータ402と既に保存されているエリアマスクレジスタ534内のマスクデータとの排他的論理和処理を行い、エリアマスクレジスタ534に保存する(S106、図44)。エリアマスクレジスタ534の初期値は全て、例えば偶数を示す「0」である。従って、上記の排他的論理和処理により、比較器から供給されたエリアマスク402の有効領域は、奇数を示す「1」に転換される。即ち、ここでの排他的論理和処理は、不透明ポリゴンと視点(或いは無限遠)との間に位置するシャドーポリゴンの数の奇数か偶数かのデータを反転する処理である。本明細書では、かかる排他的論理和処理を奇偶転換処理と称する。その結果、図31に示されるエリアマスク402が生成される。最初のシャドーポリゴン1Fであるので、エリアマスク402は、シャドーポリゴン1Fの形状と同じである。
【0159】
次に、同じシャドーボリュームSV1のシャドーポリゴン1Lが、上記と同様にステップS100〜S106に従って処理される。ステップS105によりマスクコントロール部53に供給されるマスクデータは、図31の307の如くなる。このマスクデータ307に示される領域が、シャドーポリゴン1Lのうち不透明ポリゴンP1,P2と視点との間に位置する領域である。そして、マスクデータ402と307との排他的論理和処理(EOR)による奇偶転換処理の結果、図31に示されるエリアマスク403が生成される(S106、図44)。
【0160】
同様に、シャドーボリュームSV1のシャドーポリゴン1RがステップS100〜S106に従って処理される。シャドーポリゴン1Rのマスクデータ311がマスクコントロール部53に供給され、マスクデータ403との排他的論理和処理による奇偶転換処理の結果、図31に示されるエリアマスク404が生成される。以上でシャドーボリュームSV1のIDを有するシャドーポリゴンの処理が完了し、エリアマスク404がシャドーボリュームSV1により形成される影の領域を示す。従って、このエリアマスク404が影処理マスクとしてエリアマスクレジスタ534に保存される(S106、図44)。
【0161】
次に、シャドーボリュームSV2のIDを有するシャドーポリゴン2F、2L、2Rが同様にステップS100〜S106に従って処理される。この影処理では、シャドーボリュームの重なり合う領域を考慮することなく、陰面消去処理と奇偶転換処理が行われて、図32に示す通り、エリアマスク405,406,407が順次生成される。エリアマスク407がシャドーボリュームSV2により形成される影の領域を示す。従って、このエリアマスク407が影処理マスクとしてシャドーポリゴンSV2に対応するエリアマスクレジスタ534に保存される。
【0162】
以上の通り、エリアマスク(影処理マスク)はシャドーボリュームに対応してそれぞれ生成される。そして、全てのシャドーボリュームのポリゴンが終了すると(S107)、マスクコントロール部53は、論理和処理部538によりシャドーボリュームID毎のエリアマスクレジスタ534のマスクデータの論理和をとり、合成された影処理マスクを生成し、レンダリング処理部62に供給する(S108、図45)。図31のエリアマスク404と図32のエリアマスク407との論理和処理の結果、図33のライトマスク408が生成される。異なるシャドーボリュームにより生成される影の領域(影処理マスクの有効領域)は、重なりあう領域もやはり影の領域となる。
【0163】
図33の合成影処理マスク408が、レンダリング処理部に供給され、不透明ポリゴンのトランスマスクと共にレンダリング処理に利用される。その結果、光源に対する影を有効に表現することができる。
【0164】
上記の通り、影処理では、シャドーボリューム毎に影処理マスクに相当するエリアマスクを生成し、最後の全てのエリアマスクの論理和処理を行うだけでよいので、効率的な処理を可能にする。
【0165】
[汎用コンピュータによる画像処理]
図46は、本実施の形態例の画像処理を汎用コンピュータを利用してソフトウエアにより行う場合の構成例を示す図である。汎用コンピュータを利用して画像処理を行う場合は、画像処理の演算は記録媒体内に格納されたプログラムに従って行われる。従って、画像処理プログラムをコンピュータが読み取り可能な記録媒体に格納することで、汎用コンピュータは画像処理専用コンピュータとして動作する。画像処理プログラムは、上記したフローチャート等で説明した各手順をコンピュータに実行させる。また、各マスクデータ間の論理積処理、排他処理、排他的論理和処理、論理和処理は、コンピュータの演算機能を利用することができる。
【0166】
図12の例では、CPU70、演算用のRAM71、ゲームプログラムや画像処理プログラムが格納されたROM72が、バス76に接続される。また、バス76に接続された入出力部73は、操作者が操作する操作部74に接続され、操作信号を入力する。また、画像処理の為に、RAM71内にポリゴンデータを記憶するプリミティブバッファ52,不透明ポリゴンZ値レジスタ561、トランスZ値レジスタ562、各マスクレジスタ533,534、テクスチャーマップメモリ64が設けらる。また、フレームバッファメモリ66は、バス76に接続され、外部の表示装置68にも接続される。
【0167】
この例では、画像処理プログラムがROM72内に格納されているが、それ以外に、外部のCDROMや磁気テープなどの記録媒体75からRAM71内に画像処理プログラムをインストールすることもできる。
【0168】
【発明の効果】
以上説明した通り、本発明によれば、所定の領域内のピクセル毎に有効または無効を示すマスク、奇数または偶数を示すマスクを利用して、排他処理、排他的論理和処理、論理和処理を行うことで、比較的単純な論理演算により画像処理を行うことができる。
【0169】
また、本発明によれば、フラクタル処理を利用することで、所定の領域内のポリゴンの領域を示すエリアマスクを効率的に生成することができ、その後エリアマスクを利用して、上記の論理演算を行って画像処理を行うことができる。
【0170】
本発明によれば、不透明ポリゴンの画像処理において、Z値を利用した陰面消去法を利用して各ポリゴン毎に有効領域を示すトランスマスクを生成し、更にトランスマスク間の排他処理を行うことで、表示されるべき有効領域を有するポリゴン毎のトランスマスクを効率的に形成することができる。そして、そのトランスマスクを利用してレンダリング処理を行うことができる。
【0171】
本発明によれば、半透明の画像処理において、Z値を利用した陰面消去法を利用して不透明ポリゴンにより隠される領域を除去したエリアマスクを生成し、Z値の大きい順に抽出する逆陰面消去法により、表示画面の奥側の半透明ポリゴンの領域を抽出してトランスマスクを生成し、更にトランスマスク間で排他処理を行うことで、互いに重なりある領域を適宜処理することができる。そして、表示画面の奥側から順番にトランスマスクを生成してレンダリング処理するので、半透明ポリゴンに必要なブレンディング処理を効率的に行うことができる。
【0172】
本発明によれば、影処理において、シャドーボリューム毎に描画ポリゴンと視点(或いは無限遠)との間のシャドーポリゴンの位置を陰面処理によりマスクデータとして求め、排他的論理和処理によりシャドーポリゴンの枚数を奇数か偶数かを示す影処理マスクデータを求めてエリアマスクレジスタに保存する。そして、最後にシャドーボリューム毎に求めた影処理マスクデータの論理和処理により影となる合成された影処理マスクデータを生成することができる。従って、簡単な論理演算により効率的に陰影処理を行うことができる。
【図面の簡単な説明】
【図1】本実施の形態例の画像処理装置の全体構成図である。
【図2】マスク生成部の構成例を示す図である。
【図3】ジオメトリ処理部により生成されるポリゴンデータの例を示す図である。
【図4】フラクタル法について説明する図である。
【図5】任意の点P(x,y)が、三角形のポリゴン10内に位置するか否かの判断のアルゴリズムについて説明する図である。
【図6】表示画面30内に3つのポリゴンPG1,PG2,PG3が表示される例を示す図である。
【図7】フラクタル処理部の具体的構成例を示す図である。
【図8】マスクレジスタの詳細な構成例を示す図である。
【図9】フラクタル処理のフローチャート図である。
【図10】描画処理の全体の流れを示すフローチャート図である。
【図11】不透明ポリゴンの処理を説明する為の例を示す図である。
【図12】本実施の形態例の不透明ポリゴンの処理のフローチャート図である。
【図13】図11の例を処理する場合のトランスマスクの変化を示す図である。
【図14】図11の例を処理する場合のトランスマスクの変化を示す図である。
【図15】図11の例を処理する場合のトランスマスクの変化を示す図である。
【図16】図11の例を処理する場合のトランスマスクの変化を示す図である。
【図17】半透明ポリゴンの処理を説明する為の例を示す図である。
【図18】本実施の形態例の半透明ポリゴンの処理のフローチャート図(1)である。
【図19】本実施の形態例の半透明ポリゴンの処理のフローチャート図(2)である。
【図20】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図21】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図22】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図23】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図24】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図25】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図26】図17の例を処理する場合のエリアマスクとトランスマスクの変化を示す図である。
【図27】図17の例を処理する場合のエリアマスクとトランスマスクの全体の変化を示す図である。
【図28】シャドーボリュームとそれを構成するシャドーポリゴンを利用した陰影処理を示す図である。
【図29】陰影処理を説明する為の例を示す図である。
【図30】第2の陰影処理のフローチャート図である。
【図31】第2の陰影処理により処理した場合のエリアマスクを示す図である。
【図32】第2の陰影処理により処理した場合のエリアマスクを示す図である。
【図33】第2の陰影処理により処理により生成された合成影処理マスクを示す図である。
【図34】不透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図35】不透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図36】不透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図37】不透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図38】半透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図39】半透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図40】半透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図41】半透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図42】半透明ポリゴンを処理する場合のマスク生成部50内のデータの流れを示す図である。
【図43】影処理する場合のマスク生成部50内のデータの流れを示す図である。
【図44】影処理する場合のマスク生成部50内のデータの流れを示す図である。
【図45】影処理する場合のマスク生成部50内のデータの流れを示す図である。
【図46】本実施の形態例の画像処理を汎用コンピュータを利用してソフトウエアにより行う場合の構成例を示す図である。
【符号の説明】
50 マスク生成部
52 プリミティブバッファ
53 マスクコントロール部
54 フラクタルセットアップ部
55 フラクタル処理部
56 比較器
62 レンダリング処理部
66 フレームバッファ
531 排他処理部
532 排他的論理和処理部
538 論理和処理部
533 トランスマスクレジスタ
534 エリアマスクレジスタ
564 不透明ポリゴンZ比較器
565 半透明ポリゴンZ比較器
Claims (13)
- 複数のポリゴンを表示する為の画像データを生成する画像処理装置において、
前記ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他のポリゴンのZ値よりも手前側のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他のポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成をポリゴン毎に行うマスク生成部と、
前記マスク生成部から供給される新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、前記各ポリゴンのレンダリング処理を行うレンダリング処理部とを有する画像処理装置。 - 複数の半透明ポリゴンを表示する為の画像データを生成する画像処理装置において、
前記半透明ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記半透明ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示す半透明Z値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他の半透明ポリゴンの半透明Z値よりも奥側の半透明Z値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他の半透明ポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成を半透明ポリゴン毎に行うマスク生成部と、
前記マスク生成部から供給される前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、画像データを生成する前記各ポリゴンのレンダリング処理を行うレンダリング処理部とを有し、
前記マスク生成部は、更に、前記第1のマスクデータの有効領域から前記新たな第2のマスクデータの有効領域を削除する排他処理を行って新たな第1のマスクデータを生成し、前記新たな第1のマスクデータに基づいて次の前記新たな第2のマスクデータを生成し、前記レンダリング処理部は、前記次の新たな第2のマスクデータに従って前記レンダリング処理を行う画像処理装置。 - 描画対象ポリゴン上の影領域を表示する為の画像データを生成する画像処理装置において、
シャドーボリュームを規定するシャドーポリゴンの表示画面内の位置データを含むシャドーポリゴンデータから、表示画面内の前記シャドーポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、前記第1のマスクデータの有効ピクセル領域のうち前記描画対象ポリゴンのZ値より手前側(または奥側)のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、視線方向であって前記描画対象ポリゴンと視点(または無限遠)との間に位置するシャドーポリゴンの枚数の奇偶データを有する影処理マスクデータの該奇偶データを、前記第2のマスクデータの有効領域について奇偶反転して新たな影処理マスクデータを生成し、上記影処理マスクデータの生成を前記シャドーボリュームを規定する全てのシャドーポリゴンに対して行うマスク生成部と、
前記マスク生成部から供給される前記影処理マスクデータに従って、レンダリング処理を行うレンダリング処理部とを有する画像処理装置。 - 複数のポリゴンを表示する為の画像データを生成する画像処理方法において、
前記ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他のポリゴンのZ値よりも手前側のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他のポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成をポリゴン毎に行うマスク生成工程と、
前記マスク生成工程により生成された前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、前記各ポリゴンのレンダリング処理を行うレンダリング処理工程とを有する画像処理方法。 - 複数の半透明ポリゴンを表示する為の画像データを生成する画像処理方法において、
前記半透明ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記半透明ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示す半透明Z値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他の半透明ポリゴンの半透明Z値よりも奥側の半透明Z値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他の半透明ポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成を半透明ポリゴン毎に行うマスク生成工程と、
前記マスク生成工程で生成された前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、画像データを生成する前記各ポリゴンのレンダリング処理を行うレンダリング処理工程とを有し、
前記マスク生成工程で、更に、前記第1のマスクデータの有効領域から前記新たな第2のマスクデータの有効領域を削除する排他処理を行って新たな第1のマスクデータを生成し、前記新たな第1のマスクデータに基づいて次の前記新たな第2のマスクデータを生成し、
前記レンダリング処理工程で、前記次の新たな第2のマスクデータに従って前記レンダリング処理を行う画像処理方法。 - 請求項5において
前記マスク生成工程では、更に、
前記第1のマスクデータの有効領域から前記新たな第2のマスクデータの有効領域を削除する排他処理を行って新たな第1のマスクデータを生成し、前記新たな第1のマスクデータに基づいて次の前記新たな第2のマスクデータを生成することを、
前記新たな第1のマスクデータから有効領域がなくなるまで、繰り返し行うことを特徴とする画像処理方法。 - 請求項5または6において
前記レンダリング処理工程で、前記次の新たな第2のマスクデータに従って行うレンダリング処理において、前に供給した前記新たな第2のマスクデータの有効領域と前記次の新たな第2のマスクデータの有効領域とで重なる領域に、所定のブレンディング処理を行うことを特徴とする画像処理方法。 - 描画対象ポリゴン上の影領域を表示する為の画像データを生成する画像処理方法において、
シャドーボリュームを規定するシャドーポリゴンの表示画面内の位置データを含むシャドーポリゴンデータから、表示画面内の前記シャドーポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、前記第1のマスクデータの有効ピクセル領域のうち前記描画対象ポリゴンのZ値より手前側(または奥側)のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、視線方向であって前記描画対象ポリゴンと視点(または無限遠)との間に位置するシャドーポリゴンの枚数の奇偶データを有する影処理マスクデータの該奇偶データを、前記第2のマスクデータの有効領域について奇偶反転して新たな影処理マスクデータを生成し、上記影処理マスクデータの生成を前記シャドーボリュームを規定する全てのシャドーポリゴンに対して行うマスク生成工程と、
前記マスク生成工程で生成された前記影処理マスクデータに従って、レンダリング処理を行うレンダリング処理工程とを有する画像処理方法。 - 請求項8において、
複数のシャドーボリュームが存在し、
前記マスク生成工程で、更に、前記複数のシャドーボリュームに対してそれぞれ前記影処理マスクデータを生成し、該複数の影処理マスクデータの有効領域を重ね合わせた有効領域を有する合成影処理マスクデータを生成し、
前記レンダリング処理工程で、該合成影処理マスクデータを前記影処理マスクデータとして取り扱って前記レンダリング処理を行うことを特徴とする画像処理方法。 - 請求項8または9において、
前記レンダリング処理工程は、前記影処理マスクデータに従って、該影処理マスクデータが示す有効領域について、前記描画対象ポリゴン上に影領域を表示するレンダリング処理を行うことを特徴とする画像処理方法。 - 複数のポリゴンを表示する為の画像データを生成する画像処理手順をコンピュータに実行させる画像処理プログラムを記録した該コンピュータ読み取り可能な記録媒体において、
前記画像処理手順は、
前記ポリゴンの表示画面内の位置データを含むポリゴンデータを供給され、表示画面内の前記ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他のポリゴンのZ値よりも手前側のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他のポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成をポリゴン毎に行うマスク生成手順と、
前記マスク生成手順により生成された新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、前記各ポリゴンのレンダリング処理を行うレンダリング処理手順とを有する画像処理プログラムを記録した記録媒体。 - 複数の半透明ポリゴンを表示する為の画像データを生成する画像処理手順をコンピュータに実行させる画像処理プログラムを記録した該コンピュータ読み取り可能な記録媒体において、
前記画像処理手順は、
前記半透明ポリゴンの表示画面内の位置データを含むポリゴンデータから、表示画面内の前記半透明ポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示す半透明Z値とを生成し、該第1のマスクデータの有効ピクセル領域のうち既に処理済の他の半透明ポリゴンの半透明Z値よりも奥側の半透明Z値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、生成された第2のマスクデータの有効領域を生成済の他の半透明ポリゴンの第2のマスクデータの有効領域から削除する排他処理を行って新たな第2のマスクデータを生成し、上記新たな第2のマスクデータの生成を半透明ポリゴン毎に行うマスク生成手順と、
前記マスク生成手順で生成された前記新たな第2のマスクデータに従って、該新たな第2のマスクデータが示す有効領域について、画像データを生成する前記各ポリゴンのレンダリング処理を行うレンダリング処理手順とを有し、
前記マスク生成手順で、更に、前記第1のマスクデータの有効領域から前記新たな第2のマスクデータの有効領域を削除する排他処理を行って新たな第1のマスクデータを生成し、前記新たな第1のマスクデータに基づいて次の前記新たな第2のマスクデータを生成し、
前記レンダリング処理手順で、前記次の新たな第2のマスクデータに従って前記レンダリング処理を行う画像処理プログラムを記録した記録媒体。 - 描画対象ポリゴン上の影領域を表示する為の画像データを生成する画像処理手順をコンピュータに実行させる画像処理プログラムを記録した該コンピュータ読み取り可能な記録媒体において、
前記画像処理手順は、
シャドーボリュームを規定するシャドーポリゴンの表示画面内の位置データを含むシャドーポリゴンデータから、表示画面内の前記シャドーポリゴンの有効ピクセル領域を示す第1のマスクデータと該有効ピクセル毎の表示画面内の奥行きを示すZ値とを生成し、前記第1のマスクデータの有効ピクセル領域のうち前記描画対象ポリゴンのZ値より手前側(または奥側)のZ値のピクセルの領域を有効ピクセル領域とする第2のマスクデータを生成し、視線方向であって前記描画対象ポリゴンと視点(または無限遠)との間に位置するシャドーポリゴンの枚数の奇偶データを有する影処理マスクデータの該奇偶データを、前記第2のマスクデータの有効領域について奇偶反転して新たな影処理マスクデータを生成し、上記影処理マスクデータの生成を前記シャドーボリュームを規定する全てのシャドーポリゴンに対して行うマスク生成手順と、
前記マスク生成手順で生成された前記影処理マスクデータに従って、レンダリング処理を行うレンダリング処理手順とを有する画像処理プログラムを記録した記録媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7631298A JP4035649B2 (ja) | 1998-03-24 | 1998-03-24 | 画像処理装置及び画像処理方法 |
US09/184,240 US6320580B1 (en) | 1997-11-07 | 1998-11-02 | Image processing apparatus |
GB0002522A GB2351217B (en) | 1997-11-07 | 1998-11-03 | Image processing apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7631298A JP4035649B2 (ja) | 1998-03-24 | 1998-03-24 | 画像処理装置及び画像処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11272883A JPH11272883A (ja) | 1999-10-08 |
JP4035649B2 true JP4035649B2 (ja) | 2008-01-23 |
Family
ID=13601866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7631298A Expired - Fee Related JP4035649B2 (ja) | 1997-11-07 | 1998-03-24 | 画像処理装置及び画像処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4035649B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3369159B2 (ja) | 2000-02-17 | 2003-01-20 | 株式会社ソニー・コンピュータエンタテインメント | 画像描画方法、画像描画装置、記録媒体及びプログラム |
JP3761085B2 (ja) * | 2001-11-27 | 2006-03-29 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置及びその構成部品、レンダリング処理方法 |
-
1998
- 1998-03-24 JP JP7631298A patent/JP4035649B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11272883A (ja) | 1999-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6320580B1 (en) | Image processing apparatus | |
US11734879B2 (en) | Graphics processing using directional representations of lighting at probe positions within a scene | |
US6774910B2 (en) | Method and system for providing implicit edge antialiasing | |
US7126600B1 (en) | Method and apparatus for high speed block mode triangle rendering | |
KR20050030595A (ko) | 화상 처리 장치 및 그 방법 | |
McGuire et al. | Hardware-determined feature edges | |
US8698799B2 (en) | Method and apparatus for rendering graphics using soft occlusion | |
JPH04289984A (ja) | ビット平面マスキングを用いた消去表面表示システムおよびその方法 | |
KR20050030569A (ko) | 화상 처리 장치 및 그 방법 | |
WO2008091198A1 (en) | Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program | |
WO2000033257A1 (en) | A method for forming a perspective rendering from a voxel space | |
CN116681860A (zh) | 一种特征线渲染方法、装置、电子设备及存储介质 | |
JPH11175752A (ja) | 画像処理装置及び画像処理方法 | |
US8648874B2 (en) | Method and system for providing edge antialiasing | |
JP4035649B2 (ja) | 画像処理装置及び画像処理方法 | |
JP2019530069A (ja) | 並列マイクロポリゴンラスタライザ | |
Kim et al. | Fast volume rendering with interactive classification | |
GB2331217A (en) | Image processor | |
JP3258286B2 (ja) | 半透明物体と不透明物体とが混在する複数の物体についての画像データをコンピュータ表示画面に表示する描画方法および描画装置 | |
US20060061573A1 (en) | Method and apparatus for rendering a quadrangle primitive | |
JP4106719B2 (ja) | 画像処理装置 | |
JP4042377B2 (ja) | 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム | |
JPH11185052A (ja) | 3次元コンピュータグラフィックスのテクスチャマッピング座標計算装置および方法 | |
CN117893655B (zh) | 一种提升裁剪点搜索速度和gpu速度的方法 | |
JP4188463B2 (ja) | 画像生成装置、画像生成方法および記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050324 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070918 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071002 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071015 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101109 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |