(57)【特許請求の範囲】
【請求項１】
画像処理装置が画像平面に投影されるための複数の三角形の画像基本要素からの二次元ピクセル画像をレンダリングする画像処理方法であって、当該方法において、前記三角形の頂点で保持された値からの補間によって得られたピクセル単位の属性値が、前記投影された三角形の画像基本要素内の各々のピクセル上にマッピングされ、そして、各三角形の画像基本要素に対し、
前記三角形の画像基本要素の投影前に、前記三角形の画像基本要素が、前記三角形の画像基本要素の各々のエッジと平行の座標軸(s, t)と、前記エッジ間の前記頂点と一致する原点と、を持つ各々の二次元座標システムを用いてパラメータ化され、
前記三角形の画像基本要素の投影中に、一般化された補間関数が、前記パラメータ化された座標システムに関して適用され、前記二次元座標システムに関する前記三角形内の位置でのパラメータ値を決定し、
前記三角形の画像基本要素の投影後、前記三角形の画像基本要素内の位置での前記決定されたパラメータ値は、各ピクセルでの属性値を与えるために、及び、全ての三角形の画像基本要素からのピクセル単位の属性値を組み合わせてピクセル単位の色の値を提供するために、各頂点での１つ以上の属性について記憶された値からの寄与を決定する、画像処理方法において、
前記方法が、ピクセルを透光性ピクセルとして特徴づけることと、透光性ピクセルが別のピクセルをオーバーレイするときに、最も近くにある透光性ピクセルの色から得られたピクセル単位の色の値を供給することと、をさらに具備し、前記透光性ピクセルは従来型透光性、テクスチャ透光性、及び、スクリーンドア型の透光性の１つを示すことを特徴とする、画像処理方法。
【請求項２】
透光性ピクセルフラグメントが、前記三角形の画像基本要素によって完全に覆われていても部分的に覆われていても、部分的なフラグメントとして特徴付けられる、請求項１に記載の方法。
【請求項３】
前記ピクセルが、前記ピクセルの中心が前記三角形の画像基本要素の内側にあるか外側にあるかを決定するために、透視補正補間s/z、t/z、及び1/zを用いて検定され、ｚは、前記ピクセルの深さの値である、請求項１又は２に記載の方法。
【請求項４】
前記三角形の画像基本要素の内側又は外側に位置するかを決定する前記検定が、前記ピクセルの中心から所定距離内の複数のサンプルポイントの各々で更に実行される、請求項３に記載の方法。
【請求項５】
２つの三角形の画像基本要素の交差部分により規定される線は、前記複数のサンプルポイントにおける深さの逆数1/zを使用して、各ピクセルでアンチエイリアシングされる、請求項４に記載の方法。
【請求項６】
前記ピクセルの最終的な色が、重ねられたサンプルの最先サンプルポイント値から決定される、請求項５に記載の方法。
【請求項７】
画像平面に投影されるための複数の三角形の画像基本要素を規定するデータからの二次元ピクセル画像をレンダリングするように構成される画像処理装置であって、当該装置は、
前記三角形の頂点で保持された値からピクセル単位の属性値を得るように配された補間手段と、
前記投影された三角形の基本要素内の各々のピクセル上に前記ピクセル単位の属性値をマッピングするように配されたデータハンドリング手段と、
投影前に前記三角形の画像基本要素を規定する前記データを受け取るように結合され、前記三角形の画像基本要素の各々のエッジと平行の座標軸(s, t)と、前記エッジ間の前記頂点と一致する原点と、を持つ各々の二次元座標システムを用いて、各三角形の画像基本要素をパラメータ化するように配された計算手段と、
前記二次元座標システムに関する各々の三角形の画像基本要素内の位置におけるパラメータ値を得るように、各三角形の画像基本要素に対し、及び、パラメータ化座標システムに関し、一般化された補間関数を適用するように動作可能な投影手段と、
各ピクセルでの属性値を与えるように、及び、全ての三角形の画像基本要素からのピクセル単位の属性値を組み合わせてピクセル単位の色の値を供給するように、各頂点での１つ以上の属性に関し記憶された値からの寄与を、前記三角形の画像基本要素内の位置での前記決定されたパラメータ値から得るように構成されたピクセルシェーディング手段と、
を有する画像処理装置において、前記装置は、前記ピクセルを透光性ピクセルとして特徴付け、前記透光性ピクセルが別のピクセルにオーバーレイしている場合、最も近くの透光性ピクセルの色から得られるピクセル単位の色の値を供給する手段を更に有し、前記透光性ピクセルは従来型透光性、テクスチャ透光性、及び、スクリーンドア型の透光性の１つを示すことを特徴とする画像処理装置。
【請求項８】
透光性ピクセルフラグメントが、前記三角形の画像基本要素によって完全に覆われていても部分的に覆われていても、部分的なフラグメントとして特徴付けられる、請求項７に記載の装置。
【請求項９】
前記ピクセルが、前記ピクセルの中心が三角形の画像基本要素の内側にあるか外側にあるかを決定するために、透視補正補間s/z、t/z、及び1/zを用いて検定され、ｚは、前記ピクセルの深さの値である、請求項７又は８に記載の装置。
【請求項１０】
前記三角形の画像基本要素の内側又は外側に位置するかを決定する前記検定が、前記ピクセルの中心から所定距離内の複数のサンプルポイントの各々で更に実行される、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の三角形の画像基本要素（image primitive）で構成されるグラフィック画像のレンダリングにおいて透光性をハンドリング（handling）する方法及び装置に関する。
【背景技術】
【０００２】
透光技術は、透光性オブジェクトが重なる場所においてアンチエイリアシング(anti-aliasing)が困難なときにそのようなオブジェクトの画像を供給するためだけでなく、あるモデルから他のモデルへの円滑な遷移に、モデルの大きさの大幅な変化を許容させるようにするために、３Ｄグラフィックに適用され、細部のフェードレベル(fade level)の適用は、オブジェクトがすぐに後退する(recede)とき、フライトシミュレータ(flight simulator)に適用される。
【０００３】
３Ｄグラフィックにおいて、透光性オブジェクトは、この透光性オブジェクトの背後にあるオブジェクトが透光性オブジェクトを介し減衰（attenuated）された形式で見ることができるようにする一方、不透明なオブジェクトは、この不透明なオブジェクトの後ろにある任意の他のオブジェクトを分かりにくくする。透光性は、典型的にモノクロ（monochrome）であり、すなわち、赤、緑、及び青色成分に共通する１つのアルファ成分がある。各色成分がそれ独自のアルファ成分を持つ場合には、減法混色（subtractive colour mixing）の周知の効果がオブジェクトの重複部に与えられる。
【０００４】
ある透光性のモデルは、小さい孔のモデルである。色付けされた不透明なオブジェクトに人間の目で見えないほど小さい無数の孔を一面に付けること（peppering）で透光性オブジェクトが作られる場合、透光性オブジェクトの背後のオブジェクトは、この孔を通して見ることができる。透光性は、オブジェクト表面の単位エリア（unit area）あたりの、孔により占められるエリアとして規定されることができる。
【０００５】
上記の小さな孔のモデルを用いて、０．２５の透光性を各々持つ一連の重なっている透光性オブジェクトを通して見ると考えてみる。最も近くにある（nearest）オブジェクトは、オブジェクトの表面のエリアの０．７５だけが光を反射し、残りの０．２５が孔を含むので、０．７５倍に減衰された色を持つ。２番目に近いオブジェクトは、（0.25*0.75）倍に減衰された色を持つ。この２番目のオブジェクトの表面の０．２５だけが、１番目のオブジェクトにある孔を通って見ることができ、この表面の０．７５だけが光を反射する。これは等しい透光性を持つオブジェクトに対し以下の表１に示される。
【表１】
0005185418.tif 000002
【０００６】
オブジェクトが異なる透光性である場合、位置は以下の表２に説明される。
【表２】
0005185418.tif 000003
【０００７】
各ピクセルフラグメントがピクセルを完全に覆っているとする。スクリーン上の所与のピクセルの最終的な色を決定するために、ピクセルフラグメントは、前から後ろの順序でレンダリングされ、これらフラグメント各々は、独立してテクスチャされ、シェードされる。各ピクセルフラグメントの色は、それの前にある透光性フラグメントの効果を考えて減衰され、その減衰量は、上記表２の例にならって計算される。
【０００８】
表１及び表２から、減衰の合計（累積的減衰（cumulative attenuation））が１（unity）に近づいていることが明らかであり、実際、減衰の合計は、最終的なピクセルの色を得るために１でなければならない。所与のピクセルでの有限数の透光性表面に関し、不透明な背景、例えば空があるとする。１から減衰の合計を引いたものを掛けてその色を減衰させ（これにより減衰の最終的な合計を１にする）、この結果を最終的なピクセルの色に加える。
【０００９】
典型的には、透光性は、０．０から１．０の範囲内にあると考えられることができる数値を割り当てられ、この範囲は、ハードウェア実行時に、０から２５６の整数にマッピングされるであろう。
【００１０】
２５６という値は、８ビットが０から２５５の範囲内の値を満足させるとき、２５７個の値をエンコードするためには９ビットを必要とし、不便である。幾つかのシステムは、０．０から１．０の範囲を０から２５５の範囲にマッピングするが、これは、例えば０．２５、０．５及び０．７５のような値を表しにくくする。幾つかのシステムは、０．０  の範囲を０から２５６の範囲にマッピングし、次に値２５６を２５５として表す。
【００１１】
慣例として、「透光性(translucency)」という用語は、透光性が上記範囲を越えて増大するので、不透明なオブジェクトを値０．０にマッピングし、透明なオブジェクトを値１．０にマッピングする。「不透明(opacity)」という用語は、不透明さがこの範囲を越えて増大するので、透光性のオブジェクトが値０．０にマッピングされ、不透明なオブジェクトが値１．０にマッピングされるときに適用される。「アルファ(alpha)」という用語は、それが透光性又は不透明と解釈されるかどうかに関係無く、その値を呼ぶのに使用される。
【００１２】
リアルタイム民生用３Ｄグラフィックにおいて、３つの型式の透光性、すなわち、従来(conventional)型、テクスチャ(texture)型、及びスクリーンドア(screendoor)型がある。
【００１３】
従来型の透光性は、全体のオブジェクト、メッシュ、又は面に適用され、典型的には、２５６の異なる透光性のレベルに対し８ビットで表される。従来型の透光性は、オブジェクトが幾つかの層又は透光性を介して見られるとき、累積的な減衰効果を有する。
【００１４】
従来型の透光性の増大する量がオブジェクトのＶＲＭＬモデルに適用されると、予期されることは、オブジェクトが消えていくことである。実際には、リアルタイム３Ｄグラフィックモデルは交差する面を使用するため、予期外の暗い領域が、発生し得る。例えば、キャラクタの足を表すメッシュが、アニメーションにおいて接合箇所に現れるギャップ及びクラックを防ぐために、キャラクタの体を表すメッシュに入り込む。交差しているポリゴン（intersecting polygon）をフィットするようにトリミング（trimming）せず、ポリゴンの「スペアパーツ（spare parts）」が、通常の使用ではこれらが交差しているポリゴンの不透明な表面の後ろに隠れたままとなるという認識で、単に残される。しかしながら、透光性の技術が用いられると、予期以上の多くの透光性表面が存在するので交差部分が暗く見える。
【００１５】
スクリーンドア型の透光性は、オブジェクトに、例えば、オブジェクトにある特定のピクセルを描かないことにより、文字どおりコショウを蒔いたように孔を散りばめた技術である。省略されるピクセルが多ければ多いほど、透光性がはっきりしてくる。例えば、０．５の透光性は、１ピクセルおきに描くことでシミュレートされるが、欠けているピクセルの規則的なパターンは、観察者に嫌というほど明らかになりうるので、避けなければならない。規則的なパターンを避けるこの必要性は、スクリーンドア型の透光性を使用することで達成されることができる透光性の控えめな（discreet）レベル数を制限する。
【００１６】
細部のフェードレベルにおける透光性の典型的な適用に対し、従来型の透光性は、交差部分での予期外の暗い領域のために適切ではなく、スクリーンドア型の透光性が好ましい。
【００１７】
Microsoft Corporationの米国特許番号第５８６４３４２号において、透光性であることができるグラフィカルオブジェクトをレンダリングする方法が、開示され、ここで、モデルの幾何学的図形の基本要素(geometric primitive)が、「チャンク(chunk)」に分割され、各チャンクのピクセルフラグメントが、生成され、次いで分解される。テクスチャマッピング及びフィルタリングは、テクスチャマッピングされた基本要素のアンチエイリアシングより先に行なわれるが、計算されるための属性の数の減少はない。
【００１８】
同時係属中の国際出願ＷＯ９９／０６９５７において、三角形の画像基本要素からのピクセルが、内側フラグを供給され、この内側フラグが、各ピクセルに属性値を与えるために、この三角形の各頂点で記憶される、例えば色またはテクスチャといった、値からの寄与を決定するために用いられる、発明が開示されている。全ての三角形からのピクセル属性値が、各ピクセルの出力の色を一緒に決定する。
【００１９】
本発明は、３Ｄグラフィックスシステムにおける透光性をハンドリングすることを可能にする技術の改良である。
【００２０】
本発明に従い、画像平面に投影されるための複数の三角形の画像基本要素からの二次元ピクセル画像をレンダリングする画像処理方法が提供され、この方法において、該三角形の頂点で保持された値からの補間によって得られたピクセル単位の属性値が、該投影された三角形の基本要素内の各々のピクセル上にマッピングされ、ここで、各三角形に対し、  
投影前に、該三角形は、該三角形の各々のエッジと平行の座標軸(s, t)と、該エッジ間の頂点と一致する原点と、を持つ各々の二次元座標システムを用いてパラメータ化され、  
投影中に、一般化された補間関数が、該パラメータ化座標システムに関し、適用され、該二次元座標システムに関する該三角形内の位置でのパラメータ値を決定し、  
投影後、該三角形内の位置での該決定されたパラメータ値は、各ピクセルでの属性値を与えるために、各頂点での１つ以上の属性について記憶された値からの寄与を決定し、  
該三角形内の位置での該パラメータ値が、透光性値であることを特徴とする。
【００２１】
更に、本発明に従って、画像平面に投影されるための複数の三角形の画像基本要素を規定するデータからの二次元ピクセル画像をレンダリングするように構成された処理装置が提供され、この装置は、該三角形の頂点で保持された値からピクセル単位の属性値を得るように配された補間手段と、該投影された三角形の基本要素内の各々のピクセル上に該ピクセル単位の属性値をマッピングするように配されたデータハンドリング手段と、  
投影前に該三角形の基本要素を規定する該データを受け取るように結合され、該三角形の各々のエッジと平行の座標軸(s, t)と、該エッジ間の頂点と一致する原点とを持つ、各々の二次元座標システムを用いて、各三角形をパラメータ化するように配された計算手段と、  
該二次元座標システムに関する三角形内の位置でのパラメータ値を得るように、各三角形に対し、及び、パラメータ化座標システムに関し、一般化された補間関数を適用するように動作可能な投影手段と、  
各ピクセルでの属性値を与えるように、及び、全ての三角形からのピクセル単位の属性値を組み合わせてピクセル単位の色の値を供給するように、各頂点での１つ以上の属性について該記憶された値からの寄与を、該三角形内の位置での該決定されたパラメータ値から得るように構成されたピクセルシェーディング手段とを含み、  
この装置は、ピクセルを透光性ピクセルとして特徴付け、透光性ピクセルが別のピクセルをオーバーレイ（overlay）する場合に、最先の透光性ピクセル（foremost translucent pixel）の色から得られたピクセル単位の色の値を供給する手段を更に有することを特徴とする。
【００２２】
本発明の方法において、各三角形の内側にある多数のフラグが、ピクセルフラグメントが透光性であるか不透明であるかを示す主属性として供給され、これは、実際の透光性はテクスチャリング又はシェーディングステップが実行されるまでわからないため、フラグメントがピクセルフラグメントバッファに正確に挿入させられるようにする。
【００２３】
本発明の方法によって利用される透光性の型式がスクリーンドア型の透光性である場合、ピクセルフラグメントの内側フラグの幾つかは、それがピクセルフラグメントバッファに提案されるときにマスクオフ(mask off)される。好ましくは、スクリーンドア型の透光性は、制限された数の透光性レベル（例えば、３ビットを使用して８レベル）にエンコードされ、これらレベルは、ルックアップテーブルを用いることにより、必要とされる数（例えば、３２）のビットマスクに変換される。
【００２４】
従来型の透光性の値は、主属性として利用可能にさせられることができたが、この主属性を保持するために、追加のビット数が必要とされた。テクスチャ型の透光性もスクリーンドア型の透光性も、これらはどちらも面単位ではなくピクセル単位で適用されるので、主属性であることはできない。本発明の方法における、従来型透光性、テクスチャ透光性、及び、例えば８レベルのスクリーンドア型の透光性では、主属性毎に４つの追加のビットとピクセルフラグメント毎に４つの追加ビットのみを供給する必要があるので、ピクセルフラグメントバッファは、依然として比較的安価に提供されることができる。
【００２５】
本発明の方法によるレンダリング処理中に、ピクセルフラグメントは、オブジェクトの前面からオブジェクトの背面へレンダリングされる。レンダリングされた透光性ピクセルフラグメントのアルファ値は、それらの合計が１を超えるまで累積される。そして、補正が、合計されたアルファが１に等しくなるように、最後のピクセルフラグメントの色とアルファの関数として行われる。
【００２６】
各透光性フラグメントがレンダリングされると、その色は、例えば従来型の透光性又はテクスチャ型の透光性に関する、幾つかのアルファ値の積に比例して減衰させられる。
【００２７】
本発明は、添付する図を参照し、例としてのみ、ここに説明される。
【００２８】
図１は、座標ｓ及びｔを持つ三角形の内側の点ｐを備える三角形のビュー空間平面におけるパラメータ化を示している。以下に規定される(s, t)は、重心の計算に用いられる形式(1-s-t, s, t)の重心座標と同様であるが、明らかにされるように、本発明を具体化する属性補間技法でのこれらの使用は、多くの点で異なることに注意されたい。ｓ軸が、三角形の頂点V.0及びV.1を通って伸び、ｔ軸が、頂点V.0及びV.2を通って伸び、原点が、頂点V.0にある。頂点V.1は、(s, t)=(1, 0)であり、頂点V.2は、(s, t)=(0, 1)である。以下に言及されるとき、エッジ０は、頂点V.0から頂点V.1へ伸び、エッジ１は、頂点V.1から頂点V.2へ伸び、エッジ２は、頂点V.2から頂点V.0へ伸びるものとする。
【００２９】
透視補正(perspective-correct)値(s, t)とすると、ある点Ｐで、属性の透視補正値Q[P]は、  
Q[(s, t)]=Q[0]=s*(Q[1]-Q[0])+t*(Q[2]-Q[0])  
から計算することができる。
【００３０】
テクスチャが透視補正であることは明らかに有利である。非透視補正シェーディング(non-perspective correct shading)も許容できるが、より良好なライティングモデル(lighting model)の出現により、透視補正の欠点(lack)が、特にハイライトに関し目立つようになった。透視補正は、ｓ及びｔの代わりにs/z、t/z、及び1/zを補間することにより達成されることができる。1/zを補間することは、隠面消去透視補正(hidden surface removal perspective correct)も行い、これは単にｚを補間する場合では異なる。
【００３１】
(s/z, t/z)及び1/zのスタート及びデルタ値は、スクリーン上の任意の点での三角形のビュー空間頂点から計算することが可能である。以下の３つのケースは、ビュー空間における三角形の平面の向きに合うように最適にされる。  
ケースＣ：  
Kc=OSx*OTy-OTx*OSy  
s/z=[+OTy*(xs/d-Ox/z)-OTx*(ys/d-Oy/z]/Kc  
t/z=[-OSy*(xs/d-Ox/z)+OSx*(ys/d-Oy/z)]/Kc  
ケースＢ：  
Kb=OTx*Osx-OSx*Otz  
s/z=[-OTz*(xs/d-Ox/z)-OTx*(1-Oz/z]/Kb  
t/z=[+OSz*(xs/d-Ox/z)+OSx*(1-Oz/z)]/Kb  
ケースＡ：  
Ka=OTz*OSy-OSz*OTy  
s/z=[-OTy*(1-Oz/z)-OTz*(ys/d-Oy/z]/Ka  
t/z=[+OSy*(1-Oz/z)+OSx*(ys/d-Oy/z)]/Ka  
ｓ及びｔを得るために1/zでs/zおよびt/zを除算するコストは、単一のテクスチャ・アドレスの透視補正に匹敵し、１つの三角形あたり２つ以上のテクスチャを用いることは、1/zによる余計な除算を必要としない透視補正のままであることに注意されたい。
【００３２】
(s, t)を用いることは、I-O検定(inside-outside testing)を簡潔にする。ビュー空間の三角形の頂点(O, S, T)に基づく座標(s, t)を仮定すると、ｔ座標の符号（sign）は、三角形の平面を、ベクトルＯＳと一致する線に沿って２つに分割する。同様に、ｓ座標の符号は、この平面を、ベクトルＯＴの一方の側に分割する。これは、前記３つのエッジの内２つに対するI-O検定を供給する。
【００３３】
頂点ＳとＴとの間にある第３のエッジは、等式s+t==1により規定され、それ故、I-O検定は、この第３のエッジ上で実行することができる。ｓ及びｔが直接利用可能でないのに対し、s/z, t/z及び1/zは既に利用可能であり、1/zの記号が、観察者(viewer)の前の点に対し一定（負）であるので、ｓ及びｔの極性に基づく検定は、s/z及びt/zを使用することができる。これを使用して、第３の検定が、s/z+t/z==1/zと書き直され、このための変数は既に利用可能である。
【００３４】
クリッピングに関して、本アーキテクチャは直接的なやり方で動作し、(s/z, t/z, 1/z)がI-O検定に使用されるときには、特別なクリッピングアルゴリズムを必要としない。クリッピングされた三角形を生成する必要がなく、関連する属性を計算する必要もない。これは、スクリーン空間の頂点に基づくアーキテクチャよりも非常に有利である。
【００３５】
画像は、小さいエリアのスクリーン（タイル）を逐次的且つ独立的にレンダリングすることによってレンダリングされ、その例が、図２に示されている。後続する実施例において、タイルは８×８ピクセルの大きさを持っている。タイルをレンダリングするために、初期判定が、どの三角形がタイルにインパクト(impact)しているかに関して行われる。図２を参照すると、三角形は、それが、レンダリングされるタイルに対しいくらかの可視的な効果を有する場合、すなわち、この三角形がタイルと重なっている場合（ＴＲ．１）、または、重なっていなくても、このレンダリングされるタイルに対しいくらかの可視的な効果を有するのに十分なほど接近している場合（ＴＲ．２）に、タイルにインパクトする。タイルフットプリントＦＰは、三角形が、それが可視的な効果を有する場合に重ならなければならない領域である。アンチエイリアシングアルゴリズムの選択が、このタイルフットプリントを決定するが、満足のいく結果は、タイルのエッジから１／２ピクセル外側に延びるフットプリントを用いて得られ、８×８ピクセルのタイルでは９×９ピクセルのタイルフットプリントである。
【００３６】
制御の特徴として、いわゆる「マジック」ポイントが特定される。このマジックポイントは、ピクセルの中心と一致し、逐次増加的に補間されるパラメータの絶対的計算に使用され、三角形の境界を示すボックスの内側及びオンスクリーン（on-screen）であることが必要とされる。このマジックポイントは、三角形タイルセグメンテーション手順（triangle to tile segmentation procedure）の一部として決定される。上述されるように、三角形はクリップされる必要が無いので、このマジックポイントの計算は、全体的にオンスクリーンであろうと、部分的にオンスクリーンであろうと、全ての三角形に対し同じである。頂点での値は、全ての三角形について変化しないままである。つまり、どんなときにも新しい頂点又は新しい三角形を生成することを必要としない。
【００３７】
オンスクリーンの各三角形は、面識別子として整数値を割り当てられる。三角形がタイルにインパクトする場合、この面識別子は、このタイルにインパクトする全ての三角形の面識別子を保持するタイルフラグメントスタック(tile fragment stack)で、スタックの最初に移される（push）。このタイルフラグメントスタックが読み出されると、この面識別子が、三角形の属性にアクセスするために使用される。各タイルフラグメントスタックは、タイルサイズのスクリーンエリア（tile sized screen area）に対応し、集合的に、タイルフラグメントスタックは、タイルフラグメントバッファを有する。各タイルフラグメントスタックは、タイルフラグメントバッファ内に(x, y) アドレスを有し、これは、必要に応じてピクセルアドレスを生成するために使用される。タイルフラグメントは、面識別子及びスタック(x, y)アドレスで構成される。タイルフラグメントスタックは、概念的にはタイルフラグメントのスタックであるが、実際には、スタック(x, y)アドレスに関連する面識別子のスタックである。
【００３８】
タイルは、独立して、及び任意の順序で、レンダリングされることができるが、左上から始まり、偶数番号の列を左から右へ走査し、奇数番号の列を右から左へ走査し、列の組を上から下へ走査する、ジグザグのラスタ走査順序でタイルフラグメントを読み取ることによる、タイル間のコヒーレンス（coherence）を利用することが好ましい。リアルタイムのインプリメンテーションでは、十分な数のタイルがレンダリングされると、それらは、まだレンダリングされていないピクセルを読み取ろうとする試みを気にすることなく、読み取られ、ディスプレイに送られることができる。これは、レンダリングされたタイルを保持することをＦＩＦＯバッファに要求するが、フルスクリーンフレームバッファ（full screen frame buffer）のコストを回避する。
【００３９】
本発明を具現化する画像処理装置が、図３に示され、これは、主属性および予備属性が別々にハンドリングされる２段階装置を有する。各段階は、各々の属性バッファ１４，１６に結合された（各々ローカルキャッシュ１０Ａ，１２Ａを有する）処理器１０，１２を含み、主属性処理器１０は、画像を構成する三角形ポリゴンの、インデックスを付された面のセットの形態で、データを受け取るための入力を有し、主属性は、三角形の頂点の３Ｄ（ビュー空間）座標を含む。図５を参照して以下に説明されるように、導入ルーチン（introductory routine）が、幾つかの基本計算を実行するために、かつ、主属性ストア１４又は（破線で示されるように）予備属性ストア１６のうちの適切な方への供給のために三角形の属性を分離するために、処理器１０への供給前に、又は、その中で、のいずれかで、入力データに適用される。
【００４０】
処理された主属性データは、予備段階への出力のために、データ及び深さバッファ１８に送られる。この予備段階は、フレームバッファに供給し、そこからディスプレイへ供給するのに適した、出力ピクセル値を生成するために、これの一般化された補間を行い、異なる予備属性の各々（例えば、マップストア２０からのテクスチャマッピング、カラーリング、表面法線）に対しそれを適用する。
【００４１】
主属性バッファ１４は、オフチップ(off-chip)であり、各三角形がマジックポイントで評価されたようにレンダリングされるために、アンチエイリアシング及びｚバッファリング(z-buffering)に使用される、増加的に補間された属性を保持する。主属性キャッシュ１０Ａは、オンチップ(on-chip)であり、現在、タイル間で保存及び復元されながらレンダリングされている各三角形の、増加的に補間された属性を保持する。三角形タイル変換手順（triangle to tile conversion procedure）は、何個のタイルが各三角形によってインパクトされるかを特定するので、各三角形についての基準カウントを維持することが可能である。この基準カウントは、三角形がタイルの一部として処理される毎に減少していく。基準カウントが０になると、三角形の属性はもはや必要とされず、キャッシュ１０Ａから一気に消去される（flush）ことができる。タイルはラスタ走査順序で読み出されるので、高さのある三角形は、フレームを処理するために要する時間のうちのかなり大部分で、キャッシュに残存することになる。ある特定の状況では、それの基準カウントが０でなくても、三角形の属性をキャッシュから一気に消去することが必要とされ得る。増加的に補間された属性の現在の値をオフチップ属性バッファに戻して書き込むことは好ましくないので、属性がキャッシュにより次に必要とされるときに、それらがマジックポイントでの値を鑑みて最後に補間されたときの値を復元するためのメカニズムが、提供される。
【００４２】
本アーキテクチャにおいて、マジックポイントでの三角形のパラメータは、値がタイル内のインパクトされた各ピクセルについて生成されるまで、隣接ピクセルへ、そこから別の隣接ピクセルへ、といったように、増加的に補間されることができる。そして、これら補間された値は、三角形によってインパクトされた次のタイルでの使用に備えた主属性キャッシュに記憶される。その後、主属性キャッシュから復元された、前に増加的に補間された値は、現在のタイルの内側のピクセルで終了する経路に沿って増加的に補間され、そして、増加的な補間は、現在のタイル内のインパクトされたピクセルのために続けられる。ジグザグ走査シーケンスは、三角形によってインパクトされた現在のタイルが、前のそのようなタイルに対し、しばしば横に隣接し、常に近くにあるので、それ故にこの経路に沿って移動するのに費やされる時間が最小となる。増加的な補間は、ｘ及びｙにおいて１つのピクセルステップを使用する。簡単なシフトは、２つのピクセルの累乗（power）でのステップを許容し、タイルの大きさに対応するステップを使用することは、タイルにおける第１ピクセルを得るために要する時間を最小にするタイル探索モード(tile seek mode)を容易にする。これが、補間された属性値を、それらが主属性キャッシュ１０Ａから早期に一気に消去された後に回復するために使用されるメカニズムである。
【００４３】
値が、各ピクセルで増加的に補間される場合、それらは、いわゆるピクセルフラグメントを規定する。三角形によってインパクトされたピクセルフラグメントは、ピクセルフラグメントバッファに送られ、受け入れられるか（及びこれにより最終画像に寄与するか）、（それらが塞がっているので）拒絶されるか、のいずれかである。三角形にインパクトしていないピクセルフラグメントは、拒絶される。ピクセルフラグメントが受け入れられると、増加的に補間された値s/z及びt/zが、ｓ及びｔを得るために1/zで除算され、これらは、その次に、ピクセルフラグメントバッファに記憶される。1/zによる除算は、各ピクセルフラグメントが増加的な補間により作り出されながら、行われなければならない。
【００４４】
ｓ及びｔを得るためのこの除算プロセスは、s/z, t/z及び1/zの整数値を浮動小数点値に変換するための優先待ち行列（priority encoders）で始まる。次に、1/zの仮数の高位のビットは、ｚ及びｚ２の粗い値を得るために、小さな（例えば、５１２ワードの）ルックアップテーブルに与えられる。このテーブルにより供給されるｚの値は、1/zの逆数のテーラー級数展開の第１項である。このテーブルにより供給されるｚ２の値は、テーラー級数展開の第２項を得るために、1/zの仮数の低位のビットにより乗算される。そして、これら第１及び第２項は、１５分数ビットにｚの仮数を与えるために加算される。そして、ｚの仮数は、ｓ及びｔの仮数を与えるために、s/z及びt/zの仮数により乗算される。そして、s/z, t/z、及び1/zの指数（exponent）が、ｓ及びｔの指数を得るために組み合わされる。最後に、ｓ及びｔの整数値が、それらの各々のべき乗に比例してこれらの仮数を上又は下にシフトすることで得られる。
【００４５】
（ｚではなく）1/zの指数（exponent）及び仮数（mantissa）は、ピクセルフラグメントの前から後ろへの順序を決定するためにピクセルフラグメントバッファ内で使用される逆の深さ値を作り出すために、一緒にパックされる。透視の効果は、浮動小数点の仮数の使用により生ずる深さの解（depth resolution）の変化によって再現されるので、この表示は、通常の整数表示よりも好ましい。
【００４６】
図３をさらに参照すると、予備属性バッファ１６は、オフチップであり、隠面除去後まで要求されない特性、すなわち、テクスチャリング及びシェーディングのために要求される属性、例えば、ストア２０用のテクスチャマップアドレスを保持する。予備属性キャッシュ１２Ａは、オンチップであり、現在テクスチャリング及びシェーディングされている各三角形についての属性を保持する。タイルベースのレンダリング(tile based rendering)は、ピクセルフラグメントバッファから読み出された連続するピクセルフラグメントが異なる三角形に適用されることを意味するので、キャッシュが不可欠(vital)である。
【００４７】
出力画像における所望の粒度（granularity）を達成するために、各ピクセルは、点ではなくエリアとして考えられる。多重のI-O検定が、ピクセルエリアの何分のいくつが三角形によって覆われているかを決定するために、ピクセルの中心の近くの異なるサンプリングポイントで実行される。これら多重のI-O検定の組み合わせられた結果は、内側ビットベクトルと呼ばれ、このベクトルにおけるビットＮは、Ｎ番目のサンプリングポイントでのI-O検定の結果である。本アーキテクチャは、１ピクセルあたり３２個のサンプリングポイントを使用している。１ピクセルあたり８個のサンプリングポイントの基本パターンが、ピクセルフットプリント(pixel footprint)を覆う３２個のポイントを与えるために、４つの対角線方向の各々に移動させられる。図４は、３２個のサンプリングポイントのパターンの図式表示である。
【００４８】
本アーキテクチャは、ピクセルの中心（マジックポイント）でのs/z, t/z及び1/zの値を得るために、増加的な補間を使用する。この増加的な補間のデルタから得られたオフセット値を、ピクセルの中心でのs/z, t/z及び1/zの現在の値に加算することは、各サンプリングポイントでのs/z, t/z及び1/zの値を供給する。これらの値は、各サンプリングポイントでのI-Oブーリアン(I-O boolean)を与えるために組み合わされる。結果として生じるブーリアンは、内側ビットベクトルを与えるために連結される。なお、この内側ビットベクトルの増加的な補間は、タイル間で保存及び復元されるために、追加の値を必要としない。サンプリングポイントでの値は、３２個のサンプリングポイントの位置の知識を鑑みて、ピクセルの中心での値、及び、関連づけられた三角形（タイル）毎の増加的な補間のデルタから得られることができる。
【００４９】
隠面除去での使用のために、ピクセルフラグメントバッファは、二重にバッファリングされる。一方のバッファは、現在のタイルにインパクトし、かつ、最終画像への可視的な寄与をもたらすことが予期される、それらすべてのピクセルフラグメントをアセンブルする。他方のバッファは、前のタイルのためにアセンブルされたピクセルフラグメントを保持し、これらを、テクスチャリング及びシェーディングされるために供給する。一般的には、ピクセルフラグメントの幾つかは拒絶されるので、ピクセルフラグメントバッファに提示されるピクセルフラグメントは、それから読み取られるよりも多い。
【００５０】
ピクセルフラグメントバッファは、タイルにおける各ピクセルに対し１スタックの、２Ｄアレイのピクセルフラグメントスタックとして配置され、各スタックは、多数のピクセルフラグメントを保持する。これらピクセルフラグメントは、スタックにおける連続するフラグメントが、視野の原点(view origin)から単調に増加する深さを有するように、並べ替えられる。ピクセルフラグメントがスタックへ入ることを提案されると、それの逆の深さ(1/z)が、スタックの各フラグメントの逆の深さと比較されなければならず、これはスループットを維持することと並列に行われなければならない。多重の深さの比較は、スタックのコンテンツに、比較器のアレイにロードされることを、かつ、スタックに、フラグメントがそれらの新しい位置にある状態で書き換えられることを、要求し、おそらく、提案されたフラグメントが入ることを認め、スタックにおける以前のフラグメントの１つを拒絶するだろう。この動作は、スタックがオフチップメモリへの如何なるアクセスも必要とせずに全体的にオンチップでインプリメントされることができるように、タイルベースのレンダリングを要求する。
【００５１】
上記説明は、上述した本出願人による同時係属中の国際特許出願ＷＯ９９／０６９５７に関する。その方法及び装置において、ピクセルフラグメントは、その内側フラグの全て又は一部が設定されているかどうかに依存して、言い換えると、フラグメントが三角形によって完全に又は部分的に覆われているかどうかに依存して、完全又は部分的であることができる。完全なフラグメントは不透明である。
【００５２】
本発明において、透光性ピクセルフラグメントは、透光性フラグメントの背後のフラグメントが減衰された形式で見られることができるので、部分的なフラグメントとして扱われる。
【００５３】
透光性ピクセルフラグメントは、ピクセルフラグメントバッファに前から後ろへと挿入される。つまり、レンダリングされたピクセルフラグメントのアルファ値は、このアルファ値の合計が１(unity)を超えるまで累積される。そして、補正が、合計されたアルファが１に等しくなるように、ピクセルフラグメントの色及びアルファの関数として行われる。
【００５４】
この合計されたアルファが１を超えた後、超過アルファの量が、計算され、最後のピクセルフラグメントのアルファで除算された超過アルファに等しい分数を、最後のピクセルフラグメントの色成分に乗算するために使用される。そして、この色補正は、累積された色から減算される。小さなルックアップテーブルは、この除算がハードウェアにおいて迅速に実行されるようにする。
【００５５】
色補正を減算することは、必然的に簡単で高速の乗算器における切捨て効果(truncation effect)が、合計されたアルファを１よりも僅かに大きくする傾向があるので、この合計されたアルファを１に等しくさせる最後のフラグメントの色の何分のいくつを直接計算するよりも好ましい。直接計算法における切捨て誤差は、合計されたアルファを１よりも僅かに小さくする可能性があり、合計されたアルファを１よりも大きく又は等しくさせるようにすることを試みる任意のアルゴリズムが、不必要にフラグメントを処理し続けるであろう。
【００５６】
各透光性フラグメントがレンダリングされるとき、（(s, t)座標の関数としてピクセルの中心で計算される）その色は、数個のアルファ値の積に比例して減衰させられる。１つのそのようなアルファ値は、従来の透光性値であり、他方は、テクスチャ透光性値である。更なるアルファは、累積的な減衰から得られる値、すなわち、現在のフラグメントの前にある（従ってこのフラグメントより前にレンダリングされた）フラグメントの不透明度の積である。
【００５７】
（典型的にはガウス）フィルタ関数に従って、内側フラグを計り、合計することによって得られる、さらなる別のアルファがある。ピクセルが、２つの部分的に覆っている透光性ピクセルフラグメント、及び、１つの完全に覆っている不透明なフラグメントのみを含む場合に、何が起こるかを考える。ここで、該２つの透光性フラグメントは、同じオブジェクトの一部であり、共通のエッジを共有し、この問題を明らかにするため、両方のフラグメントは同じ従来の透光性を持ち、一緒にピクセル全体を覆う。２つの部分的に覆っている透光性フラグメントによる累積的減衰は、このピクセルを覆う単一の透光性フラグメントによる累積的減衰と明らかに等しい。残念なことに、暗黙的に述べられたこの累積的減衰アルゴリズムは、各透光性フラグメントがピクセル全体を覆い、内側フラグから得られるアルファを含むことが何も助けにはならないと仮定する。
【００５８】
したがって、ピクセルフラグメントバッファは、それらの間でピクセルの全て又は一部を覆い、かつ、連続するフラグメントを共に減衰させるように働く、部分的な透光性フラグメントの集合を見分ける。この集合における各フラグメントのアルファを累積することによって、このアルファは、この集合に対し累積的減衰の寄与として、この集合の後ろのフラグメントに適用される。
【００５９】
このような見分けは、以下のようにして達成される。フラグメントが、レンダリングされるために、ピクセルフラグメントスタックから読み出されると仮定する。集合は、透光性の部分的に覆うピクセルフラグメントで始まり、次のフラグメントが不透明又は完全に覆うものの場合、または、集合における全てのフラグメントの内側フラグが、共にビットワイズＯＲされる(bitwise ORed)ときにピクセルを覆う場合に、終了する。次のフラグメントが不透明又は完全に覆うものの場合、この集合におけるフラグメントの内側フラグがピクセルを覆わないことと、これにより、累積的減衰がエッジにそれほどぴったり沿わなくなることと、が考えられる。
【００６０】
ＶＲＭＬ、そして時にDirect 3Dに関しては、どの面がメッシュを構成するかという知識が、明確である。メッシュが、（任意の所与のピクセルに存在するメッシュ識別子の番号を効果的にエンコードするためにハッシュ化されることができる）メッシュ識別子コードを割り当てられている場合、メッシュ識別子の変化が、集合の最後を規定するために使用されることができる。これは、該集合がピクセルを覆わない場合を通常とらえる。それは、オブジェクトがバックフェースカリング（back face culled）されず、ピクセルがこのオブジェクトの前面及び背面の一部を含み、これら２つの面を分離するものがなく、オブジェクト全体が１つのメッシュから構築され、前方に面しているピクセルフラグメントがピクセルを覆わない、たとえば、透光性の球体の場合に、失敗する。決定(fix)が、前方又は後方に面している三角形を示すために、メッシュ識別子にビットを追加することによって、得られることができる。
【００６１】
提案されたすべてのピクセルフラグメントが処理された後、各スタックが、最も近くにあるピクセルフラグメントに始まり、前から後ろの順に読み出される。各ピクセルフラグメントの可視的な被写域（visible coverage）、すなわち、各フラグメントの可視的な（塞がれていない）部分の被写域を決定するために、累算器が、現在のフラグメントの累積的被写域、前に読み出したフラグメントの内側フラグから形成されたビットベクトルのビットワイズＯＲを維持する。そして、現在のフラグメントの可視的な被写域は、累積的被写域の補数(complement)によって、その内側フラグから形成されたビットベクトルをビットワイズＡＮＤすることにより、得られる。この可視的な被写域が得られた後、累算器は次のフラグメントに備えて更新される。結局、累算器は、全てのもののビットベクトルを含むことになる。全てのフラグメントが読み出される前に、累積的被写域が全てのものとなる場合、スタック中の任意の残存するフラグメントは、それらが完全に塞がれるので、不可視として廃棄される。
【００６２】
図５から図８は、初期受信及び準備からピクセル単位の値の出力までのデータのハンドリングを説明する補足的なフローチャートである。
【００６３】
概要のデータ準備ルーチンが、図５で説明され、５０１において、適当なソース（例えば、インターネットを介して得られたＶＲＭＬデータファイル）からデータを得ることで始まる。このデータは、表面の法線、三角形の頂点での透光性値、等を特定する予備データとともに、三角形の頂点の座標をリストにしたコンパクトなデータファイルを有する、インデックスを付された面のセットの形式であることができる。５０２において、このコンパクトなデータファイルは展開され、透光性データが、５０３において抽出及び記憶されている。５０２の展開されたデータから、各三角形のビュー空間頂点データが（５０４で）読み出され、この三角形は、その次に、５０５で二次元スクリーン空間に投影される。
【００６４】
タイルベースのレンダリングが使用される場合、走査変換が、各三角形を一続きのタイルに変換するために、５０６で行われる。余分なデータ、例えばスクリーンのエッジでのピクセルカーネル (pixel kernel)のフットプリントマージンで現れるのみの三角形のものが、５０７で除去操作により取り除かれる。次に、５０８において、識別子が各三角形に割り当てられ、三角形の１つ以上のフラグメント化された部分を搬送するタイルが、（５０９において）タイルバッファに挿入される。
【００６５】
三角形に対する識別子の割り当てから続いて、マジックポイントが５１０において選択され、このポイントに対し、s/z、t/z及び1/zが、５１２での対応する増加的な値（デルタ）の計算の前に、（５１１において）計算される。これら計算された値は主属性を有し、導入手順の最終段階５１３は、これらを主属性ストア（図３の１４）にロードすることである。
【００６６】
これら主属性のハンドリングは図６及び図７に示されている。図６の上部に示されるように、ステップ５１３によりロードされた主属性バッファ１４に加え、キャッシュメモリ１０Ａが（５０９においてロードされた）三角形フラグメントを含むタイルに対するバッファ２４と共に供給される。このキャッシュ１０Ａは、外部バッファ１４、２４からロードされた高速のローカル（オンチップ）メモリを供給し、ピクセルフラグメントバッファ２６（図７）に属性値（ポリゴン単位のアルファ値、メッシュ識別子フラグ、及び前方／後方に面するフラグ）も供給する。
【００６７】
最初の動作６０１は、タイルバッファ２４からキャッシュ１０Ａへのフラグメントの読み出しである。次に、このキャッシュから、s/z、t/z、及び1/zの値が、６０２において、各サンプリングポイントに対し計算される。６０３において、s/z、t/z、及び1/zの値が補間され、その結果がキャッシュに戻される。
【００６８】
I-O検定が６０４において実行される。キャッシュ１０Ａは、スクリーンドアの透光性が適用されている場合を、I-O検定段階に示し、（フラグメント又はピクセルが不透明として単に扱われることができないことを示すために）透光性フラグをI-O検定段階に供給する。
【００６９】
補間中に、I-O検定は、６０４において、各サンプルポイントに対し、これらが三角形の境界の内側にあるか外側にあるかを決定するために実行され、これに続いて、このポイントでの1/zの値が、ピクセルへの三角形の寄与が、考慮されるか、拒絶されるか（６０６）どうかを決定するために、他の三角形からの対応して位置するサンプルポイントの値と比較される（６０５）。この1/zの比較が成功した場合、ピクセルフラグメントは、６０７において、上述のように、完全又は部分的として分類される。
【００７０】
（本発明において完全であるが透光性のフラグメントを意味する）部分的なピクセルフラグメントの寄与は、６０８においてスタックに加えられる。このスタックが既に完全である場合、６０８でのこのスタックに空きを作るという動作は、これがサンプルポイントを覆われないままにする場合に、整合性を維持するために、新しい最後のフラグメントのタイルに、問題になっている該または各々のサンプルポイントを転送する補償６０９を必要とする、オーバーフロー（一般に最後尾のフラグメントの除去）という結果になる。オーバーフローの問題が解決されると、最新のフラグメントは、（エントリが深さで並べ替えられて）適切な位置でスタックに挿入され（６１０）、その値は、ピクセルフラグメントバッファ（図７）に送られる。６０７に続き、スタックがまだ完全でないことが明らかになった場合には、簡単な空きを作る動作が、新しいフラグメントよりも深さのあるエントリを１つだけ下に移動させるために実行される。
【００７１】
完全なピクセルフラグメントの寄与が、６１１においてスタックに加えられる。これは、ピクセルを横切るポリゴン交差部分(polygon intersection)が存在する場所で適用され、不透明ピクセルとして扱われるが、最終的なピクセルの色への各ポリゴンの寄与は、このピクセル内のサンプルポイントを見ることによって決定される。典型的には図４に見られるように３２個のポイントが使用される。６１２において、各サンプルポイントにおける1/zの比較が、ポリゴンのうちのどれがこのポイントにおいて最先(foremost)であるかを特定し、ステップ６１３において、可視的な被写域の修正、最終的なピクセルの色が、最先のサンプルポイント値からのみで決定され、ピクセルフラグメントバッファに供給するためにステップ６１０に加えられる。サンプルでの1/zについて記憶された値は、６１４において更新される。
【００７２】
I-O検定から先の上記動作が処理される一方で、６０３からのデータへの補間は、６１５における優先エンコーディングに始まり、６１６での1/zの逆数の計算（すなわち、ｚを復元すること）が後に続く、更なる動作を受ける。ｚの値を用いて、ｓ及びｔの値が、(s/z)*z及び(t/z)*zを計算することによって６１７において回復され、ｓ及びｔの整数値が、６１８において決定（fix）される。これらの値は、ステップ６１０において加算され、次に図７の頂上部に示されるピクセルフラグメントバッファ２６においてフラグメントを用いて記憶される。
【００７３】
このフラグメントバッファから、ピクセルフラグメントの各スタックのアルファ値が、７０１でプールされ、フラグメントデータが、７０２の予備ハンドリングセクションにおいて、キャッシュメモリ１２Ａに読み出される。７０３において、三角形のフラグメントによるタイルの可視的な被写域の広さが、アルファ値から計算され、７０４でフィルタに与えられ、値αが得られ、７０５においてフラグメントスタックを更新するために送られ、次に、７０１を介しステップ７０２に進む。７０６において、αは、予備属性ハンドリング段階におけるピクセルシェーディング段階（図８）に出力される。
【００７４】
ガウスフィルタ関数の適用により累積されたアルファ値が、許容される１の値を超える可能性が、上述された。更新された累積された被写域の段階７０５は、ステップ７０４から受け取られた任意のアルファ値を１にクランプ(clamp)するために配されている。
【００７５】
図８の予備属性ハンドリング段階は、図４及び図５の主属性段階と同様に、この主属性段階からの準備されたタイルデータと、インデックスを付された面のセット(face set)の展開に関し５０３で抽出された透光性値と、を受け取るために供給されたオンチップのキャッシュ１２Ａが、単一のチップに、供給されることを意図する。示されるように、各々の異なる属性の型式は、並列に扱われ、８０１において各三角形の頂点に対するテクスチャ空間座標(U, V)により特定されるテクスチャ値で始まる。これらは、パラメータ化された座標システムを使用し、(s, t)において補間され（８０２）、出力が、テクスチャバッファ（マップストア）２０と結合されるビットマップテクスチャ処理段階(bitmap texture processing stage)８０３に送られる。処理器８０３からの出力は、ピクセルシェーダー段階(pixel shader stage)８０４に送られる。示されるように、８０５において特定された頂点毎の法線が、８０６において同様に補間され、同じく、ピクセルの色も、８０７において三角形の頂点で特定され、８０８において補間される。これら色は、重なり合う透光性フラグメントが存在するとき、シェーダ８０４により（例えば、上書きすることによって）変化させられる（ステップ６１３参照）。一般的なケースの他の属性が、８１１における三角形毎の属性とともに、８０９において示される（これらも、８１０において(s, t)で評価される）。処理器８０３と同様に、８０６、８０８、８１０及び８１１の出力は、前に計算されたα値とともに、シェーダ８０４への入力を供給する。
【００７６】
このシェーダの出力は、８１２でのシェードされたピクセルフラグメントのために累算器へ行き、８１３でのピクセルのガンマ補正へと続く。このシェードされたピクセルは、８１４において出力される。ガンマ補正は、アンチエイリアシングのためのガンマ補正が低い強度（intensity）で最もクリティカルとなるので、ワークステーションにおいて普通に行われるように、ディスプレイドライバに委ねられることはない。色成分毎に通常の８ビットに切り捨て、その次にガンマ補正を適用することは、アンチエイリアシングされたエッジに沿って顕著なでこぼこを与えることが分かっているのに対し、切り捨てる前にガンマ補正を実行することは、円滑なエッジを復元する。
【００７７】
上述の(s, t)技術は、深さバッファエントリの大きさを減少させ、さらに透光性を扱うことを許可する。この(s, t)技術は、従来の透光性又はテクスチャの透光性にも応用可能である。
【００７８】
上述されたように、３２個のサンプリングポイントにおける内側フラグの計算は、３２個の1/zの値を、交差部分のアンチエイリアシングのために利用可能にさせる。I-O検定のためのs/z、t/zの使用に要求される数値精度及び長いワード長は、ピクセルの中心で(s, t)を計算するときには許容されるが、並列するハードウェアを用いて３２回のI-O検定を行うために使用されるときにはかなりの負担を課す。
【００７９】
解決法は、簡単なスクリーン空間エッジ方程式（simple screen space edge equation）及びスクリーン空間マンハッタンエッジ距離(screen space Manhattan edge distance)を使用することであり、それらは、より短いワード長を使用することができ、少ないハードウェアを必要とすることができ、スクリーン空間エッジ距離が、有限の数値精度によるギャップ又はクラックを避けるように計算されることができるという利益を有する。
【００８０】
この解決法に対する難点(objection)は、セットアップがビュー空間座標をスクリーン空間内に透視（perspect）しなければならないことである。図９Ａに示されるように、三角形の全ての３頂点Ｖ０、Ｖ１、Ｖ２が観察者(viewer)Ｐの前にあるとき、又は、全てが観察者の背後にあり（図示せず）、カリングされているときには、何ら問題は起きない。
【００８１】
しかしながら、三角形が図９Ｂに示されるように、Z=0平面にまたがる場合に問題が生じる。観察者の背後の頂点Ｖ１は、不適切に投影し、これが不適切なエッジの方程式を導くことになる。
【００８２】
１つの解決法は、従来のクリッピング(clipping)であるが、頂点の反射（reflection）という公知の技術を応用することがより効果的でありうる。これは、頂点Ｖ１が、頂点Ｖ０に対し、両方の頂点を通る線に沿って反射されることを示す図９Ｂに示され、V1'=V1-(V1-V0)である。V1'は、以前と同じ線上にあるが、今は観察者Ｐの前にある。V0及びV1'は、適正なスクリーン空間エッジ方程式を構成するために、スクリーン空間内に正確に投影されることが可能である。
【００８３】
公知の頂点反射技術が、共有された三角形のエッジに適用される場合、同じ頂点が、エッジを共有する両方の面のために修正されるので、エッジは、ギャップ及びクラックが無いままとなる。
【００８４】
頂点がメッシュの内側で共有される場合、観察者の背後にある頂点は、二度、つまり、頂点がその交差部分に位置する、２つのエッジの各々に沿って一度、反射されるであろうから、頂点の反射は、追加の頂点を作り出すであろう。ビュー空間の頂点がs/z、t/z、1/zを計算するのに使用される本発明による方法において、共有される頂点の透視投影技術の利点は、ビュー及びスクリーン空間の頂点の両方を搬送（transport）する必要によってオフセットされ、加えて、観察者の背後にある頂点は二度透視されなければならない。従って、それは、ビュー空間の頂点のみが搬送される場合に有益となり、透視投影は各三角形の各頂点に対し実行される。
【００８５】
本発明の開示を読むことから、他の改良が当業者には明らかとなるであろう。このような改良は、画像処理機器及び装置、及びこれらの構成部品の、設計、製造及び使用において既に公知である他の特徴を含むことができ、ここに既に説明した特徴の代わりに又はそれに加えて使用されることができる。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］画像平面に投影されるための複数の三角形の画像基本要素からの二次元ピクセル画像をレンダリングする画像処理方法であって、当該方法において、前記三角形の頂点で保持された値からの補間によって得られたピクセル単位の属性値が、前記投影された三角形の基本要素内の各々のピクセル上にマッピングされ、各三角形に対し、
投影前に、前記三角形は、前記三角形の各々のエッジと平行の座標軸(s, t)と、前記エッジ間の前記頂点と一致する原点と、を持つ各々の二次元座標システムを用いてパラメータ化され、
投影中に、一般化された補間関数が、前記パラメータ化座標システムに関して適用され、前記二次元座標システムに関する前記三角形内の位置でのパラメータ値を決定し、
投影後、前記三角形内の位置での前記決定されたパラメータ値は、各ピクセルでの属性値を与えるために、各頂点での１つ以上の属性について前記記憶された値からの寄与を決定する、画像処理方法において、
前記三角形内の位置での前記パラメータ値が、透光性値であることを特徴とする、画像処理方法。
［Ｃ２］透光性ピクセルフラグメントが、三角形によって完全に覆われていても部分的に覆われていても、部分的なフラグメントとして特徴付けられる、Ｃ１に記載の方法。
［Ｃ３］ピクセルが、前記ピクセルの中心が三角形の内側にあるか外側にあるかを決定するために、透視補正補間s/z、t/z、及び1/zを用いて検定され、ｚは、前記ピクセルの深さの値である、Ｃ１又は２に記載の方法。
［Ｃ４］三角形の内側又は外側に位置するかを決定する前記検定が、前記ピクセルの中心から所定距離内の複数のサンプルポイントの各々で更に実行される、Ｃ３に記載の方法。
［Ｃ５］２つの三角形の交差部分により規定される線は、前記複数のサンプルポイントにおける深さの逆数1/zを使用して、各ピクセルでアンチエイリアシングされる、Ｃ４に記載の方法。
［Ｃ６］透光性ピクセルフラグメントが、前から後ろへピクセルフラグメントバッファに挿入され、前記レンダリングされたピクセルフラグメントのアルファ値が、前記アルファ値の合計が１を超えるまで累積され、接続が、前記合計されたアルファが１に等しくなるように、最後のピクセルフラグメントの色及びアルファの関数としてなされる、Ｃ５に記載の方法。
［Ｃ７］ピクセルの最終的な色が、最先のサンプルポイント値から決定される、Ｃ６に記載の方法。
［Ｃ８］画像平面に投影されるための複数の三角形の画像基本要素を規定するデータからの二次元ピクセル画像をレンダリングするように構成される画像処理装置であって、当該装置は、前記三角形の頂点で保持された値からピクセル単位の属性値を得るように配された補間手段と、前記投影された三角形の基本要素内の各々のピクセル上に前記ピクセル単位の属性値をマッピングするように配されたデータハンドリング手段とを含み、
投影前に前記三角形の基本要素を規定する前記データを受け取るように結合され、前記三角形の各々のエッジと平行の座標軸(s. t)と、前記エッジ間の前記頂点と一致する原点と、を持つ各々の二次元座標システムを用いて、各三角形をパラメータ化するように配された計算手段と、
前記二次元座標システムに関する三角形内の位置におけるパラメータ値を得るように、各三角形に対し、及び、前記パラメータ化座標システムに関し、一般化された補間関数を適用するように動作可能な投影手段と、
各ピクセルでの属性値を与えるように、及び、全ての三角形からのピクセル単位の属性値を組み合わせてピクセル単位の色の値を供給するように、各頂点での１つ以上の属性に関し前記記憶された値からの寄与を、前記三角形内の位置での前記決定されたパラメータ値から得るように構成されたピクセルシェーディング手段と
を有する画像処理装置において、前記装置は、ピクセルを透光性ピクセルとして特徴付け、透光性ピクセルが別のピクセルにオーバーレイしている場合、最先の透光性ピクセルの色から得られるピクセル単位の色の値を供給する手段を更に有することを特徴とする画像処理装置。
［Ｃ９］複数のデータストックを保持し、各ストックは各々のピクセルと関連を持ち、前記ピクセルにインパクトする１つ以上の三角形の透光性を特定するエントリを保持する記憶手段と、透光性ピクセルフラグメントを、そのストックに前から後ろへと挿入する手段と、レンダリングされる透光性ピクセルフラグメントの前記アルファ値を、前記アルファ値の合計が１を超えるまで収容する手段と、前記合計されたアルファが１に等しくなるように、最後のピクセルフラグメントの色及びアルファの関数として接続を適用する手段とを更に有する、Ｃ８に記載の画像処理装置。
【図面の簡単な説明】
【００８６】
【図１】図１は、三角形の画像基本要素のパラメータ化を説明している。
【図２】図２は、ピクセルフィルタカーネル（kernel）にインパクトする三角形の画像基本要素を表す。
【図３】図３は、本発明を具現化する画像処理システムのブロック模式図である。
【図４】図４は、半ピクセル間隔グリッド上のサンプルポイントのアレイを表す。
【図５】図５は、基本要素データ取得のフローチャート表示及び図３のシステムに供給するデータを生成する事前処理ルーチンである。
【図６】図６は、図３のシステムにおける主属性ハンドリング段階の動作を概略的に説明する。
【図７】図７は、図３のシステムにおける主属性ハンドリング段階のピクセルフラグメントサブシステムの動作を概略的に説明する。
【図８】図８は、図３のシステムにおける予備属性ハンドリング段階の動作を概略的に説明する。
【図９Ａ】図９Ａは、頂点反射の技術を説明する。
【図９Ｂ】図９Ｂは、頂点反射の技術を説明する。
【符号の説明】
【００８７】
１０，１２ 処理器
１４ 主属性
１０Ａ 主属性キャッシュ
１２Ａ 予備属性キャッシュ
１６ 予備属性
１８ バッファ
２０ テクスチャバッファ
【図１】
0005185418.tif 000004
【図２】
0005185418.tif 000005
【図３】
0005185418.tif 000006
【図４】
0005185418.tif 000007
【図５】
0005185418.tif 000008
【図６】
0005185418.tif 000009
【図７】
0005185418.tif 000010
【図８】
0005185418.tif 000011
【図９Ａ】
0005185418.tif 000012
【図９Ｂ】
0005185418.tif 000013