JP2002526842A - ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor) - Google Patents

ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)

Info

Publication number
JP2002526842A
JP2002526842A JP2000572802A JP2000572802A JP2002526842A JP 2002526842 A JP2002526842 A JP 2002526842A JP 2000572802 A JP2000572802 A JP 2000572802A JP 2000572802 A JP2000572802 A JP 2000572802A JP 2002526842 A JP2002526842 A JP 2002526842A
Authority
JP
Japan
Prior art keywords
texture
pixel
vertex
primitive
tile
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.)
Granted
Application number
JP2000572802A
Other languages
English (en)
Other versions
JP3657518B2 (ja
Inventor
ジェローム エフ ジュニア デュラック
リチャード イー ヘッセル
ヴォーン ティ アーノルド
ジャック ベンコール
ジョセフ ピー ブラット
ジョージ クアン
スティーヴン エル ドッジェン
エマーソン エス ファン
ザオユ ジー ゴン
トーマス ワイ ホー
ヘングウェイ スー
シドン リー
サム ング
マシュー エヌ パパキポス
ジェイソン アール レッドグレイヴ
スシュマ エス トリヴェディ
ネイサン ディー タック
Original Assignee
アップル コンピュータ インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by アップル コンピュータ インコーポレイテッド filed Critical アップル コンピュータ インコーポレイテッド
Publication of JP2002526842A publication Critical patent/JP2002526842A/ja
Application granted granted Critical
Publication of JP3657518B2 publication Critical patent/JP3657518B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/87Gouraud shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/83Phong shading

Abstract

(57)【要約】 遅延シェーディング、タイリングされたフレーム・バッファ、複数ステージの隠面消去処理(図5)、フォング(Phong)・シェーディング(14000)、サブピクセル・アンチ・エイリアシング、及びテクスチャ−及びバンプ−マッピング(12000)を含む遅延型(deferred)グラフィックス・プロセッサ。

Description

【発明の詳細な説明】
【0001】 (技術分野) 本発明は、コンピューティング・システム(computing system)に関し、一般
的には3次元コンピュータ・グラフィックス(computer graphics)に関し、よ
り特定的には、ディファード・シェーディング(deferred shading)及び向上し
た特性を実行する3次元グラフィックス・プロセッサ(graphics processor)の
ための構造及び方法に関する。
【0002】 (背景技術) 2.1 3次元コンピュータ・グラフィックス コンピュータ・グラフィックスは、コンピュータで画像(ピクチャ)を生成す
る技術及び科学である。絵、すなわち画像の生成は、一般的にはレンダリング(
rendering)と呼ばれる。一般的に、3次元(3D)コンピュータ・グラフィッ
クスでは、あるシーン(scene)でのオブジェクト(object)の表面(又はボリ
ューム)を表すジオメオトリ(geometry)は、フレーム・バッファ(frame buff
er)に記憶されるピクセルに変換され、それから表示装置上に表示される。コン
ピュータ・モニタとして使用されるCRT等、リアルタイム(real-time)表示
装置は、継続的に画像を繰り返して表示することによって、前記表示をリフレッ
シュする(refresh)。このリフレッシュは通常、列毎に起こり、各列はラスタ
線(raster line)又はスキャン線(scan line)と呼ばれる。この明細書におい
て、ラスタ線は下から上に、番号を付けられるが、上から下に表示される。
【0003】 3Dアニメーション(3D animation)において、画像のシーケンスが表示され
、3次元空間での動きの錯覚を与える。対話型3Dコンピュータ・グラフィック
スは、ユーザに、自らのビュー・ポイント(view point)を変えさせ、又はリア
ルタイムでジオメトリを変更させることで、レンダリング・システムに、新しい
画像をリアルタイムで稼動中に生成するよう要求する。
【0004】 3Dコンピュータ・グラフィックスにおいて、各レンダリング可能オブジェク
トは通常、自らのローカル・オブジェクト(local object)座標システムを有し
、それゆえに、オブジェクト座標からピクセル表示座標に変換され(又は変形さ
れ)る必要がある。概念上、これは4段階処理:1)オブジェクト座標からワー
ルド座標(world coordinate)への変換(サイズの拡大又は縮小に関するスケー
リング(scaling)を含む)であり、それはシーン全体に関する座標システムで
ある;2)前記シーンのビュー・ポイントに基づいた、ワールド座標からアイ座
標(eye coordinate)への変換;3)アイ座標から透視的な変換されたアイ座標
への変換であり、透視的スケーリング(さらなるオブジェクトは、より小さく現
れる)が実行された場合;及び4)透視的な変換されたアイ座標から、スクリー
ン座標とも呼ばれるピクセル座標への変換である。スクリーン座標は、3次元空
間における点であり、及び後述のとおり、スクリーン精度(すなわちピクセル)
又はオブジェクト精度(高精度数で、通常フローティング・ポイントである)の
いずれかでよい。これらの変換ステップは、変換が起こる前に、適切な変換マト
リックスを予め計算することによって、一つ又は二つのステップに圧縮すること
ができる。一度、ジオメトリがスクリーン座標になると、それは、フレーム・バ
ッファに記憶される(すなわち「ラスタライズされた“rasterized”」)一組の
ピクセル色値に分解される。グロー・シェーディング(Gouraud shading)、フ
ォン・シェーディング(Phong shading)及びテクスチャ・マッピング(texture
mapping)を含むピクセル色値を生成するための多くの技術が使用される。
【0005】 従来のレンダリング処理の要約は、「3次元コンピュータ・グラフィックスの
基礎(Fundamentals of Three-dimensional Computer Graphics)」、ワット(W
att)著、第5章:レンダリング処理(The Rendering Process)、97乃至11
3ページ、マサチューセッツ(Massachusetts)州、レディング(Reading)、ア
ディソン−ウェスリー出版社(Addison-Wesley Publishing Company)、198
9年発行、1991年増刷、ISBN0−201−15442−0(以後、ワッ
ト参照と称する)に、見ることができる。
【0006】 図1は、3次元オブジェクト、四面体を、その座標軸(Xobj,Yobj, Zobj)とともに示す。3次元オブジェクトは、(Xeye,Yeye,Zeye)に基づ
いて、ビュー・ポイントの座標システムで、変換され、基準化され、及び配置さ
れる。前記オブジェクトは、ビューイング・プレーン(viewing plane)へと投
影され、それによって透視図に修正する。この点において、オブジェクトは、2
次元になったように見える;しかしながら、前記オブジェクトのz座標は維持さ
れるので、それらは後に隠れ面除去技術によって使用することができる。前記オ
ブジェクトは最後に、Zscreenが、ページに垂直に交わる、 (Xscreen,Yscreen,Zscreen)に基づいて、スクリーン座標に変換される。
前記オブジェクト上の点は、表示スクリーン内のピクセルの位置(及びそれの小
数部)によって記述される自らのx及びy座標と、及びビュー・ポイントから、
基準化されたバージョンの距離にZ座標を有する。
【0007】 ジオメトリの多くの異なる部分が、同じピクセルに影響を与えうるので、シー
ン・ビューイング・ポイントに最も近い面を表すジオメトリが決定されなければ
ならない。各ピクセルに関して、前記ピクセルの領域によって境界を成す前記ボ
リューム内の可視面は、ピクセル色値を決定する一方で、隠れ面は、前記ピクセ
ルに影響を与えることができない。最も近い不透明面(ジオメトリの辺縁部が、
ピクセル領域と交差する場合は、複数の面)よりも、ビュー・ポイントに近い非
不透明面は、ピクセル色値に影響を与える一方で、すべての他の非不透明面は、
廃棄される。この明細書において、「閉塞した(occluded)」という用語は、他
の非不透明ジオメトリによって隠されたジオメトリを記述するために使用される
【0008】 可視面決定を実行するために、多くの技術が開発され、及びこれらの技術の調
査は:「コンピュータ・グラフィックス:原理と実践(Computer Graphics : Pr
inciples and Practice)」、フォリー(Foley)、ヴァン・ダム(van Dam)、
ファイナー(Feiner)、及びヒューズ(Hughes)著、第15章:可視面決定(Vi
sible-Surface Determination)、649乃至720ページ、第2版、マサチュ
ーセッツ州、レディング、アディソン−ウェスリー出版社、1990年、199
1年訂正増刷、ISBN0−201−12110−7(以後、フォリー参照(Fo
ley Reference)と称する)を参照して、ここに採用されている。フォリー参照
において、650ページで、「画像精度」及び「オブジェクト精度」という用語
が定義される:「画像精度アルゴリズムは、通常、画像装置の解像度で実行され
、及び各ピクセルにおける可視性を決定する。オブジェクト精度アルゴリズムは
、各オブジェクトが定義される精度で実行され、及び各オブジェクトの可視性を
決定する。」 レンダリング処理が進むにつれて、複数の面が、ピクセルによって境界を定め
られるボリュームと交差するので、ほとんどの従来技術のレンダラ(renderer)
は、一定のスクリーン・ピクセルの色値を何回も計算しなければならない。ピク
セルがレンダリングされる必要がある、平均的回数は、特定のシーンに関しては
、シーンの深度計算複雑性(depth complexity)と呼ばれる。単純なシーンは、
ほぼ1の深度計算複雑性を有する一方で、複雑なシーンは、10又は20の深度
計算複雑性を有しうる。シーン・モデル(scene model)がより複雑になると、
レンダラは、常に増加する深度計算複雑性を有するシーンを処理することを要求
されるであろう。このように、ほとんどのレンダー(renders)に関して、シー
ンの深度計算複雑性は、浪費された処理の基準である。例えば、10の深度計算
複雑性を有するシーンに関して、計算の90%は、隠れピクセルで浪費される。
この浪費された計算は、単純なZバッファ技術(後述される)を使用するハード
ウェア・レンダラには典型的であり、それはハードウェアに簡単に組み込むこと
ができるので、一般的に選択される。Zバッファ技術よりも複雑な方法は、今ま
で、複雑すぎて、一般的には費用効果的な方法で構築することができなかった。
本発明において示された前記方法及び装置の重要な特性は、ラスタライズされる
前に、ジオメトリの隠れ部分を排除することによって、この浪費された計算を避
ける一方で、費用効果的なハードウェアに組み込むのに十分に単純であることで
ある。
【0009】 表面上の一点(しばしば、ポリゴンのバーテックス)が、スクリーン座標に変
換される時、前記点は、三つの座標:1)ピクセル単位のx座標(一般的に小数
点を含む);2)ピクセル単位のy座標(一般的に小数点を含む);及び3)ア
イ座標、仮想スクリーンからの距離、又はビューイング・ポイントからの面の相
対距離を維持する他の座標システムのいずれかにおける点のz座標を有する。本
明細書において、正のz座標値は、ビューイング・ポイントからの「観察方向」
に関して使用され、より小さい値は、ビューイング・ポイントにより近い位置を
示す。
【0010】 面が一組の平面ポリゴンによって近似される(approximated)時、各ポリゴン
のバーテックスは、スクリーン座標に変換される。ポリゴンにおける又はその上
にある点に関して(バーテックスは除く)、スクリーン座標は、通常は、エッジ
・ウォーキング(edge walking)及びスパン補間(span interpolation)の処理
によって、バーテックスの座標から補間される。このようにz座標値は、一般的
に、ジオメトリがレンダリングされると、各ピクセル値(色値とともに)に含ま
れる。 2.2 包括的3Dグラフィックス・パイプライン(Generic 3D Graphics Pipe
line) 多くのハードウェア・レンダラが開発されており、一例は、:「Leo:費用
効果的3Dシェーデド・グラフィックスのためのシステム(Leo: A System for
Cost Effective 3D Shaded Graphics)」ディアリング(Deering)及びネルソン
(Nelson)著、SIGGRAPH93会報の101乃至108ページ、1993
年8月1−6日、コンピュータ・グラフィックス会報、年次会議シリーズ、ニュ
ーヨーク、ACM SIGGRAPH、1993年出版、ソフトカバーISBN
0−201−58889−7及びCD−ROM ISBN0−201−5699
7−3(以後、ディアリング参照と称する)を参照して、ここに採用されている
。ディアリング参照は、それが「真に包括的であり(truly generic)、ほぼす
べての商業用3Dグラフィックス・アクセレレータ(3D graphics accelerator
)が、この要約に適合する最高レベルである」として述べている包括的3Dグラ
フィックス・パイプライン(すなわち、レンダラ、又はレンダリング・システム
)のダイアグラム(diagram)を含み、このパイプライン・ダイアグラムは、図
2に記載のとおり再現される。そのようなパイプライン・ダイアグラムは、レン
ダリングの処理を運ぶが、特定のハードウェアを記述しない。本明細書は、包括
的3Dグラフィックス・パイプラインのステップのいくつかを共有する新しいグ
ラフィックス・パイプラインを示す。包括的3Dグラフィックス・パイプライン
における各ステップは、ここでは簡単に説明され、図3に記載の方法の流れのダ
イアグラムにおいても示される。ポリゴンの処理が、本明細書のすべてにおいて
仮定されるが、3Dジオメトリを記述するための他の方法が、代わりになること
もできる。説明を簡単にするために、記述された方法におけるポリゴンの種類と
して、三角形が使用される。
【0011】 図2に記載のとおり、データ入力(ステップ212)後、包括的3Dグラフィ
ックス・パイプラインのフローティング・ポイント集約的機能の中での第一のス
テップは、変換ステップ(ステップ214)であり、それは前述された。変換ス
テップは、方法の流れのダイアグラムの外側のループにおける第一のステップと
して、図3にも記載されており、また、「次のポリゴンを得る(get next polyg
on)」も含む。第二のステップ、クリップ・テスト(clip test)は、少なくと
もビュー・ボリューム(view volume)に部分的に含まれるか見るために、前記
ポリゴンを調べる(時に、錐台系の形状である)(ステップ216)。ポリゴン
が、ビュー・ボリュームにない場合、それは放棄される;そうでなければ、処理
が継続する。第三のステップは、面決定であり、ビューイング・ポイントから逸
れた方を向いたポリゴンは放棄される(ステップ218)。一般的に、面決定は
、閉じられたボリュームであるオブジェクトにのみ適用される。第四のステップ
は、ライティング計算(lighting computation)であり、一般的に、様々な種類
の複数の光源での、グロー・シェーディング及び/又はテクスチャ・マッピング
に関するセット・アップ(set up)を含むが、フォン・シェーディング又は多く
の他の選択肢の一つに関して設定することもできる(ステップ222)。第5の
ステップ、クリッピング(clipping)が、ビュー・ボリュームの外側にあるポリ
ゴンのあらゆる部分を削除するのは、前記部分は、ビューイング・プレーンの四
角の領域内に突出しないからである(ステップ224)。一般的に、ポリゴン・
クリッピングは、ポリゴンを、両方がビューイング・プレーンの領域内に突出す
る、二つのより小さいポリゴンに分割することによって、なされる。ポリゴン・
クリッピングは、計算上大変高価である。第六のステップ、透視的分割は、オブ
ジェクトの、ビューイング・プレーンへの突出に関して、透視的修正をする(ス
テップ226)。この点において、ポリゴンのバーテックスを表す点は、ステッ
プ7、スクリーン空間変換ステップによって、ピクセル空間座標に変換される(
ステップ228)。第八のステップ(ステップ230)、増分レンダリングに関
するセット・アップは、様々な始点、終点、及びウェッジ・ウォーキング並びに
スパン補間に必要な増分値を計算する(例えば、x、y、及びz座標;RGB色
;テクスチャ・マップ空間u及びv座標;等)。
【0012】 描画集約的機能の中で、エッジ・ウォーキング(ステップ232)は、以前に
生成されたスパン(同じポリゴンにおいて)からの値を増大させることによって
、表示装置の書くラスタ線に関する水平スパンを増大的に生成し、それによって
ポリゴンの反対のエッジに沿って、垂直に「ウォーキング」する。同様に、スパ
ン補間(ステップ234)は、ビューイング・ポイントからのピクセルの距離を
示すz座標値を含む、ピクセル値を生成するために、スパンに沿って水平に「ウ
ォーキング」する。最後に、テスティング(Testing)及びブレンディング(Ble
nding)とも称されるzバッファされたブレンディング(ステップ236)は、
最終のピクセル色値を生成する。前記ピクセル値は、色値も含み、それは単純な
グロー・シェーディング(すなわち、バーテックス色値の補間)によって、又は
テクスチャ・マッピング(おそらく、ともにブレンドされた複数のテクスチャ・
マップを使用して)、フォン・シェーディング(すなわち、パー・フラグメント
(per fragment)ライティング)、及び/又はバンプ・マッピング(bump mappi
ng)(補間された面法線を摂動させる)等の、より計算上高価な技術によって、
生成することができる。描画集約的機能が完了した後、二重バッファされたMU
X出力ルックアップ・テーブル・オペレーション(double-buffered MUX output
look-up table operation)が実行される(ステップ238)。この図において
、丸い角を有するブロック(block)は、通常は機能又は処理オペレーションを
表す一方で、尖った角の長方形は、通常は記憶されたデータ又はメモリを表す。
【0013】 生成されたz座標値を、Zバッファに記憶された対応する値と比較することに
よって、zバッファされたブレンドは、(それが、前記ピクセルの場所に関して
、以前に記憶された値よりも、ビューイング・ポイントに近い場合)それをフレ
ーム・バッファに書き込むことによって、新しいピクセル値を維持するか、又は
新しいピクセル値を放棄する(それがさらに遠い場合)。このステップにおいて
、アンチエイリアシング(antialiasing)方法は、新しいピクセル色を、古いピ
クセル色とブレンドすることができる。zバッファされたブレンドは、通常は後
述のとおり、パー・フラグメントのオペレーションのほとんどを含む。
【0014】 包括的3Dグラフィックス・パイプラインは、二重バッファされたフレーム・
バッファを含むので、二重バッファされたMUXも含まれる。出力ルックアップ
・テーブルは、色マップ値を変換するために含まれる。最後に、デジタル−アナ
ログ変換によって、表示装置への入力のためのアナログ信号を作る。
【0015】 包括的3Dグラフィック・パイプラインの主な欠点は、その描画集約的機能が
、固定された数のポリゴンを与えられたピクセル・レベルで、決定的ではないこ
とである。すなわち、固定された数のポリゴンを与えられると、平均的ポリゴン
のサイズが増大するにつれて、より多くのピクセルレベルの計算が必要とされる
。しかしながら、フローティング・ポイント集約的機能は、ポリゴンの数に比例
し、及び平均的なポリゴンのサイズから独立している。それゆえに、フローティ
ング・ポイント集約的機能と、描画集約的機能の間の計算力の量の均衡を保つの
が難しいのは、この均衡が、平均的なポリゴンのサイズに依存するからである。
【0016】 従来技術のZバッファは、従来のランダム・アクセス・メモリ(Random Acces
s Memory)(RAM又はDRAM)、ビデオ・ラム(VRAM)、又は特殊なD
RAMに基づいている。特殊DRAMの一例は、「FBRAM:3Dグラフィッ
クスに最適化された、新しい形式のメモリ(FBRAM:A new Form of Memory Optim
ized for 3D Graphics)」、ディアリング(Deering)、シュラップ(Schlapp)
、及びラヴェル(Lavelle)著、SIGGRAPH94会報、167乃至174
ページ、1994年7月24−29日、コンピュータ・グラフィックス会報、年
次会議シリーズ、ニューヨーク、ACM SIGGRAPH、1994年出版、
ソフトカバーISBN0201607956に掲載されている。 2.3 パイプラン状態 OpenGLは、プログラマに、グラフィック画像を作るためにオブジェクト
及びオペレーションを特定させる何百もの機能及びプロシージャを含むグラフィ
ックス・ハードウェアへのソフトウェア・インターフェースである。前記オブジ
ェクト及びオペレーションは、三次元オブジェクトの色画像を作るための適切な
特性を含む。OpenGL(バージョン1.2)のほとんどは、オブジェクトが
、点、線、ポリゴン、又はビット・マップ(bitmap)であっても、前記グラフィ
ックス・ハードウェアが、フレーム・バッファを含むことを仮定し、又は要求し
、及び前記オペレーションが、前記オブジェクト上でのオペレーションでもよい
。OpenGLの一般的な特徴(グラフィカル・インターフェースの単なる一例
)は、マーク・シーガル(Mark Segal)及びカート・アクレイ(Kurt Akeley)
編、「OpenGL登録商標グラフィックス・システム:仕様書(バージョン1
.2)」、バージョン1.2、1998年3月の参照で説明される;及びここに
は参照のために採用されている。OpenGLを参照しているが、本発明は、O
penGLと、又は他の標準あるいは非標準グラフィカル・インターフェースと
互換性があり、又は一致している構造、プロシージャ、又は方法に限定されない
。望ましくは、本発明の構造及び方法は、標準インターフェースの一つのために
準備されたデータ・セットが、変更なく本発明の構造及び方法によって処理され
てもよいように、OpenGL又は他の標準グラフィカル・インターフェースと
一致する方法で実行されてもよい。しかしながら、本発明の構造及び方法は、O
penGLによっては供給されないいくつかの特徴を供給し、及びそのような包
括的な入力/出力が供給される時でも、前記実行は異なる方法で供給される。
【0017】 「パイプライン状態(pipeline state)」というフレーズは、従来技術におい
ては単一の定義を有しない。例えば、OpenGL仕様書は、状態の項目に関し
て、グラフィックス・レンダリング・マシン又はパイプライン状態の種類並びに
量を、及び前記状態情報を記憶するために必要とされるビット並びにバイトの数
を説明する。OpenGL定義では、パイプライン状態は、例えば、「非バーテ
ックス」情報と同様に、それ自身がバーテックス法線である複数のバーテックス
及び色を含むオブジェクト・バーテックス関連情報を含む傾向にある。
【0018】 情報が、グラフィックス・レンダラに送られる時、少なくともいくつかのオブ
ジェクト・ジオメトリ情報が、シーンを記述するために供給される。通常は、オ
ブジェクト又は複数のオブジェクトは、バーテックス情報に関して特定され、オ
ブジェクトはモデル化され、定義され、又はそうでなければ、点、線、又は一つ
以上のバーテックスを有するポリゴン(オブジェクト・プリミティブ(object p
rimitives))によって特定される。単純に見ると、バーテックスは、空間にお
ける場所(location)であり、例えば、ある参照起点と比較した三次元空間(x
、y、z)座標によって特定されてもよい。面法線、色、テクスチャ、透明性、
及びバーテックスの特性に関する類似の情報等、他の情報が各バーテックスと関
連する。この情報は、基本的に「パー・バーテックス("per-vertex")」情報で
ある。残念なことに、パー・バーテックス情報に対する必要条件としての、入力
情報とバーテックスとの間の1対1の関係は、必ずしも制限的ではない。例えば
、色値は、特定のバーテックスに関するデータ・ストリームにおいて特定されて
もよく、前記色が、連続するバーテックスに関して変更するまで、データ・スト
リームにおいて再特定されない。色値が、明らかに各バーテックスに関する入力
データ・ストリームに含まれていなくても、前記色値は、パー・バーテックス・
データとして特徴づけられてもよい。
【0019】 テクスチャ・マッピングは、パー・バーテックス情報又はパイプライン状態情
報のいずれとしても考えられる情報又はデータの興味深い例を示す。各オブジェ
クトに関して、一つ以上のテクスチャ・マップが特定され、各テクスチャ・マッ
プは、一つのテクスチャ座標又は複数のテクスチャ座標等、ある方法で識別され
る。テクスチャ座標で指しているテクスチャ・マップが、パイプライン状態の一
部として考えられてもよい一方で、それがパー・バーテックス情報であることが
主張されてもよい。
【0020】 1対1ベースでの、ジオメトリ・オブジェクト・プリミティブに関連しない、
ライティングの場所並びに強さ、素材設定、反射特性、及びレンダラが動作する
他のすべての規則等、レンダラによって使用される他の情報は、より正確に、パ
イプライン状態と称されてもよい。パー・バーテックス・ベースでは、変化しな
い、又は変化してはならないものは、パイプライン状態だけであると考えられる
かもしれないが、上述の理由から、これは完全に明確な定義ではない。例えば、
レンダリングされるべき一定のオブジェクトに適用されるべき、特定の深度テス
ト(後述の説明を参照)を定義してもよく、例えば、深度テストは、z値が、厳
格に、いくつかのオブジェクトに関して「より大き("greater-than")」く、及
び他のオブジェクトに関しては「より大きいか又は等し("greater-than-or-equ
al-to")」くなることを要求してもよい。時によって変わるこれらの特定の深度
テストは、そのときのパイプライン状態であると考えられてもよい。
【0021】 OpenGLにおいてレンダラ(パイプライン)状態として考えられるパラメ
ータは、前記参照されたOpenGL仕様書(バージョン1.2、193乃至2
17ページ)の第6.2節において確認されている。
【0022】 基本的に、レンダラによって使用されるデータ又は情報は2種類ある:(1)
パー・バーテックス・データと考えられてもよいプリミティブ・データ、及び(
2)それ以外のすべてであるパイプライン状態データ(又は単にパイプライン状
態)である。この違いは、一定の情報項目を、パイプライン状態又は非パイプラ
イン状態のいずれかとして扱うグラフィックス・レンダラを実行する方法がある
ので、特定の規則としてよりもガイドライン(guideline)として考えられるべ
きである。 2.4 パー・フラグメント・オペレーション(per-fragment operations) 包括的3Dグラフィックス・パイプラインにおいて、「zバッファされたブレ
ンド」ステップは、実際には、多くのより小さい「パー・フラグメント」オペレ
ーションのステップを取り入れる。
【0023】 OpenGL(オープン・グラフィックス・ライブラリ(Open Graphics Libr
ary)及びD3D等、アプリケーション・プログラム・インターフェース(AP
Is(Application Program Interfaces))は、一組のパー・フラグメント・オ
ペレーションを定義する(バージョン1.2OpenGL仕様書の第4章を参照
)。本発明の構造並びに方法と、従来の構造並びにプロシージャとの間の包括的
な類似性及び相違が、簡単に理解できるように、例示的なOpenGLパー・フ
ラグメント・オペレーションを簡潔に検討する。
【0024】 OpenGLの下で、フレーム・バッファは、一組のピクセルを、二次元アレ
イとして記憶する。フレーム・バッファに記憶された各ピクチャ・エレメント(
picture-element)又はピクセルは、単純に一組のいくつかのビットである。ピ
クセルごとのビット数は、特定のGL実行又はコンテクストによって変化しても
よい。 フレームバッファにおける各ピクセルからの対応するビットは、共にビットプレ
ーン(bitplane)にグループ分けされる;各ビットプレーンは、各ピクセルから
の単一のビットを含む。ビットプレーンは、色、深度、ステンシル(stencil)
、及び蓄積バッファとして称されるいくつかの論理バッファにグループ分けされ
る。色バッファは順に、OpenGL下で左前バッファ(front left buffer)
、右前バッファ(front right buffer)、左後ろバッファ(back left buffer)
、右後ろバッファ(back right buffer)及びいくつかの追加の補助バッファと
称されるものを含む。前方バッファに記憶された値は、表示モニタに通常表示さ
れる値である一方で、後方バッファ及び補助バッファの内容は、不可視であり表
示されない。立体的なコンテクストは、左前及び右前バッファの両方を表示する
一方で、モノスコーピックな(monoscopic)コンテクストは、左前バッファのみ
を表示する。一般的に、色バッファは、同じ数のビットプレーンを有していなけ
ればならないが、コンテクストの特定の実行は、右バッファ、後方バッファ、又
は補助バッファをまったく供給しなくてもよく、実行又はコンテクストは、追加
的に、ステンシル、深度又は蓄積バッファを供給し又は供給しなくてもよい。
【0025】 OpenGLの下で、色バッファは、符号のない整数の色インデックス又はR
,G,B及び任意で符号のない整数値の数字“A”のいずれかを含む;及び色バ
ッファ、深度バッファ(供給される場合)、ステンシル・バッファ(供給される
場合)、及び蓄積バッファ(供給される場合)の各々におけるビットプレーンの
数は、固定され及びウィンドウ依存である。蓄積バッファが供給される場合、少
なくともR,G及びB色コンポーネントごとのビット・プレーンを、色バッファ
と同じだけ有する。 (Xw,Yw)のウィンドウ座標でのラステライゼーション(rasterization)に
よって作られたフラグメントは、多くのテスト、パラメータ及び条件に基づいて
、その場所で、フレームバッファにおけるピクセルを変更する。順番に、フラグ
メント及びそれに関連するデータで始まり、フレームバッファへの最終出力スト
リームで終わる、通常実行されるいくつかのテストの中で、特筆すべきは、実行
される順番(及びAPIの中でのいくつかのバリエーション(variation)を有
する)である:1)ピクセル・オーナシップ・テスト;2)シザー(scissor)
・テスト;3)アルファ(alpha)・テスト;4)色テスト;5)ステンシル・
テスト;6)深度テスト;7)ブレンディング;8)ディザリング(dithering
);及び9)ロジコップ(logicop)である。OpenGLが、アルファ・テス
トとステンシル・テストとの間の明確な「色テスト」を供給しないことが、注目
される。OpenGL下でのパー・フラグメント・オペレーションは、すべての
色計算の後に適用される。これらのテスト又はオペレーションの各々は、簡潔に
後述される。 2.4.1 オーナシップ・テスト OpenGLの下で、ピクセル・オーナシップ・テストは、フレームバッファ
における(Xw,Yw)という場所でのピクセルが、現在GLコンテクストによっ
て所有されているか決定する。所有されていない場合、ウィンドウ・システムは
、入力フラグメントの運命を決定する。前記フラグメントが放棄され、又は引き
続くパー・フラグメント・オペレーションのあるサブセットが、前記フラグメン
トに適用されることが、可能性のある結果である。このピクセル・オーナシップ
・テストは、ウィンドウ・システムに、適切にGLの振舞いを制御させる。
【0026】 表示スクリーンを有するコンピュータにおいて、一つ又はいくつかの処理が実
行され、及び各処理は、表示スクリーン上にウィンドウを有することが仮定され
る。各処理に関して、関連するウィンドウは、前記処理が書き込み又はレンダリ
ングしたいピクセルを定義する。二つ以上のウィンドウがある場合、一つの処理
に関連するウィンドウは、他の処理に関連するウィンドウの前か、前記ウィンド
ウの後ろか、又は両方のウィンドウが完全に可視でもよい。全体の表示スクリー
ン又はデスクトップに関して、一つのフレーム・バッファしかないので、ピクセ
ル・オーナシップ・テストは、どの処理、及び関連するウィンドウが、前記ピク
セルの各々を所有するか決定することを伴う。特定の処理が、ピクセルを「所有
」しない場合、フレーム・バッファに関連したピクセル・オーナシップ・テスト
に失敗し、及び前記ピクセルは捨てられる。典型的なパラダイム(paradigm)の
下では、ピクセル・オーナシップ・テストは、各処理ごとに実行され、及びフレ
ーム・バッファにおける一定のピクセルの場所に関しては、前記ピクセルは前記
処理の一つに関してピクセル・オーナシップ・テストを通過し、及び他の処理に
関してピクセル・オーナシップ・テストに失敗してもよいことが注目される。さ
らに、一般的には、特定のピクセルが、一つだけの処理に関して、オーナシップ
・テストを通過することができるのは、たった一つ処理が、同時に特定のフレー
ム・バッファピクセルを所有することができるからである。
【0027】 いくつかのレンダリング体系において、ピクセル・オーナシップ・テストは、
特に関連しなくてもよい。例えば、シーンがオフスクリーン・バッファ(off-sc
reen buffer)にレンダリングされている場合、及び引き続きデスクトップにブ
ロック転送され又はブリットされ("blitted")る場合、ピクセル・オーナシッ
プは、実際は関連さえしない。各処理が自動的に、又は必ず、ピクセル・オーナ
シップ・テストを通過するのは(それが実行される場合)、各処理は、そのオフ
スクリーン・バッファを有効に所有し、及び前記バッファの前には何もないから
である。
【0028】 特定の処理に関して、前記ピクセルが、前記処理によって所有されない場合、
前記場所へピクセル値を書き込む必要はなく、及び前記ピクセルに関するすべて
の連続する処理は無視されてもよい。通常のワークステーションにおいて、スク
リーン上の特定のピクセルに関連するすべてのデータは、ラステライゼーション
の間に読み取られる。zバッファ、色値、古い色値、アルファ値、ステンシル・
ビット、等と同様に、フレーム・バッファ・ピクセルを所有する処理のアイデン
ティティ(identity)に関する情報を含む、前記ピクセルを送るあらゆるポリゴ
ンに関するすべての情報が読み取られる。一つの処理が前記ピクセルを所有する
場合、他のダウンストリーム(downstream)処理が実行される(例えば、シザー
・テスト、アルファ・テスト等)。他方で、前記処理がピクセルを所有せず、及
び前記ピクセルに関するオーナシップ・テストに失敗する場合、前記処理は、前
記ピクセルをさらに考慮する必要はなく、前記ピクセルは連続するテストへと省
かれる。 2.4.2 シザー・テスト OpenGLの下で、シザー・テストは、左下(左、下)座標、長方形の幅、
及び長方形の高さに対応する四つの座標値によって定義される、シザー長方形の
中に(Xw,Yw)があるか決定する。前記値は、「無効シザー(int left,int bottom,sizei width,sizei height)」のプロシージャで、OpenGLの下、設定される。 及び である場合、シザー・テストは通過する;そうでなければ、シザー・テストは失
敗し、及びテストされる特定のフラグメントは放棄される。様々な初期状態が供
給され、及びエラー条件が監視され、報告される。
【0029】 単純に見ると、長方形は、オンスクリーン又はオフスクリーンのウィンドウで
もよいウィンドウを定義する。前記ウィンドウは、x−左、x−右、y−上部、
及びy−低部座標によって定義される(それが前記点からの点及び高さ及び幅に
関して表現されていても)。このシザー・ウィンドウは、スクリーンを割り当て
られたシザー・ウィンドウに入るポリゴン・フラグメントからのピクセルだけが
変化するという点で、有用である。ポリゴンがシザー・ウィンドウをまたぐ場合
には、シザー・ウィンドウの中にあるピクセルのみが変化してもよい。
【0030】 OpenGLマシンにおけるポリゴンが、パイプラインに下りる時、パイプラ
インは、前記ピクセルのz値及び色を決定するために計算する必要があるものす
べてを計算する。一度、z値及び色が決定されると、どの情報がフレーム・バッ
ファに配置されるのか決定するために、前記情報が使用される(それによって、
表示スクリーンに何が表示されるのかを決定する)。
【0031】 ピクセル・オーナシップ・テストのように、シザー・テストは、出力を変更さ
せるためのフレーム・バッファに実際に到達する前に、ピクセル及び/又はフラ
グメントを廃棄するための手段を供給する。 2.4.3 アルファ・テスト 色は、四つの値、赤(R)、緑(G)、青(B)、及びアルファ(A)で定義
される。RGB値は、各原色からのコントリビューション(contribution)を定
義し、及びアルファは、透明性に関連する。通常、色は32ビット値であり、各
コンポーネントに8ビットであるが、そのような表現は32ビットに制限されな
い。アルファ・テストは、一定のピクセルのアルファ値を、アルファ参照値と比
較する。例えば、前記比較が、グレーター・ザン・(greater-than)オペレーシ
ョン、レス・ザン・(less-than)オペレーション等になるように、比較の種類
が特定されてもよい。前記比較が、グレーター・ザン・オペレーションである場
合、ピクセルのアルファ値は、アルファ・テストを通過するためには、参照より
も大きくなければならない。ゆえに、ピクセルのアルファ値が0.9であり、参
照アルファは0.8であり、及び前記比較はグレーター・ザンである場合、前記
ピクセルは、アルファ・テストを通過する。アルファ・テストを通過しないピク
セルは、捨てられるか廃棄される。OpenGL仕様書は、アルファ・テストが
OpenGLにおいて実行される方法を説明しており、ここではさらにそれを説
明しない。
【0032】 アルファ・テストは、パー・フラグメント・オペレーションであり、すべての
フラグメント色付け計算及びライティング並びにシェーディング・オペレーショ
ンが完了した後に、行われる。これらのパー・フラグメントオペレーションの各
々は、従来のzバッファ・ブレンディング・オペレーションの一部として考えら
れてもよい。 2.4.4 色テスト 色テストは、ピクセル・アルファ(A)値と参照値との間のマグニチュード又
は論理的比較を実行するよりも、R,G又はB色コンポーネントの一つ又はその
組み合わせと参照値との間のマグニチュード又は論理的比較を実行する点を除き
、上述のアルファ・テストと類似している。比較テストは、例えば、グレーター
・ザン、レス・ザン、イコール・トゥ(equal-to)、グレーター・ザン・オア・
イコール・トゥ(greater-than-or-equal-to)、「グレーター・ザンc1、レス
・ザンc2」でもよく、c1及びc2は、ソアな(sore)予め決められた参照値等
である。例えば、ピクセルR値が、最小値と最大値の間にある場合のみ、色テス
トが通過されるように、参照最小R値、及び参照最大R値を特定してもよい。色
テストは、例えば、青スクリーン機能を供給するために有用かもしれない。比較
テストは、単一の色コンポーネント上で又は色コンポーネントの組み合わせ上で
実行されてもよい。さらに、アルファ・テストに関して、各コンポーネントに一
つの値があるが、色テストに関しては、各コンポーネントにつき有効な二つの値
、最大値及び最小値がある。 2.4.5 ステンシル・テスト OpenGLの下で、ステンシル・テストは、場所(Xw,Yw)におけるステ
ンシル・バッファに記憶された値と、参照値との間の比較の結果に基づいて、フ
ラグメントを条件付きで廃棄する。参照値が、ステンシル・バッファにおける、
マスクされ、記憶された値より小さく、小さいか又は等しく、等しく、より大き
いか又は等しく、より大きいか、又は等しくない場合にはいつも、ステンシル・
テストが決して通過しないように、いくつかのステンシル比較機能が許可される
。OpenGLの下では、ステンシル・テストが失敗する場合、入力フラグメン
トは廃棄される。参照値及び比較値は、複数のビット、通常は、256の異なる
値が表示されるように8ビットを有することができる。オブジェクトが、フレー
ム・バッファにレンダリングされる時、ステンシル・ビットを有するタグ(tag
)も、フレーム・バッファに書き込まれる。これらのステンシル・ビットは、パ
イプライン状態の一部である。実行するべきステンシル・テストの種類は、ジオ
メトリがレンダリングされる時に、特定することができる。
【0033】 ステンシル・ビットは、様々なフィルタリング、マスキング、又はステンシリ
ング・オペレーションを実行するために使用される。例えば、特定のフラグメン
トが、最後にフレーム・バッファにおける特定のピクセルに影響を与えてる場合
、ステンシル・ビットは、ピクセル情報とともに、フレーム・バッファに書き込
まれることができる。 2.4.6 深度バッファ・テスト OpenGLの下で、深度バッファ・テストは、深度比較が失敗した場合、入
力フラグメントを廃棄する。前記比較は、OpenGLシンボリック(symbolic
)定数DEPTH_TESTを使用する包括的イネーブル(Enable)及びディス
エーブル(Disable)コマンドによって、可能にされ又は不能にされる。深度テ
ストが不能にされる時、深度比較及びそれに続く深度バッファ値への可能な更新
が回避され、及びフラグメントは次のオペレーションに渡される。ステンシル・
ビットも関与しており、テストが回避された場合でも変更される。ステンシル値
は、深度バッファ・テストが通過した場合に変更される。深度テストが可能にさ
れる場合、深度比較が起こり、深度バッファ及びステンシル値が引き続き変更さ
れてもよい。深度テストがOpenGLにおいて実行される方法は、OpenG
L仕様書の145ページにおいて、より詳細に説明されている。
【0034】 深度比較が実行され、そこで可能な結果は以下のとおりである:深度バッファ
・テストは、入力フラグメントのZw値が、入力フラグメントの(xw,yw)座
標によって与えられる場所において記憶された深度値より、小さいか、小さいか
又は等しいか、等しいか、より大きいか、より大きいか又は等しいか、又は等し
くない場合、常に、決して通過しない。深度バッファ・テストが失敗する場合、
入力フラグメントは廃棄される。フラグメントの(xw,yw)座標におけるステ
ンシル値は、深度バッファ・テストの失敗に対して現在有効である関数に従って
、更新される。そうでなければ、フラグメントは、次のオペレーションへと続き
、フラグメントの(xw,yw)の場所における深度バッファの値は、フラグメン
トのzw値に設定される。この場合において、ステンシル値は、深度バッファ・
テストの成功に関して現在有効である関数に従って、更新される。必要なOpe
nGL状態は、値が8の整数と、及び深度バッファリングが可能にされるのか不
能にされるのかを示す単一のビットである。 2.4.7 ブレンディング(Blending) OpenGLの下で、ブレンディングは、入力フラグメントのR,G,B及び
A値を、入力フラグメント(xw,yw)の場所において、フレームバッファに記
憶されたR,G,B,及びA値と結合させる。
【0035】 このブレンディングは、通常は入力フラグメントのアルファ値(A)及び、対
応するフレーム・バッファに記憶されたピクセルのそれに依存する。次の検討に
おいて、Csは、入力フラグメントに関するソース色(source color)であり、
Cdは対応するフレームバッファの場所におけるデスティネーション色(destin
ation color)であり、及びCcは、GL状態におけるコンスタント色(constan
t color)である。これらの色の個別のRGBAコンポーネントは、それぞれs
、d及びcの添字によって表示される。
【0036】 ブレンディングは、基本的には、フレームバッファにおける色及びフラグメン
トにおける色を取り、及びそれらを混ぜる。ブレンディングが達成される方法、
すなわち特定のブレンディング関数は、ソースとデスティネーションの両方に関
して、様々な代替から選択されてもよい。
【0037】 ブレンディングは、OpenGL仕様書の146乃至149ページに説明され
ており、ここに参照のために採用されている。様々なブレンド方程式が、Ope
nGLの下、利用可能である。例えば、ソース色(Cs)とソース付加要素4つ
(S)の積を、デスティネーション色(Cd)とデスティネーション付加要素(
D)4つの積に加えることによって、すなわちC=CsS+CdDによって、ブレ
ンド結果(C)が得られる、加法的タイプのブレンドが利用可能である。代替的
に、ブレンド方程式は、減法(C=CsS−CdD)、逆の減法(C=CdD−Cs S)、最小関数(C=min(Cs,Cd))、最大関数(C=max(Cs,Cd ))でもよい。OpenGLの下、ブレンディング方程式は、各色コンポーネン
ト及びそれの対応する付加係数に関して、個別に評価される。4つのR,G,B
,Aコンポーネントの各々は、それぞれの付加要素を有する。
【0038】 ブレンディング・テスト(又はブレンディング方程式)は、パイプライン状態
の一部であり、及び潜在的にすべてのポリゴンに対して変化することができるが
、より一般的には、作られたオブジェクト又はいくつかのポリゴンに対してのみ
変化するであろう。
【0039】 通常、ブレンディングが、ピクセル・オーナシップ・テスト及びステンシル・
テスト等、他のテストが通過した場合のみ、実行されるのは、検討中のピクセル
又はフラグメントが、出力に効果を有するであろう、又は有しうることが明白だ
からである。 2.4.8 ディザリング OpenGLの下で、ディザリングは、二つの色値又はインデックスの間で選
択する。RGBAモードにおいて、バイナリ・ポイントの左に、mビットを有す
る固定点値としての色コンポーネントのいずれかの値を検討し、mはフレームバ
ッファにおける前記コンポーネントに割り当てられたビットの数である;そのよ
うな各値をcと称する。各cに関して、ディザリングは、c1∈{max{0,
[c]−1,[c]}になるように、値c1を選択する。この選択は、ピクセル
のxw及びyw座標に依存してもよい。色インデックス・モードにおいて、同じ規
則が適用され、cは単一の色インデックスである。cの値は、コンポーネント又
はインデックスのいずれかに関して、フレームバッファにおいて表示可能な最大
値よりも大きくてはならない。
【0040】 多くのディザリング・アルゴリズムが可能であるが、あらゆるアルゴリズムに
よって生成されたディザリングされた値は、通常は、入力値及びフラグメントの
x並びにyウィンドウ座標にのみ依存しなければならない。ディザリングが不能
にされる時、各色コンポーネントは、対応するフレームバッファ・コンポーネン
トにあるのと同じだけのビットを有する固定点値に切り捨てられ、色インデック
スは、フレームバッファの色インデックス部分において表示可能な最も近い整数
に四捨五入される。
【0041】 ディザリングのOpenGL仕様は、OpenGL仕様書、特に149乃至1
50ページにおいて、より完全に説明されており、それは参照のためにここに採
用されている。 2.4.9 ロジコップ(Logicop) OpenGLの下で、入力フラグメントの色又はインデックス値と、対応する
場所におけるフレーム・バッファに記憶された色又はインデックス値との間に適
用される、最終の論理的オペレーションがある。論理的オペレーションの結果は
、フラグメントの(x,y)座標でのフレームバッファにおける値と入れ替わる
。例えば、:clear,set,and,noop,xor,or,nor,
nand,invert,copy,inverted and, equivalence,reverse or,reverse and,i
nverted copy,及びinverted orを含む、様々な論理的
オペレーションが、ソース(s)とデスティネーション(d)の間で実行されて
もよい。ロジコップの議論及び対応するオペレーションは、 OpenGLロジコップ実行の追加の詳細と同様に、OpenGL仕様書の15
0乃至151ページにおいて説明されている。論理的オペレーションは、書き込
みのために選択される各色インデックス・バッファに関して、又は書き込みのた
めに選択される各色バッファの各赤、緑、青及びアルファ値に関して、独立して
実行される。要求される状態は、論理的オペレーションを示す整数と、及び論理
的オペレーションが可能にされたか又は不能にされたかを示す2ビットである。
2.5 アンチエイリアシング(Antialiasing) 本明細書において、ピクセルは、表示装置の最小の、個別に制御可能なエレメ
ントのことである。しかし、画像は離散ピクセルへと量子化されるので、空間的
なエイリアスが起こる。通常のエイリアスの人為的な結果は、直線又はエッジが
、ピクセルの列を対角線に断つ時に起こる「階段(staircase)」効果である。
【0042】 いくつかのレンダリング・システムは、ピクセルをサブピクセルに分割するこ
とによって、エイリアス効果を低減させ、各サブピクセルは、個別に色付けする
ことができる。画像が表示されるべき時は、各ピクセル内のすべてのサブピクセ
ルに関する色は、前記ピクセルに関する平均的な色を形成するためにブレンドさ
れる。ピクセルごとに16までのサブピクセルを使用するレンダラは、「リアリ
ティ・エンジン・グラフィックス(Reality Engine Graphics)」、アクリー(A
keley)、SIGGRAPH93会報の109乃至116ページ、1993年8
月1−6日、コンピュータ・グラフィックス会報、年次会議シリーズ、ニューヨ
ーク、ACM SIGGRAPH、1993年出版、ソフトカバーISBN0−
201−58889−7及びCD−ROM ISBN0−201−56997−
3に記載されている(以後、アクリー参照と称する)。
【0043】 他の従来技術のアンチエイリアシング方法は、ブレンディングを実行するため
に使用されるAバッファであり(この技術も、アクリー参照に含まれる)、及び
「Aバッファ、アンチエイリアスされた隠れ面方法(Antialiased Hidden Surfa
ce Method)」、L.カーペンタ(L.Carpenter)著、SIGGRAPH1984
会議会報、103乃至108ページに記述されている(以後、カーペンタ参照と
称する)。Aバッファは、レンダリングされたポリゴンによって、ピクセルのパ
ーセント・カバレージ(percent coverage)を追跡することによって、エイリア
スを低減させるアンチエイリアシング技術である。この技術の主な欠点は、受け
入れ可能なアンチエイリアスされたポリゴンを得るために、各ピクセルにおいて
前から後ろへ(又は後ろから前へ)ポリゴンをソートする(sort)必要性である
。 2.6 コンテント・アドレッサブル・メモリ(Content Addressable Memories
) ほとんどのコンテント・アドレッサブル・メモリ(CAM)は、入力ベクトル
(input vector)とCAMに記憶されたデータ・ワード(data words)の各々と
の間で、ビット対ビットの同等性テストを実行する。この種類のCAMは、すべ
てのワードにおける対応するビットが、同等性テストに影響を与えないようにす
るために、ビット位置のマスキング(masking)をしばしば供給する。多くのク
ロック・サイクルがタスク(task)をするよう要求されるので、同等性テストを
するCAMにおけるマグニチュードの比較を実行することは、非効率的である。
CAMは、いくつかのコンピュータにおける仮想メモリ・システム内におけるト
ランスレーション・ルックアサイド・バッファ(translation look-aside buffe
r)において現在使用されている。CAMはまた、高速コンピュータ・ネットワ
ークにおいてアドレスを適合するためにも使用される。
【0044】 マグニチュード比較CAM(Magnitude Comparison CAM)(MCCAM)は、
ここでは、記憶されたデータが数として扱われるCAMとして定義され、及び演
算マグニチュード比較(すなわち、レスザン、グレーター・ザン、レス・ザン・
オア・イコール・トゥ、等)が、並行してデータ上で実行される。これは、記憶
されたデータを厳格に、数としてではなく、ビット・ベクトルとして扱う通常の
CAMと反対である。MCCAM特許は、ここに参照として含まれており、アメ
リカ合衆国特許第4,996,666号、ジェローム・F.ドュルック・ジュニ
ア(Jerome F. Duluk Jr.)の「完全な並行マグニチュード比較ができるコンテ
ント・アドレッサブル・メモリ・システム(Content-Addressable Memory Syste
m Capable of Fully Parallel Magnitude Comparisons)」、1991年2月2
6日付与(以後、ドュルック特許と称する)である。特定的に参照されるドュル
ック特許の中の構造は、「ドュルック特許」という接頭語を含む(例えば、「ド
ュルック特許MCCAMビット・サーキット」)。
【0045】 MCCAMの基本的な内部構造は、ワードに編成された一組のメモリ・ビット
であり、各ワードは、記憶されたデータと入力データとの間の一つ以上の演算マ
グニチュード比較を実行することができる。通常は、MCCAMに関して、数の
ベクトルが、並行して一列のワードに適用される時、すべてのワードにおけるす
べての演算比較は並行して起こる。そのような並行探索比較オペレーションは、
記憶されたデータの「クエリ(query)」と称される。
【0046】 ここに記載された発明は、クロック・サイクルごとにすべてのクエリの結果を
出力し、及び追加の出力を形成するために、これらの出力クエリ結果ビットを論
理的に「オアする(or)」能力を含む、様々な特性を加えることによって、MC
CAMの機能を増補する。 (発明の開示) 本発明の特徴の概観−トップ・レベル・サマリ(Top Level Summary) コンピュータ・グラフィックスは、コンピュータでピクチャ(picture)や画
像を生成する技術及び科学である。このピクチャ生成は一般的にレンダリングと
称される。例えば、3次元アニメーション(animation)における動きの外観は
、画像のシーケンス(sequence)を表示することによって達成される。対話式3
次元(3D)コンピュータ・グラフィックスは、ユーザに、自らのビューポイン
トを変え、又はリアルタイムでジオメトリを変えさせ、それによって、レンダリ
ング・システムが、リアルタイムで稼動中の新しい画像を生成することを要求す
る。それゆえに、高品質の画像とともに、色におけるリアル・タイム・パフォー
マンスは、次第に重要になっている。
【0047】 本発明は、新しいグラフィックス・プロセッサ及び方法のためのものであり、
専用サブシステム、サブプロセッサ、装置、アーキテクチャ(architecture)、
及び対応するプロシージャを含む、多くのサブストラクチャを含む。本発明の実
施形態は、ディファード・シェーディング、タイルド・フレーム・バッファ(ti
led frame buffer)、及び複数段階隠れ面除去処理の一つ以上を、他の構造及び
/又はプロシージャと同様に、含んでもよい。本明細書において、このグラフィ
ックス・プロセッサは、以後DSGP(ディファード・シェーディング・グラフ
ィックス・プロセッサ(Deferred Shading Graphics Processor))又はDSG
Pパイプラインと称されるが、パイプラインと称されることもある。
【0048】 本発明は、DSGPパイプラインの多くの実施形態を含む。本発明の実施形態
は、フォン・シェーディング、サブピクセル・アンチエイリアシング、及びハー
ドウェアにおけるテクスチャ並びにバンプ・マッピングを、高性能3Dグラフィ
ックスに供給するよう設計されている。DSGPパイプラインは、性能を犠牲に
することなく、これらの洗練された特性を供給する。
【0049】 DSGPパイプラインは、例えば、可能なインターフェースの選択肢の中でも
、アドバンスド・グラフィックス・ポート(AGP(Advanced Graphics Port)
)及び/又はPCIバス・インターフェース(bus interface)に限定されない
が、それらを含む、様々な可能なインターフェースを介して、コンピュータに接
続することができる。VGA及びビデオ出力も通常は含まれる。本発明の実施形
態は、OpenGL及びDirect3D APIの両方をサポートする。Op
enGLグラフィックス・システム:仕様書(バージョン1.2)(The OpenGL
Graphics System: A Specification (Version 1.2))」、マーク・シーガル(M
ark Segal)及びカート・アクリー(Kurt Akeley)著、ジョン・リーチ(Jon Le
ech)編、という題名のOpenGL仕様書が、参照のために含まれる。
【0050】 ディファード・シェーディング・グラフィックス・パイプラインのいくつかの
例示的な実施形態又はバージョンが、ここに記載されている。 3.1 ディファード・シェーディング・グラフィックス・パイプラインのバー
ジョン ディファード・シェーディング・グラフィックス・パイプラインのいくつかの
バージョン又は実施形態が、ここに記載されており、及び特性の様々な組み合わ
せを有する実施形態が実行されてもよい。さらに、本発明の特性は、他の特性か
ら独立して、実行されてもよい。上述の重要な特性のほとんどは、DSGPパイ
プラインのすべてのバージョンに適用することができる。 3.1.1 タイル(tiles)、スタンプ(stamps)、サンプル(samples)、及
びフラグメント(fragments) 3Dグラフィックス・プリミティブの各フレーム(シーン又はユーザ・フレー
ムとも称される)は、表示スクリーン上で、3Dウィンドウへとレンダリングさ
れる。ウィンドウは、ピクセルの四角形グリッド(rectangular grid)を含み、
及び前記ウィンドウは、タイルに分割される(以後、タイルは、16×16ピク
セルと仮定されるが、どのようなサイズでもよい)。タイルが使用されない場合
、ウィンドウは、一つのタイルであると考えられる。各タイルはさらに、スタン
プに分割される(以後、スタンプは2×2ピクセルであると仮定され、それによ
って1タイルにつき64スタンプを生むが、スタンプは、一つのタイルの中でど
のようなサイズでもよい)。各ピクセルは、一つ以上のサンプルを含み、各サン
プルは、それ自身の色値及びz値を有する(以後、ピクセルは、4つのサンプル
を含むと仮定されるが、どのような数が使用されてもよい)。フラグメントは、
特定のピクセル内のプリミティブによって覆われたサンプルの集まりである。「
フラグメント」という用語は、特定のプリミティブ及び特定のピクセル内の可視
サンプルの集まりを記述するためにも使用される。 3.1.2 ディファード・シェーディング 通常のZバッファ・レンダリングにおいて、レンダラは、各プリミティブの各
ピクセルに関して、色値(RGB又はRGBA)及びz値を計算し、新しいピク
セルのz値を、Zバッファにおける現在のz値と比較する。z値比較が、新しい
ピクセルが、フレーム・バッファにおける現存するピクセルの「前に」あること
を示す場合、新しいピクセルは、古いものを上書きする;そうでなければ、新し
いピクセルは、捨てられる。
【0051】 Zバッファ・レンダリングはよく作動し、また複雑なハードウェアを必要とし
ない。しかしながら、シーンが多くの隠れ面を含む場合、それは通常、多くの浪
費された処理努力という結果を生む。複雑なシーンでは、前記レンダラは、最終
ピクチャにおいて可視であるピクセルの10倍又は20倍のピクセルに関する色
値を計算してもよい。これは、―フォン・シェーディング又はテクスチャ・マッ
ピング等―パー・ピクセル・オペレーションの計算コストが、10倍又は20倍
にされることを意味する。1ピクセルあたりの面の数は、全体のフレームに平均
化されており、前記フレームの深度計算複雑性とよばれる。従来のzバッファー
ド・レンダラにおいて、前記深度計算複雑性は、特定のフレームをレンダリング
する時の、前記レンダラの非効率性の基準となる。 ディファード・シェーディングを実行するパイプラインにおいて、隠れ面除去
(HSR)は、あらゆるピクセル・カラリングが行われる前に完了される。ディ
ファード・シェーディング・パイプラインの目的は、最終画像(すなわち、正確
なHSR)に現れるプリミティブのみに関して、ピクセル色を生成することであ
る。ディファード・シェーディングは、一般的に、HSRが開始することができ
る前に、プリミティブが蓄積されることを要求する。不透明なピリミティブだけ
を有するフレームに関して、前記HSR処理は、すべてのピクセル内の各サンプ
ルおいて、単一の可視プリミティブを決定する。一つのサンプルに対し、可視プ
リミティブが一度決定されると、前記サンプル場所におけるプリミティブの色が
決定される。さらなる効率が、パー・サンプル色を計算するよりもむしろ、同じ
ピクセル内の全てのサンプルに関して、単一のパー・ピクセル色を決定すること
によって達成されうる。
【0052】 プリミティブの少なくともアルファ・ブレンディング(以前に参照された OpenGL仕様書に定義されたとおり)を有するフレームに関して(通常、透
明性による)、2つ以上のプリミティブによって色付けられるいくつかのサンプ
ルがある。これは、前記HSR処理が,サンプルごとの一組の可視プリミティブ
を決定しなければならないことを意味している。
【0053】 OpenGL等、いくつかのAPIにおいて、前記HSR処理は、プリミティ
ブを廃棄できる他のオペレーション(すなわち、深度テスト以外のオペレーショ
ンによる)によって複雑にされうる。これらの他のオペレーションは、:ピクセ
ル・オーナシップ・テスト、シザー・テスト、アルファ・テスト、色テスト、及
びステンシル・テスト(本明細書の別のところで記載されたとおり)を含む。こ
れらのオペレーションのいくつかは、その色に基づいてプリミティブを廃棄し(
アルファ・テスト等)、それは、前記HSR処理の後まで、ディファード・シェ
ーディング・パイプラインにおいては決定されない(これは、アルファ値が、し
ばしば、テクスチャリング処理によって生成され、ピクセル・フラグメント・カ
ラリングに含まれるからである)。例えば、通常は、より離れたプリミティブ(
一般的により大きいz値で)を不明瞭にするプリミティブは、アルファ・テスト
によって廃棄されることができ、それにより、それが前記のより離れたプリミテ
ィブを不明瞭にしないようにする。アルファ・テストを考慮しないHSRは、前
記のより離れたプリミティブを誤って廃棄するかもしれない。それゆえに、ディ
ファード・シェーディングとアルファ・テストとの間に(同様に、色テストとス
テンシル・テストとの間にも)矛盾があるかもしれない;すなわち、ピィクセル
・カラリングは隠れ面除去の後まで延期されるが、隠れ面除去はピクセル色に依
存することができる。この問題に対する簡単な解決方法は次のものを含む:1)
アルファ・テスト、色テスト、及びステンシル・テスト等、APIから非深度依
存テストを取り除くことであるが、この潜在的な解決方法は、現存するプログラ
ムが、前記ディファード・シェーディング・パイプライン上で、適切に実行する
こと妨げるかもしれない;及び2)必要とされる時のみ、前記HSR処理に、あ
る色の生成をさせることであるが、この潜在的な解決方法は、データ・フローを
かなり複雑にするであろう。それゆえ 、これらの選択のどちらも魅力がない。
3番目の選択肢は、保存性(conservative)隠れ面除去(CHSR)と呼ばれ、
本発明の構造及び方法によって供給される、重要な革新の一つである。CHSR
は本明細書の連続した節において詳細に記述されている。
【0054】 多くのAPIにおける他の複雑性は、前記深度テストを変える能力である。3
Dレンダリングについての標準的な考え方は、可視のオブジェクトが不明瞭なオ
ブジェクト(すなわち、より少ないz値で)よりも近いことを仮定し、及びこれ
は、レス・ザン深度テストによって達成される(すなわち、そのz値が他のジオ
メトリより少ないならば、オブジェクトは可視である)。しかしながら、ほとん
どのAPIは、グレーター・ザン、レス・ザン、グレーター・ザン・オア・イコ
ール・トゥ、イコール、レス・ザン・オア・イコール・トゥ、レス・ザン、ノッ
ト・イコール、及び代数的、マグニチュード、並びに論理的関係等、他の深度テ
ストをサポートする。これは、本質的に可視であるものに関する「規則を変える
」。この複雑性は 、一つのAPIが、フレーム内の深度テストを、アプリケー
ション・プログラムに変えさせることによって合成される。異なるジオメトリは
、可視性に関して徹底的に異なる規則に従ってもよい。それゆえに、異なるレン
ダリング規則を有するプリミティブのタイム・オーダが、考慮されなければなら
ない。例えば、図4に記載の実施形態において、3つのプリミティブが、それら
の個別の深度テストとともに示されている。(z次元のみが図に示されているの
で、これは一つのサンプルに対する事例と考えられてもよい。)それらがA,B
,それからCのオーダでレンダリングされる場合、プリミティブBは最終の可視
面であろう。しかしながら、前記プリミティブがC,BそれからAのオーダでレ
ンダリングされる場合、プリミティブAが最終の可視面であろう。これは、ディ
ファード・シェーディング・パイプラインがどのようにプリミティブのタイム・
オーダリングを維持しなければならないか、及び正しいパイプライン状態(例え
ば深度テスト)が各プリミティブと関連されなければならないかを示している。
3.1.3 ディファード・シェーディング・グラフィック・パイプライン、第
一の実施形態(バージョン1) 従来の3Dグラフィック・パイプラインは、図2に記載される。図4と相対的
に、本発明の3Dディファード・シェーディング・グラフィック・パイプライン
・バージョン1(以下、DSGPv1と称する)の第一の実施形態を記載する。
本発明パイプライン(図4)は、描画集約的機能231を、(1)パイプライン
状態及び各プリミティブを記述しているプリミティブ・データを記憶するための
シーン・メモリ(scene memory)250であって、図においてはシーン・メモリ
と称される;(2)正確な隠れ面除去処理251;(3)フラグメント・カラリ
ング処理252;及び(4)ブレンディング処理253に置き換えることにより
、包括的な従来のパイプライン(図2)から得られたことがわかるであろう。
【0055】 シーン・メモリ250は、それらの属性に沿って、一つのフレームに対する前
記プリミティブ・データを記憶し、及び前記フレーム全体の、パイプライン状態
の様々な設定を記憶する。プリミティブ・データはバーテックス座標、テクスチ
ャ座標、バーテックス色、バーテックス法線、等(the like)を含む。DSG
Pv1において、プリミティブ・データは、増分レンダリングに関するセットア
ップによって生成されたデータを含み、それは空間、色、及びエッジ微分(edge
derivatives)を含む。
【0056】 フレームにおけるすべてのプリミティブが、フローティング・ポイント集約的
機能213によって処理され、及びシーン・メモリ250に記憶された時、HS
R処理が始まる。前記シーン・メモリ250は、二重にバッファされ、それによ
り、フローティング・ポイント集約的機能が次のフレームで計算を実行する間、
前記HSR処理に、一つのフレーム上で計算をさせる。前記シーン・メモリはま
た三重にもバッファされうる。前記シーン・メモリはまた、前記HSR処理に関
するスクラッチパッドでもあり、前記HSR処理に関する中間結果を記憶し、す
べてのプリミティブが前記シーン・メモリに記憶される前に、前記HSR処理に
始動させる。
【0057】 前記シーン・メモリにおいて、あらゆるプリミティブは、前記プリミティブが
パイプラインに入力された時に有効であったパイプライン状態情報に関連する。
前記パイプライン状態と各プリミティブとを関連させる最も簡単な方法は、各プ
リミティブ内の全体のパイプライン状態を含むことである。しかしながら、パイ
プライン状態の多くは、ほとんどのプリミティブの間で(特に、プリミティブが
同じオブジェクトにある時)変化しないので、これは、大量の冗長な情報を導入
するであろう。前記シーン・メモリに情報を記憶するための好ましい方法は、個
別のリストを保存することである:パイプライン状態設定に対して一つのリスト
、及びプリミティブに対して一つのリストである。さらに、前記パイプライン状
態情報は多数のサブリストに分割され、各サブリストへの追加は、サブリストの
部分が変わる時のみに生じる。プリミティブを記憶するための好ましい方法は、
前記プリミティブを再生するための接続情報とともに、一連のバーテックスを記
憶することによって行われる。プリミティブを記憶するための、この好ましい方
法は、さもなければ、ポリゴン・メッシュ(polygon mesh)及びライン・ストリ
ップ(line strip)において生じるであろう冗長なバーテックスを取り除く。
【0058】 隠れ面除去が行われるDSGPv1における唯一の場所であるので、DSGP
v1に関して記述された前記HSR処理は、正確な隠れ面除去(EHSR)であ
ることが求められる。正確な隠れ面除去(EHSR)処理251は、どのプリミ
ティブが前記フレーム・バッファにおけるピクセルの最終の色に影響を与えるか
を精密に決定する。この処理はパイプライン状態における変化を表しており、そ
れは前記処理にさまざまな複雑性を導入する。これらの複雑化のほとんどは、上
述のとおり、パー・フラグメント・オペレーション(オーナシップ・テスト、シ
ザー・テスト、アルファ・テスト等)に起因する。正確な隠れ面除去が必要とさ
れないように、後述のとおり、これらの複雑性は、革新的な保存性隠れ面除去(
CHSR)処理によって解決される。
【0059】 前記フラグメント・カラリング処理は、ピクセル内の各サンプル又は各グルー
プのサンプルに関する色を生成する。これは:グロー・シェーディング、テクス
チャ・マッピング、フォン・シェーディング、及びピクセル色を生成するための
様々な他の技術を含みうる。この処理は、プリミティブのサブセクションに関す
る色を、効率良く生成できなければならないので、エッジド・ウォーク(edged
walk)232及びスパン補間234とは異なる。すなわち、一つのプリミティブ
は、部分的に可視でもよく、それゆえに、色は、そのピクセルのいくつかのみに
関して生成される必要があり、及びエッジ・ウォーク及びスパン補間は、全体の
プリミティブが色付けされなければならないことを仮定している。さらに、前記
HSR処理は、一つのプリミティブの多数の可視サブセクションを生成してもよ
く、これらは他のプリミティブの可視サブセクションの間に、早めに点在しても
よい。それゆえに、前記フラグメント・カラリング処理252は、プリミティブ
・エッジ又はx軸もしくはy軸に沿って、増分計算をする必要無く、プリミティ
ブ内の任意の場所で、色値を生成することができるであろう。
【0060】 本発明の実施形態の前記ブレンディング処理253は、ピクセルごとに単一の
色を生成するため、前記フラグメントの色を結合させる。従来のzバッファド・
ブレンド処理236に対して、このブレンディング処理253は、正確な隠れ面
除去処理251が、どのプリミティブが各サンプルにおいて可視であるかをすで
に決めているので、zバッファ・オペレーションを含まない。前記ブレンディン
ッグ処理253は、各サンプルに関して個別の色値を維持してもよく、又はサン
プル色は、全体のピクセルに関する単一の色を作るためにブレンドされてもよい
。個別の色値がサンプルごとに維持され、前記フレーム・バッファ240に個別
に記憶される場合、最終のピクセルの色は、データが、デジタル−アナログ・コ
ンバータ242へ送られると、スキャン・アウト処理の間、サンプル色から生成
される。 3.1.4 ディファード・シェーディング・グラッフィック・パイプライン、
第2の実施形態(バージョン2) DSGPv1に関して上述されたとおり、前記シーン・メモリ250は:(1
)プリミティブ・データ;及び(2)パイプライン状態を記憶する。図5に記載
の、ディファード・シェーディング・グラフィック・パイプライン260(バー
ジョン2)(DSGPv2)の第2の実施形態において、このシーン・メモリ2
50は二つの部分:空間メモリ261部分及びポリゴン・メモリ262部分に分
割される。データの分割は、単なるプリミティブ・データとパイプライン状態デ
ータへの分割ではない。
【0061】 DSGPv2において、HSRに必要な前記パイプライン状態データの部分は
、空間メモリ261に記憶される一方で、残りはポリゴン・メモリ262に記憶
される。HSRに必要なパイプライン状態の例は(例えば、前記の OpenGL仕様書に定義されているとおり)DepthFunc、 DepthMask、StencilEnable等を含む。HSRに必要でな
いパイプライン状態の例は:BlendEquation、 BlendFunc、点描パターン等を含む。特定のブレンディング機能の選択
又は識別が(例えば、R=RSS+R0(1−AS)を選択すること)、HSRに
関して必要とされない一方で、前記HSR処理は、前記プリミティブが、ブレン
ディングを受けるかを表さなければならず、それは、前記プリミティブが、ジオ
メトリに優先して、完全に遮断することができないものとして扱われることを、
一般的に意味している。同様に、前記HSR処理は、前記プリミティブがシザー
・テスト、アルファ・テスト、色テスト、ステンシル・テスト、及び他のパー・
フラグメント・オペレーションを受けるかを表さなければならない。 プリミティブ・データもまた分割される。HSRに必要なプリミティブ・デー
タの部分は空間メモリ261に記憶され、及び前記プリミティブ・データの残り
はポリゴン・メモリ262に記憶される。HSRに必要なプリミティブ・データ
の部分は、バーテックスの場所及び空間微分(すなわち、エッジに関するδz/
δx、δz/δy、dx/dy等)を含む。HSRに必要でないプリミティブ・
データの部分は、バーテックス色、テクスチャ座標、色微分(color derivative
s)等を含む。パー・フラグメント・ライティング(per-fragment lighting)が
前記パイプラインにおいて実行される場合、全体のライティング方程式は、すべ
てのフラグメントに適用される。しかし、ディファード・シェーディング・パイ
プラインにおいて、可視のフラグメントのみが、ライティング計算を必要とする
。この場合、前記ポリゴン・メモリもまた、バーテックス法線、バーテックス・
アイ座標、バーテックス面接線、バーテックス従法線、これら全ての属性の空間
微分、及び他のパー・プリミティブ・ライティング情報を含んでもよい。
【0062】 前記HSR処理の間、特に前記HSRがパー・タイル・ベースで行われる場合
、プリミティブの空間属性は繰り返しアクセスされる。前記シーン・メモリ25
0を、空間メモリ261及びポリゴン・メモリ262に分割することは総メモリ
帯域幅を低減させる効果を有する。
【0063】 増分レンダリング230に関するセットアップからの出力は、前記空間データ
分離処理263に入力され、それは、HSRに必要なすべてのデータを、空間メ
モリ261に記憶し、前記データの残りはポリゴン・メモリ262に記憶する。
前記EHSR処理264は、プリミティブ空間データ(例えば、バーテックス・
スクリーン座標、空間微分等)及びHSR(パー・フラグメント・テスティング
・オペレーションのすべての制御ビットを含む)に必要なパイプライン状態の部
分を受信する。
【0064】 可視フラグメントが前記EHSR264から出力される時、データ適合処理2
65は、前記バーテックス状態及びパイプライン状態を可視フラグメントに適合
させ、及びタイル情報はタイル・バッファ266に記憶される。前記パイプライ
ンの余りは、ピクセルへ/からのサンプル変換267、読み取り及び前記フレー
ム・バッファヘの書き込み、二重バッファMUX出力ルックアップ、及び前記フ
レームに記憶されたデータの、実際のアナログ表示装置信号値へのデジタル−ア
ナログ(D/A)変換を含む、前記スキャン・アウト処理に、主に関連する。 3.1.5 ディファード・シェーディング・グラフィック・パイプライン、第
3の実施形態(バージョン3) 図6に記載された、前記ディファード・シェーディング・グラフィクス・パイ
プライン(バージョン3)(DSGPv3)の第3の実施形態において、前記シ
ーン・メモリ250はさらに二つの部分(空間メモリ261及びポリゴン・メモ
リ262)に分割され、さらに増分レンダリング230に関するセットアップは
、データ分離の後、及び正確な隠れ面除去の前に起こる空間セットアップによっ
て置き換えられる。前記パイプラインの構造及び処理の残りは、第一の実施形態
に関して前述されたものから変化していない。 3.1.6 ディファード・シェーディング・グラフィックス・パイプライン、
第4の実施形態(バージョン4) 図7に記載の、前記ディファード・シェーディング・グラフィックス・パイプ
ライン(バージョン4)(DSGPv4)の第4の実施形態において、第3の実
施形態(図6)の正確な隠れ面除去は、保存性隠れ面除去の構造及びプロシージ
ャによって置き替えられ、及びダウンストリーム・zバッファード・ブレンド(
down-stream z-buffered blend)は前記ブレンディング・プロシージャと入れ替
わる。 3.1.7 ディファード・シェーディング・グラフィック・パイプライン、第
5の実施形態(バージョン5) 図8に記載の、前記ディファード・シェーディング・グラフィックス・パイプ
ライン(バージョン5)(DSGPv5)の第5実施形態において、正確な隠れ
面除去は第3の実施形態として使用されるが、タイリングが追加され、及びタイ
ル・ソーティング・プロシージャ(tile sorting procedure)がデータ分割の後
に追加され、及び前記読み取りは、空間セットアップの前に、タイルによる。さ
らに、最初の3つの実施形態のポリゴン・メモリは、状態メモリと置き換えられ
る。 3.1.8 ディファード・シェーディング・グラフィックス・パイプライン、
第6の実施形態(バージョン6) 図9に記載の、ディファード・シェーディング・グラフィックス・パイプライ
ン(バージョン6)(DSGPv6)の第6の実施形態において、第5の実施形
態(図8)に記載の正確な隠れ面除去は、保存性隠れ面除去に置き換えられ、及
び第5の実施形態のダウンストリーム・ブレンディングは、zバッファード・ブ
レンデイング(テスティング及びブレンディング(Testing & Blending))に置
き換えられる。いくつかの特徴を示すと、二つの部分を有するシーン・メモリ、
プリミティブ・データ分割又は分離、空間セットアップ、タイリング及びパー・
タイル処理、保存性隠れ面除去、及びzバッファード・ブレンディング(テステ
ィング及びブレンディング)を含む、本発明の構造及び方法により供給される有
益な特徴のいくつかを採用するので、この第6の実施形態は好まれる。 3.1.9 他の可能な実施形態(バージョン) 本発明のグラフィックス・パイプラインのいくつかの例示的な実施形態が記載
され、及び図4乃至9に関して記述され、ここで供給される説明の観点から、当
業者は、本発明の構造とプロシージャが、本発明の他の実施形態を供給するため
に、異なる組み合わせ及び置換によって実行されてもよく、また本発明が、ここ
で明確に識別された特定の組み合わせに限定されないことを、容易に理解するで
あろう。
【0065】 3.2 重要な革新の概観 前記パイプラインはプリミティブをレンダリングし、及び本発明は、1)三角
形、2)線 、及び3)点を含む一組のレンダリング可能なプリミティブに関し
て記述されている。3つ以上のバーテックスを有するポリゴンは前記ジオメトリ
・ブロックにおいて三角形に分割されるが、前記DSGPパイプラインは、多角
四辺形又はより多くの辺を有するポリゴンをレンダリングするため、簡単に変更
され得る。それゆえに、前記パイプラインは、一度三角形に分割されると、あら
ゆるポリゴンをレンダリングすることができるので、本発明のレンダラは、効果
的にあらゆるポリゴン・プリミティブをレンダリングする。 一定のプリミティブが影響を与えるかもしれない表示スクリーン上で3Dウィ
ンドウのどの部分かを識別するため、前記パイプラインは、描画されている前記
3Dウィンドウを、「タイル及びスタンプ」と呼ばれる一連のより小さな領域へ
分割する。前記パイプラインは、ディファード・シェーディングを実行し、そこ
では、ピクセル色は、隠れ面除去の後まで決定されない。マグニチュード比較コ
ンテント・アドレッサブル・メモリ(MCCAM)の使用は、前記パイプライン
に、隠れジオメトリ・カリング(culling)を効果的に実行させる。 3.2.1 保存性ディファード・シェーディング 本発明によって供給される中心的な考え又は発明の概念の一つは、保存性隠れ
面除去(CHSR)に関する。前記CHSRは、タイム・オーダで各プリミティ
ブを処理し、及びプリミティブが接触する各サンプルに関して、深度テスト及び
アルファ・テスト等、様々なAPI状態変数に基づいて、保存性決定がなされる
。前記CHSR処理の重要な特徴の一つは、アルファ・テスト、色テスト、及び
ステンシル・テスト等、APIからの非深度依存テストが、前記DSGPパイプ
ラインによって実行され得るとしても、色計算は、隠れ面除去の間は、実行され
る必要がないことである。
【0066】 前記CHSR処理は、サンプルごとの有限状態装置(finite state machine)
(FSM)とみなされ得る。以後、各パー・サンプルFSMはサンプル有限状態
装置(SFSM)と呼ばれる。各SFSMは、(1)z座標情報;(2)プリミ
ティブ情報(前記サンプル又はピクセルにおけるプリミティブの色を生成するた
めに必要とされるあらゆる情報);及び(3)一つ以上のサンプル状態ビット(
例えば、これらのビットは、z値又は複数のz値が正確であること又は保存力が
あることを指定することができる)を含むパーサンプル・データを維持する。サ
ンプルごとの複数のz値が容易に使用される一方で、サンプルごとの複数の組の
プリミティブ情報は高価であろう。以後、前記SFSMは、一つのプリミティブ
に関するプリミティブ情報を維持すると仮定される。次の節で記述されたとおり
、前記SFSMはまた透明性情報を維持してもよく、それは、ソートされた透明
性に関して使用される。 3.2.2 CHSR及びアルファ・テスト アルファ・テストを取り扱う前記CHSRの例として、図10乃至14、特に
図11の図を検討する。このダイアグラム(diagram)は、特定のサンプルに関
して、異なるZ座標の場所において、6つのプリミティブのレンダリング(プリ
ミティブA、B、C、D、E、及びF)を示しており、(「深度クリア」及びレ
ス・ザン(less-than)に設定された「深度テスト」で始まる)次の順序でレン
ダリングされる:プリミティブA、B、及びC(「アルファ・テスト」は不能)
;プリミティブD(「アルファ・テスト」は可能);及びプリミティブ E及び
F(「アルファ・テスト」は不能)。ZA>ZC>ZB>ZE>ZD>ZFであり、プ
リミティブAは、最大Z座標距離であることが、前記図からわかる。また、アル
ファ・テストは、プリミティブDに関して可能にされるが、他のプリミティブの
各々に関しては、不能にされることも注目される。
【0067】 前記CHSR処理は、サンプル有限状態装置(SFSM)であると考えられて
もよいことが、CHSRについての以前の記述から想起される。 アルファ・テ
ストを伴う保存性隠れ面除去処理の下で、これら6つのプリミティブを、レンダ
リングするためのステップは以下のとおりである: ステップ1:深度クリアは、各サンプル有限状態装置(SFSM)において、
次のような結果をもたらす:1)z値は最大値に初期化される;2)プリミティ
ブ情報クリアされる;及び3)サンプル状態ビットは、前記z値が正確であるこ
とを示すように設定される。
【0068】 ステップ2:プリミティブAが、SFSMによって処理される時、前記プリミ
ティブは維持され(すなわち、それは可視表面に関する現在の最適な推測である
)、及びこれは、前記SFSMに:1)近(near)z値として前記z値ZAを;
2)色プリミティブAに必要なプリミティブ情報;及び3)前記z値(ZA)は
正確なものとしてラベル付けされることを、記憶させる。
【0069】 ステップ3:プリミティブBが前記SFSMによって処理される時、前記プリ
ミティブは維持され(そのz値は、プリミティブAのそれより小さい)、及びこ
れは、SFSMに:1)「近」z値としてのz値ZB(ZAは廃棄される);2)色
プリミティブBに必要とされるプリミティブ情報(プリミティブAの情報は廃棄
される);及び3)z値(ZB)は、正確なものとしてラベル付けされることを
、記憶させる。
【0070】 ステップ4:プリミティブCが前記SFSMによって処理される時、前記プリ
ミティブは廃棄され(すなわち、それは可視表面、プリミティブBに関する現在
の最善の推測によって、不明瞭にされる)、及び前記SFSMデータは変更され
ない。
【0071】 ステップ5:プリミティブD(アルファ・テストを可能にさせる)は、前記S
FSMによって処理される時、前記プリミティブの可視性は、それがプリミティ
ブBにより近いので、及びそのアルファ値は、前記SFSMが動作する時点で不
明なので、決定されることができない。どのプリミティブが、最終的に可視(プ
リミティブB又はプリミティブDのどちらか一方)となるかに関して、決定され
ることができないので、(その色を生成させるために)プリミティブBは前記パ
イプラインに送られ、及びプリミティブDは維持される。以後、これはプリミテ
ィブBの「初期ディスパッチ(early dispatch)」と呼ばれる。プリミティブD
の処理が完了する時、前記SFSMは:1)「近」z値はZDであり、及び「遠
」z値はZBであること;2)色プリミティブDに必要とされるプリミティブ情
報(プリミティブBの情報は、初期ディスパッチを受けた)、及び3)z値は保
存可能としてラベル付けされる(なぜなら、近、及び遠の両方が、維持されてい
るので)ことを記憶する。この状態で、SFSMは、ZDより近い一つのジオメ
トリが、以前のジオメトリを不明瞭にすること、ZBより遠いジオメトリは不明
瞭にされること、及びZDとZBとの間のジオメトリは不確定になり、可視である
と見なされなければならない(従って、保存的推定がなされる)ことを決定でき
る。SFSMが保存状態にあり、それが有効なプリミティブ情報を含む時、前記
SFSM方法は、記憶されたプリミティブ情報の深度値を、近深度値と見なす。
【0072】 ステップ6:プリミティブE(アルファ・テストを不能にする)は、前記SF
SMに処理される時、前記プリミティブの可視性は、前記近及び遠z値の間(す
なわち、ZDとZBとの間)にあるので、決定されることができない。しかしなが
ら、プリミティブEは、結果的に、正しいタイム・オーダから外れて、前記Zバ
ッファド・ブレンド(好ましい実施形態におけるピクセル・ブロックの部分とし
て後述されている)に届くプリミティブ生むかもしれないので、この時点では前
記パイプラインへ送られない。それゆえに、プリミティブDは、タイム・オーダ
リングを保存するため、前記パイプラインヘ送られる。プリミティブEの処理が
完了した時、前記SFSMは:1)前記「近」z値はZDであり、及び前記「遠
」z値はZBであること(これらは変化しておらず、及びZEは維持されていない
ことに注目);2)色プリミティブE(プリミティブDの情報は、初期ディスパ
ッチを受けている)に必要とされるプリミティブ情報;及び3)前記z値は、(
近及び遠の両方が維持されているので)保存可能としてラベル付けされることを
、記憶する。
【0073】 ステップ7:プリミティブFがSFSMによって処理される時、前記プリミテ
ィブは維持され(そのz値は、近z値のそれより小さい)、及びこれは、前記S
FSMに:1)前記「近」z値としての前記z値、ZF(ZD及びZBは廃棄され
る);2)色プリミティブFに必要とされるプリミティブ情報(プリミティブE
の情報は廃棄される);及び3)前記z値(ZF)は正確なものとしてラベル付
けされることを、記憶させる。
【0074】 ステップ8:前記タイルに触れるすべてのジオメトリが処理された時(又は、
タイルがない場合には、前記フレームにおけるすべてのジオメトリが処理された
時)、あらゆる有効なプリミティブ情報が、前記パイプラインヘ送られる。この
場合、プリミティブFの情報が送られる。これはエンド・オブ・タイル(end-of
-tile)(又はエンド・オブ・フレーム(end-of-frame))ディスパッチであり
、初期ディスパッチではない。
【0075】 この例示的なCHSR処理を要約すると、プリミティブA乃至プリミティブF
が処理され、プリミティブB、D、及びFが前記パイプラインに送られた。パイ
プラインB、D、及びFの可視性を分解するために、(好ましい実施形態でのピ
クセル・ブロックにおける)zバッファド・ブレンドは、前記パイプラインの終
わり近くに含まれる。この例では、前記色プリミティブFだけが前記サンプルに
使用される。 3.2.2.1 CHSR及びステンシル・テスト 前記CHSR処理の好ましい実施形態において、すべてのステンシル・オペレ
ーションは、前記パイプラインの終わり近くで行われ(zバッファード・ブレン
ドにおいては、好ましい実施形態でのピクセル・ブロックと呼ばれる)、それゆ
えに、ステンシル値は、前記フレーム・バッファに維持されるので、それらは前
記CSHR方法に対して有効ではない。前記CHSR処理における使用のため、
前記フレーム・バッファから、前記ステンシル値が送信されることが可能である
一方、これは、一般的に処理能力を下げる長い待ち時間パス(latency path)を
必要とするであろう。OpenGL等のAPIにおいて、前記ステンシル・テス
トがアルファ・テストの後に実行され、及びアルファ・テストの結果は前記CH
SR処理に知らされないので、ステンシル値は、CHSR処理内に正確に維持す
ることができず、それは、前記ステンシル・テストヘの入力が正確にモデル化さ
れないことを意味する。さらに、レンダラは多くのフレームに対してステンシル
値を維持し(一般的に、各フレームの開始においてクリアされる深度値とは対照
的に)、及びこれらのステンシル値は、前記フレーム・バッファに記憶される。
このことすべてによって、前記CHSR処理は、ステンシル・オペレーションの
処理への従来のアプローチを利用する。プリミティブが、前記フレーム・バッフ
ァにおけるステンシル値に影響を与えることができる場合、ステンシル・オペレ
ーションは、前記深度テスト(OpenGL仕様書を参照)の前に起こるので、
前記プリミティブは常に前記パイプラインに送られる(以下、これは「Cull
FlushOverlap」と呼ばれ、及びカル・ブロックにおける信号Cul
lFlushOverlapの主張によって示される)。CullFlushO
verlapの条件は、前記SFSMを、それの最も保存力のある状態に設定す
る。
【0076】 もう一つの可能性として、前記ステンシル参照値(OpenGL仕様書を参照
)が変更され、及び前記ステンシル・テストが前記フレーム・バッファにおける
ステンシル値に基づいでサンプル値を廃棄するように可能にされ、及び構成され
る場合、前記SFSMにおけるすべての有効なプリミティブ情報が、前記パイプ
ラインに送られ(以下、これは「CullFlushAll」と呼ばれ、及びカ
ル・ブロックにおけるCullFlushAllの信号の主張よって示される)
、及び前記z値がそれらの最大値に設定される。前記ステンシル参照値を変更す
ることは、前記zバッファード・ブレンド(又はピクセル・ブロック)における
「可視性規則(visibility rule)」を有効に変えるので、この「フラッシング
(flushing)」が必要とされる。
【0077】 ステンシル・テスト(OpenGL仕様書を参照)を扱う前記CHSR処理の
一つの例として、図12に記載の図を検討する。それには、4つの特定サンプル
(対応するSFSMを有し、SFSM0乃至SFSM3にラベル付けされる)を
網羅する2つのプリミティブ(プリミティブA及びC)、及び前記4つのサンプ
ルのうちの2つを網羅する追加のプリミティブ(プリミティブB)を有する。前
記3つのプリミティブは次の順序でレンダリングされる(深度クリアで始まり、
及び深度テストはレス・ザン(less-than)に設定される):プリミティブA(
ステンシル・テストは不能);プリミティブB(ステンシル・テストは可能、及
びStencilOpは「REPLACE」に設定される。OpenGL仕様書
を参照);及びプリミティブC(ステンシル・テストは不能)である。そのステ
ップは以下のとおりである。
【0078】 ステップ1:前記深度クリアは、この例における4つのSFSMの各々におい
て、次のことを生じさせる:1)z値が最大値に初期化される;2)プリミティ
ブ情報はクリアされる;及び3)サンプル状態ビットは、前記z値が正しいこと
を示すように設定される。 ステップ2:プリミティブAが各SFSMによって処理される時、前記プリミ
ティブは維持され(すなわち、可視表面に関する最近の最善の推量になる)、こ
れは前記4つのSFSMに:1)前記近z値としての、それらの対応するz値(
それぞれ、ZA0,ZA1,ZA2,又はZA3);2)色プリミティブAに必要なプリ
ミティブ情報;及び3)各SFSMにおける前記z値は、正確なものとしてラベ
ル付けされることを記憶させる。
【0079】 ステップ3:プリミティブBが前記SFSMによって処理される時、サンプル
1及び2のみが影響され、SFSM0及びSFSM3は影響を受けないようにさ
れ、及びSFSM1及びSFSM2は、次のように更新される:1)前記遠z値
は最大値に設定され、前記近z値は最小値に設定される;2)プリミティブA及
びBに関するプリミティブ情報は、前記パイプラインに送られる;及び3)サン
プル状態ビットは、前記z値が保存可能であることを示すように設定される。
【0080】 ステップ4:プリミティブCが各SFSMによって処理される時、前記プリミ
ティブは維持されるが、前記SFSMが、同じ方法ですべてのプリミティブを処
理するとは限らない。SFSM0及びSFSM3において、前記状態は次のよう
に更新される:1)ZC0及びZC3は前記「近」z値となる(ZA0及び ZA3は廃棄される);2)色プリミティブCに必要なプリミティブ情報(プリミ
ティブAの情報は廃棄される);及び3)z値は正確なものとしてラベル付けさ
れる。SFSM1及びSFSM2において、前記状態は、次のように更新される
:1)ZC1及びZC2は、前記「遠」z値になる(前記近z値は維持される);2
)色プリミティブCに必要なプリミティブ情報;及び3)前記z値は保存可能と
してラベル付けされたままである。 このCHSRの実例を要約すると、プリミティブA乃至Cは、処理されており
、すべてのプリミティブは前記パイプラインに送られたが、すべてのサンプルに
おいてではない。前記可視性を分解するために、(前記好ましい実施形態におけ
るピクセル・ブロックにおける)zバッファード・ブレンドは前記パイプライン
の終わり近くに含まれる。CullFlushOverlapが、他のものに影
響をうけさせない間に、選択されたサンプルをフラッシュ(flush)することを
説明するために、この例において多くのサンプルが示された。 3.2.2.2.CHSR及びアルファ・ブレンディング アルファ・ブレンディングは、2つのプリミティブの色を一色に結合させるため
に使用される。しかしながら、前記プリミティブは、z値の更新に関する深度テ
ストを受ける。
【0081】 アルファ・ブレンディングを扱う前記CHSRの一例として、図13を検討す
る。それは特定のサンプルに関する4つのプリミティブ(プリミティブA、B、
C、及びD)を有し、以下の順番でレンダリングされる(深度クリアで始まり、
及び深度テストはレス・ザン(less-than)に設定される):プリミティブA(
アルファ・ブレンディングは不能);プリミティブB及びC(アルファ・ブレン
ディングは可能);及びプリミティブD(アルファ・ブレンディングは不能)で
ある。そのステップは以下のとおりである: ステップ1:前記深度クリアは、各CHSR SFSMにおいて、以下のもの
をもたらす:1)z値は最大値に初期化される;2)プリミティブ情報はクリア
される;及び3)サンプル状態ビットは、z値が正確であることを示すように設
定される。
【0082】 ステップ2:プリミティブAが前記SFSMによって処理される時、前記プリ
ミティブは維持され(すなわち、それは可視表面に対する現在の最善の推測にな
る)、及びこれは前記SFSMに、1)前記「近」z値としての前記z値 ZA ;2)色プリミティブAに必要なプリミティブ情報;及び3)前記z値は正
確なものとしてラベル付けされる、ことを記憶させる。
【0083】 ステップ3:プリミティブBが前記SFSMによって処理される時、前記プリ
ミティブは維持され(そのZ値はプリミティブAのそれより小さいからである)
、及びこれは前記SFSMに:1)前記「近」z値としての前記z値ZB(ZA
廃棄される);2)色プリミティブBに必要とされるプリミティブ情報(プリミ
ティブAの情報はパイプラインに送られる);及び3)前記z値(ZB)は正確
なものとしてラベル付けされる、ことを記憶させる。レンダリング処理のこの時
点で、プリミティブBの色は、プリミティブAとブレンドされなければならない
ので、プリミティブAはパイプラインに送られる。これは、それらがパイプライ
ンに送られるときに、プリミティブのタイム・オーダを保存する。
【0084】 ステップ4:プリミティブCが前記SFSMによって処理される時、前記プリ
ミティブは廃棄される(すなわち、前記可視表面、プリミティブBに関する現在
の最善の推測によって不明瞭にされる)、及び前記SFSMデータは変更されな
い。プリミティブB及びCが透明な面としてレンダリングされる必要がある場合
、プリミティブCは、プリミティブBによって隠される。これは、プリミティブ
Bがレンダリングされている間、前記深度マスクを止めることによって達成され
る。透明性ブレンディングが正確であることに関して、前記面は、前から後ろ、
又は後ろから前のどちらかの順番でブレンドされる 深度マスクが不能にされる場合(OpenGLの仕様書を参照)、深度バッフ
ァへの書き込み(すなわち、z値をセーブすること)は実行されない;しかしな
がら、深度テストはまだ実行される。この例において、前記深度マスクがプリミ
ティブBに関して不能である場合、前記値ZBは、前記SFSMにセーブされな
い。続いて、プリミティブCは、そのz値がZAと比較されるので、可視である
と考えられる。
【0085】 本例、CHSR処理を要約すると、プリミティブA乃至Dは処理されており、
すべてのプリミティブは前記パイプラインに送られるが、すべてのサンプルにお
いてではない。前記可視性を分解するために、(好ましい実施形態におけるピク
セル・ブロックにおける)zバッファード・ブレンドは、前記パイプラインの終
わり近くに含まれる。CullFlushOverlapが、他のものに影響を
受けさせない間に、選択されたサンプルをフラッシュ(flush)することを説明
するために、この例において、多くのサンプルが示された。 3.2.2.3 CHSR及びグレーター・ザン深度テスト 前記保存性隠れ面除去プロシージャの実行は、OpenGL等、他の標準AP
Iとの互換性を有利に維持する。多くのAPIにおける一つの複雑性は、深度テ
ストを変更する能力であることが想起される。3Dレンダリングの標準的な考え
方は、可視オブジェクトが不明瞭なオブジェクトより近いことを仮定しており、
及びこれは“レス・ザン(less-than)”深度テストを選択することによって達
成される(すなわち、そのz値が他のジオメトリ“より小さい”場合、オブジェ
クトは可視である)ことが想起される。しかしながら、ほとんどのAPIは:グ
レーター・ザン、レス・ザン、グレーター・ザン・オア・イコール・トゥ、イコ
ール、レス・ザン・オア・イコール・トゥ、レス・ザン、ノット・イコール等、
代数的、大きさ、及び論理的関係等、他の深度テストをサポートし、それはフレ
ーム内において変化してもよいことも想起される。これは、本来ダイナミックに
可視のもの関する「規則を変更し」、結果として、異なるレンダリング規則を有
するプリミティブのタイム・オーダが考慮されなければならない。
【0086】 本発明の保存性隠れ面除去の場合において、異なる又は追加のプロシージャは
、“グレーター・ザン”深度テストが使用される時に、他の標準APIとの互換
性を維持するため、後述の理由から有利に実行される。通常の当業者は、深度テ
ストが、グレーター・ザン・オア・イコール・トゥ、又はそうでなければ、記述
された例外を生むであろう他の機能的関係である場合、有利に使用されてもよい
ことも理解するであろう。
【0087】 従来の非ディファード・シェーダ(non-deffered shader)によって、すべて
のジオメトリ項目に関する一連の規則を実行し、及び最終のレンダリングされた
結果を調べることが、さらに注目される。比較すると、本発明のディファード・
シェーダの実施形態において、前記の従来のパラダイムは破壊される。本発明の
構造及び方法は、すべてのジオメトリの内側のすべてのピクセルに関するすべて
の色を作成又は生成する必要なく、フレーム・バッファにおける最終値に実際に
影響を与えるのは、どのジオメトリかを予想し又は予測する。原則として、前記
ジオメトリの空間的位置が調べられ、特定のサンプルに関して、zバッファにお
ける最終の色に影響を与え、それからその色のみを生成する一つのジオメトリ項
目に関して、決定がなされる。 3.2.2.4 前記CHSR処理に関するさらなる考察 サンプルは平行して処理され、及び一般的にスタンプ内のすべてのピクセルに
おけるすべてのサンプルは、平行して処理される。従って、一つのスタンプがク
ロック・サイクルごとに処理されることができる場合(及び、スタンプごとに4
つのピクセル、及びピクセルごとに4つのサンプルがある)、16のサンプルが
クロック・サイクルごとに処理される。一つの「スタンプ」が、ピクセルの数及
び一度に処理されたサンプルを定義する。このパー・スタンプ処理が通常パイプ
ラインを通され、(以前のプリミティブからの)同じスタンプが完成する前に(
すなわち、壊れたスタンプ処理が扱われないかぎり)、再度スタンプが処理され
る必要がある場合、パイプライン・ストール(pipeline stalls)がインジェク
トされる。
【0088】 必要とされる初期ディスパッチがない場合、エンド・オブ・タイル・ディスパ
ッチ(end−of−tile dispatches)のみが必要とされる。これは、一つのタイ
ルにおけるすべてのジオメトリが不透明で、及びステンシル・テスト又はオペレ
ーションがなく、可視となりうるアルファ・テストされたプリミティブがない場
合である。
【0089】 各SFSMにおけるプリミティブ情報は、すべてのプリミティブ情報が記憶さ
れるメモリヘのポインタによって置き換えられる。好ましい実施形態において後
述されるとおり、色ポインタは、ポリゴン・メモリにおけるプリミティブの情報
を示すために使用される。
【0090】 代替として、前記遠z値のみが維持され(前記近z値は維持されない)、それ
によって、データ記憶を低減させるが、前記サンプル状態ビットに、プリミティ
ブFの後に「保存」のままにするよう要求し、及びプリミティブEが、プリミテ
ィブFの前にあるか、後ろにあるかは不明であるため、プリミティブEを前記パ
イプラインへ送信させる。
【0091】 近z値及び遠z値の両方を維持することの代替として、前記遠z値のみが維持
され、それによって、データ記憶を低減させるが、サンプル状態ビットに、それ
らが「正確である」としてラベル付けされた時には、「保存」のままであること
を要求し、かつ追加のサンプルに、前記パイプラインヘ送らせる。上述の第一の
CHSRの例(アルファ・テストを含むもの)において、前記サンプル状態ビッ
トは、プリミティブFの後、“保存”のままであり、かつプリミティブEは、前
記近z値の欠如のためにプリミティブFの前にあるか、後ろにあるか不明である
ので、プリミティブEは前記パイプラインに送られる。
【0092】 スタンプを処理することは、スタンプごとのベースで、簡単にSFSMに並行
して動作させるよりも、大きな効率性を有する。スタンプはまた、パイプライン
に伝送されるデータ・パケットの数を減らすためにも使用される。すなわち、ス
タンプ内の一つのサンプルが送られる時(初期ディスパッチ又はエンド・オブ・
タイル・ディスパッチ)、同じスタンプ及び同じプリミティブ内の他のサンプル
も送られる(そのようなジョイント・ディスパッチ(joint dispatch)は、以
下、可視スタンプ・ポーション(Visible Stamp Portion)又はVSPと呼ばれ
る)。上述の第二のCHSRの例(ステンシル・テストを含むもの)において、
4つのサンプルすべてが同じスタンプにある場合、サンプル1及び2の初期ディ
スパッチは、サンプル0及び3の初期ディスパッチを起こす。このことが、より
多くのサンプルをパイプラインに送らせ、及び色計算の量を増加させているよう
に見せる一方で、それは(一般的に)最終的な増加ではなく、むしろ色計算にお
ける最終的な減少を起こす。これは、ピクセル内における空間的コヒーレンス(
すなわち、同じピクセル内のサンプルは、ともに可視であるか、又はともに隠さ
れている傾向にある)、及びアルファ・テスト、色テスト、ステンシル・テスト
、及び/又はアルファ・ブレンディングを有するポリゴンのエッジが、他の空間
的にコヒーレントなスタンプを潜在的に分割する傾向によるものである。すなわ
ち、計算ロードをそれほど増加させないときに、追加のサンプルをパイプライン
に送ることは、送られる必要のあるVSPの総数を減らすことによって、十分に
相殺される。上述の第二のCHSRの例において、すべてのサンプルが同じスタ
ンプの中にある場合、同じ数のVSPが生成されるであろう。
【0093】 アルファ・テストの場合、プリミティブに関するアルファ値が、バーテックス
におけるアルファ値からのみ(テクスチャリング等、他の場所からではない)生
じる場合、簡単にされたアルファ・テストが全体のプリミティブに関して行われ
ることができる。すなわち、バーテックス処理ブロック(後の節においてGEO
と呼ばれる)は、いつバーテックス・アルファ値の補間が、アルファ・テストを
通過し、及び前記プリミティブに関しては、アルファ・テストを不能にすること
を保証されるか、決定することができる。
【0094】 フレームは深度クリアで始まらない場合、(SFSMそれらの最も保存性のあ
る状態に設定される(近z値は最小であり、遠z値は最大である)。
【0095】 好ましい実施形態において、CHSR処理は、カル・ブロックにおいて実行さ
れる。 3.2.3 パイプライン状態情報を含む、タイルによるハードウェア・ソーテ
ィング 本発明の構造及び方法において、タイム・オーダが各タイル内に保存され、パ
イプライン状態情報のタイム・オーダの保存を含むことが注目される。クリアな
パケットも使用される。本発明の実施形態において、ソーティングは、ハードウ
ェアにおいて実行され、及びRAMBUSメモリは、有効に一つのバーテックス
のデュアロクト記憶を可能にする。ソートされた透明性モードに関して、保証さ
れた不透明ジオメトリ(すなわち、より遠いジオメトリを不明瞭にすることで知
られるジオメトリ)が、第一のパス(pass)におけるソート・メモリから読み取
られる。次のパスにおいて、前記ジオメトリの残りは、各連続のパスにおいて一
度読み取られる。好ましい実施形態において、タイル・ソーティング方法は、ソ
ート・ブロックにおいて実行される。
【0096】 すべてのバーテックス及び関連モード・パケット又は状態情報パケットは、タ
イム・オーダ線形リストとして記憶される。プリミティブによって接触される各
タイルに関して、ポインタは、前記プリミティブを完成させる前記線形リストに
おけるバーテックスに加えられる。例えば、三角形プリミティブは、3バーテッ
クスによって定義され、及びポインタは、前記三角形プリミティブを完成させる
ために、前記線形リストにおける(第三の)バーテックスに加えられるであろう
。第三のバーテックスよりも、第一のバーテックスを使用する他の体系は、代替
的に実行されてもよい。
【0097】 基本的に、ポインタは、プリミティブにおける他のバーテックスを見つけるた
めの十分な情報とともに、前記プリミティブにおけるバーテックスの一つを指す
ために使用される。これらのプリミティブを読み取る時間には、プリミティブ全
体が、バーテックス及びポインタから再構築されうる。各タイルは、バーテック
スを指し、及び前記リストからの前記プリミティブの再生を可能にするポインタ
のリストである。このアプローチによって、すべてのプリミティブを記憶するこ
とが可能になり、一つのバーテックスを他のプリミティブを共有し、さらに各バ
ーテックスを一度記憶するだけのものも可能になる。
【0098】 本発明のプロシージャの一つの実施形態において、タイルごとに一つのリスト
が維持される。リストにはプリミティブを記憶しないが、代わりに、リストは、
前記プリミティブへのポインタを記憶する。これらのポインタは、実際には前記
プリミティブの一つを指し、及びそれは前記プリミティブにおけるバーテックス
の一つへのポインタであり、及び前記ポインタは、同じプリミティブにおける他
のバーテックスを探すために十分な情報も含む。このソーティング構造は、三つ
の記憶構造、データ記憶装置、タイル・ポインタ記憶装置、及びモード・ポイン
タ記憶装置を具備する構造を使用して、ハードウェアにおいて有効に実行される
。一定のタイルに関しては、処理されている特定のタイルに接触するプリミティ
ブのタイム・オーダ・シーケンスを再生するが、前記タイルに接触しないプリミ
ティブを無視することが、目的である。以前に前記モードを引き出し、それらを
個別に記憶したが、ここでは、前記モード・パケットを、正しい場所で、このプ
リミティブの流れに導入したい。さらに、前記モード・パケットは、前記プリミ
ティブを処理するために必要であり、それは一つ以上のタイルをかぶせるので、
単に、前記モード・パケットを一つのステージにおいて引き出し、それからそれ
を他のステージにおいて再導入するだけでは十分ではないことが注目される。そ
れゆえに、前記モード・パケットは、適切な時に、関連するタイルのすべてと再
度、関連付けされなければならない。
【0099】 一つの単純なアプローチは、モード・パケットへのポインタを、すべてのタイ
ル・リストに書き込むことであろう。このリストの連続した読み取りの間、モー
ド・パケット・アドレスにアクセスし、及び適切なモード・データを読み取るこ
とが簡単であろう。しかしながら、このアプローチは、すべての前記タイルへの
ポインタを書き込むことに関連するコストのために、不利である。本発明のプロ
シージャにおいて、各タイルの処理中、適切なタイル・ポインタ・リストからの
エントリを読み取り、及び前記バーテックスに関するモード・データを読み取っ
ており(フェッチしており)及びそれを送った場合、データ記憶装置からバーテ
ックスを単に検索し、それをパイプラインに送信する;しかしながら、前記モー
ド・データが、タイル・ポインタ・リストにおいて、検索された最終のバーテッ
クスと、次のシーケンシャル・バーテックスとの間で変化していた場合でも、バ
ーテックスが到着する時に、適切なモード・データが入手可能になるように、前
記モード・データは、データ記憶装置からフェッチされ、次のバーテックスが送
られる前に、パイプラインに送られる。前記モード・ポインタ・リストにおける
エントリは、どのバーテックスで前記モードが変化するかを識別することが注目
される。一つの実施形態において、前記モード・ポインタにおけるエントリは、
前記モード・データが関連する第一のバーテックスを記憶するが、しかしながら
、前記モード・データが適用される最終バーテックスの記憶等、代替的なプロシ
ージャが、不変の規則に従う限り、使用されうる。 3.2.4 DSGPオペレーションの二つのモード DSGPは、二つの個別のモードで動作することができる:1)タイム・オー
ダ・モード(Time Order Mode)、及び2)ソーテッド・トランスペアレンシー
・モード(Sorted Transparency Mode)である。タイム・オーダ・モードは上述
されており、及び特定のタイル内に、同じ時制のシーケンスのプリミティブを保
存するように設計される。ソーテッド・トランスペアレンシー・モードは、すぐ
後述される。好ましい実施形態において、パイプライン・オペレーティング・モ
ードの制御は、ソート・ブロックで実行される。
【0100】 ソート・ブロックは、モード・エクストラクション装置(MEX)とセットア
ップ(STP)装置との間のパイプラインに配置される。ソート・ブロックは、
第一に、ディスプレイ・ウィンドウに散りばめられたジオメトリを取るために、
及びそれをタイルにソートするために、動作する。ソート・ブロックはまた、ソ
ート・メモリを管理し、それはあるモード情報とともに、ラステライズされる前
に、シーン全体からすべてのジオメトリを記憶する。ソート・メモリは、バーテ
ックス及びモードの二重バッファされたリストを具備する。一つのページは、シ
ーンのジオメトリを集める(バーテックスごと及びモードごと)一方で、他のペ
ージは、そのジオメトリ(プリミティブごと及びモードごと)を、残りのパイプ
ラインに送っている。
【0101】 ソート・メモリにおけるページが書き込まれている時、バーテックス及びモー
ドは、それらがソート・ブロックによって受信されると、ソート・メモリへと順
番に書き込まれる。ページが、ソート・メモリから読み取られる時、前記読み取
りは、タイルごとのベースで行われ、及び前記読み取り処理は、二つのモード:
(1)タイム・オーダ・モード、及び(2)ソーテッド・トランスペアレンシー
・モードで動作する。 3.2.5 タイム・オーダード・モード(Time-Ordered Mode) タイム・オーダード・モードにおいて、バーテックス及びモードのタイム・オ
ーダは、各タイル内に保存され、一つのタイルは、水平及び垂直に区切られたデ
ィスプレイ・ウィンドウの一部である。保存されたタイム・オーダによって、一
定のタイルに関して、バーテックス及びモードは、それらが書き込まれたのと同
じオーダで、読み取られる。 3.2.6 ソーテッド・トランスペアレンシー・モード(Sorted Transparenc
y Mode) ソーテッド・トランスペアレンシー・モードにおいて、各タイルの読み取りは
、複数のパスに分割され、第一のパスにおいて、保証された不透明ジオメトリは
、ソート・ブロックから出力され、及び連続したパスでは、潜在的に透明なジオ
メトリは、ソート・ブロックから出力される。各ソーテッド・トランスペアレン
シー・モードパス内で、タイム・オーダリングが保存され、及びモード・デート
(mode date)は、その正しいタイム・オーダの場所に挿入される。ソーテッド
・トランスペアレンシー・モードは、後ろから前へ、又は前から後ろへの順番で
実行されてもよい。好ましい実施形態において、ソーテッド・トランスペアレン
シー方法は、ソート・ブロック及びカル・ブロックによって、共同して実行され
る。 3.2.7 複数ステップの隠れ面除去 従来、隠れ面は、「正確な」隠れ面除去プロシージャか、又はzバッファを使
用して除去される。本発明の構造及び方法の一つの実施形態において、2ステッ
プ・アプローチが実行され、(1)「保存性」隠れ面除去は、(2)zバッファ
・ベースのプロシージャが続く。異なる実施形態において、3ステップ・アプロ
ーチ:(1)特定の空間的カル・プロシージャ、(2)保存性隠れ面除去、及び
(3)zバッファが実行される。保存性隠れ面除去(conservative hidden surf
ace removal)(CHSR)の様々な実施形態は、すでに本開示の他の部分で説
明された。 3.2.8 パイプライン状態保存及びキャッシング 各バーテックスは、色ポインタを含み、及びバーテックスが受け取られると、
前記色ポインタを含む前記バーテックスは、ソート・メモリ・データ記憶装置に
記憶される。色ポインタは、バーテックス・データの色部分を含むポリゴン・メ
モリ・バーテックス記憶装置におけるある場所へのポインタである。素材ライテ
ィング・モード(Material-Lighting-Mode)(MLM)ポインタ・セットは、ス
トリップ(strip)又は(fan)のいずれかのバーテックスのすべてに関連する。
MLMは、後述のとおり、6の主なポインタに加え、2つの他のポインタを含む
。前記6の主なポインタの各々は、ポリゴン・メモリ状態記憶装置へのアドレス
を具備し、それはパイプラインにおいて変化した状態のすべて、例えば、テクス
チャ、ピクセル、ライティング等における変化のすべての逐次記憶装置であり、
将来のいつかに必要性が生じる時に、MLMポインタを探索し、及びポリゴン・
メモリ状態記憶装置に戻り、及びその時存在した状態を見つけることによって、
バーテックスと関連するMLMポインタから、バーテックス(又は一つ以上のバ
ーテックスから形成されるオブジェクト)をレンダリングするために必要とされ
る状態を再生することができる。
【0102】 モード・エクストラクション・ブロック(MEX)は、時制的にオーダされた
状態変化データを集め、前記状態をポリゴン・メモリに記憶し、及びそれがソー
ト・メモリに渡すバーテックス・データへの適切なポインタを添付する、ジオメ
トリとソートとの間の論理的ブロックである。通常のOpenGLパイプライン
において、及びソート・ブロックまでの本発明のパイプラインの実施形態におい
て、ジオメトリ及び状態データは、それがパイプラインに送られた順番で処理さ
れる。素材タイプ、ライティング、テクスチャ、モード及び点描に関する状態変
化は、それらに続くプリミティブに影響を与える。例えば、各新しいオブジェク
トは、前記オブジェクトに関する素材パラメータを設定するために、状態変化に
よって先行されるであろう。
【0103】 本発明のパイプラインにおいて、他方では、フラグメントは、カル・ブロック
の後に、タイル・オーダでパイプラインに送られる。モード・インジェクション
・ブロックは、タイム・オーダの代わりに、空間的(タイル)オーダでデータを
処理するパイプラインの部分における状態をどのように保存するのか、明らかに
する。ジオメトリ・データに加えて、データ・エクストラクション・ブロックは
、モード・データ(cull_mode)のサブセットを、カルによる使用のた
めに、パイプラインに送る。Cull_modeパケットは、ジオメトリ・ブロ
ックで生成される。モード・エクストラクション・ブロックは、ジオメトリ・パ
ケットにおける適切な色ポインタを挿入する。
【0104】 パイプライン状態は、以下のように、記憶装置を最小限にするために、いくつ
かのカテゴリ(category)に分けられる:(1)空間的パイプライン状態は、す
べてのバーテックスを変えるソートに向けられたデータを含む;(2) Cull_mode状態は、頻繁には変わらない(ソートを介して)カルに向け
られたデータを含む;(3)色は、すべてのバーテックスを変えるポリゴン・メ
モリに向けられたデータを含む;(4)素材は、各オブジェクトに関して変化す
るデータを含む;(5)テクスチャAは、テクスチャ0及び1に関するテクスチ
ャ・ブロックに関する第一の組の状態を含む;(6)テクスチャBは、テクスチ
ャ2乃至7に関するテクスチャ・ブロックに関する第二の組の状態を含む;(7
)モードは、ほどんと変化しないデータを含む;(8)ライトは、フォンに関す
るデータを含む;(9)点描は、ポリゴン点描パターンに関するデータを含む。
素材、テクスチャ、モード、ライト、及び点描データは、集合的に(素材、ライ
ト、及びモードに関する)MLMデータと称される。状態保存に関するMLMポ
インタに特に関心が持たれる。
【0105】 状態変化情報は、プリミティブ(空間的及び色パケット)が現れるまで、ME
Xに蓄積される。その時、最後のプリミティブ以来、変化したMLMデータは、
ポリゴン・メモリに書き込まれる。色データも、MLMデータへの適切なポイン
タとともに、ポリゴン・メモリに書き込まれる。空間的データは、ポリゴン・メ
モリへのポインタ(色ポインタ)とともに、ソートに送られる。色及びMLMデ
ータは、すべてポリゴン・メモリに記憶される。これらのレコードに関する空間
の割り当ては、性能を向上させるために、マイクロ・アーキテクチャ定義におい
て最適化されうる。
【0106】 これらのレコードのすべては、ポインタを介してアクセスされる。ソート・メ
モリにおける各プリミティブ・エントリは、ポリゴン・メモリにおける対応する
色エントリへの色ポインタを含む。色ポインタは、点、線又は三角形を構築し、
及びMLMポインタを配置することができるようにする色アドレス、色オフセッ
ト、及び色タイプを含む。色アドレスは、プリミティブにおける最終バーテック
スを指す。バーテックスは、順番に記憶されるので、一つのプリミティブにおけ
るバーテックスは、三角形ファンの場合を除いて、隣接する。色オフセットは、
色アドレスから、このバーテックス・リストに関する第一のデュアロクト(dual
oct)に指し戻す。(点リスト、線ストリップ、三角形ストリップ、又は三角形
ファンを、バーテックス・リストとして参照する。)この第一のデュアロクトは
、バーテックス・リストにおける前記点、線、ストリップ、又はファンに関する
MLMデータへのポインタを含む。バーテックス・リストにおける、それに続く
デュアロクトは、色データ・エントリを含む。三角形ファンに関して、三角形の
三つのバーテックスは、色アドレス、(色アドレス−1)、及び(色アドレス−
色オフセット+1)にある。これは、ポインタがソート・メモリに記憶されたの
とまったくの同じ方法ではないことが注目される。
【0107】 状態は、経時的変化をするエンティティであり、及びMEXは、状態が、バー
テックス又はバーテックスの組に関して再生されることができるように、状態に
おける変化を蓄積する。MIJブロックは、ダウンストリームのバーテックスと
状態を適合させることを担う。バーテックスがMEXに入り、及び一定のインジ
ケータ・ビット(indicator bits)が設定される時はいつも、パイプライン状態
情報のサブセットがセーブされる必要がある。完全な状態は、状態への蓄積的な
変化から生成されることができるので、変化した状態のみが記憶され、すべてが
記憶されるのではない。素材、テクスチャA、テクスチャB、モード、ライト、
及び点描に関する6のMLMポインタは、個別の状態情報への最近の変化が記憶
されるアドレス場所を識別する。これらの状態の一つにおける各変化は、メモリ
に記憶された、順番にオーダされた状態記憶装置リストの最後で、追加のエント
リによって識別される。有効に、すべての状態変化が記憶され、及び時間におけ
るある点(又はバーテックスの受信)に対応する特定の状態が必要とされる時、
前記状態は、前記ポインタから再構築される。
【0108】 セーブされるモードのこのパケットは、モード・パケットと称されるが、前記
フレーズ(phrase)は、レンダリングの前に、MIJによって検索され又は再構
築されるより大きなセットのモード・データと同様に、記憶されるモード・デー
タ変化を参照するために使用される。
【0109】 特に、全体の状態は、比較的小さな色ポインタに維持される情報から再生され
ることができることが注目される。
【0110】 ポリゴン・メモリ・バーテックス記憶装置は、色部分のみを記憶する。ポリゴ
ン・メモリは、隠れ面除去に必要とされないパイプライン状態の部分を記憶し、
及び隠れ面除去には必要とされないバーテックス・データの部分(主に、色を作
るために必要とされる項目)も記憶する。 3.2.9 テクセル再使用検出及びタイル・ベースド処理 本発明の構造及び方法は、テクスチャ・マップの複数の層(解像度)のトリリ
ニア・マッピング(trilinear mapping)を有効に利用してもよい。
【0111】 テクスチャ・マップは、AGPインターフェースを使用して、ホスト・コンピ
ュータのメモリからロードされた単一バッファされたメモリを通常具備してもよ
いテクスチャ・メモリに記憶される。例示的な実施形態において、単一のポリゴ
ンは、4つまでのテクスチャを使用することができる。テクスチャは、ミップ・
マップされる。すなわち、各テクスチャは、異なるレベルのディテール又は解像
度で、一連のテクスチャ・マップを具備し、各マップは、アイ・ポイントからの
一定の距離におけるテクスチャの外観を表してもよい。一定のピクセル・フラグ
メントに関するテクスチャ値を生成するために、テクスチャ・ブロックは、正し
いレベルのディテールに近似するために、テクスチャ・マップからトリリニア補
間を実行する。テクスチャ・ブロックは、異方向補間等、他の補間方法を代替的
に実行することができる。
【0112】 テクスチャ・ブロックは、パー・フラグメント・ベースで、フォン・ブロック
に、補間されたテクスチャ値を(通常は、RGBA色値として)供給する。バン
プ・マップは、特殊なテクスチャ・マップを表す。色の代わりに、バンプ・マッ
プの各テクセルは、高さフィールド勾配を含む。
【0113】 複数層は、MIP層であり、及び補間は、MIP層の中及び層の間である。第
一の補間は、各層の中であり、二つの隣接する層の間を補間し、一方は要求され
るよりも大きな解像度を有し、他方は、要求されるよりも小さな解像度を有する
ので、それは最適な解像度を生成するために、3次元で実行される。
【0114】 本発明のパイプラインは、前記構造及びオペレーションが従来のキャッシュと
異なるので、テクスチャ・キャッシュ、実際にはテクスチャされた再使用レジス
タを含むテクスチャ・メモリを含む。ホストはまた、テクスチャのための記憶装
置を含み、それは通常大変大きくてもよいが、テクスチャをレンダリングするた
めに、それは、テクスチャ・メモリとも称されるテクスチャ・キャッシュへとロ
ードされなければならない。S及びTは、各VSPに関連する。トリリニアMI
Pマッピングを実行するために、必ず8のサンプルをブレンドするので、本発明
の構造は、並行して動作する、一組の8のコンテント・アドレッサブル(メモリ
)キャッシュを供給する。一つの実施形態において、前記キャッシュ識別子は、
コンテント・アドレッサブル・タグの一つであり、それが、前記キャッシュのタ
グ部分と、及び前記キャッシュのデータ部分が、前記タグ又はインデックスから
別個に配置されている理由である。従来、タグ及びデータは、前記タグのクエリ
が前記データを与えるように、共に配置される。本発明の構造及び方法において
、前記タグ及びデータは分割され、及びインデックスは、パイプラインに送られ
る。
【0115】 前記データ及びタグは、異なるブロックに記憶され、及びコンテント・アドレ
ッサブル・ルックアップは、アドレスのルックアップ又はクエリであり、及びそ
れ自身における前記アドレスに記憶された「データ」並びに異なるブロックに記
憶される実際のデータを参照するインデックスでもある。前記インデックスによ
って参照されたデータが、決定されることができるように、前記インデックスは
決定され、及びパイプラインに送られる。すなわち、前記タグは一つの場所にあ
り、前記テクスチャ・データは第二の場所にあり、及び前記インデックスは、前
記二つの記憶装置構造の間にリンクを供給する。
【0116】 本発明の一つの実施形態において、テクセル再使用検出レジスタ(Texel Reus
e Detection Register)(TRDR)は、複数の関連メモリを具備し、それは通
常テクセル・インターポレータ(texel interpolator)と同じ集積回路上に配置
される。好ましい実施形態において、テクセル再使用検出方法は、テクスチャ・
ブロックにおいて実行される。
【0117】 従来の3Dグラフィックス・パイプラインにおいて、空間上のある方向のオブ
ジェクトがレンダリングされる。前記オブジェクトは、その上にテクスチャ・マ
ップを有し、及び多くの三角形プリミティブによって表示される。ソフトウェア
で実行されるプロシージャは、特定のオブジェクト・テクスチャを、DRAMに
ロードするように、ハードウェアに命令する。前記特定のオブジェクトに共通で
あり、同じテクスチャ・マップを有する三角形のすべては、前記装置に送り込ま
れ、及び特定のオブジェクトを表示するために必要な色付きピクセルのすべてを
生成するために、テクスチャ補間が実行される。前記オブジェクトが色付けされ
た時、DRAMにおけるテクスチャ・マップは、前記オブジェクトがレンダリン
グされたので、破壊されうる。(おそらく異なる方向又は場所にある)複数の同
一のオブジェクト等、同じテクスチャ・マップを有する一つ以上のオブジェクト
がある場合、そのタイプのオブジェクトのすべては、DRAMにおけるテクスチ
ャ・マップが廃棄される前に、望ましくはテクスチャされてもよい。異なるジオ
メトリが送り込まれてもよいが、同じテクスチャ・マップは、すべてに関して使
用されることができ、それによって、ホスト・メモリからテクスチャ・マップを
繰り返し検索し、それを一時的に一つ以上のパイプライン構造に配置する必要を
排除する。
【0118】 より複雑な従来の体系において、一つ以上のテクスチャ・マップが検索され、
及びメモリに記憶されてもよく、例えば、二つ又はいくつかのマップが、利用可
能なメモリ、テクスチャ・マップのサイズ、複数のテクスチャ・マップを記憶し
または維持する必要性、及び管理体系の複雑性によって、記憶されてもよい。こ
れら従来のテクスチャ・マッピング体系、空間的オブジェクトのコヒーレンス(
coherence)の各々は、第一の重要性を有する。少なくとも単一のオブジェクト
全体に関して、及び通常は同じテクスチャ・マップを使用するオブジェクトのグ
ループに関して、前記オブジェクトを形成する三角形のすべては、ともに処理さ
れる。フレーズ空間コヒーレンシー(coherency)は、前記オブジェクトからの
三角形が空間で接続され、それゆえに空間的にコヒーレント(coherent)である
ので、そのような体系に適用される。
【0119】 本発明のディファード・シェーダ構造及び方法において、このタイプの空間的
オブジェクト・コヒーレンスからのかなりの利益に、必ずしも依存し又はそれを
引き出さない。本発明のディファード・シェーダの実施形態は、代わりにタイル
上で動作する。全体のタイルに対する空間的オブジェクト・コヒーレンスが、通
常は存在しないように、一定のタイルは、オブジェクト全体、複数のオブジェク
ト、いくつかの全体のオブジェクト、又はいくつかのオブジェクトの部分を有す
る。
【0120】 本発明の構造及び方法は、ディファード・シェーダに向けられているので、従
来の概念は完全に壊れる。タイルが、偶然に全体のオブジェクトを有する場合で
も、通常は異なるバックグラウンドがあり、及び前記タイルが、ある程度の空間
的コヒーレンシーをサポートする場合でも、本発明のカル・ブロック及びカル・
プロシージャは、通常完全に混乱し及び空間的にインコヒーレント(incoherent
)なオーダでVSPを生成し及び送信する。その結果、パイプライン及びテクス
チャ・ブロックは、有効に、リアルタイムで稼動中のテクスチャ・マップを変え
ることができ、及び受信されたオブジェクト・プリミティブ(例えば三角形)に
要求されるテクスチャに応答する。たった今受信された特定のオブジェクト・プ
リミティブ(例えば単一の三角形)を処理するために、及び次の異なるオブジェ
クト・プリミティブが、異なるテクスチャ・マップを必要とする時に、前記テク
スチャを廃棄するために、ホストからテクスチャ・マップを繰り返し検索するた
めの要求は、控えめに言っても問題があり、迅速なオペレーションを妨害するで
あろう。
【0121】 本発明の構造及び方法において、かなり大きいメモリがカード上にサポートさ
れる。一つの実施形態において、128メガバイトが供給されるが、それ以上又
はそれ以下のメガバイトが供給されてもよい。例えば、ユーザの必要性、メモリ
のためのカード上で利用可能なリアル・エステート(real estate)、及び利用
可能なメモリの密度によって、34Mb、64Mb、256Mb、512Mb、
又はさらに多くが供給されてもよい。
【0122】 すべての可視フラグメントに関して8テクセルを読み取り、それらを使用し、
及び次のフラグメントのための8テクセルが検索され及び記憶されることができ
るように、それらを廃棄するよりもむしろ、本発明の構造及び方法は、それらが
再度必要とされる妥当な可能性がある時に、それらを記憶し及び再使用する。
【0123】 可視フラグメントが受信されるたびに、8テクセルを読み取り及び廃棄するこ
とは、実用的でない。それよりも、タイル空間を進む場合には、同じテクスチャ
・マップが連続するピクセルに必要とされない一方で、同じテクスチャ・マップ
が、前記タイルのある領域においてクラスタにされた(clustered)いくつかの
ピクセルに必要とされ、ゆえに、第一の使用の後、いくつかの処理ステップのみ
を必要とするように、前記タイル内のピクセル・グリッド(通常は、長方形タイ
ル・ピクセル・グリッドにおける連続した列に沿って処理される)が来るので、
これらのテクセルを再使用することが望ましい。望ましくは、本発明は、繰り返
し読み取られたテクセルを使用するので、それを必要とし、それを読み取り、及
び特定のテクスチャ・マップを要求する一つのフラグメントを見た可能性が十分
であり、同じタイルにいる間に、後のある時間帯に、可能性が十分であることを
知っている時、同じテクスチャを必要とする同じオブジェクトからの、他のフラ
グメントに遭遇するであろう。それゆえに、このキャッシュにそれらのものをセ
ーブし、それから稼動中に、必要とするものをキャッシュ(テクスチャ再使用レ
ジスタ)から探索する。キャッシュ・ミス(cache miss)がある場合、例えば、
フラグメント及びテクスチャ・マップが初めて遭遇した場合、前記テクスチャ・
マップは検索され、及びキャッシュに記憶される。
【0124】 テクスチャ・マップ検索待ち時間は、他の問題ではあるが、ファースト・イン
・ファースト・アウト(First-In-First-Out)(FIFO)データ構造の使用及
び予見的又は予言的な検索プロシージャの使用を通して扱われる。FIFOは大
きく、CAMと関連して動作する。項目が必要とされる時、それがすでに記憶さ
れたかについて決定がなされ、及びデジグネータ(designator)も、キャッシュ
・ミスがある場合に、情報を検索し及びそれを記憶するために、比較的遅いメモ
リに出ることができるように、FIFOに配置される。いずれの場合も、データ
がキャッシュにあり、又はそれがホスト・メモリから検索された場合、装置メモ
リに(また、新しく検索された場合には、キャッシュにも)配置される。
【0125】 効果的に、(実際の使用の前に)一度テクスチャへの必要性が識別されると、
前記データは、必要とされる前に検索され及び再関連付けされることができるよ
うに、前記検索が処理を遅らせないように、一種の遅延(delay)として動作す
る。FIFO待ち行列は、常に予報し及び先を見るように、パイプラインにおけ
るスラック(slack)を供給し、及び取り上げる。FIFOを調べることによっ
て、読み取りが実行される時に、それが使用のために準備できているように、非
キャッシュ・テクスチャが識別され、ホスト・メモリから検索され、キャッシュ
及び特別な装置メモリに配置されることができる。
【0126】 予見的及び予言的な検索を供給するFIFO及び他の構造が、パー・オブジェ
クト処理において通常使用される空間的オブジェクト・コヒーレンスが、我々の
パー・タイル処理において失われる時に起こる問題を避ける意味で、供給される
。本発明の構造及び方法は、オブジェクト内で、空間的コヒーレンスを利用する
ことも注目され、一つのオブジェクトにおけるすべてのピクセルが、順番に処理
される場合に、本発明は、一時的及び空間的コヒーレンスがあるという事実を利
用する。 3.2.10 パケット化データ転送プロトコル 本発明の構造及び方法は、ブロックからブロックへ、パケットで(データ及び
制御等の)情報を有効に転送する。このパケット化された通信を、パケット化デ
ータ転送と称し、及び前記パケット化されたデータのフォーマット及び/又は内
容を、パケット化データ転送プロトコル(packetized data transfer protocol
)(PDTP)と称する。前記プロトコルは、ヘッダ部分とデータ部分を含む。
【0127】 PDTPの一つの利点は、データのすべてが、ブロックからブロックへ、一つ
のバスを通して送ることができ、それによって異なるデータ・タイプのための個
別のバスに対する必要性を軽減することである。PDTPの他の利点は、情報を
パケット化することが、オーダリングを維持することに関して支援することであ
り、それは、適切なレンダリングに重要なことである。レンダリングは、パイプ
ライン状態等における変化に敏感であり、タイム・オーダ・シーケンス(time o
rder sequence)を維持することは一般的に重要であり、例えば、MIJキャッ
シュに関しては、パイプラインを下るパケットの流れの管理は、特に重要である
ことが想起される。
【0128】 バスは、効果的な順番のリンクであり、パケットは、あるタイム・オーダで順
番に到着するので、パケットの転送は、順番である。例えば、「フィル・パケッ
ト(fill packet)」がブロックで到着する場合、それは前記ブロックのFIF
Oに入り、及びVSPが到着する場合は、それも前記ブロックのFIFOに入る
。各プロセッサ・プロックは、その入力に到着するパケットを待ち、及びパケッ
トが到着すると、どのアクションを取るべきか決定するために、パケット・ヘッ
ダを見る。前記アクションは、前記パケットを前記出力に送ること(すなわち、
他のアクション又は処理をすることなく、それを渡す)か、又はそれに関して何
かをすることでもよい。パケット化データ構造及び前記パケット化データ構造の
み及びバス、FIFO又は他のバッファ又はレジスタ体系と関連した使用は、3
Dグラフィックス・システムよりも広いアプリケーションを有し、及び複数の機
能的又は処理ブロック又は装置が、相互接続され及び互いに通信する、あらゆる
パイプライン構造に適用されてもよい。パケット化転送の使用は特に、シーケン
シャル又はタイム・オーダの維持が重要である場合に有効である。
【0129】 PDTPの一つの実施形態において、各パケットは、パケット識別子又はID
及び他の情報を有する。多くの、様々な種類のパケットがあり、すべての異なる
パケット・タイプは、標準長を有し、及びパケットの種類を識別するヘッダを含
む。異なるパケットは、異なる形式及び様々な長さを有するが、各特定のパケッ
ト・タイプは、標準長を有する。
【0130】 効果的に、各ブロックは、入力においてFIFOを含み、及び前記パケットは
、FIFOを通過して流れ、関連する情報は、ブロックごとにFIFOに蓄積さ
れる。前記パケットは、前記ブロック機能に関連する情報が引き出されるように
、他の又は前記ブロックのすべてを流れ続ける。
【0131】 本発明の構造及び方法の一つの実施形態において、FIFO内の記憶セル又は
レジスタは、小さなパケットが、たった一つのFIFOを要求し、より大きいパ
ケットは、多数のレジスタ、例えば2,3,5,10,20,50又はそれ以上
のレジスタを要求してもよいように、予め決められた幅を有する。可変パケット
長及び単一のパケットが、いくつかのFIFO記憶装置レジスタを消費するかも
しれない可能性は、パケットの第一の部分がパケットの種類を識別し、及び直接
又は間接的に、パケットの種類を知ることによって、パケットのサイズ及びそれ
が消費するFIFOエントリの数を識別するので、問題を提示しない。本発明の
構造及び方法は、本明細書の他の節において説明される数多くのパケット・タイ
プを供給し及びサポートする。 3.2.11 フラグメント・カラリング フラグメント・カラリングは、2次元表示空間に関して実行され、及び例えば
、三角形プリミティブの三つのバーテックスから、表示されたピクセルのサンプ
ル化された座標への色の補間を伴う。基本的に、フラグメント・カラリングは、
前記三つのバーテックスの間に空間的に配置された場所に関する色を決定するた
めに、三つのフラグメント・バーテックスにおける色に、補間機能を適用するこ
とを伴う。通常、しかし任意に、補間を実行することに関して、透視的正確さ(
perspective correctness)を考慮するであろう。補間係数は、透視的正確係数
と同様にキャッシュされる。 3.2.12 法線の補間 様々な折衷案が、面法線、特に3Dグラフックス環境における他の面法線の間
に補間される面法線の計算と関連して、今までに受け入れられてきた。前記折衷
案は通常、計算の簡単さ又は効率に対して正確性を引き換えにしてきた。理想的
には、面法線は、角度的に補間され、前記補間が基づく面法線の角度における実
際の角度差に基づく。実際に、そのような角度計算は、3Dグラフィックス・ア
プリケーションには適していない。
【0132】 それゆえに、より典型的には、面法線は、二つの入力法線の線形補間に基づい
て補間される。質レンダリングを低く和らげるために、合成面法線の線形補間は
、十分な正確性を供給してもよい;しかしながら、2次元補間の例を検討すると
、一つのベクトル(面法線)が、例えば、他のベクトルだが、前記第一のベクト
ルへの比較可能な角度変更があるより大きなマグニチュードを有する時、その結
果のベクトルは、前記二つのベクトルの間の比較可能な角度差に関わらず、より
大きなマグニチュード・ベクトルによって、過剰に影響を受けるであろう。これ
は、異論を招くエラーを生じるかもしれず、例えば、ある面シェーディング又は
ライティング計算は、異常な結果を招き、及び出力シーンを損ねるかもしれない
【0133】 これらの問題のいくつかは、線形補間が、正規化された組のベクトルで実行さ
れる場合でも、最小化される一方で、いくつかのAPIは、例えば3座標補間、
個別のx、y及びz補間及び他の体系を含む、非正規化ベクトル及び様々な補間
体系をサポートするので、これは常に実践的であるわけではない。
【0134】 本発明の構造及び方法において、前記マグニチュードは、方向又は角度からは
別個に補間される。補間されたマグニチュードが計算され、それから同じサイズ
の方向ベクトルが計算される。別個に補間されたマグニチュード及び方向は、再
結合され、前記方向は正規化される。
【0135】 理想的な角度補間は、最大の正確性を供給する一方で、しかしながら、前記補
間は、球体の表面上の3点及び様々な大円計算に関与する。この種の数学的複雑
性は、リアルタイムの迅速なパイプライン処理には適していない。単一ステップ
の線形補間は、ずっと簡単であるが、よりエラーに敏感である。これらのプロシ
ージャの各々と比較して、本発明の面法線補間プロシージャは、従来の線形補間
よりも大きな正確性を有し、及び従来の角度補間よりも低い計算複雑性を有する
。 3.2.13 空間的セットアップ 本発明の好ましい実施形態において、空間的セットアップは、セットアップ・
ブロック(STP)で実行される。セットアップ(STP)・ブロックは、ソー
ト(SRT)・ブロックから一連のパケットを受け取る。これらのパケットは、
レンダリングされるべきプリミティブに関する空間的情報を有する。STPブロ
ックの出力は、カル(CUL)・ブロックに進む。SRTから受け取られるプリ
ミティブは、三角形、線三角形、線、点線、及び点で埋められる。これらのプリ
ミティブの各々は、エイリアス又はアンチ・エイリアス・モードでレンダリング
されうる。SRTブロックは、プリミティブをタイル・オーダでSTP(及び他
のパイプライン・ステージ・ダウンストリーム)に送る。各タイル内で、前記デ
ータはタイム・オーダ又はソートされた透明性オーダで編成される。CULブロ
ックは、タイル・オーダで(実際には、STPがSRTからプリミティブを受け
取るオーダで)STPブロックからデータを受け取り、及びレンダリングされた
画像に決してコントリビュート(contribute)しないプリミティブの部分をカル
・アウト(cull out)する。これは2つの段階で達成される。第一の段階で、そ
の内容が一定の値よりも大きい長方形メモリ・アレイにおける前記エレメントの
検出を可能にする。第二の段階は、サンプルごとの内容比較をすることによって
、この探索を改良する。STPブロックは、CULブロックによる処理のために
、入力プリミティブを準備する。STPは、第一段階のカルのために前記タイル
を交差するプリミティブの部分に関して、タイト(tight)な文字枠(bounding
box)及び最小深度値Zminを生成し、それは、Zminよりも小さい深度値
を含んでもよい文字枠におけるスタンプに印つけをする。Zカル段階は、これら
の候補のスタンプを取り、それらがプリミティブの一部である場合には、前記ス
タンプにおけるサンプルに関する実際の深度値を計算する。この、より正確な深
度値は、比較及びサンプルごとのベースでの可能な廃棄のために使用される。第
一の段階のカルに関する文字枠及び Zminに加えて、STPは、深度勾配、線スロープ、及びZカル段階に関する
タイル・エッジとの深度及びプリミティブ交差点等、他の参照パラメータも計算
する。CUL装置は、他のパイプライン段階によって使用されるVSPを生成す
る。
【0136】 本発明の好ましい実施形態において、空間的セットアップ・プロシージャは、
セットアップ・ブロックで実行される。本発明の空間的セットアップ構造及び方
法の重要な特徴は:(1)統一されたプリミティブのサポート及び生成、(2)
プリミティブに関するタイル内のZminを計算するためのプロシージャ、(3)
タイル相対y値及びスクリーン相対x値の使用、及び(4)これもダウンストリ
ーム・ハードウェアを単純化する従来のエッジ・ウォークに加えた、エッジ・ホ
ップ(edge hop)の実行(実際には、カル・ブロックで実行される)を含む。
【0137】 統一されたプリミティブの注釈のもとで、長方形になるべき線プリミティブ及
び退化した長方形になるべき三角形を検討し、各々は、数学的にそのように表示
される。セットアップは、線セグメントを、4つのバーテックスを含む平行四辺
形に変換する。一つの三角形は、三つのバーテックスを有する。セットアップは
、一組の4点を有する各プリミティブを記述する。すべての値が、すべてのプリ
ミティブに対して必要とされるわけではないことが注目される。三角形に関して
、セットアップは、三角形の方向によって、上、下、及び左又は右の角を使用す
る。線セグメントは、平行四辺形として扱われるので、セットアップは、4点す
べてを使用する。前記三角形のバーテックスが、本来のバーテックスと同じであ
る一方で、セットアップは、前記線をクワド(quads)として表示するために、
新しいバーテックスを生成する。プリミティブの統一された表示は、ウィンドウ
座標における本来の組のバーテックスに割り当てられるプリミティブ記述子を使
用する。さらに、どの記述子が有効かつ意義のある値を有するかを示すフラグが
ある。
【0138】 三角形に関して、VtxYmin、VtxYmax、VtxLeftC、Vt
xRightC、LeftCorner、RightCorner記述子が、そ
れらのy座標で三角形のバーテックスをソートすることによって得られる。線セ
グメントに関して、これらの記述子は、前記線クワド・バーテックスが生成され
る時に割り当てられる。VtxYminは、最小のy値を有するバーテックスで
ある。VtxYmaxは、最大のy値を有するバーテックスである。VtxLe
ftCは、三角形の場合における長いyエッジ(バーテックス VtxYminとVtxYmaxとを結合させることによって形成される三角形
のエッジ)の左に、及び平行四辺形に関しては、バーテックス VtxYminとVtxYmaxとを結合させることによって形成される対角線
の左に位置するバーテックスである。前記三角形が、長いyエッジも左エッジで
あるような場合、フラグLeftCornerは、VtxLeftCが無効であ
ることを示すFALSE(0)である。同様に、VtxRightCは、三角形
の場合では、長いyエッジの右に、及び平行四辺形に関しては、バーテックスV
txYminとVtxYmaxとを結合させることによって形成される対角線の
右に位置するバーテックスである。三角形が、長いエッジも右エッジである場合
、フラグRightCornerは、VtxRightCが無効であることを示
すFALSE(0)である。これらの記述子は、上及び下のタイル・エッジ上の
プリミティブのクリッピングのために使用される。実際には、VtxYmin、
VtxYmax、VtxLeftC、及び VtxRightCは、本来のプリミティブ・バーテックスへのインデックスで
あることが注目される。
【0139】 三角形に関しては、VtxXmin、VtxXmax、VtxTopC、 VtxBotC、TopCorner、BottomCorner記述子は、そ
れらのx座標によって三角形バーテックスをソートすることによって得られる。
線セグメントに関しては、これらの記述子は、前記線クアド・バーテックスが生
成される時に割り当てられる。VtxXminは、最小のx値を有するバーテッ
クスである。VtxXmaxは、最大x値を有するバーテックスである。Vtx
TopCは、三角形の場合では、長いxエッジ(バーテックス VtxXminとVtxXmaxとを結合させるエッジ)の上に、及び平行四辺
形に関しては、バーテックスVtxXminとVtxXmaxとを結合させるこ
とによって形成される対角線の上に位置するバーテックスである。前記三角形が
、長いxエッジもトップ・エッジである場合、フラグ TopCornerは、VtxTopCが無効であることを示すFALSE(0
)である。同様に、VtxBotCは、三角形の場合では、長いx軸の下、及び
平行四辺形の場合には、バーテックスVtxXminとVtxXmaxとを結合
させることによって形成される対角線の下に位置するバーテックスである。三角
形が、長いxエッジもボトム・エッジである場合、フラグ BottomCornerは、VtxBotCが無効であることを示す FALSE(0)である。これらの記述子は、左及び右のタイル・エッジ上のプ
リミティブをクリッピングするために使用される。実際には、 VtxXmin、VtxXmax、VtxTopC、及びVtxBotCが、本
来のプリミティブ・バーテックスへのインデックスであることが注目される。さ
らに、4つのポリゴン・エッジのスロープ(δx/δy)及びスロープ (δxyδx)の逆元を使用する。
【0140】 これらの記述子のすべては、多角四辺形プリミティブに関する有効値を有する
が、それらのすべてが、三角形に関して有効でなくてもよい。最初に、それは、
三角形や多角四辺形のような単純なプリミティブを記述するための多くの記述子
のように見える。しかしながら、後にわかるように、それらは、大変簡単に得る
ことができ、及びプリミティブをセットアップするための素晴らしい均一的な方
法を供給する。
【0141】 線を長方形として扱うこと(又は長方形を線として解釈することと同様)は、
空間及び幅において、二つのエンド・ポイントを特定することを伴う。三角形を
長方形として扱うことは、4点を特定することを伴い、その一つ、通常一つの特
定の実施形態におけるy左又はx右は、退化しており、特定されない。目的は、
タイルの内側のZminを見つけることである。x値は、ウィンドウ幅全体に及
びうるのに対して、y値は、タイルと相対的であるので、ビットは、y値タイル
相対座標を作ることによって、計算においてセーブされる。 3.2.14 オブジェクト・タグ 3Dシーンの有向非輪状グラフ表示は通常、シーン・グラフにおける各ノード
に、識別子を割り当てる。この識別子(オブジェクト・タグ)は、シーンにおけ
るオブジェクトの選択、可視性決定、衝突検出、及びレンダリングのための他の
統計的パラメータの生成等、グラフィカル・オペレーションにおいて有用になり
うる。レンダリングにおけるピクセル・パイプラインは、アルファ・テスト、色
テスト、ステンシル・テスト、及び深度テスト等、多くのピクセル・テストを可
能にする。アルファ及び色テストは、オブジェクトが、透明なピクセルを有する
か決定し、及び前記値を廃棄することにおいて有用である。ステンシル・テスト
は、様々な特別な効果及びCSGにおけるオブジェクト交差の決定に関して使用
することができる。深度テストは通常、隠れ面除去に関して使用される。
【0142】 本明細書において、シーンにおけるオブジェクトをタグし、及びどのオブジェ
クトが、予め決められた可視性基準のセットを通過したかに関するフィードバッ
ク(feedback)を得る方法が説明される。
【0143】 二段階オブジェクト割り当て体系が利用される。オブジェクト識別子は、二つ
の部分、グループ(g)及びメンバ・タグ(member tag)(t)を含む。グルー
プ“g”は、4ビット識別子であり(しかし、より多くのビットが使用されうる
)、シーン・グラフ・ブランチ(scene graph branch)、ノード・レベル(node
level)、又はオブジェクトをグループ分けするために使用されてもよい他のパ
ラメータをエンコードするために使用することができる。メンバ・タグ(t)は
、5ビット値である(ここでも、より多くのビットが使用されうる)。この体系
において、各グループは、32までのメンバを有することができる。32ビット
状態ワードが、各グループに関して使用される。この状態ワードのビットは、テ
スト基準を通過したメンバを示す。前記状態は:オブジェクト・グループ;オブ
ジェクト・タグ;及びTagTestID{DepthTest、 AlphaTest、ColorTest、StencilTest}を含む。
オブジェクト・タグは、パイプラインを下り、zバッファード・ブレンド(又は
好ましい実施形態におけるピクセル・ブロック)で使用される。サンプルが可視
である場合、オブジェクト・タグは、特定のCPU読み取り可能レジスタにおい
て特定のビットを設定するために使用される。これによって、オブジェクトはパ
イプラインに送り込まれ、一度レンダリングが完了すると、ホストCPU(アプ
リケーション・プログラムを実行させるCPU又は複数のCPU)は、どのオブ
ジェクトが、少なくとも部分的に可視であったかを決定することができる。
【0144】 代替例として、メンバ・タグ(t)だけが、使用されることができ、一つのグ
ループのみを意味する。
【0145】 オブジェクト・タグは、ピッキング(picking)、透明性決定、初期オブジェ
クト廃棄、及び衝突検出のために使用することができる。初期のオブジェクト廃
棄に関して、オブジェクトは、レンダリング・パイプラインへのその境界ボリュ
ーム入力を有することによって、可視性に関してテストすることができ、及び上
述のとおり「可視性」に関してテストすることができる。しかしながら、境界ボ
リュームが、フレーム・バッファにレンダリングされるのを阻止するために、色
、深度及びステンシル・マスクはクリアされる(これらのマスク・ビットの説明
に関するOpenGL仕様書を参照)。 3.2.15 単一の可視性ビット 上述のオブジェクト・タグへの代替例として、単一のビットが、ホストCPU
へのフィードバックとして使用することができる。この方法において、「可視性
」(すなわち、ピッキング、透明性決定、初期オブジェクト廃棄、衝突検出等)
に関してテストされているオブジェクトは、それ自身のフレームにおいて隔離さ
れる。フレームにおいてすべてが可視である場合、前記単一の「可視性ビット」
が設定され、そうでなければ、クリアされる。このビットは、ホストCPUによ
って読み取り可能である。この方法の効果は、その単純性である。欠点は、テス
トされる必要がある各個別のオブジェクト(又は一組のオブジェクト)に関して
、個別のフレームを使用する必要性であり、それによっておそらく「可視性」決
定に待ち時間を導入する。 3.2.16 スーパータイル・ホップ・シーケンス(Supertile Hop Sequence
) 3D画像をレンダリングする時、しばしば「ホリゾン効果(horizon effect)
」があり、画像(ピクチャ)の水平スワス(horizontal swath)は、画像の残り
よりもより多くの複雑性を有する。一例は、前景における単純な草原及び上方に
空を有する、遠くの都市のスカイライン(skyline)である。草原及び空は、ほ
とんどポリゴンを有しない(おそらく一つずつ)一方で、都市は、多くのポリゴ
ンを有し、大きな深度計算複雑性を有する。そのようなホリゾン効果は、シーン
を通して非水平スワスに沿っても起こりうる。タイルが、単純な、上から下へ、
及び左から右への順番で処理される場合、複雑なタイルは、背中合わせで向かい
合い、パイプライン内で可能なロード不均衡を生む。それゆえに、タイルからタ
イルへ移動する時、スクリーン周辺で無作為に「ホップする(hop)」方が良い
であろう。しかしながら、これは、(隣接するタイルが順番に処理されないため
に)空間的コヒーレンシーの低減を生じ、パイプライン内のキャッシュの効率性
を低減させ、及び性能を低下させる。空間的なシーケンシャル・タイル処理及び
全体的な無作為パターンの妥協案として、タイルは「SuperTiles(ス
ーパータイルズ)」へと編成され、各SuperTileは、多くの空間的に隣
接するタイルであり、SuperTilesの不作為のパターンが処理される。
このように空間的コヒーレンシーは、SuperTile内で保存され、ホリゾ
ン効果は回避される。好ましい実施形態において、 SuperTileホップ・シーケンス方法は、ソート・ブロックで実行される
。 3.2.17 スキャンアウト中の正規化 出力中の正規化(normalization)は、フレーム・バッファにおける値を決定
するための、従来の処理ヒストリを考慮し、又はフレーム・バッファにおける値
が決定される本発明のプロシージャであり、及びスクリーンにおける値の範囲は
、前記値の範囲が表示されることができ及び所望のビューイング特性を供給する
ことができる範囲に基準化され又は正規化される。線形及び非線形スケーリング
が適用されてもよく、及びダイナミックな範囲が、いくつかの比較的明るい又は
暗いピクセルによって過度に占められないように、クリッピングも許可されても
よく、前記ダイナミックな範囲は、デジタル−アナログ・コンバータ(digital-
to-analog converter)の変換範囲に合致する。
【0146】 出力ピクセル値が生成される方法の知識は、このアプローチの効果に関してさ
らに大きな見識を与える。時に、出力ピクセル値が、強度又は明るさを表すのは
、それらが最終的に、現実世界におけるシーンの明るさ又は強度をシミュレート
し(simulate)又は表すための方法で表示されるからである。
【0147】 効果的に、ピクセル色は、それらが大変広いダイナミックな範囲に及ぶように
、フローティング・ポイント数によって表される。適切であるが、ディスプレイ
に一度基準化された整数値は、後に再スケーリングを許可するために、出力強度
が計算される、一定の方法で、十分な範囲を供給しないかもしれない。Open
GLを含む標準APIの下では、光は、座標距離と同様に、フローティング・ポ
イント値として表される。それゆえに、従来の表示では、使用可能なディスプレ
イのダイナミックな範囲を廃棄し又は浪費して、シーンがすべて黒く(暗く)又
はすべて白く(明るく)又は特定の明るさ範囲へと傾斜して出てくることは、比
較的簡単である。
【0148】 本発明の正規化プロシージャの下で、計算は、フローティング・ポイント表示
全体において好ましく維持され、及び最終シーンは、出力表示及びD/Aコンバ
ータ・ケイパビリティ(capability)と一致したピクセル強度値をもたらすため
に、スケーリング・ルーチンを使用して、マッピングされる。そのような、表示
装置へのスケーリング又は正規化は、範囲の圧縮もしくは拡張、線形圧縮もしく
は拡張、対数圧縮、指数もしくはパワー拡張、他の代数もしくは多項マッピング
機能、又はこれらの組み合わせなしに、ある範囲の値の、異なる範囲の値へのオ
フセット(offset)又はシフト(shift)等のオペレーションに関与してもよい
。代替的には、任意のマッピング転送機能を有するルックアップ・テーブルは、
出力値強度変換を実行するために実行されてもよい。それがなされる時に画像(
ピクチャ)を表示するために、バッファ・スワップする時に、対数的に(又は他
に)スキャンアウト中にスケールする。
【0149】 望ましくは、前記変換は、一組の予め決められた規則の下で、自動的に実行さ
れる。例えば、正規化に基づいてピクセル・ヒストグラム(pixel histogram)
を特定する規則が実行されてもよく、又はピクセルのガウス分散(Gaussian dis
tribution)を特定する規則、又はある任意の強度クリッピングで、あるいはそ
れなしで、出力強度を線形にスケールする規則が実行されてもよい。ここに示さ
れた様々なマッピング機能は、コンピュータ・グラフィックス及びデジタル画像
処理分野において公知である多くの入力/出力ピクセル強度変換の単なる例であ
る。
【0150】 このアプローチは、ライティング、オブジェクトの色、等を特定するにあたり
、いくらか大きな余地も許し、及び可視であった最終出力をレンダリングする。
最終結果が、審美的に完璧でなかったとしても、それは最終マッピングをチュー
ニングするための基礎を供給し、及び対話型調整が、好ましいが任意に、デバッ
ギング(debugging)、ファイン・チューニング(fine-tuning)、又はセットア
ップ・オペレーション(set-up operation)として供給されてもよい。 3.2.18 スタンプ・ベースz値記述 VSPが送られる時、それは単一のプリミティブに対応し、及びzバッファー
ド・ブレンド(すなわちピクセル・ブロック)は、VSPにおけるすべてのサン
プルに関する個別のz値を必要とする。VSP内のすべてのパー・サンプルz値
を送ることに対する改良として(それは、かなりの帯域幅を取る)、前記VSP
は、z参照値及びx並びにyに関してzの部分的導関数(数学的には、プリミテ
ィブのz値に関する平面方程式)を含みうる。それから、この情報は、パー・サ
ンプルz値を再構築するために、zバッファード・ブレンド(すなわちピクセル
・ブロック)において使用され、それによって帯域幅を省く。CHSR処理のた
めに計算されたz値が、zバッファード・ブレンド(すなわちピクセル・ブロッ
ク)におけるコンピュータと同じになるように、注意が払われなければならない
のは、不一致がレンダリング・エラーを生じうるからである。
【0151】 好ましい実施形態において、スタンプ・ベースz値記述方法は、カル・ブロッ
クにおいて実行され、及びパー・サンプルz値は、ピクセル・ブロックにおける
この記述から生成される。 3.2.19 フォン・ブロックにおけるオブジェクト・ベース・プロセッサ・
リソース・アロケーション(Object-based Processor Resource Allocation) フォン・ライティング・ブロックは、効果的に、複数のプロセッサ又は処理エ
レメントを含む。フラグメント色生成の間、多くの状態が必要とされ、共通オブ
ジェクトからのフラグメントは、同じ状態を使用し、それゆえに、好ましくは、
キャッシング要求を最小化する少なくとも効率的な理由から、同じオブジェクト
からのフラグメントは、同じプロセッサによって処理される。
【0152】 本発明の構造及び方法において、同じオブジェクトから由来するすべてのフラ
グメントは、同じプロセッサに送信される(又は、同じ複数のプロセッサにロー
ドするサーバがある場合)。これは、フォン・ブロックにおける状態キャッシン
グを低減させる。
【0153】 本発明の構造及び方法の好ましい実施形態は、パー・タイル処理を実行し、及
び単一の時間は、複数のオブジェクトを含んでもよいことを想起させる。フォン
・ブロック・キャッシュは、それゆえに、通常は一つ以上のオブジェクトに関す
る状態を記憶し、及び適切な状態を、共通オブジェクトからのフラグメントを扱
っているプロセッサに送信する。特定のオブジェクトからのフラグメントに関す
る状態が、特定のプロセッサに送信されると、前記オブジェクトからのすべての
他のフラグメントも、前記プロセッサに向けられるのが好ましい。
【0154】 これに関して、モード・インジェクション装置(Mode Injection Unit)(M
IJ)は、オブジェクト又は素材を割り当て、及びMIJは、すべてのダウン・
ストリーム・ブロック(down stream blocks)にキャッシュを割り当てる。フォ
ン装置は、どのオブジェクト・データが、どのフォン装置プロセッサにキャッシ
ュされたかを追跡し、及び同じオブジェクトに属するすべてのフラグメントを、
同じプロセッサに注ぎ込むよう試みる。これに関する唯一の任意の例外は、局所
的不均衡がある場合に生じ、その場合、フラグメントは他のプロセッサに割り当
てられるであろう。
【0155】 このオブジェクト・タグ・ベースのリソース割り当て(代替的には、前記記述
のほかの部分において、素材・タグ・ベースのリソース割り当てを指す)は、フ
ォン装置において、フラグメント・プロセッサ又はフラグメント・エンジンと相
対して生じる。 3.2.20 パイプライン状態としてのダイナミック・マイクロコード生成 フォン装置は、テクスチャ環境計算を実行し、及びオブジェクトからのフラグ
メントを処理するための特定の処理エレメントを選択することを担当する。上述
のとおり、共通オブジェクトからのフラグメントを、同じフォン・プロセッサ又
はエンジンに向けるための試みがなされる。適用されるべき特定のテクスチャ、
面、色等のプロパティから独立して、多くの選択肢があり、その結果として処理
環境における変化がある。ダイナミック・マイクロコード生成(dynamic microc
ode generation)は、テクスチャ環境及びライティングに関連して説明され、本
発明の構造及びプロシージャは、他の種類のマイクロコード、マシン状態、及び
処理に、通常、より幅広く適用されてもよい。
【0156】 本発明の構造及び方法において、三角形ストリップの処理が開始されるたびに
、変更素材パラメータが生じ、又はテクスチャ環境に触れるほとんどの変更が生
じ、フォン装置におけるマイクロコード・エンジンは、マイクロコードを生成し
、及びこのマイクロコードは、パイプライン状態のコンポーネントとして扱われ
る。状態のマイクロコード・コンポーネントは、他のパイプライン状態と同様に
、キャッシュされる属性である。通常、マシン状態として、特定的には3Dグラ
フィックス・プロセッサにおけるパイプライン状態として、この方法で生成され
るマイクロコードの扱いが、実質的な効果である。
【0157】 例えば、フォン装置は、複数のプロセッサ又はフラグメント・エンジンを含む
。(ここでは、フラグメント・エンジンという用語は、フラグメントのテクスチ
ャ処理を担うフォン装置におけるコンポーネントを意味し、フラグメント・ブロ
ックにおいて生じる補間とは異なる処理である。)マイクロコードは、フラグメ
ント・エンジンに入ってくる、及び同じマイクロコード(状態)を必要とするあ
らゆる他のフラグメントが、必要な時にそれを有するように、フラグメント・エ
ンジンにダウンロードされる。
【0158】 フォン・ブロックにおけるフラグメント・エンジンの各々の実施形態は、一般
的に同じであるが、ダウンロード可能なマイクロコードの存在は、ある程度の専
門化を与える。異なるマイクロコードは、どのようにMIJキャッシング・メカ
ニズムが動作するのかに依存する各々に、ダウンロードされてもよい。ダイナミ
ックなマイクロコード生成は、テクスチャ環境及びライティングに供給される。
3.2.21 可変スケール・バンプ・マップ(Variable Scale Bump Maps) 可変スケール・バンプ・マップを生成することは、二つの個別のプロシージャ
:自動ベース生成及び自動勾配フィールド生成のうちの一つ又は両方に関与する
。グレイ・スケール画像及びその強度空間におけるデリバティブ(derivative)
を検討する。自動勾配フィールドは、グレイ・スケール強度と比較して、グレイ
・スケール画像のデリバティブを取り、及び前記デリバティブを、バンプ・マッ
プのためのバンプを生成するための面法線摂動として使用する。自動ベース生成
は、計算、ポリゴン・メモリにおけるメモリ記憶、及び処理における入力帯域幅
を省く。
【0159】 各三角形バーテックスに関して、s、t及び面法線が特定される。しかし、前
記s及びtは、色付きではなく、テクスチャ・マップへの2次元面法線摂動であ
り、それゆえにテクスチャ・バンプ・マップである。前記s及びtは、使用可能
なバンプ・マップを生成するために、面法線を摂動させるべき方向を特定するた
めに使用される。前記s、tは、摂動方向を特定することができる暗示された座
標システム及び参照を与える。各ピクセルにおけるs、t座標システムの使用は
、面接線及びピクセル場所(location)における従法線を特定する必要をなくす
。その結果、本発明の構造及び方法は、計算、メモリ記憶、及び入力帯域幅を省
く。 3.2.22 タイル・バッファ及びピクセル・バッファ 一組のパー・ピクセル・タイル・ステージング・バッファ(tile staging buf
fer)は、PixelOutとBKEブロックとの間に存在する。これらのバッ
ファの各々は、三つの状態ビットEmpty、BkeDoneForPix、及
びそれと関連するPixcDoneForBkeを有する。これらのビットは、
これらのバッファの使用のために、PixelOutとBackendとの間の
ハンドシェイク(handshake)を規制(又はシミュレート)する。バックエンド
及びPixelOut装置の両方は、前記装置がそこから読み取り又はそこに書
き込むステージング・バッファを示す現在のInputBuffer及びOut
putBufferポインタを維持する。
【0160】 PIXによるレンダリングするためのタイルを準備するために、BKEブロッ
クは、次のEmptyバッファを取り、及びフレーム・バッファ・メモリからデ
ータを読み込む(必要な場合には、RGBAClearMask、 DepthMask、及びStencilMaskによって決定されたとおり−
一組のビット・プレーンがクリアされない場合、それは読み込まれる)。 Backendがタイルにおける読み取りを伴ってなされた後、それは BkeDoneForPixビットを設定する。PixelOutは、 InputTileのBkeDoneForPixビットを見る。このビットが
設定されない場合、PixelOutは停止し、そうでなければ、それは BkeDoneForPixビット、及びピクセル・タイル・バッファにおける
色、深度、及び/又はステンシル・ビット・プレーン(必要であれば)をクリア
し、及びそれをサンプル・バッファに適切に転送する。
【0161】 出力時、PixelOut装置は、レンダリングされたタイルにおけるサンプ
ルを、ピクセル・タイル・バッファにおけるピクセルに分解する。バックエンド
装置(BKE)ブロックは、これらのバッファを、フレーム・バッファ・メモリ
に転送する。ピクセル・バッファは、PixelOut装置によって順番にトラ
バース(traverse)される。PixelOutは、レンダリングされたサンプル
・タイルを、それが由来する同じピクセル・バッファに放出する。前記ピクセル
・タイル・バッファに出力された前記タイルが完了した後、 PixelOut装置は、PixDoneForBkeビットを設定する。 BKEブロックは、PixDoneForBkeセットを有するピクセル・タイ
ル・バッファを取ることができ、前記ビットをクリアし、及びそれをフレーム・
バッファ・メモリに転送する。前記転送が完了した後、エンプティ(Empty)・
ビットが、前記バッファ上で設定される。 3.2.23 スキャンアウト中のウィンドウド・ピクセル・ズーミング(Wind
owed Pixel Zooming During Scanout) バックエンド装置は、データの送信を担い、及び/又はCRTあるいは他の表
示装置に信号を送信し、及び前記デジタル情報を、前記ディスプレイを駆動する
のに適したアナログ信号に変換するためのデジタル−アナログ(D/A)コンバ
ータを含む。前記バックエンドはまた、バイリニア・インターポレータ(biline
ar interpolator)も含むので、前記フレーム・バッファからのピクセルは、そ
れらがCRTディスプレイに送信される時に、前記ピクセルの空間的スケールを
変更するために、補間されうる。スキャンアウト中のピクセル・ズーミングは、
稼動中に解像をスケールし又はズーム(イン又はアウト)するレンダリングを伴
わない。一つの実施形態において、ピクセル・ズーミングは、ウィンドウごとに
選択的に実行され、ウィンドウは、全体のデスクトップ又はディスプレイ領域の
一部である。 3.2.24 スキャンアウト中の仮想ブロック転送(VBLT) 従来の構造及び方法は、オン・スクリーン(on-screen)メモリ記憶装置及び
オフ・スクリーン(off-screen)メモリ記憶装置を供給し、その各々は例えば、
色バッファ、zバッファ、及びあるステンシルを有する。3Dレンダリング処理
は、これらのオフ・スクリーン・バッファにレンダリングする。一つのスクリー
ン・メモリは、ディスプレイ上に示されるデータに対応する。オフ・スクリーン
・メモリへの前記レンダリングが完了した時、オフ・スクリーン・メモリの内容
は、ブロック転送(BLT)と称されるものにおいて、オン・スクリーン・メモ
リにコピーされる。
【0162】 メモリ帯域幅を省き、及び本明細書の他の部分で説明された他の利益を理解す
るために、本発明の構造及び方法は、データを接合し、又は他の場所からデータ
を読み取ることによって、「仮想」ブロック転送又は仮想BLTを実行する。 3.2.25 バーテックス・リストに関するトークン挿入(Token Insertion
for Vertex Lists) 本明細書におけるトークンは、パイプラインに送り込まれ、次のエントリが何
に対応するかを前記パイプラインに知らせる他の項目の間に介在した情報項目で
ある。例えば、バーテックスのx、y、z座標が、パイプラインに送り込まれ、
及びそれらが32ビットの量である場合、前記トークンは、前記パイプラインに
、次の数字がバーテックスx、y、z値であることを知らせるために挿入される
のは、識別のためのエントリそのものには、余分なビットがないからである。前
記トークンは、パイプライン・ハードウェアに、送り込まれているデータをどの
ように解釈するかを知らせる。 (発明の最良の実施形態) 4. システム・レベル概観 パイプラインは、ホスト・コンピュータのI/Oバスからデータを取り、それ
を処理し、及びそれをコンピュータのディスプレイに送信する。パイプラインは
、12のブロック、さらに三つのメモリ・ストア及びフレーム・バッファに分割
される。図15は、パイプライン1000を通るデータの流れを示す。パイプラ
インを作るブロックは、後述される。 4.1 コマンド・フェッチ及びデコード(Command Fetch and Decode)(CF
D) コマンド・フェッチ及びデコード(CFD)2000は、I/Oバスを通した
ホスト・コンピュータとの通信を扱う。それは、その入力を一連のパケットに変
換し、それをジオメトリ・ブロックに渡す。入力ストリームのほとんどは、幾何
学的データ―線、点、及びポリゴンを含む。これら幾何学的なオブジェクトの記
述は、色、面法線、テクスチャ座標等を含みうる。入力ストリームはまた、ライ
ティング、ブレンディング・モード、及びバッファ機能等のレンダリング情報も
含む。 4.2 ジオメトリ(GEO) ジオメトリブロック3000は、4つの主なタスク、すなわち:変換、すべて
のポリゴンの、三角形への分解、クリッピング及びグロー・シェーディングに必
要なパー・バーテックス・ライティング計算を扱う。
【0163】 第一に、ジオメトリ・ブロックは、入力グラフィックス・プリミティブを、統
一座標空間(「ワールド空間」)に変換する。それは、プリミティブをビューイ
ング・ボリューム、又は錘台にクリッピングする。ビューイング・ボリューム(
左、右、上、下、前及び後ろ)を定義する6面に加えて、DSGPパイプライン
は、6のユーザ定義可能クリッピング面を供給する。クリッピング後、ジオメト
リ・ブロックは、三つ以上のバーテックスを有するポリゴンを、処理を簡潔にす
るために、三角形の組に分割する。
【0164】 最後に、フレームにグロー・シェーディングがある場合、ジオメトリ・ブロッ
クは、グラグメント・ブロックが、シェーディングを実行するために使用するバ
ーテックス色を計算する。 4.3 モード・エクストラクション(MEX) モード・エクストラクション・ブロック4000は、データ・ストリームを二
つの部分、:1)バーテックス、及び2)他のすべてに分離する。バーテックス
は、ソート・ブロックに送られる。「他のすべて」―ライト、色、テクスチャ座
標等―は、ポリゴン・メモリと呼ばれる特別なバッファに記憶され、モード・イ
ンジェクション・ブロックによって検索することができる。ポリゴン・メモリは
、二重バッファされるので、モード・インジェクション・ブロックは、ひとつの
フレームに関してデータを読み取ることができるのに対して、モード・エクスト
ラクション・ブロックは、次のフレームに関してデータを記憶している。ポリゴ
ン・メモリに記憶されたモード・データは、3つの主なカテゴリ:パー・フレー
ム・データ(ライティング等)、パー・プリミティブ・データ(素材属性等)、
及びパー・バーテックス・データ(色等)に分類される。モード・エクストラク
ション及びモード・インジェクション・ブロックはさらに、効率性を最適化する
ために、これらのカテゴリを分割する。
【0165】 各バーテックスに関して、モード・エクストラクション・ブロックは、バーテ
ックス・データを含むパケットであるSortブロック、及びポリゴン・メモリ
へのポインタを送る。(前記ポインタは、色ポインタと称され、やや誤解を招き
やすい。なぜならば、それは色以外のすべての種類の他の情報を検索するために
使用されるからである。)前記パケットはまた、前記バーテックスが点か、線の
端点か、又は三角形の角を表すのかを示すフィールドも含む。前記バーテックス
は、厳格な時間順に送られ、それはそれらがパイプラインに送り込まれたのと同
じ順番である。前記パケットはまた、現在のバーテックスが、一定のプリミティ
ブにおける最後の一つを形成するのかを特定する(すなわちプリミティブを「完
成させる」)。三角形ストリップ又はファン、及び線ストリップ又はループの場
合、前記バーテックスは、隣接するプリミティブの間で共有される。この場合、
前記パケットは、各プリミティブにおける他のバーテックスをどのように識別す
るかを示す。 4.4 ソート(SRT) ソート・ブロック6000は、モード・エクストラクション・ブロックからバ
ーテックスを受け取り、及びその結果の点、線及び三角形を、タイルでソートす
る。二重バッファされたソート・メモリ7000において、それはグラフィック
・プリミティブを表すバーテックスのリストと、及び一組のタイル・ポインタ・
リスト―フレームにおける各タイルに一つのリストを維持する。それが、(三角
形における第三のバーテックス等)プリミティブを完成させるバーテックスを受
け取る時、どのタイルに前記プリミティブが触れるかを見るために調べる。プリ
ミティブが触れる各タイルに関して、ソート・ブロックは、前記バーテックスへ
のポインタを、前記タイルのタイル・ポインタ・リストに加える。
【0166】 ソート・ブロックが、フレームにおけるすべてのジオメトリのソートを完了し
た時、それはデータをセットアップに送る。各ソート・ブロック出力パケットは
、完全なプリミティブを表す。ソートは、その出力をタイルごとのオーダで送る
:一定のタイルに触れるすべてのプリミティブ、それから、次のタイルに触れる
すべてのプリミティブ、等である。これは、ソートが、それが触れる各タイルに
つき一回、同じプリミティブを何回も送ることを意味することが注目される。 4.5 セットアップ(STP) セットアップ・ブロック8000は、線及び三角形に関する空間的微分を計算
する。それは、1タイル分の価値を有するデータ、一度に1プリミティブを処理
する。それが一つのプリミティブで完了される時、それは前記データをカル・ブ
ロックに送る。セットアップ・ブロックはまた、点線を個別の線セグメントに分
解し(各々は、長方形領域である)、及びタイル内における各プリミティブに関
して最小z値を計算する。セットアップからの各プリミティブ・パケット出力は
、一つのプリミティブを表す:三角形、線セグメント又は点である。 4.6 カル(CUL) カル・ブロック9000は、より複雑なブロックの一つであり、及び処理は2
つのステップに分割される:マグニチュード比較コンテント・アドレッサブル・
メモリ(MCCAM)カル、及びサブピクセル・カルである。カル・ブロックは
、1タイル分の価値を有するデータを一度に受け取る。MCCAMカルは、以前
に処理されたジオメトリによって完全に隠されたプリミティブを廃棄する。サブ
ピクセル・カルは、(一部又は全体が可視である)残りのプリミティブを取り、
及び可視フラグメントを決定する。サブピクセル・カルは、可視スタンプ・ポー
ション(Visible Stamp Portion)(VSP)と呼ばれる、1スタンプ分の価値
を有するフラグメントを一度に出力する。図16は、カル・ブロックが、部分的
に不明瞭にされた三角形からどのようにフラグメントを生成するかの一例を示す
【0167】 カル・ブロックによって生成される可視スタンプ・ポーションは、複数のプリ
ミティブが前記スタンプに触れる場合であっても、たった一つのプリミティブか
らのフラグメントを含む。それゆえに、ダイアグラムにおいて、出力VSPは、
灰色の三角形のみからのフラグメントを含む。白い三角形の先端によって形成さ
れるフラグメントは、個別のVSPで送られ、及び前記二つのVSPの色は、ピ
クセル・ブロックにおいて、後に結合される。
【0168】 一つのVSPにおける各ピクセルは、ピクセルのうち、どれだけが一定のフラ
グメントによって覆われるかを決定するために、多くのサンプルに分割される。
ピクセル・ブロックは、前記ピクセルに関する最終の色を生成するために、フラ
グメントをブレンドする時、この情報を使用する。 4.7 モード・インジェクション(MIJ) モード・インジェクション・ブロック10000は、―色、素材属性等―モー
ド情報を、ポリゴン・メモリ5000から検索し、及びそれを要求のとおりに下
に送る。帯域幅を省くために、個別のダウンストリーム・ブロックは、最近使用
されたモード情報をキャッシュする。モード・インジェクション・ブロックは、
どの情報がダウンストリームにキャッシュされるのかを追跡し、必要な情報のみ
を送る。 4.8 フラグメント(FRG) フラグメント・ブロック11000は、その主な仕事が補間であるため、やや
誤解を招きやすい名前である。それは、グロー・シェーディングのための色値、
フォン・シェーディングのための面法線及びテクスチャ・マッピングのためのテ
クスチャ座標を補間する。それはまた、バンプ・マップが使用される場合、バン
プ・マッピング・アルゴリズムでの使用のために、面接線を補間する。
【0169】 フラグメント・ブロックは、重心係数を使用して、透視的な修正された補間を
実行する。 4.9 テクスチャ(TEX) テクスチャ・ブロック12000は、テクスチャ・マップを、ピクセル・フラ
グメントに適用する。テクスチャ・マップは、テクスチャ・メモリ13000に
記憶される。上述された他のメモリ記憶とは異なり、テクスチャ・メモリは単一
にバッファされる。それは、ホスト・コンピュータのメモリから、AGPインタ
ーフェースを使用してロードされる。単一のポリゴンは、4つまでのテクスチャ
を使用することができる。
【0170】 テクスチャは、ミップ・マップ(mip-mapped)される。すなわち、各テクスチ
ャは、様々なレベルのディテール(detail)において、一連のテクスチャ・マッ
プを具備し、各マップは、アイ・ポイント(eye point)から一定の距離におけ
る、テクスチャの外観を表す。一定のピクセル・フラグメントに関するテクスチ
ャ値を生成するために、テクスチャ・ブロックは、正しいレベルのディテールに
近似するように、テクスチャ・マップからトリリニア補間(tri-linear interpo
lation)を実行する。テクスチャ・ブロックはまた、異方向補間等、他の補間方
法も実行する。
【0171】 テクスチャ・ブロックは、補間されたテクスチャ値を(一般的にはRGBA色
値として)、パー・フラグメント・ベースでフォン・ブロックに供給する。バン
プ・マップは、特別な種類のテクスチャ・マップを表す。色の代わりに、バンプ
・マップの各テクセル(texel)は、高さフィールド勾配を含む。 4.10 フォン(PHG) フォン・ブロック14000は、各ピクセル・フラグメントに関するフォン・
シェーディングを実行する。それは、フラグメントの外観の色を決定するために
、モード・インジェクション・ブロックによって供給される素材及びライティン
グ情報、テクスチャ・ブロックからのテクスチャ色、及びフラグメント・ブロッ
クによって生成される面法線を使用する。バンプ・マッピングが使用される場合
、フォン・ブロックは、シェーディングの前に、フラグメントの面法線を摂動さ
せるために、テクスチャ・ブロックからの補間された高さフィールド勾配を使用
する。 4.11 ピクセル(PIX) ピクセル・ブロック15000は、VSPを受け取り、各フラグメントは個別
の色値を有する。ピクセル・ブロックは、ピクセル・オーナシップ・テスト、シ
ザー・テスト、アルファ・テスト、ステンシル・オペレーション、深度テスト、
ブレンディング、ディザリング及び論理オペレーションを、各ピクセルにおける
各サンプル上で実行する(OpenGL仕様書1.1、セクション4.1、「パ
ー・フラグメント・オペレーション(Per-Fragment Operations)」、109ペ
ージ参照)。ピクセル・ブロックが、1タイル分の価値を有する処理されたピク
セルを蓄積した時、それは、各ピクセル内のサンプルをブレンドし(それによっ
て、ピクセルのアンチエイリアシングを実行する)、及び、フレームバッファに
記憶されるべきそれらをバックエンドに送る。
【0172】 図17は、ピクセル・ブロックがどのように1スタンプ分の価値を有するフラ
グメントを処理するかを説明する。この例において、ピクセル・ブロックは、灰
色の三角形から一つ、及び白い三角形から一つ、二つのVSPを受け取る。それ
は、最終ピクセルを生成するために、フラグメントとバックグラウンド(backgr
ound)をブレンドする。それは、前記ピクセルのどれくらいをそれが覆うかに従
って、―より正確には、それが覆うサンプルの数によって、各フラグメントに加
重する。
【0173】 このブレンディングに加えて、ピクセル処理ブロックは、ステンシル・テスト
、アルファ・ブレンディング、及びピクセルのアンチエイリアシングを実行する
。それが、1タイル分の価値を有する、処理されたピクセルを蓄積する時、フレ
ームバッファに記憶されるべきそれらを、バックエンドに送る。 4.12 バックエンド(BKE) バックエンド16000は、1タイル分の価値を有するピクセルを、一度に、
ピクセル・ブロックから受け取り、それらをフレームバッファ17000に記憶
する。特定のフレームバッファ値は、フレームからフレームへと残存することが
できるので、バックエンドはまた、1タイル分の価値を有するピクセルを、ピク
セルブロックに戻す。例えば、ステンシル・ビット値は、多くのフレームに対し
て一定でありうるが、すべてのフレームにおいて使用されうる。
【0174】 フレームバッファを制御することに加えて、バックエンドは、2D描画を実行
し、及び処理されたフレームを出力装置に送る。それは、フレームバッファとコ
ンピュータ・モニタ及びビデオ出力との間でインターフェースを供給する。 4.13 パイプラインにおけるブロック間の通信 本発明の構造及び方法は、パイプラインの機能的ブロックの間の、パケット化
された通信のために供給される。これらのパケットの性質は、セクション3にお
けるオペレーションのより早い説明と同様に、個別の機能的ブロック・セクショ
ンにおいて説明される。 5 システムブロックの詳細な説明 5.1バスインタフェースブロック(AGI) AGIブロックは、ホストメモリーまたはCPUにデータを送受信するために
AGP及び/またはPCI規格に定められた全ての機能を提供する役割を担う。
本ブロックは、AGPバスと残りのチップ間の非同期境界を完全に内包していな
ければならない。AGIブロックは、PIOによるコマンドの素早い転送を可能
にするために、AGP2.0内のオプションのFast Write機能を利用する。AG
Iブロックは、CFD上のRead/Write Controller、DMAController、及びInterr
upt Control レジスタに接続されている。 5.2 コマンド取り出し及び復号化ブロック(CFD) 概要 CFDブロックは、AGPインタフェースと実際に絵を描くハードウェアとの
間に位置するユニットである。多くの制御及びデータ転送ユニットがあるが、そ
れらはほとんどまたは全く演算を行わない。CFDブロックの主な仕事は、他の
ブロックへのデータのルーティングである。2D、3D、バックエンド、及びRi
ng用のコマンド及びテクスチャは、AGPバスを通り、フロントエンドによりそ
れらを使用するユニットにルーティングされる。CFDは、いくつかのコマンド
を復号化及びアンパッキングし、AGPインタフェースを管理し、DMA転送に関
与し、コンテキストスイッチの状態を保持する。本CDFは、DSGPシステム
の最も小さな、かつ最も重要な構成品の一つである。
【0175】 図18は、CDFブロック2000内の主な機能ユニットを示すパイプライン
のブロック図である。DSGPグラフィックスシステムのフロントエンドは、A
GIブロック及びCFDブロックの二つのサブユニットに分けられている。残り
の部分は、CFDブロックのアーキテクチャの描写に関与する。AGIを参照す
るが、それらの参照は、AGIと関連のあるCFDの文脈に含まれる。 サブブロックの説明 Read/Write Control AGIがAGPまたはPCIの読み出し/書き込みトランザクションを完了す
ると、次にRead/Write Control 2014にデータを送る。書き込みの場合、本機能
ユニットは、受信したアドレスを使用してレジスタまたはその物理アドレスに対
応するキュー内にデータを多重化する(詳細はAddress Spaceを参照)。読み出
しの場合、読み出しトランザクションを完了させるために、デコーダが適切なレ
ジスタからAGIブロックへとデータを多重化する。
【0176】 Read/Write Controlは、CFDアドレススペース内の全ての可視レジスタに対し
て読み出しまたは書き込みが可能であり、2Dまたは3D Command キュー 2022、2
026に書き込みが可能であり、バックエンド・インプット・バス2036を通じて読
み出し及び書き込みの転送が可能である。
【0177】 Read/Wrote Decoderが読み出し専用レジスタまたは存在しないレジスタに対し
て書き込みを受信した場合、アクセス違反割り込みのトリガー要求を行う割り込
み発生器2016に対してメッセージを送信しなければならない。本デコーダの上記
書き込みに対する責任は消滅するが、読み出し及び書き込みは継続して受け付け
なければならない。
【0178】 Read/Write Decoderが書き込み専用レジスタまたは存在しないレジスタに対し
て読み出しを受信した場合、すぐにその読み出しトランザクションをキャンセル
しなければならない。次に、本デコーダは、Interrupt Generatorにメッセージ
を送信してアクセス違反割り込みの生成を要求する。本デコーダの上記読み出し
に対する責任は消滅するが、読み出し及び書き込みは継続して受け付けなければ
ならない。 2D Command キュー DSGPグラフィックスハードウェア用のコマンドは、種々の潜在機能を持ってお
り、ホストからバーストモードで送られて来るため、AGIと2D間で数キロバイト
のバッファリングが必要になる。本バッファは、3D用のコマンドバッファと比
較して数分の一の大きさである。このサイズは、AGIを通じてのコマンド送信速
度と2Dによる性能モードのコマンド実行の差を埋めるものでなければならない
【0179】 本キューは、オーバーランを防止する目的でフロー制御される。2D高水位レ
ジスタは、キューへの許容エントリ数がホストによってプログラミングされてい
る。このエントリ数が満たされるか超過すると、2D高水位割り込みが発生する
。ホストがこの割り込みを受け取ると、すぐに高水位割り込みを無効化し、低水
位割り込みを有効化する。キューにおけるエントリ数が2D低水位マークレジス
タ内のそれよりも少ない場合、低水位割り込みが発生する。高水位割り込みを受
信してから低水位を受信するまでの間は、ドライバーはほぼ満杯のコマンドバッ
ファへの書き込みを防止する役割を果たす。 3D コマンドキュー AGI と3D Command Decode 2034間においても数キロバイトのバッファリングが
必要になる。このサイズは、AGIを通じてのコマンド送信速度とGEOブロックによ
る性能モードのコマンド実行速度の差を埋めるものでなければならない。
【0180】 本キューは、オーバーランを防止する目的でフロー制御される。3D高水位レ
ジスタは、キューへの許容エントリ数がホストによってプログラミングされてい
る。このエントリ数が満たされるか超過すると、3D高水位割り込みが発生する
。ホストがこの割り込みを受け取ると、すぐに高水位割り込みを無効化し、低水
位割り込みを有効化する。キューにおけるエントリ数が3D低水位マークレジス
タ内のそれよりも少ない場合、低水位割り込みが発生する。高水位割り込みを受
信してから低水位割り込みを受信するまでの間は、ドライバーはほぼ満杯のコマ
ンドバッファへの書き込みを防止する役割を果たす。 3D Command Decode コマンドデコーダ2034は、3D Cmd キュー 2026 及び3D Response キュー
2028からのコマンドを読み込み、翻訳し、再フォーマットされたパケットとして
GEOブロックへの送信の役割を果たす。デコーダは、GEOブロックへのコマンド送
信またはコマンドによる変化状態のシャドーイングに先立って「急速」コマンド
に対するデータ変換を行う。3D Command Decodeは、フォーマット変換も可能で
なければならない。入力データフォーマットは、APIが許容する全てのフォーマ
ットを含む(一般的には、C言語及び他のプログラミング言語内で許容されたフ
ォーマット)。3D Command Decodeからの出力フォーマットは、ハードウェアが
処理可能なものに限られ、概ね浮動小数点または「カラー」フォーマットである
。カラーデータフォーマットの正確なビット定義は、カラーがパイプラインの残
りの部分を通じてどのように表現されるかにかかっている。 Command Decode は、 3D Command キューからのパワーアップ読み込み時に開
始する。DMAコマンドが検出された場合、コマンドデコーダは、コマンド及びデ
ータをDMAコントローラ2018に送信する。DMAコントローラは、3D応答キュ
ー内に要求されたデータの転送を開始する。次に、3D Command Decoderは、応答
キュー内のデータを正常コマンドストリームとして解釈しながら3D Response キ
ュー からのDMAコマンド内に指定されたバイト数を読み出す。本デコーダがDMA
コマンド内に指定されたバイト数の読み出しを終えると、正規のコマンドキュー
からの読み出しに戻る。3D Response キュー からの読み出しの間、全てのDMAコ
マンドは無効コマンドと想定される。
【0181】 本3Dコマンドデコーダは、無効コマンド検索の役割を果たす。あらゆる無効
コマンドの実行結果は、Invalid Command Interruptの発生に繋がる(詳細は In
terrupt Control参照)。
【0182】 3D Command Decode は、キュー内で頂点コマンドが検索された場合は、頂点パ
ケットの送信に必要な最新状態ベクターも解釈し、保存する。本デコーダはまた
、現在の「開始」(OpenGL規約参照)内の最後3つの完成された頂点及びそれらに
伴う状態を、最後に送信されてきた「開始」と同様に記憶する。コンテキスト変
換が起きた場合、3D Command Decodeは、ホストが後でコンテキストを再開する
ことにより「パイプを再準備」できるようにこれらシャドーイングされた値を読
み出せるようにする。 DMA コントローラ CFD DMA コントローラ2018は、DSGPカードへのまたは同カードからの全て
のDMAトランザクションを開始及び維持する役割を負う。DSGPは、常にあら
ゆるDMA転送のマスターであり、DMAコントローラをスレーブとして使用する必要
はない。2D Engine および3D Command DecodeがDMA コントローラのマスターの
座を競う。2DブロックのみがDMA書き込み開始が可能であるが、DMA書き込み及
びDMA読み出しの双方がサポートされている。DSGPは、常にDMAのマスターで
ある。
【0183】 DMA転送は次のように開始される。開始場所の物理アドレスを伴うDMAコマンド
及び転送バイト数が2Dまたは3Dコマンドキューに書き込まれる。本コマンド
が3D Command Decoderまたは2Dユニットにより読み出されると、データを伴う
DMA要求がDMA Controllerに送信される。2DによるDMA書き込みの場合、2Dユ
ニットがデータをWrite To Host キュー 2020に入れ始める。DMAコントローラが
先行のDMAを終えると、DMA要求を承認してデータ転送を開始する。上記DMAがDMA
書き込みである場合、コントローラは、Write To Host キューからAGIを通じ
てシステムメモリへまたはBackend Input バスを通じてフレームバッファへデー
タを送信する。DMAがDMA読み出しである場合、コントローラは、AGIを通じて
システムメモリからまたはBackend Outputバス2038を通じてバックエンドから2D
Responseキューまたは3D Responseキューへとデータを引き込む。コントローラ
が必要バイト数を転送し終えると、DMA要求を開放して要求を出したユニットが
そのCommandキューから次のコマンドを読み出せるようにする。
【0184】 AGP Logic の性能を最大限引き出せるように、DMA コントローラは、転送残量
が(Mximizing AGP Performance白書に勧告されているように) キャッシュ行よ
りも少なくなるまで非キャッシュ行整列された読み出し/書き込みを実行して(
必要ならば)トランザクションを開始し、その後キャッシュ行転送を行う。 2D Responseキュー 2D Responseキューは、2Dブロックにより開始されたDMA読み出しからのデー
タの貯蔵部である。DMA要求が送信された後は、2D Engineは 2D Response キュ
ーからの読み出し動作を行い、2D Command キュー内のコマンド同様に読み出し
た内容を扱う。制約は、DMAコマンドが応答キューに来た場合に無効コマンドと
して扱うことだけである。応答キューから現DMAコマンド内に指定されたバイト
数を読み出した後は、2D Engineは2D Commandキューからのコマンド読み出しに
戻る。 5.2.2.7 D Responseキュー 3D Responseキューは、3D Command Decodeにより開始されたDMA読み出しから
のデータの貯蔵部である。DMA要求が送信された後は、Command Decodeは3D Resp
onseキューからの読み出し動作を行い、3D Command キュー内のコマンド同様に
読み出した内容を扱う。制約は、DMAコマンドが応答キューに来た場合に無効コ
マンドとして扱うことだけである。応答キューから現DMAコマンド内に指定され
たバイト数を読み出した後は、3D Command Decodeは3D Command キューからのコ
マンド読み出しに戻る。 5.2.2.8 Write To Hostキュー ホストへの書き込みキューは、2DがDMAを通じてホストに書き込むデータを
含む。2Dは、システムメモリへのDMA転送を要求した後でホストキューをリン
グまたはBackendからのデータで満たす。この小さなバッファを持つことにより
、DMAエンジンはデータを移動するAGPの性能を最大限に引き出すことができ
る。 5.2.2.9 割り込みジェネレータ ホストとDSGPボード間の通信の最も重要な部分は割り込みによって実行さ
れる。一般に割り込みは、まれに起こる現象、および通常の動作に対する例外を
示すために使用される。ホストに対してレジスタの読み込みを許可し、生成する
割り込みの原因となる割り込みの決定を許可する2つのCauseレジスタがボード
上にある。Causeレジスタの内の一つは、リトレースのような専用割り込み用に
リザーブされ、他はカーネルにより位置付けされる一般的割り込み用レジスタで
ある。各レジスタ用に、ホストがレジスタにアクセスするために読み込む物理ア
ドレスが2つある。最初のアドレスはポーリング用であり、Interrupt Cause レ
ジスタ内のデータには影響しない。2つめのアドレスは割り込みのサービス用で
あり、読み込んだ割り込みを個別的にクリアする。次にホストは、オンの場合に
読み込みが返却する割り込みの全てをサービスする役割を負う。各Interrupt Ca
useレジスタ用に、Cause内のビットが0 p 1変換をした場合に割り込みを発生さ
せるか否かを決定するInterrupt Maskレジスタがある。
【0185】 DSGPは64個までの異なる割り込みの原因をサポートするが、その内の少
数は固定であり、他の少数は一般的原因である。下表に各原因の簡潔な説明を示
す。 5.2.2.9.1 リトレース リトレース割り込みは、1秒間に約85回から120回発生し、モニターの垂
直空白期間内の所定のポイントにおいてBackendハードウェアにより立ち上がる
。正確なタイミングは、Backend Input Bus上のレジスタの書き込み動作を通じ
てBackendユニット内へとプログラミングされる。 5.2.2.9.2 3D FIFO高水位 3D FIFO高水位割り込みは、パイプが性能モードで走行している場合はまれに
しか起きないが、3Dパイプラインがより低い性能で走行している場合は頻繁に
起こることがある。カーネルモードのドライバーは、3D Cmd Buffer内の許容エ
ントリ数を示す3D High Water Entriesレジスタをプログラミングする。バッフ
ァ内にある以上のエントリがある場合は、高水位割り込みがトリガーされる。次
にカーネルモードドライバーは、割り込みをフィールディングし、3Dバッファ
をオーバーフローさせないように書き込みを防止しなければならない。割り込み
ハンドラ内では、カーネルが高水位マークの下までパイプが一杯になっているか
をチェックする。一杯になっていない場合には、カーネルは高水位割り込みを無
効化し、低水位割り込みを有効化する。 5.2.2.9.3 3D FIFO低水位 3D FIFO低水位割り込みが有効化されると、3D FIFO内のエントリ数が 3D Low
Water Entriesレジスタ内よりも少ない場合に割り込みが発生する。本割り込み
は、3D FIFOが十分にクリアされているために安全であり、 プログラムによる3D
FIFOへの再書き込みが可能であることをカーネルに信号にて知らせる。
【0186】 5.2.2.9.4 2D FIFO高水位 2D FIFOの監視をするという点を除いては、この割り込みは3D FIFO高水位割り
込みと完全に一致している。2D FIFO高水位割り込みは、パイプが性能モードで
走行している場合はまれにしか起きないが、2Dパイプラインがより低い性能で
走行している場合は頻繁に起きることがある。カーネルモードドライバーは、2D
Cmd Buffer内で許容されているエントリ数を示す 2D High Water Entriesレジ
スタをプログラミングする。バッファ内にここに示す以上のエントリがある場合
は、高水位割り込みがトリガーされる。次にカーネルモードドライバーは、割り
込みをフィールディングし、2Dバッファをオーバーフローさせないように書き
込みを防止しなければならない。割り込みハンドラ内では、カーネルが高水位マ
ークの下までパイプが一杯になっているかチェックする。一杯になっていない場
合は、カーネルは高水位割り込みを無効化し、低水位割り込みを有効化する。 5.2.2.9.5 2D FIFO低水位 2D FIFO低水位割り込みが有効化されると、2D FIFO内のエントリ数が 2D Low
Water Entriesレジスタ内のそれよりも少ない場合に割り込みが発生する。 本割
り込みは、2D FIFOが十分にクリアされて安全であり、プログラムによる2D FIFO
への再書き込みが可能であることをカーネルに信号にて知らせる。 5.2.2.9.6 アクセス違反 存在しないレジスタに対して書き込みまたは読み出しが行われると本割り込み
がトリガーされる。 5.2.2.9.7 Invalidコマンド FIFO内にてゴミのコマンドが検索(可能ならば)された場合、またはユーザプ
ログラムにより特権コマンドがFIFO内に書き込まれた場合にこの割り込みがトリ
ガーされる。カーネルは本割り込みをフィールディングし、有害タスクを停止し
なければならない。 5.2.2.9.8 テクスチャミス 本割り込みは、テクスチャユニットがテクスチャメモリにロードされていない
テクスチャにアクセスを試みた場合に発生する。テクスチャユニットは、リング
を通じてInterrupt Causeレジスタにテクスチャ書き込みを送信し、Texture Mis
s IDレジスタに対してリング書き込みと共に本書き込みを行う。カーネルは本割
り込みをフィールディングし、どのテクスチャが失われているかを見極めるため
にTexture Miss IDレジスタを読み出し、テクスチャDMAをセットアップしてテク
スチャをダウンロード及びテクスチャTLBを更新し、その後本割り込みをクリア
する。
【0187】 5.2.2.9.9 一般的割り込み Interrupt Causeレジスタ内の他の割り込みは、一般的割り込みである。一般
的割り込みは、その割り込み番号をオンにする割り込みジェネレータに対して完
了時にメッセージを送信するコマンドを送信するソフトウェアによりトリガーさ
れる。これら割り込みは、全て2Dまたは3Dパイプラインから来てBackendユニ
ットの底部まで達する与えられたコマンドにより発生する。Backendは、専用線
を通して Interrupt Cause レジスタ(同じチップ上に存在するために、リング
の使用はオーバーキルとなる)に書き込みを送信する。 5.2 Geometry ブロック(GEO) 5.3.1 グラフィカルパイプラインポジション GEOブロックは、グラフィカルパイプラインのフロントエンドにおける最初の
演算ユニットである。本ブロックは、主に頂点座標及び法線の変形のような頂点
ごとの動作に関係する。Frontend(例:AGI及びCFDブロック)は、Graphics Har
dwareコマンドの取り出し及び復号化に関係する。Frontendは、必要な変形行列
、マテリアル、ライトパラメータ、及び他のモード設定をGEOブロックの入力レ
ジスタにロードする。GEOブロックは、変形された頂点座標、法線、生成された
及び/または変形されたテクスチャ座標、及び頂点ごとのカラーをMode Extracti
on及びSortブロックに送信する。Mode Extractionは、「カラー」データ及びモ
ードをPolygonメモリに保存する。Sortは、Tileによる頂点ごとの「空間」デー
タを構成し、それをSortメモリに書き込む。
【0188】 5.3.2 動作モード パイプラインは、その機能の、あるサブセットが使用されている場合のみ最大
性能モードで動作する。このモードでは、GEOブロックは各プリミテフィブに対
する全ての可能な動作のサブセットのみを遂行する。より多くの機能が有効な場
合、一連のさらに低い性能モードを通じてパイプラインが動作する。Geometryエ
ンジンは、非性能モード設定に対してより低い速度で原線を処理するために使用
可能な演算要素を再使用する。下記の各節に各性能モードへの機能の配置を示す
。 5.3.3 GEOブロックの機能概要 GEOブロックは、点、線、三角形、四辺形、および多角形などの形状寸法の原
線を定義する頂点上で動作する。本ブロックは、座標変形及びGouraudシェーデ
ィング動作を各頂点あたりに行う。Primitive Assemblyフェーズ中においてのみ
、本ブロックは頂点を線や三角形にグルーピングする(本ブロックは、プロセス
中において四辺形や多角形を三角形のセットへと分解する)。本ブロックは、各
原線に対して切り落とし及び表面タンジェントの生成を実行する。
【0189】 頂点座標変形 各頂点は、目標座標(Xo、Yo、Zo、Wo)のセットにより規定される。第4の座
標を追加することにより、頂点を同次の座標で表すことが可能になる。同次シス
テム内では、回転、拡大縮小、及び解釈を含む一連の変形を組み合わせてModel-
View行列と呼ばれる単一の変形行列にすることができる。頂点目標座標は、4×
4Model-View行列を掛けることにより頂点目視座標に変形することが可能である
: (Xe,Ye,Ze,We)T=MMV*(Xo,Yo,Zo,Wo)T 投影行列と呼ばれる他の行列が、クリップ座標を生じるために目視座標に適用
される。標準デバイス座標を生じるために、透視画法分割がクリップ座標上で行
われる。これらの座標をウィンドウ座標に変換するために、最終視点変形が適用
される。 (Xc,Yc、Zc,Wc)T=Mp*(Xe,Ye,Ze,We)T (Xd,Yd,Zd)T=(Xc,Yc,Zc,T/Wc) (Xw,Yw,Zw)T=(Xd,Yd,Zd)T、(Sx,Sy,Sz)T+(Ox,Oy,Oz)T フル性能モードでは、パイプラインは目視座標を保存する必要はない。従って
、パイプラインは組み合わせ行列を使用して頂点目標座標をクリップ座標に変形
する。 (Xc,Yc,Zc,Wc)T=MMVP*(Xo,Yo,Zo,Wo)T 図19にDSGPによる頂点座標の変換をまとめる。 5.3.3.2 ノーマル、タンジェント、及びバイノーマル評価 空間座標に加えて、GEOブロックは、現ノーマル、現テクスチャ座標、及び各
頂点に対する現カラーを持つことがある。ノーマルは、ライティング演算に影響
する。現ノーマルは、3次元ベクトルである(Nxo,Nyo,Nzo)。テクスチャ座標
によりテクスチャイメージの原線上の配置が決定される。
【0190】 GEOブロックは、目標座標内に表されるノーマルを受信する。本ブロックは、
逆Model-View行列を使用してノーマルを目視座標に変形する。 (Nxe,Nye,Nze)T=MMVI*(Nxo,Nyo,Nzo)T Mmvから取られた左端の3×3行列を逆転すると行列Mmviが形成される。GEOブ
ロックは、ノーマルを変形し、その後それらをユニット長に再規格化する。 (Nxu,Nyu,Nzu)T=(Nxe,Nye、Nze)T*(1/SQRT(Nxe2+Nye2+Nze2)) 突き当て配置の場合、ユーザが[表面]タンジェント及びバイノーマルの2つま
での追加的ベクトルを提供する場合がある。GEOブロックは、ノーマルを実行す
る時にこれらベクトルを変形し、再正規化する。これらベクトルがユーザによっ
て供給されない場合は、本ブロックが生成することもできる。GEOブロックは、
テクスチャ座標及び頂点目視座標を使用してタンジェント生成し、ノーマル及び
タンジェントの交互積によりバイノーマルを生成する。
【0191】 GEOブロックは、突き当て配置に必要なタンジェント及びバイノーマルを半分
の速度で生産する。
【0192】 図20にDSGPによるノーマル、タンジェント、及びバイノーマルの変換をまと
める。図21にGeometryブロック(GEO)の概要を示す。図22は、本発明の構造
の3チップ実施例内半導体チップ上の機能ブロック間の関係を示す概略図である
。 5.3.3.3 頂点カラー ライティングが無効化された場合、頂点カラーは現カラーにより決定される。
ライティングが有効化された場合、GEOブロックは頂点ノーマル、ライティング
及び素材パラメータを使用して頂点カラーを評価する。オプションとして、現カ
ラーから素材カラーを派生させることも可能である。カラーは、R、G、B、及びA
の4つの値または単一のカラーインデックス値として指定される。カラーは、GE
Oブロック内での使用に先立ってCFDにより浮動小数点番号に変換される。頂点ラ
イティング評価の最後に、結果のカラーが、0.0から1.0の(これらの数値を含む
)範囲を表す8ビット固定小数点へとクランプバックされる。 5.3.3.4 テクスチャ座標処理 テクスチャ座標は、ユーザによる提供に代わって、頂点座標またはノーマルを
使用して生成することも可能である。オプションとして、変換行列をテクスチャ
座標に適用することもできる。テクスチャ座標は、s、t、r、及びqという名
の同次座標を使用して指定される。変換行列は、4×4行列である。性能のケー
スでは、結果のqは1であり、rは無視され、s及びtはテクスチャマップへの
アクセスに使用される。低下させた性能では、qが透視図スケーリング用にテク
スチャ座標の分割に使用される。テクスチャ座標rは、3次元テクスチャ及び影
に使用される。GEOブロック内では、8セットまでのテクスチャ座標がサポート
される。2つのテクスチャ座標が変換でき、半分の性能での変換が可能である。
5つのテクスチャ座標がフル性能の3分の1にて取り扱える。最後に、8つのテ
クスチャ座標の全てが4分の1の性能で生成及び変換できる。
【0193】 クリッピング GEOブロックは、頂点クリップ座標をクリップ平面により生成されたアウトコ
ードと比較する。本ブロックは、これらアウトコードを使用して視点ボリューム
の外にある原線をリジェクトする(例えば、原線内の全ての頂点が最上クリッピ
ング平面の上にある場合、原線はリジェクトされる)。幾つかの原線は、たとえ
完全に視点ボリュームの外にあったとしても、明らかにリジェクトすることはで
きない。アウトコードにより原線が完全に視点ボリュームの内側にあり、いかな
るクリッピング平面にも交わっていないことを示している場合、この原線は受け
付けられ、これ以上のクリッピング演算は必要なくなる。
【0194】 明らかに受け付けまたはリジェクトされない原線は、視点ボリュームに対して
クリッピングされ、クリッピング平面と交わっているエッジをアウトコードが示
しているクリッピング平面をユーザが定義する。原線の1つの頂点がクリッピン
グされると、GEOブロックは1つ以上の新しい頂点を生成しなければならない。G
EOブロックは、これら新しい頂点に対して「カラー」データを書き入れをしない
。これら頂点は、オリジナルの原線の頂点から「カラー」データを共用する。こ
の処理は、最後のカラー頂点により指定された同じ三角形から生成されるクリッ
ピングされた頂点に対して、Mode Extractで同じカラーポインタを割り付けるこ
とにより行われる。
【0195】 現頂点及び前回の頂点のウィンドウ座標を使用して多角形の表面方向が決定さ
れ、オプションとして裏面の選別も行う。
【0196】 ライティング フルライティングモードでは、2つのライトに対してライティング動作が無限
にローカルビューワー及びスポットライトなしで行われる。
【0197】 Gouraudシェ−ディングの場合、各頂点に対して2つのカラーセットが評価さ
れる。プライマリーカラーは、スポットライトにより減衰、強調されたカラーの
Ambient、Emissive、及びDiffuseコンポーネントを含む。本カラーは、Red、Gre
en、Blue、及びAlphaコンポーネント(RGBA)を持つ。全てのライト及び現素材
設定はプライマリーカラーに資する。セカンダリーカラーは、頂点ライティング
のSpecularコンポーネントに対応する。本カラーは、R、G、及びBコンポーネン
トを持つ。本カラーも距離により減衰され、スポットライト効果を包含する。個
別のSpecularカラーモード設定がオンになっていない場合は、プライマリーカラ
ーはSpecularコンポーネントも含み、セカンダリーカラーはクリアされる(R=0
、G=0、B=0)。
【0198】 Fragmentブロックは、プライマリー及びセカンダリーカラーに個別にデータを
挿入する。プライマリーカラーは、最終ピクセルカラー決定のための与えられた
フラグメントに対するセカンダリーカラーの適用に先立ってテクスチャカラーと
混合される。
【0199】 Phongシェ−ディングの場合、GEOブロックは何も余分な仕事をしない。DSGPパ
イプラインは、Phong及びGouraudシェ−ディングの双方を個別のライトのために
同時にサポートする。この処理は、Gouraudを使用してライトの総数を大幅に増
加させ、最大8つのPhongライトを使用するライティングの質も大幅に向上させ
る。Phongは、カラー素材用の「現」カラーとしてGEOブロックのプライマリー及
びセカンダリーカラー出力を使用する。 5.4 Mode Extraction Block (MEX) Mode Injection (MIJ)ブロックと連携したMode Extraction Block (MEX)は、
グラフィックス状態に関連する情報を管理する役割を負う。従来のグラフィック
スパイプライン内では、状態変化は増加傾向にある。すなわち、状態パラメータ
の値は変化するまで効果を保ち続ける。従って、アプリケーションは変化したパ
ラメータを更新するだけでよい。さらに、描画はリニア的である。すなわち、原
線は受信したオーダー中に描画される。点、線、三角形の細片、三角形の扇形、
多角形、四角形及び四辺形の細片はグラフィック原線の例である。これにより、
原線用の空間情報を受信するまでは状態変化は蓄積され、上記原線の描画中はこ
れら蓄積された状態は有効である。
【0200】 DSGPパイプライン中では、隠れた表面が取り除かれるまで描画が続けられる。
Geometry(GEO)ブロックは、正しい順序で原線を受信し、全ての頂点動作を行
い(変形、頂点ライティング、クリッピング、及び原線組み立て)、パイプライン
を通してデータを送信する。Sortブロックは、時間指定データを受信し、そのデ
ータが接触するタイルにより貯蔵する。(各タイル内部のリストはタイムオーダ
ーになっている。)CULブロックは、SRTブロックからタイル順にデータを受信し
、描画された画像には絶対に寄与することのない原線のパーツを選別する。CUL
ブロックは、VSPを生成する。VSPは、スタンプ上の多角形の可視部分に対応する
。TEX及びPHGユニットは、VSPを受信し、それぞれフラグメントのテクスチャリ
ング及びライティングの役割を負う。Pixelブロックなどの最後のブロックは、
最終的な絵を生成するためにVSP及びフラグメントのカラーを消費する。
【0201】 原線は、多くのタイルに接触するため、従来の描画パイプラインと違い、フレ
ーム描画の最中にしばしば問い合せられる(原線がタイルに接触するたびに)。
パイプラインは、原線がパイプラインを入力した時に有効なグラフィックス状態
を記憶し、SRTから下りてくるパイプラインステージの訪問を受けるたびに想起
しなければならない。MEXは、GeometryとSortブロック間に位置し、暫定的に順
序付けられた状態変化データを収集及び保存する論理ブロックであり、原線が描
画された時に、その原線と正しい状態を対応付けるために原線頂点に適切なポイ
ンタを付け加える。Mode Injection(MIJ)ブロックは、必要に応じて、状態及
び状態ポインタ(本書中ではMLMポインタと総称されている)を持つ必要な他の
情報を検索する役割を負う。本ブロックは、適宜情報を再パッケージングする役
割も負っている。再パッケージングは、例えば多角形メモリ内の頂点データが検
索され、フラグメント用の三角形入力パケットにまとめられた時に発生する。
【0202】 我々は、最初に操作理論及びDSGP状態管理の背景にある一般原則について論じ
る。その後我々は、MEXブロック及びMEXブロックへのインタフェースについて論
じる。我々は、種々の状態ポインタを伴うデータが如何にしてRDRAM内で編成さ
れるかを説明する。我々は、MEXが必要とする再パッケージング及び処理の全て
について論じる。MEX入力及び出力パケットの計数及びメモリサイズ、帯域幅解
析などの簡潔な論説が後に続く。 5.4.1 状態管理 グラフィックス状態は描画された原線の出現に影響する。DSGPパイプラインの
個別のパーツはそれぞれ異なる状態情報を使用する。ここでは、我々はGEOブロ
ックからのパイプラインステージの下流のみについて述べている。DSGPは、グラ
フィックス状態を、上記状態情報がどのように種々のパイプラインステージによ
って使用されるかに基づき、幾つかのカテゴリーへと分ける。状態の適切な分割
は非常に重要である。この分割には、性能に対する影響(帯域幅やアクセスの制
限により)、チップサイズに対する影響(より大きなキャッシュ及び/または論
理の複雑化)及びピンカウントに対する影響がある。 5.4.1.1 モード抽出ブロック機能 MEXブロックは、下記の処理に対する役割を負う。 1. Geometryからのデータパケットの受信。 2. それらデータパケット上に必要な全ての処理の実行。 3. パイプラインのシェ−ディング部分に必要な情報のPolygonメモリへのセ
ーブ(後のMIJによる検索用)。 4. Sortユニットに送信される原線に対して状態ポインタを付け加えることに
よりMIJをして同原線の状態を知らしめる。 5. Sort、Setup、及びCullが必要とする情報のSortブロックへの送信。 6. 多角形及びソートメモリオーバーフローの扱い。
【0203】 図23にMEXデータフローの他のViewを示す。
【0204】 Polygonメモリにセーブされた状態は、Fragment、Texture、Phong、及びPixel
ブロックなどのMIJからのブロックの下流で使用されるものである。この状態は
、本書の他の個所に説明されているように分割される。 5.4.1.2 モードインジェクションブロック MIJは下記の処理に対する役割を負う。 1. BeginFrame、EndFrame、及びBeginTileなどの種々の制御パケットのFragm
ent及びPixelユニットへのルーティング。 2. CULブロックから受信した各VSPに対する状態付加。 3. 多角形メモリからからのパケットの検索。 4. 原線の構築。多角形メモリは頂点あたりのデータを保存する。VSPの原線
の種別によって、MIJは、多角形メモリから必要な頂点(三角形用に3つ、線用
に2つ、及びポイント原線用に1つ)を検索する。 5. Color、TexA、TexB、Light、Material、PixelMode、及びStippleキャッシ
ュの内容トラックの維持及び各キャッシュミスデータパケットに対する適切なキ
ャッシュポインタの付加。 6. フラグメント及びピクセルブロックに対するデータ送信。 7. パイプライン内の処理中断。
【0205】 モードインジェクションは、このようにして状態検索及びVSP内の各フラグメ
ント用の最終カラーの演算に必要な頂点あたりのデータに関与する。 5.4.1.3 グラフィックス状態分割 DSGPは、グラフィックス状態を複数のパーツに分割する。それらパーツの数を
これより7つと想定する。これらパーツは、各原線に対して保存される頂点あた
りの情報の付加的な情報である。本節は、状態情報の概要を説明する。 5.4.1.3.1 Sort、Setup、及びCullが必要とする状態及び空間データ 本情報は、Sort、Setup、及びCullブロックが必要とする状態情報である。本
情報はPolygonメモリにはセーブされない。本情報は、CullModesパケット、Vert
exModesパケット、及びSpatialパケットの3つのパケットとして受信される。こ
れらパケットは、SRTブロックに対して予定され、Geometryユニットから送信さ
れてくる。選別パケット内の情報には、CULブロックが必要とする目的線画バッ
ファ及び制御ビットが含まれる。
【0206】 VertexModesパケットには、Sortブロックに送信される前回の各空間パケット
にMEXにより付加されるホストコンピュータが生成するモード情報(例:ソフト
ウェア)が含まれる。VertexModesパケットには、線幅、点サイズ、線点描情報
、及び深度テスト動作制御ビットが含まれる。
【0207】 Spatialパケットは、頂点のウィンドウ座標及び原線用の点描パターンなどの
他のGeometryブロックにより生成された頂点あたりの情報を含む。Spatialパケ
ットは、頂点のウィンドウ座標、多角形の曲がり、多角形の扇形及び細片内の頂
点再使用、エッジフラグ、及び混合動作制御ビット(アルファテストおよびアル
ファ混合など)を含む。頂点モードはソフトウェアにより生成される。
【0208】 Geometryブロックは、ソフトウェアより選別モード及び頂点モードを受信する
。本ブロックは、上記のように選別及び頂点モードをMEXに送信する。MEXは、頂
点モードを空間パケットに付加することによりソート用の空間パケットを構築す
る。MEXブロックはまた、状態MLMポインタをSortブロック上に渡す前に本パケッ
トに付加する。さらに、原線は同時に点と線にはなれないために、MEXブロック
は線幅及び点幅パラメータを一つのパラメータに構成しなおす。本ブロックは、
Sort原線タイプを使用して原線が点か線か多角形かを決定する。原線が点の場合
、本ブロックはSortに点幅を送信し、他の場合は線幅を送信する。他のフィール
ドはそのままである。 5.4.1.3.2 テクスチャパラメータ テクスチャリングには、特に複数のテクスチャが含まれる場合は、多数のパラ
メータがあるため、多数のテクスチャパケットを持つ方が有利である。これより
、2つのテクスチャパケット(TexA及びTexBと呼ばれる)があるものとするが、
これらは追加パケットに分割可能とする。テクスチャパラメータパケットは、テ
クセルの検索及びフィルタリングに必要な情報を含む。本書は、8つの使用可能
なテクスチャが各頂点に割り付けられているものと仮定している。TexAパラメー
タパケットは、最初の2つのテクスチャ用のパラメータを含み、TexBパラメータ
パケットは、6つまでの追加テクスチャ用に同様の情報(テクスチャあたりの)
を含む。この非対称パーティションが選択されるのは、ほとんどの場合、同時に
活性なテクスチャは1つか2つだけだからである。まれなケースでは、2つより
多いテクスチャが使用されることもある。本処理は、チップ上のテクスチャパラ
メータキャッシュのサイズを維持するのに役立つ。TexA及びTexBパケットは、Ge
ometryユニットから受信する。テクスチャあたりの情報は、テクスチャID,テク
スチャ次元数(例:1D、2D、3D)、テクスチャサイズ(例:幅、高さ、及び奥行
き)、テクスチャボーダー情報、テクスチャフォーマット、テクスチャフィルタ
ー制御ビット、テクスチャラッピング制御ビット、テクスチャクランピング制御
ビット、詳細制御ビットのレベル、及びテクスチャ比較動作制御ビットを含む。
【0209】 再び、TexAパケットは、これらエントリの内の1つか2つを含み、TexBパケッ
トは、6つまでのエントリを持つことができる。TexA及びTexBパケットはソフト
ウェアにより生成され、GEOブロックを通じてMEXに送信される。MEXは、TexA及
びTexBを2つの状態パーティションとして管理し、Polygonメモリにセーブする
。各TexA及びTexB状態パーティションは、それ自体に付加されるポインタを持つ
。Mode Injectionブロックは、後に必要となるこれらのパケットを検索する。Ge
ometryブロックは、本情報を全く使用しない。
【0210】 テクスチャID、その(s、t、r)座標、及びミップマップレベルが与えられ
ると、Textureブロックは、テクセルの検索、必要に応じたテクセルデータのア
ンパッキング及びフィルタリングの役割を負う。Fragmentブロックは、テクスチ
ャモード情報同様にテクスチャID、s、t、r、及びミップレベルをTextureブ
ロックに送信する。Fragmentからのs、t、r、及びミップレベルが浮動小数点
値であることに注意する。各テクスチャ用には、TEXブロックがPHGに1つの36
ビットテクセル値を出力する。テクスチャブロックは、フラグメントとテクスチ
ャカラーとを結合しない。これはPhongブロックにおいて行われる。テクスチャ
ブロックは、テクスチャパラメータ及びテクスチャ座標を必要とする。テクスチ
ャパラメータは、Textureブロック内の2つのテクスチャパラメータキャッシュ
から得られる。Fragmentブロックは、ミップレベル演算でテクスチャ幅及び高さ
パラメータを使用する。Fragmentは、TextureDimensionフィールドを使用してテ
クスチャ次元が有効か(0はテクスチャが無効であることを示す)及びTexCoord
Setを使用して座標セットを付加可能かを決定する。 5.4.1.3.3. ライティングパラメータ 状態の「ライティング」パーティションは、フォグパラメータなどのフラグメ
ントのライティングに影響を与える大域状態同様にフラグメントライティングの
演算に使用される複数のライト(これより、本書では最大8つのライトを想定す
る)を含む。ライトキャッシュパケットは、次のライトあたりの情報を含む。ラ
イトタイプ、減衰定数、スポットライトパラメータ、ライト位置情報、及びライ
トカラー情報(周辺、拡散、及び反射カラーを含む)。ライトキャッシュパケッ
トは、次の大域ライティング情報も含む、すなわち大域周辺ライティング、フォ
グパラメータ、及び使用ライト数である。
【0211】 ライトキャッシュエントリは約300バイトである(大域ライトモードの8つ
の内の各ライトプラス120ビット用の約300ビット)。LightCacheパケット
は、ソフトウェアにより生成され、GEOブロックを通じてMEXに送信される。MEX
は、LightCacheパケットを状態パーティションの一つとして管理し、必要ならば
Polygonメモリにセーブする。LightCache状態パーティションはそれ自体に付加
されるポインタを持っている。Mode Injectionブロックは、後に必要となるため
に、上記パケットを多角形メモリから検索する。Geometryブロックは本情報は全
く使用しない。
【0212】 ライティング状態のキャッシングの代替法として、ライティング状態全体をキ
ャッシングする代わりにライトごとのキャッシュエントリが使用できる。本処理
により、ライトパラメータキャッシュミスがある場合にパイプラインを通じて送
信されるデータの量を減らすことができる。このように、単一のライトを変更す
る場合に、応用プログラムがライティングパラメータの「軽量」スイッチングを
提供する。しかしながら、本処理は、ライティング状態の管理をより複雑にする
ことになる。 5.4.1.3.4 フラグメント素材パラメータ グラフィックス状態の素材パーティションは、フラグメントライティング演算
に関連する全ての情報を含む。フラグメント素材状態は原線の頂点に付加されて
いる素材状態とは異なることに注意する。フラグメント素材状態情報は、GEOブ
ロック内で実行される頂点ライティング演算中には使用されない。本パケットは
、テクスチャ有効化制御ビット(活性テクスチャの選択)、テクスチャ環境パラ
メータ、素材カラーパラメータ(放出、周辺、拡散、反射カラー、および輝度)
、輝度カットオフ値、およびカラー素材パラメータを含む。
【0213】 8つのテクスチャが存在可能なので、各フラグメント用に8つまでのテクセル
がTEXからPHGに受信可能である。テクセルは、素材状態パケット内のテクスチャ
エントリと同様の順序で受信される。 5.4.1.3.5 ピクセルモード ピクセルモードは、PIXブロック内のフラグメントごとの動作に影響する。ソ
フトウェアはピクセルモードパケットを作成し、作成されたパケットはGEOを通
じてMEXに送信される。MEXは、Polygonメモリに本パケットをセーブする。MIJは
本パケットを検索し、PIXブロックに送信する。ピクセルモードは、フレームバ
ッファ書き込みマスク(深度、カラー、及びステンシルマスク)、混合操作、深
度関数、ステンシル関数、及びはさみ動作などの情報を含む。
【0214】 本パケット内の幾つかの情報は、SRT用に準備されたVertexModes内に含まれる
情報と同様であることに注意する。ソフトウェアは、種々のモードパケット内で
必要となる状態情報の二重化の役割を負う。 5.4.1.3.6 点描 点描パケットは、多角形点描パターンを指定する。点描パターンは、あまり頻
繁には使用されず、使用される場合にも頻繁には変更されないため、分割してキ
ャッシングした方が効率的である。本パケットは多数のバイトにより構成されて
いる(32×32ビットパターンに必要なため、128バイトが普通である)た
め、他のパラメータキャッシュに入れると、それに伴うパケットに大きな追加オ
ーバーヘッドを加えることになる。 5.4.1.3.7 Fragument-Texture-Phongブロック用の頂点ごとのデータ 各VSPでは、Fragmentブロックが供給された頂点ごとのデータを改ざんし、Fra
gmentブロックからのブロック下流に必要な情報を生成する。改ざんされたパラ
メータは、VSPに付加された状態ポインタによっては、使用可能なパラメータの
内の幾つかまたは全てで構成されることがある。パラメータ数の変動を考慮して
、Polygonメモリに保存されているパケットサイズは、特定の頂点に対して使用
されるパラメータの数及びタイプにより可変である。これらパラメータは、原線
タイプ、多角形扇形及び細片構築のための頂点再使用、非クリッピング頂点x、
y、及び1/w値、頂点目視座標(Xeye、Yeye、Zeye)、逆透視項、頂点プライ
マリ及びセカンダリカラー、頂点ノーマルベクトル、タンジェントベクトル、バ
イノーマルベクトル、および8セットまでのテクスチャ座標を含む。ノーマル、
タンジェント、及びバイノーマルベクトルは、それぞれ単一ベクトルまたはユニ
ットベクトル(例:ベクトルの方向)及び対応する大きさとして表すことができ
る。
【0215】 非クリッピング頂点x、y、及び1/w値は、改ざんされた原線パラメータ(
カラー、ノーマル、テクスチャ座標など)が原線のオリジナルの頂点パラメータ
から生成できるために、原線が表示画面にクリッピングされている場合でも、特
別に有用である。これにより、原線がクリッピングされていると、全ての原線を
画面上にとどめておくために新たな頂点が作成される。本処理は通常、高価な動
作セットであるこれらの新たな(表示画面端に沿った)頂点位置において頂点パ
ラメータの改ざんを必要とする。これらクリッピングされ、生成された頂点にお
けるパラメータの改ざんは、Sortメモリにクリッピング値(例:x、y、及びz
値)を保存し、Polygonメモリに非クリッピング頂点パラメータを保存すること
によって防ぐことができる。このようにして、Sortメモリ内の原線とPolygonメ
モリ内の原線間の対応が多数対1になる。本処理は、Polygonメモリ内の演算及
び保存スペースの双方を節約する。
【0216】 ノーマル、タンジェント、及びバイノーマルベクトルを方向及び大きさに分け
ることは、方向に対する改ざんが大きさから離れて平易にできるようになる。大
きさとは別の方向に対する改ざんは、特に大きな係数によりオリジナルのベクト
ル(例:頂点におけるベクトル)の大きさが変化する場合に、より正しい角度の
改ざんを提供する。
【0217】 Geoブロックは、多角形メモリに保存する頂点ごとの情報を生成する。MIJブロ
ックは、VSPを含む原線を再構築するのに必要なデータ及び頂点を多角形メモリ
から検索する役割を負う。
【0218】 三角形頂点テクスチャ座標は、テクスチャユニットではなく、フラグメントユ
ニットに送信されることに注意する。テクスチャユニットは、各フラグメントに
対して改ざんされ、透視図が修正されたテクスチャ座標をフラグメントブロック
から受信する。 5.4.2 MEXブロックの機能詳細 5.4.2.1 MEXブロックの機能概要 MEXの完遂に必要なこと及びその方法を理解するために、図24に示す例を考
える。
【0219】 MEXはGEOから一連のパケットを順番に受信する。各原線の場合、MEXは最初に
関連状態パケットを受信し、その後形状寸法パケットを受信する。(カラー頂点
情報をソート頂点情報の前に受信する。)ソート頂点データは、クリッピングさ
れたウィンドウ座標などの原線のソート及び選別に必要な情報で構成される。Vt
xModeパケットは、深度テストに関する情報等を含む。CullMode、VtxMode、及び
ソート頂点パケット内の情報がパイプラインのSort-Setup-Cullパートに送信さ
れる。「カラー」頂点データは、頂点目視座標、頂点ノーマル、テクスチャノー
マル等の原線フラグメントのライティング及びテクスチャリングに必要な情報を
含み、後で検索できるように多角形メモリにセーブされる。
【0220】 パイプラインのSort-Setup-Cullパートは、原線をVSPに変換する。これらVSP
は次に、パイプラインのFragment-Texture-Phongパートによりテクスチャリング
及びライティングされる。ほとんどの場合、これらVSPは、タイル上のVSPスキャ
ンオーダーにあり、例えば異なる原線用のVSPがインタリーブされることがある
。明確には、パイプラインのFragment-Texture-Phongパートは、特定のVSPがど
の原線に所属しているか及びその原線が最初に導入されたときのグラフィックス
の状態の双方を知る必要がある。MEXは、「カラーポインタ」を各Sort Vertex(
後に本原線内の各VSP上に渡される)に付加する。MIJは、ポインタを復号化し、
Polygonメモリから必要な情報を検索する。
【0221】 このように、MEXは最後の状態セーブ以後に起きた状態変化を蓄積する。状態
変化は、頂点が来るとすぐに有効になる。MEXは、チップ上に状態ベクトルを保
持する。本状態ベクトルは、図25に示す通り10個のパーティションを持つ。
MEXは、状態ベクトルを保存するためにチップ上のメモリに1170バイト近く
を必要とする。
【0222】 VertexModesは、MEX内のレジスタに保持され、パイプラインのSort-Setup-Cul
lパート上に渡される頂点に付加される。CullModesは、Mex2SrtCullModePkt同様
にSortに送信される。MEXは、状態ベクトル内の各パーティション用にダーティ
ビット及びポインタを(多角形メモリに)保持する。このように、選別モードは
多角形メモリにセーブされず、それゆえポインタを必要としないために、10個
のダーティビットと9個のモードポインタがある。MEXがGeoブロックから状態パ
ーティションに対応する入力パケットを受信するたびに、状態ベクトル内の上記
パーティションを更新する。MEXは上記パーティションに対応するダーティビッ
トも設定する。MEXがカラー頂点を受信すると、最後に状態がセーブされた時か
らその状態のいずれの部分が更新されているかを見るためにダーティビットを検
査する。更新され、現原線のレンダリングに関連する状態パーティションは全て
多角形メモリにセーブされ、そのポインタが更新される。それらパーティション
のダーティビットもクリアされる。ダーティビットは、多角形メモリにセーブさ
れた原線に対してのみクリアされることに注意する。TextureA、TextureB、及び
Materialのいずれが多角形メモリにセーブされるかは原線の「表面」およびダー
ティビットにかかっている。図26に本理論の概要が図解されている。
【0223】 MEXは、適用可能なTextureA、TextureB、Material、Light、Stipple、及びPix
elModeが最後にセーブされた場所へのポインタを含むMLMポインタと呼ばれる複
合カラーポインタを構築する。本ポインタは、Sortブロック上に渡される頂点に
付加される。
【0224】 Clearパケットも同様に渡されることに注目する。クリアパケットを受信する
と、MEXはSendToPixelフラグを検査する。SendToPixelフラグが設定されると、M
EXはPixelModesが汚れているかを確認する。ダーティPixelModeビットが設定さ
れると、MEXは、PixModesを多角形メモリにセーブし、PixModePtrを更新し、ダ
ーティPixModeビットをクリアし、新たなMLMポインタを作成し、本ポインタをク
リアパケットに付加した後にSortブロック上に渡す。 5.4.2.2 入力パケット処理 Geometryブロックからの各入力パケット用のMode Extractionブロック内の処
置を図に示す。本発明者らは、「メッシュ」という語を状態内の変化に続く点の
連続を示すのに使用している。「メッシュ」は、上記のように点、線の細片、線
の区分、または三角形のリストまたは扇形である。 多角形メモリ管理 多角形メモリは、二重八進数の直線行列として見られる。原線データは、メモ
リの山の最上部から満たされ、モードデータは最下部から満たされる。本メモリ
への全ての書き込みは144ビットワード(または1つの二重八進数)である。
図24に示す例の場合、多角形メモリのレイアウトは図27に幾分類似している
【0225】 注意すべき点を下記に示す。 1.状態ベクトルのパーティションは、多角形メモリにゆっくりとセーブされる
。我々は、必要としているものだけをセーブする。 2.状態ベクトルには省略時のリセットはない。全ての状態が適切に初期化され
ているかは、ドライバ/ソフトウェアの役割である。 3.メッシュ内の全ての頂点は同じサイズである。 4.カラーオフセットは8ビットであり、それゆえメッシュ内の最大頂点数は2
56である。 5.MEXは、原線を完成するために必要な現VertexPointer、VertexCount及び(
最大で)2つの前回の頂点を保持する。MEXはmodePointerも保持する。
【0226】 VertexPointerは、多角形メモリ内の現頂点エントリに対するポインタである
。VertexCountは、最後の状態変化から多角形メモリにセーブされた頂点の数で
ある。VertexCountは、ColorOffsetに割り付けられる。VertexPointerはSort原
線用のcolorPointerに割り付けられる。前回の頂点は、メモリオーバーフローの
処理で使用される。MIJは、colorPointer、ColorOffset、及び頂点サイズ情報(
Geoから受信したColorType内に暗号化されている)を使用して、多角形メモリか
らMLMポインタ及び原線頂点を検索する。 5.4.2.3.1 メモリ二重バッファリング及びオーバーフロー Polygonメモリは、まれにオーバーフローすることがある。単一のユーザフレ
ームが過度な情報を持つとPolygonメモリ及び/またはSortメモリがオーバーフロ
ーする。オーバーフロー点は、Polygonメモリのサイズ、フレーム内のマテリア
ル、モード、テクスチャ、及びライト変化の頻度、及び使用されている原線の特
徴による。メモリが一杯になると、全ての原線がパイプへと洗い流され、これと
は別にPolygonメモリバッファが一杯になるとユーザフレームが終わる。Sortメ
モリのオーバーフローは、同じオーバーフローメカニズムのトリガーとなること
に注意する。PolygonメモリとSortメモリバッファは常に一致していなければな
らない。1つのメモリ内のオーバーフローに起因する他のメモリ内のスキッドは
バックアウトされなければならない(または、回避する方が良い)。このようにし
て、MEX内では、オーバーフローに起因するフレーム破壊は、Sortからの信号ま
たはMEX自身の中のメモリオーバーフローに起因するSortメモリのオーバーフロ
ーに繋がることがある。MEX内のSortメモリオーバーフロー信号はMEX多角形メモ
リ自身のオーバーフロー同様に処理される。
【0227】 多角形メモリのオーバーフローは非常に高くつくということに注意する。多角
形メモリは、Sortメモリ同様に二重バッファとなっている。そのため、MIJがバ
ッファから読み出しを実行している間にMEXが他のバッファへ書き込みを行う。
この状況は、MEXがMIJによるフレーム処理の終了を待ってから次の(第三の)フ
レームに移らなければならないために、フレーム処理の遅延をもたらす。MEX及
びSRTが的確に同期されていることに注意する。しかしながら、MIJがMEXによる
処理済みのフレームの読み込みを開始できるようにするには、Cullはタイルのデ
ータに相当する部分を処理済みでなければならない。このように、各フレームに
対して上記遅延または中断が起きる可能性がある。メモリオーバーフローが起き
れば、状況はさらに悪くなることがある。典型的なオーバーフローの状況下では
、第一のフレームが多くのデータを持っており、第二のフレームはほんの少しの
データを持っている可能性がある。MEXが次のフレームの順次処理を開始できる
ようになるまでに要する時間は、MEXがフレーム全体に対して費やした時間+CUL
タイル潜伏+フレーム全体に対するMIJフレーム処理であり、MEXがフレーム全体
に対して費やした時間+MEXがオーバーフローフレームに対して費やした時間で
はない。ここで要する時間は正常フレームに対して必要な時間のほぼ倍であるこ
とに注意する。このソフトウェアに対するコストを低下する唯一の手段は、シー
ンのサイズを見積もり、フレームを2つの等しい複合フレームに大別することで
ある。これとは別に、ハードウェアは我々が必要としている場合のみオーバーフ
ローを作成するようなポリシーを利用することもできる。
【0228】 Mode Extractionは、次のバッファ内のオーバーフローの原因となった三角形
(及びその状態)を保存する必要がある。我々が頂点リストのどこにいるかによ
り、現バッファにすでに書き込まれている次のバッファに対して頂点の送信が必
要な場合がある。本処理は、頂点を読み戻すまたはMEX内に2つほどの頂点を保
持することにより可能である。線は前回の頂点を一つだけ必要とし、点は他の頂
点とは一切ペアリングされないことに注意する。DoColorVertexコードがこの要
件で考慮されている。オーバーフローも処理される。処理が終わると、MIJがMEX
に信号を送信する。SetupおよびCullは、MEX及びSortが終了した後でなければタ
イル上の原線の処理が開始できないため、MIJはVSPの到着を待ち続けていること
がある。 5.4.2.4 カラーポインタ生成 MEXは、「colorPointer」、「colorOffset」、及び「colorType」を、Sortに
送信される全ての原線頂点に付加する。「colorPonter」は、Polygonメモリ内の
頂点エントリをポイントする。本頂点エントリは、Sort原線が付加される三角形
を完成する頂点(線または点)である。上記の例では(図27参照)ソート頂点
Va、Vb、V2は全て頂点3Vが△V1VaVb及び△V1V3V2を伴うD1V2V3Vを完了した時に
カラーベクトルV3に応するカラーポインタを割り付けた。△V1V2V3のノーマル、
カラー、及びテクスチャ座標などの頂点パラメータは、△V1VaVb及び△V1VbV2
対して生成されたVSP内のフラグメントのライティング及びテクスチャリングに
使用される。
【0229】 「colorOffset」は、本原線に適用可能なMLMポインタの保存に使用される二重
八進数に対するcolorPointerにおける頂点を分ける頂点の数である。再び上記の
例に戻ると、Va、Vb、及びV2に伴うカラーオフセットは、st0及びcv3を分ける
頂点の数、例えば3である。ColorOffsetは、Light、TexA、TexB、Material、Pi
xMode、及び点描ポインタを検索するために復号化されるMLMポインタ(MLMPoint
er=colorPointer―colorOffset*vertexSize-1)を検索したMIJを助ける。本処
理はPolygonメモリ内のメッシュ内頂点数を256に制限することに注意する。
(colorOffsetは、符号なし8ビット整数であり、それゆえ0から255の値を取
る。ColorPointer上の最後の頂点を加えると、最大256頂点が得られる。) 「colorType」は、MIJに対し、いかにしてPolygonから完全な原線を検索する
かを伝える。頂点は順番に保存されるため、三角形の扇形のケースをのぞいては
、原線内の頂点は隣接している。点の場合、我々が必要なのは、colorPointerに
よってポイントされる頂点だけである。線の場合、我々が必要なのは、ColorPoi
nterによってポイントされる頂点及びカラー頂点列内の前記頂点の前に位置する
頂点である。三角形の細片の場合、我々が必要とするのは、colorPointer上の頂
点及び2つの前回の頂点である。三角形の扇形の場合、我々が必要なのは、colo
rPointer上の頂点、その前に位置する頂点、及びMLMポインタの後の列の中の最
初の頂点である。上記の例では、頂点V8に対してMIJが定義したソート原線は頂
点V5、V7、及びV8を検索する必要がある。このように、三角形の扇形の場合は、
三角形用の3つの頂点がColorPointer(ColorPointer-1)及び(ColorPointer-C
olorOffset)上にある。
【0230】 図28に「カラー」情報に使用されるビットを示す。 Color Typeフィールドは、入力パケットフィーダー内の「vertexType」及び頂
点パケット長から構築される。本フィールドは、パケットのサイズ及びそれに属
する原線のタイプを指定する。図29にカラータイプフィールド用の値の一覧を
示す。
【0231】 図30に、点リスト、細片、三角形の細片、または三角形の扇形の最初の二重
八進数内に保存されているMLMポインタパケットを示す。 5.4.2.5 状態の処理 概して、MEXは受信したパケットのほとんどの内容を知る必要はない。MEXが知
る必要があるのは、それらパケットのタイプ及びサイズだけである。本規則には
幾つかの例外がある。
【0232】 「カラー」頂点パケットの場合、MEXは現頂点により定義された原線に関する
情報を知る必要がある。特に、MEXはそのタイプ(点、線、三角形の細片または扇
形)及び三角形の場合は正面を向いているかを知る必要がある。本情報は、オー
バーフローのケースにおいて原線の構築を可能にするためにチップ上に適切な頂
点エントリをセーブする時に使用される。本情報は、Geometryブロックによりパ
ケットヘッダーにしまわれる。
【0233】 MEXは、三角形の正面及び裏面用にMaterial及びTextureデータを蓄積する。Po
lygonメモリには、「FrontFace」ビットに基づいて状態の1セットのみが書き込
まれる。三角形の細片または扇形内でも正面/裏面の向きは変わらないことに注
意する。「FrontFace」は、正しいTextureA、TextureBパラメータ及び素材オブ
ジェクトの原線に対する付加に使用される。メッシュが向きを途中で変更した場
合、GEOは当該メッシュを複数のメッシュに分け、各メッシュが正面または裏面
を向くようにする。
【0234】 CullModesの場合も同様に、原線のタイプによってはMEXはLineWidth及びPoint
Width属性の内の一つを奪い去る。頂点が点を定義するとLineWidthが捨てられる
。頂点が線を定義すると、PointWidthが捨てられる。MEXは、線または点の幅の
内1つだけをSortユニットに渡す。
【0235】 「Clear」パケットの場合、MEXはSendToPixelフラグが設定されているかを検
査する。フラグが設定されている場合、MEXは(必要ならば)PixelModeをセーブ
し、出力クリアパケットに付加する適切なColorPointerを作成する。 5.5 Sortブロック(SRT) 5.5.1 SRTブロックの機能概要 Sortブロックは、Mode Extraction(MEX)とSetup(STP)間のパイプライン中
に位置する。Sortブロックの主な機能は、表示画面上に散在する形状寸法を取り
、タイルにソートすることである。Sortブロックは、少量のモード情報と共にラ
スタ図形処理される前のシーン全体の形状寸法を保存するSortメモリを管理する
。Sortメモリは、頂点及びモードの二重バッファリングされたリストである。1
つのページは、パイプラインの残りの部分でシーンのジオメトリを収集する(原
線ごと及びモードごとに)が、他のページは、そのジオメトリを送信する(原線ご
と及びモードごとに)。
【0236】 「アーキテクチュアの概要」の章に記述されているように、ウィンドウ(画面
上の表示領域)はタイルのセットへと縦横に分割され、Sortは各タイルに対して
オーダーされたリストを保持する。Sortメモリのページが書き込み中の場合、頂
点及びモードは、Sortブロックから受信されるごとに順にSortメモリに書き込ま
れる。Sortメモリのページ読み出しは、タイルごとに行われる。読み出しプロセ
スは次の2つのモードで動作する。1)Time Orderモード及び2)Sorted Trans
parencyモードである。Time Orderモードの場合、頂点及びモードのタイムオー
ダーは各タイル内に保存される。すなわち、与えられたタイルに対しては、頂点
及びモードは書き込まれた時と同じ順序で読み出される。Sorted Transparency
モードでは、各タイルの読み出しは、複数のパスに分割される。最初のパスでは
保証された不透明なジオメトリがSort Bloskから出力され、後続のパスにおいて
はSortブロックから潜在的に透過なジオメトリが出力される。各パス内では、タ
イムオーダリングは保存され、モードデータはその正確なタイムオーダー場所に
挿入される。
【0237】 Sortブロックへの入力時には、フレームの開始はMEX Output Begin Frame Pac
ketの受信によって指定され、常にユーザフレームの開始に対応する(つまり、こ
の時、新しい絵を描くためにアプリケーションがスタートする)。これらの開始
フレームパケットは、Sort Memory Pagesがスワップされた時にSortからパイプ
ラインを通ってSetupに送信される。フレームの終わりは、MEX Output End Fram
e Packetの受信により指定されるが、メモリオーバーフローが起きず、ソフトウ
ェアがユーザフレームに分割を強制しなかった場合にはユーザフレームの終わり
に対応するだけである。SortメモリまたはPolygonメモリが一杯になるとメモリ
オーバーフローが起きる。従って、Sortブロックに来るエンドフレームパケット
には次の2種類がある。1)ユーザフレームの終わり、及び2)パイプライン内
でユーザフレームを複数のフレームに分割する必要に起因するフレームの終わり
である。ユーザフレームが複数フレームに分割された場合、パイプラインの後の
半分(Setup及びbeyond)がタイルを複数回処理するように依頼される。各フレ
ームは独立で、異なるコンテクストから入力可能なため、全てのパイプライン状
態情報はSortメモリ(モードパケットとして)またはPolygonメモリにフレーム
ごとに保存されなければならない。
【0238】 フレーム内では、Sortブロックは、点、線、及び三角形のSort原線を受信及び
出力する。Sort原線三角形は、塗りつぶされた三角形または線モード三角形とな
る。しかしながら、原線は、点、線、塗りつぶされた三角形、及び三角形のエッ
ジの線を含むCull原線に従って分類される。
【0239】 Sort原線及びCull原線の主な違いは、線モードの三角形のエッジは、別々の原
線と想定されることである。Sortブロックが線モード原線を受信した場合、受信
した原線は、そのエッジが触れているタイルに従って分類される。三角形のいず
れのエッジ(LineFlag TRUEを持つ)も、三角形全体のそのエッジが接触するタ
イルへの分類の原因となるが、同じタイル内の複数のエッジを持つ三角形は、各
タイルにつき1つのPointer Entryの原因となるだけである。本処理は、例えば
、大きな線モードの三角形がそのエッジをタイルに触れさせることなく幾つかの
タイルを囲んでいる場合、それらタイルの中で上記三角形に対するCull原線の読
み出しは一切ないために、タイルあたりの原線の数を減少させる。Cull原線につ
いては、Setupブロック関係の文書にさらに詳細に記されているが、CullTypeパ
ラメータは、基本的に追加ビットが線モード三角形の3つのエッジから選択され
るSortPrimitiveTypeパラメータである。
【0240】 図31に、6つのタイルと8つの原線だけを含み、Sortメモリページに保存さ
れるデータの簡単な例を示す。本例に見られるように、各Sortメモリページは、
次の2つに分割される。1)データ記憶、及び2)ポインタ記憶である。データ
記憶はそのデータを受信順に保存し、次の2バイトの記憶エントリを保存する。
1)頂点パケット、及び2)モードパケットである。図31の例は、13個の頂
点パケットと3つのモードパケットを示す。ポインタ記憶は、次の2タイプのリス
トを含む。1)ポインタリスト:各タイルに一つずつ、及び2)モードポインタリ
ストである。図31中の例は、合計18個のVertexポインタを含む6つのTileポ
インタリスト及び1つのClearポインタと3つのCullポインタを含むModeポイン
タリストである。Vertexパケット及びModeパケットのサイズは、常に単一のRamb
us Dualoctである。それゆえ、図31に示すアドレスはDualoctアドレスである
【0241】 Sortブロックに頂点が支給され、データ記憶に順に書き込まれると、各タイル
につきTileポインタリストが構築される。Tileポインタリスト内の各Vertexポイ
ンタは、対応するタイプの一部をカバーするCull原線を含むSort原線の最後のSo
rt Memory Vertexパケットのデータ記憶内アドレス(例:ポインタ)を含む。例
えば、図31では、原線11(例:Duatoctアドレス11に書き込まれるSort Me
mory Vertexパケット)により完成される三角形が3つのタイルに触れ、この原
線へのポインタが3つの接触されたタイル(タイル2、4、及び5)用のTileポ
インタリストに加えられる。
【0242】 アドレスに加えて、各Vertexポインタアドレスはオフセットも含んでいる。オ
フセットがゼロの場合、Sort原線タイプは点である。図31の例は、Tile5内の
4つ目のPointer Entryを形成する原線16によって表される点である。オフセ
ットが1の場合、原線タイプは線である。図31の例に示す線は、原線14及び
原線15によって形成され、Tile0中の最初のPointer Entry及びTile2中の4つ
目のPointer Entryを形成する。これら2つのエントリ内では、アドレスフィー
ルドは15であり、線の中の最後の頂点をポイントする。線の場合、他の頂点が
常に直前のアドレス上の頂点である。オフセットが複数の場合、Sort原線タイプ
は三角形であり、オフセットは三角形内の最初の頂点の位置を決定するのに使用
される。例えば、図31では、頂点12が三角形の3つめの頂点である。2つ目
の頂点が常に直前のアドレス−この例では頂点11である。最初の頂点は、アド
レスからオフセットを減算することによって見つけることができる。本例では、
オフセットは4であり、最初の頂点は頂点8である(例:12−4=8)。それゆ
え、Tile2、Tile3、Tile4、及びTile5にエントリを加えることによりPointer
記憶に4つのVertexポインタが加えられる。これら4つのエントリは、それぞれ
アドレス=12及びオフセット=4を持っている。
【0243】 アドレス及びオフセットに加えて、各VertexポインタはTransparentフラグビ
ットも含んでいる。本ブール変数は、パイプラインがSorted Transparencyモー
ドにある場合にのみ使用される。本モードがTRUEの場合は、原線は透過の可能性
があるとして扱われ、FALSEの場合は、原線の不透明性が保証されていることを
示す。本文脈中では、「不透明」とは、ウィンドウ中の同じ領域を占有するより
遠くのジオメトリを完全に覆い隠す原線を示す。図31の例では、頂点9から1
1によって完成された三角形は、Vertexポインタ内の「T」で示される、TRUEに
設定されたTransparentビットを持つ。これら3つの三角形は9つのタイルに接
触するため、「T」インジケータを持つエントリは9つある。
【0244】 Sortブロックにモードパケットが支給され、順にデータ記憶に書き込まれるた
め、単一のModeポインタリストが構築される。Modeポインタリスト内の各エント
リは、データ記憶内のモードパケットのアドレスである。それぞれ対応するモー
ドパケットタイプを持つ次の2種類のポインタがある。1)Sort Memory Clear
パケットを含むClearポインタ、及び2)Sort Memory Cullパケットを含むCull
ポインタである。
【0245】 Clearポインタ及びCullポインタの双方が、モードパケットのタイプを示すMod
ePktTypeパラメータを含む。両ポインタが持つモードパケットを示すブール変数
(SubFrameBreakOnClear及びSubFrameBreakOnCull)は、その点においてフレー
ムのSubFramesへの分割の原因となる。ブール変数がTRUEで現SubFrameがすでに
透過ジオメトリを含んでいる場合、そのモードパケットの直前でフレームが分割
される。図31の例では、1つのCullポインタが、そのCullポインタ内の「S」
で示される、TRUEに設定されたSubFrameBreakOnCullビットを持つ。Clearポイン
タも、Pixelブロックでバッファクリア動作が行われるべきことを示す他のブー
ル変数SendToPixelを持つ。
【0246】 Sortメモリページの読み出し中に、複数の頂点がSort原線へと組み立てられ、
モードが全てのタイルの出力ストリームに注入されるため、Sortメモリアドレス
は常に増加する。図31の例では、Tile3が読み出された場合、出力パケットの
順序(データ記憶アドレスとして指定される)は0、1、4、5、6、7、12
、及び13である。Tile3に触れた原線(例:4、5、6、及び12)だけが出力
されるが、4つのモードパケットの全てが出力されることに注目する。一般的に
、全てのモードパケットは全てのタイルの最中に送信されるが、幾つかのモード
パケットは除去することができるかまたは目的ドローバッファに関連しないため
、出力ストリームには供給されない。本処理については、後の節で詳細に論じる
【0247】 原線パケット及びモードパケットに加えて、Sortメモリは、「Tweenパケット
」と呼ばれ、ユーザフレーム間にあると考えられるデータパケットも持つ。特定
的に、Tweenパケットは、ソフトウェアがユーザフレームを発行した後及びソフ
トウェアが開始ユーザフレームを発行する前にのみパイプラインに入力できる。
アーキテクチャの観点からは、TweenパケットはSortメモリページの一部とは考
えられていない。しかしながら、Sortメモリには他にデータを保存するスペース
がないため、TweenパケットはSort WriteプロセスによりSortメモリページ内の
データ記憶の最初の部分に保存される。Tweenパケットは、先ず3Dフレームに同
期する必要がある2Dコマンドのために使用される。例えば、ジオメトリがオフ
スクリーンバッファ(pバッファ)に収められると、ストレッチビット動作がデ
ータをフレームバッファに転送する。本動作はフレーム間で行われなければなら
ない。Tweenパケットは、全ての蓄積バッファ動作にも使用される。
【0248】 図32にSortブロックの簡単なブロック図を示す。これまで論じられてきた機
能に加えて、図32が二重バッファリングされた状態レジスタを示す。これらレ
ジスタは、書き込みまたは読み出し中のフレームのパラメータを収納する。パラ
メータには、水平方向のタイル数、垂直方向のタイル数、目的ドローバッファは
二重バッファリングされているか、目的ドローバッファはステレオか、フレーム
はTime OrderモードまたはStored Transparencyモードにあるか、ピクセル内の
サンプル位置選択、サンプル重み付け、及びSortメモリまたはPolygonメモリ内
のオーバーフローがフレームの原因となったかが含まれる。
【0249】 アルゴリズムの観点からは、タイルは独立で、いかなる順序でも読み出し可能
である。しかしながら、テクスチャの再使用を最大にするために、「スーパータ
イル」と呼ばれるタイルグループが順に読み出される。スーパータイルあたりの
タイル数は選択可能でるが、我々は常にスーパータイルあたり2×2タイルの選
択を期待する。シーンホライゾンの複雑さの影響により生じる負荷の不安定を最
小化するには、スーパータイルは行ごとにも列ごとにも読み出さない。むしろ、
スーパータイルは空間的にばらばら(擬似ランダム)に読み出す。正確な順序は
重要ではないが、スーパータイルの順読み出しセットはウィンドウを横断する直
線になってはならない。本擬似ランダム歩行のアルゴリズムは後述する。
【0250】 ステレオ3Dウィンドウの場合、左右のバッファは、それぞれ別のタイルのセ
ットを持つ別々のバッファと考えられる。例えば、1024×768ウィンドウ
は64×48タイル(合計3072タイル)を持つが、ステレオウィンドウは2
×64×48タイル(合計6144タイル)を持ち、各(x、y)個所に2つの
タイルを持つ(左右に1つづつ)。
【0251】 アプリケーションが正面及び裏面バッファ双方に同じフレーム内の特定のタイ
ルを収納した場合、そのタイルは2つのパスで処理される必要がある。最初に裏
面バッファ用に、次に正面バッファ用に処理される。しかしながら、裏面バッフ
ァにのみ収められたジオメトリは正面バッファにのみ収められたジオメトリの深
度テストの結果の変更(及びその逆)が可能なために、全てのジオメトリ(正面
及び裏面の)は両パスの最中にパイプライン中を送信されなければならない。な
お、同様の開始深度及びステンシル値が両パスに対して使用されなければならな
い。従って、与えられたタイルに対する裏面及び正面パスは連続して行われなけ
ればならない(例:間に他のタイルがあってはならない)ため、Back Endはフレ
ームバッファからPixelブロック内の連続バッファへと深度及びステンシル値を
ロードすることができる。正面バッファ用のパスの初期ロード前に裏面バッファ
用のパスが完成しそうな場合は、収納エラーが発生する可能性がある。Backend
がこの処理を保証しなければならない。
【0252】 書き込みプロセス中では、原線の領域が実際にタイルの一部をカバーしている
場合にはそれら原線を割り付ける処理のみを行うことが重要である。簡単なバウ
ンディングボックスが使用されている間に、同ボックスが、特に対角線及び長く
細い対角線三角形に対してSortメモリの帯域幅を無駄にすることがある。後の節
において、Touched Tile Calculation用の簡潔なアルゴリズムを示す。
【0253】 Sortメモリページの約半分がポインタに使用される。従って、Sortメモリ内に
必要なバイト数は、最大頂点数の約64倍である(モードパケットはこの処理に
はあまり資さない)。各頂点は16バイト、ポインタは付加的16バイトを必要
とし、そして必要な2ページがある。
【0254】 Sortブロックは、各フレーム中の三角形の数などの幾つかの性能メータ関係の
情報収集を続ける。「Sortブロックからの出力」の節の従属節「性能計測能力、
ホストから読み出し可能」を参照。 5.5.2 Sortブロック機能詳細 Sortブロックは、平行動作の次の2つのプロセスを含む。1)Sort Writeプロ
セス、及び2)Sort Readプロセスである。Sort Writeプロセスは、書き込みが
完了し、読み出しプロセスが休止している場合にSort Readプロセスを開始する
ので、2つのプロセスの「マスター」である。擬似コードは、全ての変数が「大
域」であると想定する。原線が接触するタイルを決定するTouched Tile Calcula
tionなどの他の機能詳細が本節に含まれる。 5.5.2.2 Sort Write Process Sortメモリページの場合、Sort Write Processが頂点のシーケンスリスト及び
データ記憶内のモードパケットを作成する(図31参照)。Sort Write Processは
、タイルごとにTileポインタリスト及びフレームごとにModeポインタリストを作
成する。 5.5.2.2 Sort Read Process Sort Read Processは、厳格にタイルごとに出力パケットシーケンスを生成す
る。左右のタイルは個別に扱われる。 5.5.2.2.1 Sort Read Process外側制御ループ Sort Read Processの外側制御ループには次の3つの機能コンポーネントが含
まれる。1)TimeOrderMode;2)Sorted Transparency Mode OpaqueLoop();及び
3)Sorted Transparency Mode TranspLoop()である。下記の節で各コンポーネ
ントを説明する。
【0255】 最初のモードパケットが全てのタイル内に出力されるため、モードパケットの
キャッシングは、FILOベースで行われなければならない。キャッシング機構は、
少なくとも2つの先のモードパケットを見て、処理へのバブル注入からモードパ
ケットを選択する(タイムオーダリングを決定するために)アドレス比較を防止
する。 5.5.2.2.2 Time Order Packet Processing 本処理は、パイプラインがTime Orderモードにある時に実行される各Sort Mem
oryパケットタイプの処置に関わる。 5.5.2.2.3 Sorted Transparency Packet Processing、不透明ジオメ
トリ送信 本処理は、不透明ジオメトリ用の単一パスの最中にパイプラインがSorted Tra
nsparencyモードにある時に実行される各Sortメモリパケットタイプの処置に関
わる。 5.5.2.2.4 Sorted Transparency Packet Processing、透過ジオメト
リ送信 本処理は、透過ジオメトリ用の複数パスの最中にパイプラインがSorted Trans
parencyモードにある時に実行される各Sortメモリパケットタイプの処置に関わ
る。Sort Memory Clearパケットは、透過処理の間は常にスキップされている。
【0256】 5.5.2.2.5 Clearレジスタ機能 StencilModeは2ビットステンシルモードのウィンドウのセットを持っている
場合、ソフトウェアは8ビットをまたいでStencilMask及びStencilValueの2つ
の最も有意でないビットを写し取る。ソフトウェアはまた、ClearDepthの値の送
信中にOpenGL DepthMaskを考慮する。その理由としては、Backendがクリアの最
中にDepthMaskをチェックしないからである。 5.5.2.2.6 Cullレジスタ機能 CullFlushAllRegだけが実際に「蓄積される」信号である。SoftSubFrameBreak
及びOnlySoftSubFrameBreakはSort Read Processには使用されないが、デバッギ
ングの目的でSort Memory Cullパケットに含まれている。 5.5.2.3 接触されたタイルの演算 我々は、三角形、ABC、及び中心が(xTile、yTile)であるタイルを与えら
れて、三角形がタイルに触れているかを決定したい(図33)。アルゴリズムは
、三角形内の各線が、平面を内部半平面と外部半平面の2つの半平面へと分割す
ることによる。タイル全体がいずれかの線により定義された外部半平面に入って
いる場合、三角形はそのタイルには触れない。三角形がタイルに接触するには、
3つの内部半平面全ての中に少なくともタイルの一部が含まれていなければなら
ない。
【0257】 接触されたタイルの演算は線にも適用されるが、線の点描は接触された線の演
算のために無視される。
【0258】 処理を開始するために、我々はベクトルを図34に示すように三角形の線の一
つから直角にタイルの中心に走るものとイメージする。
【0259】 本直角ベクトルの大きさdを演算することにより、タイルの中心の線からの距
離及びその中心が内部半平面にあるかまたは外部半平面にあるかを決定できる。
dの負の値は、線によって定義される内部半平面にタイルの中心があることを示
している。
【0260】 我々は次に、線がタイルと交差する閾値距離tを演算する。図35A及び35B
に示すように、距離はタイルの辺(φ)の一つに関係する線の角度の関数である
【0261】 直角ベクトルdが閾値距離tよりも大きい場合は、タイル全体が三角形の外側
にある(図36C)。dが0とtの間にある場合は、線がタイルと交差し(図36B)
、dが負の値の場合は、タイルの中心は線によって定義された内部半平面の中に
ある(図36A)。
【0262】 三角形内の各線に対して上記演算を実行することにより、我々は三角形がタイ
ルに触れているかを決定することができる。 5.5.2.3.1 直角ベクトル 線ABの場合、(x0、y0)から(x1、y1)により、等式は下記のように
なる。
【0263】
【数1】 (xTile、yTile)を通り本線に直角な線の等式は下記の通りである。
【0264】
【数2】 次に、我々はオリジナルの線の交点と直角を決定する。
【0265】
【数3】 我々は、便宜的に上記等式を下記のように表す。
【0266】
【数4】 次に、我々は(x、y)及び(xTile、yTile)を演算する。 5.5.2.3.2 閾値距離の決定 閾値距離を決定するために、我々は、図37に示すようにタイルの辺の1つに
関して線の角度を見る必要がある。
【0267】
【数5】 5.5.2.3.3 全ての追加 与えられた線に基づいてタイルが三角形の外側にあるかを決定するために、我
々は下記比較を行う。
【0268】
【数6】 本比較のために、我々は角度を第一四分円に変形したので、実際のテストは下
記のようになる。
【0269】
【数7】 本テストが真である場合は、タイルは三角形の外側になる。我々は三角形内の
他の線に対しても同様の比較を行う。
【0270】
【数8】 ここで
【0271】
【数9】 これら全てのテストが偽である場合、三角形はタイルに触れている。
【0272】 線の場合、演算は三角形の1つの辺に対するそれと似通ったものになるが、我
々の関心事は線がタイルと交差しているかということだけである(すなわち、三
角形の時のように「内側」か「外側」かで悩む必要はない)。従って、我々はd
の符号を無視し、その大きさだけを考慮する。我々は、線の幅も考慮に入れなけ
ればならない。これら2つの変更は我々に下記テストを与える。
【0273】
【数10】 本テストが偽の場合は、線はタイルに触れている。
【0274】 参考までに、Andreas Schillingの"A new simple and efficient antialiasin
g with subpixel masks"、Computer Graphics1991年7月号を参照。 5.5.2.4 SuperTileホップシーケンス 3D画像を収容する場合、絵を通した水平束が画像の残りの部分をはるかに上
回る複雑さを持っている「水平線効果」がしばしば見られる。一例としては、単
純な草原が手前にあり上に空がある遠くの市街の輪郭がある。草及び空は非常に
少ない多角形を持っている(おのおの1つであることが多い)が、市街は多数の
多角形及び非常に複雑な深度を持っている。このような水平線効果は、シーンを
通した非水平束に伴って起こることもある。タイルが単純な上から下及び左から
右の順で処理されると、複雑なタイルは、パイプライン内の負荷不安定をもたら
す裏面から裏面の処理を受けることになる。従って、タイルからタイルに移るに
は、画面内をランダムに「ホップ」するのが良い。しかしながら、本処理は特別
な干渉の減少に繋がり(なぜならば、隣接するタイルが順に処理されないからで
ある)、パイプライン内のキャッシュの効率を下げ、性能を低下させる。空間の
順タイル処理及び完全ランダムパターンの間の妥協として、タイルは「スーパー
タイル」に編成される。そこでは空間的に隣接する複数タイルがスーパータイル
となる。その後、スーパータイルのランダムパターンが処理される。このように
、空間的干渉はスーパータイル内に保持され、水平線効果が防止される。
【0275】 3Dウィンドウはタイルに分割され、これらタイルは「スーパータイル」にグ
ルーピングされる。スーパータイル内のタイル数は、MEX Output Begin Frameパ
ケット内のパラメータSuperTileSizeで選択できる。タイルが処理されるシーケ
ンス(「スーパータイルホップシーケンス」と呼ばれる)は、やはりMEX Output
Begin Frameパケットに含まれるSuperTileStepにより制御される。
【0276】 図38Aにスーパータイルホップシーケンスの簡単な例を示す。本例は、18
×14配列の252個のタイルより成るウィンドウ6202を示す。SuperTileS
izeは2×2タイルと想定される(しかしながら、1×1、1×2、2×1、2
×2、2×3、3×2、3×3、3×4、4×3、または4×4を含みいかなる
サイズでも良い)ので、9×7配列の63スーパータイルがある。スーパータイ
ルのリストは、直線リストに変換されていると想定されるが、この変換はスーパ
ータイルの列単位の番号付けを左上部から始めることにより実行できる。下記変
数を定義する。 N=ウィンドウ内のスーパータイル数 M=SuperTileStep Tn=処理されるn個目のスーパータイル スーパータイル処理のシーケンスは下記の通り。 T0=0 Tn+1=modN(Tn+M) 図38Aの例では、N=63及びM=13となっている。この結果は、図38Bに描
かれているようにT0=0、T1=13、T2=26、T3=39、T4=52、T5=2、
T6=15、…のシーケンスとなる。MがNより少ない必要はない。
【0277】 本インタラクティブアルゴリズムは、N及びMが互いに素数である(すなわち、
これらの数値の最大共通因子が1である)かぎり、全てのス−パータイルをヒッ
トする。NもMも素数である必要はないが、Mが常に素数として選択される場合は
、全てのスーパータイルがヒットされる。
【0278】 代替法としては、スーパータイル配列を必要以上に大きくしてウィンドウ全体
をカバーするようにし、2a×2b=22aと想定されるので、スーパータイルの総
数は2の整数乗に保証される。本処理は、単に上位ビットを捨てるだけで「modN 」演算を可能にする。本アプローチに対するマイナス部分は、シーケンスに存在
しないスーパータイルが含まれていることである。これら存在しないスーパータ
イルは検索及びスキップされなければならない。 5.5.2.5 線フラグ 線モードの三角形の場合、Sortブロックは、各線とは独立に、線が接触するタ
イルを決定する。しかしながら、同じ三角形からの複数の線がタイルに接触する
と、1つのポインタのみがその三角形に対してTileポインタリストに付加される
。なぜならば、SortブロックがSort原線(Cull原線ではない)を分類しているか
らである。
【0279】 線モードの三角形を受信すると(例:LineModeはTRUEであり、LineFlagsパラメ
ータ内の1つ以上のビットがTRUE)、その三角形は、塗りつぶされた三角形とし
てではなく、1つ以上の線として描かれる。LineFlagsには三角形の各エッジを
示す3つのビットがあり、対応するエッジを線として描くべきかを示している。
これら3つのビットは次のものを表している。1)頂点0と1の間のエッジに対
応するビット0(LSB);2)頂点1と2の間のエッジに対応するビット1、及び
3)頂点2と0の間のエッジに対応するビット2(MSB)である。LineFlagsパラ
メータは、頂点を決定し、多角形を完成するパイプラインの一部であり、クリッ
ピングの役割を負っているために、GEOブロックに設定される。
【0280】 幾つかのエッジ線は描いてはならないため、3つのLineFlagsビットは独立に
それらビットに対応するエッジを制御する。例えば、OpenGL四辺形は、常に2つ
の三角形に分割されるが、線モードで描かれた場合は、四辺形内のエッジは描か
れない。それゆえ、オリジナルの四辺形内のエッジに対応する各三角形内の2つ
のエッジは、それらのLineフラグセットをTRUEに設定し、他の三角形内のエッジ
(四辺形内の共用エッジ)はLineフラグセットをFALSEに設定する。 5.5.2.6 三角形扇形の分割 各ポインタエントリ内のOffsetパラメータは、63の最大オフセットを内包す
る6つのビットを持っている。三角形の扇形が63以上のオフセットを必要とす
る場合、扇形はデータ記憶内の2つの頂点を写し取ることによって分割される。
カラーメモリ内でも類似した現象が起き、Sort Block Inputパケットに残りのデ
ータを付加するカラーメモリ内へのポインタはそのことを考慮しなければならな
い。 5.5.2.7 線幅考慮 OpenGL内では、幅がピクセル幅の数として、長さがエンドポイント間の距離と
して指定されるアンチアライアスド長方形として描かれる。また、これらの線は
、点描され、長方形をそれぞれの長さに合わせた一連のアンチアライアスド四辺
形へと分解し、各四辺形は通常の方法で色付けを指定されるか完璧な透過に指定
される。点描された線は、仮想的な鎖線と考えられる。
【0281】 線の原線が(線または線モード三角形)がSortブロックに受信されると、線の幅
が原線の隣接するタイルへの「こぼれ」の原因となる。 5.6 Setupブロック(STP) Setup(STP)ブロックは、Sort(SRT)ブロックからパケットの流れを受信する。
これらのパケットは、描画される原線に関する空間情報を持つ。STPブロックの
出力は、Cull(CUL)ブロックに行く。SRTから受信した原線は、塗りつぶされた三
角形、線三角形、線、点描された線、及び点である。各原線は、アライアスドま
たはアンチアライアスドモードで描画することができる。SRTブロックは、タイ
ル順にSTP(及び他のパイプラインステージ下流)に原線を送信する。各タイル
内では、データはタイムオーダーまたは分類された透過の順で編成される。CUL
ブロックは、タイル順で(実際には、STPがSRTから原線を受信する順に)STPブ
ロックからデータを受信し、絶対に描画された画像に資することのない原線のパ
ーツを選別する。本処理は2つのステージで完了する。最初のステージMCCAM Cu
llは、与えられた値よりも大きな内容を持つ長方形メモリ配列内のそれらのエレ
メントの検出を許容する。第2のステージは、サンプルごとの比較により本サー
チ上でリファインする。STPブロックは、CULブロックによる処理用の入り原線を
用意する。STPは、タイトバウンディングボックス及びMCCAM選別用のタイルを横
切る原線の一部用の最小深度値Zminを生成する。MCCAM選別ステージは、Zminよ
りも小さい深度値を含む可能性のあるバウンディングボックス内のスタンプをマ
ークする。Z選別ステージは、これらの候補スタンプを取り、それらが原線の一
部である場合は、そのスタンプ内のサンプル用に実際の深度値を演算する。その
後、この、より正確な深度値は、比較及び起こり得るサンプルごとの廃棄に使用
される。MCCAM選別用のバウンディングボックス及びZminに加えて、STPは、Z選
別ステージ用として、深度の傾き、ラインスロープ、及び深度や原線のタイルエ
ッジに対する交差点などの他の参照パラメータを演算する。CULユニットは、他
のパイプラインステージに使用されるVSPを生成する。
【0282】 コンテクストを設定するために、我々は簡潔に種々のSTP原線を説明する。 5.6.0.1 多角形 STPブロックに到着する多角形は、基本的に三角形である。それら三角形は、
アライアスドまたはアンチアライアスドモードで描画される。図39にDSGP三角
形を示す。STPユニットは、アライアスドまたはアンチアライアスド三角形を同
様に処理する。パイプラインユニット下流は、ピクセルの中央に全てのサンプル
を位置付けることによってアライアスド三角形を描画する。アンチアライアスド
のケースでは、サンプル位置は、制御パケットの1つと共に渡されるSampleLocS
elパラメータにより決定される。サンプルは、三角形の形状寸法境界内で失敗し
た場合には三角形に属する。サンプルが三角のエッジの真上で失敗した場合は、
取り込み規則を使用して本サンプルが三角形に属するかを決定する。 5.6.0.2 線 DSGPは、四辺形に変換することにより線を描画する。図40に様々に方向付け
られたアライアスドあるいはアンチアライアスド線を描くために生成された種々
の四辺形を示す。線の幅は、最も近いサポートされた幅に丸められる。SORTステ
ージに先立って幅の調整が成されなければならない。本調整はソフトウェアによ
り実行可能である。STPは入り線幅を変更しない。
【0283】 アライアスド及びアンチアライアスド線による四辺形の生成は別々の方法で行
われることに注意する。アライアスド線のばあいも、四辺形の頂点は、線がxメ
ジャーかyメジャーかによる。 5.6.0.3 点 DSGPは、アンチアライアスド点を円として描き、アライアスド点を四辺形とし
て描く。円は、ユーザが指定した位置を中心として描かれる。円の直径は、ユー
ザにより指定され、最も近いサポートされた幅に丸められた幅である。アライア
スド点を描く場合、ユーザにより指定された点の位置は、結果の幅が奇数が偶数
かによりそれぞれ、ピクセルの中心にスナッピングされるかピクセルの角に丸め
られる。線の場合は、SORTブロックに先立ち、点サイズ及び位置の調整がパイプ
ライン内で起きる。点の位置は変形に支配されるために、Geometryユニットが本
処理を行うには適当な場所に思える。図41に描画された点を示す。ユーザが指
定した点は円によって示される。 5.6.1 Setupブロックの機能概要 本節では、我々は各原線に対して実行される処置のセットアップの概要を説明
する。特定の処理の詳細を第3節に示す。 5.6.1.1 塗りつぶされた多角形 Setupは、CULユニットに対して処理用の塗りつぶされた多角形を用意する。ST
Pは、三角形の3つの頂点に対してウィンドウ座標(x、y、z)を受信する。S
TPは、多角形のオフセットの演算で使用する「係数」も受信する。アンチアライ
アスド状態は塗りつぶされた三角形セットアップがなされた手法は変更しないこ
とに注意する。CUL及びPixelブロックは、全てのサンプルをピクセルの中央に向
けて破壊させることによりアライアスド三角形のラスタ図形処理を行う。我々は
また、三角形の頂点がウィンドウ座標の有効な範囲内で崩壊すると想定する(例
:三角形の座標がウィンドウの境界にクリッピングされている)。
【0284】 エッジ上の三角形は全て廃棄される。エッジ上の三角形がVSPを生成すること
は予想されていない。我々が三角形をSTP内で廃棄しなかった場合は、CUL内でこ
れら三角形のラスタ図形処理を伴うオーバーヘッドが発生する。さらに、まれな
事象では、上記のような三角形がVSPを生成し、ピクセル照度は変則的になる。
この事象は、エッジのスロープが同等なことが発見されたときに検出される。
【0285】 各塗りつぶされた多角形では、STPが下記処理を行う。 1.頂点に対し、上部、下部、左(または右)頂点を提供するよう命令する。ま
た、中央の頂点がyの中の長いエッジの左右どちらに行くかを示すleftCまたはr
ightCフラグを設定する。例:最大及び最小のy値を持つ頂点と接するエッジ。
2. x及びyと共にzの部分導関数(δz/δx、δz/δy)を演算する。 3. 可能な場合は多角形のオフセットを演算し、各頂点のz値にオフセットを
加える。 4. CULユニットの3つのエッジのスロープを演算する。エッジ上の三角形を
廃棄する。 5. タイル境界に三角形をクリップする。 6. CULユニットに対する参照z値(参照スタンプ用の)の演算同様にバウン
ディングボックス、上部エッジ交点、及びタイルと交差する三角形領域の最小z
を演算する。 7. 原線にコードを割り付け、CULユニットに関連情報を送信する。
【0286】 以前説明したように、バウンディングボックス及びZminはMCCAM選別に使用さ
れる。上部エッジ交差、線スロープ、コーナー点、参照z値、及びz傾きはCUL
ブロックによるZ選別に使用される。 5.6.1.2 アンチアライアスド実線 CULユニットは、平行四辺形及び三角形に対して同様にラスタ画像処理をする
スキャンコンバータを実行する。アンチアライアスド線セグメントは、図42に
示すように長方形へと変換される。
【0287】 線の各端の長方形の頂点は、線のエンドポイント同様に同じz値に割り付けら
れて定数zの線を線自体に対して直角にする。各線セグメントに対しては、STP
は下記処理を実行する。 1. x及びy頂点の変位(xhw、yhw)を決定する。 2. 長方形の頂点を決定する。演算された頂点は、線がアライアスドかアンチ
アライアスドかによって変化する。 3. CULユニットに対してマイナー及びメジャー軸のスロープを演算する。(マ
イナー名軸はメジャー軸に対して直角である。) 4. 頂点に対して上部、下部、左、及び右の頂点を提供するよう命令する。 5. (δz/δx、δz/δy)と共に本長方形に対してx及びy部分導関数を演
算する。 6. タイル境界に長方形をクリップする。 7. CULユニットに対する参照スタンプ用参照z値同様に、バウンディングボ
ックス、上部エッジ交差、及びタイルと交差する長方形領域の最小zを演算する
。 8. 原線コードを割り付け、関連情報をCULユニットに送信する。 5.6.1.3 アライアスド実線 以前説明したように、アライアスド線のエンドポイントは、アンチアライアス
ド線のエンドポイントとは異なる方法で演算される。アンチアライアスド線の場
合の長方形の代わりに、我々はアライアスド線に対して平行四辺形を演算する。
平行四辺形の2つのエッジは、線の長さと並行であり、他の2つのエッジは、図
43に示すように垂直(xメジャー線に対して)または水平(yメジャー線に対
して)である。
【0288】 OpenGLは、平行四辺形の頂点の演算により下記がもたらされることを要求する
。 1. 両セグメントがxメジャーまたはyメジャーの場合、連続多線セグメント
を描いている間にはギャップもオーバーストライクも生じない。 2. OpenGLダイアモンド出口規則を使用してラスタ図形処理された総フラグメ
ント数とDSGP法の間に最大1つの行(または列)不均衡がある。 4. x及びy方向の一つ以上のユニットによりラスタ図形処理されたフラグメ
ントの座標が遷移する。
【0289】 しかしながら、本処理はCULによる平行四辺形及び三角形のラスタ図形処理に
制約を設ける。CULはフラグメント包含規則を利用して2つの原線が共有するエ
ッジの真上に位置するフラグメントが2つの原線の内の一つのみに含まれるよう
にする。(アンチアライアスド描画規則はフラグメントではなくサンプルに適用
される。)Setupは、アライアスド幅広の線を描くために下記処理を実行する。 1.x及びy頂点遷移(xhw、yhw)を決定する。 2. 線のスロープを見ることにより平行四辺形の頂点を決定する。線のエンド
ポイントは変更されない。 3. CULユニットに対して、エッジに沿い、線の長さに並行なスロープを演算
する。他の軸は水平または垂直である。 4. 頂点に対して上部、下部、左、及び右の頂点を提供するように命令する。
5. xおよびyと共に本長方形に対してzの部分導関数(dz/dx、dz/d
y)を演算する。 6. タイル境界を持つ四辺形の交点を演算する。 7. CULユニットに対する参照スタンプ用参照z値同様に、バウンディングボ
ックス、上部エッジ交差、及びタイルと交差する領域の最小zを演算する。 8. 適切な原線コードを割り付け、CULユニットに関連情報を送信する。ステ
ップ2から8がアライアスド及びアンチアライアスド線に対して同様に利用でき
ることに注意する。 5.6.1.4 点描線 点描に伴う状態は、16ビット点描パターン、点描繰り返し係数r、stplStar
Bit、及びstplRepeatStrtを含む。点描パターンは、モード中に描かれた細片、
線ループ、及び多角形の各セグメントをまたいで連続されなければならない。st
plStartBit及びstplRepeatStartは、このような連続をするために使用される必
要な状態パラメータである。Setupは、各線セグメント用のstplStartBit及びstp
lRepeatStartに関する情報を得る。Geometoryユニットは、各線セグメントの開
始においてstplStartBit及びstplRepeatStartオフセットを演算する役割を負う
。線幅wも生成された線セグメントの出現を制御する。Setupは、描画パターン
中に連続する1の列を四辺形に分解する。アンチアライアスド線の場合、四辺形
は長方形である。これらの四辺形は、「nr」の長さと幅を持っている。ここで、
nはその列の中の1の数である。これらは線の目に見える部分を表している(図
44)。
【0290】 非アンチアライアスド線の場合、四辺形は平行四辺形である。STPが1ビットの
各走行に対して四辺形を生成するため、これら四辺形の内の幾つかはタイル境界
の外にある。これら四辺形の不必要な処理を減らすために、我々は、完全にタイ
ルの外側にある四辺形を立ち上がらせることによって点描セグメントをクリップ
する。線のスタートポイント(x0、y0)がタイルの外側にある場合は、我々
は、スタートポイントに一番近いタイル境界に線をクリップする。クリップされ
た線のスタートポイントは、最初の線四辺形が完全に含まれるように生成される
。本処理は、タイル境界をまたいで連続することを保証する。本処理は、クリッ
ピングする四辺形のバンドをタイル周辺に置く処理と等価である。クリッピング
された点に対して、新たな線スタートポイントが、点描オフセットstplStartBit
と同様に生成される。(我々は旧stplRepeatStartを保持する。)図45に本処理
を示す。
【0291】 この線は、xhw及びyhwにより置換されたx及びy方向のタイルのエッジ
にクリッピングされる。従って、点描された線は下記ステップを踏んで行われる
。 1. 線がアライアスドまたはアンチアライアスドかによって頂点の置換を決定
する。 2. ガードバンドと共に線のヘッドをタイルにクリップして(tileXmin―xhw
、tileYmin―yhw、tileXmax+xhw、tileYmax+yhw)クリッピングされた点がガ
ードされたタイルの上または外に位置するようにする。クリッピングされたセグ
メントの長さの単位は点描されたビットである。新たなstplStartBitを得る。 3. 点描内の各1ビットの列は四辺形を構築してそれをパイプを通じて送信す
る。新たなスタートポイントがタイルガードバンドの外側に落ちた場合に本プロ
セスは続けられる。 5.6.1.5 線三角形 線モードで三角形を描く場合、STPユニットは、3つの三角形の頂点用のウィ
ンドウ座標(x、y、z)に加えてエッジフラグを受信する。本エッジフラグは
、Setupユニットに描くべきエッジを伝える。Setupユニットは、多角形オフセッ
トの演算に使用する「係数」も受信する。描くべきエッジは、多角形オフセット
により最初にオフセットされ、その後幅w(線属性)のリボンとして描かれる。
点描が可能な場合は、これらの線が点描される。図46に線モード三角形のジオ
メトリを示す。
【0292】 STPは各線多角形に対して下記処理を行う。 1. エッジ上の三角形を全て廃棄する。詳細は、塗りつぶされた三角形の節を
参照。 2. (δz/δx、δz/δy)と共にx及びy部分導関数を演算する。これら
のz傾きは三角形用であり、三角形のzオフセットを演算する上で必要になる。
3. 可能ならば多角形オフセットを演算し、3つの内の各頂点上のz値にオフ
セットを追加する。 4. 順にエッジを横断する。エッジが見える場合は、幅や点描などの属性を使
用してそのエッジを描く。 5. アンチアライアスド、アライアスド、及び幅などの線属性に基づいて線を
描く。 6. どのエッジが特定の原線コードによって表されているかにより、その原線
コードを割り付け、CULに送信する。 5.6.1.6 アライアスド及びアンチアライアスド点 SetupはYtop,Xcenter,及びYoffsetを検出し、これらの値を点幅及び割り付け
状態と共にCULに送信する。 5.6.2 Setupブロック機能詳細 前節までに概要を説明した種々の原線の処理は多くの共通点を持っている。本
発明者らは、上記の共通点の強化のために原線の表現を統一した。 5.6.2.1 統一された原線表現 前述のように、Setupは線セグメントを4つの頂点から成る平行四辺形に変換
する。三角形は3つの頂点を持つ。Setupは、4つの点のセットにより各原線を
表す。全ての値が全ての原線に必要ではないことに注意する。三角形の場合、Se
tupは、三角形の動作により、上部、下部、及び左または右コーナーを使用する
。線セグメントは平行四辺形として扱われるため、Setupは4つの点の全てを使
用する。図47−51にどのようにしてSetupが三角形及び線を表現するかを示
す。三角形の頂点がオリジナルの頂点と同じである間は、Setupは新たな頂点を
生成して線を四辺形として表現することに注意するべきである。
【0293】 原線の統一された表現には、ウィンドウ座標内の頂点のオリジナルセットに割
り付けられた原線ディスクリプタが使用される。なお、次のフラグは有効なかつ
意味のある値を持つディスクリプタを示す。VtxYmin、VtxYmax、VtxLeftC、VtxR
ightC、LeftCorner、及びRightCornerである。
【0294】 三角形の場合、三角形の頂点をそれらのy座標で分類することによって上記デ
ィスクリプタが得られる。線セグメントの場合、これらディスクリプタは、線四
辺形頂点が生成される時に割り付けられる。VtxYminは、最小y値を持つ頂点で
ある。VtxYmaxは、最大y値を持つ頂点である。VtxLeftCは、三角形のケースで
は長いyエッジの左側にある頂点であり(頂点VtxYmin及びVtxYmaxを組み合わせ
ることにより形成される三角形のエッジ)、平行四辺形のケースでは頂点VtxYmi
n及びVtxYmaxを組み合わせることにより形成される四辺形の左側にある頂点であ
る。三角形の長いyエッジが左エッジでもある場合は、フラグLeftCornerはFALS
E(0)であり、これはVtxLeftCが無効であることを示す。同様に、VtxRightCは、
三角形のケースでは長いyエッジの右側にある頂点であり、頂点VtsYmin及びVtx
Ymaxを組み合わせることにより形成される四辺形の右側にある頂点である。三角
形の長いエッジが右側のエッジでもある場合は、フラグRightCornerはFALSE(0
)であり、これはVtxRightCが無効であることを示す。これらディスクリプタは
、タイルエッジの上部及び下部への原線の点描に使用される。実行中は、VtxYmi
n、VtxYmax、VtxLeftC、及びVtxRightCはオリジナルの原線頂点へのインデック
スであることに注意する。
【0295】 付加的ディスクリプタとしては、VtxXmin、VtxXmax、VtxTopC、VtxBotC、TopC
orner、及びBottomCornerがある。三角形の場合、これらのディスクリプタは、
三角形の頂点をそれらのx座標で分類することにより得られる。線セグメントの
場合、これらのディスクリプタは、線四辺形頂点が生成されると割り付けらる。
VtxXminは最小x値を持つ頂点である。VtxXmaxは最大x値を持つ頂点である。三
角形の場合、VtxTopCは長いxエッジ(VtxXmin及びVtxXmaxを組み合わせたエッ
ジ)上にある頂点であり、平行四辺形の場合は、頂点VtxXmin及びVtxXmaxを組
み合わせることによって形成される対角線上の頂点である。三角形の長いxエッ
ジが上部エッジでもある場合、フラグTopCornerはFALSE(0)であり、VtxTopC
が無効であることを示す。同様に、三角形の場合、VtxBotCは、長いx軸の下に
ある頂点であり、平行四辺形の場合は、頂点VtxXmin及びVtxXmaxを組み合わせて
形成される対角線の下にある頂点である。三角形の長いxエッジが下部エッジで
もある場合、フラグBottomCornerはFALSE(0)であり、VtxBotCが無効であること
を示す。これらのディスクリプタは、左右のタイルエッジ上の原線をクリッピン
グするのに使用される。実行時には、VtxXmin、VtxXmax、VtxTopC、及びVtxBoC
はオリジナルの原線頂点内へのインデックスであることに注意する。
【0296】 図47に頂点の割り付けを図示する。なお、我々は{SIYmaxLeft,SIYmaxRight,
SILeftYmin,SIRghtYmin}として表現される4つの多角形のエッジのスロープ(δ
x/δy)及び逆のスロープ{rSIXminTop,rSIXminBot,rSITopXmax,rSIBoXmax}を
使用する。使用されているスロープ名前付け変換はSIStrEndである。SIはスロー
プを表し、Strtはエッジの最初の頂点識別子、Endは二つ目の頂点識別子である
。従って、SIYmaxLeftは左エッジのスロープでありVtxYMax及びVtxLeftCを続け
る。leftCが有効でない時、SIYmaxは長いエッジのスロープである。正面のrの
文字は、スロープが相反的であることことを示す。例えば、rは(δx/δy)
ではなく(δy/δx)を表している。図48にスロープ割り付けを図示する。
【0297】 これらディスクリプタの全てが平行四辺形の原線に対する有効な値を持ってい
るが、三角形に対してはそれらの全部が有効とは限らない。始めは、三角形や平
行四辺形などの簡単な原線を表すかなりの数のディスクリプタが存在するように
見える。しかしながら、本発明者らが後述するように、それらディスクリプタは
比較的簡単に入手でき、良好な統一的原線セットアップ法を提供する。
【0298】 STPによる種々の原線の処理中のステップの検査が下記の機能ユニットを生じ
る。 1. 三角形ディスクリプタ 2. 深度の傾き及びオフセット演算 3. 線を四辺形に変換するための頂点生成 4. 点描線処理 5. タイルへの四辺形クリッピング 6. Zmin,Zref,Bbox演算 7. 点プロセッサ 下記の各項で各ユニットのアーキテクチュアを詳述する。 5.6.2.2 三角形ディスクリプタ 三角形の場合、Setupは次の頂点のセットによりスタートする。(X0、Y0、Z0
)、(X1,Y1,Z1)及び(X2,Y2,Z2)である。この3つは、それぞれxにより分類
された頂点にへのインデックスj0、j1、j2である(昇順)。
【0299】 インデックスj0、j1、及びj2は、(dx/dy)導関数のセットの計算
に使用される。インデックスj0、j1、及びj2は、エッジに対する(dy/
dx)の演算に使用される。
【0300】
【数11】 我々は、同様のスロープの2つのエッジを持つ三角形のようなエッジ上の三角
形は廃棄する。中央の頂点が左右どちらにあるかは、頂点v[i2]及びv[i1]によ
って形成される線のスロープdx2/dy及び頂点v[i2]及びv[i0]により形成さ
れる線のdx0/dyの比較によって決定される。(dx2/dy>dx0/dy
)の場合、中央の頂点は長いエッジの右側に位置し、他の場合は、長いエッジの
左側に位置する。演算された値は次に原線のディスクリプタに割り付けられる。
xディスクリプタも同様に割り付けられる。このようにして、我々は三角形の処
理に必要な頂点ディスクリプタを得る。 5.6.2.3 深度の傾き及びオフセット演算 深度の傾きは、x及びy軸に沿ったzの部分導関数である。我々は下記の式を
使用する。
【0301】
【数12】 Setupは、各頂点z値用にSortユニットから26ビット(s25)を
受信する。部分導関数は、1.24.10の精度値として算出される。x、y座
標は、ピクセルごとの(8×8)サブラスターグリッドに対応する制度を伴う14
ビット整数である。部分導関数は、サブラスターグリッドのスケールで演算され
る。
【0302】 多角形のオフセットは下記により与えられる。 オフセット=8×係数×Max(|δZ|δX|δY|)+(r×ユニット) 「係数」はSRTブロックから渡される。(r*ユニット)オフセット部分は
GEO内でケアされる。我々は、STP内でのみ最初の項を演算する。傾きの度
合いを説明するために8による乗算が行われる。深度値は24ビット整数として表
される。オフセットは各頂点z値に加えられる。算出されたオフセットは、z値
に加えられる前に24ビット(実際にはs24)にクランプされる。 5.6.2.4 四辺形頂点生成 我々は、線セグメントを幅wの平行四辺形に変換する。我々は、一致するエン
ドポイントを持つ線などのエンド上の線を廃棄する。エンド上の線の非廃棄によ
り、線に対して幅ゼロの四辺形が生成される。本四辺形の生成は不要なパケット
のパイプを通じて送信を生じさせ、まれな場合には、VSPさえも発生し、異常な
ピクセルの照度をもたらす。オフセットのカップリング及びディスクリプタへの
頂点の割り付けのプロセスは以前に示したが、非常に直覚的である。アーキテク
チュア上のパイプラインスルーは、可能なピットフォールを監視することを要求
する。線のエンドポイントが与えられ、下記のようにトリゴメトリックを算出す
る。 run=|(x1-x0)|:rise=|(y1-y0)|; tan(a)=rise/run; cos(a)=1/sqt(1+tan(a)*tan(a)): sin(a)=tan(a)/sqt(1+tan(a)*tan(a)); 我々は線の幅をwと想定し、エンドポイントにおける水平及び垂直頂点の遷移
は、図42及び43に示されるようにそれぞれxhw及びyhwにより与えられ
ると想定する。次に4つの四辺形の頂点が下記のように割り付けられる。 V[0]=(x0−xhw、y0+yhw);V[1](x0+xhw、y0−yhw)
; V[2]=(x1−xhw、y1+yhw);V[3]=(x1+xhw、y1−yh
w); Xhw及びyhwとそれに続く四辺形の演算は、線の方角及びそのアライアシン
グ状態に基づいて行われる。図49に線の方向に基づいた四辺形割り付けを示す
【0303】 線が位置する四辺形は、(x0、y0)に対する(x1、y1)の相対位置を
見ることによって決定される。xhw、yhw、及び四辺形用の原線ディスクリ
プタが決定される。本発明者らは、StrtClipX,StrtClipY、EndClipX,EndClipY,O
pX,及びOpYのアサイメントもここに加えた。これら6つのパラメータは、点描線
の処理中に使用される。StrtClipX,StrtClipY,OpX,及びOpYは、完全にタイルの
外側にある全ての点描セグメントの初期除去中に使用される。OPSに伴うEndClip
X,EndClipYは、いつ線がタイルを励起するかを決定するのに使用される。
【0304】 本処理は、さらなる処理のために、我々に四辺形用の頂点及び原線ディスクリ
プタを与える。 5.6.2.5 点描線処理 本規格中の他の場所に概要を示すように、点描線処理には2つのステージがあ
る。最初にタイルに接触していない点描セグメントを取り除き、新たな開始点描
ビットを計算する。次に、線を横切って点描内の1ビットの列に対応する線長を
生成する。四辺形頂点生成が我々に半値幅の遷移を提供してくれたものと想定す
る。最初のステップは、ガードバンドによりエッジを遷移した後に線のタイル境
界との交差点を探し出すことである。SRTブロックが我々に対してタイルに接触
している線のみを送信することに注目する。従って、スロープなどに基づいた線
の三重リジェクションをチェックする必要がある。StrtClipX,StrtClipY,OpX,及
びOpYは前節で入手されている。
【0305】 一旦交差点(xint,yint)が演算されると、与えられた開始点と交差点の間にわ
たる点描パターンビットの数を見つける。本stplStartは、nビットに加えられ
、考慮のために必要な現点描を見つけるのに低位の4ビットが必要である。StplR
epeatStartは、変更されないままである。線の開始点は、「nビット」点描パタ
ーンビットの収容に使用される線の長さにより遷移する。
【0306】 本発明者らは、よりタイトなクリッピングを行い、新たなstplRepeatStartを
生成することもできたことに注意するべきである。本手順は、最良の場合は最大
で追加四辺形の1処理をセーブするので、行われることはない。この利点がハー
ドウェアコストを増加することはない。
【0307】 我々はここで、線セグメントを横切り、最初のビット用のstplRepeatStartに
おいて開始する更なる繰り返し係数を用いてstplStartビットから点描パターン
内の1ビットの各走行用の四辺形の生成を開始する。実施例について考える。St
plStartが14でstplRepeatが5でstplRepeatStartが4の場合、我々は、15番目
のビット(例えば点描パターン内の最終ビット)に移る前に14番目のビットを
サンプルパターンで一回塗る。14番目及び15番目のビットの双方が設定された
ら、0番目の点描ビットは設定されず、四辺形線セグメントは6の長さを持つ。
擬似コード内のXscale及びYscaleは、点描線の前処理中にサブルーチンDoStippl
eClip内で先に演算されたそれらと同じものである。
【0308】 一度得られた線セグメントエンドポイントは、実線として収容可能である。全
ての四辺形に共通のパラメータが一度だけ演算されれば済むように、マイクロア
ーキテクチュアに最適化が導入される。深度の傾き、線スロープ、深度オフセッ
ト、及びxhw、yhwは全ての点描四辺形に共通であり、それゆえ一度だけ生
成すれば良い。 5.6.2.6 タイル境界にクリッピングされた四辺形 最小z及びCULブロック内でMCCAM選別に必要なバウンディングパラメータを得
るために、我々は現タイル上の原線の交差を考慮する必要がある。我々の統一さ
れた原線表現において、我々はさらに一般化された四辺形を使用して三角形を表
現する。我々は、原線クリップディスクリプタを使用してタイル上の原線の交差
を表す。これらディスクリプタは、タイルの4つのエッジ及び交差が有効な値を
作成したかを示す有効な添付フラグを持つ原線の交差点である。クリップディス
クリプタのネーミングを図50に示す。下記の各項に原線のタイルへのクリッピ
ングに使用されるアルゴリズムの詳細を示す。 5.6.2.6.1 頂点クリップコードの演算 我々は先ず、各原線の頂点に対してクリップコードを演算する。クリップコー
ドは、図50に示すように頂点に割り付けられており、各頂点に対して下記のよ
うに得られる。
【0309】
【数13】 5.6.2.6.2 交差の演算 我々はクリップコードを使用してクリッッピングされる必要のあるエッジ及び
目標境界を決定する。考慮されている原線は凸面である。各タイルエッジは半平
面を定義し、それゆえ我々は各エッジにおいて2つまたは0個の交差するポイン
トを持つ。
【0310】 上部タイルエッジ上でのクリッピングは、上部タイルエッジ上の左右のクリッ
プ頂点であるlLeft及びlRightを生じる。
【0311】 下部タイルエッジ上のクリッピングは、上部エッジ上のクリッピングと同様に
実行される。下部エッジクリッピングはbLeft及びbRightすなわち、左下部及
び右下部のクリップ頂点を生じる。
【0312】 左右エッジクリッピングは、xに分類された頂点を使用して左エッジに高及び
低交差するポイントlLow及びlHighを、右エッジにrLow及びrHighを生じる。左エ
ッジに対する手順は、下部エッジと同様であり、右エッジに対する手順は、上部
エッジと同様であることに注意する。我々がスロープディスクリプタの代わりに
逆スロープディスクリプタを使用していることにも注意する。
【0313】 左タイルエッジ上のクリッピングは、右タイルエッジと同様に行われる。左エ
ッジクリッピングの出力は2点lLow及びlHighである。
【0314】 我々はここで、8点全て、つまりlLeft、lRight、bLeft、bRight、、lLow、
lHigh、rLow、及びrHighを入手する。 5.6.2.6.3 交差ポイントの有効化 最初に交差ポイントを有効化してそれらが正しい範囲にあることを確認する。
例えば、上部タイルエッジを持つ交差ポイントは、両方ともタイルの左側である
可能性がある。この場合、交差ポイントは無効とマークされる。エッジを持つ交
差が1つまたは両方のタイル上部コーナーを含む場合、有効な新しい交差ポイン
トが生成される。
【0315】 交差ポイントのいずれもが有効でない場合は、原線は廃棄される。ほとんどの
場合、タイルの外側に位置する三角形はSRTブロックにより廃棄される。しかし
ながら、まれなケースでは、そこにおける頂点の11.3へのスナッピングが幾
つかの曲がりくねりの原因となる長く細い三角形のような完全にタイルの外にあ
る三角形を我々が得ることもある。この場合、有効なフラグが我々に三角形を廃
棄することを許可する。 5.6.2.6.4 ウィンドウの外側の四辺形頂点 ウィンドウのエッジにおけるタイル上の広い線により、一つ異常の算出された
値がウィンドウ範囲の外側に位置することが可能である。Setupは、余分な座標
範囲の2ビット(1つは負の値を許可し、1つは大きさの範囲を増加する)をキ
ャリーすることにより上記の状態を処理することができる。CULブロック(x座
標に対して14.2)に送信されるデータの範囲及び精度はウィンドウ範囲内の
点を定義するに十分である。CULブロックがSetupから入手するデータは左右のコ
ーナー・ポイントを含む。四辺形頂点がウィンドウ範囲の外側に落ち込むケース
では、Setupは下記値をCULに渡す。 ・ tRightxがウィンドウ範囲の右側の場合は、右ウィンドウエッジへのクラン
プ ・ tLeftxがウィンドウ範囲左側の場合は、左ウィンドウエッジへのクランプ ・ v[VtxRightC].xがウィンドウ範囲の右側の場合、例えば右タイルエッジを右
コーナーとして頂点rLowを送信する。 ・ v[VtxLeftC].xがウィンドウ範囲の左側の場合は、左タイルエッジ上の下部
クリップポイントなどのlLowを左コーナーとして送信する。 本処理は、図51に図示されている。
【0316】 三角形がジオメトリによって有効なウィンドウ範囲にクリッピングされること
に注意する。我々が配慮しなければならないのは、広い線に対して生成される四
辺形だけである。Cullは、ラスタ画像処理中にスパン及び点を計算しているばあ
いに、エッジ歩行中の範囲外のx値の原因となるオーバーフローおよびアンダー
フローを検出する必要がある。オーバーフローまたはアンダーフローが起きた場
合、x範囲はタイル範囲内でクランピングされなければならない。
【0317】 我々はここで、クリッピングされた点と有効なフラグを得た。我々はここで、
zmin、バウンディングボックス、及び参照スタンプの演算へと進むことができる
。 5.6.2.7 バウンディングボックス、最小Z及び参照スタンプ決定 バウンディングボックス、zMin、及び参照スタンプ値の演算のために、我々は
原線のタイルとの交差を使用する。我々は、タイル内に位置する原線の一部に対
して最小Z値を演算する。境界への原線のクリッピングは、Cullブロック内MCCM
選別に対するZminのタイトな評価を得るために重要である。 5.6.2.7.1 バウンディングボックス演算 原線交差のバウンディングボックスはクリッピングされた頂点を検査すること
によって決定される。我々は最初にバウンディングボックスをタイル境界に初期
化し、次にエッジクリップ点を検査することによりタイル内へと移動する。
【0318】 我々はここで、バウンディングボックスを得た。これらxmin,xmax,ymin,ymax
pixel座標はスタンプ座標へと変換する必要がある。本処理は、先ず座標をタイ
ル関連の値に変換し、次に3つの高位ビット(例:1ビットにより右シフト)を
考慮することにより完了する。xmax(及び/またはymax)がタイルのエッジ上に
ある場合を除いてはこの処理は効果的である。その場合、我々はシフティング前
にxmax(及び/またはymax)を1だけ増加させる。 5.6.2.7.2 最小Z演算 我々はここで、原線のタイルとの交差に対する最小z値を演算した。我々は、
8つの交差ポイント及び、クリッピング演算に含まれていない可能性があるため
に、頂点i1を考慮する必要がある。深度演算は高価な動作であり、それゆえ我々
は実行すべき深度演算の回数の最小化を望んでいることに注意すべきである。x
およびy内の部分的な導関数の符号を検査することにより、我々は、原線が完全
にタイルをカバーしている場合には、最小深度値に対応するタイルコーナーを検
出することができる。一旦タイルコーナーを決定すると、我々が必要なのは、2
つの最も近いクリッピングされた点における深度値を演算することだけである。
頂点i1におけるz値に伴うこれら2つの値は、最小z値を提供する。
【0319】 我々はここで、最小z値及びそれを得たクリップ頂点を知った。Z値は、CULに
送信される前に24ビットにクランピングされる。我々はここで、参照スタンプ
及び参照z値を演算する。 5.6.2.7.3 参照スタンプ及び参照Z演算 原線の各頂点に対してZataiを渡す代わりに、Setupは原線内の特定の点におけ
るZ値を表現する単一のZ値を渡す。Setupは、最小zを持つ頂点を含む参照スタ
ンプを選ぶ。我々は、頂点座標を整数値に切り上げ、対応するスタンプを検出す
ることにより本処理を完了する。右のエッジ上の頂点の場合は、参照スタンプが
演算される前に、x座標は減じられる。Logicが参照スタンプを識別するために
使用さる。
【0320】 参照スタンプは、チップ頂点のx及びy座標に増分値を加え、x及びy値を最
も近くにある偶数に切り上げて含まれているスタンプを検出することにより識別
される。
【0321】 参照Z値ZrefTileは参照スタンプの中央で計算される。Setupは、タイル内の位
置を指定する3ビット値のペアxrefStamp及びyRefStampにより参照スタンプを
識別する。参照スタンプはスタンプ内のタイルのコーナーからのオフセットとし
て識別されることに注意するべきである。
【0322】 我々は、スクリーンスペース内のオフセットを得るために、8(スタンプ内の
サブピクセルの数)で乗算を行わなければならない。
【0323】
【数14】 我々はここで、三角形及び平行四辺形の処理に必要な全てを得た。 5.6.2.8 点処理 点の場合は、下記を検出する(図52参照)。 CY7(タイル座標内のタイルの上部エッジにクリップされる円の最上部の点) CY8(タイル座標内のタイルの下部エッジにクリップされる円の最下部の点) Yoffset(CYTとクリッピングされていない円の下部の間の距離) X0(ウィンドウ座標内の中央のX座標) 点に対する必要な計算中では、我々は、0.0から16.0の範囲を持つ関連
y値用の8ビットを使用することに注意する。本処理は5整数ビットを必要とす
る。ピクセルあたりの8サブレスターに対して3少数ビットが考慮される。 5.6.2.8.1 無限dx/dy 無限dx/dyは、エッジが完全に水平であることを暗示している。水平エッ
ジの場合は、2つのエンドポイントの内の一つがコーナー頂点(VtxLeftCまたは
VtxRightC)になるはずである。座標がウィンドウ範囲にある原線では、Cullは
無限スロープを利用しない。なぜならば、Cullのエッジ歩行アルゴリズムでは、
左及び/または右コーナーの頂点の値から、Cullがすでにコーナーを回っており
、水平エッジに沿って歩く必要は全くないということが分かる。
【0324】 不都合なことには、四辺形の頂点がウィンドウ範囲の外側に落ち込んだ場合は
、我々は、特に非アンチアライアスド線の場合に、軽微な問題に遭遇する。右上
部のコーナーがウィンドウ範囲の外側にある非アンチアライアスド線を考慮する
。RightCは次にrLowクリップポイントに移り、Cullのエッジ歩行は水平エッジ
のコーナーを曲がることは考えず、tRight(またはtLeft)のスパンエンドポ
イントを計算する。
【0325】 この場合、Cullのエッジ歩行はスロープを必要とする。エッジ歩行の開始点は
ウィンドウの最も端にあるために、エッジ歩行が現在符号が付加されているスロ
ープにより計算するXがオーバーフロー(またはアンダーフロー)の原因となり
、Xは単にウィンドウエッジにクランプバックされる。従って、どのようなスロ
ープの値を使用しているかは、それが正しい符号を持っている限り、実際には重
要ではない。
【0326】 無限の値も、Setup自身によるスロープの利用の上では重要ではない。Setupは
、スロープを使用してタイルエッジを含む原線のエッジの交差を計算する。交差
の計算で使用する等式は、X=X0+△Y*dx/dyである。この場合、無限のdx/dyが
必要なゼロの△Yを含む。従って、dx/dyの値は重要ではない。
【0327】 Setupは、内部的に浮動小数点フォーマットでスロープを計算する。無限結果
が起きた場合には、浮動小数点ユニットが無限大フラグを出す。Setupは無限ス
ロープを気にせず、Cullは無限スロープの大きさを気にしないが、符号は気にす
るため、我々は実際に無限大を表す必要はない。正しい符号を決定するわずらわ
しさを解消するために、Setupは無限スロープをCull上に渡す前に強制的にZERO
に設定する。 5.7 Cullブロック(CUL) 5.7.1 CULブロックの機能概要 Cullユニットは次の処理を受け持つ。1)事前シェ−ディングをしている隠れ
た表面の除去、及び2)原線ジオメトリのエンティティー(三角形、線、及び点
)を可視スタンプポーション(VSP)と呼ばれるスタンプベースのジオメトリエ
ンティティーへの分解である。Cullユニットは、一般的に、隠れた表面の保存性
選別を行う。Cullは、アルファテスト及びステンシルテストなどの一部「フラグ
メント動作」を扱わないため、隠れた表面を取り除くだけである。Cullブロック
のサンプルzバッファは2つの深度値を持つことができるが、Cullブロックは各
サンプルごとに原線の属性を保存するだけである。このように、サンプルが2つ
のジオメトリから混合する色を必要とする場合は、両混合ジオメトリを隠す後続
のジオメトリが存在する可能性がある場合でもCullは最初の原線を(タイムオー
ダーを使用して)パイプラインに送り込む必要がある。
【0328】 Cullユニットは、Setup Output Primitiveパケットを受信する。受信するパケ
ットの各々は、タイルごとに三角形、線、またはポイントを表す。Sortは、入り
ジオメトリエンティティーをタイルに貯蔵するユニットである。Setupは、隠れ
た表面の除去のためにより詳細なジオメトリに関する情報をCullに提供する目的
で原線を前処理するユニットである。Setupは、全てのエッジ、タイルを持つ原
線のバウンディングボックス、タイル内原線の最小深度値(一番前)及び他の関
連データの前計算を行う。Sortに先立ち、Mode Extractionはすでにカラー、ラ
イト、テクスチャ、及び関連モードデータを抽出している。Cullは、Cull及びPo
lygonメモリ内に保存されたカラー、ライト、及びテクスチャデータをポイント
するColorポインタと呼ばれるポインタに関連するモードデータを取得するだけ
である。
【0329】 Cullユニットは一度に1つの可視スタンプポーション (VSP)をMode Injection
ユニットに送信する。Mode Injectionは、VSPをそのカラー、ライト、及びテク
スチャデータと再結合し、パイプライン内のFragment及び後続のステージに送信
する。
【0330】 Cullユニットは2つの主な機能を実行する。一次機能は、フレームバッファの
最終結果に影響を及ぼさないように保証されたジオメトリの除去である(例;保
存ベースの隠れた表面の除去)。第二の機能は、スタンプポーション(SP)単位
への原線の分解である。スタンプポーションは、原線の与えられたスタンプとの
交差である。ポーションの量はサンプリングにより決定される。いずれのスタン
プも、16の事前に決定されたサンプルポイントを持つ(実際には、スタンプ内
の各ピクセルは4つの事前に決定されたサンプルポイントを持つ)。次に、ポー
ションの「サイズ」が数字で与えられ、与えられたスタンプ内でサンプルポイン
トが原線にカバーされる。
【0331】 Cullは一度に1タイルの原線を処理する。しかしながら、現フレームの場合は
、パイプラインは次の2つのモードのいずれかで動作する。1)Time Orderモー
ド、または2)Stored Transparencyモードである。Time Orderモードでは、頂
点及びモードのタイムオーダーは各タイルと共に保存され、タイルはデータを通
じて単一のパス内で処理される。すなわち、与えられたタイルでは、頂点及びモ
ードが書き込み時と同じ順序で読み出されるが、現タイルに影響を与えない場合
にはスキップされる。Sorted Transparencyモードでは、各タイルの処理は複数
のパスに分割される。最初のパスでは、保証された不透明ジオメトリが処理され
る(Sortブロックは本パスに対して非透過ジオメトリを送信するだけである)。
後続のパスでは、潜在的に透過なジオメトリが処理される(Sortブロックは、各
パスに対して全ての透過ジオメトリを繰り返し送信する)。各パス内では、タイ
ムオーダリングが保存され、モードデータが本パスの正しいタイムオーダー箇所
に挿入される。
【0332】 Time Orderモードでは、タイル内に「単純不透明ジオメトリ」(例:しザース
テスト、アルファテスト、カラーテスト、ステンシルテスト、ブレンド、または
ロジコプなし)しかない場合は、Cullは、Mode Injectionに対していずれのVSPを
もディスパッチするまえに、タイル内の原線を処理する。なぜならば、Cullの隠
れた正面の除去アルゴリズムは、各サンプルに対し、そのサンプルをカバーする
原線(例:カラー)を明確に決定するためである。
【0333】 Time Orderモードでは、入力ジオメトリがタイル内で「単純不透明ジオメトリ
」に限定されていない場合は、VSP(VSPの全セットまたは選択されたVSP)の配
列ディスパッチが必要となる場合がある。しかしながら、別のタイルのVSPのデ
ィスパッチが可能になる前に与えられたタイルの全VSPは例外なくディスパッチ
される。一般的に、1つ以上のジオメトリが、いずれかのサンプルに対して(ピ
クセル内の)最終タイル値に影響を与え得る場合は、早期のディスパッチが必要
になる。
【0334】 Sorted Transparencyモードでは、各タイルは複数パス内で処理される(同タ
イル内に少なくとも幾つかのジオメトリがあるものと想定)。各パスにおいては
、VSPの早期ディスパッチはない。
【0335】 入力パケットが原線パケットの場合、PrimTypeパラメータが原線タイプ(三角
形、線、または点)を示す。すなわち、パケットは原線を平行四辺形として表し
(スクリーンには合わせない)、三角形及び点として表すのは縮退の場合である
。ここで、「統一された表現」は、「Setup Output Primitiveパケット」の節で
詳細に述べられている。このパケットは、Mode Injectionが使用するカラーポイ
ンタを含む。このパケットは、その多くが各原線ごとに変化できる幾つかのモー
ドビットも含む。次のものが「モードビット」と認識され、Z Cull状態マシーン
に入力される。CullFlushCurrent、DoAlphaTest、DoABlend、DepthFunc、DepthT
estEnabled、DepthTestMask、及びNoColorである。
【0336】 原線に加えて、Cullは次のパケットタイプを受信する。Setup Packet Clearパ
ケット、Setup Output Cullパケット、Setup Output Begin Frameパケット、 S
etup Output End Frameパケット、Setup Output Begin Tileパケット、及びSetu
p Output Tweenパケットである。これらパケットタイプの各々は、後続の節で詳
細に述べられている。しかしながら、これらパケットは総体的に「モードパケッ
ト」として知られる(確実に惑わされ易い名前である)。
【0337】 Setup Output Clearパケットは、ある種のバッファクリアが行われることを示
している。しかしながら、ユーザフレームの開始時の(そしてシザーステストを
受けない)バッファクリアは、開始タイルパケットに含まれる。
【0338】 Setup Output Cullパケットは、モードビットのパケットである。本パケット
は、次の処理用のビットを含む。1)MCCM Cull及びZ Cullプロセスの有効化/
無効化、2)Cullブロックから全VSPを洗い流すビットCullFlushAll、及び3)
3タイプの原線のアンチアライアシングを無効化するAliasPolys、AliasLines、
及びAliasPointsである。
【0339】 Setup Output Begin Frameパケットは、Cullに対して新たなフレームが開始中
であることを伝える。次のパケットはSort Output Begin Tileパケットである。
Setup Output Begin Frameパケットは、パイプライン全体を通じて必要な全ての
フレーム前情報を含む。
【0340】 Setup Output End Frameパケットはフレームが終わり、現タイルの入力が完了
したことを示す。
【0341】 Setup Output Begin Tileパケットは、Cullに対して現タイルが終わり、処理
されたデータがパイプラインに洗い流されることを伝える。同時に、本パケット
は新たなタイルの原線の処理を始める。パイプラインがSorted Transparencyモ
ードにあるためにタイルを繰り返さなければならない場合には、このタイルは他
のSetup Output Begin Tileパケットを必要とする。従って、特定なタイルが不
透明なパスと4つの透過パスを必要とする場合、合計5つの開始タイルパケット
がSetupから送信される。本パケットは、ウィンドウ内のタイルの位置を指定す
る。
【0342】 Setup Output Tweenパケットは、実際にはタイル間であるフレーム間(‘twee
nと略)で生起する。Culは、このパケットを空のボックスとして扱い、単にパイ
プライン内を送信する。このパケットは、1つのパラメータ、144ビットのTw
eenDataしか持たない。
【0343】 図53にCullブロックの基本ブロック図を示す。
【0344】 原線を受信すると、Cullは、原線のバウンディングボックスを持つMCCA900
2に問い合わせて受信した原線を除去しようとする。MCCAMが原線が完全にタイ
ル内に隠れていると伝えてきた場合は、原線は捨てられる。MCCAMが原線を完全
に拒絶できない場合は、スタンプリスト生成する。リスト内の各スタンプは、目
に見える可能性のある原線の一部を含むことがある。この潜在的に可視なスタン
プのリストは、Cullのスタンプ選択ブロック9008に送信される。スタンプ選
択ブロックは、原線のジオメトリデータを使用して、実際に原線が接触するタイ
ルの各スタンプの配列内のスタンプのセットを決定する。MCCAMが提供するスタ
ンプリストとの組み合わせで、スタンプ選択ブロックは、一度に1つの潜在的に
可視なスタンプ9006をZ Cullブロック9012に向けてディスパッチする。
各スタンプは16×16サブピクセルの格子に分割される。各水平格子線は、サ
ブラスター線と呼ばれる。スタンプごとの各16サンプル点は、256の予想さ
れるサブピクセル位置の内の一つの中心で(アンチアライアスド原線に対して)
落ち込む。各ピクセルは、その境界内に4サンプル点を持つ。原線に接触するス
タンプの配列内のスタンプのセットの決定には、少なくとも1サンプル点を含む
各サブラスター線内原線の最も左または右の位置の計算が関係する。我々は、こ
れら最も左及び右の位置をXleftSubSi及びXrightSubSiと呼ぶ。これらは、それ
ぞれサンプルiに対するx最左サブラスター線及びx最右サブラスター線を表す
。サンプルは0から15に計数される。XleftSubSi及びXrighSubSiの決定は、特
にエッジ歩行プロセスと呼ばれる。我々がエッジ(x0、y0)上の点を知って
いる場合は、y1のy位置に対応するx1の値は下記により簡単に決定できる。
【0345】
【数15】 スタンプ番号に加えて、16のXleftSubSi及びXrighSubSiのペアのセットもス
タンプ選択ブロックからZ Cullに送信される。
【0346】 Z Cullユニットは一度に1つのスタンプ番号(またはStampID)を受信する。
各スタンプ番号はMCCAMの決定により可視の可能性がある原線のポーションを含
む。16のXleftSubSi及びXrightSubSiのペアのセットは、我々に対して16サ
ンプル点の内のいずれが原線によってカバーされるかの選択を可能とする。サン
プルiのx座標値Xsampleiが下式を満足すると、サンプルiはカバーされている
【0347】 XleftSubSi×Xsamplei<XrightSubSi カバーされた各サンプルに対して、我々は、そのサンプル点において原線のz
値を計算する。同時に、16サンプル点全てに対する原z値及びz状態がサンプ
ルzバッファから読み出される。各サンプル点は、「保存性」または「正確」の
z状態を持つことができる。Cullが受信するモードビットと組み合わされたz状
態は、サンプル有限状態マシンを駆動する。各サンプル点は、他のサンプルから
独立したFSMを持つ。状態マシンは、原線のz値及びzバッファのz値間でサン
プルごとの比較を制御する。比較結果は、新たな原線が原線がカバーする各サン
プル点において見えているか隠されているかを決定するのに使用される。原線が
見えるサンプル点を持っている場合、可視サンプルパターンが新たなVSPカバレ
ッジマスク内に作成される。サンプルのピクセルFSMも、zバッファがどのよう
に同サンプルのために更新されるべきか、及び新たなVSPのサンプル点が早期に
ディスパッチされるべきであるかを決定する。なお、上記FSMは、間違いなくサ
ンプルポイントであるいずれかの旧VSPが、破壊されるべきか、早期にディスパ
ッチされるべきかを決定する。これらのサンプルごとの制御信号は、Z Cullによ
るSendNew、KeepOld、及びSendOldとして生成され、スタンプオプションマスク
ユニット9014に送信される。ピクセルの制限状態用の状態テーブルはアーキ
テクチュアの規格に記されているため、ここでは繰り返さない。最大16個のサ
ンプルポイントのz値は、MCCAMを更新するのに使用される。
【0348】 分類された透過性はZ Cullの追加的発行を提示し、サンプルzバッファに対し
てZfar及びZnear値に関する議論をもたらす。Sorted Transparencyモードでは、
我々は、透過な原線に対し、タイムオーダーのラスター画像処理の通常モードの
代わりに一番前面にある不透明層に最も近い層から空間オーダーでラスター画像
処理されることを望む。本処理は、タイル用の透過原線がCullユニットを数回通
り抜けることを要求する。最初に、Sortユニットは不透明原線のみを送信する。
z値は前項で説明されているように更新される。我々は、タイプZtarの不透明原
線に対してz値を呼び出す。パスの最後には、不透明VSPがディスパッチされる
。二回目のSortは、タイル用の透過原線をCullに送信するだけである。最初には
、ZバッファのZnearポーションは、考えられる最小の値にプリセットされる。Zf
arの後ろにあるz値を持つサンプル点は隠されているが、Zfarの前、Znearの後
ろのz値は不透明に近く、それゆえ現Znearのz値を置き換える。パスの最後で
は、我々は不透明層に一番近い層のz値を持つ。不透明な層に一番近いことを表
すVSPがディスパッチされる。Znear及びZfarの役目は入れ替えられ、Z Cullは透
過な原線の2番目のパスを受信する。本プロセスは、Z Cullが透過な原線の全て
の可能な層がそれ自身により処理されたと確定するまでは続けられる。分類され
た透過モードのZ Cullもまたピクセル制限マシンにより制御される。
【0349】 スタンプポーションマスクブロックは、タイル内の各スタンプに対してVSPカ
バレッジマスクを持っている。スタンプが保有できるVSPの数は、16までであ
る。Z Cullから新たなVSPが来た場合は、VSPマスクは更新または早期ディスパッ
チが必要になる。スタンプポーションマスクブロックは、厳密にSendNew、KeepO
ld、及びSendOld制御信号によりマスク更新またはディスパッチを行う。新VSPが
潜在的にスタンプ内の全旧VSPのカバレッジマスクの変更能力を持っているため
、最大16個の旧VSPの更新が同時に起るはずである。スタンプポーションデータ
ブロック9016は、カラーポインタも含むVSPに伴う他の情報を含んでいる。
スタンプポーションデータメモリもタイルに含まれる全VSP用のデータを持つ必
要がある。新VSPが作成されると、それに伴うデータがメモリに保存される必要
がある。旧VSPがディスパッチされると、そのデータがメモリから検索される。
5.7.2 Cullブロック機能詳細 Cullブロックは次のサブユニットにより構成される。1)入力FIFO、2)MCCAM
Cull、3)Sibrasterizer、4)行選択、5)Z Cull、6)MCCAM更新、7)新VSPキ
ュー、8)Stamp Portionメモリマスク、9)Stamp Portionメモリスタンプポーシ
ョンメモリデータ、10)ディスパッチキュー、及び11)ディスパッチロジッ
クである。これらサブユニットを下記の各節で説明する。
【0350】 図54にCullサブユニットのブロック図を示す。 5.7.2.1 入力FIFO 入力FIFOサブユニット9050は、Setupユニット8000とインタフェース
する。本サブユニットはSetupからデータパケットを受信し、各パケットをキュ
ー内に収容する。必要なFIFOメモリ場所の数は、16から32の間であるが、こ
こでは我々は、深度を16と仮定している。 5.7.2.2 MCCAM Cull MCCAM Cullサブブロック9002は、Spatial Addressableメモリ(MCCAM)を
使用して原線のバウンディングボックス上で空間的問い合わせを行うことにより
バウンディングボックス内の可視の可能性があるスタンプのセットを決定する。
Z比較のために本サブブロックが使用する値は、ZminTileである。MCCAM Cullは
、入力FIFOから1サイクルにつき1つの原線を処理する。FIFOが空でなく、取り
除かれた最後の原線がMCCAM Cullで決定されたごとく完全に隠されているか、ま
たは最後の原線が現在Subrasterizer95052により処理されている場合には
、FIFOからの読み出し動作が実行される。すなわち、MCCAM CullはSubrasterize
rの「ワーカヘッド」にはならない。むしろ、本サブユニットはSubrasterizerが
処理する必要のある次の原線を得て、その後待ち状態に入るだけである。 5.7.2.3 スタンプ選択ロジック内Subrasterizer サブラスタライザ9052は、エッジ歩行を実行するサブユニットである(実
際の演算は、「歩行」の語が示唆するようにインタラクティブではない)。スタ
ンプの各列はMCCAM Cullはスタンプの各列が潜在的に可視であることを示してい
る。本サブユニットは、16個のサンプル点の各々に対してXleftSubi及びXrightS
ubiを同時に計算する。各XleftSubi及びXrightSubiのペアは、原線に接触される
列内のスタンプのセットを指定する。Subrasterizerは、サンプル点が位置する
各サブラスタ線に対してスタンプの列内で接触されるスタンプのセットを決定し
、1つの接触されたスタンプのリスト内に接触された16セットのスタンプを組
み合わせる。Subrasterizerは、各スタンプの列のために要求をMCCAM Cullに渡
し、可視スタンプリストを受信する。可視スタンプリストは、接触されたスタン
プリストと組み合わされ、それによりスタンプ列内の最終潜在可視スタンプリス
トが決定される。各列に対しては、可視スタンプセットがStamp Selectionロジ
ックのColumn Selectionポーションに送信される。Subrasterizerは、各サイク
ルごとに1つのスタンプの列を処理できる。原線が1つ以上のスタンプの列を含
んでいると、Subrasterizerは、1サイクル異常を費やしてその原線を処理し、
それゆえMCCAMに対して入力FIFOからの原線の除去を中断するように要求する必
要がある。Subrasterizer自身は、Column Selectionユニットからの要求に従っ
て中断することができる。 5.7.2.4 Stamp Selectionロジック内カラム選択 カラム選択サブユニット9054はZ Cullユニット9012に対して各クロッ
クサイクル内で処理するスタンプを伝える。 5.7.2.5 Z Cull Z Cullサブユニット9012は、サンプルzバッファを含む。Subrasterizer
が計算したXleftSubi及びXrightSubiに基づき、このサブユニットは原線にカバ
ーされるスタンプ内のサンプルポイントのセットを決定する。このサブユニット
は次に、それらのサンプルポイントにおいて原線のz値を計算し、結果のz値を
上記スタンプ用のzバッファ内に保存された対応するz値と比較する。この比較
の結果、現Cullモードビット、及びサンプル状態マシンの状態に基づいてzバッ
ファが更新される。各サンプルに対して、Z Cull内の制限状態マシンが次のビッ
トを生成する。OldSampleKeep、OldSampleSend、NewSampleMask、及びNewSample
Sendである。NewSampleMaskビット(16個)のセットは新たなスタンプポーショ
ン(SP)カバレッジマスクを構成する。新SPがNewVSPキューにディスパッチされ
る。原線がスタンプ内で全く見えない事象(NewSampleMaskビットはFALSE)にお
いては、NewVSPキューには何も送信されない。 5.7.2.6 MCCAM Update MCCAM Updateサブユニット9056は、16個のサンプルポーションに対して最
大16個の更新されたz値を決定し、MCCAMユニットに送信してMCCAMを更新する。
5.7.2.7 NewVSPキュー Z Cullサブユニットは、クロックサイクルごとに各Stamp Portionに対して次
の4つのビットセットを生成する。OldSampleKeep、OldSampleSend、NewSampleM
ask,及びNewSampleSendである。「理想的」な状況下では、SPM Mask&Validサブ
ユニットは、各クロックサイクルで新Stamp Portionを保存する。しかしながら
、VSPの早期ディスパッチが起きた場合は、SPM Mask&Validサブユニットは新Sta
mp Portion用に複数クロックを必要とする。本処理が起きると、NewVSPキュー9
058は新スタンプポーションを保存し、Z Cullに中断せずに進むことを許容す
る。
【0351】 NewVSPキューは単純キューである。本キューは、早期ディスパッチのケースで
のみ有用である。SPM Mask%Validユニットは、一度に1つのVSPしか扱えない。
早期ディスパッチに1つ以上のVSPが関与しており、我々がNewVSPキューを持っ
ていない場合、Z Cullユニットは動作を中断しなければならない。機能解析に基
づき、我々はタイル内で接触されるスタンプを450持つことを期待する。深度
の複雑さが2の場合、我々は各タイルに対してZ Cullから出てきた225のVSP
を得ることを期待する。我々が見ることのできる手段は、平均でスタンプあたり
約4VSPである。カバーする50ピクセル領域をオンにしたブレンドを伴う三角
形は、平均3タイル上で接触でき、タイル内で接触できるスタンプの数は8以下
でなければならない。従って、我々はNewVSPキューの深度を32とする。 5.7.2.8 SPM Mask&Valid Stamp Portionメモリマスク及びValidサブユニットは、タイル用のVSPカバレ
ッジマスクを含む。各VSPエントリは、そこに有効なVSPが保存されているかを示
す有効ビットを必要とする。VSP用の有効ビットは他のメモリに保存されている
。本サブユニットは、マイクロアーキテクチュアのブロック図に示すように二重
バッファリングされている(例:2つのコピーがある)。活性状態ページは、現タ
イル用VSPを含み、一方ディスパッチ状態ページは最後のタイルのVSP(現在ディ
スパッチ中)を含む。新VSPがNewVSPキューからVSPが除去されると、活性状態SP
M Mask&Validユニット9060は、そのマスクメモリにすでに存在するVSPに対
してVSPMaskを更新し、新VSPをメモリの内容に加える。早期ディスパッチを必要
とするカラー混合などの状況が発生した場合は、活性状態のSPM Mask&ValidはSP
M Dataユニットを通じてVSPをディスパッチキューに向けてディスパッチする。
マスク更新または早期ディスパッチの動作は、Z Cull内で生成されるOldSampleK
eep、OldSampleSend、及びNewSampleSend制御信号が制御する。アクティブから
ディスパッチへの、またはその逆の状態遷移は、モードパケットが制御する。タ
イルのパケット信号送出の終わり(TRUEに設定されたCullFlushAllを伴うBegin
Tile、End Frame、Buffer Clear、及びCull Packet)の受信は、タイルをアクテ
ィブ状態からディスパッチ状態への及び逆の切り替えの原因となる。ページイン
ディスパッチ状態は、単純に各スタンプを通して循環し、全VSPをSPM Dataユニ
ット9064へと送信する。本ユニットは受信したVSPをディスパッチキューへ
と進める。 5.7.2.9 SPMデータ Stamp Portion Memory Dataサブユニット9064は、タイル内の各VSP用にZs
tamp、dz/dx、dz/dy、及びColorPointerを保存する。このユニットも二
重バッファリングされている。SPM Mask&Validは、新VSP情報をSPM Dataへと送
信し、それが新VSPを送信すべきかそのメモリにセーブすべきかを伝える。新VSP
がセーブすべき場合は、SPM Mask&ValidはやはりSPM Dataに対して、16の考え
られるスポットの内のどの場所をVSPが占有すべきかを伝える。なお、早期ディ
スパッチの場合は、SPM Dataはやはり旧VSP及びそれに伴う早期ディスパッチを
必要とするVSPMasksのリストを得る。SPM Dataブロックは先ずディスパッチする
必要のある旧VSPがあるかをチェックする。そのようなVSPが一つでも発見できた
場合は、本ブロックは単にそのメモリからVSPデータを読み出し、SPM Mask&Vali
dブロックからのVSPMaskと併合し、VSPをディスパッチキューに入れる。その後
、このブロックは新VSPがやはり送信すべきかをチェックし、すべきであった場
合は、本ブロックは新VSPデータをディスパッチキューに渡す。新VSPが送信すべ
きでない場合は、このブロックは新VSPデータをそのメモリに書き込む。 5.7.2.10 ディスパッチキュー及びディスパッチロジック このユニットは1エントリに相当するデータを2つのSPMディスパッチキュー
の内の1つからMode Injectユニットへと送信する。このユニットは、最初にデ
ィスパッチ状態SPMからディスパッチを試みる。Stamp PortionメモリがそのVSP
を使い果たした後でのみ、本ユニットは活性状態SMPディスパッチキューからデ
ィスパッチを試みる 5.8 Mode Injecionブロック 5.8.1 始めに Mode Injection(MIJ)ブロックは、Mode Extractionブロックとの結合により、
グラフィックス状態及び関連情報を管理する。従来のグラフィックスパイプライ
ン内では、状態変化は増加する。例:状態パラメータの値は、変更されるまでは
有効である。従って、アプリケーションは変化したパラメータだけを更新すれば
良い。さらに、描画は直線的である。例:原線は受信した順で描画される。点、
線、三角形の細片、三角形の扇形、多角形、四辺形、及び四辺形の細片がグラフ
ィックの原線である。このように、全ての状態変化は、原線に関する空間情報を
受信するまではその原線の描画中有効である。
【0352】 本発明の一つの実施例中でAPEXパイプラインとして参照されているように、描
画はタイルベースで行われる。Geometry(GEO)ブロックは原線を順に受信し、全
ての頂点動作を行い、(変形、頂点ライティング、クリッピング、及び原線組み
立て)、及びパイプラインを通してデータを送信する。Sortブロックは、タイム
オーダーデータを受信し、同ブロックが接触するタイルにおいてそのデータを貯
蔵する。(各タイル内では、リストはタイムオーダーとなっている。)CULブロッ
クは、SRTブロックからタイル順にデータを受信し、接待に描画された画像に寄
与することのない原線のパーツを選別する。CULブロックはVSPを生成する。VSP
は、スタンプ上の多角形の可視ポーションに対応する。スタンプは画像の2×2
ピクセル領域である。TEX及びPHGユニットは、VSPを受信し、それぞれフラグメ
ントのテクスチャリング及びライティングする。Pixelブロックなどの最後のブ
ロックは、VSP及びフラグメントのカラーを使用して最終的な絵を生成する。
【0353】 原線は多くのタイルに接触する可能性があり、それゆえ、従来の描画パイプラ
インと違って、フレームの描画中に何度も現れることがある(本原線が接触する
各タイルにつき一回)。パイプラインは、原線がパイプラインを入力した時にグ
ラフィックスの状態を有効に記憶し、SRTから下りてくるパイプラインステージ
の問い合わせを受けるたびに呼び出される必要がある。MEXは、暫定オーダー状
態変更データを収集及びセーブするGeometryとSortブロック間のロジックブロッ
クであり、適切なポインタを原線の頂点に付加して原線が描画される場合に、正
しい状態に伴われる。
【0354】 Mode Injection(MIJ)ブロックは、状態ポインタ(MLMポインタ)が必要な時に
状態などの関連情報の検索する。このブロックは、情報の適切な再パッケージン
グも行う。再パッケージングの例は、多角形メモリ内の頂点データが検索され、
フラグメント用に原線(三角形、線、点)にバンドルされた場合に発生する。
【0355】 動作理論及びAPEX状態管理の背後にある一般原則はMEXブロックのアーキテク
チュア規格中の論点となっている。多角形メモリ内の種々のデータパケットの構
成もMEXブロック規格中で詳細に説明されている。我々は、本書の読者に対して
先ずMEXブロックアーキテクチュア規格を通読することを推奨する。
【0356】 本明細書中で、我々は最初にMIJブロックの基本的要件を説明する。次に我々
は、MIJブロックへの入力及び出力インタフェースについて論じる。機能詳細及
びMIJブロックが使用するアルゴリズムの説明をその後に行う。最後に、我々は
機能及びメモリ帯域幅要件を論じる。 5.8.2 MIJブロックの機能概要 前述したように、MIJはCULブロックからVSPパケットを受信する。各VSPパケッ
トは、2×2ピクセルスタンプ上の原線の可視部分に対応する。Cullブロックか
らMIJブロックに出力されるVSPは、原線によって順序付けられる必要はない。ほ
とんどの場合VSPは、例えば異なる原線に対するVSPがインタリーブされる可能性
があるため、タイル上でVSPの走査順になっている。VSP内のフラグメントのライ
ティング、テクスチャリング、及び構成のために、MIJブロックからのパイプラ
インステージの下流は原線の種類(例:点、線、三角形、線モード三角形)に関
する、ウィンドウ及び目視座標などの原線のジオメトリ、ノーマル、カラー、原
線の頂点におけるテクスチャ座標、及びPixModesなどの描画状態、TextureA、Te
xtureB、Light、Material、及びStippleが原線に適用可能であか、といった情報
を必要とする。この情報はMEXの多角形メモリにセーブされる。MEXは、ColorPoi
ntersもSortに送信される各原線に付加するが、このSortは、また原線のVSPの各
々に渡される。MIJは本ポインタを復号化して多角形メモリから必要な情報を検
索する。
【0357】 MIJはBeingFrameパケットをCULから受信した後でフレーム上での作業を開始す
る。フレーム用のVSP処理は、CULがフレーム内の最初のタイルの処理を終え、MI
Jが最初のタイル用VSPを受信すると開始される。 5.8.2.1 カラーポインタ復号化 カラーポインタは次の3つのパーツから成る。ColorAddress、ColorOffset、
及びColorTypeである。(ColorPointer及びMLM_Pointerの詳細説明に関しては、
モード抽出アーキテクチャ規格として参照される。)ColorAddresは、原線を完
成するColorVertexをポイントする。ColorOffsetは、MLM_Pointerを含む二重八
進数からColorAddressを切り離す頂点の数を提供する。ColorTypeは、原線のタ
イプ、各ColorVertexのサイズ、及びモード三角形用の有効なエッジに関する情
報を含む。原線を作成するColorVerticesの長さは、2個、4個、6個、または
9個の二重八進数である。MIJはColorPointerを復号化してMLM_Pointerを含む二
重八進数及び全ての原線を作成性するColorVerticesのアドレスを得る。MLM_Poi
nterは、多角形メモリの6つの状態パケットの二重八進数アドレスを含む。 5.8.2.2 キャッシュ管理 5.8.2.2.1 問題概要 MIJブロックは、VSPがステージに到着する前にFragment、Texture、Phong、及
びPixelブロックがVSP内フラグメントの処理に必要な全ての情報を持っているか
を確認する。すなわち、原線のColorVerticesは、MLM_Pointer内のポインタにポ
イントされる6つの状態パケット同様に、それらを必要とするブロック内、VSP
フラグメントが処理可能になる前に常駐していなければならない。MIJがMLM_Poi
nter、状態パケット、及びColorVerticesを各VSPに対して検索する場合は、MIJ
は各VSPに対してデータ1キロバイトの量になる。この量は、データ読み出しの
ための多角形メモリ帯域幅の125GB/秒に相当すし、FRG及びPIXブロックへの
データの書き出しに必要な量である。明確に、各VSPに対してデータを検索する
のは不可能であり、何らかの形のキャッシングが必要になる。
【0358】 VSPと原線に何らかの結合があることを想定するのが合理的である。例えば、
我々は同じ原線に対応する一連のVSPを得る可能性がある。我々はこの結合を使
用して多角形メモリから読み出され、Fragment及びPixelブロックに転送される
データの量を減少させる。原VSPが先行のVSPと同じ原線からディスパッチされた
場合、我々がデータ検索を実行する必要は全くない。以前に指摘したように、VS
Pは原線順にMIJには到着しない。代わりに、それらはタイル上でVSP走査順にな
る。例えば、別々の原線に対する走査線を横切るVSPは、インタリーブされるこ
とがある。この理由により、現在及び前のVSPのみに基づいたキャッシングスキ
ームは、帯域幅を約80%カットする。他の計画はさらに優れた機能を提供する
。例えば、タイルの、実際には四辺形タイルの、全面上の原線結合に有利なスキ
ームなどを挙げることができる。明らかに、我々は、MIJ内のMLM_Pointer、各状
態パーティション及びカラー原線に対してキャッシュを保つことによて上記スキ
ームを実行することができる。各キャッシュのサイズは、それがタイル上に置か
れる頻度によって決まる。このスキームが問題を解決できる、または多角形メモ
リからデータを検索している間は、我々はMIJからFragment及びPixelブロックへ
のデータが変化するたびにデータ転送を扱う必要がある。我々は、この問題を下
記のように解決した。 5.8.2.2.2 キャッシュデータ及びタグの切り離し MIJから検索されたデータは、他のブロックで使用される。従って、我々はキ
ャッシュデータをこれらブロック内に保存する。Fragment、Texture、Phong、及
びPixelブロックの各々がキャッシュのセットを持っている。これらキャッシュ
はそれらのキャッシュラインエントリに入る実際のデータを保持している。MIJ
はPolygonメモリからの各ユニットの関連データの検索及びユニットへの送信を
行い、上述の4ユニット内のキャッシュの各々の現在の状態を知る必要がある。
この処理は、各キャッシュに対してタグを保持し、MIJに対して全キャッシュの
管理を容認することによって完了する。このように、キャッシュデータは、それ
を必要とするブロック内に常駐し、キャッシュタグはMIJ内に常駐する。
【0359】 MIJは7つのキャッシュを下流ストリームのために管理する。その内1つはFRG
(ColorDataキャッシュ10016)用であり、TEX(TexA10018、TexB10020)、
PHG(Light10024、Material10022)、及びPIX(PixMode10026及びStipple10
028)ブロック用に各2つづつである。これらキャッシュの各々に対して、タ
グがMIJにキャッシュされ、データが対応するブロックにキャッシュされる。MIJ
はまた、タグに従ってデータエントリのインデックスを維持する。これら7つの
キャッシュに加えて、MIJは内部的に2つのキャッシュを効率のために維持する
。その内1つはColorVertexキャッシュ10012であり、他はMLM_Pointerキャ
ッシュ10014である。これらに対し、タグとデータの双方がMIJ内に常駐す
る。これら9つのタグキャッシュは、完全に結合可能であり、CAMsを使用してC
hacheタグを調べる。これらキャッシュの一覧を図55に示す。
【0360】 我々は、下記の各節でこれらキャッシュのキャッシングメカニズムを簡単に説
明する。 5.8.2.2.3 修正FIFO入れ換えポリシー MIJ内の全てのキャッシュに対して、我々は修正FIFOアルゴリズムを使用して
キャッシュを入れ換える。本アルゴリズムでは、我々はキャッシュ内の各エント
リのためにWashHitフラグをエントリタグと共に保持する。カウンタは、キャッ
シュ内で入れ換えられるべき現エントリを示すために使用される。 5.8.2.3 カラーキャッシング 「カラー」キャッシングは、カラー原線をキャッシュするために使用される。
有効な処理機能のエクステントによって、多角形メモリ中のColorVertexの長さ
は2個、4個、6個、または9個の二重八進数となる。さらに、それぞれ点か、
線か、または塗りつぶされた三角形かによって原線は1つ、2つ、または3つの
ColorVerticesを必要とする。他のキャッシュと違い、Color Cachingは、通常の
キャッシュの調査及び入れ換えの問題に加えてデータサイズの問題に取り組まな
ければならない。
【0361】 たとえ多角形メモリ内の4分の1性能のカラー頂点が9個の二重八進数を占有
していても、実際には我々は9個の二重八進数全部は必要としないことに注意す
るべきである。事実、4分の1性能ColorVertex内には1200ビットがある。
原線は3つまでのColorVerticesを持つことがある。我々は、ColorCashe内の各
エントリが900ビットの幅を持つと想定する。このように、フル性能の塗りつ
ぶされた三角形は、1つのColorキャッシュエントリにフィットし、半分性能の
塗りつぶされた三角形は、2つのColorキャッシュエントリにフィットする。我
々は4つのColorキャッシュエントリを3分の1性能レート及び4分の1性能レ
ートの三角形に割り付ける。たとえ3分の1性能レート三角形が3つのColorキ
ャッシュエントリにフィットしても、我々はそれに4つのエントリを割り付ける
ことに注意するべきである。この処理は、我々が3分の1レートの原線に対して
3つのColorキャッシュエントリを使用した場合よりも、格段にキャッシュの保
守を容易にする。我々は、部分的に無効化された原線を扱う必要はない。
【0362】 Fragmentブロック内のColorキャッシュは、256個のフル性能カラー原線を
保持することができる。MIJ内TagRamはFragmentブロック内のカラーデータキャ
ッシュと1対1に対応する。PEXパイプライン内では、ColorAddressはカラー原
線を一意に識別することに注意するべきである。従って我々は、24ビットのCo
lorAddressをColorキャッシュ用タグとして使用する。
【0363】 カラーデータ取り出し依頼はColorDataFetchサブブロックに送信される。本ブ
ロックはColorAddress及びカラータイプを使用して本原線に必要な頂点の数、各
頂点のサイズ、及び取り出される各頂点のColorAddressを決定する。我々は「カ
ラー」原線の実質的な数が細片または扇形の一部であることを期待する。ここで
は、ColorVertex検索パターン内で結合を利用する機会がある。本処理は頂点キ
ャッシング経由で行われる。CCIXは、Fragmentブロックに行くVSP内に組み込ま
れる。 5.8.2.3.1 他のキャッシング 本発明の構造は、Vertexキャッシング、MLM−Pointerキャッシング、Modeパケ
ットキャッシング、Controlパケットキャッシング及びFragmentとPixel Output
キュー Managementを提供する。 5.8.3 機能ユニット Mode Injectionブロックは、CULブロックとCULの下流側のパイプラインの残り
の部分の間に常駐する。MIJは、制御及びVSPパケットをCULブロックから受信す
る。出力側では、MIJは、FragmentおよびPixelブロックのインタフェースを行う
【0364】 MIJは下記処理を実行する役割を負う。 1BeginFrame、EndFrame、及びBeginTileなどの制御パケットのFragment及びPix
elユニットへのルーティング 1.先取りパケットのSORTからPixelへにルーティング 3.VSPに対応する原線の全ての頂点に対するColorPointerの決定 4.多角形メモリ内MLMPointerの位置決定及び検索 5.多角形メモリ内の種々の状態パケットの位置決定 6.検索の必要なパケットの決定 7.Color、TexA、TexB、Light,及びMaterialキャッシュ(Fragment、Texture、
及びPhongブロック用)、PixModeto及びStippleキャッシュ(Pixelブロック用)
の内容把握及び適切なキャッシュポインタの各キャッシュミスデータパケットへ
の付加 8.多角形メモリからの状態及びカラー頂点パケットの検索 9・原線の構築。Polygonメモリは頂点ごとのデータを保存する。VSPの原線タイ
プによっては、MIJは多角形メモリから必要な頂点(三角形用に3つ、線用に2
つ、及び点原線ように1つ)を検索する。 10.Fragment及びPixelブロックへのデータ送信 11.パイプライン内の中断処理 12・処理の終わりにおけるMEXへの信号送信 このように、Mode Injectionは、VSP内の各フラグメント用最終カラーの演算
に必要な頂点ごとのデータ同様に状態の検索を扱う。 5.9 Fragmentブロック(FRG) 5.9.1 概要 Fragmentブロックは、Cull及びMode Injectionの後、Texture、Phong、及びBu
mpの前に位置する。このブロックは、4つまでのシェ−ディングの必要なフラグ
メントから成る可視スタンプポーション(VSP)を受信する。VSP内フラグメント
は常に同じ原線に属する。従って、フラグメントは、全てのモード設定を含む頂
点において定義された原線データを共有する。与えられたピクセルの4つのサン
プルのうちの1つでも活性な場合は、サンプルマスクsMaskはVSPの活性サブピク
セルサンプルを定義する。これは、フラグメントがピクセルに必要であり、フラ
グメントに基づいたデータの作成に原線用の頂点ベースのデータに書き込みが行
われることを意味する。活性なサブピクセルサンプル位置が使用されてフラグメ
ントの対応するx及びy座標が決定される。
【0365】 帯域幅をセーブするために、Fragmentブロックは、同じ原線に属する複数のVS
Pに再使用されるカラーデータをキャッシングする。ヒットの場合は、Mode Inje
ctionは、キャッシュ内へとインデックスを含むVSPを送信する。キャッシュミス
の場合は、Mode Injectionは、新たなエントリをポイントするColorキャッシュ
インデックスを持つVSPパケットの送信に先立って、新たなカラーデータを持つ
キャッシュからエントリを入れ換える。同様に、全てのモード、素材、テキスチ
ャ情報、及びライト情報設定が使用されているブロックにキャッシングされる。
各キャッシュ用のインデックスもVSPに含まれる。多角形に加えて、Fragmentブ
ロックは幾つかのテクスチャ及びモード情報をキャッシングする。図56がDSGP
パイプラインの後半のモードデータのキャッシングを示す。
【0366】 Fragmentブロックの主な機能は、VSP内の全活性フラグメント用の頂点に提供
される多角形情報の改ざんである。Fragmentブロックの出力ブロックにおいて、
我々は、なおもフラグメントあたりの全ての改ざんされたデータを持つスタンプ
を所持する。Fragmentブロックは与えられたフラグメントを並行に改ざんでき、
VSP内のフラグメントについては任意の順番で実行できる。フルに書き込まれた
スタンプは、受信時と同様の順番でTexture、Phong、及びBumpブロックへと送ら
れる。さらに、Fragmentブロックは、4つまでのテクスチャ用の詳細のレベル(
LODまたはλ)値を生成し、Textureブロックに送信する。
【0367】 Fragmentブロックは、可変スタンプ処理時間及びColorキャッシュフィルの潜
在性をスムーズにするために適切にサイズが決定されたFIFOをその入力に持つ。
【0368】 図57にFragmentブロックのブロック図を示す。
【0369】 Fragmentブロックは、下記の6個のサブブロックに分割可能である。 1.キャッシュフィルサブブロック11050 2.Colorキャッシュ11052 3.Interpolation Coefficientsサブブロック11054 4.Interpolationサブブロック11056 5.Normalizationサブブロック11058 6.LODサブブロック11060 最初のブロックはColorキャッシュミスを扱う。新たな多角形データは、キャ
ッシュ内旧データを入れ換える。ColorキャッシュインデックスCCIXは入れ換え
るべきエントリをポイントする。このブロックは全ての多角形データを直接キャ
ッシュに書き込むことはしない。このブロックは頂点座標、w座標の逆比例及び
オプションのテクスチャq座標を使用して重心係数を計算する。このブロックは
、重心係数を、それらの計算に使用される情報ではなく、キャッシュに書き込む
【0370】 第二のサブブロックはColorキャッシュを利用する。FragmentがVSPパケット(
ヒット)を受信すると、頂点の多角形データ及びそれに伴う重心係数をアクセス
するためにCCIXにポイントされるキャッシュエントリが読み出される。
【0371】 三番目のサブブロックは、VSPの最初のフラグメントに対して改ざん係数を用
意する。係数は、次のフラグメントの係数の増分計算に利用できるように、簡単
な等式のフォーマットで分子及び分母に表現される。分子及び分母双方が三角形
のすべての領域で除されるため、簡略化される。また、重心係数には冗長性(分
数の合計が全部に等しい)が組み込まれているため、分母が持つ心係数の3つの
セットの内の2つを提供するだけで、追加収容及び帯域幅がセーブされる。非性
能ケースでは、1以外のq値を持つテクスチャ係数が3つ以上の係数を持つ分母
を使用して書き込まれる。
【0372】 スタンプごとに与えられたx及びy座標は、スタンプ内の左下部ピクセルに対
応する。タイル内のスタンプの位置のみがこれらの座標により決定される。別の
パケットが後続のスタンプが属するタイルの座標を提供する。ルックアップテー
ブルがsMask内の対応するビットと共に使用されて、出力確度におけるフラグメ
ントx及びy座標の下位ビットを決定する。この活性サンプル位置における改ざ
ん箇所の選択は、改ざん係数が1に等しいその合計により常に正の値であること
を保証する。
【0373】 第4のサブブロックは、各カバーされてピクセルに対してカラー、ノーマル、
テクスチャ座標、目視座標、及びBumpタンジェントを改ざんする。改ざん機構は
その正確さに従って4つのグループに分けられる。第1のグループは、8ビット
の固定小数点カラー分数を改ざんする。値の範囲は0から1であり、全てのビッ
トが1に設定された値1のバイナリ表現である。第2のセットは16ビット、固
定小数点、ノーマル用ユニットベクトル、及び表面タンジェント方向を改ざんす
る。第3のセットは、16ビットの対少数を持つ24ビットの浮動小数点数を改
ざんする。頂点目視座標、ノーマルの大きさ、及び表面タンジェントはこのカテ
ゴリに含まれる。最後のグループは、やはり24ビットのFP数であるテクスチャ
座標を改ざんするが、異なる改ざん係数を持つこともある。全ての改ざん係数は
、24ビットFP値として生成されるが、8ビットまたは16ビットの固定小数点
値を改ざんする場合は、より少ないビットまたは固定小数点表現を使用すること
ができる。
【0374】 第5のサブブロックは、ノーマル及び表面タンジェントを再正規化する。この
プロセス中に得られた大きさは廃棄される。オリジナルの大きさは、Phong及びB
umpブロックに送られる前に個別に改ざんが加えられる。
【0375】 テクスチャマップu、v座標及び詳細のレベル(LOD)は、第6のサブブロック
内で評価される。重心係数は、テクスチャLODの決定に使用される。2つのテク
スチャ座標を持つ4つの異なるテクスチャがサポートされる。従って、ユニット
は4つまでのLOD及び24ビットFP値で表されるフラグメントごとのs、t座標
の2つのセットを提供することができる。 5.9.1.1 sMask及びpMask 図58に、種々の原線によって形成されるピクセルフラグメントを持つVSPの
例を示す。sMaskのコピーもシェ−ディングブロック(Fragment、Texture
、Phog、及びBump)をバイパスしてPixelブロックに直接送信される。バイパス
パケットもz値、Mode、及びPolygon Stipple Indicesを示し、VSPptrにポイン
トされる場所で、リオーダーバッファに書き込まれる。pMaskはFragmentブロッ
ク内で生成され、sMaskの代わりにTexture及びPhongへと送信される。実際のカ
バレッジはPixel内で評価される。 5.9.1.2 三角形に対する重心改ざん Fragmentブロックは、透視図修正された重心改ざんにより値を改ざんする。こ
の節においてプロセスを記述する。
【0376】 三角形の描画により生成された各フラグメントを伴うデータの場合、我々はこ
れらの値が、いかにして三角形内フラグメントに対して提供されたかを指定する
ところから始めた。我々は、三角形11170に対して重心座標を定義した(図
59)。重心座標は、次の3つの数字のセットである。各々[0,1]の範囲にあ
るA0、A1、及びA2であり、A0+A1+A2=1である。これらの座標は、三角形また
は三角形の境界上でいずれかの点pを下記のように一意に指定する。 p(x、y)=A0(x、y)×V0+A1(x、y)×V1+A2(x、y)×V2 ここで、V0、V1、及びV2は三角形の頂点であり、A0、A1、およびA2は下式の通り
である。
【0377】
【数16】 ここで、Area(i,j,k)頂点i、j、及びkを持つ三角形のウィンドウ座標内の
領域に与える。本領域を演算する一つの方法を下記に示す。 Area(V0,V1,V2)=1/2(xW0,×yW1−xW1×yW0+xW1×yW2−xW2×yW1
W2×yW0−xW0×yW2) V0、V1、及びV2データをそれぞれf0、f1、及びf2として与える。次に、三
角形のラスタ画像処理により生じたウィンドウ座標x及びyを持つフラグ面tに
おけるデータの値f(x、y)な下記により与えられる。
【0378】
【数17】 ここで、Wc0、Wc1、Wc2はそれぞれV0、V1、およびV2のクリップw座標である
。A0、A1、及びA2はデータが与えられるフラグメントの重心座標である。 a0=a1=a2=1 次の式で表されるテクスチャs及びt座標は例外である。 a0=q0、a1=q1、a2=q2 5.9.1.3 線に対する改ざん 線に沿ったフラグメントデータに対する書き込みの場合は、多少異なった公式
が使用される。
【0379】 作成されたフラグメントセンターのウィンドウ座標をpr=(x、y)で与え
るようにし、p2=(x2、y2)及びp1=(x1、y1)を線のエンドポイント(
頂点)とする。下記のようにtを設定し、p1においてt=0であり、p2におい
てはt=1である。
【0380】
【数18】 5.9.1.4 点に対する改ざん 原線が点の場合、改ざんは一切行われない。頂点2はデータを保持しているも
のとする。qがsに等価でない場合は、s、t、及びr座標がqによって分割さ
れる必要がある。 5.3.1.5 ベクトル改ざん バンプマッピングの場合、ノーマル及び表面タンジェントは有向ユニットベク
トルを伴う大きさを持つ場合がある。この場合、我々はスカラー大きさとは別に
ユニットベクトルコンポーネントを改ざんする。この処理は、明らかに大きさを
持つx、y、及びzコンポーネントを改ざんするよりも、良い視覚的結果を与え
る。この事実は、方向と大きさが別々に使用されている場合は特に重要である。
【0381】 図60に、異なる大きさのベクトル間の改ざんがいかにして不均等な角度の粒
の結果をもたらすかを示す。これは、我々がノーマル及びタンジェントに対して
この方法で改ざんをしない理由である。 5.3.1.6 フラグメントx及びy座標 図61に、いかにしてフラグメントx及びy座標を使用して改ざん係数が形成
されるかを示す。タイルx及びy座標は、タイル処理フォームの開始時に最上位
ビットとなる。サンプルマスク(sMask)が処理を必要とするフラグメントを見
つけるのに使用される。ルックアップテーブルは、サブピクセル確度において最
下位ビットを与える。我々は、サンプル場所の選択された2ビットを取り除くこ
とができる場合にはULTのサイズを減少させることが可能となる。 5.9.2 等式 5.9.2.1. キャッシュミス計算 最初の重心係数は、Fragmentユニット内のColorキャッシュミスの評価に必要
である。三角形の場合は下式となる。
【0382】
【数19】 上記の等式内でxW0,xW1,xW2は3つの三角形の頂点のx座標である。同様に
、yW0,yW1、及びyW2は三角形頂点の3つのy座標である。実際の重心係数の場
合、全てのコンポーネントは三角形の領域によって分割されなければならない。
我々のケースでは、やはり領域により分割された係数を持つ分母を形成する透視
図修正のためにこの処理は必要ない。
【0383】 頂点座標xW1,xW2,及びyW1,yW2を持つ線の場合は、下式が適用される。
【0384】
【数20】 我々はいま、下記のように透視図修正重心係数コンポーネントを形成した。
【0385】
【数21】 ここで、Wic0は、頂点0のクリップw座標の逆比例である(逆比例はGeometry
内で実行される)。
【0386】
【数22】 分母コンポーネントは、個々の定数を分子に加えることによって形成される。
Dx=Cx0+Cx1+Cx2;Dy=Cy1+Cy1+Cy2;Dk=Ck0+Ck2 上記計算は、各三角形に対して一回だけ実行すれば良い。カラーメモリキャッ
シュが同じ三角形の次のVSPに対して係数をセーブするのに使用される。キャッ
シュミスが起きた場合は、係数は最評価が必要になる。 5.9.2.2 改ざん係数 次に、我々は座標を持つVSPの最初のピクセルに対して重心座標を用意する。
【0387】
【数23】 次に、x方向の次のピクセルの場合は、下式を適用する。
【0388】
【数24】 または、y方向の次のピクセルの場合は、下式を適用する。
【0389】
【数25】 非性能のケース(半分のレート)では、テクスチャ座標qn[m]が1に等しく、
nが頂点番号(0から2)で、mはテクスチャ番号(0から3)の場合、改ざん
テクスチャ座標用の追加分母が評価される。
【0390】
【数26】 (x、y)座標を持つ与えられたピクセル用の重心座標が評価される場合、我
々はそれらを改ざんに使用する。線L0は必要ではないが、下記式内ではゼロであ
るものとする。 5.9.2.3 改ざん等式 フル性能モードでは、我々はテクスチャ座標の1セットを改ざんする。
【0391】
【数27】 カラーを放散及び反射する。
【0392】
【数28】 8ビットカラー値は、実際に0から1の、それらの数字を含む範囲の分数であ
ることに注意する。変換により、失われた表現された数字は1−2−8である。
1の値は、失われた表現の場所を取って設定された全てのビットで表現される。
カラーインデックスがR、G、B、及びAの代わりに使用されている場合、8ビット
インデックス値がカラーのDiffuse及びSpecularコンポーネントのR値を入れ換
える。
【0393】 表面はノーマルである。
【0394】
【数29】 ノーマルベクトルは、改ざんの後で再正規化されなければならない。
【0395】
【数30】 半分レート(蓄積)において、我々は必要な頂点目視座標を改ざんする。
【0396】
【数31】 半分レート(蓄積)において、我々は4つまでのテクスチャ座標を改ざんする
。この処理は、単純等式または重心座標を使用して実行される。rテクスチャ座
標も、関連するボリュームテクスチャ描画に対して改ざんが加えられるが、フル
レートの3分の1においてである。
【0397】
【数32】 ユーザによって頂点ごとのバンプタンジェントとして部分分数が提供された場
合は、我々はそれらを改ざんする必要がある。簡易化として、ハードウェアは常
に表面タンジェントを半分のレートで改ざんする。
【0398】
【数33】 表面タンジェントもノーマルと同様に改ざんの後で正規化されなければならな
い。
【0399】 我々は、やはり重心係数を使用して、ウィンドウx及びy座標に関連してテク
スチャ座標の部分導関数を評価する。
【0400】
【数34】 n[m]が1に等しい事象では、Wi(x、y)がWqi[m](x、y)と置き換わ
る。
【0401】 これは、改ざんされたs、t、及びそれらの部分導関数の評価の代替法の優れ
た紹介である。
【0402】
【数35】 他の項も同様に評価される。カラーやノーマルのような全ての改ざんを必要と
する値は、この単純等式で表現でき、三角形情報キャッシュにセーブして増分さ
れた評価アプローチにより演算要件を減少させることができる。
【0403】 我々は下記を定義する。
【0404】
【数36】 個々で、λは詳細のレベル(LOD)と呼ばれ、pはテクスチャ画像の拡大縮小
をつかさどるスケール係数である。n及びmは、2次元テクスチャマップの幅及
び高さである。u及びvの部分導関数はs及びtの部分導関数を使用して得る。
1次元テクスチャマップの場合、t、v、及び部分導関数δv/δx及びδv/δ
yはゼロに設定される。線の場合、下記の公式が適用される。 △x=x2−x1;△y=y2−y1 DSGPパイプラインはそれぞれテクスチャ座標を2セット持つ4つまでのテクス
チャをサポートする。特に、i=0.3の場合: TEXTURE_1D[i]==1またはTEXTURE_2D[i]==1、この場合、我々はテクスチャ
座標TEXTURE_COORD_SET_SOURCE[i]を使用してλを演算する。
【0405】 Fragmentブロックは、各活性テクスチャに対し、s、t、r、及びλをTextur
eブロックに渡す。λは最終LODでないことに注意するべきである。テクスチ
ャブロックには、λに対する値を得るためにLODクランピングなどの追加規則
が適用される。 5.9.3 メモリキャッシングスキーム Fragmentは、3つのキャッシュを使用して必要な動作を実行する。一次キャッ
シュはカラーキャッシュである。本キャッシュは、原線(三角形、線、または点
)のためにカラーデータを保持する。キャッシュミス決定及び入れ換えロジック
は実際にはMode Injectブロックに位置する。Fragmentブロックは通常通り、付
加されたカラーデータを保持するエントリをポイントするインデックスを持つ「
ヒット」パケットを受信する。Mode Injectブロックがミスを検出すると、「フ
ィル」パケットが最初に送信されて、新しいデータを使用するためにいずれかの
[ヒット]パケットが送信される前にキャッシュ内エントリを新たしいデータと入
れ換える。従って、Mode Injectによって送信されたパケットの順番を変更しな
いことは重要である。なぜならば、キャッシュ入れ換え及び使用ロジックは、入
りパケットが順に処理されるものとしているからである。
【0406】 Fragmentブロックは、キャッシュが一杯になっている間、Colorキャッシュへ
の書き込みの前にデータの一部を変更する。この処理は、ミスタイム間に重心係
数を準備するために実行される。頂点ウィンドウ座標である頂点におけるcli
p−w座標及び頂点におけるテクスチャqの逆数が、Cx 1:0 、Cy 1:0]、Dx
、Dy、Dk重心係数に置き換えられる。同様に、Sx、Sy、Tx、及びTy値がキャッシ
ュミスの間に他のデータと共に保存される。
【0407】 Colorキャッシュは、その時点で256エントリ、4セットの添付キャッシュ
、に構成されている。Mode Inject及びFragument UnitのmicroArchitectureは、
目的の性能を保持するためにその構成を変更する。フルレートにおいては、Colo
rキャッシュのミスは、処理されたVSPの平均の15%未満と思われる。
【0408】 半分のレートで求められるデータは、Colorキャッシュに2つの連続エントリ
として保存される。このケースで提供されるインデックスは、常に偶数である。
【0409】 Fragmentブロックで使用されるテクスチャ情報には、2つのモードのキャッシ
ュが使用される。これらのキャッシュは、同等に編成されたものであり、各々2
テクスチャ分の情報を持っている。2つのテクスチャ座標TX01X及びTX11Xは、全
「ヒット」パケット内に提供されてテクスチャ座標を最大4つのテクスチャに付
加する。各テクスチャにつき、下記データがテクスチャモードキャッシュから読
み出される。
【0410】 TEXTURE_1D、TEXTURE_2D、TEXTURE_3Dは与えられたテクスチャの有効ビッ
トである。
【0411】 TEXTURE_HIGH、TEXTURE_WIDTHはそれぞれu及びv計算内で使用されるm及びn
値である。
【0412】 TEXTURE_COORD_SET_SOURCEは与えられたテクスチャにくくられるテクスチャ
座標を示す。
【0413】 テクスチャモードのキャッシュは、32エントリ完全連結可能キャッシュであ
る。テクスチャモードのキャッシュ0の想定されるミスレートは、VSPあたり0.2
%未満である。
【0414】 なお、モードもModeキャッシュ中のFragmentにキャッシングされる。Modeキャ
ッシュは完全連結可能な8エントリキャッシュとして構成される。想定されるミ
スレートはVSPあたり0.001%未満である(無視できる)。下記情報がModeキャッ
シュにキャッシングされる。 SHADE_MODEL(1ビット) BUMP_NO_INTERPOLATE(1ビット) SAMPLE_LOCATION_SELECT(3ビット) 5.9.4 可能な未来の思考 VSPの処理順序も変更が可能である。Pixelブロック前のリオーダーブロックが
スタンプを最構築する。同じx及びy座標(別々の原線に属する)を共有するVS
Pは、到着した順でPixelに渡されなければならない。各VSPに伴うVSPptrは、リ
オーダーバッファ内のVSPの位置を示す。バッファはFIFOとして構成され、最も
前に位置するシェ−ディングが完了したスタンプがPixelブロックへと向かう。
【0415】 VSP処理順序に関するもう一つの考慮は、種々のモードキャッシュである。モ
ードインデックスは、「ヒット」パケットが「ミス」パケットを横切らないこと
を想定している。これは、「ミス」パケットが「ヒット」パケットのバリアーを
形成することを表している。明らかに、Mode Injectionが提供した順序で下流側
ブロックがパケットを見るため、プロセス順序は対応するモードキャッシュ情報
を取り出した後で変更可能となっている。 5.10 Textureブロック(TEX) 5.10.1 概要 3Dグラフィックスでは、多角形が使用されてオブジェクトの形を定義する。
テクスチャマッピングは、詳細画像を持つカラリング多角形により表面テクスチ
ャをシミュレートするテクニックである。特徴として、単一のテクスチャマップ
は多くの多角形から成るオブジェクトをカバーする。テクスチャマップはRGBAカ
ラー(Apex内で最大2K×2K)の長方形の配列である。ユーザは、Geometryブロ
ック内で手動または自動で各頂点のテックチャマップ内に座標を供給する。これ
らの座標は、各フラグメント用に改ざんされ、テクスチャ値はテクスチャマップ
及びフラグメントに割り付けられたカラーの中から調べられる。バンプマップ係
数もlight_textureエクステンションを使用して同様に得られる。詳細はPhongブ
ロックを参照されたい。
【0416】 オブジェクトは観察者から遠い場合は小さく現れるため、テクスチャパターン
がテクスチャリング中のオブジェクトと同サイズで現れるようにテクスチャマッ
プの縮尺を決めなければならない。無論、各フラグメントのテクスチャ画像の縮
尺及びフィルタリングは高価な計画である。Mipmappingは、走行中に描画者に対
して本作業の一部を避けることを許容する。ユーザは、引き続くより低いリソリ
ューションにおいて一連のテクスチャ配列を提供する。各配列は、指定された詳
細のレベル(LODまたはλ)を表す。Fragmentブロックは、観察者からの距離に
基づいて各フラグメントに対する詳細のレベルの値を計算し、Textureブロック
は二つの最も近いミップマップ配列の間を改ざんして同フラグメントに対するテ
クスチャ値を生成する。例えば、フラグメントがλ=0.5を持っている場合、
Textureブロックはλ=0及びλ=1を表す配列の間を改ざんする。
【0417】 Apexボードは、1秒あたり250Mのテクスチャリングされたフラグメントに
おいて三線に囲まれたミップマッピングによる、テクスチャマッピングをサポー
トする。フラグメントあたり最大8つのテクスチャマップ及び8セットのテクス
チャ座標が相対的に低い性能でサポートされる。Apexは、SGIエクステンション
または高さ傾きフィールドを使用してバンプマップをテクスチャとして扱う。テ
クApexは3Dテクスチャマッピングを幾分低いレートで実行する。これは、テク
セルキャッシュが、オプションのテクセル再使用がより少ないため、上記処理を
より非効率的に実行するからである。
【0418】 我々は、Apex内で下記エクステンションをOpenGL1.1にサポートする。 ・ マルチテクスチャ…フラグメントあたり最大8テクスチャマップ及び8セッ
トのテクスチャ座標 ・ 3Dテクスチャ…3Dテクスチャは二線にはさまれた混合動作をサポートする
。3Dテクスチャに対する三線に囲まれたミップ−マッピングはソフトウェアで
扱われる。 ・ LODクランピング…テクスチャLODのサブセットのみをミップマッピングに使
用するよう要求する。 ・ エッジクランプ…クランピングされたテクスチャの正しい実行法 ・ 影…マルチパス影をサポートする簡単なエクステンション ・ バンプ及び深度テクスチャ(12−12−12及び16−16)に対する符
号付きデータタイプサポート エッジクランピング、LODクランピング、及び3DテクスチャリングはOpenGL1.
2の一部である。
【0419】 テクスチャブロックはテクセルをキャッシングしてローカル使用を得る。テク
スチャマップは2×2ブロックのRGBAデータ(ブロックあたり16バイト)テク
スチャメモリに保存される。ただし、ノーマルベクトルはこの限りではなく、1
8バイトブロック(6−6−6)に保存されることがある。 5.10.1.1 仮想テクスチャ番号 ユーザは、テクスチャがOpenGLコールでユーザスペースから渡されると、テク
スチャ番号を提供する。ユーザは1マップでテクスチャリングされる幾つかの三
角形を送信でき、同じテクスチャ番号を付加されたテクスチャを、同じフレーム
内で三角形以外のテクスチャに変更することができる。我々のパイプラインは、
フレーム用のテクスチャデータの全セットがテクスチャブロックで利用可能なこ
とを要求する。ソフトウェア内では、我々は仮想テクスチャ番号を各テクスチャ
マップに割り付ける。 テクスチャメモリ テクスチャメモリはテクスチャブロックが現在使用しているテクスチャ配列を
保存する。ソフトウェアは、テックスチャ配列をホストメモリからテクスチャメ
モリにコピーすることによってテクスチャメモリを管理する。ソフトウェアはテ
クスチャ配列アドレスのテーブルもテクスチャメモリ内に維持する。 5.10.2.1 テクスチャアドレッシング テクスチャブロックは、仮想テクスチャ番号及びLODによってテクスチャ配列
を識別する。最も高いLOD用の配列は、単一レコードにまとめられる。(ある実
施例内ではRODは7つで、各RODは21キロバイトを含む。)テクスチャ配列ポイ
ンタテーブルは、テクスチャ配列ID(LODに付加された仮想テクスチャ番号)をテ
クスチャメモリ内のアドレスと組み合わせる。我々は数千のテクスチャ配列番号
をサポートする必要があり、テクスチャ配列ポインタテーブルはテクスチャメモ
リに保存されなければならない。我々は、テクスチャ配列IDを1秒間に500M
回アドレスにマッピングする必要がある。幸運ながら、隣接したフラグメントは
は通常同じテクスチャ配列を共用するため、我々は、テクスチャ配列ポインタ用
に良いタイルレートをキャッシュと共に得る必要がある。(ある実施例では、テ
クスチャ配列キャッシュのサイズは128エントリだが、他のサイズも、大小を
問わず利用できる。)図52にテクスチャ配列アドレッシングの概要を示す。
【0420】 テクスチャブロックは、ダブルハッシングアルゴリズムを利用してメモリ内の
ポインタテーブルを検索する。ソフトウェアは、ハードウェアハッシングアルゴ
リズムを使用してテクスチャ配列ポインタテーブルを管理する。 5.10.2.2 テクスチャメモリ割り当て ソフトウェアは、テクスチャメモリの割り当てを扱う。テクスチャブロックが
テクスチャメモリ内にないテクスチャ配列を必要とすると、割り込みをホストに
送信する。ホストはメインメモリからテクスチャ配列をコピーし、上記のように
テクスチャ配列ポインタテーブルを更新する。ホストは、どのテクスチャ配列が
新しいデータにより上書きされるかを制御する。
【0421】 ホストは、ゴミの収集などのためにテクスチャメモリを再アレンジする。ハー
ドウェアは下記のメモリコピーをサポートする。 ・ ホストからメモリ ・ メモリからホスト ・ メモリからメモリ 正しい振る舞いを保証するために、同期スキームが採用される。乱暴な力まか
せのアプローチは、いずれのメモリコピー活動にも先立ってテクスチャブロック
を洗い流してしまう。しかしながら、我々はテクスチャ配列ポインタテーブル1
3106に基づいたより気軽な計画を大域的に取り入れることができる可能性が
ある。ソフトウェアは、幾つかのコマンドを使用してパイプラインを開始、停止
、及び洗い流す処理を通じて同期を制御する。下記「ホストコマンド」を参照。
5.10.2.3 テクスチャメモリの内容 テクスチャ配列は2×2テクセルブロックに分割される。配列内の各テクセル
ブロックは、RGBA、RGA、または4つのテクセル用の高さ傾きデータを含むレコ
ードによりテクスチャメモリ内に表される。三線に囲まれミップ−マッピングに
よって与えられたフラグメントのテクスチャリングは、フラグメントが2×2ブ
ロックに関連してどこに落ち込むかにより、これらブロックの2から8バイトの
アクセスを必要とする。 5.10.2.4 テクスチャメモリデータパス テクスチャメモリとテクスチャブロック間の通常のパスに加えて、ホストメモ
リからテクスチャメモリへのパスがある。帯域幅は500MB/sでなければなら
ない。このこの「バックドアバス」パスは、フレームバッファを及びテクスチャ
メモリをホストに接続する。我々は、ソフトウェアの制御下でのテクスチャメモ
リのメモリかたメモリへのコピーもサポートする。 5.10.2.5 テクスチャフォーマット ハードウェア内では、我々はOpenGl内部フォーマットRGBA8、RGB12(符号付
き)及びLUMINANCE16_ALPHA16(符号付き)をサポートする。ソフトウェアは、R
GB8などのこれらフォーマットの記憶のサブセットを使用する他のフォーマット
をサポートする。バンプマップ係数などのテクスチャメモリの使用は、テクセル
ビットを他の方法で解釈する。テクスチャブロックの後で、全カラーが、コマン
ド、深度、及び高さフィールドのようなlight_texture量を除いて、8ビット量
として扱われる。
【0422】 上記のフォーマットをサポートするには、我々は2セットの16ビット値、3
セットの12ビット値、または4セットの8ビット値の直線改ざんを実行する必
要がある。Textureブロックは、4セットの数学的ユニットを使用して計算する
。内2つは16ビット確度、1つが12ビット確度、1つは8ビット確度である
【0423】 16及び12ビット動作の全てが符号付きである。正規のカラーを符号付12
ビット数の扱いも8ビット符号なし異常を保存する。 5.10.2.5.0.1 ビデオテクスチャ 幾つかのYUV(またはYIQ)フォーマットの1つの中にビデオフィードがある。
我々はRGBへの変換を行い、2Dコアを使用してRGBを解釈し、Rambusマスクド書
き込みを利用してテクセルを2×2ブロックへ収容することにより値をテクセル
フォーマットへとパックする(スキャンラインオーダーの代わりに2×2ブロッ
ク)。本データはTextureメモリに保存され、正常テクスチャとして表示される
。 5.11 Phong及びBump Mappingブロック(PHB) 5.11.1 アルゴリズム概要 Phongブロックは、テクスチャブロックからのテクスチャ情報を持つフラグメ
ントブロックからのカラー、マテリアル、ジオメトリック、及びライティング情
報を組み合わせてフラグメントのカラーを計算する。結果はカラードフラグメン
トであり、フレームバッファ内にすでに常駐しているいずれかのカラー情報と混
合されるとPixelブロックへと送り出される。
【0424】 Phongはフレーム、ファイル、またはスクリーンスペースを気にしない。 5.11.2 カラーインデックスモード テクスチャ及びフラグメントライテフィング動作は、カラーインデックスモー
ドには入らない。Phongブロックによって実行される唯一の計算は、フォグ計算
である。この場合、入力フラグメントカラーのR値の仮数は、0から255まで
変化する8ビットカラーインデックスとして解釈され、処理のために直接フォグ
ブロックにルーティングされる。 5.11.3 パイプライン位置 Phongブロックは、Textureの後、Pixelの前に位置している。本ブロックはテ
クスチャ及びフラグメント双方からパケットを受信する。フラグメントは、フラ
グメントごとのデータを、Mode Injectionから渡されるキャッシュフィルパケッ
ト同様に送信する。テクスチャは、テクセルデータのみを送信する。
【0425】 Phongによってもたらされる結果のみがPixelに送信され、Pixelが要求する他
の全データは別のデータパス経由で来る。図63にパイプライン内のPhongの位
置及び隣接ブロックとの関係を示す。
【0426】 Phongブロックは次の2つの内部キャッシュを持つ。シーンライト及び大域描
画モードのように頻繁には変化しない情報を保持する「ライト」キャッシュ、及
び一般的にオブジェクトごとに変化する情報を保持する「素材」キャッシュであ
る。 5.11.4 Phong演算ブロック Phong手順は、本切に要約される幾つかのサブコンポーネントにより成る。必
要なデータの詳細に伴う擬似コード及び状態情報は本明細書中で後に記述する。
図64にPhongのブロック図を示し、実行される種々の演算を示す。 5.11.4.1 テクスチャ演算 テクスチャ演算14114はTextureブロックから来るテクセル及び素材キャ
ッシュからのテクスチャモード情報を受け付ける。本機能は、テクスチャ環境計
算を適用し、複数のテキスチャがあればそれらを併合する。本機能は、テクスチ
ャの従来通りの使用のケースでは、結果をライト環境サブユニットに送り出し、
テクスチャがカラーを除くPhong計算の幾つかのパラメータの変更時にテクスチ
ャが解釈されるケースでは他のサブユニットに送り出される。 5.11.4.2 素材演算 素材演算14126はライティング演算用の素材値のソースを決定する。本機
能は現素材モードビットを使用して、テクスチャ値またはGouraud計算内でディ
スパッチされる入り一次カラーを持つフラグメント素材の入れ換えを決定するこ
とがある。 5.11.4.3 バンプ演算 バンプ演算14130は、表面ノーマルを決定する。本機能は、単純にフラグ
メントにより改ざんされたノーマルを渡すか3×3マトリックス乗算が関わる計
算内のテクセル値を使用することがある。 5.11.4.4. ライトテクスチャ演算 Light-Texture演算14134はライトのコンポーネントのいずれがテクスチ
ャ演算から送られてきたテクセルにより入れ換えられるべきかを決定する。 5.11.4.5 フラグメントライティング演算 フラグメントライティング演算14138は、GEOブロック内の頂点ごとのラ
イティングに使用される等式に似た等式を使用して実際のライティング計算を本
フラグメントに対して実行する。 5.11.4.6 ライト環境演算 ライト環境演算14142はフラグメントライティング演算の結果をTテクス
チャブロックから送られてきたテクスチャカラーと混合する。 5.11.4.7 フォグ演算 フォグ演算14146は「フォグ」に適用結され、観察者の視線からフラグメ
ントの距離のみによる演算を使用してフラグメントカラーを変更する。本機能は
最終結果をPixelブロックに送り出す。 5.12 Pixelブロック(PIX) 5.12.1 Pixelブロックの概要 Pixelブロック(PIX)は、3Dパイプライン中のバックエンドのまえの最後の
ブロックである。本ブロックは、OpenGL及びDirect3Dのフラグメントごとの動
作の役割を負う。これらの動作はアルファテスト、ステンシルテスト、深度テス
ト、ブレンド、振動、及びロジック動作を含む。ピクセルオーナーシップテスト
はウィンドウシステムの一部(OpenGL1.1規格の第4章参照)であり、バックエ
ンド内で実行される。これら動作に加えて、Pixelはアンチアライアシングに対
するサンプル蓄積を実行する。
【0427】 PIX前のパイプラインステージは、原線をVSPに変換する。VSPは、スタンプ上
の多角形の可視ポーションに対応する。スタンプは、画像の2×2ピクセル領域
である。SRTブロックは、各タイルに対する原線の収集の役割を負う。CULブロッ
クはSRTブロックからタイル順にデータを受信し、絶対に描画された画像には資
することのない原線のパーツを選別する。CULブロックはVSPを生成する。TEX及
びPHGユニットもVSPを受信し、それぞれフラグメントのライティング及びテクス
チャリングの役割を負う。
【0428】 PIXブロックはMode Injection(MIJ)及びPhong(PHG)ブロックから入力を受信
する。VSP及びモードパケットはMIJから受信し、VSP用フラグメントカラーはPHG
から受信する。PHGもVSPに対してフラグメントz値を供給することがある。オブ
ジェクトがそれに適用される深度テクスチャを持っている場合に、上記処理が起
きる。VSP用のフラグメントカラーは、VSPと同じ順番でPIXブロックに到着する
ことに注意する。PIXブロックは、適用可能モード設定に従って各可視サンプル
用データを処理する。PIXが現タイル用の全スタンプの処理を済ませると、Pixel
Out(PXO)ユニットに対して信号を送ってカラー、z、及びタイル用ステンシルバ
ッファの出力を促す。PixelOutユニットはピクセルサンプルを処理してカラー、
z、及びピクセル用のステンシル値を生成する。これらピクセル値は、バックエ
ンド(BKE)ブロックに送信される。フレームバッファ用のRDRAMメモリコントロー
ラはBKEブロック内にある。BKEブロックはPIXによるジオメトリ(VSP)の描画用
の現タイルバッファを準備する。本処理は、既存のカラー、z、及びステンシル
値のフレームバッファからのローディングを含む。 図65にPixel(PIX)ブロックのブロック図を示す。
【0429】 サンプルごとのz、ステンシル、及びカラーバッファは二重バッファリングさ
れている。それゆえ、PixelOutが1つのタイルをバックエンドに送信していると
、深度及び混合ユニットは2番目のタイルに書き込みを行っている場合がある。
サンプルごとのカラー、z、及びステンシルバッファは、1024サンプルなどのタ
イル1つ分のデータを保存するのに十分な大きさを持っている。ピクセルごとの
z、ステンシル、及びカラーバッファは各タイルにも用意されている。これらの
ピクセルごとのバッファは、BKEブロックとのインタフェース用に中間記憶とし
て使用される。
【0430】 PIXはMIJからバックエンド(BKE)ブロックに向かう幾つかのパケットを受信
する。入力フィルタは、バックエンドプリフェッチキュー上のこれらパケットを
適切に渡す。上記パケットは、受信した時の順番で上記キュー内で処理される。
幾つかのパケットはPixelOutユニット内のキューへと送信される。前述のように
、PIXブロックはMIJ及びPHGブロックから入力を受信する。これら2つの入力を
取り扱うための2つの入力キューがある。MIJからのデータパケットはVSPキュー
に向かい、PHGからのフラグメントColor/depthパケットはColorキューに向かう
。PIXブロックはBKEブロックに向かうパケットの幾つかも受信する。BKE及びPXO
ブロックは受信順でデータパケットを処理する。MIJはデータパケットを入力FIF
Oに入れる。入力バッファは、パケットヘッダーを検査し、BKEブロック向けのデ
ータをBKEブロックに送信し、PIXが必要とするデータパケットをVSPキューに送
信する。MIJから受信したパケットの大部分は、VSPキューに向けたものであり、
幾つかはBKEブロックに向かうだけであり、幾つかはBKE及びPXOユニットに送信
されてVSPキューにコピーされる。
【0431】 我々は、タイル動作の必要性とメカニズムを説明するのに多少脱線をする。典
型的な描画シーケンスは、下記の動作を伴うことがある。 1.必要ならば、カラー、z、及びステンシルバッファをそれらのクリア値に初
期化する。 2.必要ならば、ビットバックグラウンド画像をバッファに収容する。 3.ジオメトリの描画 4.他のビット 5.幾つかのさらなるジオメトリの描画 5.終了及びフリップ ステップ2内のビット動作はウィンドウ全体をカバーし、その後のそのバッフ
ァに対するクリア動作は必要ないことがある。ビットがウィンドウの一部をカバ
ーしている場合、クリアが必要な場合がある。さらに、動作1及び2は次のよう
に逆の順番で起きることがある。ウィンドウの一部のクリアに続いて、全部のウ
ィンドウのビット(多分)がある場合がある。ウィンドウ全体をカバーし、鋏テス
ト、タイル整列、及びスケーリングを必要としないプレジオメトリビットはBKE
ブロックによってタイルバッファへの画像読み戻しとして進められ、パイプライ
ン中でテクスチャリングされた原線として利用されることがある。同様に、Clea
r動作はは二種類に分けられる。ウィンドウ全体のClear動作は、PixelOutユニッ
ト内で進められ、ウィンドウの一部だけをカバーするClear動作は、PIXパイプラ
イン内で進められる。PIX(及びPIXの一部であるPixelOut)及びBKE双方は、動
作が呼び出された時に種々のバッファへの書き込みマスクを警戒する。実際に、
BKEブロックは、書き込みマスクを使用してタイルバッファを読み戻す必要があ
るかを決定している。フレームの描画がPolygonまたはソートメモリのオーバー
フローの原因になる場合は、やはりバッファの読み戻しが起きる可能性がある。
パイプラインはユーザフレームをすく数の順フレームに分割する。このように、
同じユーザフレームに対して、タイルがPIXボックス内で一回以上訪問すること
がある。一回目はタイルが見つかり、PIX(多分PixOutユニット)ブロックにより
描画に先立つ「クリア値」を伴うチップ上のタイルバッファクリアが必要になる
ことがある。後続のフレームでタイルを描画する場合は、ピクセルカラー、z、
及びステンシル値がフレームバッファメモリから読み戻される。zバッファがク
リアされ、カラー及びテンシルバッファが事前描画された画像からタイル内にロ
ードされると、他の非常に発生しがちなシナリオが起きることがある。このよう
に、タイルの準備の一環として、2つのことが起きる。バックグラウンド画像は
、フレームバッファメモリから有効化されてないビット平面にバックグラウンド
画像が読み戻され、ビット平面(カラー、z、及びステンシルマスクに対応)は
クリアされる。PIXから上ってっくるパイプラインステージは、これらの機能的
能力が「クリア」情報を送信するので、それらへの注意が必要である。
【0432】 PIXは入りサンプルのz値を既存のピクセルのそれらと比較して保存するサン
プルを決定する。Pixelは、オーバーフローに起因するユーザフレームの分割を
原因とするいずれのカラー染み出し加工物を最小化するために状態ビットも提供
する。 5.12.2 Pixelブロック内機能ユニット Pixelブロック内の機能ユニットに関して、そのカラー、アルファ、及び点描
値がフラグメントごとに生成され、それゆえ対応するテストの結果はフラグメン
ト内の全サンプルに適用されることに注意する。シザーステストの場合も同様で
ある。このブロックはフラグメントごと及びサンプルごとの演算に基づいて最適
化の導入を促している。
【0433】 ピクセル及びステンシル動作間の相違及びサンプルステンシル動作は、ステン
シル値がどのように検索され、タイルバッファに書き込まれるかの決断を妨げる
。 5.13 バックエンドブロック(BKE) 5.13.1 機能概要 5.13.1.1 用語 下記の項目は、本明細書の理解を助けるため、使用されるのに先立って下に定
義されたものでる。このため、この節を飛ばし、必要な時に参照することもでき
る。ピクセルオーナーシップ(PO BOX) は、スクリーン上に与えられたピクセルのうち
、ウィンドウIDが属するピクセルを決定するサブユニットである。このメカニズ
ムを使用して、スキャンアウトが上記ピクセルに付与されたオーバレイウィンド
ウがあるかを決定し、3Dタイル書き込みは、上記ピクセルへの書き込み許可を
チェックする。BKEバス は、BKEとGFD及びCFDとAGIを相互接続し、インタフェースする。このバ
スは、フレームバッファメモリ及びBKEレジスタに対する読み出し及び書き込み
使用される。フレームバッファ は、BKEに制御され、2D及び3Dウィンドウに付与された全て
のカラー及び深度値を保持する。このユニットは、リフレッシュレートでピクセ
ルをスキャンアウトすることによりモニタに表示されるスクリーンバッファを含
む。本ユニットはまた、スクリーンオーバレイ、pバッファ、ディスプレーリス
ト、頂点配列、及び蓄積バッファを寄せ付けない。スクリーンバッファ及び3D
のpバッファは二重バッファリングされている。 5.13.1.2 主な機能 図66にバックエンドそれにインタフェースするユニットとを示す。図に示す
スクリーンのように、BKEが3Dタイルの読み出し及び書き込みでもっともPixel
ユニットとインタラクトし、2Dグラフィックエンジン18000(図15に示す)と
はビット動作の実効のためにインタラクトする。CFDユニットは、BKEバスを使用
してフレームバッファからディスプレーリストを読み出す。AGIユニット110
4はBKEレジスタ及びメモリがマッピングされたフレームバッファのデータの読
み出し及び書き込みを行う。
【0434】 主なバックエンド機能を下記に示す。 ・ 3Dタイルよみこみ ・ Pisel Ownershipを使用した3Dタイル書き込み ・ 書き込み許可及びオーバーレイ検出用Pixel Ownership ・ Pixel Ownershipを使用したスキャンアウト ・ 固定比率ズーム ・ 3D蓄積バッファ ・ フレームバッファ読み出し及び書き込み ・ winidマップへのカラーキー ・ VGA ・ RAMDAC 5.13.2 3Dタイル読み出し BKEは、PIXからTile Beginコマンドをプリフェッチした。これらのパケットは
SRTでディスパッチし、全3Dユニットをバイパスしてタイルバッファの内容を読
み出すのに必要な潜在機能を提供する。3Dウィンドウの特徴はPIXから同じよ
うに早期に受信したBegin Frameコマンド群により初期化される。これらの特徴
としては、カラー及び深度表面用のアドレス、平面(アルファ、ステンシル、A
及びBバッファ)用の有効ビット、高さ及びストライド、カラーフォーマットな
どを挙げることができる。
【0435】 ピクセルアドレスは、ウィンドウパラメータを使用して計算される。タイルジ
オメトリで優位に立つため、16ピクセルが一回のメモリ読み出し要求で取り出
せる。
【0436】 3Dタイル読み出しでは、ピクセルオーナーシップは参考にされない。ウィン
ドウがメインスクリーン内にある場合は、オーナーシップ(再上部のウィンドウ
)は書き込みプロセス中に決定される。
【0437】 ピクセルは、縮小精度カラーに対しては24ビットカラーに拡張されないが、
32ビットピクセルワードにアンパックされる。
【0438】 Frequently Begin Tileコマンドは、クリア動作が適用されるためにタイル読
み込みは必要ないことを示すことがある。タイルバッファは、まだ割り当てられ
ており、タイル書き込みのピクセルオーナーシップが開始する。 5.13.3 3Dタイル書き込み 3Dタイル書き込みは3Dタイル読み出しが終わるとすぐに開始する。この潜在
機能は、ピクセルオーナーシップ書き込み許可の決定に使用される。タイルスタ
ートメモリアドレスは3D Tile Readプロセス中にすでに計算されている。書き
込み許可は、Rambusメモリに基づいたフレームバッファに対して書き込みマスク
として使用される。カラーは、カラー深度パラメータに指定されているように、
フレームバッファに書き込まれる前にパッキングされる。 5.13.4 ピクセルオーナーシップ ピクセルオーナーシップは共有スクリーンに対する書き込み許可の決定及びス
キャンアウト読み出し用オーバーレイウィンドウを識別するのに使用される。
【0439】 ピクセルオーナーシップブロックは、8ビットウィンドウIDを持つピクセルウ
ィンドウIDマップ同様に16バウンディングボックスを含む。これらIDは64個
のウィンドウを記載するテーブルをポイントする。バウンディングボックス及び
winidマップメカニズムは同時使用を可能にする。制御ビットはどのメカニズム
を最初に適用するかを決定する。
【0440】 ピクセルオーナーシップは、スクリーンx及びyピクセル座標を使用する。各
バウンディングボックスは、そのウィンドウに含まれる最大及び最小ピクセル座
標を指定する。バウンディングボックスは、再上部のウィンドウが最後に有効化
されたバウンディングボックスで指定されるように順序付けられている。バウン
ディングボックスは、長方形に形作られたウィンドウに対して簡単にセットアッ
プできる。それらは最も3Dウィンドウを志向しているが、少数の2Dウィンド
ウが使用されていると、本メカニズムは、2Dウィンドウをクリッピングするた
めにも使用される。
【0441】 任意に形成されたより多くのウィンドウの場合、よりメモリに集中的なメカニ
ズムが使用される。ピクセルあたりの8ビットウィンドウIDマップは与えられた
スクリーンピクセルが属するウィンドウを識別するためにオプションで保守され
る。
【0442】 書き込みの場合、タイルのウィンドウIDがピクセルオーナーシップで入手した
ピクセルIDと同じならば、ピクセル書き込みが有効化される。スキャンアウトの
場合、スクリーンからオーバーレイへの移行及び戻りはピクセルオーナーシップ
ウィンドウIDと現スキャンアウトウィンドウIDの比較により検出される。
【0443】 ピクセルオーナーシッププロセスを進める場合、ピクセルごとのチェックは、
しばしば16ピクセルチェックにより回避される。整列された水平16ピクセル
細片の場合、全てが同じウィンドウIDを共有する場合、それは一回の動作で決定
される。 5.13.5 スキャンアウト スキャンアウトはフレームバッファカラーを読み出し、データをディスプレー
用RAMDACに送信する。スキャンアウトは、フレームバッファで、最も高い優先順
位を持った動作である。スキャンアウトされるピクセルは、仮想ブリッツ、オー
バーレイなどを行うために読み出しピクセルオーナーシップブロックを通る。比
較的大きなキューが、オーバーレイの扱い及び水平ブランキング期間の優位性に
関わるイレギュラーな潜在機能をスムーズにするのに使用される。
【0444】 パレット及びガンマ修正がRAMDACにより実行される。固定比率のズームアウト
機能は、バックエンドによりスキャンアウトの間に実行される。
【0445】 スキャンアウトは、縮小3D機能を持つ1600×1200スクリーン用に120Hz
のリフレッシュレートを達成できなければならない。
【0446】 スキャンアウトは、ウィンドウあたり4つの違ったピクセルカラーフォーマッ
トをサポートする。メインスクリーン上の全てのウィンドウが同じピクセルカラ
ーフォーマットを共有する。サポートされたカラーフォーマットを下記に示す。
・ 32ビットRGBA(8-8-8-8) ・ 24ビットRGB(8-8-8) ・ 16ビットRGB(5-6-5) ・ 8ビットカラーインデックス スキャンアウトはScanoutキュー(SOQ)に常に24ビットを書き込む。カラー変
換及びアンパッキングは一切行われない。下位ビットは8及び16ビットカラー
のためにクリアされる。追加2ビットはピクセルあたりのカラーフォーマットに
使用される。
【0447】 インタレースされたスキャンアウトも特定のステレオ機器のためにサポートさ
れる。
【0448】 リアルタイム3Dアプリケーションは、小さなウィンドウに絵を描き、小さな
画像を大きなウィンドウにズームアップすることにより描画のスピードを上げる
ことができる。二線に挟まれた改ざんを伴うこのズーミングは、ピクセルがスキ
ャンアウトされた時に行われる。
【0449】 BKEは次の特定の固定比率スケーリングをサポートする。各方角で16/n、n
=1・・15である。サンプル点及び改ざん係数は、ズーム動作に先立って、ソ
フトウェアによりダウンロードされる。
【0450】 最大4つのウィンドウが、同じ固定比率(同じ係数)を使用してズームアウト
される。ピクセルがズーム機能出力から取り出す必要があるかを決定するために
スキャンアウトされたピクセルに対してズームバウンディングボックスが比較さ
れる。ズームロジックは、係数テーブルインデックスの順序付けるために継続し
て可能にすべき動作である。従って、スキャンアウトのウィンドウIDがズームボ
ックスのウィンドウIDと整合しなかった場合、ズーム出力は無視される。
【0451】 ウィンドウズームボックスはオーバーラップしてはならない。 5.13.6 3D蓄積バッファ BKEは64ビット(カラーあたり16ビット)蓄積バッファをサポートする。蓄
積コマンドは、フレーム間でtweenパケットとして受信される。それらのコマン
ドは、3Dタイルカラー、蓄積バッファカラー、及び即値を持つ多重及び追加機
能を実行する。結果は、蓄積バッファまたは3Dタイルに書き込まれる。
【0452】 シザーステストが有効な場合、そのシザースボックス内のピクセルのみがAccu
m動作により更新される。それ以外の場合は、ウィンドウが更新される。
【0453】 ピクセルが3Dタイルに書き戻された場合は、振動及びカラーマスキングがシ
ザーステストに加えて適用される。蓄積バッファは、カラーインデックスモード
には使用されない。 5.13.7 フレームバッファ読み出し及び書き込み BKEは全ての内部サブユニット及び外部ユニットのために読み出し及び書き込
みインタフェースを提供する。AGI、CFD、及びTDGはBKEバスを使用してフレーム
バッファ読み出し及び書き込み要求を作成する。BKE属性バスはそれらのユニッ
トから要求を出す。
【0454】 内部サブユニットはMem Busを使用してフレームバッファにアクセスする。3
Dタイル読み出し、3Dタイル書きこみ、蓄積バッファ読み出し及び書きこみ、
ピクセルオーナーシップwinidマップ読み出し、スキャンアウト、スクリーン及
びオーバーレイ読み出し、ズームウィンドウ読み出し、及びカラーキーwinidマ
ップ書きこみなどは全てMem Busを使用してフレームバッファにアクセスしてい
る。
【0455】 合計3.2Gbyte/sec大域幅能力を持つ2つのRambusメモリチャンネルがフレーム
バッファに対する性能要件を保持する。スキャンアウト及びズーム読み出しは、
再優先される。 5.13.8 カラーキーウィンドウマップ書きこみ ウィンドウのカラーキー機能はBKEからウィンドウIDマップを通じて提供され
る。特別カラーキーを持ったウィンドウは、適切なウィンドウ(key_id_on)をポ
イントするように設定された対応するウィンドウIDマップを持つ。ウィンドウID
key_id_onを伴う書きこみが行われた場合、カラーキーが付加されたピクセルだ
けが置き換えられる。
【0456】 BKEはソフトウェアがカラーキーのためのウィンドウIDマップを作成するため
に使用できる特別な機構を含む。カラーバッファ書き込みが特別なウィンドウ内
で行われ、カラーが適当な範囲にある場合、ピクセルのためのwinidが書き込ま
れることがある。 5.13.9 RAMDAC RAMDACは、デジタルカラー値をアナログ信号に変換する。ソフトウェアのプロ
グラマブルカラーパレットが8ビットインデックスを24ビットRGB値に変換す
る。同じRAMが調査ベースのガンマ修正にも使用される。調査RAMは256×10
ビットSRAMで編成され、その内の一つはカラーの各コンポーネントのためのもの
である。
【0457】 RAMDACは300Mhzまで動作でき、ピクセルブロックを生成できる。RAMDACは
、VGAコアまたはスキャンアウトキューからピクセルを受け付ける。RAMDA777Cは
コアとしてSEIから得られる。本書はコアとのインタフェース及びその機能に対
する基本的な要件を規定するだけである。 5.13.10 VGA VGAこれはブートタイムの間だけWindowsNT(登録商標)下で走行するスクリー ン互換アプリケーションに使用される。VGAコアはBKEバスとインタフェースし、 フレームバッファ読み出し及び書き込み用Mem バス及びVGAモードのスキャンア ウト用のRAMDACにてレジスタ読み出し及び書き込みを実行する。VGAユニットが 無効化されると、そのスキャンアウトは無視される。
【0458】 VGAこれはAlpinシステムから得られる。本書はコアとのインタフェース及びそ
の機能に関する基本的な要件を規定するだけである。 5.13.11 BKEバス CFDの説明に記されているように、バックエンド入力バス及びバックエンド出
力バスがあり、合わせてBKEバスと呼ばれる。
【0459】 BKEを通じて読み出し及び書き込みを行う外部クライアントユニットがAGIであ
る。
【0460】 これらのユニットは要求/許容プロトコルを使用してBKEバスのオーナーシッ
プを得る。クライアントが一旦このバスを許容すると、バスはBKEに読み出しま
たは書き込みパケットを通知し、BKEから読み出しデータをサンプリングする。
【0461】 クライアントはBKEバスオーナーシップを、そのReq信号をアサートすることに
よって要求する。BKEは本要求と他の条件を仲裁する。要求を出したクライアン
トがオーナーシップを許可された場合、BKEはGnt信号をアサートする。メモリア
クセスを済ませた後、現オーナーは自ら形Reqを取り除くことによってオーナー
シップを手放すか、Ris(Release)信号をBKEから受け取るまでオーナーシップ
(park)を保持する。クライアントは通常Ris信号を受け取った後で限られた時
間内にオーナーシップを放棄しなければならない。例えば、クライアントは最後
にデータが返ってきたらすぐにオーナーシップを手放さなければならない。追加記事 本発明は多数の革新的な構造、方法、及び手順を提供する。構造は、デジタル
回路を含む個別回路、コンピュータアーキテクチャ及びシステム、パイプライン
アーキテクチャ及びプロセッサ接続性などいかなる形も取り得る。方法論的には
、本発明は延長シェ−ディングに対する手順及び延長シェ−ディングを実行する
作業者、実行しない作業者、及びデータ処理を行う作業者などに広く使用される
、他の多数の革新的な手順を提供する。これらの普通の技術的に熟練した作業者
は、多くの発明的な構造及び手順が3次元グラフィックプロセッサに関連して説
明されているが、発明の多くが2次元処理を始めとしてデータ処理や操作にも広
く適応性を持っていることに気づくであろう。例えば、革新性の多くは、汎用コ
ンピュータ機器、システム、及びアーキテクチャの構造に導入可能である。幾つ
かの実施例がハードウェア利用を必要とするかまたはそこから利益を得ており、
少なくとも、幾つかの革新技術はハードウェアまたはソフトウェア/ファームウ
ェア利用及び組み合わせに適用可能である。
【0462】 上述した本発明の構造および方法により提供される革新的機構の内の幾つかの
簡潔なリストを直下に示す。このリストは、代表的なものを例示するもの、制限
するものではない。ここに示す個々の構造及び手順は様々に組み合わされるが、
それぞれの組み合わせにつきリストアップしていないことに留意するべきである
。さらに、このリストは、革新技術の適用に関して3次元グラフィックスプロセ
ッサに焦点を当てているが、それらの革新技術は、本明細書中で説明され、図に
示されている機構及び/または動作を持つ汎用コンピュータ機器にも容易に適用
可能である。
【0463】 ここに記されている発明は、多数の発明を含む構造及び方法を含むが、次に示
す構造及び手順に限定されるものではない。3次元グラフィックス延長シェ−デ
ィングアーキテクチャ、従来型の隠れた表面の除去。タイルプリフェッチ、コン
テクスト切り替え、より良いアンチアライアシングのためのSRTによるマルチ
パス、サンプル場所の選択、セットアップ前の分類、Tweenパケット、パケット
によるデータ転送、アルファテスト、ブレンド、点描線、その他、チップ分割、
オブジェクトタグ(特に延長シェ−ディングアーキテクチャ)、カラー空間内の
ロガリズミック正規化(浮動小数点カラー)、バックエンドマイクロアーキテク
チャ、スキャンアウト中のピクセルズーミング、スキャンアウト中仮想ブロック
転送(BLT)、ピクセルオーナーシップ、ウィンドウID、ブロッキング及びノン
ブロッキング割り込み機構、キューイング機構、頂点リストに対するトークン挿
入、隠れた表面の除去、タイル内容アドレッサブルzバッファ、3ステージzバ
ッファプロセス、アルファテストへの対処及び延長シェ−ディング中のステンシ
ル、Z Ref及びDz/dx及びdx/dyを持つスタンプの下流送信、Zバッファメモリ
とは別のスタンプポーションメモリ、分類された透過性アルゴリズム、サンプル
ごとの制限された状態マシン、SAM利用、フラグメントマイクロアーキテクチャ
、GEOマイクロアーキテクチャ、パイプステージインタリービング、多角形クリ
ッピングアルゴリズム、2次元ブロックマイクロアーキテクチャ、0から1イン
クルーシブマルチプライヤ(Mul-18p)、整数―浮動少数点−整数(ifi)整合ユ
ニット、テイラーシリーズ利用、算術ブロック構築法、マルチチップ通信リング
グラフィックス、延長シェイダー内モード対処、モードキャチング、MLMポイン
タ記憶、多角形メモリ内Sort Whole内クリップド多角形、Phong/bump割り当て、
テクスチャ環境及びライティング用動的マイクロコード生成、延長シェ−ディン
グマイクロアーキテクチャ、フラグメントエンジンの素材タグベースのリソース
、アーキテクチャ内のタンジェント空間ライティング法、種々のスケールバンプ
マップ、自動ベース生成、自動傾きフィールド生成、角度及び大きさの別々の処
理による正規改ざん、延長シェーダにおけるポストタイルソーティングセットア
ップ操作、統一された原線記述、タイル相対Y値及びスクリーン相対x値、ハー
ドウェアタイルソーティング、十分な空間ルックアヘッド機構、接触タイル改ざ
ん、テクスチャ再使用マッチングレジスタ(延長シェーダを含む)、ピクセルに
拡張されたサンプル(テクスチャミス扱い)、タイルバッファ及びピクセルバッ
ファ(テクスチャマイクロアーキテクチャ)、及びパケットを使用したプロセッ
サ内データ転送。
【0464】 本明細書で説明したすべての刊行物、特許、及び特許出願は、各刊行物及び特
許出願を特に個々に参照したものと同様の範囲で、本願において参照として含め
ることができる。
【0465】 本発明の前に述べられた実施例の記載は、図示及び記述の目的で提供されたも
のである。上述の記載は、発明を本明細書中で明らかな形態に限定するものでは
なく、上述した教示の範囲内での多数の修正や変更が可能である。実施例は、本
発明の原理を説明する目的で選択・記述されたものである。それらの実際的な適
用にあたり、当業者であれば、本発明及び種々の実施例に基づいて特別な使用目
的に適合させるべく、様々な修正を加えて有効利用が可能であろう。本発明の範
囲は、本願に添付された請求項及びその均等範囲により規定される。 関連出願 本出願は、35 USC セクション 119(e)の米国仮出願、1998年8月20日に
出願された出願番号 No.60/097,336、題名“GRAPHICS PROSESSOR WITH DEFFERED
SHADING”の下に利益を主張する。
【0466】 本出願は、USC セクション 120による1998年12月17日の米国特許出願
、出願番号No.90,213,990、題名“ HOW TO DO TANGENT SPACE LIGHTING IN A DE
FFERED SHADING ARCHITECTURE” (アトーニードケットNo.A-66397)の下にも利益
を主張する。
【0467】 題名“ユニファイドプリミティブデスクリプタを使用する3−Dグラフィック
スパイプラインにおけるセットアップ動作を実行するための装置および方法”(
アトーニードケットNo. A-66382)の下にも利益を主張する。
【0468】 題名“ポスト−ファイルソーティングセットアップ”(アトーニードケットNo
. A-66383)の下にも利益を主張する。
【0469】 題名“相対Y−値のタイルおよび相対X−値のスクリーン”(アトーニードケ
ットNo. A-66384)の下にも利益を主張する。
【0470】 題名“3次元グラフィックスパイプラインにおける空間ソーティングイメージ
データシステム、装置および方法”(アトーニードケットNo. A-66380)の下にも
利益を主張する。
【0471】 題名“3次元グラフィックスパイプラインにおけるソーティングされた対象次
ジオメトリリのための保証された保守メモリ見積もりのためのシステム、装置お
よび方法”(アトーニードケットNo. A-66381)の下にも利益を主張する。
【0472】 題名“3次元グラフィックスパイプラインにおける与えられた資源をバランシ
ングさせるためのシステム、装置および方法”(アトーニードケットNo. A-6637
9)の下にも利益を主張する。
【0473】 題名“パイプライン状態を記憶およびリトリーブするグラフィックスプロセッ
サ”(アトーニードケットNo. A-66378)の下にも利益を主張する。
【0474】 題名“テクスチャを発生させるための方法および装置”(アトーニードケット
No. A-66398)の下にも利益を主張する。
【0475】 題名“3Dグラフィックスパイプラインにおけるジオメトリ操作のための装置
および方法”(アトーニードケットNo. A-66373)の下にも利益を主張する。
【0476】 題名“3Dグラフィックスパイプラインにおけるフラグメント操作のための装
置および方法”(アトーニードケットNo. A-66399)の下にも利益を主張する。
【0477】 題名“繰り返しシェーディンググラフィックスパイプラインプロセッサ”(ア
トーニードケットNo. A-66360)の下にも利益を主張する。
【0478】 題名“繰り返しシェーディングのグラフィックスプロセッサにおける保守しつ
つ隠された表面除去を実行するための方法および装置”(アトーニードケットNo
. A-66386)の下にも利益を主張する。
【0479】 題名“向上した特徴を有する繰り返しシェーディンググラフィックスパイプラ
インプロセッサ”(アトーニードケットNo. A-66364)の下にも利益を主張する。
【図面の簡単な説明】
本発明のさらなる目的及び特徴は、図面を参照すると、以下の詳細な説明及び
添付の特許請求の範囲から容易に明らかになるであろう。
【図1】 図1は、自らの座標軸、ビューイング・ポイントの座標システム、及びスクリ
ーン座標を伴う、四面体を示す図である。
【図2】 図2は、3Dグラフィックス・パイプラインのための、従来の包括的レンダラ
を示す図である。
【図3】 図3は、本発明の3次元グラフィックス・パイプラインの実施形態を示す、特
に他の機能的ブロックを伴うジオメトリ・エンジン3000と、及びホスト上で
実行するアプリケーション、及びホスト・メモリとの関係を示す図である。
【図4】 図4は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第一の実施形態を示す図である。
【図5】 図5は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第二の実施形態を示す図である。
【図6】 図6は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第三の実施形態を示す図である。
【図7】 図7は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第四の実施形態を示す図である。
【図8】 図8は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第五の実施形態を示す図である。
【図9】 図9は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第六の実施形態を示す図である。
【図10】 図10は、保存性隠れ面除去の実施形態の検討を示す図である。
【図11】 図11は、保存性隠れ面除去の実施形態におけるアルファ・テスト及び深度テ
ストの検討を示す図である。
【図12】 図12は、保存性隠れ面除去の実施形態におけるステンシル・テストの検討を
示す図である。
【図13】 図13は、保存性隠れ面除去の実施形態におけるアルファ・ブレンディングの
検討を示す図である。
【図14】 図14は、保存性隠れ面除去の実施形態のさらなる検討を示す図である。
【図15】 図15は、パイプラインの実施形態の、ブロックを通過するデータの例示的な
流れを示す図である。
【図16】 図16は、カル・ブロックのある実施形態が、部分的に不明瞭な三角形からフ
ラグメントを作る方法を示す図である。
【図17】 図17は、ピクセル・ブロックのある実施形態が、1スタンプの価値を有する
フラグメントを処理する方法を示す図である。
【図18】 図18は、フロント・エンド・コマンド・フェッチ及びデコード・ブロック(
CFD)2000における主な機能的装置を示す、パイプラインの実施形態の例
示的なブロック図を示す図である。
【図19】 図19は、ディファード・シェーディング・グラフィックス・プロセッサ(D
SGP)の一つの実施形態が、バーテックス座標を変換する方法を強調する図で
ある。
【図20】 図20は、ディファード・シェーディング・グラフィックス・プロセッサ(D
SGP)の一つの実施形態が、法線、接線、及び従法線を変換する方法を強調す
る図である。
【図21】 図21は、ジオメトリ・ブロック(GEO)の機能的ブロック図を示す図であ
る。
【図22】 図22は、本発明の構造の3チップ実施形態における半導体チップ上の機能的
ブロック間の関係を示す図である。
【図23】 図23は、モード・エクストラクション・ブロック(MEX)の一つの実施形
態における例示的なデータ・フローを示す図である。
【図24】 図24は、例示的なモード・エクストラクション・ブロックに送信されるパケ
ットを示す図である。
【図25】 図25は、例示的なモード・エクストラクション・ブロックのオンチップ状態
ベクトル・パーティショニングの実施形態を示す図である。
【図26】 図26は、ポリゴン・メモリへの情報をセーブするための処理の特徴を示す図
である。
【図27】 図27は、MEXと相対したポリゴン・メモリに関する例示的な構成を示す図
である。
【図28】 図28は、MEXブロックにおける色ポインタ生成と相対した色情報に関する
例示的ビット構成を示す図である。
【図29】 図29は、MEXブロックにおける色タイプ・フィールドに関する例示的構成
を示す図である。
【図30】 図30は、点リスト、線ストリップ、三角形ストリップ、又は三角形ファンの
リストの第一のデュアロクトに記憶されたMLMポインタ・パケットの内容を示
す図である。
【図31】 図31は、データ記憶装置及びポインタ記憶装置に分割される方法を含む、デ
ータがソート・メモリ・ページに記憶される方法の例示的実施形態を示す。
【図32】 図32は、ソート・ブロックの例示的実施形態の単純化されたブロック図を示
す。
【図33】 図33は、タイルABC及び(xTile,yTile)に中心を有するタイルに関す
るタッチド・タイル計算プロシージャの特徴を示す図である。
【図34】 図34は、タッチド・タイル計算プロシージャの特徴を示す図である。
【図35A及び35B】 図35A及び35Bは、タッチド・タイル・プロシージャにおけるしきい値距
離計算の特徴を示す図である。
【図36A】 図36Aは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第一の関係を示す図である。
【図36B】 図36Bは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第二の関係を示す図である。
【図36C】 図36Cは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第三の関係を示す図である。
【図37】 図37は、タイルの辺の一つに関連した、線の角度の間の関係を含むしきい値
距離決定のエレメントを示す図である。
【図38A】 図38Aは、18×14アレイでの252タイルを有するウィンドウに関する
SuperTileホップ・プロシージャ・シーケンスの例示的な実施形態を示
す図である。
【図38B】 図38Bは、図38Aに記載のN=63及びM=13のSuperTileホ
ップ・プロシージャに関する例示的シーケンスを示す図である。
【図39】 図39は、STPブロックに到着し、及びエイリアス又はアンチ・エイリアス
・モードでレンダリングされることができるDSGP三角形を示す図である。
【図40】 図40は、線をクワド及び様々な方向のエイリアスされ及びアンチ・エイリア
スされた線の描画のために生成された様々なクワドへと変換することによって、
DSGPが線をレンダリングする方法を示す図である。
【図41】 図41は、ユーザ特定点が、ジオメトリ装置におけるレンダリングされた点に
調節される方法を示す図である。
【図42】 図42は、アンチ・エイリアスされた線セグメントが、平行四辺形及び三角形
を統一的にラステライズするCUL装置スキャン・コンバータにおいて、三角形
に変換される方法を示す図である。
【図43】 図43は、アンチ・エイリアスされた線の場合における長方形と比較して、エ
イリアスされた線のエンド・ポイントが、平行四辺形を使用して計算される方法
を示す図である。
【図44】 図44は、長方形が、線の可視部分を表示する方法を示す図である。
【図45】 図45は、点描オフセットstplStartBitと同様に、新しい線開始
点が、クリップされた点に関して生成される方法を示す図である。
【図46】 図46は、線モード三角形のジオメトリを示す図である。
【図47】 図47は、セットアップが、バーテックス割り当てを含む、線及び三角形をど
のように表示するかの特徴を示す図である。
【図48】 図48は、セットアップが、スロープ割り当てを含む、線及び三角形をどのよ
うに表示するかの特徴を示す図である。
【図49】 図49は、セットアップが、線の方向に基づいて四分円弧割り当てを含む、線
及び三角形をどのように表示するかの特徴を示す図である。
【図50】 図50は、セットアップが、クリップ記述子のネーミング及びバーテックスへ
のクリップ・コードの割り当てを含む、線及び三角形をどのように表示するかを
示す図である。
【図51】 図51は、セットアップが、特定の値をCULにどのように渡すかの特徴を含
む、セットアップがどのように線及び三角形を表示するかの特徴を示す図である
【図52】 図52は、点処理と関連したタイル座標の決定を示す図である。
【図53】 図53は、カル・ブロックの例示的実施形態の図である。
【図54】 図54は、カル・ブロック・サブユニットの例示的実施形態の図である。
【図55】 図55は、完全に結合的であり、キャッシュ・タグ・ルックアップに関してコ
ンテント・アドレッサブル・メモリ(CAMs)を使用するタグ・キャッシュの
例示的実施形態の図である。
【図56】 図56は、モード・データが流れ、及びDSGPパイプラインの部分にキャッ
シュされる方法を示す図である。
【図57】 図57は、フラグメント・ブロックの例示的実施形態の図である。
【図58】 図58は、様々なプリミティブによって形成されるピクセル・フラグメントを
有するVSPの例を示す図である。
【図59】 図59は、三角形に関して透視的修正重心補間を使用するフラグメント・ブロ
ック補間の特徴を示す図である。
【図60】 図60は、不等マグニチュードのベクトル間の補間が、どのように一様でない
角度粒状度(uneven angular granularity)を生み、及びなぜ本発明の構造及び
方法が、このように法線と接線を補間しないのか、の例を示す。
【図61】 図61は、フラグメント・ブロックにおける補間係数を形成するために使用さ
れるフラグメントx及びy座標が、どのように形成されるかを示す図である。
【図62】 図62は、テクスチャ・アレイ・アドレッシングの概観を示す図である。
【図63】 図63は、パイプラインにおけるフォン装置位置及び隣接するブロックへの関
係を示す図である。
【図64】 図64は、いくつかのサブ・ユニットを具備するフォンのブロック図を示す図
である。
【図65】 図65は、PIXブロックのブロック図を示す図である。
【図66】 図66は、バックエンド・ブロック(BKE)及びそれに接する装置を示す図
である。
【図67】 図67は、BKEを通したメモリ読み取り及び書き込みを実行する外部クライ
アント装置を示す図である。
【手続補正書】
【提出日】平成13年7月26日(2001.7.26)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0480】 これらのいくつかの構造及び方法に、ディファード・シェーディング・グラフ
ィックス・パイプライン・プロセッサ及び処理方法の多くの実施形態が、それら
に関連する構造及びプロシージャと同様に含まれる。以下の内容を含むが、それ
らに限定されない、多くの実施形態が示され及び記述される: (1)(a)通信チャネルを介して、外部コンピュータからのデータ及び/又は
コマンドの入力を伝え、及び前記入力を、一連のパケットに変換するコマンド・
フェッチ及びデコード装置であって、前記パケットは、色、面法線、テクスチャ
座標、レンダリング情報、ライティング、ブレンディング・モード、及びバッフ
ァ機能を含むグループから選択された情報項目を含む、前記コマンド・フェッチ
及びデコード装置と;(b)前記パケットを受信し、及び座標変換、すべてのポ
リゴンの、実三角形又は退化三角形への分解、ビューイング・ボリューム・クリ
ッピング(viewing volume clipping)、及び任意で、グロー・シェーディング
に必要とされる、バーテックスごとのライティング及び色計算を実行するジオメ
トリ装置と;(c)モード抽出装置及び前記ポリゴン装置と関連したポリゴン・
メモリであって、前記モード抽出装置は、前記ジオメトリ装置からデータ・スト
リームを受信し、及び前記データ・ストリームを、ソート装置に送られるバーテ
ックス・データと、記憶のために前記ポリゴン・メモリへと送られる非バーテッ
クス・データとに分離する、前記装置と;(d)ソート装置及び前記ソート装置
と関連したソート・メモリであって、前記ソート装置は、前記モード抽出装置か
らバーテックスを受信し、及びその結果の点、線、及び三角形をタイルでソート
し、及び前記ソートされたジオメトリを、タイルごとのオーダで、完全なプリミ
ティブを表すソート・ブロック出力パケットの手段によって、セットアップ装置
へと伝える、前記ソート装置及びソート・メモリと; (e)前記ソート・ブロ
ック出力パケットを受信し、及び一度に一つのプリミティブ、タイルごとのベー
スで、線及び三角形に関して空間デリバティブを計算し、及び前記空間デリバテ
ィブを、パケットの形式でカル装置に送るセットアップ装置と;(f)一度に、
1タイル分のデータを受信し、及び大きさ比較内容アドレッサブル・メモリ(M
CCAM)カル・サブ装置及びサブピクセル・カル・サブ装置を有するカル装置
であって、前記MCCAMカル・サブ装置は、以前に処理されたジオメトリによ
って完全に隠されるプリミティブを廃棄するように動作可能であり、及び前記サ
ブピクセル・カル・サブ装置は、一部又は全体が可視である残りのプリミティブ
を処理し、及び前記残りのプリミティブの可視フラグメントを決定し、前記サブ
ピクセル・カル・サブ装置は、一度に、1スタンプ分のフラグメントを出力する
前記カル装置と;(g)前記カル装置からの入力を受信し、及び前記ポリゴン・
メモリから色及び素材プロパティを含むモード情報を検索し、及び前記モード情
報を、フラグメント装置、テクスチャ装置、フォン装置、ピクセル装置、及びバ
ックエンド装置の一つ以上に送るモード・インジェクション装置であって;前記
フラグメント装置、前記テクスチャ装置、前記フォン装置、前記ピクセル装置、
又は前記バックエンド装置の少なくともいくつかは、最近使用されたモード情報
をキャッシュするためのモード・キャッシュを含み;すでにキャッシュされた情
報を識別し、すでにキャッシュされた情報を送らず、それによって通信帯域幅を
低減させる状態情報を維持する前記モード・インジェクション装置と;(h)グ
ロー・シェーディングのための色値を補間し、フォン・シェーディングのための
面法線及びテクスチャ・マッピングのためのテクスチャ座標を補間し、及びテク
スチャを高さフィールド勾配として表すバンプ・マップが使用されている場合に
、面接線を補間するためのフラグメント装置であって;重心係数を使用して、透
視的修正補間を実行する前記フラグメント装置と;(i)テクスチャ装置と、及
び前記テクスチャ装置と関連するテクスチャ・メモリであって;前記テクスチャ
装置は、前記テクスチャ・メモリに記憶されたテクスチャ・マップをピクセル・
フラグメントに適用し;前記テクスチャ・マップはミップ・マップ(MIP-mapped
)され、及び各マップが、アイ・ポイントから一定の距離にある前記テクスチャ
の外観を表す、異なるレベルのディテールで一連のテクスチャ・マップを具備し
;前記テクスチャ装置は、正しいレベルのディテールに近似する一定のピクセル
・フラグメントに関するテクスチャ値を作成するために、前記テクスチャ・マッ
プからトリ・リニア補間を実行し;前記テクスチャ装置は、補間されたテクスチ
ャ値を、フラグメントごとのベースで前記フォン装置に伝える、前記テクスチャ
装置及びテクスチャ・メモリと;(j)前記モード・インジェクション装置、前
記テクスチャ装置からの前記テクスチャ色、及び前記フラグメントの外観の色を
決定するために、前記フラグメント装置によって生成される前記面法線によって
供給される素材及びライティング情報を使用して、各ピクセル・フラグメントに
関してフォン・シェーディングを実行するためのフォン・ライティング装置であ
って;バンプ・マッピングが使用されている場合に、シェーディングの前に、前
記フラグメントの面法線を摂動させるために、前記テクスチャ装置からの前記補
間された高さフィールド勾配を任意で使用する前記フォン装置と;(k)各フラ
グメントが個別の色値を有し、可視スタンプ・ポーション(Visible Stamp Port
ion)と称される、1スタンプ分のフラグメントを一度に受信し、及びピクセル
・オーナシップ・テスト、シザー・テスト、アルファ・テスト、ステンシル・オ
ペレーション、深度テスト、ブレンディング、ディザリング、及び各ピクセルに
おける各サンプルでのロジック・オペレーションを実行し、及び1タイル分の仕
上げられたピクセルを蓄積した後に、前記ピクセルをアンチ・エイリアスするた
めに、各ピクセル内の前記サンプルをブレンドし、及び前記アンチ・エイリアス
されたピクセルをバックエンド装置に伝えるピクセル装置と;及び(l)前記ピ
クセル装置から、一度に1タイル分のピクセルを受信するために、前記ピクセル
装置に接続され、及び前記ピクセルをフレーム・バッファに記憶する前記バック
エンド装置と を具備するディファード・グラフィックス・パイプライン・プロセッサ。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0481】 (2)レンダリングされた画像をグラフィックス・プリミティブから形成する
ためのグラフィックス・レンダリング・システムであって、前記レンダリングさ
れた画像は、フレーム・バッファに記憶され:(A)ホスト・プロセッサと;
(B)システム・メモリと;(C)ピクセルを記憶するフレーム・バッファと; (D)(1)第一の直接メモリ・アクセス・コマンドと、及び2次元グラフィ
ックス・オペレーションを実行するための第一のコマンドとを受信し及び記憶す
る2Dコマンド待ち行列メモリと;(2)第二の直接メモリ・アクセス・コマン
ドと、及び3次元グラフィックス・オペレーションを実行するための第二のコマ
ンドとを受信し及び記憶する3Dコマンド待ち行列メモリであって、前記第二の
コマンドは:前記グラフィックス・プリミティブのいくつかと;及びパイプライ
ン状態の一部を具備する前記3Dコマンド待ち行列メモリと;(3)2次元グラ
フィックス・オペレーションを実行するための第三のコマンドを受信し及び記憶
する2D応答待ち行列メモリと;(4)3次元グラフィックス・オペレーション
を実行するための第四のコマンドを受信し及び記憶する3D応答待ち行列メモリ
であって、前記第四のコマンドは:前記グラフィックス・プリミティブのいくつ
かと;及び前記パイプライン状態の一部を具備する前記3D応答待ち行列メモリ
と;(5)前記2Dコマンド待ち行列メモリ及び前記3Dコマンド待ち行列メモ
リに接続された直接メモリ・アクセス・コントローラであって:(a)前記第三
のコマンドを前記システム・メモリから読み取り、及び前記読み取られた第三の
コマンドを、前記2D応答待ち行列へと書き込むことによって、前記記憶された
第一の直接メモリ・アクセス・コマンドを受信し及び前記第一の直接メモリ・ア
クセス・コマンドを実行するロジックと;及び(b)前記第四のコマンドを前記
システム・メモリから読み取り、及び前記読み取られた第四のコマンドを前記3
D応答待ち行列へと書き込むことによって、前記記憶された第二の直接メモリ・
アクセス・コマンドを受信し及び前記第二の直接メモリ・アクセス・コマンドを
実行するロジックとを具備する前記直接メモリ・アクセス・コントローラとを具
備するコマンドを受信するための装置と:(E)(1)前記グラフィックス・プ
リミティブを変換するロジックと;(2)前記グラフィックス・プリミティブが
、少なくとも部分的に、ビュー・ボリュームに含まれているか決定するために、
前記グラフィックス・プリミティブをクリップ・テストするロジックと;(3)
ビューイング・ポイントから逸れた方を向いている前記グラフィックス・プリミ
ティブのいずれをも廃棄するために、面決定を実行するロジックとを具備するジ
オメトリ装置と:(F)(1)隠れ面除去に必要な前記パイプライン状態の部分
と;(2)バーテックス場所を含む、隠れ面除去に必要な前記グラフィックス・
プリミティブの部分とを具備するソート・メモリと:(G)(1)前記グラフィ
ックス・プリミティブの属性とともに、フレームに関する前記グラフィックス・
プリミティブと;及び(2)バーテックス色及びテクスチャ座標を含む、隠れ面
除去に必要でない前記グラフィックス・プリミティブの部分とを記憶する状態メ
モリと:(H)(1)前記画像内におけるタイル領域に従って、前記グラフィッ
クス・プリミティブをソートするロジックと;(2)タイルに従って、前記ソー
ト・メモリから前記ソートされたグラフィックス・プリミティブを読み取るロジ
ックとを具備するソート装置と;(I)前記ソートされたグラフィックス・プリ
ミティブに関するデリバティブを計算するセットアップ装置と;(J)シーン・
メモリに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレ
ーム・バッファにおける前記ピクセルの最終色に影響を与えるかを決定するため
に、隠れ面除去を実行するカル装置と;(K)前記各ピクセル内における各サン
プル、又はサンプルのグループに関して、フラグメント色を生成するひとつ以上
の計算装置であって、前記各ピクセルに関する色値の生成は、前記ピクセルに影
響を与えると決定された前記グラフィックス・プリミティブの前記部分に関して
のみ実行され:(1)前記グラフィックス・プリミティブに関連するデータを補
間するための装置であって:(a)キャッシュ・フィル・ポリゴン色データ(ca
she fill polygon color data)を記憶するメモリであって、前記色データは、
バーテックス座標、w座標、及びテクスチャ座標を具備する前記メモリと;(b
)前記バーテックス座標及び前記w座標から前記グラフィックス・プリミティブ
の各々に関して、重心係数を計算するロジックと;(c)複数の前記グラフィッ
クス・プリミティブに対応する複数のデータ・キャッシュ・エントリを記憶する
キャッシュ・メモリであって、前記キャッシュされたデータは、重心係数及びテ
クスチャ座標を具備する前記キャッシュ・メモリと;(d)前記グラフィックス
・プリミティブの一つのフラグメントを受信するレジスタであって、前記フラグ
メントは、フラグメント座標及びサンプル・マスクを具備し、前記サンプル・マ
スクは、前記フラグメントによって覆われる前記ピクセル内のサンプル場所を示
す前記レジスタと;(e)補間場所の低位ビットを決定するルックアップ・テー
ブルであって、前記ルックアップ・テーブルの入力は、前記サンプル・マスクを
具備し、前記補間場所は、サブピクセル精度を有する前記ルックアップ・テーブ
ルと;(f)前記受信されたフラグメントに対応する前記記憶されたデータ・キ
ャッシュ・エントリの一つを選択し及び読み取るロジックと;(g)前記重心係
数及び前記補間場所から補間係数を計算するロジックと;(h)前記計算された
補間係数を使用して、前記テクスチャ座標を補間し、前記補間場所においてテク
スチャ座標を生成するロジックとを具備する前記装置と:(2)バーテックス面
法線を補間するための装置であって:(a)前記バーテックス面法線の各々を、
バーテックス大きさベクトル及びバーテックス方向ベクトルに分解するロジック
と;(b)複数の前記バーテックス大きさベクトル及び前記計算された補間係数
から、補間された大きさベクトルを計算するロジックと;(c)複数の前記バー
テックス方向ベクトル及び前記計算された補間係数から、補間された方向ベクト
ルを計算するロジックと;及び(d)補間された面法線を生成するために、前記
補間された大きさベクトル及び前記補間された方向ベクトルを結合させるロジッ
クとを具備する前記装置と:を具備する前記計算装置と (L)(1)ピクセル
ごとの色値を生成するために、前記フラグメント色をブレンドするロジックと;
及び(2)前記生成されたピクセルごとの色値を、前記フレーム・バッファに記
憶するロジックとを具備するピクセル装置と、(M)(1)前記3次元オブジェ
クトが、前記グラフィックス・レンダリング・システムによって処理されると、
オブジェクト・タグを、前記3次元オブジェクトと関連付けるロジックと;(2
)前記3次元オブジェクトが、前記グラフィックス・レンダリング・システムに
おいて処理されると、前記3次元オブジェクトを、一つ以上の可視性基準でテス
トするロジックと;(3)複数のビットを具備する状態レジスタと;(4)前記
オブジェクト・タグの一つに従って、前記状態レジスタにおける前記ビットの一
つを選択するロジックと;(5)前記可視性基準でのテストに合わせて、前記3
次元オブジェクトの対応する一つの応答に従って、前記状態レジスタにおける前
記選択されたビットの値を設定するロジックと;及び(6)前記ホスト・プロセ
ッサへ、前記状態レジスタ内容を読み取り及び転送するロジックであって、前記
ホスト・プロセッサは、前記3次元オブジェクトのいずれが、少なくとも部分的
に可視であるかを決定する前記ロジックとを具備する状態モニタリング装置と(
N)(1)ウィンドウ識別子マップを記憶する第一のメモリであって、前記ウィ
ンドウ識別子マップは、前記フレーム・バッファにおける前記ピクセルの各々に
関して、ウィンドウ識別子を具備する前記第一のメモリと(2)複数の文字枠記
述を記憶する第二のメモリであって、前記文字枠記述の各々は、対応する文字枠
及び文字枠ウィンドウ識別子の最大及び最小ピクセル座標を具備する前記第二の
メモリと;(3)前記デジタル画像と関連する、プログラムに従って割り当てら
れた画像識別子を記憶するレジスタと;(4)前記デジタル画像から、画像ピク
セルを選択するロジックと;(5)前記選択された画像ピクセル上で動作するピ
クセル・オーナシップ・ロジックであって:(a)プログラムに従って設定され
た制御ビットによって可能にされるウィンドウ識別子マップ・テスト・ロジック
であって:(i)前記選択された画像ピクセルに対応する前記第一のメモリから
、前記ウィンドウ識別子を読み取るロジックと;(ii)前記割り当てられた画像
識別子を、前記読み取られたウィンドウ識別子と比較するコンパリタ回路(comp
aritor circuit)と;及び(iii)前記割り当てられた画像識別子が、前記読み
取られたウィンドウ識別子と適合しない場合、前記選択された画像ピクセルを廃
棄するロジックと;を具備する前記ウィンドウ識別子マップ・テスト・ロジック
と、(b)プログラムに従って設定された制御ビットによって可能にされる文字
枠テスト・ロジックであって:(i)前記選択されたピクセルが、前記選択され
た第一の文字枠記述の前記最大及び最小ピクセル座標内に入るように、前記文字
枠記述の第一の一つを選択するロジックと;(ii)前記割り当てられた画像識別
子を、前記第一の文字枠記述の前記文字枠ウィンドウ識別子と比較するコンパリ
タ回路と;及び(iii)前記割り当てられた画像識別子が、前記第一の文字枠の
前記文字枠ウィンドウ識別子と適合しない場合、前記選択された画像ピクセルを
廃棄するロジックとを具備する前記文字枠テスト・ロジックと及び(c)前記選
択された画像ピクセルが廃棄されなかった場合に、前記選択された画像ピクセル
を前記フレーム・バッファに書き込むロジックとを具備する前記ピクセル・オー
ナシップ・ロジックとを具備する、デジタル画像を前記フレーム・バッファに記
憶するための装置と、(O)(1)前記ピクセル値が前記フレーム・バッファに
記憶されると、前記レンダリングされた画像において、前記ピクセル値のヒスト
グラムを生成するロジックと;(2)前記デジタル−アナログ・コンバータに適
合するように、前記ピクセル値の前記スケール及び動的な範囲を調整するために
、前記ヒストグラムに基づいて、変換関数を計算するロジックと;(3)ラスタ
線のオーダで、前記フレーム・バッファから前記ピクセル値を読み取るロジック
と;(4)前記計算された変換関数に従って、前記読み取られたピクセル値を変
換するロジックと;及び(5)前記変換されたピクセル値を、前記デジタル−ア
ナログ・コンバータに入力するロジックとを具備するスキャンアウト装置と(P
)(1)プログラムに従ってダウンロードされた補間係数を記憶するメモリと;
(2)プログラムに従って選択された、複数の固定ズーム比の一つを記憶するレ
ジスタと;(3)プログラムに従って選択された、コンピュータ・ディスプレイ
内におけるズーム文字枠の場所を記憶するレジスタと;(4)プログラムに従っ
て割り当てられた、前記ズーム文字枠と関連するウィンドウ識別子を記憶するレ
ジスタと;(5)前記フレーム・バッファから第一のピクセル色を読み取るロジ
ックと;(6)前記フレーム・バッファから複数の第二のピクセル色を読み取る
ロジックと;(7)前記複数の第二のピクセル色及び前記ダウンロードされた補
間係数から、ズームされたピクセル色を計算するロジックと;(8)前記フレー
ム・バッファから、ピクセル・ウィンドウ識別子を読み取るロジックと;(9)
前記ディスプレイ・ピクセルが、前記ズーム文字枠内にあり、及び前記ピクセル
・ウィンドウ識別子が、前記ズーム文字枠に割り当てられた前記ウィンドウ識別
子と等しい場合、前記計算されたズーム・ピクセル色を、前記デジタル−アナロ
グ・コンバータに送るロジックと;(10)前記ディスプレイ・ピクセルが、前
記ズーム文字枠内になく、又は前記ピクセル・ウィンドウ識別子が、前記ズーム
文字枠に割り当てられた前記ウィンドウ識別子と等しくない場合、前記読み取ら
れた第一のピクセル色を、前記デジタル−アナログ・コンバータに送るロジック
と;を具備するスキャンアウト装置とを具備する前記グラフィックス・レンダリ
ング装置。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0482】 (3)前記グラフィックス・オブジェクトから、フレーム・バッファにおいてレ
ンダリングされた画像を形成するためのグラフィックス・レンダリング方法であ
って、前記グラフィックス・オブジェクトは複数のグラフィックス・プリミティ
ブを具備し:タグを前記オブジェクトに割り当てるステップと;前記オブジェク
トが前記グラフィックス・レンダリング・パイプラインにおいて処理されると、
一つ以上の可視性基準で前記オブジェクトテストするステップであって、前記各
オブジェクトの前記テストは、前記オブジェクト内における前記プリミティブの
前記テストを含む前記ステップと;前記可視性基準に従った前記テストに合わせ
て、前記タグされたオブジェクトの応答を示す、状態ワードにおけるビットを設
定するステップと;及び前記オブジェクトのいずれが、少なくとも部分的に可視
であるかを決定するため、前記状態ワードを読み取るステップとを具備する前記
方法。 (4)(3)に記載のグラフィックス・レンダリング方法であって:前記オブジ
ェクトの文字枠ボリューム(bounding volume)に近似するように、前記グラフ
ィックス・プリミティブの前記入力を含む、前記グラフィックス・オブジェクト
の入力ステップと;前記文字枠ボリュームの可視性を決定するために、前記状態
ワードを読み取るステップと;前記対応する文字枠ボリュームが、可視でないと
決定される時に、前記オブジェクトを廃棄するステップと;をさらに具備する前
記方法。 (5)(3)に記載のグラフィックス・レンダリング方法であって:前記グラフ
ィックス・オブジェクトを受け取るステップと;前記グラフィックス・プリミテ
ィブをメモリに記憶することによって、複数の前記オブジェクトを蓄積するステ
ップと;前記フレーム・バッファにおいて、最終結果に影響を与えないものと保
証される前記プリミティブの部分を除去するために、前記蓄積されたオブジェク
トを処理するステップと;及び前記状態ワードの読み取りステップを実行する前
に、複数の前記オブジェクト上で、前記蓄積されたオブジェクトを処理するステ
ップを実行するステップであって、前記状態ワードはそれから、前記複数の蓄積
されたオブジェクトの各々の可視性を決定するために使用される前記ステップと
をさらに具備する前記方法。 (6)フレーム・バッファにレンダリングされた画像を形成し、及び前記レンダ
リングされた画像をディスプレイに表示するためのグラフィックス・レンダリン
グ方法であって:複数のグラフィックス・プリミティブを受け取るステップと;
一列のピクセル値を生成するために、前記グラフィックス・プリミティブをレン
ダリングするステップと;前記フレーム・バッファにおいて前記ピクセル値を記
憶するステップと;前記フレーム・バッファにおいて、前記ピクセル値のヒスト
グラムを生成するステップと;デジタル−アナログ・コンバータに適合するよう
に、前記ピクセル値のスケール及び動的な範囲を調節するために、前記ヒストグ
ラムに基づいて、変換関数を計算するステップと;ラスタ・スキャンアウト方法
で、前記フレーム・バッファから、前記ピクセル値を読み取るステップと;前記
計算された変換関数に従って、前記読み取られたピクセル値を変換するステップ
と;アナログ信号を生成するために、前記変換されたピクセル値を、前記デジタ
ル−アナログ・コンバータに入力するステップと;及び前記アナログ信号を、前
記ディスプレイに送るステップとを具備する前記グラフィックス・レンダリング
方法。 (7)(6)に記載のグラフィックス・レンダリング方法であって、前記記憶ス
テップは、前記フレーム・バッファにおいて前記ピクセル値を示すために、浮動
小数点値を記憶することを特徴とする、前記グラフィックス・レンダリング方法
。 (8)(6)に記載のグラフィックス・レンダリング方法であって、前記変換方
法は:その範囲の圧縮又は拡張、線形圧縮又は拡張、対数圧縮、指数又は電力拡
張、他の代数又は多項式マッピング関数、及びそれらの組み合わせをすることな
く、ある範囲の値を、異なる範囲の値にオフセット又はシフトすることを含むグ
ループから選択されるオペレーションの一つ以上を伴うことを特徴とする前記グ
ラフィックス・レンダリング方法。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0483】 (9)フレーム・バッファに記憶された、レンダリングされた画像を形成するた
めのグラフィックス・レンダリング方法であって:グラフィックス・プリミティ
ブを受け取るステップと;前記グラフィックス・プリミティブを変換するステッ
プと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボリ
ュームに含まれるか決定するために、前記グラフィックス・プリミティブをクリ
ップ・テストするステップと;ビューイング・ポイントから逸れた方を向いてい
る前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をする
ステップと;前記デリバティブの計算を含む、前記グラフィックス・プリミティ
ブに関する増分レンダリングのためのセットアップを実行するステップと;シー
ン・メモリに:(1)前記グラフィックス・プリミティブの属性とともに、フレ
ームに関する前記グラフィックス・プリミティブと;及び(2)前記フレーム全
体の、パイプライン状態の様々な設定、を記憶するステップと;前記シーン・メ
モリに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレー
ム・バッファにおけるピクセルの最終色に影響を与えるかを決定するために、隠
れ面除去をするステップと;各フラグメントに関する色値を生成するためにフラ
グメント・カラリングをするステップであって、各フラグメントは、前記ピクセ
ルの一つの中の一つのサンプル又はサンプルのグループを含み、前記フラグメン
トの各々に関する色値の生成は、前記フレーム・バッファにおけるピクセルの最
終色に影響を与えると決定された前記グラフィックス・プリミティブの部分に関
してのみ実行される前記ステップと;ピクセルごとに単一の色値を生成するため
に、前記フラグメント色をブレンドするステップと;及び前記生成されたピクセ
ルごとの色値を、フレーム・バッファに記憶するステップとを具備する前記グラ
フィックス・レンダリング方法。 (10)フレーム・バッファに記憶された、レンダリングされた画像を形成する
ためのグラフィックス・レンダリング方法であって:グラフィックス・プリミテ
ィブを受け取るステップと;前記グラフィックス・プリミティブを変換するステ
ップと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボ
リュームに含まれるか決定するために、前記グラフィックス・プリミティブをク
リップ・テストするステップと;ビューイング・ポイントから逸れた方を向いて
いる前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をす
るステップと;前記デリバティブの計算を含む、前記グラフィックス・プリミテ
ィブに関する増分レンダリングのためのセットアップを実行するステップと;空
間メモリに:(1)隠れ面除去に必要な前記パイプラインの部分と;及び(2)
バーテックス場所及び空間デリバティブを含む、隠れ面除去に必要なグラフィッ
クス・プリミティブの部分とを記憶するステップと;ポリゴン・メモリに:(1
)隠れ面除去に必要ない前記パイプライン状態の部分と;及び(2)バーテック
ス色、テクスチャ座標、及び色デリバティブを含む、隠れ面除去に必要ない前記
グラフィックス・プリミティブの部分と、を記憶するステップと;前記空間メモ
リに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレーム
・バッファにおけるピクセルの最終色に影響を与えるかを決定するために、隠れ
面除去をするステップと;各フラグメントに関する色値を生成するために、フラ
グメント・カラリングをするステップであって、各フラグメントは、前記ピクセ
ルの一つの中で、一つのサンプル又はサンプルのグループを具備し、前記フラグ
メントの各々に関する色値の生成は、前記フレーム・バッファにおけるピクセル
の前記最終色に影響を与えると決定された前記グラフィックス・プリミティブの
前記部分に関してのみ実行される前記ステップと;単一の色値をピクセルごとに
生成するために、前記フラグメント色をブレンドするステップと;及び前記生成
されたピクセルごとの色値を、前記フレーム・バッファに記憶するステップとを
具備する前記グラフィックス・レンダリング方法。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0484】 (11)フレーム・バッファに記憶された、レンダリングされた画像を形成する
ためのグラフィックス・レンダリング方法であって:グラフィックス・プリミテ
ィブを受け取るステップと;前記グラフィックス・プリミティブを変換するステ
ップと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボ
リュームに含まれるか決定するために、前記グラフィックス・プリミティブをク
リップ・テストするステップと;ビューイング・ポイントから逸れた方を向いて
いる前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をす
るステップと;前記画像内のタイル領域に従って、前記グラフィックス・プリミ
ティブをソートするステップと;ソート・メモリに:(1)隠れ面除去に必要な
前記パイプライン状態の部分と;及び(2)バーテックス場所を含む、隠れ面除
去に必要な前記グラフィックス・プリミティブの部分と、を記憶するステップと
;状態メモリに:(1)隠れ面除去に必要ない前記パイプライン状態の部分と;
及び(2)バーテックス色及びテクスチャ座標を含む、隠れ面除去に必要ない前
記グラフィックス・プリミティブの部分と、を記憶するステップと;タイルに従
って、前記ソート・メモリから前記ソートされたグラフィックス・プリミティブ
を読み取るステップと;前記デリバティブの計算を含む、前記ソート・メモリか
ら読み取られた、前記ソートされたグラフィックス・プリミティブ上で、増分レ
ンダリングに関するセットアップを実行するステップと;前記ソートされたグラ
フィックス・プリミティブのどの部分が、前記フレーム・バッファにおけるピク
セルの最終色に影響を与えるかを決定するために、隠れ面除去をするステップと
;各フラグメントに関する色値を生成するために、フラグメント・カラリングを
するステップであって、各フラグメントは、前記ピクセルの一つの中で、一つの
サンプル又はサンプルのグループを具備し、前記フラグメントの各々に関する色
値の生成は、前記フレーム・バッファにおけるピクセルの前記最終色に影響を与
えると決定された前記グラフィックス・プリミティブの前記部分に関してのみ実
行される前記ステップと;単一の色値をピクセルごとに生成するために、前記フ
ラグメント色をブレンドするステップと;及び前記生成されたピクセルごとの色
値を、前記フレーム・バッファに記憶するステップとを具備する前記グラフィッ
クス・レンダリング方法。 (12)コンピュータ・ディスプレイ上のウィンドウ内で、グラフィックス画像
を表示するための方法であって:フレーム・バッファに画像を記憶するステップ
と;補間係数をダウンロードするステップと;複数の固定ズーム比の一つを選択
するステップと;前記コンピュータ・ディスプレイ内にズーム文字枠を配置する
ステップと;前記ズーム文字枠に、ウィンドウ識別子を割り当てるステップと;
前記コンピュータ・ディスプレイ内での表示ピクセルに関して、ピクセル・デー
タをデジタル−アナログ・コンバータに送るステップであって、さらに:前記フ
レーム・バッファから第一のピクセル色を読み取るステップと;前記フレーム・
バッファから、複数の第二のピクセル色を読み取るステップと;前記複数の第二
のピクセル色及び前記ダウンロードされた補間係数から、ズームされたピクセル
色を計算するステップと;前記フレーム・バッファから、ピクセル・ウィンドウ
識別子を読み取るステップと;前記ディスプレイ・ピクセルが、前記ズーム文字
枠内にあり、及び前記ピクセル・ウィンドウ識別子が、前記ズーム文字枠に割り
当てられた前記ウィンドウ識別子に等しい場合、前記計算されたズーム・ピクセ
ル色を、前記デジタル−アナログ・コンバータに送るステップと;及び前記ディ
スプレイ・ピクセルが、前記ズーム文字枠内になく、又は前記ピクセル・ウィン
ドウ識別子が、前記ズーム文字枠に割り当てられた前記ウィンドウ識別子と等し
くない場合、前記読み取られた第一のピクセル色を、前記デジタル−アナログ・
コンバータに送るステップとを具備する前記送信ステップとを具備する前記方法
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0485】 (13)デジタル画像をフレーム・バッファに記憶するための方法であって、前
記フレーム・バッファは、一列のピクセルを具備し:ウィンドウ識別子マップを
記憶するステップであって、前記ウィンドウ識別子マップは、前記フレーム・バ
ッファにおける前記ピクセルの各々に関して、ウィンドウ識別子を具備する前記
ステップと;複数の文字枠記述を記憶するステップであって、前記文字枠記述の
各々は、前記対応する文字枠及び文字枠ウィンドウ識別子の最大及び最小ピクセ
ル座標を具備する前記ステップと;画像識別子を前記デジタル画像に割り当てる
ステップと;画像ピクセルを前記デジタル画像から選択するステップと;前記選
択された画像ピクセルをオーナシップ・テストするステップであって:ウィンド
ウ識別子マップ・テストが可能にされる場合は、前記ウィンドウ識別子マップ・
テストが実行され:前記ウィンドウ識別子を、前記選択された画像ピクセルに対
応する前記ウィンドウ識別子マップから読み取るステップと;前記割り当てられ
た画像識別子を、前記読み取られたウィンドウ識別子と比較するステップと;及
び前記割り当てられた画像識別子が、前記読み取られたウィンドウ識別子と適合
しない場合、前記選択されたピクセルは廃棄され、及び前記フレーム・バッファ
に書き込まれないステップを具備する前記前記ウィンドウ識別子マップ・テスト
と;及び文字枠テストが可能にされる場合には、前記文字枠テストが実行され:
前記選択されたピクセルが、前記第一の文字枠記述の最大及び最小ピクセル座標
内に入るように、前記文字枠記述の第一の一つを選択するステップと;前記割り
当てられた画像識別子を、前記第一の文字枠記述の前記文字枠ウィンドウ識別子
と比較するステップと;前記割り当てられた画像識別子が、前記第一の文字枠記
述の前記文字枠ウィンドウ識別子に適合しない場合、前記選択されたピクセルが
廃棄され、及び前記フレーム・バッファに書き込まれないステップとを具備する
前記文字枠テストと;及び 前記選択された画像ピクセルが廃棄されなかった
場合、前記選択された画像ピクセルを前記フレーム・バッファに書き込むステッ
プとを具備する前記オーナシップ・テストをするステップとを具備する前記方法
。 (14)前記ウィンドウ識別子マップを前記フレーム・バッファに記憶するステ
ップをさらに具備することを特徴とする、デジタル画像をフレーム・バッファに
記憶するための、(13)に記載の方法。 (15)オーナシップ・テストの前記ステップが、複数のピクセル上で並行して
実行されることを特徴とする、デジタル画像をフレーム・バッファに記憶するた
めの、(13)に記載の方法。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0486】 (16)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための装置であって:第一の直接メモリ・アクセス・コマンド及び2次元グラ
フィックス・オペレーションを実行するための第一のコマンドを受け取り及び記
憶する2Dコマンド待ち行列メモリと;第二の直接メモリ・アクセス・コマンド
と、及び3次元グラフィックス・オペレーションを実行するための第二のコマン
ドを受け取り及び記憶する3Dコマンド待ち行列メモリと;2次元グラフィック
ス・オペレーションを実行するための第三のコマンドを受け取り及び記憶する2
D応答待ち行列メモリと;3次元グラフィックス・オペレーションを実行するた
めの第四のコマンドを受け取り及び記憶する3D応答待ち行列メモリと;前記2
Dコマンド待ち行列メモリ及び前記3Dコマンド待ち行列メモリに接続された直
接メモリ・アクセス・コントローラであって:(1)前記コンピュータ・グラフ
ィックス・パイプラインの外部にあるメモリから、前記第三のコマンドを読み取
り、及び前記読み取られた第三のコマンドを、前記2D応答待ち行列に書き込む
ことによって、前記記憶された第一の直接メモリ・アクセス・コマンドを受け取
り及び前記第一の直接メモリ・アクセス・コマンドを実行する第一のロジックと
;及び(2)前記コンピュータ・グラフィックス・パイプラインの外部にあるメ
モリから、前記第四のコマンドを読み取り、及び前記読み取られた第四のコマン
ドを、前記3D応答待ち行列に書き込むことによって、前記記憶された第二の直
接メモリ・アクセス・コマンドを受け取り、及び前記第二の直接メモリ・アクセ
ス・コマンドを実行する第二のロジックとを具備する前記直接メモリ・アクセス
・コントローラとを具備する前記装置。 (17)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記2Dコマンド待ち行列メモリに
おいて許可されるエントリの数を記憶するプログラム可能2D最高点レジスタと
;及び前記2Dコマンド待ち行列メモリにおけるエントリの数が、前記2D最高
点レジスタに記憶された数よりも大きい時、割り込みを生成するロジックとをさ
らに具備することを特徴とする、前記装置。 (18)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(17)に記載の装置であって:前記2Dコマンド待ち行列への書き
込みが許可される前に、前記2Dコマンド待ち行列メモリにおけるエントリの最
大数を記憶するプログラム可能2D最低点レジスタと;及び前記2Dコマンド待
ち行列メモリにおけるエントリの数が、前記2D最高点レジスタに記憶された数
よりも小さい時、割り込みを生成するロジックとをさらに具備することを特徴と
する、前記装置。 (19)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
おいて許可されるエントリの数を記憶するプログラム可能3D最高点レジスタと
;前記3Dコマンド待ち行列メモリにおけるエントリの数が、前記3D最高点レ
ジスタに記憶された数よりも大きい時、割り込みを生成するロジックと をさらに具備することを特徴とする、前記装置。 (20)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(19)に記載の装置であって:前記3Dコマンド待ち行列への書き
込みが許可される前に、前記3Dコマンド待ち行列メモリにおけるエントリの最
大数を記憶するプログラム可能3D最低点レジスタと;及び前記3Dコマンド待
ち行列メモリにおけるエントリの数が、前記3D最高点レジスタに記憶された数
よりも小さい時、割り込みを生成するロジックとをさらに具備する前記装置。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0487】 (21)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:グラフィックス・データを記憶する
フレーム・バッファと;ホスト待ち行列メモリと;第三の直接メモリ・アクセス
・コマンドをさらに受け取り、及びさらに記憶する前記2Dコマンド待ち行列メ
モリと;前記フレーム・バッファ、前記ホスト待ち行列メモリ、及び前記2Dコ
マンド待ち行列メモリに接続された2Dグラフィックス装置であって:前記コン
ピュータ・グラフィックス・パイプラインの外部にあるメモリへの、前記フレー
ム・バッファからの、前記グラフィックス・データのいくつかの転送を特定する
第一のコマンドを読み取るロジックと;及びグラフィックス・データを前記フレ
ーム・バッファから読み取り、及び前記読み取られたグラフィックス・データを
前記ホスト待ち行列に記憶するロジックであって、前記第一のロジックはさらに
、前記ホスト待ち行列から前記グラフィックス・データを読み取り、及び前記コ
ンピュータ・グラフィックス・パイプラインの外部にある前記メモリへ、前記ホ
スト待ち行列から読み取られた前記グラフィックス・データを書き込むことによ
って、前記第三の直接メモリ・アクセス・コマンドを実行するロジックとを具備
する前記2Dグラフィックス装置と;をさらに具備する前記装置。 (22)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:第四の直接メモリ・アクセス・コマ
ンドをさらに受け取り及びさらに記憶する前記2Dコマンド待ち行列メモリと;
前記ホスト待ち行列から前記グラフィックス・データを読み取り、及び前記ホス
ト待ち行列から読み取られた前記グラフィックス・データを、前記3D応答待ち
行列メモリを書き込むことによって、前記第四の直接メモリ・アクセス・コマン
ドを実行するロジックをさらに具備する前記第一のロジックと、をさらに具備す
る前記装置。 (23)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
接続された3Dコマンド・デコーダであって:前記3Dコマンド待ち行列メモリ
から第二のコマンドを読み取るロジックと;及び前記読み取られた第二のコマン
ド上で、データ・フォーマット変換を実行するロジックとを具備する前記3Dコ
マンド・デコーダをさらに具備する前記装置。 (24)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
接続された3Dコマンド・デコーダであって:前記3Dコマンド待ち行列メモリ
から、第二のコマンドを読み取るロジックと;及び無効な第二のコマンドを検出
し、及び無効なコマンド割り込みを生成するロジックとを具備する前記3Dコマ
ンド・デコーダとをさらに具備する前記装置。 (25)コンピュータ・グラフィックス・パイプラインにおいて、グラフィック
ス・プリミティブと関連するデータを補間する方法であって:バーテックス座標
、w座標、及びテクスチャ座標を具備する色データを受け取るステップと; 前
記グラフィックス・プリミティブの各々に関して重心係数を計算するステップと
;複数の前記グラフィックス・プリミティブに対応する複数のデータ・キャッシ
ュ・エントリを記憶するステップであって、前記キャッシュされたデータは、重
心係数及びテクスチャ座標を具備する前記ステップと;フラグメント座標を具備
するグラフィックス・プリミティブ・フラグメントを受け取るステップと;前記
受け取られたグラフィックス・プリミティブ・フラグメントに対応する前記記憶
されたデータ・キャッシュ・エントリの一つを選択し及び読み取るステップと;
前記重心係数及び前記フラグメント座標から補間係数を計算するステップと;及
び前記計算された補間係数を使用して、前記テクスチャ座標を補間するステップ
と;を具備する前記方法。 (26)コンピュータ・グラフィックス・パイプラインにおいてテクスチャ座標
を補間する方法であって:バーテックス座標、w座標、及びテクスチャ座標を具
備するグラフィックス・プリミティブを受け取るステップと;前記グラフィック
ス・プリミティブのフラグメントを受け取るステップであって、前記フラグメン
トは、サンプル・マスクを具備し、前記サンプル・マスクは、前記フラグメント
によって覆われたピクセルの中のサンプル場所を示す前記ステップと;前記サン
プル・マスクを、プログラム可能ルックアップ・テーブルに入力することによっ
て、前記ピクセル内に補間座標を決定するステップであって、前記ルックアップ
・テーブルの前記出力は、前記ピクセル内の前記補間座標であって、前記補間座
標はサブ・ピクセル精度を有する前記ステップと;前記補間座標、前記バーテッ
クス座標、及び前記w座標を使用して、補間係数を計算するステップと;及び前
記計算された補間係数を使用して、前記テクスチャ座標を補間し、前記補間座標
においてテクスチャ座標を生成するステップとを具備する前記方法。 (27)コンピュータ・グラフィックス・パイプラインにおいて面法線を補間す
る方法であって:バーテックス座標、w座標、及びバーテックス面法線を具備す
るグラフィックス・プリミティブを受け取るステップと;前記グラフィックス・
プリミティブのフラグメントを受け取るステップであって、前記フラグメントは
、単一のピクセル内における前記グラフィックス・プリミティブの一部である前
記ステップと;前記ピクセル内における補間座標を決定するステップと;前記補
間座標、前記バーテックス座標、及び前記w座標を使用して、補間係数を計算す
るステップと;前記バーテックス面法線の各々を、バーテックス大きさベクトル
及びバーテックス方向ベクトルに分解するステップと;複数の前記バーテックス
大きさベクトル及び前記計算された補間係数から、補間された大きさベクトルを
計算するステップと;複数の前記バーテックス方向ベクトル及び前記計算された
補間係数から、補間された方向ベクトルを計算するステップと;及び補間された
面法線を生成するために、前記補間された大きさベクトル及び前記補間された方
向ベクトルを結合させるステップとを具備する前記方法。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0488】 (28)コンピュータ・グラフィックス・パイプラインのための状態モニタリン
グ装置であって、前記コンピュータ・グラフィックス・パイプラインは、複数の
3次元オブジェクトを処理することによって、フレーム・バッファにレンダリン
グされた画像を形成し、前記3次元オブジェクトはそれぞれ、グラフィックス・
プリミティブを具備し:前記3次元オブジェクトが前記コンピュータ・グラフィ
ックス・パイプラインによって処理されると、オブジェクト・タグを前記3次元
オブジェクトと関連付けるロジックと;前記3次元オブジェクトが、前記グラフ
ィックス・レンダリング・パイプラインにおいて処理されると、前記3次元オブ
ジェクトオブジェクトを一つ以上の可視性基準でテストするロジックと;複数の
ビットを具備する状態レジスタと;前記オブジェクト・タグの一つに従って、前
記状態レジスタにおいて前記ビットの一つを選択するロジックと;前記可視性基
準での前記テストに合わせて、前記3次元オブジェクトの前記対応する一つの応
答に従って、前記状態レジスタにおいて前記選択されたビットの値を設定するロ
ジックと;及びホストCPUへの前記状態レジスタ内容を読み取り、及び転送す
るロジックであって、前記CPUは、前記3次元オブジェクトのいずれが、少な
くとも部分的に可視であるかを決定する前記ロジックとを具備する前記状態モニ
タリング装置。 (29)(28)に記載の状態モニタリング装置であって:前記3次元オブジェ
クトの文字枠ボリュームを表すグラフィックス・プリミティブを生成するロジッ
クと;及びホストCPUへの前記状態レジスタ内容を読み取り、及び転送するロ
ジックであって、前記ホストCPUは、前記文字枠ボリュームのいずれが少なく
とも部分的に可視であるかを決定し、及び少なくとも部分的に可視であると決定
されないさらなる処理から、前記オブジェクトを廃棄する前記ロジックとをさら
に具備する前記状態モニタリング装置。 (30)(28)に記載の状態モニタリング装置であって:複数の前記3次元オ
ブジェクトを蓄積するメモリと;前記フレーム・バッファにおいて、前記コンピ
ュータ・グラフィックス・パイプラインから、前記レンダリングされた画像に影
響を与えないことを保証されている、前記グラフィックス・プリミティブの部分
を除去するロジックと;及び前記3次元オブジェクトが、前記コンピュータ・グ
ラフィックス・パイプラインによって処理されると、1つにつき1つのベースで
、複数の前記オブジェクト・タグを、複数の前記3次元オブジェクトと自発的に
関連させるロジックであって、前記状態レジスタはそれから、前記蓄積されたオ
ブジェクトの各々の可視性を決定するために使用される前記ロジックとをさらに
具備することを特徴とする、前記状態モニタリング装置。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0489】 (31)コンピュータ・グラフィックス・パイプラインのためのスキャンアウト
装置であって、前記パイプラインは、ピクセル値のレンダリングされた画像を、
フレーム・バッファに記憶し、及びデジタル−アナログ・コンバータを具備し:
前記ピクセル値が、前記フレーム・バッファに記憶されると、前記レンダリング
された画像において前記ピクセル値のヒストグラムを生成するロジックと;前記
ヒストグラムに基づいて、前記デジタル−アナログ・コンバータのスケール及び
動的な範囲に実質的に適合するように、前記ピクセル値のスケール及び動的な範
囲を調節するために、変換関数を計算するロジックと;ラスタ線のオーダで、前
記フレーム・バッファから、前記ピクセル値を読み取るロジックと;前記計算さ
れた変換関数に従って、前記読み取られたピクセル値を変換するロジックと;及
び前記変換されたピクセル値を、前記デジタル−アナログ・コンバータに入力す
るロジックとを具備する前記装置。 (32)(31)に記載のスキャンアウト装置であって、前記フレーム・バッフ
ァは、浮動小数点ピクセル値を記憶するためのメモリをさらに具備し;ヒストグ
ラムを生成する前記ロジックは、入力浮動小数点ピクセル値として扱われる、浮
動小数点計算ブロックをさらに具備し;及び前記計算された変換関数に従って、
前記読み取られたピクセル値を変換する前記ロジックは、前記読み取られたピク
セル値を変換する浮動小数点計算ブロックと、及び浮動小数点変換ピクセル値を
、整数変換ピクセル値に変換するためのフォーマット変換ブロックとをさらに具
備することを特徴とする、前記装置。 (33)(31)に記載のスキャンアウト装置であって、前記読み取られたピク
セル値を変換する前記ロジックは:ある範囲の値を、その範囲の圧縮又は拡張、
線形圧縮又は拡張、対数圧縮、指数又は電力拡張、他の代数又は多項式マッピン
グ関数、又はそれらの組み合わせをすることなく、異なる範囲の値へのオフセッ
ト又はシフトを含むグループから選択されたオペレーションの一つ以上を実行す
るロジックを具備することを特徴とする、前記装置。 (34)グラフィックス・プリミティブから、レンダリングされた画像を形成す
るためのグラフィックス・レンダリング装置であって、前記レンダリングされた
画像はフレーム・バッファに記憶されており:(a)(1)前記グラフィックス
・プリミティブを変換するロジックと;(2)前記グラフィックス・プリミティ
ブが少なくとも部分的にビュー・ボリュームに含まれるか決定するために、前記
グラフィックス・プリミティブをクリップ・テストするロジックと;(3)ビュ
ー・ポイントから逸れた方を向いている前記グラフィックス・プリミティブのい
ずれをも廃棄するために、面決定を実行するロジックと;を具備するジオメトリ
装置と;(b)デリバティブを計算するセットアップ装置と;(c)(1)前記
グラフィックス・プリミティブの属性とともに、フレームに関する前記グラフィ
ックス・プリミティブと;及び(2)前記フレーム全体の、パイプライン状態の
様々な設定と;を記憶するシーン・メモリと(d)前記シーン・メモリに記憶さ
れた前記グラフィックス・プリミティブのどの部分が、前記フレーム・バッファ
におけるピクセルの最終色に影響を与えるのかを決定するために、隠れ面除去を
実行するカル装置と;(e)前記各ピクセル内において、各サンプル又はサンプ
ルのグループに関してフラグメント色値を生成する一つ以上の計算装置であって
、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響を与えると決
定された前記グラフィックス・プリミティブの部分に関してのみ実行される、前
記計算装置と;及び(f)(1)ピクセルごとの色値を生成するために、前記フ
ラグメント色をブレンドするロジックと;及び(2)前記生成されたピクセルご
との色値を、前記フレーム・バッファに記憶するロジックとを具備するピクセル
装置とを具備する前記グラフィックス・レンダリング装置。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0490】 (35)グラフィックス・プリミティブからレンダリングされた画像を形成する
ためのグラフィックス・レンダリング装置であって、前記レンダリングされた画
像はフレーム・バッファに記憶され:(a)(1)前記グラフィックス・プリミ
ティブを変換するロジックと;(2)前記グラフィックス・プリミティブが少な
くとも部分的にビュー・ボリュームに含まれるかを決定するために、前記グラフ
ィックス・プリミティブをクリップ・テストするロジックと;(3)ビューイン
グ・ポイントから逸れた方を向いている前記グラフィックス・プリミティブのい
ずれをも廃棄するために、面決定を実行するロジックと;を具備するジオメトリ
装置と;(b)デリバティブを計算するセットアップ装置であって、前記デリバ
ティブは、空間デリバティブ及び色デリバティブを具備する前記セットアップ装
置と;(c)(1)隠れ面除去に必要なパイプラインの部分と;及び(2)バー
テックス場所及び前記空間デリバティブを含む、隠れ面除去に必要な前記グラフ
ィックス・プリミティブの部分と;を記憶する空間メモリと; (d)(1)隠
れ面除去に必要ないパイプライン状態の部分と;及び(2)バーテックス色、テ
クスチャ座標、及び前記色デリバティブを含む、隠れ面除去に必要ない前記グラ
フィックス・プリミティブの部分とを記憶するポリゴン・メモリと;(e)前記
シーン・メモリに記憶されたグラフィックス・プリミティブのどの部分が、前記
フレーム・バッファにおけるピクセルの最終色に影響を与えるかを決定するため
に、隠れ面除去を実行するカル装置と;(f)前記各ピクセル内の各サンプル又
はサンプルのグループに関して、フラグメント色値を生成する一つ以上の計算装
置であって、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響を
与えると決定されたグラフィックス・プリミティブの部分に関してのみ実行され
る、前記計算装置と;及び(g)(1)ピクセルごとに色値を生成するために、
前記フラグメント色をブレンドするロジックと; (2)前記生成された
ピクセルごとの色値を、前記フレーム・バッファに記憶するロジックと;を具備
するピクセル装置とを具備する前記グラフィックス・レンダリング装置。 (36)グラフィックス・プリミティブから、レンダリングされた画像を形成す
るためのグラフィックス・レンダリング装置であって、前記レンダリングされた
画像はフレーム・バッファに記憶され:(a)(1)前記グラフィックス・プリ
ミティブを変換するロジックと;(2)前記グラフィックス・プリミティブが、
少なくとも部分的にビュー・ボリュームに含まれるかを決定するために、前記グ
ラフィックス・プリミティブをクリップ・テストするロジックと;(3)前記ビ
ューイング・ポイントから逸れた方を向いている前記グラフィックス・プリミテ
ィブのいずれをも廃棄するために、面決定を実行するロジックと; を具備
するジオメトリ装置と;(b)(1)隠れ面除去に必要な前記パイプラインの部
分と;及び(2)バーテックス場所を含む、隠れ面除去に必要な前記グラフィッ
クス・プリミティブの部分と;を記憶するソート・メモリと;(c)(1)前記
グラフィックス・プリミティブの属性とともに、フレームに関する前記グラフィ
ックス・プリミティブと;及び(2)バーテックス色及びテクスチャ座標を含む
、隠れ面除去に必要ない前記グラフィックス・プリミティブの部分とを記憶する
状態メモリと;(d)(1)前記画像内のタイル領域に従って、前記グラフィッ
クス・プリミティブをソートするロジックと;(2)タイルに従って、前記ソー
ト・メモリから前記ソートされたグラフィックス・プリミティブを読み取るロジ
ックとを具備するソート装置と;(e)前記ソートされたグラフィックス・プリ
ミティブに関してデリバティブを計算するセットアップ装置と; (f)前記シ
ーン・メモリに記憶された前記グラフィックス・プリミティブのどの部分が、前
記フレーム・バッファにおけるピクセルの最終色に影響を与えるかを決定するた
めに、隠れ面除去を実行するカル装置と;(g)前記各ピクセル内の各サンプル
又はサンプルのグループに関して、フラグメント色値を生成する一つ以上の計算
装置であって、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響
を与えると決定された前記グラフィックス・プリミティブの部分に関してのみ実
行される、前記計算装置と;及び(h)(1)ピクセルごとの色値を生成するた
めに、前記フラグメント色をブレンドするロジックと;及び(2)前記生成され
たピクセルごとの色値を、前記フレーム・バッファに記憶するロジックとを具備
するピクセル装置とを具備する前記グラフィックス・レンダリング装置。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0491】 (37)コンピュータ・グラフィックス・パイプラインのためのスキャンアウト
装置であって、前記パイプラインは、ピクセル値のレンダリングされた画像を、
フレーム・バッファに記憶し、前記コンピュータ・グラフィックス・パイプライ
ンはコンピュータ・ディスプレイを具備し:プログラムに従ってダウンロードさ
れた補間係数を記憶するメモリと;プログラムに従って選択された、複数のズー
ム比の一つを記憶するレジスタと;前記コンピュータ・ディスプレイ内における
ズーム文字枠の、プログラムに従って選択された場所を記憶するレジスタと;前
記ズーム文字枠と関連する、プログラムに従って割り当てられたウィンドウ識別
子を記憶するレジスタと;第一のピクセル色を前記フレーム・バッファから読み
取るロジックと;複数の第二のピクセル色を前記フレーム・バッファから読み取
るロジックと;前記複数の第二のピクセル色及び前記ダウンロードされた補間係
数から、ズームされたピクセル色を計算するロジックと;ピクセル・ウィンドウ
識別子を前記フレーム・バッファから読み取るロジックと;前記ディスプレイ・
ピクセルが、前記ズーム文字枠内にあり、及び前記ピクセル・ウィンドウ識別子
が前記ズーム文字枠に割り当てられた前記ウィンドウ識別子と等しい場合、前記
計算されたズーム・ピクセル色を前記デジタル−アナログ・コンバータに送るロ
ジックと;及び前記ディスプレイ・ピクセルが、前記ズーム文字枠内になく、又
は前記ピクセル・ウィンドウ識別子が、前記ズーム文字枠に割り当てられた前記
ウィンドウ識別子と等しくない場合、前記読み取られた第一のピクセル色を、前
記デジタル−アナログ・コンバータに送るロジックとを具備する前記スキャンア
ウト装置。 (38)デジタル画像をフレーム・バッファに記憶するための装置であって、前
記フレーム・バッファは一列のピクセルを具備し:ウィンドウ識別子マップを記
憶する第一のメモリであって、前記ウィンドウ識別子マップは、前記フレーム・
バッファにおける各ピクセルに関するウィンドウ識別子を具備する前記メモリと
;複数の文字枠記述を記憶する第二のメモリであって、前記文字枠記述の各々は
、対応する文字枠の最大並びに最小ピクセル座標及び文字枠ウィンドウ識別子を
具備する前記メモリと;前記デジタル画像と関連する、プログラムに従って割り
当てられた画像識別子を記憶するレジスタと;前記デジタル画像から画像ピクセ
ルを選択するロジックと;前記選択された画像ピクセル上で動作するピクセル・
オーナシップ・ロジックであって:(1)プログラムに従って設定された制御ビ
ットによって可能にされたウィンドウ識別子マップ・テスト・ロジックであって
:(a)前記選択された画像ピクセルに対応する、前記ウィンドウ識別子を前記
第一のメモリから読み取るロジックと;(b)前記割り当てられた画像識別子を
、前記読み取られたウィンドウ識別子と比較するコンパリタ回路と;及び(c)
前記割り当てられた画像識別子が、前記読み取られたウィンドウ識別子と適合し
ない場合、前記選択された画像ピクセルを廃棄するロジックと;を具備する前記
ウィンドウ識別子マップ・テスト・ロジックと;及び(2)プログラムに従って
設定された制御ビットによって可能にされた文字枠テスト・ロジックであって:
(a)前記選択されたピクセルが、前記選択された第一の文字枠記述の最大及び
最小ピクセル座標内になるように、前記文字枠の第一の一つを選択するロジック
と;(b)前記割り当てられた画像識別子を、前記第一の文字枠記述の前記文字
枠ウィンドウ識別子と比較するコンパリタ回路と;及び(c)前記割り当てられ
た画像識別子が、前記第一の文字枠の前記文字枠ウィンドウ識別子と適合しない
場合、前記選択された画像ピクセルを廃棄するロジックとを具備する前記文字枠
テスト・ロジックと;及び(3)前記選択された画像ピクセルが廃棄されなかっ
た場合に、前記選択された画像ピクセルを、前記フレーム・バッファに書き込む
ロジックとを具備する前記ピクセル・オーナシップ・ロジックとを具備する前記
装置。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0492】 (39)(38)に記載の装置であって、前記第一のメモリは、フレーム・バッ
ファと同じ物理メモリ・アレイにあることを特徴とする、前記装置。 (40)(38)に記載の装置であって、前記ピクセル・オーナシップ・ロジッ
クは、複数の選択された画像ピクセルと並行して動作することを特徴とする、前
記装置。 (41)3Dグラフィックス・レンダリングのための計算システムであって:ホ
スト・プロセッサと:システム・メモリと;及びホスト・プロセッサに接続され
たコンピュータ・グラフィックス・パイプラインとを具備し、;前記コンピュー
タ・グラフィックス・パイプラインは:(1)2次元グラフィックス・オペレー
ションを実行するための、第一の直接メモリ・アクセス・コマンドと、及び第一
のコマンドを受信し及び記憶する2Dコマンド待ち行列メモリと;(2)3次元
グラフィックス・オペレーションを実行するための、第二の直接メモリ・アクセ
ス・コマンド及び第二のコマンドを受信し及び記憶する3Dコマンド待ち行列メ
モリと;(3)2次元グラフィックス・オペレーションを実行するための、第三
のコマンドを受信し及び記憶する2D応答待ち行列メモリと;(4)3次元グラ
フィックス・オペレーションを実行するための、第四のコマンドを受信し及び記
憶する3D応答待ち行列メモリと;及び(5)前記2Dコマンド待ち行列メモリ
及び前記3Dコマンド待ち行列メモリに接続された直接メモリ・アクセス・コン
トローラであって:(a)前記第三のコマンドを、前記システム・メモリから読
み取り、及び前記読み取られた第三のコマンドを、前記2D応答待ち行列に書き
込むことによって、前記記憶された第一の直接メモリ・アクセス・コマンドを受
信し、及び前記第一の直接メモリ・アクセス・コマンドを実行する第一のロジッ
クと;及び(b)前記第四のコマンドを、前記システム・メモリから読み取り、
及び前記読み取られた第四のコマンドを、前記3D応答待ち行列に書き込むこと
によって、前記記憶された第二の直接メモリ・アクセス・コマンドを受信し、及
び前記第二の直接メモリ・アクセス・コマンドを実行する第二のロジックとを具
備する前記直接メモリ・アクセス・コントローラとを具備する前記計算システム
。 (42)(41)に記載のシステムであって:前記2Dコマンド待ち行列メモリ
に許可されたエントリの数を記憶するプログラム可能2D最高点レジスタと;及
び前記2Dコマンド待ち行列メモリにおけるエントリの数が、前記2D最高点レ
ジスタに記憶された数よりも大きい時に、割り込みを生成するロジックとをさら
に具備することを特徴とする、前記システム。 (43)(42)に記載のシステムであって:前記2Dコマンド待ち行列への書
き込みが許可される前に、前記2Dコマンド待ち行列メモリにおけるエントリの
最大数を記憶するプログラム可能2D最低点レジスタと;及び前記2Dコマンド
待ち行列メモリにおけるエントリの数が、前記2D最高点レジスタに記憶された
数よりも小さい時に、割り込みを生成するロジックとをさらに具備することを特
徴とする、前記システム。 (44)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に許可されたエントリの数を記憶するプログラム可能3D最高点レジスタと;及
び前記3Dコマンド待ち行列メモリにおけるエントリの数が、前記3D最高点レ
ジスタに記憶された数よりも大きい時、割り込みを生成するロジックとをさらに
具備することを特徴とする、前記システム。 (45)(44)に記載のシステムであって:前記3Dコマンド待ち行列への書
き込みが許可される前に、前記3Dコマンド待ち行列メモリにおけるエントリの
最大数を記憶するプログラム可能3D最低点レジスタと;及び前記3Dコマンド
待ち行列メモリにおけるエントリの数が、前記3D最高点レジスタに記憶された
数よりも小さい時、割り込みを生成するロジックをさらに具備することを特徴と
する、前記システム。 (46)(41)に記載のシステムであって:グラフィックス・データを記憶す
るフレーム・バッファと;ホスト待ち行列メモリと;第三の直接メモリ・アクセ
ス・コマンドをさらに受信し及び記憶する前記2Dコマンド待ち行列メモリと;
前記フレーム・バッファと、前記ホスト待ち行列メモリと、及び前記2Dコマン
ド待ち行列メモリとに接続され:前記フレーム・バッファから、前記コンピュー
タ・グラフィックス・パイプライン外部にある前記メモリへの前記グラフィック
ス・データのいくつかの転送を特定する、前記第一のコマンドを読み取るロジッ
クと;及び前記フレーム・バッファからのグラフィックス・データを読み取り、
並びに前記読み取られたグラフィックス・データを前記ホスト待ち行列に記憶す
るロジックとを具備する2Dグラフィックス装置であって;前記第一のロジック
は、前記グラフィックス・データを前記ホスト待ち行列から読み取り、並びに前
記ホスト待ち行列から読み取られた前記グラフィックス・データを、前記コンピ
ュータ・グラフィックス・パイプラインの外部にある前記メモリに書き込むこと
によって、第三の直接メモリ・アクセス・コマンドを実行するロジックをさらに
具備する前記2Dグラフィックス装置とをさらに具備することを特徴とする、前
記システム。
【手続補正15】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0493】 (47)(41)に記載のシステムであって:第四の直接メモリ・アクセス・コ
マンドをさらに受信し、及びさらに記憶する前記2Dコマンド待ち行列メモリと
;及び前記グラフィックス・データを前記ホスト待ち行列から読み取り、及び前
記ホスト待ち行列から読み取られた前記グラフィックス・データを、前記3D応
答待ち行列メモリに書き込むことによって、前記第四の直接メモリ・アクセス・
コマンドを実行するロジックをさらに具備する前記第一のロジックとをさらに具
備することを特徴とする、前記システム。 (48)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に接続され、:前記3Dコマンド待ち行列メモリから第二のコマンドを読み取る
ロジックと;及び前記読み取られた第二のコマンド上で、データ・フォーマット
変換を実行するロジックとを具備する3Dコマンド・デコーダをさらに具備する
ことを特徴とする、前記システム。 (49)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に接続され:前記3Dコマンド待ち行列メモリから第二のコマンドを読み取るロ
ジックと;及び無効な第二のコマンドを検出し、及び無効なコマンド割り込みを
生成するロジックとを具備する3Dコマンド・デコーダをさらに具備することを
特徴とする、前記システム。 (50)コンピュータ・グラフィックス・パイプラインにおいて、グラフィック
ス・プリミティブと関連するデータを補間するための装置であって:バーテック
ス座標、w座標、及びテクスチャ座標を具備する色データを記憶するメモリと;
前記バーテックス座標及び前記w座標からの前記グラフィックス・プリミティブ
の各々に関する重心係数を計算するロジックと;複数の前記グラフィックス・プ
リミティブに対応する複数のデータ・キャッシュ・エントリを記憶するキャッシ
ュ・メモリであって、前記キャッシュされたデータは、重心係数及びテクスチャ
座標を具備する前記キャッシュ・メモリと;受信されたグラフィックス・プリミ
ティブ・フラグメントに対応する、前記記憶されたデータ・キャッシュ・エント
リの一つを選択し及び読み取るロジックであって、前記グラフィックス・プリミ
ティブ・フラグメントは、フラグメント座標を具備する前記ロジックと;前記重
心係数及び前記フラグメント座標から補間係数を計算するロジックと;及び前記
計算された補間係数を使用して、前記テクスチャ座標を補間するロジックとを具
備する前記装置。 (51)コンピュータ・グラフィックス・パイプラインにおいて、テクスチャ座
標を補間するための装置であって:グラフィックス・プリミティブと関連するデ
ータを記憶するメモリであって、前記記憶されたデータは、バーテックス座標、
w座標、及びテクスチャ座標を具備する前記メモリと;前記グラフィックス・プ
リミティブのフラグメントを受信するレジスタであって、前記フラグメントは、
サンプル・マスクを具備し、前記サンプル・マスクは前記フラグメントによって
覆われるピクセル内のサンプル場所を示す前記レジスタと;補間場所の低位ビッ
トを決定するルックアップ・テーブルであって、前記ルックアップ・テーブルは
、前記サンプル・マスクを具備し、前記補間場所は、サブ・ピクセル精度を有す
る前記ルックアップ・テーブルと;前記補間場所、前記バーテックス座標、及び
前記w座標を使用して、補間係数を計算するロジックと;及び前記計算された補
間係数を使用して、前記テクスチャ座標を補間し、前記補間場所にテクスチャ座
標を生成するロジックとを具備する前記装置。
【手続補正16】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0494】 (52)コンピュータ・グラフィックス・パイプラインにおいて、バーテックス
面法線を補間するための装置であって:グラフィックス・プリミティブを記憶す
るメモリであって、前記グラフィックス・プリミティブは、バーテックス座標、
w座標、及びバーテックス面法線を具備する前記メモリと;前記グラフィックス
・プリミティブのフラグメントを記憶するレジスタであって、前記フラグメント
は単一のピクセル内の前記グラフィックス・プリミティブの一部である前記レジ
スタと;前記ピクセル内の補間座標を決定するロジックと;前記補間座標、前記
バーテックス座標、及び前記w座標を使用して、補間係数を計算するロジックと
;前記バーテックス面法線の各々を、バーテックス大きさベクトル及びバーテッ
クス方向ベクトルに分解するロジックと;補間された大きさベクトルを、複数の
前記バーテックス大きさベクトル及び前記計算された補間係数から計算するロジ
ックと;補間された方向ベクトルを、複数の前記バーテックス方向ベクトル及び
前記計算された補間係数から計算するロジックと;及び補間された面法線を生成
するために、前記補間された大きさベクトル及び前記補間された方向ベクトルを
結合させるロジックとを具備する前記装置。 (53)3次元(3D)グラフィックス・レンダリングのため、及びフレーム・
バッファに記憶された画像を生成するための計算システムであって、前記システ
ムは:ホスト・プロセッサと;前記ホスト・プロセッサに接続されたシステム・
メモリと;及びホスト・プロセッサに接続されたコンピュータ・グラフィックス
・パイプラインとを具備し、前記コンピュータ・グラフィックス・パイプライン
は:3次元オブジェクトが、前記コンピュータ・グラフィックス・パイプライン
によって処理されると、3次元オブジェクトにオブジェクト・タグを関連させる
ロジックと;前記3次元オブジェクトが、前記グラフィックス・レンダリング・
パイプラインにおいて処理されると、一つ以上の可視性基準で、前記3次元オブ
ジェクトをテストするロジックと;複数のビットを具備する状態レジスタであっ
て、前記ホスト・プロセッサによって読み取られることができる前記状態レジス
タと;前記オブジェクト・タグの一つに従って、前記状態レジスタにおいて前記
ビットの一つを選択するロジックと;及び前記可視性基準でのテストに合わせて
、前記3次元オブジェクトの対応する一つの応答に従って、前記状態レジスタに
おける選択されたビットの値を設定するロジックとを具備する、前記計算システ
ム。 (54)(53)に記載のシステムであって:画像のレンダリングを、特定され
た方法で機能するように導くプログラム・モジュールを実行する前記ホスト・プ
ロセッサを具備し、前記プログラム・モジュールは:前記3次元オブジェクトの
一つの文字枠ボリュームを定義する、非レンダリング可能グラフィックス・プリ
ミティブによって表示される前記3次元オブジェクトの一つを受信し;前記非レ
ンダリング可能グラフィックス・プリミティブを入力することによって、前記3
次元オブジェクトの一つを、前記コンピュータ・グラフィックス・パイプライン
に入力し;及び前記非レンダリング可能グラフィックス・プリミティブに対応す
るオブジェクトが隠されるか決定するために、状態レジスタ内容を読み取るため
の指示を含む、前記ホスト・プロセッサをさらに具備することを特徴とする、前
記システム。 (55)(54)に記載のシステムであって、前記コンピュータ・グラフィック
ス・パイプラインはさらに:その各々が前記非レンダリング・プリミティブの対
応する組によって表示される、複数の前記3次元オブジェクトを蓄積するメモリ
と;及び明確には最終的にレンダリングされた画像に寄与しない前記プリミティ
ブの部分を切り取るために、隠れ面除去を実行するロジックであって、前記隠れ
面除去は、色データが、前記画像の前記領域において、グラフィックス・プリミ
ティブに関して生成される前に、前記画像の領域に関して実行され、それによっ
て、生成される必要がある前記色データの量を低減させる前記ロジックとを具備
し;及び前記プログラム・モジュールはさらに:前記状態レジスタを読み取る前
に、複数の前記3次元オブジェクトを入力し;前記状態レジスタを読み取り、並
びに前記コンピュータ・グラフィックス・パイプラインへ、その非レンダリング
可能プリミティブは隠されない3次元オブジェクトに対応するレンダリング可能
プリミティブを入力し、それによって、その非レンダリング可能プリミティブは
隠されない、前記3次元オブジェクトに対応する前記レンダリング可能プリミテ
ィブを入力することを避けるための指示をさらに含むことを特徴とする、前記シ
ステム。
【手続補正17】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0495】
【関連出願】 本出願は、1998年8月20日提出、アメリカ特許仮出願第60/097,3
36号、「ディファード・シェーディングを伴うグラフィックス・プロセッサ(
GRAPHICS PROCESSOR WITH DEFFERED SHADING)」、の35USCセクション11
9(e)の利益を主張し、その内容はここに参照のために採用されている。 本出願はまた、1998年12月17日提出、アメリカ特許出願第09/21
3,990号、「ディファード・シェーディング・アーキテクチャにおける、接
線空間ライティングの方法(HOW TO DO TANGENT SPACE LIGHTING IN A DEFFERED
SHADING ARCHITECTURE)」、(代理人ドケット番号A−66397); 年 月 日提出、特許出願第 号、「統一されたプリミティブ記
述子を使用して、3Dグラフィックス・パイプラインにおいてセットアップ・オ
ペレーションを実行するための装置及び方法(APPARATUS AND METHOD FOR REFOR
MING SETUP OPERATIONS IN A 3-D GRAPHICS PIPELINE USING UNIFIED PRIMITIVE
DESCRIPTORS)」、(代理人ドケット番号A−66382); 年 月 日提出、特許出願第 号、「ポスト・ファイル・ソーテ
ィング・セットアップ(POST-FILE SORTING SETUP)」、(代理人ドケット番号
A−66383); 年 月 日提出、特許出願第 号、「タイル相対Y値及びスクリ
ーン相対X値(TILE RELATIVE Y-VALUES AND SCREEN RELATIVE X-VALUES)」、
(代理人ドケット番号A−66384); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、画像データを空間的にソートするためのシステム、装置、
及び方法(SYSTEM,APPARATUS AND METHOD FOR SPATIALLY SORTING IMAGE DATA I
N A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、(代理人ドケット番号A−6
6380); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、オブジェクト・ジオメトリをソートするための、保証され
た保存性メモリ評価を生成するためのシステム、装置及び方法(SYSTEM, APPARA
TUS AND METHOD FOR GENERATING GUARANTEED CONSERVATIVE MEMORY ESTIMATE FO
R SORTING OBJECT GEOMETRY IN A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、
(代理人ドケット番号A−66381); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、レンダリング・リソースの均衡を取るためのシステム、装
置及び方法(SYSTEM, APPARATUS AND METHOD FOR BALANCING RENDERING RESOURC
ES IN A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、(代理人ドケット番号A
−66379);
【手続補正18】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】追加
【補正内容】
【発明の詳細な説明】
【0496】 年 月 日提出、特許出願第 号、「パイプライン状態記憶及び
検索を伴うグラフィックス・プロセッサ(GRAPHICS PROCESSOR WITH PIPELINE S
TATE STORAGE AND RETRIEVAL)」、(代理人ドケット番号A−66378); 年 月 日提出、特許出願第 号、「テクスチャを生成するため
の方法及び装置(METHOD AND APPARATUS FOR GENERATING TEXTURE)」、(代理
人ドケット番号A−66398); 年 月 日提出、特許出願第 号、「3Dグラフィックス・パイ
プラインにおけるジオメトリ・オペレーションのための装置及び方法(APPARATU
S AND METHOD FOR GEOMETRY OPERATIONS IN A 3D GRAPHICS PIPELINE)」、(代
理人ドケット番号A−66373); 年 月 日提出、特許出願第 号、「3Dグラフィックス・パイ
プラインにおけるフラグメント・オペレーションのための装置及び方法(APPARA
TUS AND METHOD FOR FRAGMENT OPERATIONS IN A 3D GRAPHICS PIPELINE)」、(
代理人ドケット番号A−66399); 年 月 日提出、特許出願第 号、「ディファード・シェーディ
ング・グラフィックス・パイプライン・プロセッサ(DEFFERED SHADING GRAPHIC
S PIPELINE PROCESSOR)」、(代理人ドケット番号A−66360); 年 月 日提出、特許出願第 号、「ディファード・シェーディ
ングを伴うグラフィックス・プロセッサにおける保存性隠れ面除去を実行するた
めの方法及び装置(METHOD AND APPARATUS FOR REFORMING CONSERVATIVE HIDDEN
SURFACE REMOVAL IN A GRAPHICS PROCESSOR WITH DEFFERRED SHADING)」、(
代理人ドケット番号A−66386);及び 年 月 日提出、特許出願第 号、「向上した特性を有するディ
ファード・シェーディング・グラフィックス・パイプライン・プロセッサ(DEFE
RRED SHADING GRAPHICS PIPELINE PROCESSOR HAVING ADVANCED FEATURES)」、
(代理人ドケット番号A−66364) の35USCセクション120の利益を主張する。 本明細書に記載されたすべての公告、特許、及び特許出願は、各個別の公告又
は特許出願が、参照のために採用されるように特定的及び個別に示されているの
と同じ範囲で、参照のために採用されている。 本発明の特定の実施形態の上述の記載は、例示及び説明の目的で示されてきた
。それらは、完全なものではなく、また本発明を、開示された精密な形式に限定
する目的ではなく、明らかに多くの変更及び変形が、上述の教示に照らして可能
である。前記実施形態は、本発明及びその実践的応用の原則を最も良く説明し、
それによって当業者が、検討される特定の使用に適した様々な変更とともに、本
発明及び様々な実施形態を最も良く使用することができるようにするために、選
択され及び説明された。本発明の範疇は、本書に添付された特許請求の範囲及び
それの同等物によって定義されるものである。
【手続補正書】
【提出日】平成13年10月17日(2001.10.17)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正内容】
【発明の名称】 ディファード・シェーディング(deferred shading)を伴うグ
ラフィックス・プロセッサ(graphics processor)
【特許請求の範囲】
【発明の詳細な説明】
【0001】 (技術分野) 本発明は、コンピューティング・システム(computing system)に関し、一般
的には3次元コンピュータ・グラフィックス(computer graphics)に関し、よ
り特定的には、ディファード・シェーディング(deferred shading)及び向上し
た特性を実行する3次元グラフィックス・プロセッサ(graphics processor)の
ための構造及び方法に関する。
【0002】 (背景技術) 2.1 3次元コンピュータ・グラフィックス コンピュータ・グラフィックスは、コンピュータで画像(ピクチャ)を生成す
る技術及び科学である。絵、すなわち画像の生成は、一般的にはレンダリング(
rendering)と呼ばれる。一般的に、3次元(3D)コンピュータ・グラフィッ
クスでは、あるシーン(scene)でのオブジェクト(object)の表面(又はボリ
ューム)を表すジオメオトリ(geometry)は、フレーム・バッファ(frame buff
er)に記憶されるピクセルに変換され、それから表示装置上に表示される。コン
ピュータ・モニタとして使用されるCRT等、リアルタイム(real-time)表示
装置は、継続的に画像を繰り返して表示することによって、前記表示をリフレッ
シュする(refresh)。このリフレッシュは通常、列毎に起こり、各列はラスタ
線(raster line)又はスキャン線(scan line)と呼ばれる。この明細書におい
て、ラスタ線は下から上に、番号を付けられるが、上から下に表示される。
【0003】 3Dアニメーション(3D animation)において、画像のシーケンスが表示され
、3次元空間での動きの錯覚を与える。対話型3Dコンピュータ・グラフィック
スは、ユーザに、自らのビュー・ポイント(view point)を変えさせ、又はリア
ルタイムでジオメトリを変更させることで、レンダリング・システムに、新しい
画像をリアルタイムで稼動中に生成するよう要求する。
【0004】 3Dコンピュータ・グラフィックスにおいて、各レンダリング可能オブジェク
トは通常、自らのローカル・オブジェクト(local object)座標システムを有し
、それゆえに、オブジェクト座標からピクセル表示座標に変換され(又は変形さ
れ)る必要がある。概念上、これは4段階処理:1)オブジェクト座標からワー
ルド座標(world coordinate)への変換(サイズの拡大又は縮小に関するスケー
リング(scaling)を含む)であり、それはシーン全体に関する座標システムで
ある;2)前記シーンのビュー・ポイントに基づいた、ワールド座標からアイ座
標(eye coordinate)への変換;3)アイ座標から透視的な変換されたアイ座標
への変換であり、透視的スケーリング(さらなるオブジェクトは、より小さく現
れる)が実行された場合;及び4)透視的な変換されたアイ座標から、スクリー
ン座標とも呼ばれるピクセル座標への変換である。スクリーン座標は、3次元空
間における点であり、及び後述のとおり、スクリーン精度(すなわちピクセル)
又はオブジェクト精度(高精度数で、通常フローティング・ポイントである)の
いずれかでよい。これらの変換ステップは、変換が起こる前に、適切な変換マト
リックスを予め計算することによって、一つ又は二つのステップに圧縮すること
ができる。一度、ジオメトリがスクリーン座標になると、それは、フレーム・バ
ッファに記憶される(すなわち「ラスタライズされた“rasterized”」)一組の
ピクセル色値に分解される。グロー・シェーディング(Gouraud shading)、フ
ォン・シェーディング(Phong shading)及びテクスチャ・マッピング(texture
mapping)を含むピクセル色値を生成するための多くの技術が使用される。
【0005】 従来のレンダリング処理の要約は、「3次元コンピュータ・グラフィックスの
基礎(Fundamentals of Three-dimensional Computer Graphics)」、ワット(W
att)著、第5章:レンダリング処理(The Rendering Process)、97乃至11
3ページ、マサチューセッツ(Massachusetts)州、レディング(Reading)、ア
ディソン−ウェスリー出版社(Addison-Wesley Publishing Company)、198
9年発行、1991年増刷、ISBN0−201−15442−0(以後、ワッ
ト参照と称する)に、見ることができる。
【0006】 図1は、3次元オブジェクト、四面体を、その座標軸(Xobj,Yobj, Zobj)とともに示す。3次元オブジェクトは、(Xeye,Yeye,Zeye)に基づ
いて、ビュー・ポイントの座標システムで、変換され、基準化され、及び配置さ
れる。前記オブジェクトは、ビューイング・プレーン(viewing plane)へと投
影され、それによって透視図に修正する。この点において、オブジェクトは、2
次元になったように見える;しかしながら、前記オブジェクトのz座標は維持さ
れるので、それらは後に隠れ面除去技術によって使用することができる。前記オ
ブジェクトは最後に、Zscreenが、ページに垂直に交わる、 (Xscreen,Yscreen,Zscreen)に基づいて、スクリーン座標に変換される。
前記オブジェクト上の点は、表示スクリーン内のピクセルの位置(及びそれの小
数部)によって記述される自らのx及びy座標と、及びビュー・ポイントから、
基準化されたバージョンの距離にZ座標を有する。
【0007】 ジオメトリの多くの異なる部分が、同じピクセルに影響を与えうるので、シー
ン・ビューイング・ポイントに最も近い面を表すジオメトリが決定されなければ
ならない。各ピクセルに関して、前記ピクセルの領域によって境界を成す前記ボ
リューム内の可視面は、ピクセル色値を決定する一方で、隠れ面は、前記ピクセ
ルに影響を与えることができない。最も近い不透明面(ジオメトリの辺縁部が、
ピクセル領域と交差する場合は、複数の面)よりも、ビュー・ポイントに近い非
不透明面は、ピクセル色値に影響を与える一方で、すべての他の非不透明面は、
廃棄される。この明細書において、「閉塞した(occluded)」という用語は、他
の非不透明ジオメトリによって隠されたジオメトリを記述するために使用される
【0008】 可視面決定を実行するために、多くの技術が開発され、及びこれらの技術の調
査は:「コンピュータ・グラフィックス:原理と実践(Computer Graphics : Pr
inciples and Practice)」、フォリー(Foley)、ヴァン・ダム(van Dam)、
ファイナー(Feiner)、及びヒューズ(Hughes)著、第15章:可視面決定(Vi
sible-Surface Determination)、649乃至720ページ、第2版、マサチュ
ーセッツ州、レディング、アディソン−ウェスリー出版社、1990年、199
1年訂正増刷、ISBN0−201−12110−7(以後、フォリー参照(Fo
ley Reference)と称する)を参照して、ここに採用されている。フォリー参照
において、650ページで、「画像精度」及び「オブジェクト精度」という用語
が定義される:「画像精度アルゴリズムは、通常、画像装置の解像度で実行され
、及び各ピクセルにおける可視性を決定する。オブジェクト精度アルゴリズムは
、各オブジェクトが定義される精度で実行され、及び各オブジェクトの可視性を
決定する。」 レンダリング処理が進むにつれて、複数の面が、ピクセルによって境界を定め
られるボリュームと交差するので、ほとんどの従来技術のレンダラ(renderer)
は、一定のスクリーン・ピクセルの色値を何回も計算しなければならない。ピク
セルがレンダリングされる必要がある、平均的回数は、特定のシーンに関しては
、シーンの深度計算複雑性(depth complexity)と呼ばれる。単純なシーンは、
ほぼ1の深度計算複雑性を有する一方で、複雑なシーンは、10又は20の深度
計算複雑性を有しうる。シーン・モデル(scene model)がより複雑になると、
レンダラは、常に増加する深度計算複雑性を有するシーンを処理することを要求
されるであろう。このように、ほとんどのレンダー(renders)に関して、シー
ンの深度計算複雑性は、浪費された処理の基準である。例えば、10の深度計算
複雑性を有するシーンに関して、計算の90%は、隠れピクセルで浪費される。
この浪費された計算は、単純なZバッファ技術(後述される)を使用するハード
ウェア・レンダラには典型的であり、それはハードウェアに簡単に組み込むこと
ができるので、一般的に選択される。Zバッファ技術よりも複雑な方法は、今ま
で、複雑すぎて、一般的には費用効果的な方法で構築することができなかった。
本発明において示された前記方法及び装置の重要な特性は、ラスタライズされる
前に、ジオメトリの隠れ部分を排除することによって、この浪費された計算を避
ける一方で、費用効果的なハードウェアに組み込むのに十分に単純であることで
ある。
【0009】 表面上の一点(しばしば、ポリゴンのバーテックス)が、スクリーン座標に変
換される時、前記点は、三つの座標:1)ピクセル単位のx座標(一般的に小数
点を含む);2)ピクセル単位のy座標(一般的に小数点を含む);及び3)ア
イ座標、仮想スクリーンからの距離、又はビューイング・ポイントからの面の相
対距離を維持する他の座標システムのいずれかにおける点のz座標を有する。本
明細書において、正のz座標値は、ビューイング・ポイントからの「観察方向」
に関して使用され、より小さい値は、ビューイング・ポイントにより近い位置を
示す。
【0010】 面が一組の平面ポリゴンによって近似される(approximated)時、各ポリゴン
のバーテックスは、スクリーン座標に変換される。ポリゴンにおける又はその上
にある点に関して(バーテックスは除く)、スクリーン座標は、通常は、エッジ
・ウォーキング(edge walking)及びスパン補間(span interpolation)の処理
によって、バーテックスの座標から補間される。このようにz座標値は、一般的
に、ジオメトリがレンダリングされると、各ピクセル値(色値とともに)に含ま
れる。 2.2 包括的3Dグラフィックス・パイプライン(Generic 3D Graphics Pipe
line) 多くのハードウェア・レンダラが開発されており、一例は、:「Leo:費用
効果的3Dシェーデド・グラフィックスのためのシステム(Leo: A System for
Cost Effective 3D Shaded Graphics)」ディアリング(Deering)及びネルソン
(Nelson)著、SIGGRAPH93会報の101乃至108ページ、1993
年8月1−6日、コンピュータ・グラフィックス会報、年次会議シリーズ、ニュ
ーヨーク、ACM SIGGRAPH、1993年出版、ソフトカバーISBN
0−201−58889−7及びCD−ROM ISBN0−201−5699
7−3(以後、ディアリング参照と称する)を参照して、ここに採用されている
。ディアリング参照は、それが「真に包括的であり(truly generic)、ほぼす
べての商業用3Dグラフィックス・アクセレレータ(3D graphics accelerator
)が、この要約に適合する最高レベルである」として述べている包括的3Dグラ
フィックス・パイプライン(すなわち、レンダラ、又はレンダリング・システム
)のダイアグラム(diagram)を含み、このパイプライン・ダイアグラムは、図
2に記載のとおり再現される。そのようなパイプライン・ダイアグラムは、レン
ダリングの処理を運ぶが、特定のハードウェアを記述しない。本明細書は、包括
的3Dグラフィックス・パイプラインのステップのいくつかを共有する新しいグ
ラフィックス・パイプラインを示す。包括的3Dグラフィックス・パイプライン
における各ステップは、ここでは簡単に説明され、図3に記載の方法の流れのダ
イアグラムにおいても示される。ポリゴンの処理が、本明細書のすべてにおいて
仮定されるが、3Dジオメトリを記述するための他の方法が、代わりになること
もできる。説明を簡単にするために、記述された方法におけるポリゴンの種類と
して、三角形が使用される。
【0011】 図2に記載のとおり、データ入力(ステップ212)後、包括的3Dグラフィ
ックス・パイプラインのフローティング・ポイント集約的機能の中での第一のス
テップは、変換ステップ(ステップ214)であり、それは前述された。変換ス
テップは、方法の流れのダイアグラムの外側のループにおける第一のステップと
して、図3にも記載されており、また、「次のポリゴンを得る(get next polyg
on)」も含む。第二のステップ、クリップ・テスト(clip test)は、少なくと
もビュー・ボリューム(view volume)に部分的に含まれるか見るために、前記
ポリゴンを調べる(時に、錐台系の形状である)(ステップ216)。ポリゴン
が、ビュー・ボリュームにない場合、それは放棄される;そうでなければ、処理
が継続する。第三のステップは、面決定であり、ビューイング・ポイントから逸
れた方を向いたポリゴンは放棄される(ステップ218)。一般的に、面決定は
、閉じられたボリュームであるオブジェクトにのみ適用される。第四のステップ
は、ライティング計算(lighting computation)であり、一般的に、様々な種類
の複数の光源での、グロー・シェーディング及び/又はテクスチャ・マッピング
に関するセット・アップ(set up)を含むが、フォン・シェーディング又は多く
の他の選択肢の一つに関して設定することもできる(ステップ222)。第5の
ステップ、クリッピング(clipping)が、ビュー・ボリュームの外側にあるポリ
ゴンのあらゆる部分を削除するのは、前記部分は、ビューイング・プレーンの四
角の領域内に突出しないからである(ステップ224)。一般的に、ポリゴン・
クリッピングは、ポリゴンを、両方がビューイング・プレーンの領域内に突出す
る、二つのより小さいポリゴンに分割することによって、なされる。ポリゴン・
クリッピングは、計算上大変高価である。第六のステップ、透視的分割は、オブ
ジェクトの、ビューイング・プレーンへの突出に関して、透視的修正をする(ス
テップ226)。この点において、ポリゴンのバーテックスを表す点は、ステッ
プ7、スクリーン空間変換ステップによって、ピクセル空間座標に変換される(
ステップ228)。第八のステップ(ステップ230)、増分レンダリングに関
するセット・アップは、様々な始点、終点、及びウェッジ・ウォーキング並びに
スパン補間に必要な増分値を計算する(例えば、x、y、及びz座標;RGB色
;テクスチャ・マップ空間u及びv座標;等)。
【0012】 描画集約的機能の中で、エッジ・ウォーキング(ステップ232)は、以前に
生成されたスパン(同じポリゴンにおいて)からの値を増大させることによって
、表示装置の書くラスタ線に関する水平スパンを増大的に生成し、それによって
ポリゴンの反対のエッジに沿って、垂直に「ウォーキング」する。同様に、スパ
ン補間(ステップ234)は、ビューイング・ポイントからのピクセルの距離を
示すz座標値を含む、ピクセル値を生成するために、スパンに沿って水平に「ウ
ォーキング」する。最後に、テスティング(Testing)及びブレンディング(Ble
nding)とも称されるzバッファされたブレンディング(ステップ236)は、
最終のピクセル色値を生成する。前記ピクセル値は、色値も含み、それは単純な
グロー・シェーディング(すなわち、バーテックス色値の補間)によって、又は
テクスチャ・マッピング(おそらく、ともにブレンドされた複数のテクスチャ・
マップを使用して)、フォン・シェーディング(すなわち、パー・フラグメント
(per fragment)ライティング)、及び/又はバンプ・マッピング(bump mappi
ng)(補間された面法線を摂動させる)等の、より計算上高価な技術によって、
生成することができる。描画集約的機能が完了した後、二重バッファされたMU
X出力ルックアップ・テーブル・オペレーション(double-buffered MUX output
look-up table operation)が実行される(ステップ238)。この図において
、丸い角を有するブロック(block)は、通常は機能又は処理オペレーションを
表す一方で、尖った角の長方形は、通常は記憶されたデータ又はメモリを表す。
【0013】 生成されたz座標値を、Zバッファに記憶された対応する値と比較することに
よって、zバッファされたブレンドは、(それが、前記ピクセルの場所に関して
、以前に記憶された値よりも、ビューイング・ポイントに近い場合)それをフレ
ーム・バッファに書き込むことによって、新しいピクセル値を維持するか、又は
新しいピクセル値を放棄する(それがさらに遠い場合)。このステップにおいて
、アンチエイリアシング(antialiasing)方法は、新しいピクセル色を、古いピ
クセル色とブレンドすることができる。zバッファされたブレンドは、通常は後
述のとおり、パー・フラグメントのオペレーションのほとんどを含む。
【0014】 包括的3Dグラフィックス・パイプラインは、二重バッファされたフレーム・
バッファを含むので、二重バッファされたMUXも含まれる。出力ルックアップ
・テーブルは、色マップ値を変換するために含まれる。最後に、デジタル−アナ
ログ変換によって、表示装置への入力のためのアナログ信号を作る。
【0015】 包括的3Dグラフィック・パイプラインの主な欠点は、その描画集約的機能が
、固定された数のポリゴンを与えられたピクセル・レベルで、決定的ではないこ
とである。すなわち、固定された数のポリゴンを与えられると、平均的ポリゴン
のサイズが増大するにつれて、より多くのピクセルレベルの計算が必要とされる
。しかしながら、フローティング・ポイント集約的機能は、ポリゴンの数に比例
し、及び平均的なポリゴンのサイズから独立している。それゆえに、フローティ
ング・ポイント集約的機能と、描画集約的機能の間の計算力の量の均衡を保つの
が難しいのは、この均衡が、平均的なポリゴンのサイズに依存するからである。
【0016】 従来技術のZバッファは、従来のランダム・アクセス・メモリ(Random Acces
s Memory)(RAM又はDRAM)、ビデオ・ラム(VRAM)、又は特殊なD
RAMに基づいている。特殊DRAMの一例は、「FBRAM:3Dグラフィッ
クスに最適化された、新しい形式のメモリ(FBRAM:A new Form of Memory Optim
ized for 3D Graphics)」、ディアリング(Deering)、シュラップ(Schlapp)
、及びラヴェル(Lavelle)著、SIGGRAPH94会報、167乃至174
ページ、1994年7月24−29日、コンピュータ・グラフィックス会報、年
次会議シリーズ、ニューヨーク、ACM SIGGRAPH、1994年出版、
ソフトカバーISBN0201607956に掲載されている。 2.3 パイプラン状態 OpenGLは、プログラマに、グラフィック画像を作るためにオブジェクト
及びオペレーションを特定させる何百もの機能及びプロシージャを含むグラフィ
ックス・ハードウェアへのソフトウェア・インターフェースである。前記オブジ
ェクト及びオペレーションは、三次元オブジェクトの色画像を作るための適切な
特性を含む。OpenGL(バージョン1.2)のほとんどは、オブジェクトが
、点、線、ポリゴン、又はビット・マップ(bitmap)であっても、前記グラフィ
ックス・ハードウェアが、フレーム・バッファを含むことを仮定し、又は要求し
、及び前記オペレーションが、前記オブジェクト上でのオペレーションでもよい
。OpenGLの一般的な特徴(グラフィカル・インターフェースの単なる一例
)は、マーク・シーガル(Mark Segal)及びカート・アクレイ(Kurt Akeley)
編、「OpenGL登録商標グラフィックス・システム:仕様書(バージョン1
.2)」、バージョン1.2、1998年3月の参照で説明される;及びここに
は参照のために採用されている。OpenGLを参照しているが、本発明は、O
penGLと、又は他の標準あるいは非標準グラフィカル・インターフェースと
互換性があり、又は一致している構造、プロシージャ、又は方法に限定されない
。望ましくは、本発明の構造及び方法は、標準インターフェースの一つのために
準備されたデータ・セットが、変更なく本発明の構造及び方法によって処理され
てもよいように、OpenGL又は他の標準グラフィカル・インターフェースと
一致する方法で実行されてもよい。しかしながら、本発明の構造及び方法は、O
penGLによっては供給されないいくつかの特徴を供給し、及びそのような包
括的な入力/出力が供給される時でも、前記実行は異なる方法で供給される。
【0017】 「パイプライン状態(pipeline state)」というフレーズは、従来技術におい
ては単一の定義を有しない。例えば、OpenGL仕様書は、状態の項目に関し
て、グラフィックス・レンダリング・マシン又はパイプライン状態の種類並びに
量を、及び前記状態情報を記憶するために必要とされるビット並びにバイトの数
を説明する。OpenGL定義では、パイプライン状態は、例えば、「非バーテ
ックス」情報と同様に、それ自身がバーテックス法線である複数のバーテックス
及び色を含むオブジェクト・バーテックス関連情報を含む傾向にある。
【0018】 情報が、グラフィックス・レンダラに送られる時、少なくともいくつかのオブ
ジェクト・ジオメトリ情報が、シーンを記述するために供給される。通常は、オ
ブジェクト又は複数のオブジェクトは、バーテックス情報に関して特定され、オ
ブジェクトはモデル化され、定義され、又はそうでなければ、点、線、又は一つ
以上のバーテックスを有するポリゴン(オブジェクト・プリミティブ(object p
rimitives))によって特定される。単純に見ると、バーテックスは、空間にお
ける場所(location)であり、例えば、ある参照起点と比較した三次元空間(x
、y、z)座標によって特定されてもよい。面法線、色、テクスチャ、透明性、
及びバーテックスの特性に関する類似の情報等、他の情報が各バーテックスと関
連する。この情報は、基本的に「パー・バーテックス("per-vertex")」情報で
ある。残念なことに、パー・バーテックス情報に対する必要条件としての、入力
情報とバーテックスとの間の1対1の関係は、必ずしも制限的ではない。例えば
、色値は、特定のバーテックスに関するデータ・ストリームにおいて特定されて
もよく、前記色が、連続するバーテックスに関して変更するまで、データ・スト
リームにおいて再特定されない。色値が、明らかに各バーテックスに関する入力
データ・ストリームに含まれていなくても、前記色値は、パー・バーテックス・
データとして特徴づけられてもよい。
【0019】 テクスチャ・マッピングは、パー・バーテックス情報又はパイプライン状態情
報のいずれとしても考えられる情報又はデータの興味深い例を示す。各オブジェ
クトに関して、一つ以上のテクスチャ・マップが特定され、各テクスチャ・マッ
プは、一つのテクスチャ座標又は複数のテクスチャ座標等、ある方法で識別され
る。テクスチャ座標で指しているテクスチャ・マップが、パイプライン状態の一
部として考えられてもよい一方で、それがパー・バーテックス情報であることが
主張されてもよい。
【0020】 1対1ベースでの、ジオメトリ・オブジェクト・プリミティブに関連しない、
ライティングの場所並びに強さ、素材設定、反射特性、及びレンダラが動作する
他のすべての規則等、レンダラによって使用される他の情報は、より正確に、パ
イプライン状態と称されてもよい。パー・バーテックス・ベースでは、変化しな
い、又は変化してはならないものは、パイプライン状態だけであると考えられる
かもしれないが、上述の理由から、これは完全に明確な定義ではない。例えば、
レンダリングされるべき一定のオブジェクトに適用されるべき、特定の深度テス
ト(後述の説明を参照)を定義してもよく、例えば、深度テストは、z値が、厳
格に、いくつかのオブジェクトに関して「より大き("greater-than")」く、及
び他のオブジェクトに関しては「より大きいか又は等し("greater-than-or-equ
al-to")」くなることを要求してもよい。時によって変わるこれらの特定の深度
テストは、そのときのパイプライン状態であると考えられてもよい。
【0021】 OpenGLにおいてレンダラ(パイプライン)状態として考えられるパラメ
ータは、前記参照されたOpenGL仕様書(バージョン1.2、193乃至2
17ページ)の第6.2節において確認されている。
【0022】 基本的に、レンダラによって使用されるデータ又は情報は2種類ある:(1)
パー・バーテックス・データと考えられてもよいプリミティブ・データ、及び(
2)それ以外のすべてであるパイプライン状態データ(又は単にパイプライン状
態)である。この違いは、一定の情報項目を、パイプライン状態又は非パイプラ
イン状態のいずれかとして扱うグラフィックス・レンダラを実行する方法がある
ので、特定の規則としてよりもガイドライン(guideline)として考えられるべ
きである。 2.4 パー・フラグメント・オペレーション(per-fragment operations) 包括的3Dグラフィックス・パイプラインにおいて、「zバッファされたブレ
ンド」ステップは、実際には、多くのより小さい「パー・フラグメント」オペレ
ーションのステップを取り入れる。
【0023】 OpenGL(オープン・グラフィックス・ライブラリ(Open Graphics Libr
ary)及びD3D等、アプリケーション・プログラム・インターフェース(AP
Is(Application Program Interfaces))は、一組のパー・フラグメント・オ
ペレーションを定義する(バージョン1.2OpenGL仕様書の第4章を参照
)。本発明の構造並びに方法と、従来の構造並びにプロシージャとの間の包括的
な類似性及び相違が、簡単に理解できるように、例示的なOpenGLパー・フ
ラグメント・オペレーションを簡潔に検討する。
【0024】 OpenGLの下で、フレーム・バッファは、一組のピクセルを、二次元アレ
イとして記憶する。フレーム・バッファに記憶された各ピクチャ・エレメント(
picture-element)又はピクセルは、単純に一組のいくつかのビットである。ピ
クセルごとのビット数は、特定のGL実行又はコンテクストによって変化しても
よい。 フレームバッファにおける各ピクセルからの対応するビットは、共にビットプレ
ーン(bitplane)にグループ分けされる;各ビットプレーンは、各ピクセルから
の単一のビットを含む。ビットプレーンは、色、深度、ステンシル(stencil)
、及び蓄積バッファとして称されるいくつかの論理バッファにグループ分けされ
る。色バッファは順に、OpenGL下で左前バッファ(front left buffer)
、右前バッファ(front right buffer)、左後ろバッファ(back left buffer)
、右後ろバッファ(back right buffer)及びいくつかの追加の補助バッファと
称されるものを含む。前方バッファに記憶された値は、表示モニタに通常表示さ
れる値である一方で、後方バッファ及び補助バッファの内容は、不可視であり表
示されない。立体的なコンテクストは、左前及び右前バッファの両方を表示する
一方で、モノスコーピックな(monoscopic)コンテクストは、左前バッファのみ
を表示する。一般的に、色バッファは、同じ数のビットプレーンを有していなけ
ればならないが、コンテクストの特定の実行は、右バッファ、後方バッファ、又
は補助バッファをまったく供給しなくてもよく、実行又はコンテクストは、追加
的に、ステンシル、深度又は蓄積バッファを供給し又は供給しなくてもよい。
【0025】 OpenGLの下で、色バッファは、符号のない整数の色インデックス又はR
,G,B及び任意で符号のない整数値の数字“A”のいずれかを含む;及び色バ
ッファ、深度バッファ(供給される場合)、ステンシル・バッファ(供給される
場合)、及び蓄積バッファ(供給される場合)の各々におけるビットプレーンの
数は、固定され及びウィンドウ依存である。蓄積バッファが供給される場合、少
なくともR,G及びB色コンポーネントごとのビット・プレーンを、色バッファ
と同じだけ有する。 (Xw,Yw)のウィンドウ座標でのラステライゼーション(rasterization)に
よって作られたフラグメントは、多くのテスト、パラメータ及び条件に基づいて
、その場所で、フレームバッファにおけるピクセルを変更する。順番に、フラグ
メント及びそれに関連するデータで始まり、フレームバッファへの最終出力スト
リームで終わる、通常実行されるいくつかのテストの中で、特筆すべきは、実行
される順番(及びAPIの中でのいくつかのバリエーション(variation)を有
する)である:1)ピクセル・オーナシップ・テスト;2)シザー(scissor)
・テスト;3)アルファ(alpha)・テスト;4)色テスト;5)ステンシル・
テスト;6)深度テスト;7)ブレンディング;8)ディザリング(dithering
);及び9)ロジコップ(logicop)である。OpenGLが、アルファ・テス
トとステンシル・テストとの間の明確な「色テスト」を供給しないことが、注目
される。OpenGL下でのパー・フラグメント・オペレーションは、すべての
色計算の後に適用される。これらのテスト又はオペレーションの各々は、簡潔に
後述される。 2.4.1 オーナシップ・テスト OpenGLの下で、ピクセル・オーナシップ・テストは、フレームバッファ
における(Xw,Yw)という場所でのピクセルが、現在GLコンテクストによっ
て所有されているか決定する。所有されていない場合、ウィンドウ・システムは
、入力フラグメントの運命を決定する。前記フラグメントが放棄され、又は引き
続くパー・フラグメント・オペレーションのあるサブセットが、前記フラグメン
トに適用されることが、可能性のある結果である。このピクセル・オーナシップ
・テストは、ウィンドウ・システムに、適切にGLの振舞いを制御させる。
【0026】 表示スクリーンを有するコンピュータにおいて、一つ又はいくつかの処理が実
行され、及び各処理は、表示スクリーン上にウィンドウを有することが仮定され
る。各処理に関して、関連するウィンドウは、前記処理が書き込み又はレンダリ
ングしたいピクセルを定義する。二つ以上のウィンドウがある場合、一つの処理
に関連するウィンドウは、他の処理に関連するウィンドウの前か、前記ウィンド
ウの後ろか、又は両方のウィンドウが完全に可視でもよい。全体の表示スクリー
ン又はデスクトップに関して、一つのフレーム・バッファしかないので、ピクセ
ル・オーナシップ・テストは、どの処理、及び関連するウィンドウが、前記ピク
セルの各々を所有するか決定することを伴う。特定の処理が、ピクセルを「所有
」しない場合、フレーム・バッファに関連したピクセル・オーナシップ・テスト
に失敗し、及び前記ピクセルは捨てられる。典型的なパラダイム(paradigm)の
下では、ピクセル・オーナシップ・テストは、各処理ごとに実行され、及びフレ
ーム・バッファにおける一定のピクセルの場所に関しては、前記ピクセルは前記
処理の一つに関してピクセル・オーナシップ・テストを通過し、及び他の処理に
関してピクセル・オーナシップ・テストに失敗してもよいことが注目される。さ
らに、一般的には、特定のピクセルが、一つだけの処理に関して、オーナシップ
・テストを通過することができるのは、たった一つ処理が、同時に特定のフレー
ム・バッファピクセルを所有することができるからである。
【0027】 いくつかのレンダリング体系において、ピクセル・オーナシップ・テストは、
特に関連しなくてもよい。例えば、シーンがオフスクリーン・バッファ(off-sc
reen buffer)にレンダリングされている場合、及び引き続きデスクトップにブ
ロック転送され又はブリットされ("blitted")る場合、ピクセル・オーナシッ
プは、実際は関連さえしない。各処理が自動的に、又は必ず、ピクセル・オーナ
シップ・テストを通過するのは(それが実行される場合)、各処理は、そのオフ
スクリーン・バッファを有効に所有し、及び前記バッファの前には何もないから
である。
【0028】 特定の処理に関して、前記ピクセルが、前記処理によって所有されない場合、
前記場所へピクセル値を書き込む必要はなく、及び前記ピクセルに関するすべて
の連続する処理は無視されてもよい。通常のワークステーションにおいて、スク
リーン上の特定のピクセルに関連するすべてのデータは、ラステライゼーション
の間に読み取られる。zバッファ、色値、古い色値、アルファ値、ステンシル・
ビット、等と同様に、フレーム・バッファ・ピクセルを所有する処理のアイデン
ティティ(identity)に関する情報を含む、前記ピクセルを送るあらゆるポリゴ
ンに関するすべての情報が読み取られる。一つの処理が前記ピクセルを所有する
場合、他のダウンストリーム(downstream)処理が実行される(例えば、シザー
・テスト、アルファ・テスト等)。他方で、前記処理がピクセルを所有せず、及
び前記ピクセルに関するオーナシップ・テストに失敗する場合、前記処理は、前
記ピクセルをさらに考慮する必要はなく、前記ピクセルは連続するテストへと省
かれる。 2.4.2 シザー・テスト OpenGLの下で、シザー・テストは、左下(左、下)座標、長方形の幅、
及び長方形の高さに対応する四つの座標値によって定義される、シザー長方形の
中に(Xw,Yw)があるか決定する。前記値は、「無効シザー(int
left,int bottom,sizei width,sizei height)」のプロシージャで、OpenGLの下、設定される。 及び である場合、シザー・テストは通過する;そうでなければ、シザー・テストは失
敗し、及びテストされる特定のフラグメントは放棄される。様々な初期状態が供
給され、及びエラー条件が監視され、報告される。
【0029】 単純に見ると、長方形は、オンスクリーン又はオフスクリーンのウィンドウで
もよいウィンドウを定義する。前記ウィンドウは、x−左、x−右、y−上部、
及びy−低部座標によって定義される(それが前記点からの点及び高さ及び幅に
関して表現されていても)。このシザー・ウィンドウは、スクリーンを割り当て
られたシザー・ウィンドウに入るポリゴン・フラグメントからのピクセルだけが
変化するという点で、有用である。ポリゴンがシザー・ウィンドウをまたぐ場合
には、シザー・ウィンドウの中にあるピクセルのみが変化してもよい。
【0030】 OpenGLマシンにおけるポリゴンが、パイプラインに下りる時、パイプラ
インは、前記ピクセルのz値及び色を決定するために計算する必要があるものす
べてを計算する。一度、z値及び色が決定されると、どの情報がフレーム・バッ
ファに配置されるのか決定するために、前記情報が使用される(それによって、
表示スクリーンに何が表示されるのかを決定する)。
【0031】 ピクセル・オーナシップ・テストのように、シザー・テストは、出力を変更さ
せるためのフレーム・バッファに実際に到達する前に、ピクセル及び/又はフラ
グメントを廃棄するための手段を供給する。 2.4.3 アルファ・テスト 色は、四つの値、赤(R)、緑(G)、青(B)、及びアルファ(A)で定義
される。RGB値は、各原色からのコントリビューション(contribution)を定
義し、及びアルファは、透明性に関連する。通常、色は32ビット値であり、各
コンポーネントに8ビットであるが、そのような表現は32ビットに制限されな
い。アルファ・テストは、一定のピクセルのアルファ値を、アルファ参照値と比
較する。例えば、前記比較が、グレーター・ザン・(greater-than)オペレーシ
ョン、レス・ザン・(less-than)オペレーション等になるように、比較の種類
が特定されてもよい。前記比較が、グレーター・ザン・オペレーションである場
合、ピクセルのアルファ値は、アルファ・テストを通過するためには、参照より
も大きくなければならない。ゆえに、ピクセルのアルファ値が0.9であり、参
照アルファは0.8であり、及び前記比較はグレーター・ザンである場合、前記
ピクセルは、アルファ・テストを通過する。アルファ・テストを通過しないピク
セルは、捨てられるか廃棄される。OpenGL仕様書は、アルファ・テストが
OpenGLにおいて実行される方法を説明しており、ここではさらにそれを説
明しない。
【0032】 アルファ・テストは、パー・フラグメント・オペレーションであり、すべての
フラグメント色付け計算及びライティング並びにシェーディング・オペレーショ
ンが完了した後に、行われる。これらのパー・フラグメントオペレーションの各
々は、従来のzバッファ・ブレンディング・オペレーションの一部として考えら
れてもよい。 2.4.4 色テスト 色テストは、ピクセル・アルファ(A)値と参照値との間のマグニチュード又
は論理的比較を実行するよりも、R,G又はB色コンポーネントの一つ又はその
組み合わせと参照値との間のマグニチュード又は論理的比較を実行する点を除き
、上述のアルファ・テストと類似している。比較テストは、例えば、グレーター
・ザン、レス・ザン、イコール・トゥ(equal-to)、グレーター・ザン・オア・
イコール・トゥ(greater-than-or-equal-to)、「グレーター・ザンc1、レス
・ザンc2」でもよく、c1及びc2は、ソアな(sore)予め決められた参照値等
である。例えば、ピクセルR値が、最小値と最大値の間にある場合のみ、色テス
トが通過されるように、参照最小R値、及び参照最大R値を特定してもよい。色
テストは、例えば、青スクリーン機能を供給するために有用かもしれない。比較
テストは、単一の色コンポーネント上で又は色コンポーネントの組み合わせ上で
実行されてもよい。さらに、アルファ・テストに関して、各コンポーネントに一
つの値があるが、色テストに関しては、各コンポーネントにつき有効な二つの値
、最大値及び最小値がある。 2.4.5 ステンシル・テスト OpenGLの下で、ステンシル・テストは、場所(Xw,Yw)におけるステ
ンシル・バッファに記憶された値と、参照値との間の比較の結果に基づいて、フ
ラグメントを条件付きで廃棄する。参照値が、ステンシル・バッファにおける、
マスクされ、記憶された値より小さく、小さいか又は等しく、等しく、より大き
いか又は等しく、より大きいか、又は等しくない場合にはいつも、ステンシル・
テストが決して通過しないように、いくつかのステンシル比較機能が許可される
。OpenGLの下では、ステンシル・テストが失敗する場合、入力フラグメン
トは廃棄される。参照値及び比較値は、複数のビット、通常は、256の異なる
値が表示されるように8ビットを有することができる。オブジェクトが、フレー
ム・バッファにレンダリングされる時、ステンシル・ビットを有するタグ(tag
)も、フレーム・バッファに書き込まれる。これらのステンシル・ビットは、パ
イプライン状態の一部である。実行するべきステンシル・テストの種類は、ジオ
メトリがレンダリングされる時に、特定することができる。
【0033】 ステンシル・ビットは、様々なフィルタリング、マスキング、又はステンシリ
ング・オペレーションを実行するために使用される。例えば、特定のフラグメン
トが、最後にフレーム・バッファにおける特定のピクセルに影響を与えてる場合
、ステンシル・ビットは、ピクセル情報とともに、フレーム・バッファに書き込
まれることができる。 2.4.6 深度バッファ・テスト OpenGLの下で、深度バッファ・テストは、深度比較が失敗した場合、入
力フラグメントを廃棄する。前記比較は、OpenGLシンボリック(symbolic
)定数DEPTH_TESTを使用する包括的イネーブル(Enable)及びディス
エーブル(Disable)コマンドによって、可能にされ又は不能にされる。深度テ
ストが不能にされる時、深度比較及びそれに続く深度バッファ値への可能な更新
が回避され、及びフラグメントは次のオペレーションに渡される。ステンシル・
ビットも関与しており、テストが回避された場合でも変更される。ステンシル値
は、深度バッファ・テストが通過した場合に変更される。深度テストが可能にさ
れる場合、深度比較が起こり、深度バッファ及びステンシル値が引き続き変更さ
れてもよい。深度テストがOpenGLにおいて実行される方法は、OpenG
L仕様書の145ページにおいて、より詳細に説明されている。
【0034】 深度比較が実行され、そこで可能な結果は以下のとおりである:深度バッファ
・テストは、入力フラグメントのZw値が、入力フラグメントの(xw,yw)座
標によって与えられる場所において記憶された深度値より、小さいか、小さいか
又は等しいか、等しいか、より大きいか、より大きいか又は等しいか、又は等し
くない場合、常に、決して通過しない。深度バッファ・テストが失敗する場合、
入力フラグメントは廃棄される。フラグメントの(xw,yw)座標におけるステ
ンシル値は、深度バッファ・テストの失敗に対して現在有効である関数に従って
、更新される。そうでなければ、フラグメントは、次のオペレーションへと続き
、フラグメントの(xw,yw)の場所における深度バッファの値は、フラグメン
トのzw値に設定される。この場合において、ステンシル値は、深度バッファ・
テストの成功に関して現在有効である関数に従って、更新される。必要なOpe
nGL状態は、値が8の整数と、及び深度バッファリングが可能にされるのか不
能にされるのかを示す単一のビットである。 2.4.7 ブレンディング(Blending) OpenGLの下で、ブレンディングは、入力フラグメントのR,G,B及び
A値を、入力フラグメント(xw,yw)の場所において、フレームバッファに記
憶されたR,G,B,及びA値と結合させる。
【0035】 このブレンディングは、通常は入力フラグメントのアルファ値(A)及び、対
応するフレーム・バッファに記憶されたピクセルのそれに依存する。次の検討に
おいて、Csは、入力フラグメントに関するソース色(source color)であり、
Cdは対応するフレームバッファの場所におけるデスティネーション色(destin
ation color)であり、及びCcは、GL状態におけるコンスタント色(constan
t color)である。これらの色の個別のRGBAコンポーネントは、それぞれs
、d及びcの添字によって表示される。
【0036】 ブレンディングは、基本的には、フレームバッファにおける色及びフラグメン
トにおける色を取り、及びそれらを混ぜる。ブレンディングが達成される方法、
すなわち特定のブレンディング関数は、ソースとデスティネーションの両方に関
して、様々な代替から選択されてもよい。
【0037】 ブレンディングは、OpenGL仕様書の146乃至149ページに説明され
ており、ここに参照のために採用されている。様々なブレンド方程式が、Ope
nGLの下、利用可能である。例えば、ソース色(Cs)とソース付加要素4つ
(S)の積を、デスティネーション色(Cd)とデスティネーション付加要素(
D)4つの積に加えることによって、すなわちC=CsS+CdDによって、ブレ
ンド結果(C)が得られる、加法的タイプのブレンドが利用可能である。代替的
に、ブレンド方程式は、減法(C=CsS−CdD)、逆の減法(C=CdD−Cs S)、最小関数(C=min(Cs,Cd))、最大関数(C=max(Cs,Cd ))でもよい。OpenGLの下、ブレンディング方程式は、各色コンポーネン
ト及びそれの対応する付加係数に関して、個別に評価される。4つのR,G,B
,Aコンポーネントの各々は、それぞれの付加要素を有する。
【0038】 ブレンディング・テスト(又はブレンディング方程式)は、パイプライン状態
の一部であり、及び潜在的にすべてのポリゴンに対して変化することができるが
、より一般的には、作られたオブジェクト又はいくつかのポリゴンに対してのみ
変化するであろう。
【0039】 通常、ブレンディングが、ピクセル・オーナシップ・テスト及びステンシル・
テスト等、他のテストが通過した場合のみ、実行されるのは、検討中のピクセル
又はフラグメントが、出力に効果を有するであろう、又は有しうることが明白だ
からである。 2.4.8 ディザリング OpenGLの下で、ディザリングは、二つの色値又はインデックスの間で選
択する。RGBAモードにおいて、バイナリ・ポイントの左に、mビットを有す
る固定点値としての色コンポーネントのいずれかの値を検討し、mはフレームバ
ッファにおける前記コンポーネントに割り当てられたビットの数である;そのよ
うな各値をcと称する。各cに関して、ディザリングは、c1∈{max{0,
[c]−1,[c]}になるように、値c1を選択する。この選択は、ピクセル
のxw及びyw座標に依存してもよい。色インデックス・モードにおいて、同じ規
則が適用され、cは単一の色インデックスである。cの値は、コンポーネント又
はインデックスのいずれかに関して、フレームバッファにおいて表示可能な最大
値よりも大きくてはならない。
【0040】 多くのディザリング・アルゴリズムが可能であるが、あらゆるアルゴリズムに
よって生成されたディザリングされた値は、通常は、入力値及びフラグメントの
x並びにyウィンドウ座標にのみ依存しなければならない。ディザリングが不能
にされる時、各色コンポーネントは、対応するフレームバッファ・コンポーネン
トにあるのと同じだけのビットを有する固定点値に切り捨てられ、色インデック
スは、フレームバッファの色インデックス部分において表示可能な最も近い整数
に四捨五入される。
【0041】 ディザリングのOpenGL仕様は、OpenGL仕様書、特に149乃至1
50ページにおいて、より完全に説明されており、それは参照のためにここに採
用されている。 2.4.9 ロジコップ(Logicop) OpenGLの下で、入力フラグメントの色又はインデックス値と、対応する
場所におけるフレーム・バッファに記憶された色又はインデックス値との間に適
用される、最終の論理的オペレーションがある。論理的オペレーションの結果は
、フラグメントの(x,y)座標でのフレームバッファにおける値と入れ替わる
。例えば、:clear,set,and,noop,xor,or,nor,
nand,invert,copy,inverted and, equivalence,reverse or,reverse and,i
nverted copy,及びinverted orを含む、様々な論理的
オペレーションが、ソース(s)とデスティネーション(d)の間で実行されて
もよい。ロジコップの議論及び対応するオペレーションは、 OpenGLロジコップ実行の追加の詳細と同様に、OpenGL仕様書の15
0乃至151ページにおいて説明されている。論理的オペレーションは、書き込
みのために選択される各色インデックス・バッファに関して、又は書き込みのた
めに選択される各色バッファの各赤、緑、青及びアルファ値に関して、独立して
実行される。要求される状態は、論理的オペレーションを示す整数と、及び論理
的オペレーションが可能にされたか又は不能にされたかを示す2ビットである。
2.5 アンチエイリアシング(Antialiasing) 本明細書において、ピクセルは、表示装置の最小の、個別に制御可能なエレメ
ントのことである。しかし、画像は離散ピクセルへと量子化されるので、空間的
なエイリアスが起こる。通常のエイリアスの人為的な結果は、直線又はエッジが
、ピクセルの列を対角線に断つ時に起こる「階段(staircase)」効果である。
【0042】 いくつかのレンダリング・システムは、ピクセルをサブピクセルに分割するこ
とによって、エイリアス効果を低減させ、各サブピクセルは、個別に色付けする
ことができる。画像が表示されるべき時は、各ピクセル内のすべてのサブピクセ
ルに関する色は、前記ピクセルに関する平均的な色を形成するためにブレンドさ
れる。ピクセルごとに16までのサブピクセルを使用するレンダラは、「リアリ
ティ・エンジン・グラフィックス(Reality Engine Graphics)」、アクリー(A
keley)、SIGGRAPH93会報の109乃至116ページ、1993年8
月1−6日、コンピュータ・グラフィックス会報、年次会議シリーズ、ニューヨ
ーク、ACM SIGGRAPH、1993年出版、ソフトカバーISBN0−
201−58889−7及びCD−ROM ISBN0−201−56997−
3に記載されている(以後、アクリー参照と称する)。
【0043】 他の従来技術のアンチエイリアシング方法は、ブレンディングを実行するため
に使用されるAバッファであり(この技術も、アクリー参照に含まれる)、及び
「Aバッファ、アンチエイリアスされた隠れ面方法(Antialiased Hidden Surfa
ce Method)」、L.カーペンタ(L.Carpenter)著、SIGGRAPH1984
会議会報、103乃至108ページに記述されている(以後、カーペンタ参照と
称する)。Aバッファは、レンダリングされたポリゴンによって、ピクセルのパ
ーセント・カバレージ(percent coverage)を追跡することによって、エイリア
スを低減させるアンチエイリアシング技術である。この技術の主な欠点は、受け
入れ可能なアンチエイリアスされたポリゴンを得るために、各ピクセルにおいて
前から後ろへ(又は後ろから前へ)ポリゴンをソートする(sort)必要性である
。 2.6 コンテント・アドレッサブル・メモリ(Content Addressable Memories
) ほとんどのコンテント・アドレッサブル・メモリ(CAM)は、入力ベクトル
(input vector)とCAMに記憶されたデータ・ワード(data words)の各々と
の間で、ビット対ビットの同等性テストを実行する。この種類のCAMは、すべ
てのワードにおける対応するビットが、同等性テストに影響を与えないようにす
るために、ビット位置のマスキング(masking)をしばしば供給する。多くのク
ロック・サイクルがタスク(task)をするよう要求されるので、同等性テストを
するCAMにおけるマグニチュードの比較を実行することは、非効率的である。
CAMは、いくつかのコンピュータにおける仮想メモリ・システム内におけるト
ランスレーション・ルックアサイド・バッファ(translation look-aside buffe
r)において現在使用されている。CAMはまた、高速コンピュータ・ネットワ
ークにおいてアドレスを適合するためにも使用される。
【0044】 マグニチュード比較CAM(Magnitude Comparison CAM)(MCCAM)は、
ここでは、記憶されたデータが数として扱われるCAMとして定義され、及び演
算マグニチュード比較(すなわち、レスザン、グレーター・ザン、レス・ザン・
オア・イコール・トゥ、等)が、並行してデータ上で実行される。これは、記憶
されたデータを厳格に、数としてではなく、ビット・ベクトルとして扱う通常の
CAMと反対である。MCCAM特許は、ここに参照として含まれており、アメ
リカ合衆国特許第4,996,666号、ジェローム・F.ドュルック・ジュニ
ア(Jerome F. Duluk Jr.)の「完全な並行マグニチュード比較ができるコンテ
ント・アドレッサブル・メモリ・システム(Content-Addressable Memory Syste
m Capable of Fully Parallel Magnitude Comparisons)」、1991年2月2
6日付与(以後、ドュルック特許と称する)である。特定的に参照されるドュル
ック特許の中の構造は、「ドュルック特許」という接頭語を含む(例えば、「ド
ュルック特許MCCAMビット・サーキット」)。
【0045】 MCCAMの基本的な内部構造は、ワードに編成された一組のメモリ・ビット
であり、各ワードは、記憶されたデータと入力データとの間の一つ以上の演算マ
グニチュード比較を実行することができる。通常は、MCCAMに関して、数の
ベクトルが、並行して一列のワードに適用される時、すべてのワードにおけるす
べての演算比較は並行して起こる。そのような並行探索比較オペレーションは、
記憶されたデータの「クエリ(query)」と称される。
【0046】 ここに記載された発明は、クロック・サイクルごとにすべてのクエリの結果を
出力し、及び追加の出力を形成するために、これらの出力クエリ結果ビットを論
理的に「オアする(or)」能力を含む、様々な特性を加えることによって、MC
CAMの機能を増補する。 (発明の開示) 本発明の特徴の概観−トップ・レベル・サマリ(Top Level Summary) コンピュータ・グラフィックスは、コンピュータでピクチャ(picture)や画
像を生成する技術及び科学である。このピクチャ生成は一般的にレンダリングと
称される。例えば、3次元アニメーション(animation)における動きの外観は
、画像のシーケンス(sequence)を表示することによって達成される。対話式3
次元(3D)コンピュータ・グラフィックスは、ユーザに、自らのビューポイン
トを変え、又はリアルタイムでジオメトリを変えさせ、それによって、レンダリ
ング・システムが、リアルタイムで稼動中の新しい画像を生成することを要求す
る。それゆえに、高品質の画像とともに、色におけるリアル・タイム・パフォー
マンスは、次第に重要になっている。
【0047】 本発明は、新しいグラフィックス・プロセッサ及び方法のためのものであり、
専用サブシステム、サブプロセッサ、装置、アーキテクチャ(architecture)、
及び対応するプロシージャを含む、多くのサブストラクチャを含む。本発明の実
施形態は、ディファード・シェーディング、タイルド・フレーム・バッファ(ti
led frame buffer)、及び複数段階隠れ面除去処理の一つ以上を、他の構造及び
/又はプロシージャと同様に、含んでもよい。本明細書において、このグラフィ
ックス・プロセッサは、以後DSGP(ディファード・シェーディング・グラフ
ィックス・プロセッサ(Deferred Shading Graphics Processor))又はDSG
Pパイプラインと称されるが、パイプラインと称されることもある。
【0048】 本発明は、DSGPパイプラインの多くの実施形態を含む。本発明の実施形態
は、フォン・シェーディング、サブピクセル・アンチエイリアシング、及びハー
ドウェアにおけるテクスチャ並びにバンプ・マッピングを、高性能3Dグラフィ
ックスに供給するよう設計されている。DSGPパイプラインは、性能を犠牲に
することなく、これらの洗練された特性を供給する。
【0049】 DSGPパイプラインは、例えば、可能なインターフェースの選択肢の中でも
、アドバンスド・グラフィックス・ポート(AGP(Advanced Graphics Port)
)及び/又はPCIバス・インターフェース(bus interface)に限定されない
が、それらを含む、様々な可能なインターフェースを介して、コンピュータに接
続することができる。VGA及びビデオ出力も通常は含まれる。本発明の実施形
態は、OpenGL及びDirect3D APIの両方をサポートする。Op
enGLグラフィックス・システム:仕様書(バージョン1.2)(The OpenGL
Graphics System: A Specification (Version 1.2))」、マーク・シーガル(M
ark Segal)及びカート・アクリー(Kurt Akeley)著、ジョン・リーチ(Jon Le
ech)編、という題名のOpenGL仕様書が、参照のために含まれる。
【0050】 ディファード・シェーディング・グラフィックス・パイプラインのいくつかの
例示的な実施形態又はバージョンが、ここに記載されている。 3.1 ディファード・シェーディング・グラフィックス・パイプラインのバー
ジョン ディファード・シェーディング・グラフィックス・パイプラインのいくつかの
バージョン又は実施形態が、ここに記載されており、及び特性の様々な組み合わ
せを有する実施形態が実行されてもよい。さらに、本発明の特性は、他の特性か
ら独立して、実行されてもよい。上述の重要な特性のほとんどは、DSGPパイ
プラインのすべてのバージョンに適用することができる。 3.1.1 タイル(tiles)、スタンプ(stamps)、サンプル(samples)、及
びフラグメント(fragments) 3Dグラフィックス・プリミティブの各フレーム(シーン又はユーザ・フレー
ムとも称される)は、表示スクリーン上で、3Dウィンドウへとレンダリングさ
れる。ウィンドウは、ピクセルの四角形グリッド(rectangular grid)を含み、
及び前記ウィンドウは、タイルに分割される(以後、タイルは、16×16ピク
セルと仮定されるが、どのようなサイズでもよい)。タイルが使用されない場合
、ウィンドウは、一つのタイルであると考えられる。各タイルはさらに、スタン
プに分割される(以後、スタンプは2×2ピクセルであると仮定され、それによ
って1タイルにつき64スタンプを生むが、スタンプは、一つのタイルの中でど
のようなサイズでもよい)。各ピクセルは、一つ以上のサンプルを含み、各サン
プルは、それ自身の色値及びz値を有する(以後、ピクセルは、4つのサンプル
を含むと仮定されるが、どのような数が使用されてもよい)。フラグメントは、
特定のピクセル内のプリミティブによって覆われたサンプルの集まりである。「
フラグメント」という用語は、特定のプリミティブ及び特定のピクセル内の可視
サンプルの集まりを記述するためにも使用される。 3.1.2 ディファード・シェーディング 通常のZバッファ・レンダリングにおいて、レンダラは、各プリミティブの各
ピクセルに関して、色値(RGB又はRGBA)及びz値を計算し、新しいピク
セルのz値を、Zバッファにおける現在のz値と比較する。z値比較が、新しい
ピクセルが、フレーム・バッファにおける現存するピクセルの「前に」あること
を示す場合、新しいピクセルは、古いものを上書きする;そうでなければ、新し
いピクセルは、捨てられる。
【0051】 Zバッファ・レンダリングはよく作動し、また複雑なハードウェアを必要とし
ない。しかしながら、シーンが多くの隠れ面を含む場合、それは通常、多くの浪
費された処理努力という結果を生む。複雑なシーンでは、前記レンダラは、最終
ピクチャにおいて可視であるピクセルの10倍又は20倍のピクセルに関する色
値を計算してもよい。これは、―フォン・シェーディング又はテクスチャ・マッ
ピング等―パー・ピクセル・オペレーションの計算コストが、10倍又は20倍
にされることを意味する。1ピクセルあたりの面の数は、全体のフレームに平均
化されており、前記フレームの深度計算複雑性とよばれる。従来のzバッファー
ド・レンダラにおいて、前記深度計算複雑性は、特定のフレームをレンダリング
する時の、前記レンダラの非効率性の基準となる。 ディファード・シェーディングを実行するパイプラインにおいて、隠れ面除去
(HSR)は、あらゆるピクセル・カラリングが行われる前に完了される。ディ
ファード・シェーディング・パイプラインの目的は、最終画像(すなわち、正確
なHSR)に現れるプリミティブのみに関して、ピクセル色を生成することであ
る。ディファード・シェーディングは、一般的に、HSRが開始することができ
る前に、プリミティブが蓄積されることを要求する。不透明なピリミティブだけ
を有するフレームに関して、前記HSR処理は、すべてのピクセル内の各サンプ
ルおいて、単一の可視プリミティブを決定する。一つのサンプルに対し、可視プ
リミティブが一度決定されると、前記サンプル場所におけるプリミティブの色が
決定される。さらなる効率が、パー・サンプル色を計算するよりもむしろ、同じ
ピクセル内の全てのサンプルに関して、単一のパー・ピクセル色を決定すること
によって達成されうる。
【0052】 プリミティブの少なくともアルファ・ブレンディング(以前に参照された OpenGL仕様書に定義されたとおり)を有するフレームに関して(通常、透
明性による)、2つ以上のプリミティブによって色付けられるいくつかのサンプ
ルがある。これは、前記HSR処理が,サンプルごとの一組の可視プリミティブ
を決定しなければならないことを意味している。
【0053】 OpenGL等、いくつかのAPIにおいて、前記HSR処理は、プリミティ
ブを廃棄できる他のオペレーション(すなわち、深度テスト以外のオペレーショ
ンによる)によって複雑にされうる。これらの他のオペレーションは、:ピクセ
ル・オーナシップ・テスト、シザー・テスト、アルファ・テスト、色テスト、及
びステンシル・テスト(本明細書の別のところで記載されたとおり)を含む。こ
れらのオペレーションのいくつかは、その色に基づいてプリミティブを廃棄し(
アルファ・テスト等)、それは、前記HSR処理の後まで、ディファード・シェ
ーディング・パイプラインにおいては決定されない(これは、アルファ値が、し
ばしば、テクスチャリング処理によって生成され、ピクセル・フラグメント・カ
ラリングに含まれるからである)。例えば、通常は、より離れたプリミティブ(
一般的により大きいz値で)を不明瞭にするプリミティブは、アルファ・テスト
によって廃棄されることができ、それにより、それが前記のより離れたプリミテ
ィブを不明瞭にしないようにする。アルファ・テストを考慮しないHSRは、前
記のより離れたプリミティブを誤って廃棄するかもしれない。それゆえに、ディ
ファード・シェーディングとアルファ・テストとの間に(同様に、色テストとス
テンシル・テストとの間にも)矛盾があるかもしれない;すなわち、ピィクセル
・カラリングは隠れ面除去の後まで延期されるが、隠れ面除去はピクセル色に依
存することができる。この問題に対する簡単な解決方法は次のものを含む:1)
アルファ・テスト、色テスト、及びステンシル・テスト等、APIから非深度依
存テストを取り除くことであるが、この潜在的な解決方法は、現存するプログラ
ムが、前記ディファード・シェーディング・パイプライン上で、適切に実行する
こと妨げるかもしれない;及び2)必要とされる時のみ、前記HSR処理に、あ
る色の生成をさせることであるが、この潜在的な解決方法は、データ・フローを
かなり複雑にするであろう。それゆえ 、これらの選択のどちらも魅力がない。
3番目の選択肢は、保存性(conservative)隠れ面除去(CHSR)と呼ばれ、
本発明の構造及び方法によって供給される、重要な革新の一つである。CHSR
は本明細書の連続した節において詳細に記述されている。
【0054】 多くのAPIにおける他の複雑性は、前記深度テストを変える能力である。3
Dレンダリングについての標準的な考え方は、可視のオブジェクトが不明瞭なオ
ブジェクト(すなわち、より少ないz値で)よりも近いことを仮定し、及びこれ
は、レス・ザン深度テストによって達成される(すなわち、そのz値が他のジオ
メトリより少ないならば、オブジェクトは可視である)。しかしながら、ほとん
どのAPIは、グレーター・ザン、レス・ザン、グレーター・ザン・オア・イコ
ール・トゥ、イコール、レス・ザン・オア・イコール・トゥ、レス・ザン、ノッ
ト・イコール、及び代数的、マグニチュード、並びに論理的関係等、他の深度テ
ストをサポートする。これは、本質的に可視であるものに関する「規則を変える
」。この複雑性は 、一つのAPIが、フレーム内の深度テストを、アプリケー
ション・プログラムに変えさせることによって合成される。異なるジオメトリは
、可視性に関して徹底的に異なる規則に従ってもよい。それゆえに、異なるレン
ダリング規則を有するプリミティブのタイム・オーダが、考慮されなければなら
ない。例えば、図4に記載の実施形態において、3つのプリミティブが、それら
の個別の深度テストとともに示されている。(z次元のみが図に示されているの
で、これは一つのサンプルに対する事例と考えられてもよい。)それらがA,B
,それからCのオーダでレンダリングされる場合、プリミティブBは最終の可視
面であろう。しかしながら、前記プリミティブがC,BそれからAのオーダでレ
ンダリングされる場合、プリミティブAが最終の可視面であろう。これは、ディ
ファード・シェーディング・パイプラインがどのようにプリミティブのタイム・
オーダリングを維持しなければならないか、及び正しいパイプライン状態(例え
ば深度テスト)が各プリミティブと関連されなければならないかを示している。
3.1.3 ディファード・シェーディング・グラフィック・パイプライン、第
一の実施形態(バージョン1) 従来の3Dグラフィック・パイプラインは、図2に記載される。図4と相対的
に、本発明の3Dディファード・シェーディング・グラフィック・パイプライン
・バージョン1(以下、DSGPv1と称する)の第一の実施形態を記載する。
本発明パイプライン(図4)は、描画集約的機能231を、(1)パイプライン
状態及び各プリミティブを記述しているプリミティブ・データを記憶するための
シーン・メモリ(scene memory)250であって、図においてはシーン・メモリ
と称される;(2)正確な隠れ面除去処理251;(3)フラグメント・カラリ
ング処理252;及び(4)ブレンディング処理253に置き換えることにより
、包括的な従来のパイプライン(図2)から得られたことがわかるであろう。
【0055】 シーン・メモリ250は、それらの属性に沿って、一つのフレームに対する前
記プリミティブ・データを記憶し、及び前記フレーム全体の、パイプライン状態
の様々な設定を記憶する。プリミティブ・データはバーテックス座標、テクスチ
ャ座標、バーテックス色、バーテックス法線、等(the like)を含む。DSG
Pv1において、プリミティブ・データは、増分レンダリングに関するセットア
ップによって生成されたデータを含み、それは空間、色、及びエッジ微分(edge
derivatives)を含む。
【0056】 フレームにおけるすべてのプリミティブが、フローティング・ポイント集約的
機能213によって処理され、及びシーン・メモリ250に記憶された時、HS
R処理が始まる。前記シーン・メモリ250は、二重にバッファされ、それによ
り、フローティング・ポイント集約的機能が次のフレームで計算を実行する間、
前記HSR処理に、一つのフレーム上で計算をさせる。前記シーン・メモリはま
た三重にもバッファされうる。前記シーン・メモリはまた、前記HSR処理に関
するスクラッチパッドでもあり、前記HSR処理に関する中間結果を記憶し、す
べてのプリミティブが前記シーン・メモリに記憶される前に、前記HSR処理に
始動させる。
【0057】 前記シーン・メモリにおいて、あらゆるプリミティブは、前記プリミティブが
パイプラインに入力された時に有効であったパイプライン状態情報に関連する。
前記パイプライン状態と各プリミティブとを関連させる最も簡単な方法は、各プ
リミティブ内の全体のパイプライン状態を含むことである。しかしながら、パイ
プライン状態の多くは、ほとんどのプリミティブの間で(特に、プリミティブが
同じオブジェクトにある時)変化しないので、これは、大量の冗長な情報を導入
するであろう。前記シーン・メモリに情報を記憶するための好ましい方法は、個
別のリストを保存することである:パイプライン状態設定に対して一つのリスト
、及びプリミティブに対して一つのリストである。さらに、前記パイプライン状
態情報は多数のサブリストに分割され、各サブリストへの追加は、サブリストの
部分が変わる時のみに生じる。プリミティブを記憶するための好ましい方法は、
前記プリミティブを再生するための接続情報とともに、一連のバーテックスを記
憶することによって行われる。プリミティブを記憶するための、この好ましい方
法は、さもなければ、ポリゴン・メッシュ(polygon mesh)及びライン・ストリ
ップ(line strip)において生じるであろう冗長なバーテックスを取り除く。
【0058】 隠れ面除去が行われるDSGPv1における唯一の場所であるので、DSGP
v1に関して記述された前記HSR処理は、正確な隠れ面除去(EHSR)であ
ることが求められる。正確な隠れ面除去(EHSR)処理251は、どのプリミ
ティブが前記フレーム・バッファにおけるピクセルの最終の色に影響を与えるか
を精密に決定する。この処理はパイプライン状態における変化を表しており、そ
れは前記処理にさまざまな複雑性を導入する。これらの複雑化のほとんどは、上
述のとおり、パー・フラグメント・オペレーション(オーナシップ・テスト、シ
ザー・テスト、アルファ・テスト等)に起因する。正確な隠れ面除去が必要とさ
れないように、後述のとおり、これらの複雑性は、革新的な保存性隠れ面除去(
CHSR)処理によって解決される。
【0059】 前記フラグメント・カラリング処理は、ピクセル内の各サンプル又は各グルー
プのサンプルに関する色を生成する。これは:グロー・シェーディング、テクス
チャ・マッピング、フォン・シェーディング、及びピクセル色を生成するための
様々な他の技術を含みうる。この処理は、プリミティブのサブセクションに関す
る色を、効率良く生成できなければならないので、エッジド・ウォーク(edged
walk)232及びスパン補間234とは異なる。すなわち、一つのプリミティブ
は、部分的に可視でもよく、それゆえに、色は、そのピクセルのいくつかのみに
関して生成される必要があり、及びエッジ・ウォーク及びスパン補間は、全体の
プリミティブが色付けされなければならないことを仮定している。さらに、前記
HSR処理は、一つのプリミティブの多数の可視サブセクションを生成してもよ
く、これらは他のプリミティブの可視サブセクションの間に、早めに点在しても
よい。それゆえに、前記フラグメント・カラリング処理252は、プリミティブ
・エッジ又はx軸もしくはy軸に沿って、増分計算をする必要無く、プリミティ
ブ内の任意の場所で、色値を生成することができるであろう。
【0060】 本発明の実施形態の前記ブレンディング処理253は、ピクセルごとに単一の
色を生成するため、前記フラグメントの色を結合させる。従来のzバッファド・
ブレンド処理236に対して、このブレンディング処理253は、正確な隠れ面
除去処理251が、どのプリミティブが各サンプルにおいて可視であるかをすで
に決めているので、zバッファ・オペレーションを含まない。前記ブレンディン
ッグ処理253は、各サンプルに関して個別の色値を維持してもよく、又はサン
プル色は、全体のピクセルに関する単一の色を作るためにブレンドされてもよい
。個別の色値がサンプルごとに維持され、前記フレーム・バッファ240に個別
に記憶される場合、最終のピクセルの色は、データが、デジタル−アナログ・コ
ンバータ242へ送られると、スキャン・アウト処理の間、サンプル色から生成
される。 3.1.4 ディファード・シェーディング・グラッフィック・パイプライン、
第2の実施形態(バージョン2) DSGPv1に関して上述されたとおり、前記シーン・メモリ250は:(1
)プリミティブ・データ;及び(2)パイプライン状態を記憶する。図5に記載
の、ディファード・シェーディング・グラフィック・パイプライン260(バー
ジョン2)(DSGPv2)の第2の実施形態において、このシーン・メモリ2
50は二つの部分:空間メモリ261部分及びポリゴン・メモリ262部分に分
割される。データの分割は、単なるプリミティブ・データとパイプライン状態デ
ータへの分割ではない。
【0061】 DSGPv2において、HSRに必要な前記パイプライン状態データの部分は
、空間メモリ261に記憶される一方で、残りはポリゴン・メモリ262に記憶
される。HSRに必要なパイプライン状態の例は(例えば、前記の OpenGL仕様書に定義されているとおり)DepthFunc、 DepthMask、StencilEnable等を含む。HSRに必要でな
いパイプライン状態の例は:BlendEquation、 BlendFunc、点描パターン等を含む。特定のブレンディング機能の選択
又は識別が(例えば、R=RSS+R0(1−AS)を選択すること)、HSRに
関して必要とされない一方で、前記HSR処理は、前記プリミティブが、ブレン
ディングを受けるかを表さなければならず、それは、前記プリミティブが、ジオ
メトリに優先して、完全に遮断することができないものとして扱われることを、
一般的に意味している。同様に、前記HSR処理は、前記プリミティブがシザー
・テスト、アルファ・テスト、色テスト、ステンシル・テスト、及び他のパー・
フラグメント・オペレーションを受けるかを表さなければならない。 プリミティブ・データもまた分割される。HSRに必要なプリミティブ・デー
タの部分は空間メモリ261に記憶され、及び前記プリミティブ・データの残り
はポリゴン・メモリ262に記憶される。HSRに必要なプリミティブ・データ
の部分は、バーテックスの場所及び空間微分(すなわち、エッジに関するδz/
δx、δz/δy、dx/dy等)を含む。HSRに必要でないプリミティブ・
データの部分は、バーテックス色、テクスチャ座標、色微分(color derivative
s)等を含む。パー・フラグメント・ライティング(per-fragment lighting)が
前記パイプラインにおいて実行される場合、全体のライティング方程式は、すべ
てのフラグメントに適用される。しかし、ディファード・シェーディング・パイ
プラインにおいて、可視のフラグメントのみが、ライティング計算を必要とする
。この場合、前記ポリゴン・メモリもまた、バーテックス法線、バーテックス・
アイ座標、バーテックス面接線、バーテックス従法線、これら全ての属性の空間
微分、及び他のパー・プリミティブ・ライティング情報を含んでもよい。
【0062】 前記HSR処理の間、特に前記HSRがパー・タイル・ベースで行われる場合
、プリミティブの空間属性は繰り返しアクセスされる。前記シーン・メモリ25
0を、空間メモリ261及びポリゴン・メモリ262に分割することは総メモリ
帯域幅を低減させる効果を有する。
【0063】 増分レンダリング230に関するセットアップからの出力は、前記空間データ
分離処理263に入力され、それは、HSRに必要なすべてのデータを、空間メ
モリ261に記憶し、前記データの残りはポリゴン・メモリ262に記憶する。
前記EHSR処理264は、プリミティブ空間データ(例えば、バーテックス・
スクリーン座標、空間微分等)及びHSR(パー・フラグメント・テスティング
・オペレーションのすべての制御ビットを含む)に必要なパイプライン状態の部
分を受信する。
【0064】 可視フラグメントが前記EHSR264から出力される時、データ適合処理2
65は、前記バーテックス状態及びパイプライン状態を可視フラグメントに適合
させ、及びタイル情報はタイル・バッファ266に記憶される。前記パイプライ
ンの余りは、ピクセルへ/からのサンプル変換267、読み取り及び前記フレー
ム・バッファヘの書き込み、二重バッファMUX出力ルックアップ、及び前記フ
レームに記憶されたデータの、実際のアナログ表示装置信号値へのデジタル−ア
ナログ(D/A)変換を含む、前記スキャン・アウト処理に、主に関連する。 3.1.5 ディファード・シェーディング・グラフィック・パイプライン、第
3の実施形態(バージョン3) 図6に記載された、前記ディファード・シェーディング・グラフィクス・パイ
プライン(バージョン3)(DSGPv3)の第3の実施形態において、前記シ
ーン・メモリ250はさらに二つの部分(空間メモリ261及びポリゴン・メモ
リ262)に分割され、さらに増分レンダリング230に関するセットアップは
、データ分離の後、及び正確な隠れ面除去の前に起こる空間セットアップによっ
て置き換えられる。前記パイプラインの構造及び処理の残りは、第一の実施形態
に関して前述されたものから変化していない。 3.1.6 ディファード・シェーディング・グラフィックス・パイプライン、
第4の実施形態(バージョン4) 図7に記載の、前記ディファード・シェーディング・グラフィックス・パイプ
ライン(バージョン4)(DSGPv4)の第4の実施形態において、第3の実
施形態(図6)の正確な隠れ面除去は、保存性隠れ面除去の構造及びプロシージ
ャによって置き替えられ、及びダウンストリーム・zバッファード・ブレンド(
down-stream z-buffered blend)は前記ブレンディング・プロシージャと入れ替
わる。 3.1.7 ディファード・シェーディング・グラフィック・パイプライン、第
5の実施形態(バージョン5) 図8に記載の、前記ディファード・シェーディング・グラフィックス・パイプ
ライン(バージョン5)(DSGPv5)の第5実施形態において、正確な隠れ
面除去は第3の実施形態として使用されるが、タイリングが追加され、及びタイ
ル・ソーティング・プロシージャ(tile sorting procedure)がデータ分割の後
に追加され、及び前記読み取りは、空間セットアップの前に、タイルによる。さ
らに、最初の3つの実施形態のポリゴン・メモリは、状態メモリと置き換えられ
る。 3.1.8 ディファード・シェーディング・グラフィックス・パイプライン、
第6の実施形態(バージョン6) 図9に記載の、ディファード・シェーディング・グラフィックス・パイプライ
ン(バージョン6)(DSGPv6)の第6の実施形態において、第5の実施形
態(図8)に記載の正確な隠れ面除去は、保存性隠れ面除去に置き換えられ、及
び第5の実施形態のダウンストリーム・ブレンディングは、zバッファード・ブ
レンデイング(テスティング及びブレンディング(Testing & Blending))に置
き換えられる。いくつかの特徴を示すと、二つの部分を有するシーン・メモリ、
プリミティブ・データ分割又は分離、空間セットアップ、タイリング及びパー・
タイル処理、保存性隠れ面除去、及びzバッファード・ブレンディング(テステ
ィング及びブレンディング)を含む、本発明の構造及び方法により供給される有
益な特徴のいくつかを採用するので、この第6の実施形態は好まれる。 3.1.9 他の可能な実施形態(バージョン) 本発明のグラフィックス・パイプラインのいくつかの例示的な実施形態が記載
され、及び図4乃至9に関して記述され、ここで供給される説明の観点から、当
業者は、本発明の構造とプロシージャが、本発明の他の実施形態を供給するため
に、異なる組み合わせ及び置換によって実行されてもよく、また本発明が、ここ
で明確に識別された特定の組み合わせに限定されないことを、容易に理解するで
あろう。
【0065】 3.2 重要な革新の概観 前記パイプラインはプリミティブをレンダリングし、及び本発明は、1)三角
形、2)線 、及び3)点を含む一組のレンダリング可能なプリミティブに関し
て記述されている。3つ以上のバーテックスを有するポリゴンは前記ジオメトリ
・ブロックにおいて三角形に分割されるが、前記DSGPパイプラインは、多角
四辺形又はより多くの辺を有するポリゴンをレンダリングするため、簡単に変更
され得る。それゆえに、前記パイプラインは、一度三角形に分割されると、あら
ゆるポリゴンをレンダリングすることができるので、本発明のレンダラは、効果
的にあらゆるポリゴン・プリミティブをレンダリングする。 一定のプリミティブが影響を与えるかもしれない表示スクリーン上で3Dウィ
ンドウのどの部分かを識別するため、前記パイプラインは、描画されている前記
3Dウィンドウを、「タイル及びスタンプ」と呼ばれる一連のより小さな領域へ
分割する。前記パイプラインは、ディファード・シェーディングを実行し、そこ
では、ピクセル色は、隠れ面除去の後まで決定されない。マグニチュード比較コ
ンテント・アドレッサブル・メモリ(MCCAM)の使用は、前記パイプライン
に、隠れジオメトリ・カリング(culling)を効果的に実行させる。 3.2.1 保存性ディファード・シェーディング 本発明によって供給される中心的な考え又は発明の概念の一つは、保存性隠れ
面除去(CHSR)に関する。前記CHSRは、タイム・オーダで各プリミティ
ブを処理し、及びプリミティブが接触する各サンプルに関して、深度テスト及び
アルファ・テスト等、様々なAPI状態変数に基づいて、保存性決定がなされる
。前記CHSR処理の重要な特徴の一つは、アルファ・テスト、色テスト、及び
ステンシル・テスト等、APIからの非深度依存テストが、前記DSGPパイプ
ラインによって実行され得るとしても、色計算は、隠れ面除去の間は、実行され
る必要がないことである。
【0066】 前記CHSR処理は、サンプルごとの有限状態装置(finite state machine)
(FSM)とみなされ得る。以後、各パー・サンプルFSMはサンプル有限状態
装置(SFSM)と呼ばれる。各SFSMは、(1)z座標情報;(2)プリミ
ティブ情報(前記サンプル又はピクセルにおけるプリミティブの色を生成するた
めに必要とされるあらゆる情報);及び(3)一つ以上のサンプル状態ビット(
例えば、これらのビットは、z値又は複数のz値が正確であること又は保存力が
あることを指定することができる)を含むパーサンプル・データを維持する。サ
ンプルごとの複数のz値が容易に使用される一方で、サンプルごとの複数の組の
プリミティブ情報は高価であろう。以後、前記SFSMは、一つのプリミティブ
に関するプリミティブ情報を維持すると仮定される。次の節で記述されたとおり
、前記SFSMはまた透明性情報を維持してもよく、それは、ソートされた透明
性に関して使用される。 3.2.2 CHSR及びアルファ・テスト アルファ・テストを取り扱う前記CHSRの例として、図10乃至14、特に
図11の図を検討する。このダイアグラム(diagram)は、特定のサンプルに関
して、異なるZ座標の場所において、6つのプリミティブのレンダリング(プリ
ミティブA、B、C、D、E、及びF)を示しており、(「深度クリア」及びレ
ス・ザン(less-than)に設定された「深度テスト」で始まる)次の順序でレン
ダリングされる:プリミティブA、B、及びC(「アルファ・テスト」は不能)
;プリミティブD(「アルファ・テスト」は可能);及びプリミティブ E及び
F(「アルファ・テスト」は不能)。ZA>ZC>ZB>ZE>ZD>ZFであり、プ
リミティブAは、最大Z座標距離であることが、前記図からわかる。また、アル
ファ・テストは、プリミティブDに関して可能にされるが、他のプリミティブの
各々に関しては、不能にされることも注目される。
【0067】 前記CHSR処理は、サンプル有限状態装置(SFSM)であると考えられて
もよいことが、CHSRについての以前の記述から想起される。 アルファ・テ
ストを伴う保存性隠れ面除去処理の下で、これら6つのプリミティブを、レンダ
リングするためのステップは以下のとおりである: ステップ1:深度クリアは、各サンプル有限状態装置(SFSM)において、
次のような結果をもたらす:1)z値は最大値に初期化される;2)プリミティ
ブ情報クリアされる;及び3)サンプル状態ビットは、前記z値が正確であるこ
とを示すように設定される。
【0068】 ステップ2:プリミティブAが、SFSMによって処理される時、前記プリミ
ティブは維持され(すなわち、それは可視表面に関する現在の最適な推測である
)、及びこれは、前記SFSMに:1)近(near)z値として前記z値ZAを;
2)色プリミティブAに必要なプリミティブ情報;及び3)前記z値(ZA)は
正確なものとしてラベル付けされることを、記憶させる。
【0069】 ステップ3:プリミティブBが前記SFSMによって処理される時、前記プリ
ミティブは維持され(そのz値は、プリミティブAのそれより小さい)、及びこ
れは、SFSMに:1)「近」z値としてのz値ZB(ZAは廃棄される);2)色
プリミティブBに必要とされるプリミティブ情報(プリミティブAの情報は廃棄
される);及び3)z値(ZB)は、正確なものとしてラベル付けされることを
、記憶させる。
【0070】 ステップ4:プリミティブCが前記SFSMによって処理される時、前記プリ
ミティブは廃棄され(すなわち、それは可視表面、プリミティブBに関する現在
の最善の推測によって、不明瞭にされる)、及び前記SFSMデータは変更され
ない。
【0071】 ステップ5:プリミティブD(アルファ・テストを可能にさせる)は、前記S
FSMによって処理される時、前記プリミティブの可視性は、それがプリミティ
ブBにより近いので、及びそのアルファ値は、前記SFSMが動作する時点で不
明なので、決定されることができない。どのプリミティブが、最終的に可視(プ
リミティブB又はプリミティブDのどちらか一方)となるかに関して、決定され
ることができないので、(その色を生成させるために)プリミティブBは前記パ
イプラインに送られ、及びプリミティブDは維持される。以後、これはプリミテ
ィブBの「初期ディスパッチ(early dispatch)」と呼ばれる。プリミティブD
の処理が完了する時、前記SFSMは:1)「近」z値はZDであり、及び「遠
」z値はZBであること;2)色プリミティブDに必要とされるプリミティブ情
報(プリミティブBの情報は、初期ディスパッチを受けた)、及び3)z値は保
存可能としてラベル付けされる(なぜなら、近、及び遠の両方が、維持されてい
るので)ことを記憶する。この状態で、SFSMは、ZDより近い一つのジオメ
トリが、以前のジオメトリを不明瞭にすること、ZBより遠いジオメトリは不明
瞭にされること、及びZDとZBとの間のジオメトリは不確定になり、可視である
と見なされなければならない(従って、保存的推定がなされる)ことを決定でき
る。SFSMが保存状態にあり、それが有効なプリミティブ情報を含む時、前記
SFSM方法は、記憶されたプリミティブ情報の深度値を、近深度値と見なす。
【0072】 ステップ6:プリミティブE(アルファ・テストを不能にする)は、前記SF
SMに処理される時、前記プリミティブの可視性は、前記近及び遠z値の間(す
なわち、ZDとZBとの間)にあるので、決定されることができない。しかしなが
ら、プリミティブEは、結果的に、正しいタイム・オーダから外れて、前記Zバ
ッファド・ブレンド(好ましい実施形態におけるピクセル・ブロックの部分とし
て後述されている)に届くプリミティブ生むかもしれないので、この時点では前
記パイプラインへ送られない。それゆえに、プリミティブDは、タイム・オーダ
リングを保存するため、前記パイプラインヘ送られる。プリミティブEの処理が
完了した時、前記SFSMは:1)前記「近」z値はZDであり、及び前記「遠
」z値はZBであること(これらは変化しておらず、及びZEは維持されていない
ことに注目);2)色プリミティブE(プリミティブDの情報は、初期ディスパ
ッチを受けている)に必要とされるプリミティブ情報;及び3)前記z値は、(
近及び遠の両方が維持されているので)保存可能としてラベル付けされることを
、記憶する。
【0073】 ステップ7:プリミティブFがSFSMによって処理される時、前記プリミテ
ィブは維持され(そのz値は、近z値のそれより小さい)、及びこれは、前記S
FSMに:1)前記「近」z値としての前記z値、ZF(ZD及びZBは廃棄され
る);2)色プリミティブFに必要とされるプリミティブ情報(プリミティブE
の情報は廃棄される);及び3)前記z値(ZF)は正確なものとしてラベル付
けされることを、記憶させる。
【0074】 ステップ8:前記タイルに触れるすべてのジオメトリが処理された時(又は、
タイルがない場合には、前記フレームにおけるすべてのジオメトリが処理された
時)、あらゆる有効なプリミティブ情報が、前記パイプラインヘ送られる。この
場合、プリミティブFの情報が送られる。これはエンド・オブ・タイル(end-of
-tile)(又はエンド・オブ・フレーム(end-of-frame))ディスパッチであり
、初期ディスパッチではない。
【0075】 この例示的なCHSR処理を要約すると、プリミティブA乃至プリミティブF
が処理され、プリミティブB、D、及びFが前記パイプラインに送られた。パイ
プラインB、D、及びFの可視性を分解するために、(好ましい実施形態でのピ
クセル・ブロックにおける)zバッファド・ブレンドは、前記パイプラインの終
わり近くに含まれる。この例では、前記色プリミティブFだけが前記サンプルに
使用される。 3.2.2.1 CHSR及びステンシル・テスト 前記CHSR処理の好ましい実施形態において、すべてのステンシル・オペレ
ーションは、前記パイプラインの終わり近くで行われ(zバッファード・ブレン
ドにおいては、好ましい実施形態でのピクセル・ブロックと呼ばれる)、それゆ
えに、ステンシル値は、前記フレーム・バッファに維持されるので、それらは前
記CSHR方法に対して有効ではない。前記CHSR処理における使用のため、
前記フレーム・バッファから、前記ステンシル値が送信されることが可能である
一方、これは、一般的に処理能力を下げる長い待ち時間パス(latency path)を
必要とするであろう。OpenGL等のAPIにおいて、前記ステンシル・テス
トがアルファ・テストの後に実行され、及びアルファ・テストの結果は前記CH
SR処理に知らされないので、ステンシル値は、CHSR処理内に正確に維持す
ることができず、それは、前記ステンシル・テストヘの入力が正確にモデル化さ
れないことを意味する。さらに、レンダラは多くのフレームに対してステンシル
値を維持し(一般的に、各フレームの開始においてクリアされる深度値とは対照
的に)、及びこれらのステンシル値は、前記フレーム・バッファに記憶される。
このことすべてによって、前記CHSR処理は、ステンシル・オペレーションの
処理への従来のアプローチを利用する。プリミティブが、前記フレーム・バッフ
ァにおけるステンシル値に影響を与えることができる場合、ステンシル・オペレ
ーションは、前記深度テスト(OpenGL仕様書を参照)の前に起こるので、
前記プリミティブは常に前記パイプラインに送られる(以下、これは「Cull
FlushOverlap」と呼ばれ、及びカル・ブロックにおける信号Cul
lFlushOverlapの主張によって示される)。CullFlushO
verlapの条件は、前記SFSMを、それの最も保存力のある状態に設定す
る。
【0076】 もう一つの可能性として、前記ステンシル参照値(OpenGL仕様書を参照
)が変更され、及び前記ステンシル・テストが前記フレーム・バッファにおける
ステンシル値に基づいでサンプル値を廃棄するように可能にされ、及び構成され
る場合、前記SFSMにおけるすべての有効なプリミティブ情報が、前記パイプ
ラインに送られ(以下、これは「CullFlushAll」と呼ばれ、及びカ
ル・ブロックにおけるCullFlushAllの信号の主張よって示される)
、及び前記z値がそれらの最大値に設定される。前記ステンシル参照値を変更す
ることは、前記zバッファード・ブレンド(又はピクセル・ブロック)における
「可視性規則(visibility rule)」を有効に変えるので、この「フラッシング
(flushing)」が必要とされる。
【0077】 ステンシル・テスト(OpenGL仕様書を参照)を扱う前記CHSR処理の
一つの例として、図12に記載の図を検討する。それには、4つの特定サンプル
(対応するSFSMを有し、SFSM0乃至SFSM3にラベル付けされる)を
網羅する2つのプリミティブ(プリミティブA及びC)、及び前記4つのサンプ
ルのうちの2つを網羅する追加のプリミティブ(プリミティブB)を有する。前
記3つのプリミティブは次の順序でレンダリングされる(深度クリアで始まり、
及び深度テストはレス・ザン(less-than)に設定される):プリミティブA(
ステンシル・テストは不能);プリミティブB(ステンシル・テストは可能、及
びStencilOpは「REPLACE」に設定される。OpenGL仕様書
を参照);及びプリミティブC(ステンシル・テストは不能)である。そのステ
ップは以下のとおりである。
【0078】 ステップ1:前記深度クリアは、この例における4つのSFSMの各々におい
て、次のことを生じさせる:1)z値が最大値に初期化される;2)プリミティ
ブ情報はクリアされる;及び3)サンプル状態ビットは、前記z値が正しいこと
を示すように設定される。 ステップ2:プリミティブAが各SFSMによって処理される時、前記プリミ
ティブは維持され(すなわち、可視表面に関する最近の最善の推量になる)、こ
れは前記4つのSFSMに:1)前記近z値としての、それらの対応するz値(
それぞれ、ZA0,ZA1,ZA2,又はZA3);2)色プリミティブAに必要なプリ
ミティブ情報;及び3)各SFSMにおける前記z値は、正確なものとしてラベ
ル付けされることを記憶させる。
【0079】 ステップ3:プリミティブBが前記SFSMによって処理される時、サンプル
1及び2のみが影響され、SFSM0及びSFSM3は影響を受けないようにさ
れ、及びSFSM1及びSFSM2は、次のように更新される:1)前記遠z値
は最大値に設定され、前記近z値は最小値に設定される;2)プリミティブA及
びBに関するプリミティブ情報は、前記パイプラインに送られる;及び3)サン
プル状態ビットは、前記z値が保存可能であることを示すように設定される。
【0080】 ステップ4:プリミティブCが各SFSMによって処理される時、前記プリミ
ティブは維持されるが、前記SFSMが、同じ方法ですべてのプリミティブを処
理するとは限らない。SFSM0及びSFSM3において、前記状態は次のよう
に更新される:1)ZC0及びZC3は前記「近」z値となる(ZA0及び
A3は廃棄される);2)色プリミティブCに必要なプリミティブ情報(プリミ
ティブAの情報は廃棄される);及び3)z値は正確なものとしてラベル付けさ
れる。SFSM1及びSFSM2において、前記状態は、次のように更新される
:1)ZC1及びZC2は、前記「遠」z値になる(前記近z値は維持される);2
)色プリミティブCに必要なプリミティブ情報;及び3)前記z値は保存可能と
してラベル付けされたままである。 このCHSRの実例を要約すると、プリミティブA乃至Cは、処理されており
、すべてのプリミティブは前記パイプラインに送られたが、すべてのサンプルに
おいてではない。前記可視性を分解するために、(前記好ましい実施形態におけ
るピクセル・ブロックにおける)zバッファード・ブレンドは前記パイプライン
の終わり近くに含まれる。CullFlushOverlapが、他のものに影
響をうけさせない間に、選択されたサンプルをフラッシュ(flush)することを
説明するために、この例において多くのサンプルが示された。 3.2.2.2.CHSR及びアルファ・ブレンディング アルファ・ブレンディングは、2つのプリミティブの色を一色に結合させるため
に使用される。しかしながら、前記プリミティブは、z値の更新に関する深度テ
ストを受ける。
【0081】 アルファ・ブレンディングを扱う前記CHSRの一例として、図13を検討す
る。それは特定のサンプルに関する4つのプリミティブ(プリミティブA、B、
C、及びD)を有し、以下の順番でレンダリングされる(深度クリアで始まり、
及び深度テストはレス・ザン(less-than)に設定される):プリミティブA(
アルファ・ブレンディングは不能);プリミティブB及びC(アルファ・ブレン
ディングは可能);及びプリミティブD(アルファ・ブレンディングは不能)で
ある。そのステップは以下のとおりである: ステップ1:前記深度クリアは、各CHSR SFSMにおいて、以下のもの
をもたらす:1)z値は最大値に初期化される;2)プリミティブ情報はクリア
される;及び3)サンプル状態ビットは、z値が正確であることを示すように設
定される。
【0082】 ステップ2:プリミティブAが前記SFSMによって処理される時、前記プリ
ミティブは維持され(すなわち、それは可視表面に対する現在の最善の推測にな
る)、及びこれは前記SFSMに、1)前記「近」z値としての前記z値 ZA、;2)色プリミティブAに必要なプリミティブ情報;及び3)前記z値は正
確なものとしてラベル付けされる、ことを記憶させる。
【0083】 ステップ3:プリミティブBが前記SFSMによって処理される時、前記プリ
ミティブは維持され(そのZ値はプリミティブAのそれより小さいからである)
、及びこれは前記SFSMに:1)前記「近」z値としての前記z値ZB(ZA
廃棄される);2)色プリミティブBに必要とされるプリミティブ情報(プリミ
ティブAの情報はパイプラインに送られる);及び3)前記z値(ZB)は正確
なものとしてラベル付けされる、ことを記憶させる。レンダリング処理のこの時
点で、プリミティブBの色は、プリミティブAとブレンドされなければならない
ので、プリミティブAはパイプラインに送られる。これは、それらがパイプライ
ンに送られるときに、プリミティブのタイム・オーダを保存する。
【0084】 ステップ4:プリミティブCが前記SFSMによって処理される時、前記プリ
ミティブは廃棄される(すなわち、前記可視表面、プリミティブBに関する現在
の最善の推測によって不明瞭にされる)、及び前記SFSMデータは変更されな
い。プリミティブB及びCが透明な面としてレンダリングされる必要がある場合
、プリミティブCは、プリミティブBによって隠される。これは、プリミティブ
Bがレンダリングされている間、前記深度マスクを止めることによって達成され
る。透明性ブレンディングが正確であることに関して、前記面は、前から後ろ、
又は後ろから前のどちらかの順番でブレンドされる 深度マスクが不能にされる場合(OpenGLの仕様書を参照)、深度バッフ
ァへの書き込み(すなわち、z値をセーブすること)は実行されない;しかしな
がら、深度テストはまだ実行される。この例において、前記深度マスクがプリミ
ティブBに関して不能である場合、前記値ZBは、前記SFSMにセーブされな
い。続いて、プリミティブCは、そのz値がZAと比較されるので、可視である
と考えられる。
【0085】 本例、CHSR処理を要約すると、プリミティブA乃至Dは処理されており、
すべてのプリミティブは前記パイプラインに送られるが、すべてのサンプルにお
いてではない。前記可視性を分解するために、(好ましい実施形態におけるピク
セル・ブロックにおける)zバッファード・ブレンドは、前記パイプラインの終
わり近くに含まれる。CullFlushOverlapが、他のものに影響を
受けさせない間に、選択されたサンプルをフラッシュ(flush)することを説明
するために、この例において、多くのサンプルが示された。 3.2.2.3 CHSR及びグレーター・ザン深度テスト 前記保存性隠れ面除去プロシージャの実行は、OpenGL等、他の標準AP
Iとの互換性を有利に維持する。多くのAPIにおける一つの複雑性は、深度テ
ストを変更する能力であることが想起される。3Dレンダリングの標準的な考え
方は、可視オブジェクトが不明瞭なオブジェクトより近いことを仮定しており、
及びこれは“レス・ザン(less-than)”深度テストを選択することによって達
成される(すなわち、そのz値が他のジオメトリ“より小さい”場合、オブジェ
クトは可視である)ことが想起される。しかしながら、ほとんどのAPIは:グ
レーター・ザン、レス・ザン、グレーター・ザン・オア・イコール・トゥ、イコ
ール、レス・ザン・オア・イコール・トゥ、レス・ザン、ノット・イコール等、
代数的、大きさ、及び論理的関係等、他の深度テストをサポートし、それはフレ
ーム内において変化してもよいことも想起される。これは、本来ダイナミックに
可視のもの関する「規則を変更し」、結果として、異なるレンダリング規則を有
するプリミティブのタイム・オーダが考慮されなければならない。
【0086】 本発明の保存性隠れ面除去の場合において、異なる又は追加のプロシージャは
、“グレーター・ザン”深度テストが使用される時に、他の標準APIとの互換
性を維持するため、後述の理由から有利に実行される。通常の当業者は、深度テ
ストが、グレーター・ザン・オア・イコール・トゥ、又はそうでなければ、記述
された例外を生むであろう他の機能的関係である場合、有利に使用されてもよい
ことも理解するであろう。
【0087】 従来の非ディファード・シェーダ(non-deffered shader)によって、すべて
のジオメトリ項目に関する一連の規則を実行し、及び最終のレンダリングされた
結果を調べることが、さらに注目される。比較すると、本発明のディファード・
シェーダの実施形態において、前記の従来のパラダイムは破壊される。本発明の
構造及び方法は、すべてのジオメトリの内側のすべてのピクセルに関するすべて
の色を作成又は生成する必要なく、フレーム・バッファにおける最終値に実際に
影響を与えるのは、どのジオメトリかを予想し又は予測する。原則として、前記
ジオメトリの空間的位置が調べられ、特定のサンプルに関して、zバッファにお
ける最終の色に影響を与え、それからその色のみを生成する一つのジオメトリ項
目に関して、決定がなされる。 3.2.2.4 前記CHSR処理に関するさらなる考察 サンプルは平行して処理され、及び一般的にスタンプ内のすべてのピクセルに
おけるすべてのサンプルは、平行して処理される。従って、一つのスタンプがク
ロック・サイクルごとに処理されることができる場合(及び、スタンプごとに4
つのピクセル、及びピクセルごとに4つのサンプルがある)、16のサンプルが
クロック・サイクルごとに処理される。一つの「スタンプ」が、ピクセルの数及
び一度に処理されたサンプルを定義する。このパー・スタンプ処理が通常パイプ
ラインを通され、(以前のプリミティブからの)同じスタンプが完成する前に(
すなわち、壊れたスタンプ処理が扱われないかぎり)、再度スタンプが処理され
る必要がある場合、パイプライン・ストール(pipeline stalls)がインジェク
トされる。
【0088】 必要とされる初期ディスパッチがない場合、エンド・オブ・タイル・ディスパ
ッチ(end−of−tile dispatches)のみが必要とされる。これは、一つのタイ
ルにおけるすべてのジオメトリが不透明で、及びステンシル・テスト又はオペレ
ーションがなく、可視となりうるアルファ・テストされたプリミティブがない場
合である。
【0089】 各SFSMにおけるプリミティブ情報は、すべてのプリミティブ情報が記憶さ
れるメモリヘのポインタによって置き換えられる。好ましい実施形態において後
述されるとおり、色ポインタは、ポリゴン・メモリにおけるプリミティブの情報
を示すために使用される。
【0090】 代替として、前記遠z値のみが維持され(前記近z値は維持されない)、それ
によって、データ記憶を低減させるが、前記サンプル状態ビットに、プリミティ
ブFの後に「保存」のままにするよう要求し、及びプリミティブEが、プリミテ
ィブFの前にあるか、後ろにあるかは不明であるため、プリミティブEを前記パ
イプラインへ送信させる。
【0091】 近z値及び遠z値の両方を維持することの代替として、前記遠z値のみが維持
され、それによって、データ記憶を低減させるが、サンプル状態ビットに、それ
らが「正確である」としてラベル付けされた時には、「保存」のままであること
を要求し、かつ追加のサンプルに、前記パイプラインヘ送らせる。上述の第一の
CHSRの例(アルファ・テストを含むもの)において、前記サンプル状態ビッ
トは、プリミティブFの後、“保存”のままであり、かつプリミティブEは、前
記近z値の欠如のためにプリミティブFの前にあるか、後ろにあるか不明である
ので、プリミティブEは前記パイプラインに送られる。
【0092】 スタンプを処理することは、スタンプごとのベースで、簡単にSFSMに並行
して動作させるよりも、大きな効率性を有する。スタンプはまた、パイプライン
に伝送されるデータ・パケットの数を減らすためにも使用される。すなわち、ス
タンプ内の一つのサンプルが送られる時(初期ディスパッチ又はエンド・オブ・
タイル・ディスパッチ)、同じスタンプ及び同じプリミティブ内の他のサンプル
も送られる(そのようなジョイント・ディスパッチ(joint dispatch)は、以
下、可視スタンプ・ポーション(Visible Stamp Portion)又はVSPと呼ばれ
る)。上述の第二のCHSRの例(ステンシル・テストを含むもの)において、
4つのサンプルすべてが同じスタンプにある場合、サンプル1及び2の初期ディ
スパッチは、サンプル0及び3の初期ディスパッチを起こす。このことが、より
多くのサンプルをパイプラインに送らせ、及び色計算の量を増加させているよう
に見せる一方で、それは(一般的に)最終的な増加ではなく、むしろ色計算にお
ける最終的な減少を起こす。これは、ピクセル内における空間的コヒーレンス(
すなわち、同じピクセル内のサンプルは、ともに可視であるか、又はともに隠さ
れている傾向にある)、及びアルファ・テスト、色テスト、ステンシル・テスト
、及び/又はアルファ・ブレンディングを有するポリゴンのエッジが、他の空間
的にコヒーレントなスタンプを潜在的に分割する傾向によるものである。すなわ
ち、計算ロードをそれほど増加させないときに、追加のサンプルをパイプライン
に送ることは、送られる必要のあるVSPの総数を減らすことによって、十分に
相殺される。上述の第二のCHSRの例において、すべてのサンプルが同じスタ
ンプの中にある場合、同じ数のVSPが生成されるであろう。
【0093】 アルファ・テストの場合、プリミティブに関するアルファ値が、バーテックス
におけるアルファ値からのみ(テクスチャリング等、他の場所からではない)生
じる場合、簡単にされたアルファ・テストが全体のプリミティブに関して行われ
ることができる。すなわち、バーテックス処理ブロック(後の節においてGEO
と呼ばれる)は、いつバーテックス・アルファ値の補間が、アルファ・テストを
通過し、及び前記プリミティブに関しては、アルファ・テストを不能にすること
を保証されるか、決定することができる。
【0094】 フレームは深度クリアで始まらない場合、(SFSMそれらの最も保存性のあ
る状態に設定される(近z値は最小であり、遠z値は最大である)。
【0095】 好ましい実施形態において、CHSR処理は、カル・ブロックにおいて実行さ
れる。 3.2.3 パイプライン状態情報を含む、タイルによるハードウェア・ソーテ
ィング 本発明の構造及び方法において、タイム・オーダが各タイル内に保存され、パ
イプライン状態情報のタイム・オーダの保存を含むことが注目される。クリアな
パケットも使用される。本発明の実施形態において、ソーティングは、ハードウ
ェアにおいて実行され、及びRAMBUSメモリは、有効に一つのバーテックス
のデュアロクト記憶を可能にする。ソートされた透明性モードに関して、保証さ
れた不透明ジオメトリ(すなわち、より遠いジオメトリを不明瞭にすることで知
られるジオメトリ)が、第一のパス(pass)におけるソート・メモリから読み取
られる。次のパスにおいて、前記ジオメトリの残りは、各連続のパスにおいて一
度読み取られる。好ましい実施形態において、タイル・ソーティング方法は、ソ
ート・ブロックにおいて実行される。
【0096】 すべてのバーテックス及び関連モード・パケット又は状態情報パケットは、タ
イム・オーダ線形リストとして記憶される。プリミティブによって接触される各
タイルに関して、ポインタは、前記プリミティブを完成させる前記線形リストに
おけるバーテックスに加えられる。例えば、三角形プリミティブは、3バーテッ
クスによって定義され、及びポインタは、前記三角形プリミティブを完成させる
ために、前記線形リストにおける(第三の)バーテックスに加えられるであろう
。第三のバーテックスよりも、第一のバーテックスを使用する他の体系は、代替
的に実行されてもよい。
【0097】 基本的に、ポインタは、プリミティブにおける他のバーテックスを見つけるた
めの十分な情報とともに、前記プリミティブにおけるバーテックスの一つを指す
ために使用される。これらのプリミティブを読み取る時間には、プリミティブ全
体が、バーテックス及びポインタから再構築されうる。各タイルは、バーテック
スを指し、及び前記リストからの前記プリミティブの再生を可能にするポインタ
のリストである。このアプローチによって、すべてのプリミティブを記憶するこ
とが可能になり、一つのバーテックスを他のプリミティブを共有し、さらに各バ
ーテックスを一度記憶するだけのものも可能になる。
【0098】 本発明のプロシージャの一つの実施形態において、タイルごとに一つのリスト
が維持される。リストにはプリミティブを記憶しないが、代わりに、リストは、
前記プリミティブへのポインタを記憶する。これらのポインタは、実際には前記
プリミティブの一つを指し、及びそれは前記プリミティブにおけるバーテックス
の一つへのポインタであり、及び前記ポインタは、同じプリミティブにおける他
のバーテックスを探すために十分な情報も含む。このソーティング構造は、三つ
の記憶構造、データ記憶装置、タイル・ポインタ記憶装置、及びモード・ポイン
タ記憶装置を具備する構造を使用して、ハードウェアにおいて有効に実行される
。一定のタイルに関しては、処理されている特定のタイルに接触するプリミティ
ブのタイム・オーダ・シーケンスを再生するが、前記タイルに接触しないプリミ
ティブを無視することが、目的である。以前に前記モードを引き出し、それらを
個別に記憶したが、ここでは、前記モード・パケットを、正しい場所で、このプ
リミティブの流れに導入したい。さらに、前記モード・パケットは、前記プリミ
ティブを処理するために必要であり、それは一つ以上のタイルをかぶせるので、
単に、前記モード・パケットを一つのステージにおいて引き出し、それからそれ
を他のステージにおいて再導入するだけでは十分ではないことが注目される。そ
れゆえに、前記モード・パケットは、適切な時に、関連するタイルのすべてと再
度、関連付けされなければならない。
【0099】 一つの単純なアプローチは、モード・パケットへのポインタを、すべてのタイ
ル・リストに書き込むことであろう。このリストの連続した読み取りの間、モー
ド・パケット・アドレスにアクセスし、及び適切なモード・データを読み取るこ
とが簡単であろう。しかしながら、このアプローチは、すべての前記タイルへの
ポインタを書き込むことに関連するコストのために、不利である。本発明のプロ
シージャにおいて、各タイルの処理中、適切なタイル・ポインタ・リストからの
エントリを読み取り、及び前記バーテックスに関するモード・データを読み取っ
ており(フェッチしており)及びそれを送った場合、データ記憶装置からバーテ
ックスを単に検索し、それをパイプラインに送信する;しかしながら、前記モー
ド・データが、タイル・ポインタ・リストにおいて、検索された最終のバーテッ
クスと、次のシーケンシャル・バーテックスとの間で変化していた場合でも、バ
ーテックスが到着する時に、適切なモード・データが入手可能になるように、前
記モード・データは、データ記憶装置からフェッチされ、次のバーテックスが送
られる前に、パイプラインに送られる。前記モード・ポインタ・リストにおける
エントリは、どのバーテックスで前記モードが変化するかを識別することが注目
される。一つの実施形態において、前記モード・ポインタにおけるエントリは、
前記モード・データが関連する第一のバーテックスを記憶するが、しかしながら
、前記モード・データが適用される最終バーテックスの記憶等、代替的なプロシ
ージャが、不変の規則に従う限り、使用されうる。 3.2.4 DSGPオペレーションの二つのモード DSGPは、二つの個別のモードで動作することができる:1)タイム・オー
ダ・モード(Time Order Mode)、及び2)ソーテッド・トランスペアレンシー
・モード(Sorted Transparency Mode)である。タイム・オーダ・モードは上述
されており、及び特定のタイル内に、同じ時制のシーケンスのプリミティブを保
存するように設計される。ソーテッド・トランスペアレンシー・モードは、すぐ
後述される。好ましい実施形態において、パイプライン・オペレーティング・モ
ードの制御は、ソート・ブロックで実行される。
【0100】 ソート・ブロックは、モード・エクストラクション装置(MEX)とセットア
ップ(STP)装置との間のパイプラインに配置される。ソート・ブロックは、
第一に、ディスプレイ・ウィンドウに散りばめられたジオメトリを取るために、
及びそれをタイルにソートするために、動作する。ソート・ブロックはまた、ソ
ート・メモリを管理し、それはあるモード情報とともに、ラステライズされる前
に、シーン全体からすべてのジオメトリを記憶する。ソート・メモリは、バーテ
ックス及びモードの二重バッファされたリストを具備する。一つのページは、シ
ーンのジオメトリを集める(バーテックスごと及びモードごと)一方で、他のペ
ージは、そのジオメトリ(プリミティブごと及びモードごと)を、残りのパイプ
ラインに送っている。
【0101】 ソート・メモリにおけるページが書き込まれている時、バーテックス及びモー
ドは、それらがソート・ブロックによって受信されると、ソート・メモリへと順
番に書き込まれる。ページが、ソート・メモリから読み取られる時、前記読み取
りは、タイルごとのベースで行われ、及び前記読み取り処理は、二つのモード:
(1)タイム・オーダ・モード、及び(2)ソーテッド・トランスペアレンシー
・モードで動作する。 3.2.5 タイム・オーダード・モード(Time-Ordered Mode) タイム・オーダード・モードにおいて、バーテックス及びモードのタイム・オ
ーダは、各タイル内に保存され、一つのタイルは、水平及び垂直に区切られたデ
ィスプレイ・ウィンドウの一部である。保存されたタイム・オーダによって、一
定のタイルに関して、バーテックス及びモードは、それらが書き込まれたのと同
じオーダで、読み取られる。 3.2.6 ソーテッド・トランスペアレンシー・モード(Sorted Transparenc
y Mode) ソーテッド・トランスペアレンシー・モードにおいて、各タイルの読み取りは
、複数のパスに分割され、第一のパスにおいて、保証された不透明ジオメトリは
、ソート・ブロックから出力され、及び連続したパスでは、潜在的に透明なジオ
メトリは、ソート・ブロックから出力される。各ソーテッド・トランスペアレン
シー・モードパス内で、タイム・オーダリングが保存され、及びモード・デート
(mode date)は、その正しいタイム・オーダの場所に挿入される。ソーテッド
・トランスペアレンシー・モードは、後ろから前へ、又は前から後ろへの順番で
実行されてもよい。好ましい実施形態において、ソーテッド・トランスペアレン
シー方法は、ソート・ブロック及びカル・ブロックによって、共同して実行され
る。 3.2.7 複数ステップの隠れ面除去 従来、隠れ面は、「正確な」隠れ面除去プロシージャか、又はzバッファを使
用して除去される。本発明の構造及び方法の一つの実施形態において、2ステッ
プ・アプローチが実行され、(1)「保存性」隠れ面除去は、(2)zバッファ
・ベースのプロシージャが続く。異なる実施形態において、3ステップ・アプロ
ーチ:(1)特定の空間的カル・プロシージャ、(2)保存性隠れ面除去、及び
(3)zバッファが実行される。保存性隠れ面除去(conservative hidden surf
ace removal)(CHSR)の様々な実施形態は、すでに本開示の他の部分で説
明された。 3.2.8 パイプライン状態保存及びキャッシング 各バーテックスは、色ポインタを含み、及びバーテックスが受け取られると、
前記色ポインタを含む前記バーテックスは、ソート・メモリ・データ記憶装置に
記憶される。色ポインタは、バーテックス・データの色部分を含むポリゴン・メ
モリ・バーテックス記憶装置におけるある場所へのポインタである。素材ライテ
ィング・モード(Material-Lighting-Mode)(MLM)ポインタ・セットは、ス
トリップ(strip)又は(fan)のいずれかのバーテックスのすべてに関連する。
MLMは、後述のとおり、6の主なポインタに加え、2つの他のポインタを含む
。前記6の主なポインタの各々は、ポリゴン・メモリ状態記憶装置へのアドレス
を具備し、それはパイプラインにおいて変化した状態のすべて、例えば、テクス
チャ、ピクセル、ライティング等における変化のすべての逐次記憶装置であり、
将来のいつかに必要性が生じる時に、MLMポインタを探索し、及びポリゴン・
メモリ状態記憶装置に戻り、及びその時存在した状態を見つけることによって、
バーテックスと関連するMLMポインタから、バーテックス(又は一つ以上のバ
ーテックスから形成されるオブジェクト)をレンダリングするために必要とされ
る状態を再生することができる。
【0102】 モード・エクストラクション・ブロック(MEX)は、時制的にオーダされた
状態変化データを集め、前記状態をポリゴン・メモリに記憶し、及びそれがソー
ト・メモリに渡すバーテックス・データへの適切なポインタを添付する、ジオメ
トリとソートとの間の論理的ブロックである。通常のOpenGLパイプライン
において、及びソート・ブロックまでの本発明のパイプラインの実施形態におい
て、ジオメトリ及び状態データは、それがパイプラインに送られた順番で処理さ
れる。素材タイプ、ライティング、テクスチャ、モード及び点描に関する状態変
化は、それらに続くプリミティブに影響を与える。例えば、各新しいオブジェク
トは、前記オブジェクトに関する素材パラメータを設定するために、状態変化に
よって先行されるであろう。
【0103】 本発明のパイプラインにおいて、他方では、フラグメントは、カル・ブロック
の後に、タイル・オーダでパイプラインに送られる。モード・インジェクション
・ブロックは、タイム・オーダの代わりに、空間的(タイル)オーダでデータを
処理するパイプラインの部分における状態をどのように保存するのか、明らかに
する。ジオメトリ・データに加えて、データ・エクストラクション・ブロックは
、モード・データ(cull_mode)のサブセットを、カルによる使用のた
めに、パイプラインに送る。Cull_modeパケットは、ジオメトリ・ブロ
ックで生成される。モード・エクストラクション・ブロックは、ジオメトリ・パ
ケットにおける適切な色ポインタを挿入する。
【0104】 パイプライン状態は、以下のように、記憶装置を最小限にするために、いくつ
かのカテゴリ(category)に分けられる:(1)空間的パイプライン状態は、す
べてのバーテックスを変えるソートに向けられたデータを含む;(2) Cull_mode状態は、頻繁には変わらない(ソートを介して)カルに向け
られたデータを含む;(3)色は、すべてのバーテックスを変えるポリゴン・メ
モリに向けられたデータを含む;(4)素材は、各オブジェクトに関して変化す
るデータを含む;(5)テクスチャAは、テクスチャ0及び1に関するテクスチ
ャ・ブロックに関する第一の組の状態を含む;(6)テクスチャBは、テクスチ
ャ2乃至7に関するテクスチャ・ブロックに関する第二の組の状態を含む;(7
)モードは、ほどんと変化しないデータを含む;(8)ライトは、フォンに関す
るデータを含む;(9)点描は、ポリゴン点描パターンに関するデータを含む。
素材、テクスチャ、モード、ライト、及び点描データは、集合的に(素材、ライ
ト、及びモードに関する)MLMデータと称される。状態保存に関するMLMポ
インタに特に関心が持たれる。
【0105】 状態変化情報は、プリミティブ(空間的及び色パケット)が現れるまで、ME
Xに蓄積される。その時、最後のプリミティブ以来、変化したMLMデータは、
ポリゴン・メモリに書き込まれる。色データも、MLMデータへの適切なポイン
タとともに、ポリゴン・メモリに書き込まれる。空間的データは、ポリゴン・メ
モリへのポインタ(色ポインタ)とともに、ソートに送られる。色及びMLMデ
ータは、すべてポリゴン・メモリに記憶される。これらのレコードに関する空間
の割り当ては、性能を向上させるために、マイクロ・アーキテクチャ定義におい
て最適化されうる。
【0106】 これらのレコードのすべては、ポインタを介してアクセスされる。ソート・メ
モリにおける各プリミティブ・エントリは、ポリゴン・メモリにおける対応する
色エントリへの色ポインタを含む。色ポインタは、点、線又は三角形を構築し、
及びMLMポインタを配置することができるようにする色アドレス、色オフセッ
ト、及び色タイプを含む。色アドレスは、プリミティブにおける最終バーテック
スを指す。バーテックスは、順番に記憶されるので、一つのプリミティブにおけ
るバーテックスは、三角形ファンの場合を除いて、隣接する。色オフセットは、
色アドレスから、このバーテックス・リストに関する第一のデュアロクト(dual
oct)に指し戻す。(点リスト、線ストリップ、三角形ストリップ、又は三角形
ファンを、バーテックス・リストとして参照する。)この第一のデュアロクトは
、バーテックス・リストにおける前記点、線、ストリップ、又はファンに関する
MLMデータへのポインタを含む。バーテックス・リストにおける、それに続く
デュアロクトは、色データ・エントリを含む。三角形ファンに関して、三角形の
三つのバーテックスは、色アドレス、(色アドレス−1)、及び(色アドレス−
色オフセット+1)にある。これは、ポインタがソート・メモリに記憶されたの
とまったくの同じ方法ではないことが注目される。
【0107】 状態は、経時的変化をするエンティティであり、及びMEXは、状態が、バー
テックス又はバーテックスの組に関して再生されることができるように、状態に
おける変化を蓄積する。MIJブロックは、ダウンストリームのバーテックスと
状態を適合させることを担う。バーテックスがMEXに入り、及び一定のインジ
ケータ・ビット(indicator bits)が設定される時はいつも、パイプライン状態
情報のサブセットがセーブされる必要がある。完全な状態は、状態への蓄積的な
変化から生成されることができるので、変化した状態のみが記憶され、すべてが
記憶されるのではない。素材、テクスチャA、テクスチャB、モード、ライト、
及び点描に関する6のMLMポインタは、個別の状態情報への最近の変化が記憶
されるアドレス場所を識別する。これらの状態の一つにおける各変化は、メモリ
に記憶された、順番にオーダされた状態記憶装置リストの最後で、追加のエント
リによって識別される。有効に、すべての状態変化が記憶され、及び時間におけ
るある点(又はバーテックスの受信)に対応する特定の状態が必要とされる時、
前記状態は、前記ポインタから再構築される。
【0108】 セーブされるモードのこのパケットは、モード・パケットと称されるが、前記
フレーズ(phrase)は、レンダリングの前に、MIJによって検索され又は再構
築されるより大きなセットのモード・データと同様に、記憶されるモード・デー
タ変化を参照するために使用される。
【0109】 特に、全体の状態は、比較的小さな色ポインタに維持される情報から再生され
ることができることが注目される。
【0110】 ポリゴン・メモリ・バーテックス記憶装置は、色部分のみを記憶する。ポリゴ
ン・メモリは、隠れ面除去に必要とされないパイプライン状態の部分を記憶し、
及び隠れ面除去には必要とされないバーテックス・データの部分(主に、色を作
るために必要とされる項目)も記憶する。 3.2.9 テクセル再使用検出及びタイル・ベースド処理 本発明の構造及び方法は、テクスチャ・マップの複数の層(解像度)のトリリ
ニア・マッピング(trilinear mapping)を有効に利用してもよい。
【0111】 テクスチャ・マップは、AGPインターフェースを使用して、ホスト・コンピ
ュータのメモリからロードされた単一バッファされたメモリを通常具備してもよ
いテクスチャ・メモリに記憶される。例示的な実施形態において、単一のポリゴ
ンは、4つまでのテクスチャを使用することができる。テクスチャは、ミップ・
マップされる。すなわち、各テクスチャは、異なるレベルのディテール又は解像
度で、一連のテクスチャ・マップを具備し、各マップは、アイ・ポイントからの
一定の距離におけるテクスチャの外観を表してもよい。一定のピクセル・フラグ
メントに関するテクスチャ値を生成するために、テクスチャ・ブロックは、正し
いレベルのディテールに近似するために、テクスチャ・マップからトリリニア補
間を実行する。テクスチャ・ブロックは、異方向補間等、他の補間方法を代替的
に実行することができる。
【0112】 テクスチャ・ブロックは、パー・フラグメント・ベースで、フォン・ブロック
に、補間されたテクスチャ値を(通常は、RGBA色値として)供給する。バン
プ・マップは、特殊なテクスチャ・マップを表す。色の代わりに、バンプ・マッ
プの各テクセルは、高さフィールド勾配を含む。
【0113】 複数層は、MIP層であり、及び補間は、MIP層の中及び層の間である。第
一の補間は、各層の中であり、二つの隣接する層の間を補間し、一方は要求され
るよりも大きな解像度を有し、他方は、要求されるよりも小さな解像度を有する
ので、それは最適な解像度を生成するために、3次元で実行される。
【0114】 本発明のパイプラインは、前記構造及びオペレーションが従来のキャッシュと
異なるので、テクスチャ・キャッシュ、実際にはテクスチャされた再使用レジス
タを含むテクスチャ・メモリを含む。ホストはまた、テクスチャのための記憶装
置を含み、それは通常大変大きくてもよいが、テクスチャをレンダリングするた
めに、それは、テクスチャ・メモリとも称されるテクスチャ・キャッシュへとロ
ードされなければならない。S及びTは、各VSPに関連する。トリリニアMI
Pマッピングを実行するために、必ず8のサンプルをブレンドするので、本発明
の構造は、並行して動作する、一組の8のコンテント・アドレッサブル(メモリ
)キャッシュを供給する。一つの実施形態において、前記キャッシュ識別子は、
コンテント・アドレッサブル・タグの一つであり、それが、前記キャッシュのタ
グ部分と、及び前記キャッシュのデータ部分が、前記タグ又はインデックスから
別個に配置されている理由である。従来、タグ及びデータは、前記タグのクエリ
が前記データを与えるように、共に配置される。本発明の構造及び方法において
、前記タグ及びデータは分割され、及びインデックスは、パイプラインに送られ
る。
【0115】 前記データ及びタグは、異なるブロックに記憶され、及びコンテント・アドレ
ッサブル・ルックアップは、アドレスのルックアップ又はクエリであり、及びそ
れ自身における前記アドレスに記憶された「データ」並びに異なるブロックに記
憶される実際のデータを参照するインデックスでもある。前記インデックスによ
って参照されたデータが、決定されることができるように、前記インデックスは
決定され、及びパイプラインに送られる。すなわち、前記タグは一つの場所にあ
り、前記テクスチャ・データは第二の場所にあり、及び前記インデックスは、前
記二つの記憶装置構造の間にリンクを供給する。
【0116】 本発明の一つの実施形態において、テクセル再使用検出レジスタ(Texel Reus
e Detection Register)(TRDR)は、複数の関連メモリを具備し、それは通
常テクセル・インターポレータ(texel interpolator)と同じ集積回路上に配置
される。好ましい実施形態において、テクセル再使用検出方法は、テクスチャ・
ブロックにおいて実行される。
【0117】 従来の3Dグラフィックス・パイプラインにおいて、空間上のある方向のオブ
ジェクトがレンダリングされる。前記オブジェクトは、その上にテクスチャ・マ
ップを有し、及び多くの三角形プリミティブによって表示される。ソフトウェア
で実行されるプロシージャは、特定のオブジェクト・テクスチャを、DRAMに
ロードするように、ハードウェアに命令する。前記特定のオブジェクトに共通で
あり、同じテクスチャ・マップを有する三角形のすべては、前記装置に送り込ま
れ、及び特定のオブジェクトを表示するために必要な色付きピクセルのすべてを
生成するために、テクスチャ補間が実行される。前記オブジェクトが色付けされ
た時、DRAMにおけるテクスチャ・マップは、前記オブジェクトがレンダリン
グされたので、破壊されうる。(おそらく異なる方向又は場所にある)複数の同
一のオブジェクト等、同じテクスチャ・マップを有する一つ以上のオブジェクト
がある場合、そのタイプのオブジェクトのすべては、DRAMにおけるテクスチ
ャ・マップが廃棄される前に、望ましくはテクスチャされてもよい。異なるジオ
メトリが送り込まれてもよいが、同じテクスチャ・マップは、すべてに関して使
用されることができ、それによって、ホスト・メモリからテクスチャ・マップを
繰り返し検索し、それを一時的に一つ以上のパイプライン構造に配置する必要を
排除する。
【0118】 より複雑な従来の体系において、一つ以上のテクスチャ・マップが検索され、
及びメモリに記憶されてもよく、例えば、二つ又はいくつかのマップが、利用可
能なメモリ、テクスチャ・マップのサイズ、複数のテクスチャ・マップを記憶し
または維持する必要性、及び管理体系の複雑性によって、記憶されてもよい。こ
れら従来のテクスチャ・マッピング体系、空間的オブジェクトのコヒーレンス(
coherence)の各々は、第一の重要性を有する。少なくとも単一のオブジェクト
全体に関して、及び通常は同じテクスチャ・マップを使用するオブジェクトのグ
ループに関して、前記オブジェクトを形成する三角形のすべては、ともに処理さ
れる。フレーズ空間コヒーレンシー(coherency)は、前記オブジェクトからの
三角形が空間で接続され、それゆえに空間的にコヒーレント(coherent)である
ので、そのような体系に適用される。
【0119】 本発明のディファード・シェーダ構造及び方法において、このタイプの空間的
オブジェクト・コヒーレンスからのかなりの利益に、必ずしも依存し又はそれを
引き出さない。本発明のディファード・シェーダの実施形態は、代わりにタイル
上で動作する。全体のタイルに対する空間的オブジェクト・コヒーレンスが、通
常は存在しないように、一定のタイルは、オブジェクト全体、複数のオブジェク
ト、いくつかの全体のオブジェクト、又はいくつかのオブジェクトの部分を有す
る。
【0120】 本発明の構造及び方法は、ディファード・シェーダに向けられているので、従
来の概念は完全に壊れる。タイルが、偶然に全体のオブジェクトを有する場合で
も、通常は異なるバックグラウンドがあり、及び前記タイルが、ある程度の空間
的コヒーレンシーをサポートする場合でも、本発明のカル・ブロック及びカル・
プロシージャは、通常完全に混乱し及び空間的にインコヒーレント(incoherent
)なオーダでVSPを生成し及び送信する。その結果、パイプライン及びテクス
チャ・ブロックは、有効に、リアルタイムで稼動中のテクスチャ・マップを変え
ることができ、及び受信されたオブジェクト・プリミティブ(例えば三角形)に
要求されるテクスチャに応答する。たった今受信された特定のオブジェクト・プ
リミティブ(例えば単一の三角形)を処理するために、及び次の異なるオブジェ
クト・プリミティブが、異なるテクスチャ・マップを必要とする時に、前記テク
スチャを廃棄するために、ホストからテクスチャ・マップを繰り返し検索するた
めの要求は、控えめに言っても問題があり、迅速なオペレーションを妨害するで
あろう。
【0121】 本発明の構造及び方法において、かなり大きいメモリがカード上にサポートさ
れる。一つの実施形態において、128メガバイトが供給されるが、それ以上又
はそれ以下のメガバイトが供給されてもよい。例えば、ユーザの必要性、メモリ
のためのカード上で利用可能なリアル・エステート(real estate)、及び利用
可能なメモリの密度によって、34Mb、64Mb、256Mb、512Mb、
又はさらに多くが供給されてもよい。
【0122】 すべての可視フラグメントに関して8テクセルを読み取り、それらを使用し、
及び次のフラグメントのための8テクセルが検索され及び記憶されることができ
るように、それらを廃棄するよりもむしろ、本発明の構造及び方法は、それらが
再度必要とされる妥当な可能性がある時に、それらを記憶し及び再使用する。
【0123】 可視フラグメントが受信されるたびに、8テクセルを読み取り及び廃棄するこ
とは、実用的でない。それよりも、タイル空間を進む場合には、同じテクスチャ
・マップが連続するピクセルに必要とされない一方で、同じテクスチャ・マップ
が、前記タイルのある領域においてクラスタにされた(clustered)いくつかの
ピクセルに必要とされ、ゆえに、第一の使用の後、いくつかの処理ステップのみ
を必要とするように、前記タイル内のピクセル・グリッド(通常は、長方形タイ
ル・ピクセル・グリッドにおける連続した列に沿って処理される)が来るので、
これらのテクセルを再使用することが望ましい。望ましくは、本発明は、繰り返
し読み取られたテクセルを使用するので、それを必要とし、それを読み取り、及
び特定のテクスチャ・マップを要求する一つのフラグメントを見た可能性が十分
であり、同じタイルにいる間に、後のある時間帯に、可能性が十分であることを
知っている時、同じテクスチャを必要とする同じオブジェクトからの、他のフラ
グメントに遭遇するであろう。それゆえに、このキャッシュにそれらのものをセ
ーブし、それから稼動中に、必要とするものをキャッシュ(テクスチャ再使用レ
ジスタ)から探索する。キャッシュ・ミス(cache miss)がある場合、例えば、
フラグメント及びテクスチャ・マップが初めて遭遇した場合、前記テクスチャ・
マップは検索され、及びキャッシュに記憶される。
【0124】 テクスチャ・マップ検索待ち時間は、他の問題ではあるが、ファースト・イン
・ファースト・アウト(First-In-First-Out)(FIFO)データ構造の使用及
び予見的又は予言的な検索プロシージャの使用を通して扱われる。FIFOは大
きく、CAMと関連して動作する。項目が必要とされる時、それがすでに記憶さ
れたかについて決定がなされ、及びデジグネータ(designator)も、キャッシュ
・ミスがある場合に、情報を検索し及びそれを記憶するために、比較的遅いメモ
リに出ることができるように、FIFOに配置される。いずれの場合も、データ
がキャッシュにあり、又はそれがホスト・メモリから検索された場合、装置メモ
リに(また、新しく検索された場合には、キャッシュにも)配置される。
【0125】 効果的に、(実際の使用の前に)一度テクスチャへの必要性が識別されると、
前記データは、必要とされる前に検索され及び再関連付けされることができるよ
うに、前記検索が処理を遅らせないように、一種の遅延(delay)として動作す
る。FIFO待ち行列は、常に予報し及び先を見るように、パイプラインにおけ
るスラック(slack)を供給し、及び取り上げる。FIFOを調べることによっ
て、読み取りが実行される時に、それが使用のために準備できているように、非
キャッシュ・テクスチャが識別され、ホスト・メモリから検索され、キャッシュ
及び特別な装置メモリに配置されることができる。
【0126】 予見的及び予言的な検索を供給するFIFO及び他の構造が、パー・オブジェ
クト処理において通常使用される空間的オブジェクト・コヒーレンスが、我々の
パー・タイル処理において失われる時に起こる問題を避ける意味で、供給される
。本発明の構造及び方法は、オブジェクト内で、空間的コヒーレンスを利用する
ことも注目され、一つのオブジェクトにおけるすべてのピクセルが、順番に処理
される場合に、本発明は、一時的及び空間的コヒーレンスがあるという事実を利
用する。 3.2.10 パケット化データ転送プロトコル 本発明の構造及び方法は、ブロックからブロックへ、パケットで(データ及び
制御等の)情報を有効に転送する。このパケット化された通信を、パケット化デ
ータ転送と称し、及び前記パケット化されたデータのフォーマット及び/又は内
容を、パケット化データ転送プロトコル(packetized data transfer protocol
)(PDTP)と称する。前記プロトコルは、ヘッダ部分とデータ部分を含む。
【0127】 PDTPの一つの利点は、データのすべてが、ブロックからブロックへ、一つ
のバスを通して送ることができ、それによって異なるデータ・タイプのための個
別のバスに対する必要性を軽減することである。PDTPの他の利点は、情報を
パケット化することが、オーダリングを維持することに関して支援することであ
り、それは、適切なレンダリングに重要なことである。レンダリングは、パイプ
ライン状態等における変化に敏感であり、タイム・オーダ・シーケンス(time o
rder sequence)を維持することは一般的に重要であり、例えば、MIJキャッ
シュに関しては、パイプラインを下るパケットの流れの管理は、特に重要である
ことが想起される。
【0128】 バスは、効果的な順番のリンクであり、パケットは、あるタイム・オーダで順
番に到着するので、パケットの転送は、順番である。例えば、「フィル・パケッ
ト(fill packet)」がブロックで到着する場合、それは前記ブロックのFIF
Oに入り、及びVSPが到着する場合は、それも前記ブロックのFIFOに入る
。各プロセッサ・プロックは、その入力に到着するパケットを待ち、及びパケッ
トが到着すると、どのアクションを取るべきか決定するために、パケット・ヘッ
ダを見る。前記アクションは、前記パケットを前記出力に送ること(すなわち、
他のアクション又は処理をすることなく、それを渡す)か、又はそれに関して何
かをすることでもよい。パケット化データ構造及び前記パケット化データ構造の
み及びバス、FIFO又は他のバッファ又はレジスタ体系と関連した使用は、3
Dグラフィックス・システムよりも広いアプリケーションを有し、及び複数の機
能的又は処理ブロック又は装置が、相互接続され及び互いに通信する、あらゆる
パイプライン構造に適用されてもよい。パケット化転送の使用は特に、シーケン
シャル又はタイム・オーダの維持が重要である場合に有効である。
【0129】 PDTPの一つの実施形態において、各パケットは、パケット識別子又はID
及び他の情報を有する。多くの、様々な種類のパケットがあり、すべての異なる
パケット・タイプは、標準長を有し、及びパケットの種類を識別するヘッダを含
む。異なるパケットは、異なる形式及び様々な長さを有するが、各特定のパケッ
ト・タイプは、標準長を有する。
【0130】 効果的に、各ブロックは、入力においてFIFOを含み、及び前記パケットは
、FIFOを通過して流れ、関連する情報は、ブロックごとにFIFOに蓄積さ
れる。前記パケットは、前記ブロック機能に関連する情報が引き出されるように
、他の又は前記ブロックのすべてを流れ続ける。
【0131】 本発明の構造及び方法の一つの実施形態において、FIFO内の記憶セル又は
レジスタは、小さなパケットが、たった一つのFIFOを要求し、より大きいパ
ケットは、多数のレジスタ、例えば2,3,5,10,20,50又はそれ以上
のレジスタを要求してもよいように、予め決められた幅を有する。可変パケット
長及び単一のパケットが、いくつかのFIFO記憶装置レジスタを消費するかも
しれない可能性は、パケットの第一の部分がパケットの種類を識別し、及び直接
又は間接的に、パケットの種類を知ることによって、パケットのサイズ及びそれ
が消費するFIFOエントリの数を識別するので、問題を提示しない。本発明の
構造及び方法は、本明細書の他の節において説明される数多くのパケット・タイ
プを供給し及びサポートする。 3.2.11 フラグメント・カラリング フラグメント・カラリングは、2次元表示空間に関して実行され、及び例えば
、三角形プリミティブの三つのバーテックスから、表示されたピクセルのサンプ
ル化された座標への色の補間を伴う。基本的に、フラグメント・カラリングは、
前記三つのバーテックスの間に空間的に配置された場所に関する色を決定するた
めに、三つのフラグメント・バーテックスにおける色に、補間機能を適用するこ
とを伴う。通常、しかし任意に、補間を実行することに関して、透視的正確さ(
perspective correctness)を考慮するであろう。補間係数は、透視的正確係数
と同様にキャッシュされる。 3.2.12 法線の補間 様々な折衷案が、面法線、特に3Dグラフックス環境における他の面法線の間
に補間される面法線の計算と関連して、今までに受け入れられてきた。前記折衷
案は通常、計算の簡単さ又は効率に対して正確性を引き換えにしてきた。理想的
には、面法線は、角度的に補間され、前記補間が基づく面法線の角度における実
際の角度差に基づく。実際に、そのような角度計算は、3Dグラフィックス・ア
プリケーションには適していない。
【0132】 それゆえに、より典型的には、面法線は、二つの入力法線の線形補間に基づい
て補間される。質レンダリングを低く和らげるために、合成面法線の線形補間は
、十分な正確性を供給してもよい;しかしながら、2次元補間の例を検討すると
、一つのベクトル(面法線)が、例えば、他のベクトルだが、前記第一のベクト
ルへの比較可能な角度変更があるより大きなマグニチュードを有する時、その結
果のベクトルは、前記二つのベクトルの間の比較可能な角度差に関わらず、より
大きなマグニチュード・ベクトルによって、過剰に影響を受けるであろう。これ
は、異論を招くエラーを生じるかもしれず、例えば、ある面シェーディング又は
ライティング計算は、異常な結果を招き、及び出力シーンを損ねるかもしれない
【0133】 これらの問題のいくつかは、線形補間が、正規化された組のベクトルで実行さ
れる場合でも、最小化される一方で、いくつかのAPIは、例えば3座標補間、
個別のx、y及びz補間及び他の体系を含む、非正規化ベクトル及び様々な補間
体系をサポートするので、これは常に実践的であるわけではない。
【0134】 本発明の構造及び方法において、前記マグニチュードは、方向又は角度からは
別個に補間される。補間されたマグニチュードが計算され、それから同じサイズ
の方向ベクトルが計算される。別個に補間されたマグニチュード及び方向は、再
結合され、前記方向は正規化される。
【0135】 理想的な角度補間は、最大の正確性を供給する一方で、しかしながら、前記補
間は、球体の表面上の3点及び様々な大円計算に関与する。この種の数学的複雑
性は、リアルタイムの迅速なパイプライン処理には適していない。単一ステップ
の線形補間は、ずっと簡単であるが、よりエラーに敏感である。これらのプロシ
ージャの各々と比較して、本発明の面法線補間プロシージャは、従来の線形補間
よりも大きな正確性を有し、及び従来の角度補間よりも低い計算複雑性を有する
。 3.2.13 空間的セットアップ 本発明の好ましい実施形態において、空間的セットアップは、セットアップ・
ブロック(STP)で実行される。セットアップ(STP)・ブロックは、ソー
ト(SRT)・ブロックから一連のパケットを受け取る。これらのパケットは、
レンダリングされるべきプリミティブに関する空間的情報を有する。STPブロ
ックの出力は、カル(CUL)・ブロックに進む。SRTから受け取られるプリ
ミティブは、三角形、線三角形、線、点線、及び点で埋められる。これらのプリ
ミティブの各々は、エイリアス又はアンチ・エイリアス・モードでレンダリング
されうる。SRTブロックは、プリミティブをタイル・オーダでSTP(及び他
のパイプライン・ステージ・ダウンストリーム)に送る。各タイル内で、前記デ
ータはタイム・オーダ又はソートされた透明性オーダで編成される。CULブロ
ックは、タイル・オーダで(実際には、STPがSRTからプリミティブを受け
取るオーダで)STPブロックからデータを受け取り、及びレンダリングされた
画像に決してコントリビュート(contribute)しないプリミティブの部分をカル
・アウト(cull out)する。これは2つの段階で達成される。第一の段階で、そ
の内容が一定の値よりも大きい長方形メモリ・アレイにおける前記エレメントの
検出を可能にする。第二の段階は、サンプルごとの内容比較をすることによって
、この探索を改良する。STPブロックは、CULブロックによる処理のために
、入力プリミティブを準備する。STPは、第一段階のカルのために前記タイル
を交差するプリミティブの部分に関して、タイト(tight)な文字枠(bounding
box)及び最小深度値Zminを生成し、それは、Zminよりも小さい深度値
を含んでもよい文字枠におけるスタンプに印つけをする。Zカル段階は、これら
の候補のスタンプを取り、それらがプリミティブの一部である場合には、前記ス
タンプにおけるサンプルに関する実際の深度値を計算する。この、より正確な深
度値は、比較及びサンプルごとのベースでの可能な廃棄のために使用される。第
一の段階のカルに関する文字枠及び Zminに加えて、STPは、深度勾配、線スロープ、及びZカル段階に関する
タイル・エッジとの深度及びプリミティブ交差点等、他の参照パラメータも計算
する。CUL装置は、他のパイプライン段階によって使用されるVSPを生成す
る。
【0136】 本発明の好ましい実施形態において、空間的セットアップ・プロシージャは、
セットアップ・ブロックで実行される。本発明の空間的セットアップ構造及び方
法の重要な特徴は:(1)統一されたプリミティブのサポート及び生成、(2)
プリミティブに関するタイル内のZminを計算するためのプロシージャ、(3)
タイル相対y値及びスクリーン相対x値の使用、及び(4)これもダウンストリ
ーム・ハードウェアを単純化する従来のエッジ・ウォークに加えた、エッジ・ホ
ップ(edge hop)の実行(実際には、カル・ブロックで実行される)を含む。
【0137】 統一されたプリミティブの注釈のもとで、長方形になるべき線プリミティブ及
び退化した長方形になるべき三角形を検討し、各々は、数学的にそのように表示
される。セットアップは、線セグメントを、4つのバーテックスを含む平行四辺
形に変換する。一つの三角形は、三つのバーテックスを有する。セットアップは
、一組の4点を有する各プリミティブを記述する。すべての値が、すべてのプリ
ミティブに対して必要とされるわけではないことが注目される。三角形に関して
、セットアップは、三角形の方向によって、上、下、及び左又は右の角を使用す
る。線セグメントは、平行四辺形として扱われるので、セットアップは、4点す
べてを使用する。前記三角形のバーテックスが、本来のバーテックスと同じであ
る一方で、セットアップは、前記線をクワド(quads)として表示するために、
新しいバーテックスを生成する。プリミティブの統一された表示は、ウィンドウ
座標における本来の組のバーテックスに割り当てられるプリミティブ記述子を使
用する。さらに、どの記述子が有効かつ意義のある値を有するかを示すフラグが
ある。
【0138】 三角形に関して、VtxYmin、VtxYmax、VtxLeftC、Vt
xRightC、LeftCorner、RightCorner記述子が、そ
れらのy座標で三角形のバーテックスをソートすることによって得られる。線セ
グメントに関して、これらの記述子は、前記線クワド・バーテックスが生成され
る時に割り当てられる。VtxYminは、最小のy値を有するバーテックスで
ある。VtxYmaxは、最大のy値を有するバーテックスである。VtxLe
ftCは、三角形の場合における長いyエッジ(バーテックス VtxYminとVtxYmaxとを結合させることによって形成される三角形
のエッジ)の左に、及び平行四辺形に関しては、バーテックス VtxYminとVtxYmaxとを結合させることによって形成される対角線
の左に位置するバーテックスである。前記三角形が、長いyエッジも左エッジで
あるような場合、フラグLeftCornerは、VtxLeftCが無効であ
ることを示すFALSE(0)である。同様に、VtxRightCは、三角形
の場合では、長いyエッジの右に、及び平行四辺形に関しては、バーテックスV
txYminとVtxYmaxとを結合させることによって形成される対角線の
右に位置するバーテックスである。三角形が、長いエッジも右エッジである場合
、フラグRightCornerは、VtxRightCが無効であることを示
すFALSE(0)である。これらの記述子は、上及び下のタイル・エッジ上の
プリミティブのクリッピングのために使用される。実際には、VtxYmin、
VtxYmax、VtxLeftC、及び VtxRightCは、本来のプリミティブ・バーテックスへのインデックスで
あることが注目される。
【0139】 三角形に関しては、VtxXmin、VtxXmax、VtxTopC、 VtxBotC、TopCorner、BottomCorner記述子は、そ
れらのx座標によって三角形バーテックスをソートすることによって得られる。
線セグメントに関しては、これらの記述子は、前記線クアド・バーテックスが生
成される時に割り当てられる。VtxXminは、最小のx値を有するバーテッ
クスである。VtxXmaxは、最大x値を有するバーテックスである。Vtx
TopCは、三角形の場合では、長いxエッジ(バーテックス VtxXminとVtxXmaxとを結合させるエッジ)の上に、及び平行四辺
形に関しては、バーテックスVtxXminとVtxXmaxとを結合させるこ
とによって形成される対角線の上に位置するバーテックスである。前記三角形が
、長いxエッジもトップ・エッジである場合、フラグ TopCornerは、VtxTopCが無効であることを示すFALSE(0
)である。同様に、VtxBotCは、三角形の場合では、長いx軸の下、及び
平行四辺形の場合には、バーテックスVtxXminとVtxXmaxとを結合
させることによって形成される対角線の下に位置するバーテックスである。三角
形が、長いxエッジもボトム・エッジである場合、フラグ BottomCornerは、VtxBotCが無効であることを示す FALSE(0)である。これらの記述子は、左及び右のタイル・エッジ上のプ
リミティブをクリッピングするために使用される。実際には、 VtxXmin、VtxXmax、VtxTopC、及びVtxBotCが、本
来のプリミティブ・バーテックスへのインデックスであることが注目される。さ
らに、4つのポリゴン・エッジのスロープ(δx/δy)及びスロープ (δxyδx)の逆元を使用する。
【0140】 これらの記述子のすべては、多角四辺形プリミティブに関する有効値を有する
が、それらのすべてが、三角形に関して有効でなくてもよい。最初に、それは、
三角形や多角四辺形のような単純なプリミティブを記述するための多くの記述子
のように見える。しかしながら、後にわかるように、それらは、大変簡単に得る
ことができ、及びプリミティブをセットアップするための素晴らしい均一的な方
法を供給する。
【0141】 線を長方形として扱うこと(又は長方形を線として解釈することと同様)は、
空間及び幅において、二つのエンド・ポイントを特定することを伴う。三角形を
長方形として扱うことは、4点を特定することを伴い、その一つ、通常一つの特
定の実施形態におけるy左又はx右は、退化しており、特定されない。目的は、
タイルの内側のZminを見つけることである。x値は、ウィンドウ幅全体に及
びうるのに対して、y値は、タイルと相対的であるので、ビットは、y値タイル
相対座標を作ることによって、計算においてセーブされる。 3.2.14 オブジェクト・タグ 3Dシーンの有向非輪状グラフ表示は通常、シーン・グラフにおける各ノード
に、識別子を割り当てる。この識別子(オブジェクト・タグ)は、シーンにおけ
るオブジェクトの選択、可視性決定、衝突検出、及びレンダリングのための他の
統計的パラメータの生成等、グラフィカル・オペレーションにおいて有用になり
うる。レンダリングにおけるピクセル・パイプラインは、アルファ・テスト、色
テスト、ステンシル・テスト、及び深度テスト等、多くのピクセル・テストを可
能にする。アルファ及び色テストは、オブジェクトが、透明なピクセルを有する
か決定し、及び前記値を廃棄することにおいて有用である。ステンシル・テスト
は、様々な特別な効果及びCSGにおけるオブジェクト交差の決定に関して使用
することができる。深度テストは通常、隠れ面除去に関して使用される。
【0142】 本明細書において、シーンにおけるオブジェクトをタグし、及びどのオブジェ
クトが、予め決められた可視性基準のセットを通過したかに関するフィードバッ
ク(feedback)を得る方法が説明される。
【0143】 二段階オブジェクト割り当て体系が利用される。オブジェクト識別子は、二つ
の部分、グループ(g)及びメンバ・タグ(member tag)(t)を含む。グルー
プ“g”は、4ビット識別子であり(しかし、より多くのビットが使用されうる
)、シーン・グラフ・ブランチ(scene graph branch)、ノード・レベル(node
level)、又はオブジェクトをグループ分けするために使用されてもよい他のパ
ラメータをエンコードするために使用することができる。メンバ・タグ(t)は
、5ビット値である(ここでも、より多くのビットが使用されうる)。この体系
において、各グループは、32までのメンバを有することができる。32ビット
状態ワードが、各グループに関して使用される。この状態ワードのビットは、テ
スト基準を通過したメンバを示す。前記状態は:オブジェクト・グループ;オブ
ジェクト・タグ;及びTagTestID{DepthTest、 AlphaTest、ColorTest、StencilTest}を含む。
オブジェクト・タグは、パイプラインを下り、zバッファード・ブレンド(又は
好ましい実施形態におけるピクセル・ブロック)で使用される。サンプルが可視
である場合、オブジェクト・タグは、特定のCPU読み取り可能レジスタにおい
て特定のビットを設定するために使用される。これによって、オブジェクトはパ
イプラインに送り込まれ、一度レンダリングが完了すると、ホストCPU(アプ
リケーション・プログラムを実行させるCPU又は複数のCPU)は、どのオブ
ジェクトが、少なくとも部分的に可視であったかを決定することができる。
【0144】 代替例として、メンバ・タグ(t)だけが、使用されることができ、一つのグ
ループのみを意味する。
【0145】 オブジェクト・タグは、ピッキング(picking)、透明性決定、初期オブジェ
クト廃棄、及び衝突検出のために使用することができる。初期のオブジェクト廃
棄に関して、オブジェクトは、レンダリング・パイプラインへのその境界ボリュ
ーム入力を有することによって、可視性に関してテストすることができ、及び上
述のとおり「可視性」に関してテストすることができる。しかしながら、境界ボ
リュームが、フレーム・バッファにレンダリングされるのを阻止するために、色
、深度及びステンシル・マスクはクリアされる(これらのマスク・ビットの説明
に関するOpenGL仕様書を参照)。 3.2.15 単一の可視性ビット 上述のオブジェクト・タグへの代替例として、単一のビットが、ホストCPU
へのフィードバックとして使用することができる。この方法において、「可視性
」(すなわち、ピッキング、透明性決定、初期オブジェクト廃棄、衝突検出等)
に関してテストされているオブジェクトは、それ自身のフレームにおいて隔離さ
れる。フレームにおいてすべてが可視である場合、前記単一の「可視性ビット」
が設定され、そうでなければ、クリアされる。このビットは、ホストCPUによ
って読み取り可能である。この方法の効果は、その単純性である。欠点は、テス
トされる必要がある各個別のオブジェクト(又は一組のオブジェクト)に関して
、個別のフレームを使用する必要性であり、それによっておそらく「可視性」決
定に待ち時間を導入する。 3.2.16 スーパータイル・ホップ・シーケンス(Supertile Hop Sequence
) 3D画像をレンダリングする時、しばしば「ホリゾン効果(horizon effect)
」があり、画像(ピクチャ)の水平スワス(horizontal swath)は、画像の残り
よりもより多くの複雑性を有する。一例は、前景における単純な草原及び上方に
空を有する、遠くの都市のスカイライン(skyline)である。草原及び空は、ほ
とんどポリゴンを有しない(おそらく一つずつ)一方で、都市は、多くのポリゴ
ンを有し、大きな深度計算複雑性を有する。そのようなホリゾン効果は、シーン
を通して非水平スワスに沿っても起こりうる。タイルが、単純な、上から下へ、
及び左から右への順番で処理される場合、複雑なタイルは、背中合わせで向かい
合い、パイプライン内で可能なロード不均衡を生む。それゆえに、タイルからタ
イルへ移動する時、スクリーン周辺で無作為に「ホップする(hop)」方が良い
であろう。しかしながら、これは、(隣接するタイルが順番に処理されないため
に)空間的コヒーレンシーの低減を生じ、パイプライン内のキャッシュの効率性
を低減させ、及び性能を低下させる。空間的なシーケンシャル・タイル処理及び
全体的な無作為パターンの妥協案として、タイルは「SuperTiles(ス
ーパータイルズ)」へと編成され、各SuperTileは、多くの空間的に隣
接するタイルであり、SuperTilesの不作為のパターンが処理される。
このように空間的コヒーレンシーは、SuperTile内で保存され、ホリゾ
ン効果は回避される。好ましい実施形態において、 SuperTileホップ・シーケンス方法は、ソート・ブロックで実行される
。 3.2.17 スキャンアウト中の正規化 出力中の正規化(normalization)は、フレーム・バッファにおける値を決定
するための、従来の処理ヒストリを考慮し、又はフレーム・バッファにおける値
が決定される本発明のプロシージャであり、及びスクリーンにおける値の範囲は
、前記値の範囲が表示されることができ及び所望のビューイング特性を供給する
ことができる範囲に基準化され又は正規化される。線形及び非線形スケーリング
が適用されてもよく、及びダイナミックな範囲が、いくつかの比較的明るい又は
暗いピクセルによって過度に占められないように、クリッピングも許可されても
よく、前記ダイナミックな範囲は、デジタル−アナログ・コンバータ(digital-
to-analog converter)の変換範囲に合致する。
【0146】 出力ピクセル値が生成される方法の知識は、このアプローチの効果に関してさ
らに大きな見識を与える。時に、出力ピクセル値が、強度又は明るさを表すのは
、それらが最終的に、現実世界におけるシーンの明るさ又は強度をシミュレート
し(simulate)又は表すための方法で表示されるからである。
【0147】 効果的に、ピクセル色は、それらが大変広いダイナミックな範囲に及ぶように
、フローティング・ポイント数によって表される。適切であるが、ディスプレイ
に一度基準化された整数値は、後に再スケーリングを許可するために、出力強度
が計算される、一定の方法で、十分な範囲を供給しないかもしれない。Open
GLを含む標準APIの下では、光は、座標距離と同様に、フローティング・ポ
イント値として表される。それゆえに、従来の表示では、使用可能なディスプレ
イのダイナミックな範囲を廃棄し又は浪費して、シーンがすべて黒く(暗く)又
はすべて白く(明るく)又は特定の明るさ範囲へと傾斜して出てくることは、比
較的簡単である。
【0148】 本発明の正規化プロシージャの下で、計算は、フローティング・ポイント表示
全体において好ましく維持され、及び最終シーンは、出力表示及びD/Aコンバ
ータ・ケイパビリティ(capability)と一致したピクセル強度値をもたらすため
に、スケーリング・ルーチンを使用して、マッピングされる。そのような、表示
装置へのスケーリング又は正規化は、範囲の圧縮もしくは拡張、線形圧縮もしく
は拡張、対数圧縮、指数もしくはパワー拡張、他の代数もしくは多項マッピング
機能、又はこれらの組み合わせなしに、ある範囲の値の、異なる範囲の値へのオ
フセット(offset)又はシフト(shift)等のオペレーションに関与してもよい
。代替的には、任意のマッピング転送機能を有するルックアップ・テーブルは、
出力値強度変換を実行するために実行されてもよい。それがなされる時に画像(
ピクチャ)を表示するために、バッファ・スワップする時に、対数的に(又は他
に)スキャンアウト中にスケールする。
【0149】 望ましくは、前記変換は、一組の予め決められた規則の下で、自動的に実行さ
れる。例えば、正規化に基づいてピクセル・ヒストグラム(pixel histogram)
を特定する規則が実行されてもよく、又はピクセルのガウス分散(Gaussian dis
tribution)を特定する規則、又はある任意の強度クリッピングで、あるいはそ
れなしで、出力強度を線形にスケールする規則が実行されてもよい。ここに示さ
れた様々なマッピング機能は、コンピュータ・グラフィックス及びデジタル画像
処理分野において公知である多くの入力/出力ピクセル強度変換の単なる例であ
る。
【0150】 このアプローチは、ライティング、オブジェクトの色、等を特定するにあたり
、いくらか大きな余地も許し、及び可視であった最終出力をレンダリングする。
最終結果が、審美的に完璧でなかったとしても、それは最終マッピングをチュー
ニングするための基礎を供給し、及び対話型調整が、好ましいが任意に、デバッ
ギング(debugging)、ファイン・チューニング(fine-tuning)、又はセットア
ップ・オペレーション(set-up operation)として供給されてもよい。 3.2.18 スタンプ・ベースz値記述 VSPが送られる時、それは単一のプリミティブに対応し、及びzバッファー
ド・ブレンド(すなわちピクセル・ブロック)は、VSPにおけるすべてのサン
プルに関する個別のz値を必要とする。VSP内のすべてのパー・サンプルz値
を送ることに対する改良として(それは、かなりの帯域幅を取る)、前記VSP
は、z参照値及びx並びにyに関してzの部分的導関数(数学的には、プリミテ
ィブのz値に関する平面方程式)を含みうる。それから、この情報は、パー・サ
ンプルz値を再構築するために、zバッファード・ブレンド(すなわちピクセル
・ブロック)において使用され、それによって帯域幅を省く。CHSR処理のた
めに計算されたz値が、zバッファード・ブレンド(すなわちピクセル・ブロッ
ク)におけるコンピュータと同じになるように、注意が払われなければならない
のは、不一致がレンダリング・エラーを生じうるからである。
【0151】 好ましい実施形態において、スタンプ・ベースz値記述方法は、カル・ブロッ
クにおいて実行され、及びパー・サンプルz値は、ピクセル・ブロックにおける
この記述から生成される。 3.2.19 フォン・ブロックにおけるオブジェクト・ベース・プロセッサ・
リソース・アロケーション(Object-based Processor Resource Allocation) フォン・ライティング・ブロックは、効果的に、複数のプロセッサ又は処理エ
レメントを含む。フラグメント色生成の間、多くの状態が必要とされ、共通オブ
ジェクトからのフラグメントは、同じ状態を使用し、それゆえに、好ましくは、
キャッシング要求を最小化する少なくとも効率的な理由から、同じオブジェクト
からのフラグメントは、同じプロセッサによって処理される。
【0152】 本発明の構造及び方法において、同じオブジェクトから由来するすべてのフラ
グメントは、同じプロセッサに送信される(又は、同じ複数のプロセッサにロー
ドするサーバがある場合)。これは、フォン・ブロックにおける状態キャッシン
グを低減させる。
【0153】 本発明の構造及び方法の好ましい実施形態は、パー・タイル処理を実行し、及
び単一の時間は、複数のオブジェクトを含んでもよいことを想起させる。フォン
・ブロック・キャッシュは、それゆえに、通常は一つ以上のオブジェクトに関す
る状態を記憶し、及び適切な状態を、共通オブジェクトからのフラグメントを扱
っているプロセッサに送信する。特定のオブジェクトからのフラグメントに関す
る状態が、特定のプロセッサに送信されると、前記オブジェクトからのすべての
他のフラグメントも、前記プロセッサに向けられるのが好ましい。
【0154】 これに関して、モード・インジェクション装置(Mode Injection Unit)(M
IJ)は、オブジェクト又は素材を割り当て、及びMIJは、すべてのダウン・
ストリーム・ブロック(down stream blocks)にキャッシュを割り当てる。フォ
ン装置は、どのオブジェクト・データが、どのフォン装置プロセッサにキャッシ
ュされたかを追跡し、及び同じオブジェクトに属するすべてのフラグメントを、
同じプロセッサに注ぎ込むよう試みる。これに関する唯一の任意の例外は、局所
的不均衡がある場合に生じ、その場合、フラグメントは他のプロセッサに割り当
てられるであろう。
【0155】 このオブジェクト・タグ・ベースのリソース割り当て(代替的には、前記記述
のほかの部分において、素材・タグ・ベースのリソース割り当てを指す)は、フ
ォン装置において、フラグメント・プロセッサ又はフラグメント・エンジンと相
対して生じる。 3.2.20 パイプライン状態としてのダイナミック・マイクロコード生成 フォン装置は、テクスチャ環境計算を実行し、及びオブジェクトからのフラグ
メントを処理するための特定の処理エレメントを選択することを担当する。上述
のとおり、共通オブジェクトからのフラグメントを、同じフォン・プロセッサ又
はエンジンに向けるための試みがなされる。適用されるべき特定のテクスチャ、
面、色等のプロパティから独立して、多くの選択肢があり、その結果として処理
環境における変化がある。ダイナミック・マイクロコード生成(dynamic microc
ode generation)は、テクスチャ環境及びライティングに関連して説明され、本
発明の構造及びプロシージャは、他の種類のマイクロコード、マシン状態、及び
処理に、通常、より幅広く適用されてもよい。
【0156】 本発明の構造及び方法において、三角形ストリップの処理が開始されるたびに
、変更素材パラメータが生じ、又はテクスチャ環境に触れるほとんどの変更が生
じ、フォン装置におけるマイクロコード・エンジンは、マイクロコードを生成し
、及びこのマイクロコードは、パイプライン状態のコンポーネントとして扱われ
る。状態のマイクロコード・コンポーネントは、他のパイプライン状態と同様に
、キャッシュされる属性である。通常、マシン状態として、特定的には3Dグラ
フィックス・プロセッサにおけるパイプライン状態として、この方法で生成され
るマイクロコードの扱いが、実質的な効果である。
【0157】 例えば、フォン装置は、複数のプロセッサ又はフラグメント・エンジンを含む
。(ここでは、フラグメント・エンジンという用語は、フラグメントのテクスチ
ャ処理を担うフォン装置におけるコンポーネントを意味し、フラグメント・ブロ
ックにおいて生じる補間とは異なる処理である。)マイクロコードは、フラグメ
ント・エンジンに入ってくる、及び同じマイクロコード(状態)を必要とするあ
らゆる他のフラグメントが、必要な時にそれを有するように、フラグメント・エ
ンジンにダウンロードされる。
【0158】 フォン・ブロックにおけるフラグメント・エンジンの各々の実施形態は、一般
的に同じであるが、ダウンロード可能なマイクロコードの存在は、ある程度の専
門化を与える。異なるマイクロコードは、どのようにMIJキャッシング・メカ
ニズムが動作するのかに依存する各々に、ダウンロードされてもよい。ダイナミ
ックなマイクロコード生成は、テクスチャ環境及びライティングに供給される。
3.2.21 可変スケール・バンプ・マップ(Variable Scale Bump Maps) 可変スケール・バンプ・マップを生成することは、二つの個別のプロシージャ
:自動ベース生成及び自動勾配フィールド生成のうちの一つ又は両方に関与する
。グレイ・スケール画像及びその強度空間におけるデリバティブ(derivative)
を検討する。自動勾配フィールドは、グレイ・スケール強度と比較して、グレイ
・スケール画像のデリバティブを取り、及び前記デリバティブを、バンプ・マッ
プのためのバンプを生成するための面法線摂動として使用する。自動ベース生成
は、計算、ポリゴン・メモリにおけるメモリ記憶、及び処理における入力帯域幅
を省く。
【0159】 各三角形バーテックスに関して、s、t及び面法線が特定される。しかし、前
記s及びtは、色付きではなく、テクスチャ・マップへの2次元面法線摂動であ
り、それゆえにテクスチャ・バンプ・マップである。前記s及びtは、使用可能
なバンプ・マップを生成するために、面法線を摂動させるべき方向を特定するた
めに使用される。前記s、tは、摂動方向を特定することができる暗示された座
標システム及び参照を与える。各ピクセルにおけるs、t座標システムの使用は
、面接線及びピクセル場所(location)における従法線を特定する必要をなくす
。その結果、本発明の構造及び方法は、計算、メモリ記憶、及び入力帯域幅を省
く。 3.2.22 タイル・バッファ及びピクセル・バッファ 一組のパー・ピクセル・タイル・ステージング・バッファ(tile staging buf
fer)は、PixelOutとBKEブロックとの間に存在する。これらのバッ
ファの各々は、三つの状態ビットEmpty、BkeDoneForPix、及
びそれと関連するPixcDoneForBkeを有する。これらのビットは、
これらのバッファの使用のために、PixelOutとBackendとの間の
ハンドシェイク(handshake)を規制(又はシミュレート)する。バックエンド
及びPixelOut装置の両方は、前記装置がそこから読み取り又はそこに書
き込むステージング・バッファを示す現在のInputBuffer及びOut
putBufferポインタを維持する。
【0160】 PIXによるレンダリングするためのタイルを準備するために、BKEブロッ
クは、次のEmptyバッファを取り、及びフレーム・バッファ・メモリからデ
ータを読み込む(必要な場合には、RGBAClearMask、 DepthMask、及びStencilMaskによって決定されたとおり−
一組のビット・プレーンがクリアされない場合、それは読み込まれる)。 Backendがタイルにおける読み取りを伴ってなされた後、それは BkeDoneForPixビットを設定する。PixelOutは、 InputTileのBkeDoneForPixビットを見る。このビットが
設定されない場合、PixelOutは停止し、そうでなければ、それは BkeDoneForPixビット、及びピクセル・タイル・バッファにおける
色、深度、及び/又はステンシル・ビット・プレーン(必要であれば)をクリア
し、及びそれをサンプル・バッファに適切に転送する。
【0161】 出力時、PixelOut装置は、レンダリングされたタイルにおけるサンプ
ルを、ピクセル・タイル・バッファにおけるピクセルに分解する。バックエンド
装置(BKE)ブロックは、これらのバッファを、フレーム・バッファ・メモリ
に転送する。ピクセル・バッファは、PixelOut装置によって順番にトラ
バース(traverse)される。PixelOutは、レンダリングされたサンプル
・タイルを、それが由来する同じピクセル・バッファに放出する。前記ピクセル
・タイル・バッファに出力された前記タイルが完了した後、 PixelOut装置は、PixDoneForBkeビットを設定する。 BKEブロックは、PixDoneForBkeセットを有するピクセル・タイ
ル・バッファを取ることができ、前記ビットをクリアし、及びそれをフレーム・
バッファ・メモリに転送する。前記転送が完了した後、エンプティ(Empty)・
ビットが、前記バッファ上で設定される。 3.2.23 スキャンアウト中のウィンドウド・ピクセル・ズーミング(Wind
owed Pixel Zooming During Scanout) バックエンド装置は、データの送信を担い、及び/又はCRTあるいは他の表
示装置に信号を送信し、及び前記デジタル情報を、前記ディスプレイを駆動する
のに適したアナログ信号に変換するためのデジタル−アナログ(D/A)コンバ
ータを含む。前記バックエンドはまた、バイリニア・インターポレータ(biline
ar interpolator)も含むので、前記フレーム・バッファからのピクセルは、そ
れらがCRTディスプレイに送信される時に、前記ピクセルの空間的スケールを
変更するために、補間されうる。スキャンアウト中のピクセル・ズーミングは、
稼動中に解像をスケールし又はズーム(イン又はアウト)するレンダリングを伴
わない。一つの実施形態において、ピクセル・ズーミングは、ウィンドウごとに
選択的に実行され、ウィンドウは、全体のデスクトップ又はディスプレイ領域の
一部である。 3.2.24 スキャンアウト中の仮想ブロック転送(VBLT) 従来の構造及び方法は、オン・スクリーン(on-screen)メモリ記憶装置及び
オフ・スクリーン(off-screen)メモリ記憶装置を供給し、その各々は例えば、
色バッファ、zバッファ、及びあるステンシルを有する。3Dレンダリング処理
は、これらのオフ・スクリーン・バッファにレンダリングする。一つのスクリー
ン・メモリは、ディスプレイ上に示されるデータに対応する。オフ・スクリーン
・メモリへの前記レンダリングが完了した時、オフ・スクリーン・メモリの内容
は、ブロック転送(BLT)と称されるものにおいて、オン・スクリーン・メモ
リにコピーされる。
【0162】 メモリ帯域幅を省き、及び本明細書の他の部分で説明された他の利益を理解す
るために、本発明の構造及び方法は、データを接合し、又は他の場所からデータ
を読み取ることによって、「仮想」ブロック転送又は仮想BLTを実行する。 3.2.25 バーテックス・リストに関するトークン挿入(Token Insertion
for Vertex Lists) 本明細書におけるトークンは、パイプラインに送り込まれ、次のエントリが何
に対応するかを前記パイプラインに知らせる他の項目の間に介在した情報項目で
ある。例えば、バーテックスのx、y、z座標が、パイプラインに送り込まれ、
及びそれらが32ビットの量である場合、前記トークンは、前記パイプラインに
、次の数字がバーテックスx、y、z値であることを知らせるために挿入される
のは、識別のためのエントリそのものには、余分なビットがないからである。前
記トークンは、パイプライン・ハードウェアに、送り込まれているデータをどの
ように解釈するかを知らせる。 (発明の最良の実施形態) 4. システム・レベル概観 パイプラインは、ホスト・コンピュータのI/Oバスからデータを取り、それ
を処理し、及びそれをコンピュータのディスプレイに送信する。パイプラインは
、12のブロック、さらに三つのメモリ・ストア及びフレーム・バッファに分割
される。図15は、パイプライン1000を通るデータの流れを示す。パイプラ
インを作るブロックは、後述される。 4.1 コマンド・フェッチ及びデコード(Command Fetch and Decode)(CF
D) コマンド・フェッチ及びデコード(CFD)2000は、I/Oバスを通した
ホスト・コンピュータとの通信を扱う。それは、その入力を一連のパケットに変
換し、それをジオメトリ・ブロックに渡す。入力ストリームのほとんどは、幾何
学的データ―線、点、及びポリゴンを含む。これら幾何学的なオブジェクトの記
述は、色、面法線、テクスチャ座標等を含みうる。入力ストリームはまた、ライ
ティング、ブレンディング・モード、及びバッファ機能等のレンダリング情報も
含む。 4.2 ジオメトリ(GEO) ジオメトリブロック3000は、4つの主なタスク、すなわち:変換、すべて
のポリゴンの、三角形への分解、クリッピング及びグロー・シェーディングに必
要なパー・バーテックス・ライティング計算を扱う。
【0163】 第一に、ジオメトリ・ブロックは、入力グラフィックス・プリミティブを、統
一座標空間(「ワールド空間」)に変換する。それは、プリミティブをビューイ
ング・ボリューム、又は錘台にクリッピングする。ビューイング・ボリューム(
左、右、上、下、前及び後ろ)を定義する6面に加えて、DSGPパイプライン
は、6のユーザ定義可能クリッピング面を供給する。クリッピング後、ジオメト
リ・ブロックは、三つ以上のバーテックスを有するポリゴンを、処理を簡潔にす
るために、三角形の組に分割する。
【0164】 最後に、フレームにグロー・シェーディングがある場合、ジオメトリ・ブロッ
クは、グラグメント・ブロックが、シェーディングを実行するために使用するバ
ーテックス色を計算する。 4.3 モード・エクストラクション(MEX) モード・エクストラクション・ブロック4000は、データ・ストリームを二
つの部分、:1)バーテックス、及び2)他のすべてに分離する。バーテックス
は、ソート・ブロックに送られる。「他のすべて」―ライト、色、テクスチャ座
標等―は、ポリゴン・メモリと呼ばれる特別なバッファに記憶され、モード・イ
ンジェクション・ブロックによって検索することができる。ポリゴン・メモリは
、二重バッファされるので、モード・インジェクション・ブロックは、ひとつの
フレームに関してデータを読み取ることができるのに対して、モード・エクスト
ラクション・ブロックは、次のフレームに関してデータを記憶している。ポリゴ
ン・メモリに記憶されたモード・データは、3つの主なカテゴリ:パー・フレー
ム・データ(ライティング等)、パー・プリミティブ・データ(素材属性等)、
及びパー・バーテックス・データ(色等)に分類される。モード・エクストラク
ション及びモード・インジェクション・ブロックはさらに、効率性を最適化する
ために、これらのカテゴリを分割する。
【0165】 各バーテックスに関して、モード・エクストラクション・ブロックは、バーテ
ックス・データを含むパケットであるSortブロック、及びポリゴン・メモリ
へのポインタを送る。(前記ポインタは、色ポインタと称され、やや誤解を招き
やすい。なぜならば、それは色以外のすべての種類の他の情報を検索するために
使用されるからである。)前記パケットはまた、前記バーテックスが点か、線の
端点か、又は三角形の角を表すのかを示すフィールドも含む。前記バーテックス
は、厳格な時間順に送られ、それはそれらがパイプラインに送り込まれたのと同
じ順番である。前記パケットはまた、現在のバーテックスが、一定のプリミティ
ブにおける最後の一つを形成するのかを特定する(すなわちプリミティブを「完
成させる」)。三角形ストリップ又はファン、及び線ストリップ又はループの場
合、前記バーテックスは、隣接するプリミティブの間で共有される。この場合、
前記パケットは、各プリミティブにおける他のバーテックスをどのように識別す
るかを示す。 4.4 ソート(SRT) ソート・ブロック6000は、モード・エクストラクション・ブロックからバ
ーテックスを受け取り、及びその結果の点、線及び三角形を、タイルでソートす
る。二重バッファされたソート・メモリ7000において、それはグラフィック
・プリミティブを表すバーテックスのリストと、及び一組のタイル・ポインタ・
リスト―フレームにおける各タイルに一つのリストを維持する。それが、(三角
形における第三のバーテックス等)プリミティブを完成させるバーテックスを受
け取る時、どのタイルに前記プリミティブが触れるかを見るために調べる。プリ
ミティブが触れる各タイルに関して、ソート・ブロックは、前記バーテックスへ
のポインタを、前記タイルのタイル・ポインタ・リストに加える。
【0166】 ソート・ブロックが、フレームにおけるすべてのジオメトリのソートを完了し
た時、それはデータをセットアップに送る。各ソート・ブロック出力パケットは
、完全なプリミティブを表す。ソートは、その出力をタイルごとのオーダで送る
:一定のタイルに触れるすべてのプリミティブ、それから、次のタイルに触れる
すべてのプリミティブ、等である。これは、ソートが、それが触れる各タイルに
つき一回、同じプリミティブを何回も送ることを意味することが注目される。 4.5 セットアップ(STP) セットアップ・ブロック8000は、線及び三角形に関する空間的微分を計算
する。それは、1タイル分の価値を有するデータ、一度に1プリミティブを処理
する。それが一つのプリミティブで完了される時、それは前記データをカル・ブ
ロックに送る。セットアップ・ブロックはまた、点線を個別の線セグメントに分
解し(各々は、長方形領域である)、及びタイル内における各プリミティブに関
して最小z値を計算する。セットアップからの各プリミティブ・パケット出力は
、一つのプリミティブを表す:三角形、線セグメント又は点である。 4.6 カル(CUL) カル・ブロック9000は、より複雑なブロックの一つであり、及び処理は2
つのステップに分割される:マグニチュード比較コンテント・アドレッサブル・
メモリ(MCCAM)カル、及びサブピクセル・カルである。カル・ブロックは
、1タイル分の価値を有するデータを一度に受け取る。MCCAMカルは、以前
に処理されたジオメトリによって完全に隠されたプリミティブを廃棄する。サブ
ピクセル・カルは、(一部又は全体が可視である)残りのプリミティブを取り、
及び可視フラグメントを決定する。サブピクセル・カルは、可視スタンプ・ポー
ション(Visible Stamp Portion)(VSP)と呼ばれる、1スタンプ分の価値
を有するフラグメントを一度に出力する。図16は、カル・ブロックが、部分的
に不明瞭にされた三角形からどのようにフラグメントを生成するかの一例を示す
【0167】 カル・ブロックによって生成される可視スタンプ・ポーションは、複数のプリ
ミティブが前記スタンプに触れる場合であっても、たった一つのプリミティブか
らのフラグメントを含む。それゆえに、ダイアグラムにおいて、出力VSPは、
灰色の三角形のみからのフラグメントを含む。白い三角形の先端によって形成さ
れるフラグメントは、個別のVSPで送られ、及び前記二つのVSPの色は、ピ
クセル・ブロックにおいて、後に結合される。
【0168】 一つのVSPにおける各ピクセルは、ピクセルのうち、どれだけが一定のフラ
グメントによって覆われるかを決定するために、多くのサンプルに分割される。
ピクセル・ブロックは、前記ピクセルに関する最終の色を生成するために、フラ
グメントをブレンドする時、この情報を使用する。 4.7 モード・インジェクション(MIJ) モード・インジェクション・ブロック10000は、―色、素材属性等―モー
ド情報を、ポリゴン・メモリ5000から検索し、及びそれを要求のとおりに下
に送る。帯域幅を省くために、個別のダウンストリーム・ブロックは、最近使用
されたモード情報をキャッシュする。モード・インジェクション・ブロックは、
どの情報がダウンストリームにキャッシュされるのかを追跡し、必要な情報のみ
を送る。 4.8 フラグメント(FRG) フラグメント・ブロック11000は、その主な仕事が補間であるため、やや
誤解を招きやすい名前である。それは、グロー・シェーディングのための色値、
フォン・シェーディングのための面法線及びテクスチャ・マッピングのためのテ
クスチャ座標を補間する。それはまた、バンプ・マップが使用される場合、バン
プ・マッピング・アルゴリズムでの使用のために、面接線を補間する。
【0169】 フラグメント・ブロックは、重心係数を使用して、透視的な修正された補間を
実行する。 4.9 テクスチャ(TEX) テクスチャ・ブロック12000は、テクスチャ・マップを、ピクセル・フラ
グメントに適用する。テクスチャ・マップは、テクスチャ・メモリ13000に
記憶される。上述された他のメモリ記憶とは異なり、テクスチャ・メモリは単一
にバッファされる。それは、ホスト・コンピュータのメモリから、AGPインタ
ーフェースを使用してロードされる。単一のポリゴンは、4つまでのテクスチャ
を使用することができる。
【0170】 テクスチャは、ミップ・マップ(mip-mapped)される。すなわち、各テクスチ
ャは、様々なレベルのディテール(detail)において、一連のテクスチャ・マッ
プを具備し、各マップは、アイ・ポイント(eye point)から一定の距離におけ
る、テクスチャの外観を表す。一定のピクセル・フラグメントに関するテクスチ
ャ値を生成するために、テクスチャ・ブロックは、正しいレベルのディテールに
近似するように、テクスチャ・マップからトリリニア補間(tri-linear interpo
lation)を実行する。テクスチャ・ブロックはまた、異方向補間等、他の補間方
法も実行する。
【0171】 テクスチャ・ブロックは、補間されたテクスチャ値を(一般的にはRGBA色
値として)、パー・フラグメント・ベースでフォン・ブロックに供給する。バン
プ・マップは、特別な種類のテクスチャ・マップを表す。色の代わりに、バンプ
・マップの各テクセル(texel)は、高さフィールド勾配を含む。 4.10 フォン(PHG) フォン・ブロック14000は、各ピクセル・フラグメントに関するフォン・
シェーディングを実行する。それは、フラグメントの外観の色を決定するために
、モード・インジェクション・ブロックによって供給される素材及びライティン
グ情報、テクスチャ・ブロックからのテクスチャ色、及びフラグメント・ブロッ
クによって生成される面法線を使用する。バンプ・マッピングが使用される場合
、フォン・ブロックは、シェーディングの前に、フラグメントの面法線を摂動さ
せるために、テクスチャ・ブロックからの補間された高さフィールド勾配を使用
する。 4.11 ピクセル(PIX) ピクセル・ブロック15000は、VSPを受け取り、各フラグメントは個別
の色値を有する。ピクセル・ブロックは、ピクセル・オーナシップ・テスト、シ
ザー・テスト、アルファ・テスト、ステンシル・オペレーション、深度テスト、
ブレンディング、ディザリング及び論理オペレーションを、各ピクセルにおける
各サンプル上で実行する(OpenGL仕様書1.1、セクション4.1、「パ
ー・フラグメント・オペレーション(Per-Fragment Operations)」、109ペ
ージ参照)。ピクセル・ブロックが、1タイル分の価値を有する処理されたピク
セルを蓄積した時、それは、各ピクセル内のサンプルをブレンドし(それによっ
て、ピクセルのアンチエイリアシングを実行する)、及び、フレームバッファに
記憶されるべきそれらをバックエンドに送る。
【0172】 図17は、ピクセル・ブロックがどのように1スタンプ分の価値を有するフラ
グメントを処理するかを説明する。この例において、ピクセル・ブロックは、灰
色の三角形から一つ、及び白い三角形から一つ、二つのVSPを受け取る。それ
は、最終ピクセルを生成するために、フラグメントとバックグラウンド(backgr
ound)をブレンドする。それは、前記ピクセルのどれくらいをそれが覆うかに従
って、―より正確には、それが覆うサンプルの数によって、各フラグメントに加
重する。
【0173】 このブレンディングに加えて、ピクセル処理ブロックは、ステンシル・テスト
、アルファ・ブレンディング、及びピクセルのアンチエイリアシングを実行する
。それが、1タイル分の価値を有する、処理されたピクセルを蓄積する時、フレ
ームバッファに記憶されるべきそれらを、バックエンドに送る。 4.12 バックエンド(BKE) バックエンド16000は、1タイル分の価値を有するピクセルを、一度に、
ピクセル・ブロックから受け取り、それらをフレームバッファ17000に記憶
する。特定のフレームバッファ値は、フレームからフレームへと残存することが
できるので、バックエンドはまた、1タイル分の価値を有するピクセルを、ピク
セルブロックに戻す。例えば、ステンシル・ビット値は、多くのフレームに対し
て一定でありうるが、すべてのフレームにおいて使用されうる。
【0174】 フレームバッファを制御することに加えて、バックエンドは、2D描画を実行
し、及び処理されたフレームを出力装置に送る。それは、フレームバッファとコ
ンピュータ・モニタ及びビデオ出力との間でインターフェースを供給する。 4.13 パイプラインにおけるブロック間の通信 本発明の構造及び方法は、パイプラインの機能的ブロックの間の、パケット化
された通信のために供給される。これらのパケットの性質は、セクション3にお
けるオペレーションのより早い説明と同様に、個別の機能的ブロック・セクショ
ンにおいて説明される。 5 システムブロックの詳細な説明 5.1バスインタフェースブロック(AGI) AGIブロックは、ホストメモリーまたはCPUにデータを送受信するために
AGP及び/またはPCI規格に定められた全ての機能を提供する役割を担う。
本ブロックは、AGPバスと残りのチップ間の非同期境界を完全に内包していな
ければならない。AGIブロックは、PIOによるコマンドの素早い転送を可能
にするために、AGP2.0内のオプションのFast Write機能を利用する。AG
Iブロックは、CFD上のRead/Write Controller、DMAController、及びInterr
upt Control レジスタに接続されている。 5.2 コマンド取り出し及び復号化ブロック(CFD) 概要 CFDブロックは、AGPインタフェースと実際に絵を描くハードウェアとの
間に位置するユニットである。多くの制御及びデータ転送ユニットがあるが、そ
れらはほとんどまたは全く演算を行わない。CFDブロックの主な仕事は、他の
ブロックへのデータのルーティングである。2D、3D、バックエンド、及びRi
ng用のコマンド及びテクスチャは、AGPバスを通り、フロントエンドによりそ
れらを使用するユニットにルーティングされる。CFDは、いくつかのコマンド
を復号化及びアンパッキングし、AGPインタフェースを管理し、DMA転送に関
与し、コンテキストスイッチの状態を保持する。本CDFは、DSGPシステム
の最も小さな、かつ最も重要な構成品の一つである。
【0175】 図18は、CDFブロック2000内の主な機能ユニットを示すパイプライン
のブロック図である。DSGPグラフィックスシステムのフロントエンドは、A
GIブロック及びCFDブロックの二つのサブユニットに分けられている。残り
の部分は、CFDブロックのアーキテクチャの描写に関与する。AGIを参照す
るが、それらの参照は、AGIと関連のあるCFDの文脈に含まれる。 サブブロックの説明 Read/Write Control AGIがAGPまたはPCIの読み出し/書き込みトランザクションを完了す
ると、次にRead/Write Control 2014にデータを送る。書き込みの場合、本機能
ユニットは、受信したアドレスを使用してレジスタまたはその物理アドレスに対
応するキュー内にデータを多重化する(詳細はAddress Spaceを参照)。読み出
しの場合、読み出しトランザクションを完了させるために、デコーダが適切なレ
ジスタからAGIブロックへとデータを多重化する。
【0176】 Read/Write Controlは、CFDアドレススペース内の全ての可視レジスタに対し
て読み出しまたは書き込みが可能であり、2Dまたは3D Command キュー 2022、2
026に書き込みが可能であり、バックエンド・インプット・バス2036を通じて読
み出し及び書き込みの転送が可能である。
【0177】 Read/Wrote Decoderが読み出し専用レジスタまたは存在しないレジスタに対し
て書き込みを受信した場合、アクセス違反割り込みのトリガー要求を行う割り込
み発生器2016に対してメッセージを送信しなければならない。本デコーダの上記
書き込みに対する責任は消滅するが、読み出し及び書き込みは継続して受け付け
なければならない。
【0178】 Read/Write Decoderが書き込み専用レジスタまたは存在しないレジスタに対し
て読み出しを受信した場合、すぐにその読み出しトランザクションをキャンセル
しなければならない。次に、本デコーダは、Interrupt Generatorにメッセージ
を送信してアクセス違反割り込みの生成を要求する。本デコーダの上記読み出し
に対する責任は消滅するが、読み出し及び書き込みは継続して受け付けなければ
ならない。 2D Command キュー DSGPグラフィックスハードウェア用のコマンドは、種々の潜在機能を持ってお
り、ホストからバーストモードで送られて来るため、AGIと2D間で数キロバイト
のバッファリングが必要になる。本バッファは、3D用のコマンドバッファと比
較して数分の一の大きさである。このサイズは、AGIを通じてのコマンド送信速
度と2Dによる性能モードのコマンド実行の差を埋めるものでなければならない
【0179】 本キューは、オーバーランを防止する目的でフロー制御される。2D高水位レ
ジスタは、キューへの許容エントリ数がホストによってプログラミングされてい
る。このエントリ数が満たされるか超過すると、2D高水位割り込みが発生する
。ホストがこの割り込みを受け取ると、すぐに高水位割り込みを無効化し、低水
位割り込みを有効化する。キューにおけるエントリ数が2D低水位マークレジス
タ内のそれよりも少ない場合、低水位割り込みが発生する。高水位割り込みを受
信してから低水位を受信するまでの間は、ドライバーはほぼ満杯のコマンドバッ
ファへの書き込みを防止する役割を果たす。 3D コマンドキュー AGI と3D Command Decode 2034間においても数キロバイトのバッファリングが
必要になる。このサイズは、AGIを通じてのコマンド送信速度とGEOブロックによ
る性能モードのコマンド実行速度の差を埋めるものでなければならない。
【0180】 本キューは、オーバーランを防止する目的でフロー制御される。3D高水位レ
ジスタは、キューへの許容エントリ数がホストによってプログラミングされてい
る。このエントリ数が満たされるか超過すると、3D高水位割り込みが発生する
。ホストがこの割り込みを受け取ると、すぐに高水位割り込みを無効化し、低水
位割り込みを有効化する。キューにおけるエントリ数が3D低水位マークレジス
タ内のそれよりも少ない場合、低水位割り込みが発生する。高水位割り込みを受
信してから低水位割り込みを受信するまでの間は、ドライバーはほぼ満杯のコマ
ンドバッファへの書き込みを防止する役割を果たす。 3D Command Decode コマンドデコーダ2034は、3D Cmd キュー 2026 及び3D Response キュー
2028からのコマンドを読み込み、翻訳し、再フォーマットされたパケットとして
GEOブロックへの送信の役割を果たす。デコーダは、GEOブロックへのコマンド送
信またはコマンドによる変化状態のシャドーイングに先立って「急速」コマンド
に対するデータ変換を行う。3D Command Decodeは、フォーマット変換も可能で
なければならない。入力データフォーマットは、APIが許容する全てのフォーマ
ットを含む(一般的には、C言語及び他のプログラミング言語内で許容されたフ
ォーマット)。3D Command Decodeからの出力フォーマットは、ハードウェアが
処理可能なものに限られ、概ね浮動小数点または「カラー」フォーマットである
。カラーデータフォーマットの正確なビット定義は、カラーがパイプラインの残
りの部分を通じてどのように表現されるかにかかっている。 Command Decode は、 3D Command キューからのパワーアップ読み込み時に開
始する。DMAコマンドが検出された場合、コマンドデコーダは、コマンド及びデ
ータをDMAコントローラ2018に送信する。DMAコントローラは、3D応答キュ
ー内に要求されたデータの転送を開始する。次に、3D Command Decoderは、応答
キュー内のデータを正常コマンドストリームとして解釈しながら3D Response キ
ュー からのDMAコマンド内に指定されたバイト数を読み出す。本デコーダがDMA
コマンド内に指定されたバイト数の読み出しを終えると、正規のコマンドキュー
からの読み出しに戻る。3D Response キュー からの読み出しの間、全てのDMAコ
マンドは無効コマンドと想定される。
【0181】 本3Dコマンドデコーダは、無効コマンド検索の役割を果たす。あらゆる無効
コマンドの実行結果は、Invalid Command Interruptの発生に繋がる(詳細は In
terrupt Control参照)。
【0182】 3D Command Decode は、キュー内で頂点コマンドが検索された場合は、頂点パ
ケットの送信に必要な最新状態ベクターも解釈し、保存する。本デコーダはまた
、現在の「開始」(OpenGL規約参照)内の最後3つの完成された頂点及びそれらに
伴う状態を、最後に送信されてきた「開始」と同様に記憶する。コンテキスト変
換が起きた場合、3D Command Decodeは、ホストが後でコンテキストを再開する
ことにより「パイプを再準備」できるようにこれらシャドーイングされた値を読
み出せるようにする。 DMA コントローラ CFD DMA コントローラ2018は、DSGPカードへのまたは同カードからの全て
のDMAトランザクションを開始及び維持する役割を負う。DSGPは、常にあら
ゆるDMA転送のマスターであり、DMAコントローラをスレーブとして使用する必要
はない。2D Engine および3D Command DecodeがDMA コントローラのマスターの
座を競う。2DブロックのみがDMA書き込み開始が可能であるが、DMA書き込み及
びDMA読み出しの双方がサポートされている。DSGPは、常にDMAのマスターで
ある。
【0183】 DMA転送は次のように開始される。開始場所の物理アドレスを伴うDMAコマンド
及び転送バイト数が2Dまたは3Dコマンドキューに書き込まれる。本コマンド
が3D Command Decoderまたは2Dユニットにより読み出されると、データを伴う
DMA要求がDMA Controllerに送信される。2DによるDMA書き込みの場合、2Dユ
ニットがデータをWrite To Host キュー 2020に入れ始める。DMAコントローラが
先行のDMAを終えると、DMA要求を承認してデータ転送を開始する。上記DMAがDMA
書き込みである場合、コントローラは、Write To Host キューからAGIを通じ
てシステムメモリへまたはBackend Input バスを通じてフレームバッファへデー
タを送信する。DMAがDMA読み出しである場合、コントローラは、AGIを通じて
システムメモリからまたはBackend Outputバス2038を通じてバックエンドから2D
Responseキューまたは3D Responseキューへとデータを引き込む。コントローラ
が必要バイト数を転送し終えると、DMA要求を開放して要求を出したユニットが
そのCommandキューから次のコマンドを読み出せるようにする。
【0184】 AGP Logic の性能を最大限引き出せるように、DMA コントローラは、転送残量
が(Mximizing AGP Performance白書に勧告されているように) キャッシュ行よ
りも少なくなるまで非キャッシュ行整列された読み出し/書き込みを実行して(
必要ならば)トランザクションを開始し、その後キャッシュ行転送を行う。 2D Responseキュー 2D Responseキューは、2Dブロックにより開始されたDMA読み出しからのデー
タの貯蔵部である。DMA要求が送信された後は、2D Engineは 2D Response キュ
ーからの読み出し動作を行い、2D Command キュー内のコマンド同様に読み出し
た内容を扱う。制約は、DMAコマンドが応答キューに来た場合に無効コマンドと
して扱うことだけである。応答キューから現DMAコマンド内に指定されたバイト
数を読み出した後は、2D Engineは2D Commandキューからのコマンド読み出しに
戻る。 5.2.2.7 D Responseキュー 3D Responseキューは、3D Command Decodeにより開始されたDMA読み出しから
のデータの貯蔵部である。DMA要求が送信された後は、Command Decodeは3D Resp
onseキューからの読み出し動作を行い、3D Command キュー内のコマンド同様に
読み出した内容を扱う。制約は、DMAコマンドが応答キューに来た場合に無効コ
マンドとして扱うことだけである。応答キューから現DMAコマンド内に指定され
たバイト数を読み出した後は、3D Command Decodeは3D Command キューからのコ
マンド読み出しに戻る。 5.2.2.8 Write To Hostキュー ホストへの書き込みキューは、2DがDMAを通じてホストに書き込むデータを
含む。2Dは、システムメモリへのDMA転送を要求した後でホストキューをリン
グまたはBackendからのデータで満たす。この小さなバッファを持つことにより
、DMAエンジンはデータを移動するAGPの性能を最大限に引き出すことができ
る。 5.2.2.9 割り込みジェネレータ ホストとDSGPボード間の通信の最も重要な部分は割り込みによって実行さ
れる。一般に割り込みは、まれに起こる現象、および通常の動作に対する例外を
示すために使用される。ホストに対してレジスタの読み込みを許可し、生成する
割り込みの原因となる割り込みの決定を許可する2つのCauseレジスタがボード
上にある。Causeレジスタの内の一つは、リトレースのような専用割り込み用に
リザーブされ、他はカーネルにより位置付けされる一般的割り込み用レジスタで
ある。各レジスタ用に、ホストがレジスタにアクセスするために読み込む物理ア
ドレスが2つある。最初のアドレスはポーリング用であり、Interrupt Cause レ
ジスタ内のデータには影響しない。2つめのアドレスは割り込みのサービス用で
あり、読み込んだ割り込みを個別的にクリアする。次にホストは、オンの場合に
読み込みが返却する割り込みの全てをサービスする役割を負う。各Interrupt Ca
useレジスタ用に、Cause内のビットが0 p 1変換をした場合に割り込みを発生さ
せるか否かを決定するInterrupt Maskレジスタがある。
【0185】 DSGPは64個までの異なる割り込みの原因をサポートするが、その内の少
数は固定であり、他の少数は一般的原因である。下表に各原因の簡潔な説明を示
す。 5.2.2.9.1 リトレース リトレース割り込みは、1秒間に約85回から120回発生し、モニターの垂
直空白期間内の所定のポイントにおいてBackendハードウェアにより立ち上がる
。正確なタイミングは、Backend Input Bus上のレジスタの書き込み動作を通じ
てBackendユニット内へとプログラミングされる。 5.2.2.9.2 3D FIFO高水位 3D FIFO高水位割り込みは、パイプが性能モードで走行している場合はまれに
しか起きないが、3Dパイプラインがより低い性能で走行している場合は頻繁に
起こることがある。カーネルモードのドライバーは、3D Cmd Buffer内の許容エ
ントリ数を示す3D High Water Entriesレジスタをプログラミングする。バッフ
ァ内にある以上のエントリがある場合は、高水位割り込みがトリガーされる。次
にカーネルモードドライバーは、割り込みをフィールディングし、3Dバッファ
をオーバーフローさせないように書き込みを防止しなければならない。割り込み
ハンドラ内では、カーネルが高水位マークの下までパイプが一杯になっているか
をチェックする。一杯になっていない場合には、カーネルは高水位割り込みを無
効化し、低水位割り込みを有効化する。 5.2.2.9.3 3D FIFO低水位 3D FIFO低水位割り込みが有効化されると、3D FIFO内のエントリ数が 3D Low
Water Entriesレジスタ内よりも少ない場合に割り込みが発生する。本割り込み
は、3D FIFOが十分にクリアされているために安全であり、 プログラムによる3D
FIFOへの再書き込みが可能であることをカーネルに信号にて知らせる。
【0186】 5.2.2.9.4 2D FIFO高水位 2D FIFOの監視をするという点を除いては、この割り込みは3D FIFO高水位割り
込みと完全に一致している。2D FIFO高水位割り込みは、パイプが性能モードで
走行している場合はまれにしか起きないが、2Dパイプラインがより低い性能で
走行している場合は頻繁に起きることがある。カーネルモードドライバーは、2D
Cmd Buffer内で許容されているエントリ数を示す 2D High Water Entriesレジ
スタをプログラミングする。バッファ内にここに示す以上のエントリがある場合
は、高水位割り込みがトリガーされる。次にカーネルモードドライバーは、割り
込みをフィールディングし、2Dバッファをオーバーフローさせないように書き
込みを防止しなければならない。割り込みハンドラ内では、カーネルが高水位マ
ークの下までパイプが一杯になっているかチェックする。一杯になっていない場
合は、カーネルは高水位割り込みを無効化し、低水位割り込みを有効化する。 5.2.2.9.5 2D FIFO低水位 2D FIFO低水位割り込みが有効化されると、2D FIFO内のエントリ数が 2D Low
Water Entriesレジスタ内のそれよりも少ない場合に割り込みが発生する。 本割
り込みは、2D FIFOが十分にクリアされて安全であり、プログラムによる2D FIFO
への再書き込みが可能であることをカーネルに信号にて知らせる。 5.2.2.9.6 アクセス違反 存在しないレジスタに対して書き込みまたは読み出しが行われると本割り込み
がトリガーされる。 5.2.2.9.7 Invalidコマンド FIFO内にてゴミのコマンドが検索(可能ならば)された場合、またはユーザプ
ログラムにより特権コマンドがFIFO内に書き込まれた場合にこの割り込みがトリ
ガーされる。カーネルは本割り込みをフィールディングし、有害タスクを停止し
なければならない。 5.2.2.9.8 テクスチャミス 本割り込みは、テクスチャユニットがテクスチャメモリにロードされていない
テクスチャにアクセスを試みた場合に発生する。テクスチャユニットは、リング
を通じてInterrupt Causeレジスタにテクスチャ書き込みを送信し、Texture Mis
s IDレジスタに対してリング書き込みと共に本書き込みを行う。カーネルは本割
り込みをフィールディングし、どのテクスチャが失われているかを見極めるため
にTexture Miss IDレジスタを読み出し、テクスチャDMAをセットアップしてテク
スチャをダウンロード及びテクスチャTLBを更新し、その後本割り込みをクリア
する。
【0187】 5.2.2.9.9 一般的割り込み Interrupt Causeレジスタ内の他の割り込みは、一般的割り込みである。一般
的割り込みは、その割り込み番号をオンにする割り込みジェネレータに対して完
了時にメッセージを送信するコマンドを送信するソフトウェアによりトリガーさ
れる。これら割り込みは、全て2Dまたは3Dパイプラインから来てBackendユニ
ットの底部まで達する与えられたコマンドにより発生する。Backendは、専用線
を通して Interrupt Cause レジスタ(同じチップ上に存在するために、リング
の使用はオーバーキルとなる)に書き込みを送信する。 5.2 Geometry ブロック(GEO) 5.3.1 グラフィカルパイプラインポジション GEOブロックは、グラフィカルパイプラインのフロントエンドにおける最初の
演算ユニットである。本ブロックは、主に頂点座標及び法線の変形のような頂点
ごとの動作に関係する。Frontend(例:AGI及びCFDブロック)は、Graphics Har
dwareコマンドの取り出し及び復号化に関係する。Frontendは、必要な変形行列
、マテリアル、ライトパラメータ、及び他のモード設定をGEOブロックの入力レ
ジスタにロードする。GEOブロックは、変形された頂点座標、法線、生成された
及び/または変形されたテクスチャ座標、及び頂点ごとのカラーをMode Extracti
on及びSortブロックに送信する。Mode Extractionは、「カラー」データ及びモ
ードをPolygonメモリに保存する。Sortは、Tileによる頂点ごとの「空間」デー
タを構成し、それをSortメモリに書き込む。
【0188】 5.3.2 動作モード パイプラインは、その機能の、あるサブセットが使用されている場合のみ最大
性能モードで動作する。このモードでは、GEOブロックは各プリミテフィブに対
する全ての可能な動作のサブセットのみを遂行する。より多くの機能が有効な場
合、一連のさらに低い性能モードを通じてパイプラインが動作する。Geometryエ
ンジンは、非性能モード設定に対してより低い速度で原線を処理するために使用
可能な演算要素を再使用する。下記の各節に各性能モードへの機能の配置を示す
。 5.3.3 GEOブロックの機能概要 GEOブロックは、点、線、三角形、四辺形、および多角形などの形状寸法の原
線を定義する頂点上で動作する。本ブロックは、座標変形及びGouraudシェーデ
ィング動作を各頂点あたりに行う。Primitive Assemblyフェーズ中においてのみ
、本ブロックは頂点を線や三角形にグルーピングする(本ブロックは、プロセス
中において四辺形や多角形を三角形のセットへと分解する)。本ブロックは、各
原線に対して切り落とし及び表面タンジェントの生成を実行する。
【0189】 頂点座標変形 各頂点は、目標座標(Xo、Yo、Zo、Wo)のセットにより規定される。第4の座
標を追加することにより、頂点を同次の座標で表すことが可能になる。同次シス
テム内では、回転、拡大縮小、及び解釈を含む一連の変形を組み合わせてModel-
View行列と呼ばれる単一の変形行列にすることができる。頂点目標座標は、4×
4Model-View行列を掛けることにより頂点目視座標に変形することが可能である
: (Xe,Ye,Ze,We)T=MMV*(Xo,Yo,Zo,Wo)T 投影行列と呼ばれる他の行列が、クリップ座標を生じるために目視座標に適用
される。標準デバイス座標を生じるために、透視画法分割がクリップ座標上で行
われる。これらの座標をウィンドウ座標に変換するために、最終視点変形が適用
される。 (Xc,Yc、Zc,Wc)T=Mp*(Xe,Ye,Ze,We)T (Xd,Yd,Zd)T=(Xc,Yc,Zc,T/Wc) (Xw,Yw,Zw)T=(Xd,Yd,Zd)T、(Sx,Sy,Sz)T+(Ox,Oy,Oz)T フル性能モードでは、パイプラインは目視座標を保存する必要はない。従って
、パイプラインは組み合わせ行列を使用して頂点目標座標をクリップ座標に変形
する。 (Xc,Yc,Zc,Wc)T=MMVP*(Xo,Yo,Zo,Wo)T 図19にDSGPによる頂点座標の変換をまとめる。 5.3.3.2 ノーマル、タンジェント、及びバイノーマル評価 空間座標に加えて、GEOブロックは、現ノーマル、現テクスチャ座標、及び各
頂点に対する現カラーを持つことがある。ノーマルは、ライティング演算に影響
する。現ノーマルは、3次元ベクトルである(Nxo,Nyo,Nzo)。テクスチャ座標
によりテクスチャイメージの原線上の配置が決定される。
【0190】 GEOブロックは、目標座標内に表されるノーマルを受信する。本ブロックは、
逆Model-View行列を使用してノーマルを目視座標に変形する。 (Nxe,Nye,Nze)T=MMVI*(Nxo,Nyo,Nzo)T Mmvから取られた左端の3×3行列を逆転すると行列Mmviが形成される。GEOブ
ロックは、ノーマルを変形し、その後それらをユニット長に再規格化する。 (Nxu,Nyu,Nzu)T=(Nxe,Nye、Nze)T*(1/SQRT(Nxe2+Nye2+Nze2)) 突き当て配置の場合、ユーザが[表面]タンジェント及びバイノーマルの2つま
での追加的ベクトルを提供する場合がある。GEOブロックは、ノーマルを実行す
る時にこれらベクトルを変形し、再正規化する。これらベクトルがユーザによっ
て供給されない場合は、本ブロックが生成することもできる。GEOブロックは、
テクスチャ座標及び頂点目視座標を使用してタンジェント生成し、ノーマル及び
タンジェントの交互積によりバイノーマルを生成する。
【0191】 GEOブロックは、突き当て配置に必要なタンジェント及びバイノーマルを半分
の速度で生産する。
【0192】 図20にDSGPによるノーマル、タンジェント、及びバイノーマルの変換をまと
める。図21にGeometryブロック(GEO)の概要を示す。図22は、本発明の構造
の3チップ実施例内半導体チップ上の機能ブロック間の関係を示す概略図である
。 5.3.3.3 頂点カラー ライティングが無効化された場合、頂点カラーは現カラーにより決定される。
ライティングが有効化された場合、GEOブロックは頂点ノーマル、ライティング
及び素材パラメータを使用して頂点カラーを評価する。オプションとして、現カ
ラーから素材カラーを派生させることも可能である。カラーは、R、G、B、及びA
の4つの値または単一のカラーインデックス値として指定される。カラーは、GE
Oブロック内での使用に先立ってCFDにより浮動小数点番号に変換される。頂点ラ
イティング評価の最後に、結果のカラーが、0.0から1.0の(これらの数値を含む
)範囲を表す8ビット固定小数点へとクランプバックされる。 5.3.3.4 テクスチャ座標処理 テクスチャ座標は、ユーザによる提供に代わって、頂点座標またはノーマルを
使用して生成することも可能である。オプションとして、変換行列をテクスチャ
座標に適用することもできる。テクスチャ座標は、s、t、r、及びqという名
の同次座標を使用して指定される。変換行列は、4×4行列である。性能のケー
スでは、結果のqは1であり、rは無視され、s及びtはテクスチャマップへの
アクセスに使用される。低下させた性能では、qが透視図スケーリング用にテク
スチャ座標の分割に使用される。テクスチャ座標rは、3次元テクスチャ及び影
に使用される。GEOブロック内では、8セットまでのテクスチャ座標がサポート
される。2つのテクスチャ座標が変換でき、半分の性能での変換が可能である。
5つのテクスチャ座標がフル性能の3分の1にて取り扱える。最後に、8つのテ
クスチャ座標の全てが4分の1の性能で生成及び変換できる。
【0193】 クリッピング GEOブロックは、頂点クリップ座標をクリップ平面により生成されたアウトコ
ードと比較する。本ブロックは、これらアウトコードを使用して視点ボリューム
の外にある原線をリジェクトする(例えば、原線内の全ての頂点が最上クリッピ
ング平面の上にある場合、原線はリジェクトされる)。幾つかの原線は、たとえ
完全に視点ボリュームの外にあったとしても、明らかにリジェクトすることはで
きない。アウトコードにより原線が完全に視点ボリュームの内側にあり、いかな
るクリッピング平面にも交わっていないことを示している場合、この原線は受け
付けられ、これ以上のクリッピング演算は必要なくなる。
【0194】 明らかに受け付けまたはリジェクトされない原線は、視点ボリュームに対して
クリッピングされ、クリッピング平面と交わっているエッジをアウトコードが示
しているクリッピング平面をユーザが定義する。原線の1つの頂点がクリッピン
グされると、GEOブロックは1つ以上の新しい頂点を生成しなければならない。G
EOブロックは、これら新しい頂点に対して「カラー」データを書き入れをしない
。これら頂点は、オリジナルの原線の頂点から「カラー」データを共用する。こ
の処理は、最後のカラー頂点により指定された同じ三角形から生成されるクリッ
ピングされた頂点に対して、Mode Extractで同じカラーポインタを割り付けるこ
とにより行われる。
【0195】 現頂点及び前回の頂点のウィンドウ座標を使用して多角形の表面方向が決定さ
れ、オプションとして裏面の選別も行う。
【0196】 ライティング フルライティングモードでは、2つのライトに対してライティング動作が無限
にローカルビューワー及びスポットライトなしで行われる。
【0197】 Gouraudシェ−ディングの場合、各頂点に対して2つのカラーセットが評価さ
れる。プライマリーカラーは、スポットライトにより減衰、強調されたカラーの
Ambient、Emissive、及びDiffuseコンポーネントを含む。本カラーは、Red、Gre
en、Blue、及びAlphaコンポーネント(RGBA)を持つ。全てのライト及び現素材
設定はプライマリーカラーに資する。セカンダリーカラーは、頂点ライティング
のSpecularコンポーネントに対応する。本カラーは、R、G、及びBコンポーネン
トを持つ。本カラーも距離により減衰され、スポットライト効果を包含する。個
別のSpecularカラーモード設定がオンになっていない場合は、プライマリーカラ
ーはSpecularコンポーネントも含み、セカンダリーカラーはクリアされる(R=0
、G=0、B=0)。
【0198】 Fragmentブロックは、プライマリー及びセカンダリーカラーに個別にデータを
挿入する。プライマリーカラーは、最終ピクセルカラー決定のための与えられた
フラグメントに対するセカンダリーカラーの適用に先立ってテクスチャカラーと
混合される。
【0199】 Phongシェ−ディングの場合、GEOブロックは何も余分な仕事をしない。DSGPパ
イプラインは、Phong及びGouraudシェ−ディングの双方を個別のライトのために
同時にサポートする。この処理は、Gouraudを使用してライトの総数を大幅に増
加させ、最大8つのPhongライトを使用するライティングの質も大幅に向上させ
る。Phongは、カラー素材用の「現」カラーとしてGEOブロックのプライマリー及
びセカンダリーカラー出力を使用する。 5.4 Mode Extraction Block (MEX) Mode Injection (MIJ)ブロックと連携したMode Extraction Block (MEX)は、
グラフィックス状態に関連する情報を管理する役割を負う。従来のグラフィック
スパイプライン内では、状態変化は増加傾向にある。すなわち、状態パラメータ
の値は変化するまで効果を保ち続ける。従って、アプリケーションは変化したパ
ラメータを更新するだけでよい。さらに、描画はリニア的である。すなわち、原
線は受信したオーダー中に描画される。点、線、三角形の細片、三角形の扇形、
多角形、四角形及び四辺形の細片はグラフィック原線の例である。これにより、
原線用の空間情報を受信するまでは状態変化は蓄積され、上記原線の描画中はこ
れら蓄積された状態は有効である。
【0200】 DSGPパイプライン中では、隠れた表面が取り除かれるまで描画が続けられる。
Geometry(GEO)ブロックは、正しい順序で原線を受信し、全ての頂点動作を行
い(変形、頂点ライティング、クリッピング、及び原線組み立て)、パイプライン
を通してデータを送信する。Sortブロックは、時間指定データを受信し、そのデ
ータが接触するタイルにより貯蔵する。(各タイル内部のリストはタイムオーダ
ーになっている。)CULブロックは、SRTブロックからタイル順にデータを受信し
、描画された画像には絶対に寄与することのない原線のパーツを選別する。CUL
ブロックは、VSPを生成する。VSPは、スタンプ上の多角形の可視部分に対応する
。TEX及びPHGユニットは、VSPを受信し、それぞれフラグメントのテクスチャリ
ング及びライティングの役割を負う。Pixelブロックなどの最後のブロックは、
最終的な絵を生成するためにVSP及びフラグメントのカラーを消費する。
【0201】 原線は、多くのタイルに接触するため、従来の描画パイプラインと違い、フレ
ーム描画の最中にしばしば問い合せられる(原線がタイルに接触するたびに)。
パイプラインは、原線がパイプラインを入力した時に有効なグラフィックス状態
を記憶し、SRTから下りてくるパイプラインステージの訪問を受けるたびに想起
しなければならない。MEXは、GeometryとSortブロック間に位置し、暫定的に順
序付けられた状態変化データを収集及び保存する論理ブロックであり、原線が描
画された時に、その原線と正しい状態を対応付けるために原線頂点に適切なポイ
ンタを付け加える。Mode Injection(MIJ)ブロックは、必要に応じて、状態及
び状態ポインタ(本書中ではMLMポインタと総称されている)を持つ必要な他の
情報を検索する役割を負う。本ブロックは、適宜情報を再パッケージングする役
割も負っている。再パッケージングは、例えば多角形メモリ内の頂点データが検
索され、フラグメント用の三角形入力パケットにまとめられた時に発生する。
【0202】 我々は、最初に操作理論及びDSGP状態管理の背景にある一般原則について論じ
る。その後我々は、MEXブロック及びMEXブロックへのインタフェースについて論
じる。我々は、種々の状態ポインタを伴うデータが如何にしてRDRAM内で編成さ
れるかを説明する。我々は、MEXが必要とする再パッケージング及び処理の全て
について論じる。MEX入力及び出力パケットの計数及びメモリサイズ、帯域幅解
析などの簡潔な論説が後に続く。 5.4.1 状態管理 グラフィックス状態は描画された原線の出現に影響する。DSGPパイプラインの
個別のパーツはそれぞれ異なる状態情報を使用する。ここでは、我々はGEOブロ
ックからのパイプラインステージの下流のみについて述べている。DSGPは、グラ
フィックス状態を、上記状態情報がどのように種々のパイプラインステージによ
って使用されるかに基づき、幾つかのカテゴリーへと分ける。状態の適切な分割
は非常に重要である。この分割には、性能に対する影響(帯域幅やアクセスの制
限により)、チップサイズに対する影響(より大きなキャッシュ及び/または論
理の複雑化)及びピンカウントに対する影響がある。 5.4.1.1 モード抽出ブロック機能 MEXブロックは、下記の処理に対する役割を負う。 1. Geometryからのデータパケットの受信。 2. それらデータパケット上に必要な全ての処理の実行。 3. パイプラインのシェ−ディング部分に必要な情報のPolygonメモリへのセ
ーブ(後のMIJによる検索用)。 4. Sortユニットに送信される原線に対して状態ポインタを付け加えることに
よりMIJをして同原線の状態を知らしめる。 5. Sort、Setup、及びCullが必要とする情報のSortブロックへの送信。 6. 多角形及びソートメモリオーバーフローの扱い。
【0203】 図23にMEXデータフローの他のViewを示す。
【0204】 Polygonメモリにセーブされた状態は、Fragment、Texture、Phong、及びPixel
ブロックなどのMIJからのブロックの下流で使用されるものである。この状態は
、本書の他の個所に説明されているように分割される。 5.4.1.2 モードインジェクションブロック MIJは下記の処理に対する役割を負う。 1. BeginFrame、EndFrame、及びBeginTileなどの種々の制御パケットのFragm
ent及びPixelユニットへのルーティング。 2. CULブロックから受信した各VSPに対する状態付加。 3. 多角形メモリからからのパケットの検索。 4. 原線の構築。多角形メモリは頂点あたりのデータを保存する。VSPの原線
の種別によって、MIJは、多角形メモリから必要な頂点(三角形用に3つ、線用
に2つ、及びポイント原線用に1つ)を検索する。 5. Color、TexA、TexB、Light、Material、PixelMode、及びStippleキャッシ
ュの内容トラックの維持及び各キャッシュミスデータパケットに対する適切なキ
ャッシュポインタの付加。 6. フラグメント及びピクセルブロックに対するデータ送信。 7. パイプライン内の処理中断。
【0205】 モードインジェクションは、このようにして状態検索及びVSP内の各フラグメ
ント用の最終カラーの演算に必要な頂点あたりのデータに関与する。 5.4.1.3 グラフィックス状態分割 DSGPは、グラフィックス状態を複数のパーツに分割する。それらパーツの数を
これより7つと想定する。これらパーツは、各原線に対して保存される頂点あた
りの情報の付加的な情報である。本節は、状態情報の概要を説明する。 5.4.1.3.1 Sort、Setup、及びCullが必要とする状態及び空間データ 本情報は、Sort、Setup、及びCullブロックが必要とする状態情報である。本
情報はPolygonメモリにはセーブされない。本情報は、CullModesパケット、Vert
exModesパケット、及びSpatialパケットの3つのパケットとして受信される。こ
れらパケットは、SRTブロックに対して予定され、Geometryユニットから送信さ
れてくる。選別パケット内の情報には、CULブロックが必要とする目的線画バッ
ファ及び制御ビットが含まれる。
【0206】 VertexModesパケットには、Sortブロックに送信される前回の各空間パケット
にMEXにより付加されるホストコンピュータが生成するモード情報(例:ソフト
ウェア)が含まれる。VertexModesパケットには、線幅、点サイズ、線点描情報
、及び深度テスト動作制御ビットが含まれる。
【0207】 Spatialパケットは、頂点のウィンドウ座標及び原線用の点描パターンなどの
他のGeometryブロックにより生成された頂点あたりの情報を含む。Spatialパケ
ットは、頂点のウィンドウ座標、多角形の曲がり、多角形の扇形及び細片内の頂
点再使用、エッジフラグ、及び混合動作制御ビット(アルファテストおよびアル
ファ混合など)を含む。頂点モードはソフトウェアにより生成される。
【0208】 Geometryブロックは、ソフトウェアより選別モード及び頂点モードを受信する
。本ブロックは、上記のように選別及び頂点モードをMEXに送信する。MEXは、頂
点モードを空間パケットに付加することによりソート用の空間パケットを構築す
る。MEXブロックはまた、状態MLMポインタをSortブロック上に渡す前に本パケッ
トに付加する。さらに、原線は同時に点と線にはなれないために、MEXブロック
は線幅及び点幅パラメータを一つのパラメータに構成しなおす。本ブロックは、
Sort原線タイプを使用して原線が点か線か多角形かを決定する。原線が点の場合
、本ブロックはSortに点幅を送信し、他の場合は線幅を送信する。他のフィール
ドはそのままである。 5.4.1.3.2 テクスチャパラメータ テクスチャリングには、特に複数のテクスチャが含まれる場合は、多数のパラ
メータがあるため、多数のテクスチャパケットを持つ方が有利である。これより
、2つのテクスチャパケット(TexA及びTexBと呼ばれる)があるものとするが、
これらは追加パケットに分割可能とする。テクスチャパラメータパケットは、テ
クセルの検索及びフィルタリングに必要な情報を含む。本書は、8つの使用可能
なテクスチャが各頂点に割り付けられているものと仮定している。TexAパラメー
タパケットは、最初の2つのテクスチャ用のパラメータを含み、TexBパラメータ
パケットは、6つまでの追加テクスチャ用に同様の情報(テクスチャあたりの)
を含む。この非対称パーティションが選択されるのは、ほとんどの場合、同時に
活性なテクスチャは1つか2つだけだからである。まれなケースでは、2つより
多いテクスチャが使用されることもある。本処理は、チップ上のテクスチャパラ
メータキャッシュのサイズを維持するのに役立つ。TexA及びTexBパケットは、Ge
ometryユニットから受信する。テクスチャあたりの情報は、テクスチャID,テク
スチャ次元数(例:1D、2D、3D)、テクスチャサイズ(例:幅、高さ、及び奥行
き)、テクスチャボーダー情報、テクスチャフォーマット、テクスチャフィルタ
ー制御ビット、テクスチャラッピング制御ビット、テクスチャクランピング制御
ビット、詳細制御ビットのレベル、及びテクスチャ比較動作制御ビットを含む。
【0209】 再び、TexAパケットは、これらエントリの内の1つか2つを含み、TexBパケッ
トは、6つまでのエントリを持つことができる。TexA及びTexBパケットはソフト
ウェアにより生成され、GEOブロックを通じてMEXに送信される。MEXは、TexA及
びTexBを2つの状態パーティションとして管理し、Polygonメモリにセーブする
。各TexA及びTexB状態パーティションは、それ自体に付加されるポインタを持つ
。Mode Injectionブロックは、後に必要となるこれらのパケットを検索する。Ge
ometryブロックは、本情報を全く使用しない。
【0210】 テクスチャID、その(s、t、r)座標、及びミップマップレベルが与えられ
ると、Textureブロックは、テクセルの検索、必要に応じたテクセルデータのア
ンパッキング及びフィルタリングの役割を負う。Fragmentブロックは、テクスチ
ャモード情報同様にテクスチャID、s、t、r、及びミップレベルをTextureブ
ロックに送信する。Fragmentからのs、t、r、及びミップレベルが浮動小数点
値であることに注意する。各テクスチャ用には、TEXブロックがPHGに1つの36
ビットテクセル値を出力する。テクスチャブロックは、フラグメントとテクスチ
ャカラーとを結合しない。これはPhongブロックにおいて行われる。テクスチャ
ブロックは、テクスチャパラメータ及びテクスチャ座標を必要とする。テクスチ
ャパラメータは、Textureブロック内の2つのテクスチャパラメータキャッシュ
から得られる。Fragmentブロックは、ミップレベル演算でテクスチャ幅及び高さ
パラメータを使用する。Fragmentは、TextureDimensionフィールドを使用してテ
クスチャ次元が有効か(0はテクスチャが無効であることを示す)及びTexCoord
Setを使用して座標セットを付加可能かを決定する。 5.4.1.3.3. ライティングパラメータ 状態の「ライティング」パーティションは、フォグパラメータなどのフラグメ
ントのライティングに影響を与える大域状態同様にフラグメントライティングの
演算に使用される複数のライト(これより、本書では最大8つのライトを想定す
る)を含む。ライトキャッシュパケットは、次のライトあたりの情報を含む。ラ
イトタイプ、減衰定数、スポットライトパラメータ、ライト位置情報、及びライ
トカラー情報(周辺、拡散、及び反射カラーを含む)。ライトキャッシュパケッ
トは、次の大域ライティング情報も含む、すなわち大域周辺ライティング、フォ
グパラメータ、及び使用ライト数である。
【0211】 ライトキャッシュエントリは約300バイトである(大域ライトモードの8つ
の内の各ライトプラス120ビット用の約300ビット)。LightCacheパケット
は、ソフトウェアにより生成され、GEOブロックを通じてMEXに送信される。MEX
は、LightCacheパケットを状態パーティションの一つとして管理し、必要ならば
Polygonメモリにセーブする。LightCache状態パーティションはそれ自体に付加
されるポインタを持っている。Mode Injectionブロックは、後に必要となるため
に、上記パケットを多角形メモリから検索する。Geometryブロックは本情報は全
く使用しない。
【0212】 ライティング状態のキャッシングの代替法として、ライティング状態全体をキ
ャッシングする代わりにライトごとのキャッシュエントリが使用できる。本処理
により、ライトパラメータキャッシュミスがある場合にパイプラインを通じて送
信されるデータの量を減らすことができる。このように、単一のライトを変更す
る場合に、応用プログラムがライティングパラメータの「軽量」スイッチングを
提供する。しかしながら、本処理は、ライティング状態の管理をより複雑にする
ことになる。 5.4.1.3.4 フラグメント素材パラメータ グラフィックス状態の素材パーティションは、フラグメントライティング演算
に関連する全ての情報を含む。フラグメント素材状態は原線の頂点に付加されて
いる素材状態とは異なることに注意する。フラグメント素材状態情報は、GEOブ
ロック内で実行される頂点ライティング演算中には使用されない。本パケットは
、テクスチャ有効化制御ビット(活性テクスチャの選択)、テクスチャ環境パラ
メータ、素材カラーパラメータ(放出、周辺、拡散、反射カラー、および輝度)
、輝度カットオフ値、およびカラー素材パラメータを含む。
【0213】 8つのテクスチャが存在可能なので、各フラグメント用に8つまでのテクセル
がTEXからPHGに受信可能である。テクセルは、素材状態パケット内のテクスチャ
エントリと同様の順序で受信される。 5.4.1.3.5 ピクセルモード ピクセルモードは、PIXブロック内のフラグメントごとの動作に影響する。ソ
フトウェアはピクセルモードパケットを作成し、作成されたパケットはGEOを通
じてMEXに送信される。MEXは、Polygonメモリに本パケットをセーブする。MIJは
本パケットを検索し、PIXブロックに送信する。ピクセルモードは、フレームバ
ッファ書き込みマスク(深度、カラー、及びステンシルマスク)、混合操作、深
度関数、ステンシル関数、及びはさみ動作などの情報を含む。
【0214】 本パケット内の幾つかの情報は、SRT用に準備されたVertexModes内に含まれる
情報と同様であることに注意する。ソフトウェアは、種々のモードパケット内で
必要となる状態情報の二重化の役割を負う。 5.4.1.3.6 点描 点描パケットは、多角形点描パターンを指定する。点描パターンは、あまり頻
繁には使用されず、使用される場合にも頻繁には変更されないため、分割してキ
ャッシングした方が効率的である。本パケットは多数のバイトにより構成されて
いる(32×32ビットパターンに必要なため、128バイトが普通である)た
め、他のパラメータキャッシュに入れると、それに伴うパケットに大きな追加オ
ーバーヘッドを加えることになる。 5.4.1.3.7 Fragument-Texture-Phongブロック用の頂点ごとのデータ 各VSPでは、Fragmentブロックが供給された頂点ごとのデータを改ざんし、Fra
gmentブロックからのブロック下流に必要な情報を生成する。改ざんされたパラ
メータは、VSPに付加された状態ポインタによっては、使用可能なパラメータの
内の幾つかまたは全てで構成されることがある。パラメータ数の変動を考慮して
、Polygonメモリに保存されているパケットサイズは、特定の頂点に対して使用
されるパラメータの数及びタイプにより可変である。これらパラメータは、原線
タイプ、多角形扇形及び細片構築のための頂点再使用、非クリッピング頂点x、
y、及び1/w値、頂点目視座標(Xeye、Yeye、Zeye)、逆透視項、頂点プライ
マリ及びセカンダリカラー、頂点ノーマルベクトル、タンジェントベクトル、バ
イノーマルベクトル、および8セットまでのテクスチャ座標を含む。ノーマル、
タンジェント、及びバイノーマルベクトルは、それぞれ単一ベクトルまたはユニ
ットベクトル(例:ベクトルの方向)及び対応する大きさとして表すことができ
る。
【0215】 非クリッピング頂点x、y、及び1/w値は、改ざんされた原線パラメータ(
カラー、ノーマル、テクスチャ座標など)が原線のオリジナルの頂点パラメータ
から生成できるために、原線が表示画面にクリッピングされている場合でも、特
別に有用である。これにより、原線がクリッピングされていると、全ての原線を
画面上にとどめておくために新たな頂点が作成される。本処理は通常、高価な動
作セットであるこれらの新たな(表示画面端に沿った)頂点位置において頂点パ
ラメータの改ざんを必要とする。これらクリッピングされ、生成された頂点にお
けるパラメータの改ざんは、Sortメモリにクリッピング値(例:x、y、及びz
値)を保存し、Polygonメモリに非クリッピング頂点パラメータを保存すること
によって防ぐことができる。このようにして、Sortメモリ内の原線とPolygonメ
モリ内の原線間の対応が多数対1になる。本処理は、Polygonメモリ内の演算及
び保存スペースの双方を節約する。
【0216】 ノーマル、タンジェント、及びバイノーマルベクトルを方向及び大きさに分け
ることは、方向に対する改ざんが大きさから離れて平易にできるようになる。大
きさとは別の方向に対する改ざんは、特に大きな係数によりオリジナルのベクト
ル(例:頂点におけるベクトル)の大きさが変化する場合に、より正しい角度の
改ざんを提供する。
【0217】 Geoブロックは、多角形メモリに保存する頂点ごとの情報を生成する。MIJブロ
ックは、VSPを含む原線を再構築するのに必要なデータ及び頂点を多角形メモリ
から検索する役割を負う。
【0218】 三角形頂点テクスチャ座標は、テクスチャユニットではなく、フラグメントユ
ニットに送信されることに注意する。テクスチャユニットは、各フラグメントに
対して改ざんされ、透視図が修正されたテクスチャ座標をフラグメントブロック
から受信する。 5.4.2 MEXブロックの機能詳細 5.4.2.1 MEXブロックの機能概要 MEXの完遂に必要なこと及びその方法を理解するために、図24に示す例を考
える。
【0219】 MEXはGEOから一連のパケットを順番に受信する。各原線の場合、MEXは最初に
関連状態パケットを受信し、その後形状寸法パケットを受信する。(カラー頂点
情報をソート頂点情報の前に受信する。)ソート頂点データは、クリッピングさ
れたウィンドウ座標などの原線のソート及び選別に必要な情報で構成される。Vt
xModeパケットは、深度テストに関する情報等を含む。CullMode、VtxMode、及び
ソート頂点パケット内の情報がパイプラインのSort-Setup-Cullパートに送信さ
れる。「カラー」頂点データは、頂点目視座標、頂点ノーマル、テクスチャノー
マル等の原線フラグメントのライティング及びテクスチャリングに必要な情報を
含み、後で検索できるように多角形メモリにセーブされる。
【0220】 パイプラインのSort-Setup-Cullパートは、原線をVSPに変換する。これらVSP
は次に、パイプラインのFragment-Texture-Phongパートによりテクスチャリング
及びライティングされる。ほとんどの場合、これらVSPは、タイル上のVSPスキャ
ンオーダーにあり、例えば異なる原線用のVSPがインタリーブされることがある
。明確には、パイプラインのFragment-Texture-Phongパートは、特定のVSPがど
の原線に所属しているか及びその原線が最初に導入されたときのグラフィックス
の状態の双方を知る必要がある。MEXは、「カラーポインタ」を各Sort Vertex(
後に本原線内の各VSP上に渡される)に付加する。MIJは、ポインタを復号化し、
Polygonメモリから必要な情報を検索する。
【0221】 このように、MEXは最後の状態セーブ以後に起きた状態変化を蓄積する。状態
変化は、頂点が来るとすぐに有効になる。MEXは、チップ上に状態ベクトルを保
持する。本状態ベクトルは、図25に示す通り10個のパーティションを持つ。
MEXは、状態ベクトルを保存するためにチップ上のメモリに1170バイト近く
を必要とする。
【0222】 VertexModesは、MEX内のレジスタに保持され、パイプラインのSort-Setup-Cul
lパート上に渡される頂点に付加される。CullModesは、Mex2SrtCullModePkt同様
にSortに送信される。MEXは、状態ベクトル内の各パーティション用にダーティ
ビット及びポインタを(多角形メモリに)保持する。このように、選別モードは
多角形メモリにセーブされず、それゆえポインタを必要としないために、10個
のダーティビットと9個のモードポインタがある。MEXがGeoブロックから状態パ
ーティションに対応する入力パケットを受信するたびに、状態ベクトル内の上記
パーティションを更新する。MEXは上記パーティションに対応するダーティビッ
トも設定する。MEXがカラー頂点を受信すると、最後に状態がセーブされた時か
らその状態のいずれの部分が更新されているかを見るためにダーティビットを検
査する。更新され、現原線のレンダリングに関連する状態パーティションは全て
多角形メモリにセーブされ、そのポインタが更新される。それらパーティション
のダーティビットもクリアされる。ダーティビットは、多角形メモリにセーブさ
れた原線に対してのみクリアされることに注意する。TextureA、TextureB、及び
Materialのいずれが多角形メモリにセーブされるかは原線の「表面」およびダー
ティビットにかかっている。図26に本理論の概要が図解されている。
【0223】 MEXは、適用可能なTextureA、TextureB、Material、Light、Stipple、及びPix
elModeが最後にセーブされた場所へのポインタを含むMLMポインタと呼ばれる複
合カラーポインタを構築する。本ポインタは、Sortブロック上に渡される頂点に
付加される。
【0224】 Clearパケットも同様に渡されることに注目する。クリアパケットを受信する
と、MEXはSendToPixelフラグを検査する。SendToPixelフラグが設定されると、M
EXはPixelModesが汚れているかを確認する。ダーティPixelModeビットが設定さ
れると、MEXは、PixModesを多角形メモリにセーブし、PixModePtrを更新し、ダ
ーティPixModeビットをクリアし、新たなMLMポインタを作成し、本ポインタをク
リアパケットに付加した後にSortブロック上に渡す。 5.4.2.2 入力パケット処理 Geometryブロックからの各入力パケット用のMode Extractionブロック内の処
置を図に示す。本発明者らは、「メッシュ」という語を状態内の変化に続く点の
連続を示すのに使用している。「メッシュ」は、上記のように点、線の細片、線
の区分、または三角形のリストまたは扇形である。 多角形メモリ管理 多角形メモリは、二重八進数の直線行列として見られる。原線データは、メモ
リの山の最上部から満たされ、モードデータは最下部から満たされる。本メモリ
への全ての書き込みは144ビットワード(または1つの二重八進数)である。
図24に示す例の場合、多角形メモリのレイアウトは図27に幾分類似している
【0225】 注意すべき点を下記に示す。 1.状態ベクトルのパーティションは、多角形メモリにゆっくりとセーブされる
。我々は、必要としているものだけをセーブする。 2.状態ベクトルには省略時のリセットはない。全ての状態が適切に初期化され
ているかは、ドライバ/ソフトウェアの役割である。 3.メッシュ内の全ての頂点は同じサイズである。 4.カラーオフセットは8ビットであり、それゆえメッシュ内の最大頂点数は2
56である。 5.MEXは、原線を完成するために必要な現VertexPointer、VertexCount及び(
最大で)2つの前回の頂点を保持する。MEXはmodePointerも保持する。
【0226】 VertexPointerは、多角形メモリ内の現頂点エントリに対するポインタである
。VertexCountは、最後の状態変化から多角形メモリにセーブされた頂点の数で
ある。VertexCountは、ColorOffsetに割り付けられる。VertexPointerはSort原
線用のcolorPointerに割り付けられる。前回の頂点は、メモリオーバーフローの
処理で使用される。MIJは、colorPointer、ColorOffset、及び頂点サイズ情報(
Geoから受信したColorType内に暗号化されている)を使用して、多角形メモリか
らMLMポインタ及び原線頂点を検索する。 5.4.2.3.1 メモリ二重バッファリング及びオーバーフロー Polygonメモリは、まれにオーバーフローすることがある。単一のユーザフレ
ームが過度な情報を持つとPolygonメモリ及び/またはSortメモリがオーバーフロ
ーする。オーバーフロー点は、Polygonメモリのサイズ、フレーム内のマテリア
ル、モード、テクスチャ、及びライト変化の頻度、及び使用されている原線の特
徴による。メモリが一杯になると、全ての原線がパイプへと洗い流され、これと
は別にPolygonメモリバッファが一杯になるとユーザフレームが終わる。Sortメ
モリのオーバーフローは、同じオーバーフローメカニズムのトリガーとなること
に注意する。PolygonメモリとSortメモリバッファは常に一致していなければな
らない。1つのメモリ内のオーバーフローに起因する他のメモリ内のスキッドは
バックアウトされなければならない(または、回避する方が良い)。このようにし
て、MEX内では、オーバーフローに起因するフレーム破壊は、Sortからの信号ま
たはMEX自身の中のメモリオーバーフローに起因するSortメモリのオーバーフロ
ーに繋がることがある。MEX内のSortメモリオーバーフロー信号はMEX多角形メモ
リ自身のオーバーフロー同様に処理される。
【0227】 多角形メモリのオーバーフローは非常に高くつくということに注意する。多角
形メモリは、Sortメモリ同様に二重バッファとなっている。そのため、MIJがバ
ッファから読み出しを実行している間にMEXが他のバッファへ書き込みを行う。
この状況は、MEXがMIJによるフレーム処理の終了を待ってから次の(第三の)フ
レームに移らなければならないために、フレーム処理の遅延をもたらす。MEX及
びSRTが的確に同期されていることに注意する。しかしながら、MIJがMEXによる
処理済みのフレームの読み込みを開始できるようにするには、Cullはタイルのデ
ータに相当する部分を処理済みでなければならない。このように、各フレームに
対して上記遅延または中断が起きる可能性がある。メモリオーバーフローが起き
れば、状況はさらに悪くなることがある。典型的なオーバーフローの状況下では
、第一のフレームが多くのデータを持っており、第二のフレームはほんの少しの
データを持っている可能性がある。MEXが次のフレームの順次処理を開始できる
ようになるまでに要する時間は、MEXがフレーム全体に対して費やした時間+CUL
タイル潜伏+フレーム全体に対するMIJフレーム処理であり、MEXがフレーム全体
に対して費やした時間+MEXがオーバーフローフレームに対して費やした時間で
はない。ここで要する時間は正常フレームに対して必要な時間のほぼ倍であるこ
とに注意する。このソフトウェアに対するコストを低下する唯一の手段は、シー
ンのサイズを見積もり、フレームを2つの等しい複合フレームに大別することで
ある。これとは別に、ハードウェアは我々が必要としている場合のみオーバーフ
ローを作成するようなポリシーを利用することもできる。
【0228】 Mode Extractionは、次のバッファ内のオーバーフローの原因となった三角形
(及びその状態)を保存する必要がある。我々が頂点リストのどこにいるかによ
り、現バッファにすでに書き込まれている次のバッファに対して頂点の送信が必
要な場合がある。本処理は、頂点を読み戻すまたはMEX内に2つほどの頂点を保
持することにより可能である。線は前回の頂点を一つだけ必要とし、点は他の頂
点とは一切ペアリングされないことに注意する。DoColorVertexコードがこの要
件で考慮されている。オーバーフローも処理される。処理が終わると、MIJがMEX
に信号を送信する。SetupおよびCullは、MEX及びSortが終了した後でなければタ
イル上の原線の処理が開始できないため、MIJはVSPの到着を待ち続けていること
がある。 5.4.2.4 カラーポインタ生成 MEXは、「colorPointer」、「colorOffset」、及び「colorType」を、Sortに
送信される全ての原線頂点に付加する。「colorPonter」は、Polygonメモリ内の
頂点エントリをポイントする。本頂点エントリは、Sort原線が付加される三角形
を完成する頂点(線または点)である。上記の例では(図27参照)ソート頂点
Va、Vb、V2は全て頂点3Vが△V1VaVb及び△V1V3V2を伴うD1V2V3Vを完了した時に
カラーベクトルV3に応するカラーポインタを割り付けた。△V1V2V3のノーマル、
カラー、及びテクスチャ座標などの頂点パラメータは、△V1VaVb及び△V1VbV2
対して生成されたVSP内のフラグメントのライティング及びテクスチャリングに
使用される。
【0229】 「colorOffset」は、本原線に適用可能なMLMポインタの保存に使用される二重
八進数に対するcolorPointerにおける頂点を分ける頂点の数である。再び上記の
例に戻ると、Va、Vb、及びV2に伴うカラーオフセットは、st0及びcv3を分ける
頂点の数、例えば3である。ColorOffsetは、Light、TexA、TexB、Material、Pi
xMode、及び点描ポインタを検索するために復号化されるMLMポインタ(MLMPoint
er=colorPointer―colorOffset*vertexSize-1)を検索したMIJを助ける。本処
理はPolygonメモリ内のメッシュ内頂点数を256に制限することに注意する。
(colorOffsetは、符号なし8ビット整数であり、それゆえ0から255の値を取
る。ColorPointer上の最後の頂点を加えると、最大256頂点が得られる。) 「colorType」は、MIJに対し、いかにしてPolygonから完全な原線を検索する
かを伝える。頂点は順番に保存されるため、三角形の扇形のケースをのぞいては
、原線内の頂点は隣接している。点の場合、我々が必要なのは、colorPointerに
よってポイントされる頂点だけである。線の場合、我々が必要なのは、ColorPoi
nterによってポイントされる頂点及びカラー頂点列内の前記頂点の前に位置する
頂点である。三角形の細片の場合、我々が必要とするのは、colorPointer上の頂
点及び2つの前回の頂点である。三角形の扇形の場合、我々が必要なのは、colo
rPointer上の頂点、その前に位置する頂点、及びMLMポインタの後の列の中の最
初の頂点である。上記の例では、頂点V8に対してMIJが定義したソート原線は頂
点V5、V7、及びV8を検索する必要がある。このように、三角形の扇形の場合は、
三角形用の3つの頂点がColorPointer(ColorPointer-1)及び(ColorPointer-C
olorOffset)上にある。
【0230】 図28に「カラー」情報に使用されるビットを示す。 Color Typeフィールドは、入力パケットフィーダー内の「vertexType」及び頂
点パケット長から構築される。本フィールドは、パケットのサイズ及びそれに属
する原線のタイプを指定する。図29にカラータイプフィールド用の値の一覧を
示す。
【0231】 図30に、点リスト、細片、三角形の細片、または三角形の扇形の最初の二重
八進数内に保存されているMLMポインタパケットを示す。 5.4.2.5 状態の処理 概して、MEXは受信したパケットのほとんどの内容を知る必要はない。MEXが知
る必要があるのは、それらパケットのタイプ及びサイズだけである。本規則には
幾つかの例外がある。
【0232】 「カラー」頂点パケットの場合、MEXは現頂点により定義された原線に関する
情報を知る必要がある。特に、MEXはそのタイプ(点、線、三角形の細片または扇
形)及び三角形の場合は正面を向いているかを知る必要がある。本情報は、オー
バーフローのケースにおいて原線の構築を可能にするためにチップ上に適切な頂
点エントリをセーブする時に使用される。本情報は、Geometryブロックによりパ
ケットヘッダーにしまわれる。
【0233】 MEXは、三角形の正面及び裏面用にMaterial及びTextureデータを蓄積する。Po
lygonメモリには、「FrontFace」ビットに基づいて状態の1セットのみが書き込
まれる。三角形の細片または扇形内でも正面/裏面の向きは変わらないことに注
意する。「FrontFace」は、正しいTextureA、TextureBパラメータ及び素材オブ
ジェクトの原線に対する付加に使用される。メッシュが向きを途中で変更した場
合、GEOは当該メッシュを複数のメッシュに分け、各メッシュが正面または裏面
を向くようにする。
【0234】 CullModesの場合も同様に、原線のタイプによってはMEXはLineWidth及びPoint
Width属性の内の一つを奪い去る。頂点が点を定義するとLineWidthが捨てられる
。頂点が線を定義すると、PointWidthが捨てられる。MEXは、線または点の幅の
内1つだけをSortユニットに渡す。
【0235】 「Clear」パケットの場合、MEXはSendToPixelフラグが設定されているかを検
査する。フラグが設定されている場合、MEXは(必要ならば)PixelModeをセーブ
し、出力クリアパケットに付加する適切なColorPointerを作成する。 5.5 Sortブロック(SRT) 5.5.1 SRTブロックの機能概要 Sortブロックは、Mode Extraction(MEX)とSetup(STP)間のパイプライン中
に位置する。Sortブロックの主な機能は、表示画面上に散在する形状寸法を取り
、タイルにソートすることである。Sortブロックは、少量のモード情報と共にラ
スタ図形処理される前のシーン全体の形状寸法を保存するSortメモリを管理する
。Sortメモリは、頂点及びモードの二重バッファリングされたリストである。1
つのページは、パイプラインの残りの部分でシーンのジオメトリを収集する(原
線ごと及びモードごとに)が、他のページは、そのジオメトリを送信する(原線ご
と及びモードごとに)。
【0236】 「アーキテクチュアの概要」の章に記述されているように、ウィンドウ(画面
上の表示領域)はタイルのセットへと縦横に分割され、Sortは各タイルに対して
オーダーされたリストを保持する。Sortメモリのページが書き込み中の場合、頂
点及びモードは、Sortブロックから受信されるごとに順にSortメモリに書き込ま
れる。Sortメモリのページ読み出しは、タイルごとに行われる。読み出しプロセ
スは次の2つのモードで動作する。1)Time Orderモード及び2)Sorted Trans
parencyモードである。Time Orderモードの場合、頂点及びモードのタイムオー
ダーは各タイル内に保存される。すなわち、与えられたタイルに対しては、頂点
及びモードは書き込まれた時と同じ順序で読み出される。Sorted Transparency
モードでは、各タイルの読み出しは、複数のパスに分割される。最初のパスでは
保証された不透明なジオメトリがSort Bloskから出力され、後続のパスにおいて
はSortブロックから潜在的に透過なジオメトリが出力される。各パス内では、タ
イムオーダリングは保存され、モードデータはその正確なタイムオーダー場所に
挿入される。
【0237】 Sortブロックへの入力時には、フレームの開始はMEX Output Begin Frame Pac
ketの受信によって指定され、常にユーザフレームの開始に対応する(つまり、こ
の時、新しい絵を描くためにアプリケーションがスタートする)。これらの開始
フレームパケットは、Sort Memory Pagesがスワップされた時にSortからパイプ
ラインを通ってSetupに送信される。フレームの終わりは、MEX Output End Fram
e Packetの受信により指定されるが、メモリオーバーフローが起きず、ソフトウ
ェアがユーザフレームに分割を強制しなかった場合にはユーザフレームの終わり
に対応するだけである。SortメモリまたはPolygonメモリが一杯になるとメモリ
オーバーフローが起きる。従って、Sortブロックに来るエンドフレームパケット
には次の2種類がある。1)ユーザフレームの終わり、及び2)パイプライン内
でユーザフレームを複数のフレームに分割する必要に起因するフレームの終わり
である。ユーザフレームが複数フレームに分割された場合、パイプラインの後の
半分(Setup及びbeyond)がタイルを複数回処理するように依頼される。各フレ
ームは独立で、異なるコンテクストから入力可能なため、全てのパイプライン状
態情報はSortメモリ(モードパケットとして)またはPolygonメモリにフレーム
ごとに保存されなければならない。
【0238】 フレーム内では、Sortブロックは、点、線、及び三角形のSort原線を受信及び
出力する。Sort原線三角形は、塗りつぶされた三角形または線モード三角形とな
る。しかしながら、原線は、点、線、塗りつぶされた三角形、及び三角形のエッ
ジの線を含むCull原線に従って分類される。
【0239】 Sort原線及びCull原線の主な違いは、線モードの三角形のエッジは、別々の原
線と想定されることである。Sortブロックが線モード原線を受信した場合、受信
した原線は、そのエッジが触れているタイルに従って分類される。三角形のいず
れのエッジ(LineFlag TRUEを持つ)も、三角形全体のそのエッジが接触するタ
イルへの分類の原因となるが、同じタイル内の複数のエッジを持つ三角形は、各
タイルにつき1つのPointer Entryの原因となるだけである。本処理は、例えば
、大きな線モードの三角形がそのエッジをタイルに触れさせることなく幾つかの
タイルを囲んでいる場合、それらタイルの中で上記三角形に対するCull原線の読
み出しは一切ないために、タイルあたりの原線の数を減少させる。Cull原線につ
いては、Setupブロック関係の文書にさらに詳細に記されているが、CullTypeパ
ラメータは、基本的に追加ビットが線モード三角形の3つのエッジから選択され
るSortPrimitiveTypeパラメータである。
【0240】 図31に、6つのタイルと8つの原線だけを含み、Sortメモリページに保存さ
れるデータの簡単な例を示す。本例に見られるように、各Sortメモリページは、
次の2つに分割される。1)データ記憶、及び2)ポインタ記憶である。データ
記憶はそのデータを受信順に保存し、次の2バイトの記憶エントリを保存する。
1)頂点パケット、及び2)モードパケットである。図31の例は、13個の頂
点パケットと3つのモードパケットを示す。ポインタ記憶は、次の2タイプのリス
トを含む。1)ポインタリスト:各タイルに一つずつ、及び2)モードポインタリ
ストである。図31中の例は、合計18個のVertexポインタを含む6つのTileポ
インタリスト及び1つのClearポインタと3つのCullポインタを含むModeポイン
タリストである。Vertexパケット及びModeパケットのサイズは、常に単一のRamb
us Dualoctである。それゆえ、図31に示すアドレスはDualoctアドレスである
【0241】 Sortブロックに頂点が支給され、データ記憶に順に書き込まれると、各タイル
につきTileポインタリストが構築される。Tileポインタリスト内の各Vertexポイ
ンタは、対応するタイプの一部をカバーするCull原線を含むSort原線の最後のSo
rt Memory Vertexパケットのデータ記憶内アドレス(例:ポインタ)を含む。例
えば、図31では、原線11(例:Duatoctアドレス11に書き込まれるSort Me
mory Vertexパケット)により完成される三角形が3つのタイルに触れ、この原
線へのポインタが3つの接触されたタイル(タイル2、4、及び5)用のTileポ
インタリストに加えられる。
【0242】 アドレスに加えて、各Vertexポインタアドレスはオフセットも含んでいる。オ
フセットがゼロの場合、Sort原線タイプは点である。図31の例は、Tile5内の
4つ目のPointer Entryを形成する原線16によって表される点である。オフセ
ットが1の場合、原線タイプは線である。図31の例に示す線は、原線14及び
原線15によって形成され、Tile0中の最初のPointer Entry及びTile2中の4つ
目のPointer Entryを形成する。これら2つのエントリ内では、アドレスフィー
ルドは15であり、線の中の最後の頂点をポイントする。線の場合、他の頂点が
常に直前のアドレス上の頂点である。オフセットが複数の場合、Sort原線タイプ
は三角形であり、オフセットは三角形内の最初の頂点の位置を決定するのに使用
される。例えば、図31では、頂点12が三角形の3つめの頂点である。2つ目
の頂点が常に直前のアドレス−この例では頂点11である。最初の頂点は、アド
レスからオフセットを減算することによって見つけることができる。本例では、
オフセットは4であり、最初の頂点は頂点8である(例:12−4=8)。それゆ
え、Tile2、Tile3、Tile4、及びTile5にエントリを加えることによりPointer
記憶に4つのVertexポインタが加えられる。これら4つのエントリは、それぞれ
アドレス=12及びオフセット=4を持っている。
【0243】 アドレス及びオフセットに加えて、各VertexポインタはTransparentフラグビ
ットも含んでいる。本ブール変数は、パイプラインがSorted Transparencyモー
ドにある場合にのみ使用される。本モードがTRUEの場合は、原線は透過の可能性
があるとして扱われ、FALSEの場合は、原線の不透明性が保証されていることを
示す。本文脈中では、「不透明」とは、ウィンドウ中の同じ領域を占有するより
遠くのジオメトリを完全に覆い隠す原線を示す。図31の例では、頂点9から1
1によって完成された三角形は、Vertexポインタ内の「T」で示される、TRUEに
設定されたTransparentビットを持つ。これら3つの三角形は9つのタイルに接
触するため、「T」インジケータを持つエントリは9つある。
【0244】 Sortブロックにモードパケットが支給され、順にデータ記憶に書き込まれるた
め、単一のModeポインタリストが構築される。Modeポインタリスト内の各エント
リは、データ記憶内のモードパケットのアドレスである。それぞれ対応するモー
ドパケットタイプを持つ次の2種類のポインタがある。1)Sort Memory Clear
パケットを含むClearポインタ、及び2)Sort Memory Cullパケットを含むCull
ポインタである。
【0245】 Clearポインタ及びCullポインタの双方が、モードパケットのタイプを示すMod
ePktTypeパラメータを含む。両ポインタが持つモードパケットを示すブール変数
(SubFrameBreakOnClear及びSubFrameBreakOnCull)は、その点においてフレー
ムのSubFramesへの分割の原因となる。ブール変数がTRUEで現SubFrameがすでに
透過ジオメトリを含んでいる場合、そのモードパケットの直前でフレームが分割
される。図31の例では、1つのCullポインタが、そのCullポインタ内の「S」
で示される、TRUEに設定されたSubFrameBreakOnCullビットを持つ。Clearポイン
タも、Pixelブロックでバッファクリア動作が行われるべきことを示す他のブー
ル変数SendToPixelを持つ。
【0246】 Sortメモリページの読み出し中に、複数の頂点がSort原線へと組み立てられ、
モードが全てのタイルの出力ストリームに注入されるため、Sortメモリアドレス
は常に増加する。図31の例では、Tile3が読み出された場合、出力パケットの
順序(データ記憶アドレスとして指定される)は0、1、4、5、6、7、12
、及び13である。Tile3に触れた原線(例:4、5、6、及び12)だけが出力
されるが、4つのモードパケットの全てが出力されることに注目する。一般的に
、全てのモードパケットは全てのタイルの最中に送信されるが、幾つかのモード
パケットは除去することができるかまたは目的ドローバッファに関連しないため
、出力ストリームには供給されない。本処理については、後の節で詳細に論じる
【0247】 原線パケット及びモードパケットに加えて、Sortメモリは、「Tweenパケット
」と呼ばれ、ユーザフレーム間にあると考えられるデータパケットも持つ。特定
的に、Tweenパケットは、ソフトウェアがユーザフレームを発行した後及びソフ
トウェアが開始ユーザフレームを発行する前にのみパイプラインに入力できる。
アーキテクチャの観点からは、TweenパケットはSortメモリページの一部とは考
えられていない。しかしながら、Sortメモリには他にデータを保存するスペース
がないため、TweenパケットはSort WriteプロセスによりSortメモリページ内の
データ記憶の最初の部分に保存される。Tweenパケットは、先ず3Dフレームに同
期する必要がある2Dコマンドのために使用される。例えば、ジオメトリがオフ
スクリーンバッファ(pバッファ)に収められると、ストレッチビット動作がデ
ータをフレームバッファに転送する。本動作はフレーム間で行われなければなら
ない。Tweenパケットは、全ての蓄積バッファ動作にも使用される。
【0248】 図32にSortブロックの簡単なブロック図を示す。これまで論じられてきた機
能に加えて、図32が二重バッファリングされた状態レジスタを示す。これらレ
ジスタは、書き込みまたは読み出し中のフレームのパラメータを収納する。パラ
メータには、水平方向のタイル数、垂直方向のタイル数、目的ドローバッファは
二重バッファリングされているか、目的ドローバッファはステレオか、フレーム
はTime OrderモードまたはStored Transparencyモードにあるか、ピクセル内の
サンプル位置選択、サンプル重み付け、及びSortメモリまたはPolygonメモリ内
のオーバーフローがフレームの原因となったかが含まれる。
【0249】 アルゴリズムの観点からは、タイルは独立で、いかなる順序でも読み出し可能
である。しかしながら、テクスチャの再使用を最大にするために、「スーパータ
イル」と呼ばれるタイルグループが順に読み出される。スーパータイルあたりの
タイル数は選択可能でるが、我々は常にスーパータイルあたり2×2タイルの選
択を期待する。シーンホライゾンの複雑さの影響により生じる負荷の不安定を最
小化するには、スーパータイルは行ごとにも列ごとにも読み出さない。むしろ、
スーパータイルは空間的にばらばら(擬似ランダム)に読み出す。正確な順序は
重要ではないが、スーパータイルの順読み出しセットはウィンドウを横断する直
線になってはならない。本擬似ランダム歩行のアルゴリズムは後述する。
【0250】 ステレオ3Dウィンドウの場合、左右のバッファは、それぞれ別のタイルのセ
ットを持つ別々のバッファと考えられる。例えば、1024×768ウィンドウ
は64×48タイル(合計3072タイル)を持つが、ステレオウィンドウは2
×64×48タイル(合計6144タイル)を持ち、各(x、y)個所に2つの
タイルを持つ(左右に1つづつ)。
【0251】 アプリケーションが正面及び裏面バッファ双方に同じフレーム内の特定のタイ
ルを収納した場合、そのタイルは2つのパスで処理される必要がある。最初に裏
面バッファ用に、次に正面バッファ用に処理される。しかしながら、裏面バッフ
ァにのみ収められたジオメトリは正面バッファにのみ収められたジオメトリの深
度テストの結果の変更(及びその逆)が可能なために、全てのジオメトリ(正面
及び裏面の)は両パスの最中にパイプライン中を送信されなければならない。な
お、同様の開始深度及びステンシル値が両パスに対して使用されなければならな
い。従って、与えられたタイルに対する裏面及び正面パスは連続して行われなけ
ればならない(例:間に他のタイルがあってはならない)ため、Back Endはフレ
ームバッファからPixelブロック内の連続バッファへと深度及びステンシル値を
ロードすることができる。正面バッファ用のパスの初期ロード前に裏面バッファ
用のパスが完成しそうな場合は、収納エラーが発生する可能性がある。Backend
がこの処理を保証しなければならない。
【0252】 書き込みプロセス中では、原線の領域が実際にタイルの一部をカバーしている
場合にはそれら原線を割り付ける処理のみを行うことが重要である。簡単なバウ
ンディングボックスが使用されている間に、同ボックスが、特に対角線及び長く
細い対角線三角形に対してSortメモリの帯域幅を無駄にすることがある。後の節
において、Touched Tile Calculation用の簡潔なアルゴリズムを示す。
【0253】 Sortメモリページの約半分がポインタに使用される。従って、Sortメモリ内に
必要なバイト数は、最大頂点数の約64倍である(モードパケットはこの処理に
はあまり資さない)。各頂点は16バイト、ポインタは付加的16バイトを必要
とし、そして必要な2ページがある。
【0254】 Sortブロックは、各フレーム中の三角形の数などの幾つかの性能メータ関係の
情報収集を続ける。「Sortブロックからの出力」の節の従属節「性能計測能力、
ホストから読み出し可能」を参照。 5.5.2 Sortブロック機能詳細 Sortブロックは、平行動作の次の2つのプロセスを含む。1)Sort Writeプロ
セス、及び2)Sort Readプロセスである。Sort Writeプロセスは、書き込みが
完了し、読み出しプロセスが休止している場合にSort Readプロセスを開始する
ので、2つのプロセスの「マスター」である。擬似コードは、全ての変数が「大
域」であると想定する。原線が接触するタイルを決定するTouched Tile Calcula
tionなどの他の機能詳細が本節に含まれる。 5.5.2.2 Sort Write Process Sortメモリページの場合、Sort Write Processが頂点のシーケンスリスト及び
データ記憶内のモードパケットを作成する(図31参照)。Sort Write Processは
、タイルごとにTileポインタリスト及びフレームごとにModeポインタリストを作
成する。 5.5.2.2 Sort Read Process Sort Read Processは、厳格にタイルごとに出力パケットシーケンスを生成す
る。左右のタイルは個別に扱われる。 5.5.2.2.1 Sort Read Process外側制御ループ Sort Read Processの外側制御ループには次の3つの機能コンポーネントが含
まれる。1)TimeOrderMode;2)Sorted Transparency Mode OpaqueLoop();及び
3)Sorted Transparency Mode TranspLoop()である。下記の節で各コンポーネ
ントを説明する。
【0255】 最初のモードパケットが全てのタイル内に出力されるため、モードパケットの
キャッシングは、FILOベースで行われなければならない。キャッシング機構は、
少なくとも2つの先のモードパケットを見て、処理へのバブル注入からモードパ
ケットを選択する(タイムオーダリングを決定するために)アドレス比較を防止
する。 5.5.2.2.2 Time Order Packet Processing 本処理は、パイプラインがTime Orderモードにある時に実行される各Sort Mem
oryパケットタイプの処置に関わる。 5.5.2.2.3 Sorted Transparency Packet Processing、不透明ジオメ
トリ送信 本処理は、不透明ジオメトリ用の単一パスの最中にパイプラインがSorted Tra
nsparencyモードにある時に実行される各Sortメモリパケットタイプの処置に関
わる。 5.5.2.2.4 Sorted Transparency Packet Processing、透過ジオメト
リ送信 本処理は、透過ジオメトリ用の複数パスの最中にパイプラインがSorted Trans
parencyモードにある時に実行される各Sortメモリパケットタイプの処置に関わ
る。Sort Memory Clearパケットは、透過処理の間は常にスキップされている。
【0256】 5.5.2.2.5 Clearレジスタ機能 StencilModeは2ビットステンシルモードのウィンドウのセットを持っている
場合、ソフトウェアは8ビットをまたいでStencilMask及びStencilValueの2つ
の最も有意でないビットを写し取る。ソフトウェアはまた、ClearDepthの値の送
信中にOpenGL DepthMaskを考慮する。その理由としては、Backendがクリアの最
中にDepthMaskをチェックしないからである。 5.5.2.2.6 Cullレジスタ機能 CullFlushAllRegだけが実際に「蓄積される」信号である。SoftSubFrameBreak
及びOnlySoftSubFrameBreakはSort Read Processには使用されないが、デバッギ
ングの目的でSort Memory Cullパケットに含まれている。 5.5.2.3 接触されたタイルの演算 我々は、三角形、ABC、及び中心が(xTile、yTile)であるタイルを与えら
れて、三角形がタイルに触れているかを決定したい(図33)。アルゴリズムは
、三角形内の各線が、平面を内部半平面と外部半平面の2つの半平面へと分割す
ることによる。タイル全体がいずれかの線により定義された外部半平面に入って
いる場合、三角形はそのタイルには触れない。三角形がタイルに接触するには、
3つの内部半平面全ての中に少なくともタイルの一部が含まれていなければなら
ない。
【0257】 接触されたタイルの演算は線にも適用されるが、線の点描は接触された線の演
算のために無視される。
【0258】 処理を開始するために、我々はベクトルを図34に示すように三角形の線の一
つから直角にタイルの中心に走るものとイメージする。
【0259】 本直角ベクトルの大きさdを演算することにより、タイルの中心の線からの距
離及びその中心が内部半平面にあるかまたは外部半平面にあるかを決定できる。
dの負の値は、線によって定義される内部半平面にタイルの中心があることを示
している。
【0260】 我々は次に、線がタイルと交差する閾値距離tを演算する。図35A及び35B
に示すように、距離はタイルの辺(φ)の一つに関係する線の角度の関数である
【0261】 直角ベクトルdが閾値距離tよりも大きい場合は、タイル全体が三角形の外側
にある(図36C)。dが0とtの間にある場合は、線がタイルと交差し(図36B)
、dが負の値の場合は、タイルの中心は線によって定義された内部半平面の中に
ある(図36A)。
【0262】 三角形内の各線に対して上記演算を実行することにより、我々は三角形がタイ
ルに触れているかを決定することができる。 5.5.2.3.1 直角ベクトル 線ABの場合、(x0、y0)から(x1、y1)により、等式は下記のように
なる。
【0263】
【数1】 (xTile、yTile)を通り本線に直角な線の等式は下記の通りである。
【0264】
【数2】 次に、我々はオリジナルの線の交点と直角を決定する。
【0265】
【数3】 我々は、便宜的に上記等式を下記のように表す。
【0266】
【数4】 次に、我々は(x、y)及び(xTile、yTile)を演算する。 5.5.2.3.2 閾値距離の決定 閾値距離を決定するために、我々は、図37に示すようにタイルの辺の1つに
関して線の角度を見る必要がある。
【0267】
【数5】 5.5.2.3.3 全ての追加 与えられた線に基づいてタイルが三角形の外側にあるかを決定するために、我
々は下記比較を行う。
【0268】
【数6】 本比較のために、我々は角度を第一四分円に変形したので、実際のテストは下
記のようになる。
【0269】
【数7】 本テストが真である場合は、タイルは三角形の外側になる。我々は三角形内の
他の線に対しても同様の比較を行う。
【0270】
【数8】 ここで
【0271】
【数9】 これら全てのテストが偽である場合、三角形はタイルに触れている。
【0272】 線の場合、演算は三角形の1つの辺に対するそれと似通ったものになるが、我
々の関心事は線がタイルと交差しているかということだけである(すなわち、三
角形の時のように「内側」か「外側」かで悩む必要はない)。従って、我々はd
の符号を無視し、その大きさだけを考慮する。我々は、線の幅も考慮に入れなけ
ればならない。これら2つの変更は我々に下記テストを与える。
【0273】
【数10】 本テストが偽の場合は、線はタイルに触れている。
【0274】 参考までに、Andreas Schillingの"A new simple and efficient antialiasin
g with subpixel masks"、Computer Graphics1991年7月号を参照。 5.5.2.4 SuperTileホップシーケンス 3D画像を収容する場合、絵を通した水平束が画像の残りの部分をはるかに上
回る複雑さを持っている「水平線効果」がしばしば見られる。一例としては、単
純な草原が手前にあり上に空がある遠くの市街の輪郭がある。草及び空は非常に
少ない多角形を持っている(おのおの1つであることが多い)が、市街は多数の
多角形及び非常に複雑な深度を持っている。このような水平線効果は、シーンを
通した非水平束に伴って起こることもある。タイルが単純な上から下及び左から
右の順で処理されると、複雑なタイルは、パイプライン内の負荷不安定をもたら
す裏面から裏面の処理を受けることになる。従って、タイルからタイルに移るに
は、画面内をランダムに「ホップ」するのが良い。しかしながら、本処理は特別
な干渉の減少に繋がり(なぜならば、隣接するタイルが順に処理されないからで
ある)、パイプライン内のキャッシュの効率を下げ、性能を低下させる。空間の
順タイル処理及び完全ランダムパターンの間の妥協として、タイルは「スーパー
タイル」に編成される。そこでは空間的に隣接する複数タイルがスーパータイル
となる。その後、スーパータイルのランダムパターンが処理される。このように
、空間的干渉はスーパータイル内に保持され、水平線効果が防止される。
【0275】 3Dウィンドウはタイルに分割され、これらタイルは「スーパータイル」にグ
ルーピングされる。スーパータイル内のタイル数は、MEX Output Begin Frameパ
ケット内のパラメータSuperTileSizeで選択できる。タイルが処理されるシーケ
ンス(「スーパータイルホップシーケンス」と呼ばれる)は、やはりMEX Output
Begin Frameパケットに含まれるSuperTileStepにより制御される。
【0276】 図38Aにスーパータイルホップシーケンスの簡単な例を示す。本例は、18
×14配列の252個のタイルより成るウィンドウ6202を示す。SuperTileS
izeは2×2タイルと想定される(しかしながら、1×1、1×2、2×1、2
×2、2×3、3×2、3×3、3×4、4×3、または4×4を含みいかなる
サイズでも良い)ので、9×7配列の63スーパータイルがある。スーパータイ
ルのリストは、直線リストに変換されていると想定されるが、この変換はスーパ
ータイルの列単位の番号付けを左上部から始めることにより実行できる。下記変
数を定義する。 N=ウィンドウ内のスーパータイル数 M=SuperTileStep Tn=処理されるn個目のスーパータイル スーパータイル処理のシーケンスは下記の通り。 T0=0 Tn+1=modN(Tn+M) 図38Aの例では、N=63及びM=13となっている。この結果は、図38Bに描
かれているようにT0=0、T1=13、T2=26、T3=39、T4=52、T5=2、
T6=15、…のシーケンスとなる。MがNより少ない必要はない。
【0277】 本インタラクティブアルゴリズムは、N及びMが互いに素数である(すなわち、
これらの数値の最大共通因子が1である)かぎり、全てのス−パータイルをヒッ
トする。NもMも素数である必要はないが、Mが常に素数として選択される場合は
、全てのスーパータイルがヒットされる。
【0278】 代替法としては、スーパータイル配列を必要以上に大きくしてウィンドウ全体
をカバーするようにし、2a×2b=22aと想定されるので、スーパータイルの総
数は2の整数乗に保証される。本処理は、単に上位ビットを捨てるだけで「modN 」演算を可能にする。本アプローチに対するマイナス部分は、シーケンスに存在
しないスーパータイルが含まれていることである。これら存在しないスーパータ
イルは検索及びスキップされなければならない。 5.5.2.5 線フラグ 線モードの三角形の場合、Sortブロックは、各線とは独立に、線が接触するタ
イルを決定する。しかしながら、同じ三角形からの複数の線がタイルに接触する
と、1つのポインタのみがその三角形に対してTileポインタリストに付加される
。なぜならば、SortブロックがSort原線(Cull原線ではない)を分類しているか
らである。
【0279】 線モードの三角形を受信すると(例:LineModeはTRUEであり、LineFlagsパラメ
ータ内の1つ以上のビットがTRUE)、その三角形は、塗りつぶされた三角形とし
てではなく、1つ以上の線として描かれる。LineFlagsには三角形の各エッジを
示す3つのビットがあり、対応するエッジを線として描くべきかを示している。
これら3つのビットは次のものを表している。1)頂点0と1の間のエッジに対
応するビット0(LSB);2)頂点1と2の間のエッジに対応するビット1、及び
3)頂点2と0の間のエッジに対応するビット2(MSB)である。LineFlagsパラ
メータは、頂点を決定し、多角形を完成するパイプラインの一部であり、クリッ
ピングの役割を負っているために、GEOブロックに設定される。
【0280】 幾つかのエッジ線は描いてはならないため、3つのLineFlagsビットは独立に
それらビットに対応するエッジを制御する。例えば、OpenGL四辺形は、常に2つ
の三角形に分割されるが、線モードで描かれた場合は、四辺形内のエッジは描か
れない。それゆえ、オリジナルの四辺形内のエッジに対応する各三角形内の2つ
のエッジは、それらのLineフラグセットをTRUEに設定し、他の三角形内のエッジ
(四辺形内の共用エッジ)はLineフラグセットをFALSEに設定する。 5.5.2.6 三角形扇形の分割 各ポインタエントリ内のOffsetパラメータは、63の最大オフセットを内包す
る6つのビットを持っている。三角形の扇形が63以上のオフセットを必要とす
る場合、扇形はデータ記憶内の2つの頂点を写し取ることによって分割される。
カラーメモリ内でも類似した現象が起き、Sort Block Inputパケットに残りのデ
ータを付加するカラーメモリ内へのポインタはそのことを考慮しなければならな
い。 5.5.2.7 線幅考慮 OpenGL内では、幅がピクセル幅の数として、長さがエンドポイント間の距離と
して指定されるアンチアライアスド長方形として描かれる。また、これらの線は
、点描され、長方形をそれぞれの長さに合わせた一連のアンチアライアスド四辺
形へと分解し、各四辺形は通常の方法で色付けを指定されるか完璧な透過に指定
される。点描された線は、仮想的な鎖線と考えられる。
【0281】 線の原線が(線または線モード三角形)がSortブロックに受信されると、線の幅
が原線の隣接するタイルへの「こぼれ」の原因となる。 5.6 Setupブロック(STP) Setup(STP)ブロックは、Sort(SRT)ブロックからパケットの流れを受信する。
これらのパケットは、描画される原線に関する空間情報を持つ。STPブロックの
出力は、Cull(CUL)ブロックに行く。SRTから受信した原線は、塗りつぶされた三
角形、線三角形、線、点描された線、及び点である。各原線は、アライアスドま
たはアンチアライアスドモードで描画することができる。SRTブロックは、タイ
ル順にSTP(及び他のパイプラインステージ下流)に原線を送信する。各タイル
内では、データはタイムオーダーまたは分類された透過の順で編成される。CUL
ブロックは、タイル順で(実際には、STPがSRTから原線を受信する順に)STPブ
ロックからデータを受信し、絶対に描画された画像に資することのない原線のパ
ーツを選別する。本処理は2つのステージで完了する。最初のステージMCCAM Cu
llは、与えられた値よりも大きな内容を持つ長方形メモリ配列内のそれらのエレ
メントの検出を許容する。第2のステージは、サンプルごとの比較により本サー
チ上でリファインする。STPブロックは、CULブロックによる処理用の入り原線を
用意する。STPは、タイトバウンディングボックス及びMCCAM選別用のタイルを横
切る原線の一部用の最小深度値Zminを生成する。MCCAM選別ステージは、Zminよ
りも小さい深度値を含む可能性のあるバウンディングボックス内のスタンプをマ
ークする。Z選別ステージは、これらの候補スタンプを取り、それらが原線の一
部である場合は、そのスタンプ内のサンプル用に実際の深度値を演算する。その
後、この、より正確な深度値は、比較及び起こり得るサンプルごとの廃棄に使用
される。MCCAM選別用のバウンディングボックス及びZminに加えて、STPは、Z選
別ステージ用として、深度の傾き、ラインスロープ、及び深度や原線のタイルエ
ッジに対する交差点などの他の参照パラメータを演算する。CULユニットは、他
のパイプラインステージに使用されるVSPを生成する。
【0282】 コンテクストを設定するために、我々は簡潔に種々のSTP原線を説明する。 5.6.0.1 多角形 STPブロックに到着する多角形は、基本的に三角形である。それら三角形は、
アライアスドまたはアンチアライアスドモードで描画される。図39にDSGP三角
形を示す。STPユニットは、アライアスドまたはアンチアライアスド三角形を同
様に処理する。パイプラインユニット下流は、ピクセルの中央に全てのサンプル
を位置付けることによってアライアスド三角形を描画する。アンチアライアスド
のケースでは、サンプル位置は、制御パケットの1つと共に渡されるSampleLocS
elパラメータにより決定される。サンプルは、三角形の形状寸法境界内で失敗し
た場合には三角形に属する。サンプルが三角のエッジの真上で失敗した場合は、
取り込み規則を使用して本サンプルが三角形に属するかを決定する。 5.6.0.2 線 DSGPは、四辺形に変換することにより線を描画する。図40に様々に方向付け
られたアライアスドあるいはアンチアライアスド線を描くために生成された種々
の四辺形を示す。線の幅は、最も近いサポートされた幅に丸められる。SORTステ
ージに先立って幅の調整が成されなければならない。本調整はソフトウェアによ
り実行可能である。STPは入り線幅を変更しない。
【0283】 アライアスド及びアンチアライアスド線による四辺形の生成は別々の方法で行
われることに注意する。アライアスド線のばあいも、四辺形の頂点は、線がxメ
ジャーかyメジャーかによる。 5.6.0.3 点 DSGPは、アンチアライアスド点を円として描き、アライアスド点を四辺形とし
て描く。円は、ユーザが指定した位置を中心として描かれる。円の直径は、ユー
ザにより指定され、最も近いサポートされた幅に丸められた幅である。アライア
スド点を描く場合、ユーザにより指定された点の位置は、結果の幅が奇数が偶数
かによりそれぞれ、ピクセルの中心にスナッピングされるかピクセルの角に丸め
られる。線の場合は、SORTブロックに先立ち、点サイズ及び位置の調整がパイプ
ライン内で起きる。点の位置は変形に支配されるために、Geometryユニットが本
処理を行うには適当な場所に思える。図41に描画された点を示す。ユーザが指
定した点は円によって示される。 5.6.1 Setupブロックの機能概要 本節では、我々は各原線に対して実行される処置のセットアップの概要を説明
する。特定の処理の詳細を第3節に示す。 5.6.1.1 塗りつぶされた多角形 Setupは、CULユニットに対して処理用の塗りつぶされた多角形を用意する。ST
Pは、三角形の3つの頂点に対してウィンドウ座標(x、y、z)を受信する。S
TPは、多角形のオフセットの演算で使用する「係数」も受信する。アンチアライ
アスド状態は塗りつぶされた三角形セットアップがなされた手法は変更しないこ
とに注意する。CUL及びPixelブロックは、全てのサンプルをピクセルの中央に向
けて破壊させることによりアライアスド三角形のラスタ図形処理を行う。我々は
また、三角形の頂点がウィンドウ座標の有効な範囲内で崩壊すると想定する(例
:三角形の座標がウィンドウの境界にクリッピングされている)。
【0284】 エッジ上の三角形は全て廃棄される。エッジ上の三角形がVSPを生成すること
は予想されていない。我々が三角形をSTP内で廃棄しなかった場合は、CUL内でこ
れら三角形のラスタ図形処理を伴うオーバーヘッドが発生する。さらに、まれな
事象では、上記のような三角形がVSPを生成し、ピクセル照度は変則的になる。
この事象は、エッジのスロープが同等なことが発見されたときに検出される。
【0285】 各塗りつぶされた多角形では、STPが下記処理を行う。 1.頂点に対し、上部、下部、左(または右)頂点を提供するよう命令する。ま
た、中央の頂点がyの中の長いエッジの左右どちらに行くかを示すleftCまたはr
ightCフラグを設定する。例:最大及び最小のy値を持つ頂点と接するエッジ。
2. x及びyと共にzの部分導関数(δz/δx、δz/δy)を演算する。 3. 可能な場合は多角形のオフセットを演算し、各頂点のz値にオフセットを
加える。 4. CULユニットの3つのエッジのスロープを演算する。エッジ上の三角形を
廃棄する。 5. タイル境界に三角形をクリップする。 6. CULユニットに対する参照z値(参照スタンプ用の)の演算同様にバウン
ディングボックス、上部エッジ交点、及びタイルと交差する三角形領域の最小z
を演算する。 7. 原線にコードを割り付け、CULユニットに関連情報を送信する。
【0286】 以前説明したように、バウンディングボックス及びZminはMCCAM選別に使用さ
れる。上部エッジ交差、線スロープ、コーナー点、参照z値、及びz傾きはCUL
ブロックによるZ選別に使用される。 5.6.1.2 アンチアライアスド実線 CULユニットは、平行四辺形及び三角形に対して同様にラスタ画像処理をする
スキャンコンバータを実行する。アンチアライアスド線セグメントは、図42に
示すように長方形へと変換される。
【0287】 線の各端の長方形の頂点は、線のエンドポイント同様に同じz値に割り付けら
れて定数zの線を線自体に対して直角にする。各線セグメントに対しては、STP
は下記処理を実行する。 1. x及びy頂点の変位(xhw、yhw)を決定する。 2. 長方形の頂点を決定する。演算された頂点は、線がアライアスドかアンチ
アライアスドかによって変化する。 3. CULユニットに対してマイナー及びメジャー軸のスロープを演算する。(マ
イナー名軸はメジャー軸に対して直角である。) 4. 頂点に対して上部、下部、左、及び右の頂点を提供するよう命令する。 5. (δz/δx、δz/δy)と共に本長方形に対してx及びy部分導関数を演
算する。 6. タイル境界に長方形をクリップする。 7. CULユニットに対する参照スタンプ用参照z値同様に、バウンディングボ
ックス、上部エッジ交差、及びタイルと交差する長方形領域の最小zを演算する
。 8. 原線コードを割り付け、関連情報をCULユニットに送信する。 5.6.1.3 アライアスド実線 以前説明したように、アライアスド線のエンドポイントは、アンチアライアス
ド線のエンドポイントとは異なる方法で演算される。アンチアライアスド線の場
合の長方形の代わりに、我々はアライアスド線に対して平行四辺形を演算する。
平行四辺形の2つのエッジは、線の長さと並行であり、他の2つのエッジは、図
43に示すように垂直(xメジャー線に対して)または水平(yメジャー線に対
して)である。
【0288】 OpenGLは、平行四辺形の頂点の演算により下記がもたらされることを要求する
。 1. 両セグメントがxメジャーまたはyメジャーの場合、連続多線セグメント
を描いている間にはギャップもオーバーストライクも生じない。 2. OpenGLダイアモンド出口規則を使用してラスタ図形処理された総フラグメ
ント数とDSGP法の間に最大1つの行(または列)不均衡がある。 4. x及びy方向の一つ以上のユニットによりラスタ図形処理されたフラグメ
ントの座標が遷移する。
【0289】 しかしながら、本処理はCULによる平行四辺形及び三角形のラスタ図形処理に
制約を設ける。CULはフラグメント包含規則を利用して2つの原線が共有するエ
ッジの真上に位置するフラグメントが2つの原線の内の一つのみに含まれるよう
にする。(アンチアライアスド描画規則はフラグメントではなくサンプルに適用
される。)Setupは、アライアスド幅広の線を描くために下記処理を実行する。 1.x及びy頂点遷移(xhw、yhw)を決定する。 2. 線のスロープを見ることにより平行四辺形の頂点を決定する。線のエンド
ポイントは変更されない。 3. CULユニットに対して、エッジに沿い、線の長さに並行なスロープを演算
する。他の軸は水平または垂直である。 4. 頂点に対して上部、下部、左、及び右の頂点を提供するように命令する。
5. xおよびyと共に本長方形に対してzの部分導関数(dz/dx、dz/d
y)を演算する。 6. タイル境界を持つ四辺形の交点を演算する。 7. CULユニットに対する参照スタンプ用参照z値同様に、バウンディングボ
ックス、上部エッジ交差、及びタイルと交差する領域の最小zを演算する。 8. 適切な原線コードを割り付け、CULユニットに関連情報を送信する。ステ
ップ2から8がアライアスド及びアンチアライアスド線に対して同様に利用でき
ることに注意する。 5.6.1.4 点描線 点描に伴う状態は、16ビット点描パターン、点描繰り返し係数r、stplStar
Bit、及びstplRepeatStrtを含む。点描パターンは、モード中に描かれた細片、
線ループ、及び多角形の各セグメントをまたいで連続されなければならない。st
plStartBit及びstplRepeatStartは、このような連続をするために使用される必
要な状態パラメータである。Setupは、各線セグメント用のstplStartBit及びstp
lRepeatStartに関する情報を得る。Geometoryユニットは、各線セグメントの開
始においてstplStartBit及びstplRepeatStartオフセットを演算する役割を負う
。線幅wも生成された線セグメントの出現を制御する。Setupは、描画パターン
中に連続する1の列を四辺形に分解する。アンチアライアスド線の場合、四辺形
は長方形である。これらの四辺形は、「nr」の長さと幅を持っている。ここで、
nはその列の中の1の数である。これらは線の目に見える部分を表している(図
44)。
【0290】 非アンチアライアスド線の場合、四辺形は平行四辺形である。STPが1ビットの
各走行に対して四辺形を生成するため、これら四辺形の内の幾つかはタイル境界
の外にある。これら四辺形の不必要な処理を減らすために、我々は、完全にタイ
ルの外側にある四辺形を立ち上がらせることによって点描セグメントをクリップ
する。線のスタートポイント(x0、y0)がタイルの外側にある場合は、我々
は、スタートポイントに一番近いタイル境界に線をクリップする。クリップされ
た線のスタートポイントは、最初の線四辺形が完全に含まれるように生成される
。本処理は、タイル境界をまたいで連続することを保証する。本処理は、クリッ
ピングする四辺形のバンドをタイル周辺に置く処理と等価である。クリッピング
された点に対して、新たな線スタートポイントが、点描オフセットstplStartBit
と同様に生成される。(我々は旧stplRepeatStartを保持する。)図45に本処理
を示す。
【0291】 この線は、xhw及びyhwにより置換されたx及びy方向のタイルのエッジ
にクリッピングされる。従って、点描された線は下記ステップを踏んで行われる
。 1. 線がアライアスドまたはアンチアライアスドかによって頂点の置換を決定
する。 2. ガードバンドと共に線のヘッドをタイルにクリップして(tileXmin―xhw
、tileYmin―yhw、tileXmax+xhw、tileYmax+yhw)クリッピングされた点がガ
ードされたタイルの上または外に位置するようにする。クリッピングされたセグ
メントの長さの単位は点描されたビットである。新たなstplStartBitを得る。 3. 点描内の各1ビットの列は四辺形を構築してそれをパイプを通じて送信す
る。新たなスタートポイントがタイルガードバンドの外側に落ちた場合に本プロ
セスは続けられる。 5.6.1.5 線三角形 線モードで三角形を描く場合、STPユニットは、3つの三角形の頂点用のウィ
ンドウ座標(x、y、z)に加えてエッジフラグを受信する。本エッジフラグは
、Setupユニットに描くべきエッジを伝える。Setupユニットは、多角形オフセッ
トの演算に使用する「係数」も受信する。描くべきエッジは、多角形オフセット
により最初にオフセットされ、その後幅w(線属性)のリボンとして描かれる。
点描が可能な場合は、これらの線が点描される。図46に線モード三角形のジオ
メトリを示す。
【0292】 STPは各線多角形に対して下記処理を行う。 1. エッジ上の三角形を全て廃棄する。詳細は、塗りつぶされた三角形の節を
参照。 2. (δz/δx、δz/δy)と共にx及びy部分導関数を演算する。これら
のz傾きは三角形用であり、三角形のzオフセットを演算する上で必要になる。
3. 可能ならば多角形オフセットを演算し、3つの内の各頂点上のz値にオフ
セットを追加する。 4. 順にエッジを横断する。エッジが見える場合は、幅や点描などの属性を使
用してそのエッジを描く。 5. アンチアライアスド、アライアスド、及び幅などの線属性に基づいて線を
描く。 6. どのエッジが特定の原線コードによって表されているかにより、その原線
コードを割り付け、CULに送信する。 5.6.1.6 アライアスド及びアンチアライアスド点 SetupはYtop,Xcenter,及びYoffsetを検出し、これらの値を点幅及び割り付け
状態と共にCULに送信する。 5.6.2 Setupブロック機能詳細 前節までに概要を説明した種々の原線の処理は多くの共通点を持っている。本
発明者らは、上記の共通点の強化のために原線の表現を統一した。 5.6.2.1 統一された原線表現 前述のように、Setupは線セグメントを4つの頂点から成る平行四辺形に変換
する。三角形は3つの頂点を持つ。Setupは、4つの点のセットにより各原線を
表す。全ての値が全ての原線に必要ではないことに注意する。三角形の場合、Se
tupは、三角形の動作により、上部、下部、及び左または右コーナーを使用する
。線セグメントは平行四辺形として扱われるため、Setupは4つの点の全てを使
用する。図47−51にどのようにしてSetupが三角形及び線を表現するかを示
す。三角形の頂点がオリジナルの頂点と同じである間は、Setupは新たな頂点を
生成して線を四辺形として表現することに注意するべきである。
【0293】 原線の統一された表現には、ウィンドウ座標内の頂点のオリジナルセットに割
り付けられた原線ディスクリプタが使用される。なお、次のフラグは有効なかつ
意味のある値を持つディスクリプタを示す。VtxYmin、VtxYmax、VtxLeftC、VtxR
ightC、LeftCorner、及びRightCornerである。
【0294】 三角形の場合、三角形の頂点をそれらのy座標で分類することによって上記デ
ィスクリプタが得られる。線セグメントの場合、これらディスクリプタは、線四
辺形頂点が生成される時に割り付けられる。VtxYminは、最小y値を持つ頂点で
ある。VtxYmaxは、最大y値を持つ頂点である。VtxLeftCは、三角形のケースで
は長いyエッジの左側にある頂点であり(頂点VtxYmin及びVtxYmaxを組み合わせ
ることにより形成される三角形のエッジ)、平行四辺形のケースでは頂点VtxYmi
n及びVtxYmaxを組み合わせることにより形成される四辺形の左側にある頂点であ
る。三角形の長いyエッジが左エッジでもある場合は、フラグLeftCornerはFALS
E(0)であり、これはVtxLeftCが無効であることを示す。同様に、VtxRightCは、
三角形のケースでは長いyエッジの右側にある頂点であり、頂点VtsYmin及びVtx
Ymaxを組み合わせることにより形成される四辺形の右側にある頂点である。三角
形の長いエッジが右側のエッジでもある場合は、フラグRightCornerはFALSE(0
)であり、これはVtxRightCが無効であることを示す。これらディスクリプタは
、タイルエッジの上部及び下部への原線の点描に使用される。実行中は、VtxYmi
n、VtxYmax、VtxLeftC、及びVtxRightCはオリジナルの原線頂点へのインデック
スであることに注意する。
【0295】 付加的ディスクリプタとしては、VtxXmin、VtxXmax、VtxTopC、VtxBotC、TopC
orner、及びBottomCornerがある。三角形の場合、これらのディスクリプタは、
三角形の頂点をそれらのx座標で分類することにより得られる。線セグメントの
場合、これらのディスクリプタは、線四辺形頂点が生成されると割り付けらる。
VtxXminは最小x値を持つ頂点である。VtxXmaxは最大x値を持つ頂点である。三
角形の場合、VtxTopCは長いxエッジ(VtxXmin及びVtxXmaxを組み合わせたエッ
ジ)上にある頂点であり、平行四辺形の場合は、頂点VtxXmin及びVtxXmaxを組
み合わせることによって形成される対角線上の頂点である。三角形の長いxエッ
ジが上部エッジでもある場合、フラグTopCornerはFALSE(0)であり、VtxTopC
が無効であることを示す。同様に、三角形の場合、VtxBotCは、長いx軸の下に
ある頂点であり、平行四辺形の場合は、頂点VtxXmin及びVtxXmaxを組み合わせて
形成される対角線の下にある頂点である。三角形の長いxエッジが下部エッジで
もある場合、フラグBottomCornerはFALSE(0)であり、VtxBotCが無効であること
を示す。これらのディスクリプタは、左右のタイルエッジ上の原線をクリッピン
グするのに使用される。実行時には、VtxXmin、VtxXmax、VtxTopC、及びVtxBoC
はオリジナルの原線頂点内へのインデックスであることに注意する。
【0296】 図47に頂点の割り付けを図示する。なお、我々は{SIYmaxLeft,SIYmaxRight,
SILeftYmin,SIRghtYmin}として表現される4つの多角形のエッジのスロープ(δ
x/δy)及び逆のスロープ{rSIXminTop,rSIXminBot,rSITopXmax,rSIBoXmax}を
使用する。使用されているスロープ名前付け変換はSIStrEndである。SIはスロー
プを表し、Strtはエッジの最初の頂点識別子、Endは二つ目の頂点識別子である
。従って、SIYmaxLeftは左エッジのスロープでありVtxYMax及びVtxLeftCを続け
る。leftCが有効でない時、SIYmaxは長いエッジのスロープである。正面のrの
文字は、スロープが相反的であることことを示す。例えば、rは(δx/δy)
ではなく(δy/δx)を表している。図48にスロープ割り付けを図示する。
【0297】 これらディスクリプタの全てが平行四辺形の原線に対する有効な値を持ってい
るが、三角形に対してはそれらの全部が有効とは限らない。始めは、三角形や平
行四辺形などの簡単な原線を表すかなりの数のディスクリプタが存在するように
見える。しかしながら、本発明者らが後述するように、それらディスクリプタは
比較的簡単に入手でき、良好な統一的原線セットアップ法を提供する。
【0298】 STPによる種々の原線の処理中のステップの検査が下記の機能ユニットを生じ
る。 1. 三角形ディスクリプタ 2. 深度の傾き及びオフセット演算 3. 線を四辺形に変換するための頂点生成 4. 点描線処理 5. タイルへの四辺形クリッピング 6. Zmin,Zref,Bbox演算 7. 点プロセッサ 下記の各項で各ユニットのアーキテクチュアを詳述する。 5.6.2.2 三角形ディスクリプタ 三角形の場合、Setupは次の頂点のセットによりスタートする。(X0、Y0、Z0
)、(X1,Y1,Z1)及び(X2,Y2,Z2)である。この3つは、それぞれxにより分類
された頂点にへのインデックスj0、j1、j2である(昇順)。
【0299】 インデックスj0、j1、及びj2は、(dx/dy)導関数のセットの計算
に使用される。インデックスj0、j1、及びj2は、エッジに対する(dy/
dx)の演算に使用される。
【0300】
【数11】 我々は、同様のスロープの2つのエッジを持つ三角形のようなエッジ上の三角
形は廃棄する。中央の頂点が左右どちらにあるかは、頂点v[i2]及びv[i1]によ
って形成される線のスロープdx2/dy及び頂点v[i2]及びv[i0]により形成さ
れる線のdx0/dyの比較によって決定される。(dx2/dy>dx0/dy
)の場合、中央の頂点は長いエッジの右側に位置し、他の場合は、長いエッジの
左側に位置する。演算された値は次に原線のディスクリプタに割り付けられる。
xディスクリプタも同様に割り付けられる。このようにして、我々は三角形の処
理に必要な頂点ディスクリプタを得る。 5.6.2.3 深度の傾き及びオフセット演算 深度の傾きは、x及びy軸に沿ったzの部分導関数である。我々は下記の式を
使用する。
【0301】
【数12】 Setupは、各頂点z値用にSortユニットから26ビット(s25)を
受信する。部分導関数は、1.24.10の精度値として算出される。x、y座
標は、ピクセルごとの(8×8)サブラスターグリッドに対応する制度を伴う14
ビット整数である。部分導関数は、サブラスターグリッドのスケールで演算され
る。
【0302】 多角形のオフセットは下記により与えられる。 オフセット=8×係数×Max(|δZ|δX|δY|)+(r×ユニット) 「係数」はSRTブロックから渡される。(r*ユニット)オフセット部分は
GEO内でケアされる。我々は、STP内でのみ最初の項を演算する。傾きの度
合いを説明するために8による乗算が行われる。深度値は24ビット整数として表
される。オフセットは各頂点z値に加えられる。算出されたオフセットは、z値
に加えられる前に24ビット(実際にはs24)にクランプされる。 5.6.2.4 四辺形頂点生成 我々は、線セグメントを幅wの平行四辺形に変換する。我々は、一致するエン
ドポイントを持つ線などのエンド上の線を廃棄する。エンド上の線の非廃棄によ
り、線に対して幅ゼロの四辺形が生成される。本四辺形の生成は不要なパケット
のパイプを通じて送信を生じさせ、まれな場合には、VSPさえも発生し、異常な
ピクセルの照度をもたらす。オフセットのカップリング及びディスクリプタへの
頂点の割り付けのプロセスは以前に示したが、非常に直覚的である。アーキテク
チュア上のパイプラインスルーは、可能なピットフォールを監視することを要求
する。線のエンドポイントが与えられ、下記のようにトリゴメトリックを算出す
る。 run=|(x1-x0)|:rise=|(y1-y0)|; tan(a)=rise/run; cos(a)=1/sqt(1+tan(a)*tan(a)): sin(a)=tan(a)/sqt(1+tan(a)*tan(a)); 我々は線の幅をwと想定し、エンドポイントにおける水平及び垂直頂点の遷移
は、図42及び43に示されるようにそれぞれxhw及びyhwにより与えられ
ると想定する。次に4つの四辺形の頂点が下記のように割り付けられる。 V[0]=(x0−xhw、y0+yhw);V[1](x0+xhw、y0−yhw)
; V[2]=(x1−xhw、y1+yhw);V[3]=(x1+xhw、y1−yh
w); Xhw及びyhwとそれに続く四辺形の演算は、線の方角及びそのアライアシン
グ状態に基づいて行われる。図49に線の方向に基づいた四辺形割り付けを示す
【0303】 線が位置する四辺形は、(x0、y0)に対する(x1、y1)の相対位置を
見ることによって決定される。xhw、yhw、及び四辺形用の原線ディスクリ
プタが決定される。本発明者らは、StrtClipX,StrtClipY、EndClipX,EndClipY,O
pX,及びOpYのアサイメントもここに加えた。これら6つのパラメータは、点描線
の処理中に使用される。StrtClipX,StrtClipY,OpX,及びOpYは、完全にタイルの
外側にある全ての点描セグメントの初期除去中に使用される。OPSに伴うEndClip
X,EndClipYは、いつ線がタイルを励起するかを決定するのに使用される。
【0304】 本処理は、さらなる処理のために、我々に四辺形用の頂点及び原線ディスクリ
プタを与える。 5.6.2.5 点描線処理 本規格中の他の場所に概要を示すように、点描線処理には2つのステージがあ
る。最初にタイルに接触していない点描セグメントを取り除き、新たな開始点描
ビットを計算する。次に、線を横切って点描内の1ビットの列に対応する線長を
生成する。四辺形頂点生成が我々に半値幅の遷移を提供してくれたものと想定す
る。最初のステップは、ガードバンドによりエッジを遷移した後に線のタイル境
界との交差点を探し出すことである。SRTブロックが我々に対してタイルに接触
している線のみを送信することに注目する。従って、スロープなどに基づいた線
の三重リジェクションをチェックする必要がある。StrtClipX,StrtClipY,OpX,及
びOpYは前節で入手されている。
【0305】 一旦交差点(xint,yint)が演算されると、与えられた開始点と交差点の間にわ
たる点描パターンビットの数を見つける。本stplStartは、nビットに加えられ
、考慮のために必要な現点描を見つけるのに低位の4ビットが必要である。StplR
epeatStartは、変更されないままである。線の開始点は、「nビット」点描パタ
ーンビットの収容に使用される線の長さにより遷移する。
【0306】 本発明者らは、よりタイトなクリッピングを行い、新たなstplRepeatStartを
生成することもできたことに注意するべきである。本手順は、最良の場合は最大
で追加四辺形の1処理をセーブするので、行われることはない。この利点がハー
ドウェアコストを増加することはない。
【0307】 我々はここで、線セグメントを横切り、最初のビット用のstplRepeatStartに
おいて開始する更なる繰り返し係数を用いてstplStartビットから点描パターン
内の1ビットの各走行用の四辺形の生成を開始する。実施例について考える。St
plStartが14でstplRepeatが5でstplRepeatStartが4の場合、我々は、15番目
のビット(例えば点描パターン内の最終ビット)に移る前に14番目のビットを
サンプルパターンで一回塗る。14番目及び15番目のビットの双方が設定された
ら、0番目の点描ビットは設定されず、四辺形線セグメントは6の長さを持つ。
擬似コード内のXscale及びYscaleは、点描線の前処理中にサブルーチンDoStippl
eClip内で先に演算されたそれらと同じものである。
【0308】 一度得られた線セグメントエンドポイントは、実線として収容可能である。全
ての四辺形に共通のパラメータが一度だけ演算されれば済むように、マイクロア
ーキテクチュアに最適化が導入される。深度の傾き、線スロープ、深度オフセッ
ト、及びxhw、yhwは全ての点描四辺形に共通であり、それゆえ一度だけ生
成すれば良い。 5.6.2.6 タイル境界にクリッピングされた四辺形 最小z及びCULブロック内でMCCAM選別に必要なバウンディングパラメータを得
るために、我々は現タイル上の原線の交差を考慮する必要がある。我々の統一さ
れた原線表現において、我々はさらに一般化された四辺形を使用して三角形を表
現する。我々は、原線クリップディスクリプタを使用してタイル上の原線の交差
を表す。これらディスクリプタは、タイルの4つのエッジ及び交差が有効な値を
作成したかを示す有効な添付フラグを持つ原線の交差点である。クリップディス
クリプタのネーミングを図50に示す。下記の各項に原線のタイルへのクリッピ
ングに使用されるアルゴリズムの詳細を示す。 5.6.2.6.1 頂点クリップコードの演算 我々は先ず、各原線の頂点に対してクリップコードを演算する。クリップコー
ドは、図50に示すように頂点に割り付けられており、各頂点に対して下記のよ
うに得られる。
【0309】
【数13】 5.6.2.6.2 交差の演算 我々はクリップコードを使用してクリッッピングされる必要のあるエッジ及び
目標境界を決定する。考慮されている原線は凸面である。各タイルエッジは半平
面を定義し、それゆえ我々は各エッジにおいて2つまたは0個の交差するポイン
トを持つ。
【0310】 上部タイルエッジ上でのクリッピングは、上部タイルエッジ上の左右のクリッ
プ頂点であるlLeft及びlRightを生じる。
【0311】 下部タイルエッジ上のクリッピングは、上部エッジ上のクリッピングと同様に
実行される。下部エッジクリッピングはbLeft及びbRightすなわち、左下部及
び右下部のクリップ頂点を生じる。
【0312】 左右エッジクリッピングは、xに分類された頂点を使用して左エッジに高及び
低交差するポイントlLow及びlHighを、右エッジにrLow及びrHighを生じる。左エ
ッジに対する手順は、下部エッジと同様であり、右エッジに対する手順は、上部
エッジと同様であることに注意する。我々がスロープディスクリプタの代わりに
逆スロープディスクリプタを使用していることにも注意する。
【0313】 左タイルエッジ上のクリッピングは、右タイルエッジと同様に行われる。左エ
ッジクリッピングの出力は2点lLow及びlHighである。
【0314】 我々はここで、8点全て、つまりlLeft、lRight、bLeft、bRight、、lLow、
lHigh、rLow、及びrHighを入手する。 5.6.2.6.3 交差ポイントの有効化 最初に交差ポイントを有効化してそれらが正しい範囲にあることを確認する。
例えば、上部タイルエッジを持つ交差ポイントは、両方ともタイルの左側である
可能性がある。この場合、交差ポイントは無効とマークされる。エッジを持つ交
差が1つまたは両方のタイル上部コーナーを含む場合、有効な新しい交差ポイン
トが生成される。
【0315】 交差ポイントのいずれもが有効でない場合は、原線は廃棄される。ほとんどの
場合、タイルの外側に位置する三角形はSRTブロックにより廃棄される。しかし
ながら、まれなケースでは、そこにおける頂点の11.3へのスナッピングが幾
つかの曲がりくねりの原因となる長く細い三角形のような完全にタイルの外にあ
る三角形を我々が得ることもある。この場合、有効なフラグが我々に三角形を廃
棄することを許可する。 5.6.2.6.4 ウィンドウの外側の四辺形頂点 ウィンドウのエッジにおけるタイル上の広い線により、一つ異常の算出された
値がウィンドウ範囲の外側に位置することが可能である。Setupは、余分な座標
範囲の2ビット(1つは負の値を許可し、1つは大きさの範囲を増加する)をキ
ャリーすることにより上記の状態を処理することができる。CULブロック(x座
標に対して14.2)に送信されるデータの範囲及び精度はウィンドウ範囲内の
点を定義するに十分である。CULブロックがSetupから入手するデータは左右のコ
ーナー・ポイントを含む。四辺形頂点がウィンドウ範囲の外側に落ち込むケース
では、Setupは下記値をCULに渡す。 ・ tRightxがウィンドウ範囲の右側の場合は、右ウィンドウエッジへのクラン
プ ・ tLeftxがウィンドウ範囲左側の場合は、左ウィンドウエッジへのクランプ ・ v[VtxRightC].xがウィンドウ範囲の右側の場合、例えば右タイルエッジを右
コーナーとして頂点rLowを送信する。 ・ v[VtxLeftC].xがウィンドウ範囲の左側の場合は、左タイルエッジ上の下部
クリップポイントなどのlLowを左コーナーとして送信する。 本処理は、図51に図示されている。
【0316】 三角形がジオメトリによって有効なウィンドウ範囲にクリッピングされること
に注意する。我々が配慮しなければならないのは、広い線に対して生成される四
辺形だけである。Cullは、ラスタ画像処理中にスパン及び点を計算しているばあ
いに、エッジ歩行中の範囲外のx値の原因となるオーバーフローおよびアンダー
フローを検出する必要がある。オーバーフローまたはアンダーフローが起きた場
合、x範囲はタイル範囲内でクランピングされなければならない。
【0317】 我々はここで、クリッピングされた点と有効なフラグを得た。我々はここで、
zmin、バウンディングボックス、及び参照スタンプの演算へと進むことができる
。 5.6.2.7 バウンディングボックス、最小Z及び参照スタンプ決定 バウンディングボックス、zMin、及び参照スタンプ値の演算のために、我々は
原線のタイルとの交差を使用する。我々は、タイル内に位置する原線の一部に対
して最小Z値を演算する。境界への原線のクリッピングは、Cullブロック内MCCM
選別に対するZminのタイトな評価を得るために重要である。 5.6.2.7.1 バウンディングボックス演算 原線交差のバウンディングボックスはクリッピングされた頂点を検査すること
によって決定される。我々は最初にバウンディングボックスをタイル境界に初期
化し、次にエッジクリップ点を検査することによりタイル内へと移動する。
【0318】 我々はここで、バウンディングボックスを得た。これらxmin,xmax,ymin,ymax
pixel座標はスタンプ座標へと変換する必要がある。本処理は、先ず座標をタイ
ル関連の値に変換し、次に3つの高位ビット(例:1ビットにより右シフト)を
考慮することにより完了する。xmax(及び/またはymax)がタイルのエッジ上に
ある場合を除いてはこの処理は効果的である。その場合、我々はシフティング前
にxmax(及び/またはymax)を1だけ増加させる。 5.6.2.7.2 最小Z演算 我々はここで、原線のタイルとの交差に対する最小z値を演算した。我々は、
8つの交差ポイント及び、クリッピング演算に含まれていない可能性があるため
に、頂点i1を考慮する必要がある。深度演算は高価な動作であり、それゆえ我々
は実行すべき深度演算の回数の最小化を望んでいることに注意すべきである。x
およびy内の部分的な導関数の符号を検査することにより、我々は、原線が完全
にタイルをカバーしている場合には、最小深度値に対応するタイルコーナーを検
出することができる。一旦タイルコーナーを決定すると、我々が必要なのは、2
つの最も近いクリッピングされた点における深度値を演算することだけである。
頂点i1におけるz値に伴うこれら2つの値は、最小z値を提供する。
【0319】 我々はここで、最小z値及びそれを得たクリップ頂点を知った。Z値は、CULに
送信される前に24ビットにクランピングされる。我々はここで、参照スタンプ
及び参照z値を演算する。 5.6.2.7.3 参照スタンプ及び参照Z演算 原線の各頂点に対してZataiを渡す代わりに、Setupは原線内の特定の点におけ
るZ値を表現する単一のZ値を渡す。Setupは、最小zを持つ頂点を含む参照スタ
ンプを選ぶ。我々は、頂点座標を整数値に切り上げ、対応するスタンプを検出す
ることにより本処理を完了する。右のエッジ上の頂点の場合は、参照スタンプが
演算される前に、x座標は減じられる。Logicが参照スタンプを識別するために
使用さる。
【0320】 参照スタンプは、チップ頂点のx及びy座標に増分値を加え、x及びy値を最
も近くにある偶数に切り上げて含まれているスタンプを検出することにより識別
される。
【0321】 参照Z値ZrefTileは参照スタンプの中央で計算される。Setupは、タイル内の位
置を指定する3ビット値のペアxrefStamp及びyRefStampにより参照スタンプを
識別する。参照スタンプはスタンプ内のタイルのコーナーからのオフセットとし
て識別されることに注意するべきである。
【0322】 我々は、スクリーンスペース内のオフセットを得るために、8(スタンプ内の
サブピクセルの数)で乗算を行わなければならない。
【0323】
【数14】 我々はここで、三角形及び平行四辺形の処理に必要な全てを得た。 5.6.2.8 点処理 点の場合は、下記を検出する(図52参照)。 CY7(タイル座標内のタイルの上部エッジにクリップされる円の最上部の点) CY8(タイル座標内のタイルの下部エッジにクリップされる円の最下部の点) Yoffset(CYTとクリッピングされていない円の下部の間の距離) X0(ウィンドウ座標内の中央のX座標) 点に対する必要な計算中では、我々は、0.0から16.0の範囲を持つ関連
y値用の8ビットを使用することに注意する。本処理は5整数ビットを必要とす
る。ピクセルあたりの8サブレスターに対して3少数ビットが考慮される。 5.6.2.8.1 無限dx/dy 無限dx/dyは、エッジが完全に水平であることを暗示している。水平エッ
ジの場合は、2つのエンドポイントの内の一つがコーナー頂点(VtxLeftCまたは
VtxRightC)になるはずである。座標がウィンドウ範囲にある原線では、Cullは
無限スロープを利用しない。なぜならば、Cullのエッジ歩行アルゴリズムでは、
左及び/または右コーナーの頂点の値から、Cullがすでにコーナーを回っており
、水平エッジに沿って歩く必要は全くないということが分かる。
【0324】 不都合なことには、四辺形の頂点がウィンドウ範囲の外側に落ち込んだ場合は
、我々は、特に非アンチアライアスド線の場合に、軽微な問題に遭遇する。右上
部のコーナーがウィンドウ範囲の外側にある非アンチアライアスド線を考慮する
。RightCは次にrLowクリップポイントに移り、Cullのエッジ歩行は水平エッジ
のコーナーを曲がることは考えず、tRight(またはtLeft)のスパンエンドポ
イントを計算する。
【0325】 この場合、Cullのエッジ歩行はスロープを必要とする。エッジ歩行の開始点は
ウィンドウの最も端にあるために、エッジ歩行が現在符号が付加されているスロ
ープにより計算するXがオーバーフロー(またはアンダーフロー)の原因となり
、Xは単にウィンドウエッジにクランプバックされる。従って、どのようなスロ
ープの値を使用しているかは、それが正しい符号を持っている限り、実際には重
要ではない。
【0326】 無限の値も、Setup自身によるスロープの利用の上では重要ではない。Setupは
、スロープを使用してタイルエッジを含む原線のエッジの交差を計算する。交差
の計算で使用する等式は、X=X0+△Y*dx/dyである。この場合、無限のdx/dyが
必要なゼロの△Yを含む。従って、dx/dyの値は重要ではない。
【0327】 Setupは、内部的に浮動小数点フォーマットでスロープを計算する。無限結果
が起きた場合には、浮動小数点ユニットが無限大フラグを出す。Setupは無限ス
ロープを気にせず、Cullは無限スロープの大きさを気にしないが、符号は気にす
るため、我々は実際に無限大を表す必要はない。正しい符号を決定するわずらわ
しさを解消するために、Setupは無限スロープをCull上に渡す前に強制的にZERO
に設定する。 5.7 Cullブロック(CUL) 5.7.1 CULブロックの機能概要 Cullユニットは次の処理を受け持つ。1)事前シェ−ディングをしている隠れ
た表面の除去、及び2)原線ジオメトリのエンティティー(三角形、線、及び点
)を可視スタンプポーション(VSP)と呼ばれるスタンプベースのジオメトリエ
ンティティーへの分解である。Cullユニットは、一般的に、隠れた表面の保存性
選別を行う。Cullは、アルファテスト及びステンシルテストなどの一部「フラグ
メント動作」を扱わないため、隠れた表面を取り除くだけである。Cullブロック
のサンプルzバッファは2つの深度値を持つことができるが、Cullブロックは各
サンプルごとに原線の属性を保存するだけである。このように、サンプルが2つ
のジオメトリから混合する色を必要とする場合は、両混合ジオメトリを隠す後続
のジオメトリが存在する可能性がある場合でもCullは最初の原線を(タイムオー
ダーを使用して)パイプラインに送り込む必要がある。
【0328】 Cullユニットは、Setup Output Primitiveパケットを受信する。受信するパケ
ットの各々は、タイルごとに三角形、線、またはポイントを表す。Sortは、入り
ジオメトリエンティティーをタイルに貯蔵するユニットである。Setupは、隠れ
た表面の除去のためにより詳細なジオメトリに関する情報をCullに提供する目的
で原線を前処理するユニットである。Setupは、全てのエッジ、タイルを持つ原
線のバウンディングボックス、タイル内原線の最小深度値(一番前)及び他の関
連データの前計算を行う。Sortに先立ち、Mode Extractionはすでにカラー、ラ
イト、テクスチャ、及び関連モードデータを抽出している。Cullは、Cull及びPo
lygonメモリ内に保存されたカラー、ライト、及びテクスチャデータをポイント
するColorポインタと呼ばれるポインタに関連するモードデータを取得するだけ
である。
【0329】 Cullユニットは一度に1つの可視スタンプポーション (VSP)をMode Injection
ユニットに送信する。Mode Injectionは、VSPをそのカラー、ライト、及びテク
スチャデータと再結合し、パイプライン内のFragment及び後続のステージに送信
する。
【0330】 Cullユニットは2つの主な機能を実行する。一次機能は、フレームバッファの
最終結果に影響を及ぼさないように保証されたジオメトリの除去である(例;保
存ベースの隠れた表面の除去)。第二の機能は、スタンプポーション(SP)単位
への原線の分解である。スタンプポーションは、原線の与えられたスタンプとの
交差である。ポーションの量はサンプリングにより決定される。いずれのスタン
プも、16の事前に決定されたサンプルポイントを持つ(実際には、スタンプ内
の各ピクセルは4つの事前に決定されたサンプルポイントを持つ)。次に、ポー
ションの「サイズ」が数字で与えられ、与えられたスタンプ内でサンプルポイン
トが原線にカバーされる。
【0331】 Cullは一度に1タイルの原線を処理する。しかしながら、現フレームの場合は
、パイプラインは次の2つのモードのいずれかで動作する。1)Time Orderモー
ド、または2)Stored Transparencyモードである。Time Orderモードでは、頂
点及びモードのタイムオーダーは各タイルと共に保存され、タイルはデータを通
じて単一のパス内で処理される。すなわち、与えられたタイルでは、頂点及びモ
ードが書き込み時と同じ順序で読み出されるが、現タイルに影響を与えない場合
にはスキップされる。Sorted Transparencyモードでは、各タイルの処理は複数
のパスに分割される。最初のパスでは、保証された不透明ジオメトリが処理され
る(Sortブロックは本パスに対して非透過ジオメトリを送信するだけである)。
後続のパスでは、潜在的に透過なジオメトリが処理される(Sortブロックは、各
パスに対して全ての透過ジオメトリを繰り返し送信する)。各パス内では、タイ
ムオーダリングが保存され、モードデータが本パスの正しいタイムオーダー箇所
に挿入される。
【0332】 Time Orderモードでは、タイル内に「単純不透明ジオメトリ」(例:しザース
テスト、アルファテスト、カラーテスト、ステンシルテスト、ブレンド、または
ロジコプなし)しかない場合は、Cullは、Mode Injectionに対していずれのVSPを
もディスパッチするまえに、タイル内の原線を処理する。なぜならば、Cullの隠
れた正面の除去アルゴリズムは、各サンプルに対し、そのサンプルをカバーする
原線(例:カラー)を明確に決定するためである。
【0333】 Time Orderモードでは、入力ジオメトリがタイル内で「単純不透明ジオメトリ
」に限定されていない場合は、VSP(VSPの全セットまたは選択されたVSP)の配
列ディスパッチが必要となる場合がある。しかしながら、別のタイルのVSPのデ
ィスパッチが可能になる前に与えられたタイルの全VSPは例外なくディスパッチ
される。一般的に、1つ以上のジオメトリが、いずれかのサンプルに対して(ピ
クセル内の)最終タイル値に影響を与え得る場合は、早期のディスパッチが必要
になる。
【0334】 Sorted Transparencyモードでは、各タイルは複数パス内で処理される(同タ
イル内に少なくとも幾つかのジオメトリがあるものと想定)。各パスにおいては
、VSPの早期ディスパッチはない。
【0335】 入力パケットが原線パケットの場合、PrimTypeパラメータが原線タイプ(三角
形、線、または点)を示す。すなわち、パケットは原線を平行四辺形として表し
(スクリーンには合わせない)、三角形及び点として表すのは縮退の場合である
。ここで、「統一された表現」は、「Setup Output Primitiveパケット」の節で
詳細に述べられている。このパケットは、Mode Injectionが使用するカラーポイ
ンタを含む。このパケットは、その多くが各原線ごとに変化できる幾つかのモー
ドビットも含む。次のものが「モードビット」と認識され、Z Cull状態マシーン
に入力される。CullFlushCurrent、DoAlphaTest、DoABlend、DepthFunc、DepthT
estEnabled、DepthTestMask、及びNoColorである。
【0336】 原線に加えて、Cullは次のパケットタイプを受信する。Setup Packet Clearパ
ケット、Setup Output Cullパケット、Setup Output Begin Frameパケット、 S
etup Output End Frameパケット、Setup Output Begin Tileパケット、及びSetu
p Output Tweenパケットである。これらパケットタイプの各々は、後続の節で詳
細に述べられている。しかしながら、これらパケットは総体的に「モードパケッ
ト」として知られる(確実に惑わされ易い名前である)。
【0337】 Setup Output Clearパケットは、ある種のバッファクリアが行われることを示
している。しかしながら、ユーザフレームの開始時の(そしてシザーステストを
受けない)バッファクリアは、開始タイルパケットに含まれる。
【0338】 Setup Output Cullパケットは、モードビットのパケットである。本パケット
は、次の処理用のビットを含む。1)MCCM Cull及びZ Cullプロセスの有効化/
無効化、2)Cullブロックから全VSPを洗い流すビットCullFlushAll、及び3)
3タイプの原線のアンチアライアシングを無効化するAliasPolys、AliasLines、
及びAliasPointsである。
【0339】 Setup Output Begin Frameパケットは、Cullに対して新たなフレームが開始中
であることを伝える。次のパケットはSort Output Begin Tileパケットである。
Setup Output Begin Frameパケットは、パイプライン全体を通じて必要な全ての
フレーム前情報を含む。
【0340】 Setup Output End Frameパケットはフレームが終わり、現タイルの入力が完了
したことを示す。
【0341】 Setup Output Begin Tileパケットは、Cullに対して現タイルが終わり、処理
されたデータがパイプラインに洗い流されることを伝える。同時に、本パケット
は新たなタイルの原線の処理を始める。パイプラインがSorted Transparencyモ
ードにあるためにタイルを繰り返さなければならない場合には、このタイルは他
のSetup Output Begin Tileパケットを必要とする。従って、特定なタイルが不
透明なパスと4つの透過パスを必要とする場合、合計5つの開始タイルパケット
がSetupから送信される。本パケットは、ウィンドウ内のタイルの位置を指定す
る。
【0342】 Setup Output Tweenパケットは、実際にはタイル間であるフレーム間(‘twee
nと略)で生起する。Culは、このパケットを空のボックスとして扱い、単にパイ
プライン内を送信する。このパケットは、1つのパラメータ、144ビットのTw
eenDataしか持たない。
【0343】 図53にCullブロックの基本ブロック図を示す。
【0344】 原線を受信すると、Cullは、原線のバウンディングボックスを持つMCCA900
2に問い合わせて受信した原線を除去しようとする。MCCAMが原線が完全にタイ
ル内に隠れていると伝えてきた場合は、原線は捨てられる。MCCAMが原線を完全
に拒絶できない場合は、スタンプリスト生成する。リスト内の各スタンプは、目
に見える可能性のある原線の一部を含むことがある。この潜在的に可視なスタン
プのリストは、Cullのスタンプ選択ブロック9008に送信される。スタンプ選
択ブロックは、原線のジオメトリデータを使用して、実際に原線が接触するタイ
ルの各スタンプの配列内のスタンプのセットを決定する。MCCAMが提供するスタ
ンプリストとの組み合わせで、スタンプ選択ブロックは、一度に1つの潜在的に
可視なスタンプ9006をZ Cullブロック9012に向けてディスパッチする。
各スタンプは16×16サブピクセルの格子に分割される。各水平格子線は、サ
ブラスター線と呼ばれる。スタンプごとの各16サンプル点は、256の予想さ
れるサブピクセル位置の内の一つの中心で(アンチアライアスド原線に対して)
落ち込む。各ピクセルは、その境界内に4サンプル点を持つ。原線に接触するス
タンプの配列内のスタンプのセットの決定には、少なくとも1サンプル点を含む
各サブラスター線内原線の最も左または右の位置の計算が関係する。我々は、こ
れら最も左及び右の位置をXleftSubSi及びXrightSubSiと呼ぶ。これらは、それ
ぞれサンプルiに対するx最左サブラスター線及びx最右サブラスター線を表す
。サンプルは0から15に計数される。XleftSubSi及びXrighSubSiの決定は、特
にエッジ歩行プロセスと呼ばれる。我々がエッジ(x0、y0)上の点を知って
いる場合は、y1のy位置に対応するx1の値は下記により簡単に決定できる。
【0345】
【数15】 スタンプ番号に加えて、16のXleftSubSi及びXrighSubSiのペアのセットもス
タンプ選択ブロックからZ Cullに送信される。
【0346】 Z Cullユニットは一度に1つのスタンプ番号(またはStampID)を受信する。
各スタンプ番号はMCCAMの決定により可視の可能性がある原線のポーションを含
む。16のXleftSubSi及びXrightSubSiのペアのセットは、我々に対して16サ
ンプル点の内のいずれが原線によってカバーされるかの選択を可能とする。サン
プルiのx座標値Xsampleiが下式を満足すると、サンプルiはカバーされている
【0347】 XleftSubSi×Xsamplei<XrightSubSi カバーされた各サンプルに対して、我々は、そのサンプル点において原線のz
値を計算する。同時に、16サンプル点全てに対する原z値及びz状態がサンプ
ルzバッファから読み出される。各サンプル点は、「保存性」または「正確」の
z状態を持つことができる。Cullが受信するモードビットと組み合わされたz状
態は、サンプル有限状態マシンを駆動する。各サンプル点は、他のサンプルから
独立したFSMを持つ。状態マシンは、原線のz値及びzバッファのz値間でサン
プルごとの比較を制御する。比較結果は、新たな原線が原線がカバーする各サン
プル点において見えているか隠されているかを決定するのに使用される。原線が
見えるサンプル点を持っている場合、可視サンプルパターンが新たなVSPカバレ
ッジマスク内に作成される。サンプルのピクセルFSMも、zバッファがどのよう
に同サンプルのために更新されるべきか、及び新たなVSPのサンプル点が早期に
ディスパッチされるべきであるかを決定する。なお、上記FSMは、間違いなくサ
ンプルポイントであるいずれかの旧VSPが、破壊されるべきか、早期にディスパ
ッチされるべきかを決定する。これらのサンプルごとの制御信号は、Z Cullによ
るSendNew、KeepOld、及びSendOldとして生成され、スタンプオプションマスク
ユニット9014に送信される。ピクセルの制限状態用の状態テーブルはアーキ
テクチュアの規格に記されているため、ここでは繰り返さない。最大16個のサ
ンプルポイントのz値は、MCCAMを更新するのに使用される。
【0348】 分類された透過性はZ Cullの追加的発行を提示し、サンプルzバッファに対し
てZfar及びZnear値に関する議論をもたらす。Sorted Transparencyモードでは、
我々は、透過な原線に対し、タイムオーダーのラスター画像処理の通常モードの
代わりに一番前面にある不透明層に最も近い層から空間オーダーでラスター画像
処理されることを望む。本処理は、タイル用の透過原線がCullユニットを数回通
り抜けることを要求する。最初に、Sortユニットは不透明原線のみを送信する。
z値は前項で説明されているように更新される。我々は、タイプZtarの不透明原
線に対してz値を呼び出す。パスの最後には、不透明VSPがディスパッチされる
。二回目のSortは、タイル用の透過原線をCullに送信するだけである。最初には
、ZバッファのZnearポーションは、考えられる最小の値にプリセットされる。Zf
arの後ろにあるz値を持つサンプル点は隠されているが、Zfarの前、Znearの後
ろのz値は不透明に近く、それゆえ現Znearのz値を置き換える。パスの最後で
は、我々は不透明層に一番近い層のz値を持つ。不透明な層に一番近いことを表
すVSPがディスパッチされる。Znear及びZfarの役目は入れ替えられ、Z Cullは透
過な原線の2番目のパスを受信する。本プロセスは、Z Cullが透過な原線の全て
の可能な層がそれ自身により処理されたと確定するまでは続けられる。分類され
た透過モードのZ Cullもまたピクセル制限マシンにより制御される。
【0349】 スタンプポーションマスクブロックは、タイル内の各スタンプに対してVSPカ
バレッジマスクを持っている。スタンプが保有できるVSPの数は、16までであ
る。Z Cullから新たなVSPが来た場合は、VSPマスクは更新または早期ディスパッ
チが必要になる。スタンプポーションマスクブロックは、厳密にSendNew、KeepO
ld、及びSendOld制御信号によりマスク更新またはディスパッチを行う。新VSPが
潜在的にスタンプ内の全旧VSPのカバレッジマスクの変更能力を持っているため
、最大16個の旧VSPの更新が同時に起るはずである。スタンプポーションデータ
ブロック9016は、カラーポインタも含むVSPに伴う他の情報を含んでいる。
スタンプポーションデータメモリもタイルに含まれる全VSP用のデータを持つ必
要がある。新VSPが作成されると、それに伴うデータがメモリに保存される必要
がある。旧VSPがディスパッチされると、そのデータがメモリから検索される。
5.7.2 Cullブロック機能詳細 Cullブロックは次のサブユニットにより構成される。1)入力FIFO、2)MCCAM
Cull、3)Sibrasterizer、4)行選択、5)Z Cull、6)MCCAM更新、7)新VSPキ
ュー、8)Stamp Portionメモリマスク、9)Stamp Portionメモリスタンプポーシ
ョンメモリデータ、10)ディスパッチキュー、及び11)ディスパッチロジッ
クである。これらサブユニットを下記の各節で説明する。
【0350】 図54にCullサブユニットのブロック図を示す。 5.7.2.1 入力FIFO 入力FIFOサブユニット9050は、Setupユニット8000とインタフェース
する。本サブユニットはSetupからデータパケットを受信し、各パケットをキュ
ー内に収容する。必要なFIFOメモリ場所の数は、16から32の間であるが、こ
こでは我々は、深度を16と仮定している。 5.7.2.2 MCCAM Cull MCCAM Cullサブブロック9002は、Spatial Addressableメモリ(MCCAM)を
使用して原線のバウンディングボックス上で空間的問い合わせを行うことにより
バウンディングボックス内の可視の可能性があるスタンプのセットを決定する。
Z比較のために本サブブロックが使用する値は、ZminTileである。MCCAM Cullは
、入力FIFOから1サイクルにつき1つの原線を処理する。FIFOが空でなく、取り
除かれた最後の原線がMCCAM Cullで決定されたごとく完全に隠されているか、ま
たは最後の原線が現在Subrasterizer95052により処理されている場合には
、FIFOからの読み出し動作が実行される。すなわち、MCCAM CullはSubrasterize
rの「ワーカヘッド」にはならない。むしろ、本サブユニットはSubrasterizerが
処理する必要のある次の原線を得て、その後待ち状態に入るだけである。 5.7.2.3 スタンプ選択ロジック内Subrasterizer サブラスタライザ9052は、エッジ歩行を実行するサブユニットである(実
際の演算は、「歩行」の語が示唆するようにインタラクティブではない)。スタ
ンプの各列はMCCAM Cullはスタンプの各列が潜在的に可視であることを示してい
る。本サブユニットは、16個のサンプル点の各々に対してXleftSubi及びXrightS
ubiを同時に計算する。各XleftSubi及びXrightSubiのペアは、原線に接触される
列内のスタンプのセットを指定する。Subrasterizerは、サンプル点が位置する
各サブラスタ線に対してスタンプの列内で接触されるスタンプのセットを決定し
、1つの接触されたスタンプのリスト内に接触された16セットのスタンプを組
み合わせる。Subrasterizerは、各スタンプの列のために要求をMCCAM Cullに渡
し、可視スタンプリストを受信する。可視スタンプリストは、接触されたスタン
プリストと組み合わされ、それによりスタンプ列内の最終潜在可視スタンプリス
トが決定される。各列に対しては、可視スタンプセットがStamp Selectionロジ
ックのColumn Selectionポーションに送信される。Subrasterizerは、各サイク
ルごとに1つのスタンプの列を処理できる。原線が1つ以上のスタンプの列を含
んでいると、Subrasterizerは、1サイクル異常を費やしてその原線を処理し、
それゆえMCCAMに対して入力FIFOからの原線の除去を中断するように要求する必
要がある。Subrasterizer自身は、Column Selectionユニットからの要求に従っ
て中断することができる。 5.7.2.4 Stamp Selectionロジック内カラム選択 カラム選択サブユニット9054はZ Cullユニット9012に対して各クロッ
クサイクル内で処理するスタンプを伝える。 5.7.2.5 Z Cull Z Cullサブユニット9012は、サンプルzバッファを含む。Subrasterizer
が計算したXleftSubi及びXrightSubiに基づき、このサブユニットは原線にカバ
ーされるスタンプ内のサンプルポイントのセットを決定する。このサブユニット
は次に、それらのサンプルポイントにおいて原線のz値を計算し、結果のz値を
上記スタンプ用のzバッファ内に保存された対応するz値と比較する。この比較
の結果、現Cullモードビット、及びサンプル状態マシンの状態に基づいてzバッ
ファが更新される。各サンプルに対して、Z Cull内の制限状態マシンが次のビッ
トを生成する。OldSampleKeep、OldSampleSend、NewSampleMask、及びNewSample
Sendである。NewSampleMaskビット(16個)のセットは新たなスタンプポーショ
ン(SP)カバレッジマスクを構成する。新SPがNewVSPキューにディスパッチされ
る。原線がスタンプ内で全く見えない事象(NewSampleMaskビットはFALSE)にお
いては、NewVSPキューには何も送信されない。 5.7.2.6 MCCAM Update MCCAM Updateサブユニット9056は、16個のサンプルポーションに対して最
大16個の更新されたz値を決定し、MCCAMユニットに送信してMCCAMを更新する。
5.7.2.7 NewVSPキュー Z Cullサブユニットは、クロックサイクルごとに各Stamp Portionに対して次
の4つのビットセットを生成する。OldSampleKeep、OldSampleSend、NewSampleM
ask,及びNewSampleSendである。「理想的」な状況下では、SPM Mask&Validサブ
ユニットは、各クロックサイクルで新Stamp Portionを保存する。しかしながら
、VSPの早期ディスパッチが起きた場合は、SPM Mask&Validサブユニットは新Sta
mp Portion用に複数クロックを必要とする。本処理が起きると、NewVSPキュー9
058は新スタンプポーションを保存し、Z Cullに中断せずに進むことを許容す
る。
【0351】 NewVSPキューは単純キューである。本キューは、早期ディスパッチのケースで
のみ有用である。SPM Mask%Validユニットは、一度に1つのVSPしか扱えない。
早期ディスパッチに1つ以上のVSPが関与しており、我々がNewVSPキューを持っ
ていない場合、Z Cullユニットは動作を中断しなければならない。機能解析に基
づき、我々はタイル内で接触されるスタンプを450持つことを期待する。深度
の複雑さが2の場合、我々は各タイルに対してZ Cullから出てきた225のVSP
を得ることを期待する。我々が見ることのできる手段は、平均でスタンプあたり
約4VSPである。カバーする50ピクセル領域をオンにしたブレンドを伴う三角
形は、平均3タイル上で接触でき、タイル内で接触できるスタンプの数は8以下
でなければならない。従って、我々はNewVSPキューの深度を32とする。 5.7.2.8 SPM Mask&Valid Stamp Portionメモリマスク及びValidサブユニットは、タイル用のVSPカバレ
ッジマスクを含む。各VSPエントリは、そこに有効なVSPが保存されているかを示
す有効ビットを必要とする。VSP用の有効ビットは他のメモリに保存されている
。本サブユニットは、マイクロアーキテクチュアのブロック図に示すように二重
バッファリングされている(例:2つのコピーがある)。活性状態ページは、現タ
イル用VSPを含み、一方ディスパッチ状態ページは最後のタイルのVSP(現在ディ
スパッチ中)を含む。新VSPがNewVSPキューからVSPが除去されると、活性状態SP
M Mask&Validユニット9060は、そのマスクメモリにすでに存在するVSPに対
してVSPMaskを更新し、新VSPをメモリの内容に加える。早期ディスパッチを必要
とするカラー混合などの状況が発生した場合は、活性状態のSPM Mask&ValidはSP
M Dataユニットを通じてVSPをディスパッチキューに向けてディスパッチする。
マスク更新または早期ディスパッチの動作は、Z Cull内で生成されるOldSampleK
eep、OldSampleSend、及びNewSampleSend制御信号が制御する。アクティブから
ディスパッチへの、またはその逆の状態遷移は、モードパケットが制御する。タ
イルのパケット信号送出の終わり(TRUEに設定されたCullFlushAllを伴うBegin
Tile、End Frame、Buffer Clear、及びCull Packet)の受信は、タイルをアクテ
ィブ状態からディスパッチ状態への及び逆の切り替えの原因となる。ページイン
ディスパッチ状態は、単純に各スタンプを通して循環し、全VSPをSPM Dataユニ
ット9064へと送信する。本ユニットは受信したVSPをディスパッチキューへ
と進める。 5.7.2.9 SPMデータ Stamp Portion Memory Dataサブユニット9064は、タイル内の各VSP用にZs
tamp、dz/dx、dz/dy、及びColorPointerを保存する。このユニットも二
重バッファリングされている。SPM Mask&Validは、新VSP情報をSPM Dataへと送
信し、それが新VSPを送信すべきかそのメモリにセーブすべきかを伝える。新VSP
がセーブすべき場合は、SPM Mask&ValidはやはりSPM Dataに対して、16の考え
られるスポットの内のどの場所をVSPが占有すべきかを伝える。なお、早期ディ
スパッチの場合は、SPM Dataはやはり旧VSP及びそれに伴う早期ディスパッチを
必要とするVSPMasksのリストを得る。SPM Dataブロックは先ずディスパッチする
必要のある旧VSPがあるかをチェックする。そのようなVSPが一つでも発見できた
場合は、本ブロックは単にそのメモリからVSPデータを読み出し、SPM Mask&Vali
dブロックからのVSPMaskと併合し、VSPをディスパッチキューに入れる。その後
、このブロックは新VSPがやはり送信すべきかをチェックし、すべきであった場
合は、本ブロックは新VSPデータをディスパッチキューに渡す。新VSPが送信すべ
きでない場合は、このブロックは新VSPデータをそのメモリに書き込む。 5.7.2.10 ディスパッチキュー及びディスパッチロジック このユニットは1エントリに相当するデータを2つのSPMディスパッチキュー
の内の1つからMode Injectユニットへと送信する。このユニットは、最初にデ
ィスパッチ状態SPMからディスパッチを試みる。Stamp PortionメモリがそのVSP
を使い果たした後でのみ、本ユニットは活性状態SMPディスパッチキューからデ
ィスパッチを試みる 5.8 Mode Injecionブロック 5.8.1 始めに Mode Injection(MIJ)ブロックは、Mode Extractionブロックとの結合により、
グラフィックス状態及び関連情報を管理する。従来のグラフィックスパイプライ
ン内では、状態変化は増加する。例:状態パラメータの値は、変更されるまでは
有効である。従って、アプリケーションは変化したパラメータだけを更新すれば
良い。さらに、描画は直線的である。例:原線は受信した順で描画される。点、
線、三角形の細片、三角形の扇形、多角形、四辺形、及び四辺形の細片がグラフ
ィックの原線である。このように、全ての状態変化は、原線に関する空間情報を
受信するまではその原線の描画中有効である。
【0352】 本発明の一つの実施例中でAPEXパイプラインとして参照されているように、描
画はタイルベースで行われる。Geometry(GEO)ブロックは原線を順に受信し、全
ての頂点動作を行い、(変形、頂点ライティング、クリッピング、及び原線組み
立て)、及びパイプラインを通してデータを送信する。Sortブロックは、タイム
オーダーデータを受信し、同ブロックが接触するタイルにおいてそのデータを貯
蔵する。(各タイル内では、リストはタイムオーダーとなっている。)CULブロッ
クは、SRTブロックからタイル順にデータを受信し、接待に描画された画像に寄
与することのない原線のパーツを選別する。CULブロックはVSPを生成する。VSP
は、スタンプ上の多角形の可視ポーションに対応する。スタンプは画像の2×2
ピクセル領域である。TEX及びPHGユニットは、VSPを受信し、それぞれフラグメ
ントのテクスチャリング及びライティングする。Pixelブロックなどの最後のブ
ロックは、VSP及びフラグメントのカラーを使用して最終的な絵を生成する。
【0353】 原線は多くのタイルに接触する可能性があり、それゆえ、従来の描画パイプラ
インと違って、フレームの描画中に何度も現れることがある(本原線が接触する
各タイルにつき一回)。パイプラインは、原線がパイプラインを入力した時にグ
ラフィックスの状態を有効に記憶し、SRTから下りてくるパイプラインステージ
の問い合わせを受けるたびに呼び出される必要がある。MEXは、暫定オーダー状
態変更データを収集及びセーブするGeometryとSortブロック間のロジックブロッ
クであり、適切なポインタを原線の頂点に付加して原線が描画される場合に、正
しい状態に伴われる。
【0354】 Mode Injection(MIJ)ブロックは、状態ポインタ(MLMポインタ)が必要な時に
状態などの関連情報の検索する。このブロックは、情報の適切な再パッケージン
グも行う。再パッケージングの例は、多角形メモリ内の頂点データが検索され、
フラグメント用に原線(三角形、線、点)にバンドルされた場合に発生する。
【0355】 動作理論及びAPEX状態管理の背後にある一般原則はMEXブロックのアーキテク
チュア規格中の論点となっている。多角形メモリ内の種々のデータパケットの構
成もMEXブロック規格中で詳細に説明されている。我々は、本書の読者に対して
先ずMEXブロックアーキテクチュア規格を通読することを推奨する。
【0356】 本明細書中で、我々は最初にMIJブロックの基本的要件を説明する。次に我々
は、MIJブロックへの入力及び出力インタフェースについて論じる。機能詳細及
びMIJブロックが使用するアルゴリズムの説明をその後に行う。最後に、我々は
機能及びメモリ帯域幅要件を論じる。 5.8.2 MIJブロックの機能概要 前述したように、MIJはCULブロックからVSPパケットを受信する。各VSPパケッ
トは、2×2ピクセルスタンプ上の原線の可視部分に対応する。Cullブロックか
らMIJブロックに出力されるVSPは、原線によって順序付けられる必要はない。ほ
とんどの場合VSPは、例えば異なる原線に対するVSPがインタリーブされる可能性
があるため、タイル上でVSPの走査順になっている。VSP内のフラグメントのライ
ティング、テクスチャリング、及び構成のために、MIJブロックからのパイプラ
インステージの下流は原線の種類(例:点、線、三角形、線モード三角形)に関
する、ウィンドウ及び目視座標などの原線のジオメトリ、ノーマル、カラー、原
線の頂点におけるテクスチャ座標、及びPixModesなどの描画状態、TextureA、Te
xtureB、Light、Material、及びStippleが原線に適用可能であか、といった情報
を必要とする。この情報はMEXの多角形メモリにセーブされる。MEXは、ColorPoi
ntersもSortに送信される各原線に付加するが、このSortは、また原線のVSPの各
々に渡される。MIJは本ポインタを復号化して多角形メモリから必要な情報を検
索する。
【0357】 MIJはBeingFrameパケットをCULから受信した後でフレーム上での作業を開始す
る。フレーム用のVSP処理は、CULがフレーム内の最初のタイルの処理を終え、MI
Jが最初のタイル用VSPを受信すると開始される。 5.8.2.1 カラーポインタ復号化 カラーポインタは次の3つのパーツから成る。ColorAddress、ColorOffset、
及びColorTypeである。(ColorPointer及びMLM_Pointerの詳細説明に関しては、
モード抽出アーキテクチャ規格として参照される。)ColorAddresは、原線を完
成するColorVertexをポイントする。ColorOffsetは、MLM_Pointerを含む二重八
進数からColorAddressを切り離す頂点の数を提供する。ColorTypeは、原線のタ
イプ、各ColorVertexのサイズ、及びモード三角形用の有効なエッジに関する情
報を含む。原線を作成するColorVerticesの長さは、2個、4個、6個、または
9個の二重八進数である。MIJはColorPointerを復号化してMLM_Pointerを含む二
重八進数及び全ての原線を作成性するColorVerticesのアドレスを得る。MLM_Poi
nterは、多角形メモリの6つの状態パケットの二重八進数アドレスを含む。 5.8.2.2 キャッシュ管理 5.8.2.2.1 問題概要 MIJブロックは、VSPがステージに到着する前にFragment、Texture、Phong、及
びPixelブロックがVSP内フラグメントの処理に必要な全ての情報を持っているか
を確認する。すなわち、原線のColorVerticesは、MLM_Pointer内のポインタにポ
イントされる6つの状態パケット同様に、それらを必要とするブロック内、VSP
フラグメントが処理可能になる前に常駐していなければならない。MIJがMLM_Poi
nter、状態パケット、及びColorVerticesを各VSPに対して検索する場合は、MIJ
は各VSPに対してデータ1キロバイトの量になる。この量は、データ読み出しの
ための多角形メモリ帯域幅の125GB/秒に相当すし、FRG及びPIXブロックへの
データの書き出しに必要な量である。明確に、各VSPに対してデータを検索する
のは不可能であり、何らかの形のキャッシングが必要になる。
【0358】 VSPと原線に何らかの結合があることを想定するのが合理的である。例えば、
我々は同じ原線に対応する一連のVSPを得る可能性がある。我々はこの結合を使
用して多角形メモリから読み出され、Fragment及びPixelブロックに転送される
データの量を減少させる。原VSPが先行のVSPと同じ原線からディスパッチされた
場合、我々がデータ検索を実行する必要は全くない。以前に指摘したように、VS
Pは原線順にMIJには到着しない。代わりに、それらはタイル上でVSP走査順にな
る。例えば、別々の原線に対する走査線を横切るVSPは、インタリーブされるこ
とがある。この理由により、現在及び前のVSPのみに基づいたキャッシングスキ
ームは、帯域幅を約80%カットする。他の計画はさらに優れた機能を提供する
。例えば、タイルの、実際には四辺形タイルの、全面上の原線結合に有利なスキ
ームなどを挙げることができる。明らかに、我々は、MIJ内のMLM_Pointer、各状
態パーティション及びカラー原線に対してキャッシュを保つことによて上記スキ
ームを実行することができる。各キャッシュのサイズは、それがタイル上に置か
れる頻度によって決まる。このスキームが問題を解決できる、または多角形メモ
リからデータを検索している間は、我々はMIJからFragment及びPixelブロックへ
のデータが変化するたびにデータ転送を扱う必要がある。我々は、この問題を下
記のように解決した。 5.8.2.2.2 キャッシュデータ及びタグの切り離し MIJから検索されたデータは、他のブロックで使用される。従って、我々はキ
ャッシュデータをこれらブロック内に保存する。Fragment、Texture、Phong、及
びPixelブロックの各々がキャッシュのセットを持っている。これらキャッシュ
はそれらのキャッシュラインエントリに入る実際のデータを保持している。MIJ
はPolygonメモリからの各ユニットの関連データの検索及びユニットへの送信を
行い、上述の4ユニット内のキャッシュの各々の現在の状態を知る必要がある。
この処理は、各キャッシュに対してタグを保持し、MIJに対して全キャッシュの
管理を容認することによって完了する。このように、キャッシュデータは、それ
を必要とするブロック内に常駐し、キャッシュタグはMIJ内に常駐する。
【0359】 MIJは7つのキャッシュを下流ストリームのために管理する。その内1つはFRG
(ColorDataキャッシュ10016)用であり、TEX(TexA10018、TexB10020)、
PHG(Light10024、Material10022)、及びPIX(PixMode10026及びStipple10
028)ブロック用に各2つづつである。これらキャッシュの各々に対して、タ
グがMIJにキャッシュされ、データが対応するブロックにキャッシュされる。MIJ
はまた、タグに従ってデータエントリのインデックスを維持する。これら7つの
キャッシュに加えて、MIJは内部的に2つのキャッシュを効率のために維持する
。その内1つはColorVertexキャッシュ10012であり、他はMLM_Pointerキャ
ッシュ10014である。これらに対し、タグとデータの双方がMIJ内に常駐す
る。これら9つのタグキャッシュは、完全に結合可能であり、CAMsを使用してC
hacheタグを調べる。これらキャッシュの一覧を図55に示す。
【0360】 我々は、下記の各節でこれらキャッシュのキャッシングメカニズムを簡単に説
明する。 5.8.2.2.3 修正FIFO入れ換えポリシー MIJ内の全てのキャッシュに対して、我々は修正FIFOアルゴリズムを使用して
キャッシュを入れ換える。本アルゴリズムでは、我々はキャッシュ内の各エント
リのためにWashHitフラグをエントリタグと共に保持する。カウンタは、キャッ
シュ内で入れ換えられるべき現エントリを示すために使用される。 5.8.2.3 カラーキャッシング 「カラー」キャッシングは、カラー原線をキャッシュするために使用される。
有効な処理機能のエクステントによって、多角形メモリ中のColorVertexの長さ
は2個、4個、6個、または9個の二重八進数となる。さらに、それぞれ点か、
線か、または塗りつぶされた三角形かによって原線は1つ、2つ、または3つの
ColorVerticesを必要とする。他のキャッシュと違い、Color Cachingは、通常の
キャッシュの調査及び入れ換えの問題に加えてデータサイズの問題に取り組まな
ければならない。
【0361】 たとえ多角形メモリ内の4分の1性能のカラー頂点が9個の二重八進数を占有
していても、実際には我々は9個の二重八進数全部は必要としないことに注意す
るべきである。事実、4分の1性能ColorVertex内には1200ビットがある。
原線は3つまでのColorVerticesを持つことがある。我々は、ColorCashe内の各
エントリが900ビットの幅を持つと想定する。このように、フル性能の塗りつ
ぶされた三角形は、1つのColorキャッシュエントリにフィットし、半分性能の
塗りつぶされた三角形は、2つのColorキャッシュエントリにフィットする。我
々は4つのColorキャッシュエントリを3分の1性能レート及び4分の1性能レ
ートの三角形に割り付ける。たとえ3分の1性能レート三角形が3つのColorキ
ャッシュエントリにフィットしても、我々はそれに4つのエントリを割り付ける
ことに注意するべきである。この処理は、我々が3分の1レートの原線に対して
3つのColorキャッシュエントリを使用した場合よりも、格段にキャッシュの保
守を容易にする。我々は、部分的に無効化された原線を扱う必要はない。
【0362】 Fragmentブロック内のColorキャッシュは、256個のフル性能カラー原線を
保持することができる。MIJ内TagRamはFragmentブロック内のカラーデータキャ
ッシュと1対1に対応する。PEXパイプライン内では、ColorAddressはカラー原
線を一意に識別することに注意するべきである。従って我々は、24ビットのCo
lorAddressをColorキャッシュ用タグとして使用する。
【0363】 カラーデータ取り出し依頼はColorDataFetchサブブロックに送信される。本ブ
ロックはColorAddress及びカラータイプを使用して本原線に必要な頂点の数、各
頂点のサイズ、及び取り出される各頂点のColorAddressを決定する。我々は「カ
ラー」原線の実質的な数が細片または扇形の一部であることを期待する。ここで
は、ColorVertex検索パターン内で結合を利用する機会がある。本処理は頂点キ
ャッシング経由で行われる。CCIXは、Fragmentブロックに行くVSP内に組み込ま
れる。 5.8.2.3.1 他のキャッシング 本発明の構造は、Vertexキャッシング、MLM−Pointerキャッシング、Modeパケ
ットキャッシング、Controlパケットキャッシング及びFragmentとPixel Output
キュー Managementを提供する。 5.8.3 機能ユニット Mode Injectionブロックは、CULブロックとCULの下流側のパイプラインの残り
の部分の間に常駐する。MIJは、制御及びVSPパケットをCULブロックから受信す
る。出力側では、MIJは、FragmentおよびPixelブロックのインタフェースを行う
【0364】 MIJは下記処理を実行する役割を負う。 1BeginFrame、EndFrame、及びBeginTileなどの制御パケットのFragment及びPix
elユニットへのルーティング 1.先取りパケットのSORTからPixelへにルーティング 3.VSPに対応する原線の全ての頂点に対するColorPointerの決定 4.多角形メモリ内MLMPointerの位置決定及び検索 5.多角形メモリ内の種々の状態パケットの位置決定 6.検索の必要なパケットの決定 7.Color、TexA、TexB、Light,及びMaterialキャッシュ(Fragment、Texture、
及びPhongブロック用)、PixModeto及びStippleキャッシュ(Pixelブロック用)
の内容把握及び適切なキャッシュポインタの各キャッシュミスデータパケットへ
の付加 8.多角形メモリからの状態及びカラー頂点パケットの検索 9・原線の構築。Polygonメモリは頂点ごとのデータを保存する。VSPの原線タイ
プによっては、MIJは多角形メモリから必要な頂点(三角形用に3つ、線用に2
つ、及び点原線ように1つ)を検索する。 10.Fragment及びPixelブロックへのデータ送信 11.パイプライン内の中断処理 12・処理の終わりにおけるMEXへの信号送信 このように、Mode Injectionは、VSP内の各フラグメント用最終カラーの演算
に必要な頂点ごとのデータ同様に状態の検索を扱う。 5.9 Fragmentブロック(FRG) 5.9.1 概要 Fragmentブロックは、Cull及びMode Injectionの後、Texture、Phong、及びBu
mpの前に位置する。このブロックは、4つまでのシェ−ディングの必要なフラグ
メントから成る可視スタンプポーション(VSP)を受信する。VSP内フラグメント
は常に同じ原線に属する。従って、フラグメントは、全てのモード設定を含む頂
点において定義された原線データを共有する。与えられたピクセルの4つのサン
プルのうちの1つでも活性な場合は、サンプルマスクsMaskはVSPの活性サブピク
セルサンプルを定義する。これは、フラグメントがピクセルに必要であり、フラ
グメントに基づいたデータの作成に原線用の頂点ベースのデータに書き込みが行
われることを意味する。活性なサブピクセルサンプル位置が使用されてフラグメ
ントの対応するx及びy座標が決定される。
【0365】 帯域幅をセーブするために、Fragmentブロックは、同じ原線に属する複数のVS
Pに再使用されるカラーデータをキャッシングする。ヒットの場合は、Mode Inje
ctionは、キャッシュ内へとインデックスを含むVSPを送信する。キャッシュミス
の場合は、Mode Injectionは、新たなエントリをポイントするColorキャッシュ
インデックスを持つVSPパケットの送信に先立って、新たなカラーデータを持つ
キャッシュからエントリを入れ換える。同様に、全てのモード、素材、テキスチ
ャ情報、及びライト情報設定が使用されているブロックにキャッシングされる。
各キャッシュ用のインデックスもVSPに含まれる。多角形に加えて、Fragmentブ
ロックは幾つかのテクスチャ及びモード情報をキャッシングする。図56がDSGP
パイプラインの後半のモードデータのキャッシングを示す。
【0366】 Fragmentブロックの主な機能は、VSP内の全活性フラグメント用の頂点に提供
される多角形情報の改ざんである。Fragmentブロックの出力ブロックにおいて、
我々は、なおもフラグメントあたりの全ての改ざんされたデータを持つスタンプ
を所持する。Fragmentブロックは与えられたフラグメントを並行に改ざんでき、
VSP内のフラグメントについては任意の順番で実行できる。フルに書き込まれた
スタンプは、受信時と同様の順番でTexture、Phong、及びBumpブロックへと送ら
れる。さらに、Fragmentブロックは、4つまでのテクスチャ用の詳細のレベル(
LODまたはλ)値を生成し、Textureブロックに送信する。
【0367】 Fragmentブロックは、可変スタンプ処理時間及びColorキャッシュフィルの潜
在性をスムーズにするために適切にサイズが決定されたFIFOをその入力に持つ。
【0368】 図57にFragmentブロックのブロック図を示す。
【0369】 Fragmentブロックは、下記の6個のサブブロックに分割可能である。 1.キャッシュフィルサブブロック11050 2.Colorキャッシュ11052 3.Interpolation Coefficientsサブブロック11054 4.Interpolationサブブロック11056 5.Normalizationサブブロック11058 6.LODサブブロック11060 最初のブロックはColorキャッシュミスを扱う。新たな多角形データは、キャ
ッシュ内旧データを入れ換える。ColorキャッシュインデックスCCIXは入れ換え
るべきエントリをポイントする。このブロックは全ての多角形データを直接キャ
ッシュに書き込むことはしない。このブロックは頂点座標、w座標の逆比例及び
オプションのテクスチャq座標を使用して重心係数を計算する。このブロックは
、重心係数を、それらの計算に使用される情報ではなく、キャッシュに書き込む
【0370】 第二のサブブロックはColorキャッシュを利用する。FragmentがVSPパケット(
ヒット)を受信すると、頂点の多角形データ及びそれに伴う重心係数をアクセス
するためにCCIXにポイントされるキャッシュエントリが読み出される。
【0371】 三番目のサブブロックは、VSPの最初のフラグメントに対して改ざん係数を用
意する。係数は、次のフラグメントの係数の増分計算に利用できるように、簡単
な等式のフォーマットで分子及び分母に表現される。分子及び分母双方が三角形
のすべての領域で除されるため、簡略化される。また、重心係数には冗長性(分
数の合計が全部に等しい)が組み込まれているため、分母が持つ心係数の3つの
セットの内の2つを提供するだけで、追加収容及び帯域幅がセーブされる。非性
能ケースでは、1以外のq値を持つテクスチャ係数が3つ以上の係数を持つ分母
を使用して書き込まれる。
【0372】 スタンプごとに与えられたx及びy座標は、スタンプ内の左下部ピクセルに対
応する。タイル内のスタンプの位置のみがこれらの座標により決定される。別の
パケットが後続のスタンプが属するタイルの座標を提供する。ルックアップテー
ブルがsMask内の対応するビットと共に使用されて、出力確度におけるフラグメ
ントx及びy座標の下位ビットを決定する。この活性サンプル位置における改ざ
ん箇所の選択は、改ざん係数が1に等しいその合計により常に正の値であること
を保証する。
【0373】 第4のサブブロックは、各カバーされてピクセルに対してカラー、ノーマル、
テクスチャ座標、目視座標、及びBumpタンジェントを改ざんする。改ざん機構は
その正確さに従って4つのグループに分けられる。第1のグループは、8ビット
の固定小数点カラー分数を改ざんする。値の範囲は0から1であり、全てのビッ
トが1に設定された値1のバイナリ表現である。第2のセットは16ビット、固
定小数点、ノーマル用ユニットベクトル、及び表面タンジェント方向を改ざんす
る。第3のセットは、16ビットの対少数を持つ24ビットの浮動小数点数を改
ざんする。頂点目視座標、ノーマルの大きさ、及び表面タンジェントはこのカテ
ゴリに含まれる。最後のグループは、やはり24ビットのFP数であるテクスチャ
座標を改ざんするが、異なる改ざん係数を持つこともある。全ての改ざん係数は
、24ビットFP値として生成されるが、8ビットまたは16ビットの固定小数点
値を改ざんする場合は、より少ないビットまたは固定小数点表現を使用すること
ができる。
【0374】 第5のサブブロックは、ノーマル及び表面タンジェントを再正規化する。この
プロセス中に得られた大きさは廃棄される。オリジナルの大きさは、Phong及びB
umpブロックに送られる前に個別に改ざんが加えられる。
【0375】 テクスチャマップu、v座標及び詳細のレベル(LOD)は、第6のサブブロック
内で評価される。重心係数は、テクスチャLODの決定に使用される。2つのテク
スチャ座標を持つ4つの異なるテクスチャがサポートされる。従って、ユニット
は4つまでのLOD及び24ビットFP値で表されるフラグメントごとのs、t座標
の2つのセットを提供することができる。 5.9.1.1 sMask及びpMask 図58に、種々の原線によって形成されるピクセルフラグメントを持つVSPの
例を示す。sMaskのコピーもシェ−ディングブロック(Fragment、Texture
、Phog、及びBump)をバイパスしてPixelブロックに直接送信される。バイパス
パケットもz値、Mode、及びPolygon Stipple Indicesを示し、VSPptrにポイン
トされる場所で、リオーダーバッファに書き込まれる。pMaskはFragmentブロッ
ク内で生成され、sMaskの代わりにTexture及びPhongへと送信される。実際のカ
バレッジはPixel内で評価される。 5.9.1.2 三角形に対する重心改ざん Fragmentブロックは、透視図修正された重心改ざんにより値を改ざんする。こ
の節においてプロセスを記述する。
【0376】 三角形の描画により生成された各フラグメントを伴うデータの場合、我々はこ
れらの値が、いかにして三角形内フラグメントに対して提供されたかを指定する
ところから始めた。我々は、三角形11170に対して重心座標を定義した(図
59)。重心座標は、次の3つの数字のセットである。各々[0,1]の範囲にあ
るA0、A1、及びA2であり、A0+A1+A2=1である。これらの座標は、三角形また
は三角形の境界上でいずれかの点pを下記のように一意に指定する。 p(x、y)=A0(x、y)×V0+A1(x、y)×V1+A2(x、y)×V2 ここで、V0、V1、及びV2は三角形の頂点であり、A0、A1、およびA2は下式の通り
である。
【0377】
【数16】 ここで、Area(i,j,k)頂点i、j、及びkを持つ三角形のウィンドウ座標内の
領域に与える。本領域を演算する一つの方法を下記に示す。 Area(V0,V1,V2)=1/2(xW0,×yW1−xW1×yW0+xW1×yW2−xW2×yW1
W2×yW0−xW0×yW2) V0、V1、及びV2データをそれぞれf0、f1、及びf2として与える。次に、三
角形のラスタ画像処理により生じたウィンドウ座標x及びyを持つフラグ面tに
おけるデータの値f(x、y)な下記により与えられる。
【0378】
【数17】 ここで、Wc0、Wc1、Wc2はそれぞれV0、V1、およびV2のクリップw座標である
。A0、A1、及びA2はデータが与えられるフラグメントの重心座標である。 a0=a1=a2=1 次の式で表されるテクスチャs及びt座標は例外である。 a0=q0、a1=q1、a2=q2 5.9.1.3 線に対する改ざん 線に沿ったフラグメントデータに対する書き込みの場合は、多少異なった公式
が使用される。
【0379】 作成されたフラグメントセンターのウィンドウ座標をpr=(x、y)で与え
るようにし、p2=(x2、y2)及びp1=(x1、y1)を線のエンドポイント(
頂点)とする。下記のようにtを設定し、p1においてt=0であり、p2におい
てはt=1である。
【0380】
【数18】 5.9.1.4 点に対する改ざん 原線が点の場合、改ざんは一切行われない。頂点2はデータを保持しているも
のとする。qがsに等価でない場合は、s、t、及びr座標がqによって分割さ
れる必要がある。 5.3.1.5 ベクトル改ざん バンプマッピングの場合、ノーマル及び表面タンジェントは有向ユニットベク
トルを伴う大きさを持つ場合がある。この場合、我々はスカラー大きさとは別に
ユニットベクトルコンポーネントを改ざんする。この処理は、明らかに大きさを
持つx、y、及びzコンポーネントを改ざんするよりも、良い視覚的結果を与え
る。この事実は、方向と大きさが別々に使用されている場合は特に重要である。
【0381】 図60に、異なる大きさのベクトル間の改ざんがいかにして不均等な角度の粒
の結果をもたらすかを示す。これは、我々がノーマル及びタンジェントに対して
この方法で改ざんをしない理由である。 5.3.1.6 フラグメントx及びy座標 図61に、いかにしてフラグメントx及びy座標を使用して改ざん係数が形成
されるかを示す。タイルx及びy座標は、タイル処理フォームの開始時に最上位
ビットとなる。サンプルマスク(sMask)が処理を必要とするフラグメントを見
つけるのに使用される。ルックアップテーブルは、サブピクセル確度において最
下位ビットを与える。我々は、サンプル場所の選択された2ビットを取り除くこ
とができる場合にはULTのサイズを減少させることが可能となる。 5.9.2 等式 5.9.2.1. キャッシュミス計算 最初の重心係数は、Fragmentユニット内のColorキャッシュミスの評価に必要
である。三角形の場合は下式となる。
【0382】
【数19】 上記の等式内でxW0,xW1,xW2は3つの三角形の頂点のx座標である。同様に
、yW0,yW1、及びyW2は三角形頂点の3つのy座標である。実際の重心係数の場
合、全てのコンポーネントは三角形の領域によって分割されなければならない。
我々のケースでは、やはり領域により分割された係数を持つ分母を形成する透視
図修正のためにこの処理は必要ない。
【0383】 頂点座標xW1,xW2,及びyW1,yW2を持つ線の場合は、下式が適用される。
【0384】
【数20】 我々はいま、下記のように透視図修正重心係数コンポーネントを形成した。
【0385】
【数21】 ここで、Wic0は、頂点0のクリップw座標の逆比例である(逆比例はGeometry
内で実行される)。
【0386】
【数22】 分母コンポーネントは、個々の定数を分子に加えることによって形成される。
Dx=Cx0+Cx1+Cx2;Dy=Cy1+Cy1+Cy2;Dk=Ck0+Ck2 上記計算は、各三角形に対して一回だけ実行すれば良い。カラーメモリキャッ
シュが同じ三角形の次のVSPに対して係数をセーブするのに使用される。キャッ
シュミスが起きた場合は、係数は最評価が必要になる。 5.9.2.2 改ざん係数 次に、我々は座標を持つVSPの最初のピクセルに対して重心座標を用意する。
【0387】
【数23】 次に、x方向の次のピクセルの場合は、下式を適用する。
【0388】
【数24】 または、y方向の次のピクセルの場合は、下式を適用する。
【0389】
【数25】 非性能のケース(半分のレート)では、テクスチャ座標qn[m]が1に等しく、
nが頂点番号(0から2)で、mはテクスチャ番号(0から3)の場合、改ざん
テクスチャ座標用の追加分母が評価される。
【0390】
【数26】 (x、y)座標を持つ与えられたピクセル用の重心座標が評価される場合、我
々はそれらを改ざんに使用する。線L0は必要ではないが、下記式内ではゼロであ
るものとする。 5.9.2.3 改ざん等式 フル性能モードでは、我々はテクスチャ座標の1セットを改ざんする。
【0391】
【数27】 カラーを放散及び反射する。
【0392】
【数28】 8ビットカラー値は、実際に0から1の、それらの数字を含む範囲の分数であ
ることに注意する。変換により、失われた表現された数字は1−2−8である。
1の値は、失われた表現の場所を取って設定された全てのビットで表現される。
カラーインデックスがR、G、B、及びAの代わりに使用されている場合、8ビット
インデックス値がカラーのDiffuse及びSpecularコンポーネントのR値を入れ換
える。
【0393】 表面はノーマルである。
【0394】
【数29】 ノーマルベクトルは、改ざんの後で再正規化されなければならない。
【0395】
【数30】 半分レート(蓄積)において、我々は必要な頂点目視座標を改ざんする。
【0396】
【数31】 半分レート(蓄積)において、我々は4つまでのテクスチャ座標を改ざんする
。この処理は、単純等式または重心座標を使用して実行される。rテクスチャ座
標も、関連するボリュームテクスチャ描画に対して改ざんが加えられるが、フル
レートの3分の1においてである。
【0397】
【数32】 ユーザによって頂点ごとのバンプタンジェントとして部分分数が提供された場
合は、我々はそれらを改ざんする必要がある。簡易化として、ハードウェアは常
に表面タンジェントを半分のレートで改ざんする。
【0398】
【数33】 表面タンジェントもノーマルと同様に改ざんの後で正規化されなければならな
い。
【0399】 我々は、やはり重心係数を使用して、ウィンドウx及びy座標に関連してテク
スチャ座標の部分導関数を評価する。
【0400】
【数34】 n[m]が1に等しい事象では、Wi(x、y)がWqi[m](x、y)と置き換わ
る。
【0401】 これは、改ざんされたs、t、及びそれらの部分導関数の評価の代替法の優れ
た紹介である。
【0402】
【数35】 他の項も同様に評価される。カラーやノーマルのような全ての改ざんを必要と
する値は、この単純等式で表現でき、三角形情報キャッシュにセーブして増分さ
れた評価アプローチにより演算要件を減少させることができる。
【0403】 我々は下記を定義する。
【0404】
【数36】 個々で、λは詳細のレベル(LOD)と呼ばれ、pはテクスチャ画像の拡大縮小
をつかさどるスケール係数である。n及びmは、2次元テクスチャマップの幅及
び高さである。u及びvの部分導関数はs及びtの部分導関数を使用して得る。
1次元テクスチャマップの場合、t、v、及び部分導関数δv/δx及びδv/δ
yはゼロに設定される。線の場合、下記の公式が適用される。 △x=x2−x1;△y=y2−y1 DSGPパイプラインはそれぞれテクスチャ座標を2セット持つ4つまでのテクス
チャをサポートする。特に、i=0.3の場合: TEXTURE_1D[i]==1またはTEXTURE_2D[i]==1、この場合、我々はテクスチャ
座標TEXTURE_COORD_SET_SOURCE[i]を使用してλを演算する。
【0405】 Fragmentブロックは、各活性テクスチャに対し、s、t、r、及びλをTextur
eブロックに渡す。λは最終LODでないことに注意するべきである。テクスチ
ャブロックには、λに対する値を得るためにLODクランピングなどの追加規則
が適用される。 5.9.3 メモリキャッシングスキーム Fragmentは、3つのキャッシュを使用して必要な動作を実行する。一次キャッ
シュはカラーキャッシュである。本キャッシュは、原線(三角形、線、または点
)のためにカラーデータを保持する。キャッシュミス決定及び入れ換えロジック
は実際にはMode Injectブロックに位置する。Fragmentブロックは通常通り、付
加されたカラーデータを保持するエントリをポイントするインデックスを持つ「
ヒット」パケットを受信する。Mode Injectブロックがミスを検出すると、「フ
ィル」パケットが最初に送信されて、新しいデータを使用するためにいずれかの
[ヒット]パケットが送信される前にキャッシュ内エントリを新たしいデータと入
れ換える。従って、Mode Injectによって送信されたパケットの順番を変更しな
いことは重要である。なぜならば、キャッシュ入れ換え及び使用ロジックは、入
りパケットが順に処理されるものとしているからである。
【0406】 Fragmentブロックは、キャッシュが一杯になっている間、Colorキャッシュへ
の書き込みの前にデータの一部を変更する。この処理は、ミスタイム間に重心係
数を準備するために実行される。頂点ウィンドウ座標である頂点におけるcli
p−w座標及び頂点におけるテクスチャqの逆数が、Cx〔1:0〕、Cy〔1:0]、Dx
、Dy、Dk重心係数に置き換えられる。同様に、Sx、Sy、Tx、及びTy値がキャッシ
ュミスの間に他のデータと共に保存される。
【0407】 Colorキャッシュは、その時点で256エントリ、4セットの添付キャッシュ
、に構成されている。Mode Inject及びFragument UnitのmicroArchitectureは、
目的の性能を保持するためにその構成を変更する。フルレートにおいては、Colo
rキャッシュのミスは、処理されたVSPの平均の15%未満と思われる。
【0408】 半分のレートで求められるデータは、Colorキャッシュに2つの連続エントリ
として保存される。このケースで提供されるインデックスは、常に偶数である。
【0409】 Fragmentブロックで使用されるテクスチャ情報には、2つのモードのキャッシ
ュが使用される。これらのキャッシュは、同等に編成されたものであり、各々2
テクスチャ分の情報を持っている。2つのテクスチャ座標TX01X及びTX11Xは、全
「ヒット」パケット内に提供されてテクスチャ座標を最大4つのテクスチャに付
加する。各テクスチャにつき、下記データがテクスチャモードキャッシュから読
み出される。
【0410】 TEXTURE_1D、TEXTURE_2D、TEXTURE_3Dは与えられたテクスチャの有効ビッ
トである。
【0411】 TEXTURE_HIGH、TEXTURE_WIDTHはそれぞれu及びv計算内で使用されるm及びn
値である。
【0412】 TEXTURE_COORD_SET_SOURCEは与えられたテクスチャにくくられるテクスチャ
座標を示す。
【0413】 テクスチャモードのキャッシュは、32エントリ完全連結可能キャッシュであ
る。テクスチャモードのキャッシュ0の想定されるミスレートは、VSPあたり0.2
%未満である。
【0414】 なお、モードもModeキャッシュ中のFragmentにキャッシングされる。Modeキャ
ッシュは完全連結可能な8エントリキャッシュとして構成される。想定されるミ
スレートはVSPあたり0.001%未満である(無視できる)。下記情報がModeキャッ
シュにキャッシングされる。 SHADE_MODEL(1ビット) BUMP_NO_INTERPOLATE(1ビット) SAMPLE_LOCATION_SELECT(3ビット) 5.9.4 可能な未来の思考 VSPの処理順序も変更が可能である。Pixelブロック前のリオーダーブロックが
スタンプを最構築する。同じx及びy座標(別々の原線に属する)を共有するVS
Pは、到着した順でPixelに渡されなければならない。各VSPに伴うVSPptrは、リ
オーダーバッファ内のVSPの位置を示す。バッファはFIFOとして構成され、最も
前に位置するシェ−ディングが完了したスタンプがPixelブロックへと向かう。
【0415】 VSP処理順序に関するもう一つの考慮は、種々のモードキャッシュである。モ
ードインデックスは、「ヒット」パケットが「ミス」パケットを横切らないこと
を想定している。これは、「ミス」パケットが「ヒット」パケットのバリアーを
形成することを表している。明らかに、Mode Injectionが提供した順序で下流側
ブロックがパケットを見るため、プロセス順序は対応するモードキャッシュ情報
を取り出した後で変更可能となっている。 5.10 Textureブロック(TEX) 5.10.1 概要 3Dグラフィックスでは、多角形が使用されてオブジェクトの形を定義する。
テクスチャマッピングは、詳細画像を持つカラリング多角形により表面テクスチ
ャをシミュレートするテクニックである。特徴として、単一のテクスチャマップ
は多くの多角形から成るオブジェクトをカバーする。テクスチャマップはRGBAカ
ラー(Apex内で最大2K×2K)の長方形の配列である。ユーザは、Geometryブロ
ック内で手動または自動で各頂点のテックチャマップ内に座標を供給する。これ
らの座標は、各フラグメント用に改ざんされ、テクスチャ値はテクスチャマップ
及びフラグメントに割り付けられたカラーの中から調べられる。バンプマップ係
数もlight_textureエクステンションを使用して同様に得られる。詳細はPhongブ
ロックを参照されたい。
【0416】 オブジェクトは観察者から遠い場合は小さく現れるため、テクスチャパターン
がテクスチャリング中のオブジェクトと同サイズで現れるようにテクスチャマッ
プの縮尺を決めなければならない。無論、各フラグメントのテクスチャ画像の縮
尺及びフィルタリングは高価な計画である。Mipmappingは、走行中に描画者に対
して本作業の一部を避けることを許容する。ユーザは、引き続くより低いリソリ
ューションにおいて一連のテクスチャ配列を提供する。各配列は、指定された詳
細のレベル(LODまたはλ)を表す。Fragmentブロックは、観察者からの距離に
基づいて各フラグメントに対する詳細のレベルの値を計算し、Textureブロック
は二つの最も近いミップマップ配列の間を改ざんして同フラグメントに対するテ
クスチャ値を生成する。例えば、フラグメントがλ=0.5を持っている場合、
Textureブロックはλ=0及びλ=1を表す配列の間を改ざんする。
【0417】 Apexボードは、1秒あたり250Mのテクスチャリングされたフラグメントに
おいて三線に囲まれたミップマッピングによる、テクスチャマッピングをサポー
トする。フラグメントあたり最大8つのテクスチャマップ及び8セットのテクス
チャ座標が相対的に低い性能でサポートされる。Apexは、SGIエクステンション
または高さ傾きフィールドを使用してバンプマップをテクスチャとして扱う。テ
クApexは3Dテクスチャマッピングを幾分低いレートで実行する。これは、テク
セルキャッシュが、オプションのテクセル再使用がより少ないため、上記処理を
より非効率的に実行するからである。
【0418】 我々は、Apex内で下記エクステンションをOpenGL1.1にサポートする。 ・ マルチテクスチャ…フラグメントあたり最大8テクスチャマップ及び8セッ
トのテクスチャ座標 ・ 3Dテクスチャ…3Dテクスチャは二線にはさまれた混合動作をサポートする
。3Dテクスチャに対する三線に囲まれたミップ−マッピングはソフトウェアで
扱われる。 ・ LODクランピング…テクスチャLODのサブセットのみをミップマッピングに使
用するよう要求する。 ・ エッジクランプ…クランピングされたテクスチャの正しい実行法 ・ 影…マルチパス影をサポートする簡単なエクステンション ・ バンプ及び深度テクスチャ(12−12−12及び16−16)に対する符
号付きデータタイプサポート エッジクランピング、LODクランピング、及び3DテクスチャリングはOpenGL1.
2の一部である。
【0419】 テクスチャブロックはテクセルをキャッシングしてローカル使用を得る。テク
スチャマップは2×2ブロックのRGBAデータ(ブロックあたり16バイト)テク
スチャメモリに保存される。ただし、ノーマルベクトルはこの限りではなく、1
8バイトブロック(6−6−6)に保存されることがある。 5.10.1.1 仮想テクスチャ番号 ユーザは、テクスチャがOpenGLコールでユーザスペースから渡されると、テク
スチャ番号を提供する。ユーザは1マップでテクスチャリングされる幾つかの三
角形を送信でき、同じテクスチャ番号を付加されたテクスチャを、同じフレーム
内で三角形以外のテクスチャに変更することができる。我々のパイプラインは、
フレーム用のテクスチャデータの全セットがテクスチャブロックで利用可能なこ
とを要求する。ソフトウェア内では、我々は仮想テクスチャ番号を各テクスチャ
マップに割り付ける。 テクスチャメモリ テクスチャメモリはテクスチャブロックが現在使用しているテクスチャ配列を
保存する。ソフトウェアは、テックスチャ配列をホストメモリからテクスチャメ
モリにコピーすることによってテクスチャメモリを管理する。ソフトウェアはテ
クスチャ配列アドレスのテーブルもテクスチャメモリ内に維持する。 5.10.2.1 テクスチャアドレッシング テクスチャブロックは、仮想テクスチャ番号及びLODによってテクスチャ配列
を識別する。最も高いLOD用の配列は、単一レコードにまとめられる。(ある実
施例内ではRODは7つで、各RODは21キロバイトを含む。)テクスチャ配列ポイ
ンタテーブルは、テクスチャ配列ID(LODに付加された仮想テクスチャ番号)をテ
クスチャメモリ内のアドレスと組み合わせる。我々は数千のテクスチャ配列番号
をサポートする必要があり、テクスチャ配列ポインタテーブルはテクスチャメモ
リに保存されなければならない。我々は、テクスチャ配列IDを1秒間に500M
回アドレスにマッピングする必要がある。幸運ながら、隣接したフラグメントは
は通常同じテクスチャ配列を共用するため、我々は、テクスチャ配列ポインタ用
に良いタイルレートをキャッシュと共に得る必要がある。(ある実施例では、テ
クスチャ配列キャッシュのサイズは128エントリだが、他のサイズも、大小を
問わず利用できる。)図52にテクスチャ配列アドレッシングの概要を示す。
【0420】 テクスチャブロックは、ダブルハッシングアルゴリズムを利用してメモリ内の
ポインタテーブルを検索する。ソフトウェアは、ハードウェアハッシングアルゴ
リズムを使用してテクスチャ配列ポインタテーブルを管理する。 5.10.2.2 テクスチャメモリ割り当て ソフトウェアは、テクスチャメモリの割り当てを扱う。テクスチャブロックが
テクスチャメモリ内にないテクスチャ配列を必要とすると、割り込みをホストに
送信する。ホストはメインメモリからテクスチャ配列をコピーし、上記のように
テクスチャ配列ポインタテーブルを更新する。ホストは、どのテクスチャ配列が
新しいデータにより上書きされるかを制御する。
【0421】 ホストは、ゴミの収集などのためにテクスチャメモリを再アレンジする。ハー
ドウェアは下記のメモリコピーをサポートする。 ・ ホストからメモリ ・ メモリからホスト ・ メモリからメモリ 正しい振る舞いを保証するために、同期スキームが採用される。乱暴な力まか
せのアプローチは、いずれのメモリコピー活動にも先立ってテクスチャブロック
を洗い流してしまう。しかしながら、我々はテクスチャ配列ポインタテーブル1
3106に基づいたより気軽な計画を大域的に取り入れることができる可能性が
ある。ソフトウェアは、幾つかのコマンドを使用してパイプラインを開始、停止
、及び洗い流す処理を通じて同期を制御する。下記「ホストコマンド」を参照。
5.10.2.3 テクスチャメモリの内容 テクスチャ配列は2×2テクセルブロックに分割される。配列内の各テクセル
ブロックは、RGBA、RGA、または4つのテクセル用の高さ傾きデータを含むレコ
ードによりテクスチャメモリ内に表される。三線に囲まれミップ−マッピングに
よって与えられたフラグメントのテクスチャリングは、フラグメントが2×2ブ
ロックに関連してどこに落ち込むかにより、これらブロックの2から8バイトの
アクセスを必要とする。 5.10.2.4 テクスチャメモリデータパス テクスチャメモリとテクスチャブロック間の通常のパスに加えて、ホストメモ
リからテクスチャメモリへのパスがある。帯域幅は500MB/sでなければなら
ない。このこの「バックドアバス」パスは、フレームバッファを及びテクスチャ
メモリをホストに接続する。我々は、ソフトウェアの制御下でのテクスチャメモ
リのメモリかたメモリへのコピーもサポートする。 5.10.2.5 テクスチャフォーマット ハードウェア内では、我々はOpenGl内部フォーマットRGBA8、RGB12(符号付
き)及びLUMINANCE16_ALPHA16(符号付き)をサポートする。ソフトウェアは、R
GB8などのこれらフォーマットの記憶のサブセットを使用する他のフォーマット
をサポートする。バンプマップ係数などのテクスチャメモリの使用は、テクセル
ビットを他の方法で解釈する。テクスチャブロックの後で、全カラーが、コマン
ド、深度、及び高さフィールドのようなlight_texture量を除いて、8ビット量
として扱われる。
【0422】 上記のフォーマットをサポートするには、我々は2セットの16ビット値、3
セットの12ビット値、または4セットの8ビット値の直線改ざんを実行する必
要がある。Textureブロックは、4セットの数学的ユニットを使用して計算する
。内2つは16ビット確度、1つが12ビット確度、1つは8ビット確度である
【0423】 16及び12ビット動作の全てが符号付きである。正規のカラーを符号付12
ビット数の扱いも8ビット符号なし異常を保存する。 5.10.2.5.0.1 ビデオテクスチャ 幾つかのYUV(またはYIQ)フォーマットの1つの中にビデオフィードがある。
我々はRGBへの変換を行い、2Dコアを使用してRGBを解釈し、Rambusマスクド書
き込みを利用してテクセルを2×2ブロックへ収容することにより値をテクセル
フォーマットへとパックする(スキャンラインオーダーの代わりに2×2ブロッ
ク)。本データはTextureメモリに保存され、正常テクスチャとして表示される
。 5.11 Phong及びBump Mappingブロック(PHB) 5.11.1 アルゴリズム概要 Phongブロックは、テクスチャブロックからのテクスチャ情報を持つフラグメ
ントブロックからのカラー、マテリアル、ジオメトリック、及びライティング情
報を組み合わせてフラグメントのカラーを計算する。結果はカラードフラグメン
トであり、フレームバッファ内にすでに常駐しているいずれかのカラー情報と混
合されるとPixelブロックへと送り出される。
【0424】 Phongはフレーム、ファイル、またはスクリーンスペースを気にしない。 5.11.2 カラーインデックスモード テクスチャ及びフラグメントライテフィング動作は、カラーインデックスモー
ドには入らない。Phongブロックによって実行される唯一の計算は、フォグ計算
である。この場合、入力フラグメントカラーのR値の仮数は、0から255まで
変化する8ビットカラーインデックスとして解釈され、処理のために直接フォグ
ブロックにルーティングされる。 5.11.3 パイプライン位置 Phongブロックは、Textureの後、Pixelの前に位置している。本ブロックはテ
クスチャ及びフラグメント双方からパケットを受信する。フラグメントは、フラ
グメントごとのデータを、Mode Injectionから渡されるキャッシュフィルパケッ
ト同様に送信する。テクスチャは、テクセルデータのみを送信する。
【0425】 Phongによってもたらされる結果のみがPixelに送信され、Pixelが要求する他
の全データは別のデータパス経由で来る。図63にパイプライン内のPhongの位
置及び隣接ブロックとの関係を示す。
【0426】 Phongブロックは次の2つの内部キャッシュを持つ。シーンライト及び大域描
画モードのように頻繁には変化しない情報を保持する「ライト」キャッシュ、及
び一般的にオブジェクトごとに変化する情報を保持する「素材」キャッシュであ
る。 5.11.4 Phong演算ブロック Phong手順は、本切に要約される幾つかのサブコンポーネントにより成る。必
要なデータの詳細に伴う擬似コード及び状態情報は本明細書中で後に記述する。
図64にPhongのブロック図を示し、実行される種々の演算を示す。 5.11.4.1 テクスチャ演算 テクスチャ演算14114はTextureブロックから来るテクセル及び素材キャ
ッシュからのテクスチャモード情報を受け付ける。本機能は、テクスチャ環境計
算を適用し、複数のテキスチャがあればそれらを併合する。本機能は、テクスチ
ャの従来通りの使用のケースでは、結果をライト環境サブユニットに送り出し、
テクスチャがカラーを除くPhong計算の幾つかのパラメータの変更時にテクスチ
ャが解釈されるケースでは他のサブユニットに送り出される。 5.11.4.2 素材演算 素材演算14126はライティング演算用の素材値のソースを決定する。本機
能は現素材モードビットを使用して、テクスチャ値またはGouraud計算内でディ
スパッチされる入り一次カラーを持つフラグメント素材の入れ換えを決定するこ
とがある。 5.11.4.3 バンプ演算 バンプ演算14130は、表面ノーマルを決定する。本機能は、単純にフラグ
メントにより改ざんされたノーマルを渡すか3×3マトリックス乗算が関わる計
算内のテクセル値を使用することがある。 5.11.4.4. ライトテクスチャ演算 Light-Texture演算14134はライトのコンポーネントのいずれがテクスチ
ャ演算から送られてきたテクセルにより入れ換えられるべきかを決定する。 5.11.4.5 フラグメントライティング演算 フラグメントライティング演算14138は、GEOブロック内の頂点ごとのラ
イティングに使用される等式に似た等式を使用して実際のライティング計算を本
フラグメントに対して実行する。 5.11.4.6 ライト環境演算 ライト環境演算14142はフラグメントライティング演算の結果をTテクス
チャブロックから送られてきたテクスチャカラーと混合する。 5.11.4.7 フォグ演算 フォグ演算14146は「フォグ」に適用結され、観察者の視線からフラグメ
ントの距離のみによる演算を使用してフラグメントカラーを変更する。本機能は
最終結果をPixelブロックに送り出す。 5.12 Pixelブロック(PIX) 5.12.1 Pixelブロックの概要 Pixelブロック(PIX)は、3Dパイプライン中のバックエンドのまえの最後の
ブロックである。本ブロックは、OpenGL及びDirect3Dのフラグメントごとの動
作の役割を負う。これらの動作はアルファテスト、ステンシルテスト、深度テス
ト、ブレンド、振動、及びロジック動作を含む。ピクセルオーナーシップテスト
はウィンドウシステムの一部(OpenGL1.1規格の第4章参照)であり、バックエ
ンド内で実行される。これら動作に加えて、Pixelはアンチアライアシングに対
するサンプル蓄積を実行する。
【0427】 PIX前のパイプラインステージは、原線をVSPに変換する。VSPは、スタンプ上
の多角形の可視ポーションに対応する。スタンプは、画像の2×2ピクセル領域
である。SRTブロックは、各タイルに対する原線の収集の役割を負う。CULブロッ
クはSRTブロックからタイル順にデータを受信し、絶対に描画された画像には資
することのない原線のパーツを選別する。CULブロックはVSPを生成する。TEX及
びPHGユニットもVSPを受信し、それぞれフラグメントのライティング及びテクス
チャリングの役割を負う。
【0428】 PIXブロックはMode Injection(MIJ)及びPhong(PHG)ブロックから入力を受信
する。VSP及びモードパケットはMIJから受信し、VSP用フラグメントカラーはPHG
から受信する。PHGもVSPに対してフラグメントz値を供給することがある。オブ
ジェクトがそれに適用される深度テクスチャを持っている場合に、上記処理が起
きる。VSP用のフラグメントカラーは、VSPと同じ順番でPIXブロックに到着する
ことに注意する。PIXブロックは、適用可能モード設定に従って各可視サンプル
用データを処理する。PIXが現タイル用の全スタンプの処理を済ませると、Pixel
Out(PXO)ユニットに対して信号を送ってカラー、z、及びタイル用ステンシルバ
ッファの出力を促す。PixelOutユニットはピクセルサンプルを処理してカラー、
z、及びピクセル用のステンシル値を生成する。これらピクセル値は、バックエ
ンド(BKE)ブロックに送信される。フレームバッファ用のRDRAMメモリコントロー
ラはBKEブロック内にある。BKEブロックはPIXによるジオメトリ(VSP)の描画用
の現タイルバッファを準備する。本処理は、既存のカラー、z、及びステンシル
値のフレームバッファからのローディングを含む。 図65にPixel(PIX)ブロックのブロック図を示す。
【0429】 サンプルごとのz、ステンシル、及びカラーバッファは二重バッファリングさ
れている。それゆえ、PixelOutが1つのタイルをバックエンドに送信していると
、深度及び混合ユニットは2番目のタイルに書き込みを行っている場合がある。
サンプルごとのカラー、z、及びステンシルバッファは、1024サンプルなどのタ
イル1つ分のデータを保存するのに十分な大きさを持っている。ピクセルごとの
z、ステンシル、及びカラーバッファは各タイルにも用意されている。これらの
ピクセルごとのバッファは、BKEブロックとのインタフェース用に中間記憶とし
て使用される。
【0430】 PIXはMIJからバックエンド(BKE)ブロックに向かう幾つかのパケットを受信
する。入力フィルタは、バックエンドプリフェッチキュー上のこれらパケットを
適切に渡す。上記パケットは、受信した時の順番で上記キュー内で処理される。
幾つかのパケットはPixelOutユニット内のキューへと送信される。前述のように
、PIXブロックはMIJ及びPHGブロックから入力を受信する。これら2つの入力を
取り扱うための2つの入力キューがある。MIJからのデータパケットはVSPキュー
に向かい、PHGからのフラグメントColor/depthパケットはColorキューに向かう
。PIXブロックはBKEブロックに向かうパケットの幾つかも受信する。BKE及びPXO
ブロックは受信順でデータパケットを処理する。MIJはデータパケットを入力FIF
Oに入れる。入力バッファは、パケットヘッダーを検査し、BKEブロック向けのデ
ータをBKEブロックに送信し、PIXが必要とするデータパケットをVSPキューに送
信する。MIJから受信したパケットの大部分は、VSPキューに向けたものであり、
幾つかはBKEブロックに向かうだけであり、幾つかはBKE及びPXOユニットに送信
されてVSPキューにコピーされる。
【0431】 我々は、タイル動作の必要性とメカニズムを説明するのに多少脱線をする。典
型的な描画シーケンスは、下記の動作を伴うことがある。 1.必要ならば、カラー、z、及びステンシルバッファをそれらのクリア値に初
期化する。 2.必要ならば、ビットバックグラウンド画像をバッファに収容する。 3.ジオメトリの描画 4.他のビット 5.幾つかのさらなるジオメトリの描画 5.終了及びフリップ ステップ2内のビット動作はウィンドウ全体をカバーし、その後のそのバッフ
ァに対するクリア動作は必要ないことがある。ビットがウィンドウの一部をカバ
ーしている場合、クリアが必要な場合がある。さらに、動作1及び2は次のよう
に逆の順番で起きることがある。ウィンドウの一部のクリアに続いて、全部のウ
ィンドウのビット(多分)がある場合がある。ウィンドウ全体をカバーし、鋏テス
ト、タイル整列、及びスケーリングを必要としないプレジオメトリビットはBKE
ブロックによってタイルバッファへの画像読み戻しとして進められ、パイプライ
ン中でテクスチャリングされた原線として利用されることがある。同様に、Clea
r動作はは二種類に分けられる。ウィンドウ全体のClear動作は、PixelOutユニッ
ト内で進められ、ウィンドウの一部だけをカバーするClear動作は、PIXパイプラ
イン内で進められる。PIX(及びPIXの一部であるPixelOut)及びBKE双方は、動
作が呼び出された時に種々のバッファへの書き込みマスクを警戒する。実際に、
BKEブロックは、書き込みマスクを使用してタイルバッファを読み戻す必要があ
るかを決定している。フレームの描画がPolygonまたはソートメモリのオーバー
フローの原因になる場合は、やはりバッファの読み戻しが起きる可能性がある。
パイプラインはユーザフレームをすく数の順フレームに分割する。このように、
同じユーザフレームに対して、タイルがPIXボックス内で一回以上訪問すること
がある。一回目はタイルが見つかり、PIX(多分PixOutユニット)ブロックにより
描画に先立つ「クリア値」を伴うチップ上のタイルバッファクリアが必要になる
ことがある。後続のフレームでタイルを描画する場合は、ピクセルカラー、z、
及びステンシル値がフレームバッファメモリから読み戻される。zバッファがク
リアされ、カラー及びテンシルバッファが事前描画された画像からタイル内にロ
ードされると、他の非常に発生しがちなシナリオが起きることがある。このよう
に、タイルの準備の一環として、2つのことが起きる。バックグラウンド画像は
、フレームバッファメモリから有効化されてないビット平面にバックグラウンド
画像が読み戻され、ビット平面(カラー、z、及びステンシルマスクに対応)は
クリアされる。PIXから上ってっくるパイプラインステージは、これらの機能的
能力が「クリア」情報を送信するので、それらへの注意が必要である。
【0432】 PIXは入りサンプルのz値を既存のピクセルのそれらと比較して保存するサン
プルを決定する。Pixelは、オーバーフローに起因するユーザフレームの分割を
原因とするいずれのカラー染み出し加工物を最小化するために状態ビットも提供
する。 5.12.2 Pixelブロック内機能ユニット Pixelブロック内の機能ユニットに関して、そのカラー、アルファ、及び点描
値がフラグメントごとに生成され、それゆえ対応するテストの結果はフラグメン
ト内の全サンプルに適用されることに注意する。シザーステストの場合も同様で
ある。このブロックはフラグメントごと及びサンプルごとの演算に基づいて最適
化の導入を促している。
【0433】 ピクセル及びステンシル動作間の相違及びサンプルステンシル動作は、ステン
シル値がどのように検索され、タイルバッファに書き込まれるかの決断を妨げる
。 5.13 バックエンドブロック(BKE) 5.13.1 機能概要 5.13.1.1 用語 下記の項目は、本明細書の理解を助けるため、使用されるのに先立って下に定
義されたものでる。このため、この節を飛ばし、必要な時に参照することもでき
る。ピクセルオーナーシップ(PO BOX) は、スクリーン上に与えられたピクセルのうち
、ウィンドウIDが属するピクセルを決定するサブユニットである。このメカニズ
ムを使用して、スキャンアウトが上記ピクセルに付与されたオーバレイウィンド
ウがあるかを決定し、3Dタイル書き込みは、上記ピクセルへの書き込み許可を
チェックする。BKEバス は、BKEとGFD及びCFDとAGIを相互接続し、インタフェースする。このバ
スは、フレームバッファメモリ及びBKEレジスタに対する読み出し及び書き込み
使用される。フレームバッファ は、BKEに制御され、2D及び3Dウィンドウに付与された全て
のカラー及び深度値を保持する。このユニットは、リフレッシュレートでピクセ
ルをスキャンアウトすることによりモニタに表示されるスクリーンバッファを含
む。本ユニットはまた、スクリーンオーバレイ、pバッファ、ディスプレーリス
ト、頂点配列、及び蓄積バッファを寄せ付けない。スクリーンバッファ及び3D
のpバッファは二重バッファリングされている。 5.13.1.2 主な機能 図66にバックエンドそれにインタフェースするユニットとを示す。図に示す
スクリーンのように、BKEが3Dタイルの読み出し及び書き込みでもっともPixel
ユニットとインタラクトし、2Dグラフィックエンジン18000(図15に示す)と
はビット動作の実効のためにインタラクトする。CFDユニットは、BKEバスを使用
してフレームバッファからディスプレーリストを読み出す。AGIユニット110
4はBKEレジスタ及びメモリがマッピングされたフレームバッファのデータの読
み出し及び書き込みを行う。
【0434】 主なバックエンド機能を下記に示す。 ・ 3Dタイルよみこみ ・ Pisel Ownershipを使用した3Dタイル書き込み ・ 書き込み許可及びオーバーレイ検出用Pixel Ownership ・ Pixel Ownershipを使用したスキャンアウト ・ 固定比率ズーム ・ 3D蓄積バッファ ・ フレームバッファ読み出し及び書き込み ・ winidマップへのカラーキー ・ VGA ・ RAMDAC 5.13.2 3Dタイル読み出し BKEは、PIXからTile Beginコマンドをプリフェッチした。これらのパケットは
SRTでディスパッチし、全3Dユニットをバイパスしてタイルバッファの内容を読
み出すのに必要な潜在機能を提供する。3Dウィンドウの特徴はPIXから同じよ
うに早期に受信したBegin Frameコマンド群により初期化される。これらの特徴
としては、カラー及び深度表面用のアドレス、平面(アルファ、ステンシル、A
及びBバッファ)用の有効ビット、高さ及びストライド、カラーフォーマットな
どを挙げることができる。
【0435】 ピクセルアドレスは、ウィンドウパラメータを使用して計算される。タイルジ
オメトリで優位に立つため、16ピクセルが一回のメモリ読み出し要求で取り出
せる。
【0436】 3Dタイル読み出しでは、ピクセルオーナーシップは参考にされない。ウィン
ドウがメインスクリーン内にある場合は、オーナーシップ(再上部のウィンドウ
)は書き込みプロセス中に決定される。
【0437】 ピクセルは、縮小精度カラーに対しては24ビットカラーに拡張されないが、
32ビットピクセルワードにアンパックされる。
【0438】 Frequently Begin Tileコマンドは、クリア動作が適用されるためにタイル読
み込みは必要ないことを示すことがある。タイルバッファは、まだ割り当てられ
ており、タイル書き込みのピクセルオーナーシップが開始する。 5.13.3 3Dタイル書き込み 3Dタイル書き込みは3Dタイル読み出しが終わるとすぐに開始する。この潜在
機能は、ピクセルオーナーシップ書き込み許可の決定に使用される。タイルスタ
ートメモリアドレスは3D Tile Readプロセス中にすでに計算されている。書き
込み許可は、Rambusメモリに基づいたフレームバッファに対して書き込みマスク
として使用される。カラーは、カラー深度パラメータに指定されているように、
フレームバッファに書き込まれる前にパッキングされる。 5.13.4 ピクセルオーナーシップ ピクセルオーナーシップは共有スクリーンに対する書き込み許可の決定及びス
キャンアウト読み出し用オーバーレイウィンドウを識別するのに使用される。
【0439】 ピクセルオーナーシップブロックは、8ビットウィンドウIDを持つピクセルウ
ィンドウIDマップ同様に16バウンディングボックスを含む。これらIDは64個
のウィンドウを記載するテーブルをポイントする。バウンディングボックス及び
winidマップメカニズムは同時使用を可能にする。制御ビットはどのメカニズム
を最初に適用するかを決定する。
【0440】 ピクセルオーナーシップは、スクリーンx及びyピクセル座標を使用する。各
バウンディングボックスは、そのウィンドウに含まれる最大及び最小ピクセル座
標を指定する。バウンディングボックスは、再上部のウィンドウが最後に有効化
されたバウンディングボックスで指定されるように順序付けられている。バウン
ディングボックスは、長方形に形作られたウィンドウに対して簡単にセットアッ
プできる。それらは最も3Dウィンドウを志向しているが、少数の2Dウィンド
ウが使用されていると、本メカニズムは、2Dウィンドウをクリッピングするた
めにも使用される。
【0441】 任意に形成されたより多くのウィンドウの場合、よりメモリに集中的なメカニ
ズムが使用される。ピクセルあたりの8ビットウィンドウIDマップは与えられた
スクリーンピクセルが属するウィンドウを識別するためにオプションで保守され
る。
【0442】 書き込みの場合、タイルのウィンドウIDがピクセルオーナーシップで入手した
ピクセルIDと同じならば、ピクセル書き込みが有効化される。スキャンアウトの
場合、スクリーンからオーバーレイへの移行及び戻りはピクセルオーナーシップ
ウィンドウIDと現スキャンアウトウィンドウIDの比較により検出される。
【0443】 ピクセルオーナーシッププロセスを進める場合、ピクセルごとのチェックは、
しばしば16ピクセルチェックにより回避される。整列された水平16ピクセル
細片の場合、全てが同じウィンドウIDを共有する場合、それは一回の動作で決定
される。 5.13.5 スキャンアウト スキャンアウトはフレームバッファカラーを読み出し、データをディスプレー
用RAMDACに送信する。スキャンアウトは、フレームバッファで、最も高い優先順
位を持った動作である。スキャンアウトされるピクセルは、仮想ブリッツ、オー
バーレイなどを行うために読み出しピクセルオーナーシップブロックを通る。比
較的大きなキューが、オーバーレイの扱い及び水平ブランキング期間の優位性に
関わるイレギュラーな潜在機能をスムーズにするのに使用される。
【0444】 パレット及びガンマ修正がRAMDACにより実行される。固定比率のズームアウト
機能は、バックエンドによりスキャンアウトの間に実行される。
【0445】 スキャンアウトは、縮小3D機能を持つ1600×1200スクリーン用に120Hz
のリフレッシュレートを達成できなければならない。
【0446】 スキャンアウトは、ウィンドウあたり4つの違ったピクセルカラーフォーマッ
トをサポートする。メインスクリーン上の全てのウィンドウが同じピクセルカラ
ーフォーマットを共有する。サポートされたカラーフォーマットを下記に示す。
・ 32ビットRGBA(8-8-8-8) ・ 24ビットRGB(8-8-8) ・ 16ビットRGB(5-6-5) ・ 8ビットカラーインデックス スキャンアウトはScanoutキュー(SOQ)に常に24ビットを書き込む。カラー変
換及びアンパッキングは一切行われない。下位ビットは8及び16ビットカラー
のためにクリアされる。追加2ビットはピクセルあたりのカラーフォーマットに
使用される。
【0447】 インタレースされたスキャンアウトも特定のステレオ機器のためにサポートさ
れる。
【0448】 リアルタイム3Dアプリケーションは、小さなウィンドウに絵を描き、小さな
画像を大きなウィンドウにズームアップすることにより描画のスピードを上げる
ことができる。二線に挟まれた改ざんを伴うこのズーミングは、ピクセルがスキ
ャンアウトされた時に行われる。
【0449】 BKEは次の特定の固定比率スケーリングをサポートする。各方角で16/n、n
=1・・15である。サンプル点及び改ざん係数は、ズーム動作に先立って、ソ
フトウェアによりダウンロードされる。
【0450】 最大4つのウィンドウが、同じ固定比率(同じ係数)を使用してズームアウト
される。ピクセルがズーム機能出力から取り出す必要があるかを決定するために
スキャンアウトされたピクセルに対してズームバウンディングボックスが比較さ
れる。ズームロジックは、係数テーブルインデックスの順序付けるために継続し
て可能にすべき動作である。従って、スキャンアウトのウィンドウIDがズームボ
ックスのウィンドウIDと整合しなかった場合、ズーム出力は無視される。
【0451】 ウィンドウズームボックスはオーバーラップしてはならない。 5.13.6 3D蓄積バッファ BKEは64ビット(カラーあたり16ビット)蓄積バッファをサポートする。蓄
積コマンドは、フレーム間でtweenパケットとして受信される。それらのコマン
ドは、3Dタイルカラー、蓄積バッファカラー、及び即値を持つ多重及び追加機
能を実行する。結果は、蓄積バッファまたは3Dタイルに書き込まれる。
【0452】 シザーステストが有効な場合、そのシザースボックス内のピクセルのみがAccu
m動作により更新される。それ以外の場合は、ウィンドウが更新される。
【0453】 ピクセルが3Dタイルに書き戻された場合は、振動及びカラーマスキングがシ
ザーステストに加えて適用される。蓄積バッファは、カラーインデックスモード
には使用されない。 5.13.7 フレームバッファ読み出し及び書き込み BKEは全ての内部サブユニット及び外部ユニットのために読み出し及び書き込
みインタフェースを提供する。AGI、CFD、及びTDGはBKEバスを使用してフレーム
バッファ読み出し及び書き込み要求を作成する。BKE属性バスはそれらのユニッ
トから要求を出す。
【0454】 内部サブユニットはMem Busを使用してフレームバッファにアクセスする。3
Dタイル読み出し、3Dタイル書きこみ、蓄積バッファ読み出し及び書きこみ、
ピクセルオーナーシップwinidマップ読み出し、スキャンアウト、スクリーン及
びオーバーレイ読み出し、ズームウィンドウ読み出し、及びカラーキーwinidマ
ップ書きこみなどは全てMem Busを使用してフレームバッファにアクセスしてい
る。
【0455】 合計3.2Gbyte/sec大域幅能力を持つ2つのRambusメモリチャンネルがフレーム
バッファに対する性能要件を保持する。スキャンアウト及びズーム読み出しは、
再優先される。 5.13.8 カラーキーウィンドウマップ書きこみ ウィンドウのカラーキー機能はBKEからウィンドウIDマップを通じて提供され
る。特別カラーキーを持ったウィンドウは、適切なウィンドウ(key_id_on)をポ
イントするように設定された対応するウィンドウIDマップを持つ。ウィンドウID
key_id_onを伴う書きこみが行われた場合、カラーキーが付加されたピクセルだ
けが置き換えられる。
【0456】 BKEはソフトウェアがカラーキーのためのウィンドウIDマップを作成するため
に使用できる特別な機構を含む。カラーバッファ書き込みが特別なウィンドウ内
で行われ、カラーが適当な範囲にある場合、ピクセルのためのwinidが書き込ま
れることがある。 5.13.9 RAMDAC RAMDACは、デジタルカラー値をアナログ信号に変換する。ソフトウェアのプロ
グラマブルカラーパレットが8ビットインデックスを24ビットRGB値に変換す
る。同じRAMが調査ベースのガンマ修正にも使用される。調査RAMは256×10
ビットSRAMで編成され、その内の一つはカラーの各コンポーネントのためのもの
である。
【0457】 RAMDACは300Mhzまで動作でき、ピクセルブロックを生成できる。RAMDACは
、VGAコアまたはスキャンアウトキューからピクセルを受け付ける。RAMDA777Cは
コアとしてSEIから得られる。本書はコアとのインタフェース及びその機能に対
する基本的な要件を規定するだけである。 5.13.10 VGA VGAこれはブートタイムの間だけWindowsNT下で走行するスクリーン互換アプリ
ケーションに使用される。VGAコアはBKEバスとインタフェースし、フレームバッ
ファ読み出し及び書き込み用Mem バス及びVGAモードのスキャンアウト用のRAMDA
Cにてレジスタ読み出し及び書き込みを実行する。VGAユニットが無効化されると
、そのスキャンアウトは無視される。
【0458】 VGAこれはAlpinシステムから得られる。本書はコアとのインタフェース及びそ
の機能に関する基本的な要件を規定するだけである。 5.13.11 BKEバス CFDの説明に記されているように、バックエンド入力バス及びバックエンド出
力バスがあり、合わせてBKEバスと呼ばれる。
【0459】 BKEを通じて読み出し及び書き込みを行う外部クライアントユニットがAGIであ
る。
【0460】 これらのユニットは要求/許容プロトコルを使用してBKEバスのオーナーシッ
プを得る。クライアントが一旦このバスを許容すると、バスはBKEに読み出しま
たは書き込みパケットを通知し、BKEから読み出しデータをサンプリングする。
【0461】 クライアントはBKEバスオーナーシップを、そのReq信号をアサートすることに
よって要求する。BKEは本要求と他の条件を仲裁する。要求を出したクライアン
トがオーナーシップを許可された場合、BKEはGnt信号をアサートする。メモリア
クセスを済ませた後、現オーナーは自ら形Reqを取り除くことによってオーナー
シップを手放すか、Ris(Release)信号をBKEから受け取るまでオーナーシップ
(park)を保持する。クライアントは通常Ris信号を受け取った後で限られた時
間内にオーナーシップを放棄しなければならない。例えば、クライアントは最後
にデータが返ってきたらすぐにオーナーシップを手放さなければならない。追加記事 本発明は多数の革新的な構造、方法、及び手順を提供する。構造は、デジタル
回路を含む個別回路、コンピュータアーキテクチャ及びシステム、パイプライン
アーキテクチャ及びプロセッサ接続性などいかなる形も取り得る。方法論的には
、本発明は延長シェ−ディングに対する手順及び延長シェ−ディングを実行する
作業者、実行しない作業者、及びデータ処理を行う作業者などに広く使用される
、他の多数の革新的な手順を提供する。これらの普通の技術的に熟練した作業者
は、多くの発明的な構造及び手順が3次元グラフィックプロセッサに関連して説
明されているが、発明の多くが2次元処理を始めとしてデータ処理や操作にも広
く適応性を持っていることに気づくであろう。例えば、革新性の多くは、汎用コ
ンピュータ機器、システム、及びアーキテクチャの構造に導入可能である。幾つ
かの実施例がハードウェア利用を必要とするかまたはそこから利益を得ており、
少なくとも、幾つかの革新技術はハードウェアまたはソフトウェア/ファームウ
ェア利用及び組み合わせに適用可能である。
【0462】 上述した本発明の構造および方法により提供される革新的機構の内の幾つかの
簡潔なリストを直下に示す。このリストは、代表的なものを例示するもの、制限
するものではない。ここに示す個々の構造及び手順は様々に組み合わされるが、
それぞれの組み合わせにつきリストアップしていないことに留意するべきである
。さらに、このリストは、革新技術の適用に関して3次元グラフィックスプロセ
ッサに焦点を当てているが、それらの革新技術は、本明細書中で説明され、図に
示されている機構及び/または動作を持つ汎用コンピュータ機器にも容易に適用
可能である。
【0463】 ここに記されている発明は、多数の発明を含む構造及び方法を含むが、次に示
す構造及び手順に限定されるものではない。3次元グラフィックス延長シェ−デ
ィングアーキテクチャ、従来型の隠れた表面の除去。タイルプリフェッチ、コン
テクスト切り替え、より良いアンチアライアシングのためのSRTによるマルチ
パス、サンプル場所の選択、セットアップ前の分類、Tweenパケット、パケット
によるデータ転送、アルファテスト、ブレンド、点描線、その他、チップ分割、
オブジェクトタグ(特に延長シェ−ディングアーキテクチャ)、カラー空間内の
ロガリズミック正規化(浮動小数点カラー)、バックエンドマイクロアーキテク
チャ、スキャンアウト中のピクセルズーミング、スキャンアウト中仮想ブロック
転送(BLT)、ピクセルオーナーシップ、ウィンドウID、ブロッキング及びノン
ブロッキング割り込み機構、キューイング機構、頂点リストに対するトークン挿
入、隠れた表面の除去、タイル内容アドレッサブルzバッファ、3ステージzバ
ッファプロセス、アルファテストへの対処及び延長シェ−ディング中のステンシ
ル、Z Ref及びDz/dx及びdx/dyを持つスタンプの下流送信、Zバッファメモリ
とは別のスタンプポーションメモリ、分類された透過性アルゴリズム、サンプル
ごとの制限された状態マシン、SAM利用、フラグメントマイクロアーキテクチャ
、GEOマイクロアーキテクチャ、パイプステージインタリービング、多角形クリ
ッピングアルゴリズム、2次元ブロックマイクロアーキテクチャ、0から1イン
クルーシブマルチプライヤ(Mul-18p)、整数―浮動少数点−整数(ifi)整合ユ
ニット、テイラーシリーズ利用、算術ブロック構築法、マルチチップ通信リング
グラフィックス、延長シェイダー内モード対処、モードキャチング、MLMポイン
タ記憶、多角形メモリ内Sort Whole内クリップド多角形、Phong/bump割り当て、
テクスチャ環境及びライティング用動的マイクロコード生成、延長シェ−ディン
グマイクロアーキテクチャ、フラグメントエンジンの素材タグベースのリソース
、アーキテクチャ内のタンジェント空間ライティング法、種々のスケールバンプ
マップ、自動ベース生成、自動傾きフィールド生成、角度及び大きさの別々の処
理による正規改ざん、延長シェーダにおけるポストタイルソーティングセットア
ップ操作、統一された原線記述、タイル相対Y値及びスクリーン相対x値、ハー
ドウェアタイルソーティング、十分な空間ルックアヘッド機構、接触タイル改ざ
ん、テクスチャ再使用マッチングレジスタ(延長シェーダを含む)、ピクセルに
拡張されたサンプル(テクスチャミス扱い)、タイルバッファ及びピクセルバッ
ファ(テクスチャマイクロアーキテクチャ)、及びパケットを使用したプロセッ
サ内データ転送。
【0464】 本明細書で説明したすべての刊行物、特許、及び特許出願は、各刊行物及び特
許出願を特に個々に参照したものと同様の範囲で、本願において参照として含め
ることができる。
【0465】 本発明の前に述べられた実施例の記載は、図示及び記述の目的で提供されたも
のである。上述の記載は、発明を本明細書中で明らかな形態に限定するものでは
なく、上述した教示の範囲内での多数の修正や変更が可能である。実施例は、本
発明の原理を説明する目的で選択・記述されたものである。それらの実際的な適
用にあたり、当業者であれば、本発明及び種々の実施例に基づいて特別な使用目
的に適合させるべく、様々な修正を加えて有効利用が可能であろう。本発明の範
囲は、本願に添付された請求項及びその均等範囲により規定される。 関連出願 本出願は、35 USC セクション 119(e)の米国仮出願、1998年8月20日に
出願された出願番号 No.60/097,336、題名“GRAPHICS PROSESSOR WITH DEFFERED
SHADING”の下に利益を主張する。
【0466】 本出願は、USC セクション 120による1998年12月17日の米国特許出願
、出願番号No.90,213,990、題名“ HOW TO DO TANGENT SPACE LIGHTING IN A DE
FFERED SHADING ARCHITECTURE” (アトーニードケットNo.A-66397)の下にも利益
を主張する。
【0467】 題名“ユニファイドプリミティブデスクリプタを使用する3−Dグラフィック
スパイプラインにおけるセットアップ動作を実行するための装置および方法”(
アトーニードケットNo. A-66382)の下にも利益を主張する。
【0468】 題名“ポスト−ファイルソーティングセットアップ”(アトーニードケットNo
. A-66383)の下にも利益を主張する。
【0469】 題名“相対Y−値のタイルおよび相対X−値のスクリーン”(アトーニードケ
ットNo. A-66384)の下にも利益を主張する。
【0470】 題名“3次元グラフィックスパイプラインにおける空間ソーティングイメージ
データシステム、装置および方法”(アトーニードケットNo. A-66380)の下にも
利益を主張する。
【0471】 題名“3次元グラフィックスパイプラインにおけるソーティングされた対象次
ジオメトリリのための保証された保守メモリ見積もりのためのシステム、装置お
よび方法”(アトーニードケットNo. A-66381)の下にも利益を主張する。
【0472】 題名“3次元グラフィックスパイプラインにおける与えられた資源をバランシ
ングさせるためのシステム、装置および方法”(アトーニードケットNo. A-6637
9)の下にも利益を主張する。
【0473】 題名“パイプライン状態を記憶およびリトリーブするグラフィックスプロセッ
サ”(アトーニードケットNo. A-66378)の下にも利益を主張する。
【0474】 題名“テクスチャを発生させるための方法および装置”(アトーニードケット
No. A-66398)の下にも利益を主張する。
【0475】 題名“3Dグラフィックスパイプラインにおけるジオメトリ操作のための装置
および方法”(アトーニードケットNo. A-66373)の下にも利益を主張する。
【0476】 題名“3Dグラフィックスパイプラインにおけるフラグメント操作のための装
置および方法”(アトーニードケットNo. A-66399)の下にも利益を主張する。
【0477】 題名“繰り返しシェーディンググラフィックスパイプラインプロセッサ”(ア
トーニードケットNo. A-66360)の下にも利益を主張する。
【0478】 題名“繰り返しシェーディングのグラフィックスプロセッサにおける保守しつ
つ隠された表面除去を実行するための方法および装置”(アトーニードケットNo
. A-66386)の下にも利益を主張する。
【0479】 題名“向上した特徴を有する繰り返しシェーディンググラフィックスパイプラ
インプロセッサ”(アトーニードケットNo. A-66364)の下にも利益を主張する。
【0480】 これらのいくつかの構造及び方法に、ディファード・シェーディング・グラフ
ィックス・パイプライン・プロセッサ及び処理方法の多くの実施形態が、それら
に関連する構造及びプロシージャと同様に含まれる。以下の内容を含むが、それ
らに限定されない、多くの実施形態が示され及び記述される: (1)(a)通信チャネルを介して、外部コンピュータからのデータ及び/又は
コマンドの入力を伝え、及び前記入力を、一連のパケットに変換するコマンド・
フェッチ及びデコード装置であって、前記パケットは、色、面法線、テクスチャ
座標、レンダリング情報、ライティング、ブレンディング・モード、及びバッフ
ァ機能を含むグループから選択された情報項目を含む、前記コマンド・フェッチ
及びデコード装置と;(b)前記パケットを受信し、及び座標変換、すべてのポ
リゴンの、実三角形又は退化三角形への分解、ビューイング・ボリューム・クリ
ッピング(viewing volume clipping)、及び任意で、グロー・シェーディング
に必要とされる、バーテックスごとのライティング及び色計算を実行するジオメ
トリ装置と;(c)モード抽出装置及び前記ポリゴン装置と関連したポリゴン・
メモリであって、前記モード抽出装置は、前記ジオメトリ装置からデータ・スト
リームを受信し、及び前記データ・ストリームを、ソート装置に送られるバーテ
ックス・データと、記憶のために前記ポリゴン・メモリへと送られる非バーテッ
クス・データとに分離する、前記装置と;(d)ソート装置及び前記ソート装置
と関連したソート・メモリであって、前記ソート装置は、前記モード抽出装置か
らバーテックスを受信し、及びその結果の点、線、及び三角形をタイルでソート
し、及び前記ソートされたジオメトリを、タイルごとのオーダで、完全なプリミ
ティブを表すソート・ブロック出力パケットの手段によって、セットアップ装置
へと伝える、前記ソート装置及びソート・メモリと; (e)前記ソート・ブロ
ック出力パケットを受信し、及び一度に一つのプリミティブ、タイルごとのベー
スで、線及び三角形に関して空間デリバティブを計算し、及び前記空間デリバテ
ィブを、パケットの形式でカル装置に送るセットアップ装置と;(f)一度に、
1タイル分のデータを受信し、及び大きさ比較内容アドレッサブル・メモリ(M
CCAM)カル・サブ装置及びサブピクセル・カル・サブ装置を有するカル装置
であって、前記MCCAMカル・サブ装置は、以前に処理されたジオメトリによ
って完全に隠されるプリミティブを廃棄するように動作可能であり、及び前記サ
ブピクセル・カル・サブ装置は、一部又は全体が可視である残りのプリミティブ
を処理し、及び前記残りのプリミティブの可視フラグメントを決定し、前記サブ
ピクセル・カル・サブ装置は、一度に、1スタンプ分のフラグメントを出力する
前記カル装置と;(g)前記カル装置からの入力を受信し、及び前記ポリゴン・
メモリから色及び素材プロパティを含むモード情報を検索し、及び前記モード情
報を、フラグメント装置、テクスチャ装置、フォン装置、ピクセル装置、及びバ
ックエンド装置の一つ以上に送るモード・インジェクション装置であって;前記
フラグメント装置、前記テクスチャ装置、前記フォン装置、前記ピクセル装置、
又は前記バックエンド装置の少なくともいくつかは、最近使用されたモード情報
をキャッシュするためのモード・キャッシュを含み;すでにキャッシュされた情
報を識別し、すでにキャッシュされた情報を送らず、それによって通信帯域幅を
低減させる状態情報を維持する前記モード・インジェクション装置と;(h)グ
ロー・シェーディングのための色値を補間し、フォン・シェーディングのための
面法線及びテクスチャ・マッピングのためのテクスチャ座標を補間し、及びテク
スチャを高さフィールド勾配として表すバンプ・マップが使用されている場合に
、面接線を補間するためのフラグメント装置であって;重心係数を使用して、透
視的修正補間を実行する前記フラグメント装置と;(i)テクスチャ装置と、及
び前記テクスチャ装置と関連するテクスチャ・メモリであって;前記テクスチャ
装置は、前記テクスチャ・メモリに記憶されたテクスチャ・マップをピクセル・
フラグメントに適用し;前記テクスチャ・マップはミップ・マップ(MIP-mapped
)され、及び各マップが、アイ・ポイントから一定の距離にある前記テクスチャ
の外観を表す、異なるレベルのディテールで一連のテクスチャ・マップを具備し
;前記テクスチャ装置は、正しいレベルのディテールに近似する一定のピクセル
・フラグメントに関するテクスチャ値を作成するために、前記テクスチャ・マッ
プからトリ・リニア補間を実行し;前記テクスチャ装置は、補間されたテクスチ
ャ値を、フラグメントごとのベースで前記フォン装置に伝える、前記テクスチャ
装置及びテクスチャ・メモリと;(j)前記モード・インジェクション装置、前
記テクスチャ装置からの前記テクスチャ色、及び前記フラグメントの外観の色を
決定するために、前記フラグメント装置によって生成される前記面法線によって
供給される素材及びライティング情報を使用して、各ピクセル・フラグメントに
関してフォン・シェーディングを実行するためのフォン・ライティング装置であ
って;バンプ・マッピングが使用されている場合に、シェーディングの前に、前
記フラグメントの面法線を摂動させるために、前記テクスチャ装置からの前記補
間された高さフィールド勾配を任意で使用する前記フォン装置と;(k)各フラ
グメントが個別の色値を有し、可視スタンプ・ポーション(Visible Stamp Port
ion)と称される、1スタンプ分のフラグメントを一度に受信し、及びピクセル
・オーナシップ・テスト、シザー・テスト、アルファ・テスト、ステンシル・オ
ペレーション、深度テスト、ブレンディング、ディザリング、及び各ピクセルに
おける各サンプルでのロジック・オペレーションを実行し、及び1タイル分の仕
上げられたピクセルを蓄積した後に、前記ピクセルをアンチ・エイリアスするた
めに、各ピクセル内の前記サンプルをブレンドし、及び前記アンチ・エイリアス
されたピクセルをバックエンド装置に伝えるピクセル装置と;及び(l)前記ピ
クセル装置から、一度に1タイル分のピクセルを受信するために、前記ピクセル
装置に接続され、及び前記ピクセルをフレーム・バッファに記憶する前記バック
エンド装置と を具備するディファード・グラフィックス・パイプライン・プロセッサ。
【0481】 (2)レンダリングされた画像をグラフィックス・プリミティブから形成する
ためのグラフィックス・レンダリング・システムであって、前記レンダリングさ
れた画像は、フレーム・バッファに記憶され:(A)ホスト・プロセッサと;
(B)システム・メモリと;(C)ピクセルを記憶するフレーム・バッファと;
(D)(1)第一の直接メモリ・アクセス・コマンドと、及び2次元グラフィ
ックス・オペレーションを実行するための第一のコマンドとを受信し及び記憶す
る2Dコマンド待ち行列メモリと;(2)第二の直接メモリ・アクセス・コマン
ドと、及び3次元グラフィックス・オペレーションを実行するための第二のコマ
ンドとを受信し及び記憶する3Dコマンド待ち行列メモリであって、前記第二の
コマンドは:前記グラフィックス・プリミティブのいくつかと;及びパイプライ
ン状態の一部を具備する前記3Dコマンド待ち行列メモリと;(3)2次元グラ
フィックス・オペレーションを実行するための第三のコマンドを受信し及び記憶
する2D応答待ち行列メモリと;(4)3次元グラフィックス・オペレーション
を実行するための第四のコマンドを受信し及び記憶する3D応答待ち行列メモリ
であって、前記第四のコマンドは:前記グラフィックス・プリミティブのいくつ
かと;及び前記パイプライン状態の一部を具備する前記3D応答待ち行列メモリ
と;(5)前記2Dコマンド待ち行列メモリ及び前記3Dコマンド待ち行列メモ
リに接続された直接メモリ・アクセス・コントローラであって:(a)前記第三
のコマンドを前記システム・メモリから読み取り、及び前記読み取られた第三の
コマンドを、前記2D応答待ち行列へと書き込むことによって、前記記憶された
第一の直接メモリ・アクセス・コマンドを受信し及び前記第一の直接メモリ・ア
クセス・コマンドを実行するロジックと;及び(b)前記第四のコマンドを前記
システム・メモリから読み取り、及び前記読み取られた第四のコマンドを前記3
D応答待ち行列へと書き込むことによって、前記記憶された第二の直接メモリ・
アクセス・コマンドを受信し及び前記第二の直接メモリ・アクセス・コマンドを
実行するロジックとを具備する前記直接メモリ・アクセス・コントローラとを具
備するコマンドを受信するための装置と:(E)(1)前記グラフィックス・プ
リミティブを変換するロジックと;(2)前記グラフィックス・プリミティブが
、少なくとも部分的に、ビュー・ボリュームに含まれているか決定するために、
前記グラフィックス・プリミティブをクリップ・テストするロジックと;(3)
ビューイング・ポイントから逸れた方を向いている前記グラフィックス・プリミ
ティブのいずれをも廃棄するために、面決定を実行するロジックとを具備するジ
オメトリ装置と:(F)(1)隠れ面除去に必要な前記パイプライン状態の部分
と;(2)バーテックス場所を含む、隠れ面除去に必要な前記グラフィックス・
プリミティブの部分とを具備するソート・メモリと:(G)(1)前記グラフィ
ックス・プリミティブの属性とともに、フレームに関する前記グラフィックス・
プリミティブと;及び(2)バーテックス色及びテクスチャ座標を含む、隠れ面
除去に必要でない前記グラフィックス・プリミティブの部分とを記憶する状態メ
モリと:(H)(1)前記画像内におけるタイル領域に従って、前記グラフィッ
クス・プリミティブをソートするロジックと;(2)タイルに従って、前記ソー
ト・メモリから前記ソートされたグラフィックス・プリミティブを読み取るロジ
ックとを具備するソート装置と;(I)前記ソートされたグラフィックス・プリ
ミティブに関するデリバティブを計算するセットアップ装置と;(J)シーン・
メモリに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレ
ーム・バッファにおける前記ピクセルの最終色に影響を与えるかを決定するため
に、隠れ面除去を実行するカル装置と;(K)前記各ピクセル内における各サン
プル、又はサンプルのグループに関して、フラグメント色を生成するひとつ以上
の計算装置であって、前記各ピクセルに関する色値の生成は、前記ピクセルに影
響を与えると決定された前記グラフィックス・プリミティブの前記部分に関して
のみ実行され:(1)前記グラフィックス・プリミティブに関連するデータを補
間するための装置であって:(a)キャッシュ・フィル・ポリゴン色データ(ca
she fill polygon color data)を記憶するメモリであって、前記色データは、
バーテックス座標、w座標、及びテクスチャ座標を具備する前記メモリと;(b
)前記バーテックス座標及び前記w座標から前記グラフィックス・プリミティブ
の各々に関して、重心係数を計算するロジックと;(c)複数の前記グラフィッ
クス・プリミティブに対応する複数のデータ・キャッシュ・エントリを記憶する
キャッシュ・メモリであって、前記キャッシュされたデータは、重心係数及びテ
クスチャ座標を具備する前記キャッシュ・メモリと;(d)前記グラフィックス
・プリミティブの一つのフラグメントを受信するレジスタであって、前記フラグ
メントは、フラグメント座標及びサンプル・マスクを具備し、前記サンプル・マ
スクは、前記フラグメントによって覆われる前記ピクセル内のサンプル場所を示
す前記レジスタと;(e)補間場所の低位ビットを決定するルックアップ・テー
ブルであって、前記ルックアップ・テーブルの入力は、前記サンプル・マスクを
具備し、前記補間場所は、サブピクセル精度を有する前記ルックアップ・テーブ
ルと;(f)前記受信されたフラグメントに対応する前記記憶されたデータ・キ
ャッシュ・エントリの一つを選択し及び読み取るロジックと;(g)前記重心係
数及び前記補間場所から補間係数を計算するロジックと;(h)前記計算された
補間係数を使用して、前記テクスチャ座標を補間し、前記補間場所においてテク
スチャ座標を生成するロジックとを具備する前記装置と:(2)バーテックス面
法線を補間するための装置であって:(a)前記バーテックス面法線の各々を、
バーテックス大きさベクトル及びバーテックス方向ベクトルに分解するロジック
と;(b)複数の前記バーテックス大きさベクトル及び前記計算された補間係数
から、補間された大きさベクトルを計算するロジックと;(c)複数の前記バー
テックス方向ベクトル及び前記計算された補間係数から、補間された方向ベクト
ルを計算するロジックと;及び(d)補間された面法線を生成するために、前記
補間された大きさベクトル及び前記補間された方向ベクトルを結合させるロジッ
クとを具備する前記装置と:を具備する前記計算装置と (L)(1)ピクセル
ごとの色値を生成するために、前記フラグメント色をブレンドするロジックと;
及び(2)前記生成されたピクセルごとの色値を、前記フレーム・バッファに記
憶するロジックとを具備するピクセル装置と、(M)(1)前記3次元オブジェ
クトが、前記グラフィックス・レンダリング・システムによって処理されると、
オブジェクト・タグを、前記3次元オブジェクトと関連付けるロジックと;(2
)前記3次元オブジェクトが、前記グラフィックス・レンダリング・システムに
おいて処理されると、前記3次元オブジェクトを、一つ以上の可視性基準でテス
トするロジックと;(3)複数のビットを具備する状態レジスタと;(4)前記
オブジェクト・タグの一つに従って、前記状態レジスタにおける前記ビットの一
つを選択するロジックと;(5)前記可視性基準でのテストに合わせて、前記3
次元オブジェクトの対応する一つの応答に従って、前記状態レジスタにおける前
記選択されたビットの値を設定するロジックと;及び(6)前記ホスト・プロセ
ッサへ、前記状態レジスタ内容を読み取り及び転送するロジックであって、前記
ホスト・プロセッサは、前記3次元オブジェクトのいずれが、少なくとも部分的
に可視であるかを決定する前記ロジックとを具備する状態モニタリング装置と(
N)(1)ウィンドウ識別子マップを記憶する第一のメモリであって、前記ウィ
ンドウ識別子マップは、前記フレーム・バッファにおける前記ピクセルの各々に
関して、ウィンドウ識別子を具備する前記第一のメモリと(2)複数の文字枠記
述を記憶する第二のメモリであって、前記文字枠記述の各々は、対応する文字枠
及び文字枠ウィンドウ識別子の最大及び最小ピクセル座標を具備する前記第二の
メモリと;(3)前記デジタル画像と関連する、プログラムに従って割り当てら
れた画像識別子を記憶するレジスタと;(4)前記デジタル画像から、画像ピク
セルを選択するロジックと;(5)前記選択された画像ピクセル上で動作するピ
クセル・オーナシップ・ロジックであって:(a)プログラムに従って設定され
た制御ビットによって可能にされるウィンドウ識別子マップ・テスト・ロジック
であって:(i)前記選択された画像ピクセルに対応する前記第一のメモリから
、前記ウィンドウ識別子を読み取るロジックと;(ii)前記割り当てられた画像
識別子を、前記読み取られたウィンドウ識別子と比較するコンパリタ回路(comp
aritor circuit)と;及び(iii)前記割り当てられた画像識別子が、前記読み
取られたウィンドウ識別子と適合しない場合、前記選択された画像ピクセルを廃
棄するロジックと;を具備する前記ウィンドウ識別子マップ・テスト・ロジック
と、(b)プログラムに従って設定された制御ビットによって可能にされる文字
枠テスト・ロジックであって:(i)前記選択されたピクセルが、前記選択され
た第一の文字枠記述の前記最大及び最小ピクセル座標内に入るように、前記文字
枠記述の第一の一つを選択するロジックと;(ii)前記割り当てられた画像識別
子を、前記第一の文字枠記述の前記文字枠ウィンドウ識別子と比較するコンパリ
タ回路と;及び(iii)前記割り当てられた画像識別子が、前記第一の文字枠の
前記文字枠ウィンドウ識別子と適合しない場合、前記選択された画像ピクセルを
廃棄するロジックとを具備する前記文字枠テスト・ロジックと及び(c)前記選
択された画像ピクセルが廃棄されなかった場合に、前記選択された画像ピクセル
を前記フレーム・バッファに書き込むロジックとを具備する前記ピクセル・オー
ナシップ・ロジックとを具備する、デジタル画像を前記フレーム・バッファに記
憶するための装置と、(O)(1)前記ピクセル値が前記フレーム・バッファに
記憶されると、前記レンダリングされた画像において、前記ピクセル値のヒスト
グラムを生成するロジックと;(2)前記デジタル−アナログ・コンバータに適
合するように、前記ピクセル値の前記スケール及び動的な範囲を調整するために
、前記ヒストグラムに基づいて、変換関数を計算するロジックと;(3)ラスタ
線のオーダで、前記フレーム・バッファから前記ピクセル値を読み取るロジック
と;(4)前記計算された変換関数に従って、前記読み取られたピクセル値を変
換するロジックと;及び(5)前記変換されたピクセル値を、前記デジタル−ア
ナログ・コンバータに入力するロジックとを具備するスキャンアウト装置と(P
)(1)プログラムに従ってダウンロードされた補間係数を記憶するメモリと;
(2)プログラムに従って選択された、複数の固定ズーム比の一つを記憶するレ
ジスタと;(3)プログラムに従って選択された、コンピュータ・ディスプレイ
内におけるズーム文字枠の場所を記憶するレジスタと;(4)プログラムに従っ
て割り当てられた、前記ズーム文字枠と関連するウィンドウ識別子を記憶するレ
ジスタと;(5)前記フレーム・バッファから第一のピクセル色を読み取るロジ
ックと;(6)前記フレーム・バッファから複数の第二のピクセル色を読み取る
ロジックと;(7)前記複数の第二のピクセル色及び前記ダウンロードされた補
間係数から、ズームされたピクセル色を計算するロジックと;(8)前記フレー
ム・バッファから、ピクセル・ウィンドウ識別子を読み取るロジックと;(9)
前記ディスプレイ・ピクセルが、前記ズーム文字枠内にあり、及び前記ピクセル
・ウィンドウ識別子が、前記ズーム文字枠に割り当てられた前記ウィンドウ識別
子と等しい場合、前記計算されたズーム・ピクセル色を、前記デジタル−アナロ
グ・コンバータに送るロジックと;(10)前記ディスプレイ・ピクセルが、前
記ズーム文字枠内になく、又は前記ピクセル・ウィンドウ識別子が、前記ズーム
文字枠に割り当てられた前記ウィンドウ識別子と等しくない場合、前記読み取ら
れた第一のピクセル色を、前記デジタル−アナログ・コンバータに送るロジック
と;を具備するスキャンアウト装置とを具備する前記グラフィックス・レンダリ
ング装置。
【0482】 (3)前記グラフィックス・オブジェクトから、フレーム・バッファにおいてレ
ンダリングされた画像を形成するためのグラフィックス・レンダリング方法であ
って、前記グラフィックス・オブジェクトは複数のグラフィックス・プリミティ
ブを具備し:タグを前記オブジェクトに割り当てるステップと;前記オブジェク
トが前記グラフィックス・レンダリング・パイプラインにおいて処理されると、
一つ以上の可視性基準で前記オブジェクトテストするステップであって、前記各
オブジェクトの前記テストは、前記オブジェクト内における前記プリミティブの
前記テストを含む前記ステップと;前記可視性基準に従った前記テストに合わせ
て、前記タグされたオブジェクトの応答を示す、状態ワードにおけるビットを設
定するステップと;及び前記オブジェクトのいずれが、少なくとも部分的に可視
であるかを決定するため、前記状態ワードを読み取るステップとを具備する前記
方法。 (4)(3)に記載のグラフィックス・レンダリング方法であって:前記オブジ
ェクトの文字枠ボリューム(bounding volume)に近似するように、前記グラフ
ィックス・プリミティブの前記入力を含む、前記グラフィックス・オブジェクト
の入力ステップと;前記文字枠ボリュームの可視性を決定するために、前記状態
ワードを読み取るステップと;前記対応する文字枠ボリュームが、可視でないと
決定される時に、前記オブジェクトを廃棄するステップと;をさらに具備する前
記方法。 (5)(3)に記載のグラフィックス・レンダリング方法であって:前記グラフ
ィックス・オブジェクトを受け取るステップと;前記グラフィックス・プリミテ
ィブをメモリに記憶することによって、複数の前記オブジェクトを蓄積するステ
ップと;前記フレーム・バッファにおいて、最終結果に影響を与えないものと保
証される前記プリミティブの部分を除去するために、前記蓄積されたオブジェク
トを処理するステップと;及び前記状態ワードの読み取りステップを実行する前
に、複数の前記オブジェクト上で、前記蓄積されたオブジェクトを処理するステ
ップを実行するステップであって、前記状態ワードはそれから、前記複数の蓄積
されたオブジェクトの各々の可視性を決定するために使用される前記ステップと
をさらに具備する前記方法。 (6)フレーム・バッファにレンダリングされた画像を形成し、及び前記レンダ
リングされた画像をディスプレイに表示するためのグラフィックス・レンダリン
グ方法であって:複数のグラフィックス・プリミティブを受け取るステップと;
一列のピクセル値を生成するために、前記グラフィックス・プリミティブをレン
ダリングするステップと;前記フレーム・バッファにおいて前記ピクセル値を記
憶するステップと;前記フレーム・バッファにおいて、前記ピクセル値のヒスト
グラムを生成するステップと;デジタル−アナログ・コンバータに適合するよう
に、前記ピクセル値のスケール及び動的な範囲を調節するために、前記ヒストグ
ラムに基づいて、変換関数を計算するステップと;ラスタ・スキャンアウト方法
で、前記フレーム・バッファから、前記ピクセル値を読み取るステップと;前記
計算された変換関数に従って、前記読み取られたピクセル値を変換するステップ
と;アナログ信号を生成するために、前記変換されたピクセル値を、前記デジタ
ル−アナログ・コンバータに入力するステップと;及び前記アナログ信号を、前
記ディスプレイに送るステップとを具備する前記グラフィックス・レンダリング
方法。 (7)(6)に記載のグラフィックス・レンダリング方法であって、前記記憶ス
テップは、前記フレーム・バッファにおいて前記ピクセル値を示すために、浮動
小数点値を記憶することを特徴とする、前記グラフィックス・レンダリング方法
。 (8)(6)に記載のグラフィックス・レンダリング方法であって、前記変換方
法は:その範囲の圧縮又は拡張、線形圧縮又は拡張、対数圧縮、指数又は電力拡
張、他の代数又は多項式マッピング関数、及びそれらの組み合わせをすることな
く、ある範囲の値を、異なる範囲の値にオフセット又はシフトすることを含むグ
ループから選択されるオペレーションの一つ以上を伴うことを特徴とする前記グ
ラフィックス・レンダリング方法。
【0483】 (9)フレーム・バッファに記憶された、レンダリングされた画像を形成するた
めのグラフィックス・レンダリング方法であって:グラフィックス・プリミティ
ブを受け取るステップと;前記グラフィックス・プリミティブを変換するステッ
プと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボリ
ュームに含まれるか決定するために、前記グラフィックス・プリミティブをクリ
ップ・テストするステップと;ビューイング・ポイントから逸れた方を向いてい
る前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をする
ステップと;前記デリバティブの計算を含む、前記グラフィックス・プリミティ
ブに関する増分レンダリングのためのセットアップを実行するステップと;シー
ン・メモリに:(1)前記グラフィックス・プリミティブの属性とともに、フレ
ームに関する前記グラフィックス・プリミティブと;及び(2)前記フレーム全
体の、パイプライン状態の様々な設定、を記憶するステップと;前記シーン・メ
モリに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレー
ム・バッファにおけるピクセルの最終色に影響を与えるかを決定するために、隠
れ面除去をするステップと;各フラグメントに関する色値を生成するためにフラ
グメント・カラリングをするステップであって、各フラグメントは、前記ピクセ
ルの一つの中の一つのサンプル又はサンプルのグループを含み、前記フラグメン
トの各々に関する色値の生成は、前記フレーム・バッファにおけるピクセルの最
終色に影響を与えると決定された前記グラフィックス・プリミティブの部分に関
してのみ実行される前記ステップと;ピクセルごとに単一の色値を生成するため
に、前記フラグメント色をブレンドするステップと;及び前記生成されたピクセ
ルごとの色値を、フレーム・バッファに記憶するステップとを具備する前記グラ
フィックス・レンダリング方法。 (10)フレーム・バッファに記憶された、レンダリングされた画像を形成する
ためのグラフィックス・レンダリング方法であって:グラフィックス・プリミテ
ィブを受け取るステップと;前記グラフィックス・プリミティブを変換するステ
ップと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボ
リュームに含まれるか決定するために、前記グラフィックス・プリミティブをク
リップ・テストするステップと;ビューイング・ポイントから逸れた方を向いて
いる前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をす
るステップと;前記デリバティブの計算を含む、前記グラフィックス・プリミテ
ィブに関する増分レンダリングのためのセットアップを実行するステップと;空
間メモリに:(1)隠れ面除去に必要な前記パイプラインの部分と;及び(2)
バーテックス場所及び空間デリバティブを含む、隠れ面除去に必要なグラフィッ
クス・プリミティブの部分とを記憶するステップと;ポリゴン・メモリに:(1
)隠れ面除去に必要ない前記パイプライン状態の部分と;及び(2)バーテック
ス色、テクスチャ座標、及び色デリバティブを含む、隠れ面除去に必要ない前記
グラフィックス・プリミティブの部分と、を記憶するステップと;前記空間メモ
リに記憶された前記グラフィックス・プリミティブのどの部分が、前記フレーム
・バッファにおけるピクセルの最終色に影響を与えるかを決定するために、隠れ
面除去をするステップと;各フラグメントに関する色値を生成するために、フラ
グメント・カラリングをするステップであって、各フラグメントは、前記ピクセ
ルの一つの中で、一つのサンプル又はサンプルのグループを具備し、前記フラグ
メントの各々に関する色値の生成は、前記フレーム・バッファにおけるピクセル
の前記最終色に影響を与えると決定された前記グラフィックス・プリミティブの
前記部分に関してのみ実行される前記ステップと;単一の色値をピクセルごとに
生成するために、前記フラグメント色をブレンドするステップと;及び前記生成
されたピクセルごとの色値を、前記フレーム・バッファに記憶するステップとを
具備する前記グラフィックス・レンダリング方法。
【0484】 (11)フレーム・バッファに記憶された、レンダリングされた画像を形成する
ためのグラフィックス・レンダリング方法であって:グラフィックス・プリミテ
ィブを受け取るステップと;前記グラフィックス・プリミティブを変換するステ
ップと;前記グラフィックス・プリミティブが少なくとも部分的に、ビュー・ボ
リュームに含まれるか決定するために、前記グラフィックス・プリミティブをク
リップ・テストするステップと;ビューイング・ポイントから逸れた方を向いて
いる前記グラフィックス・プリミティブのいずれをも廃棄するために面決定をす
るステップと;前記画像内のタイル領域に従って、前記グラフィックス・プリミ
ティブをソートするステップと;ソート・メモリに:(1)隠れ面除去に必要な
前記パイプライン状態の部分と;及び(2)バーテックス場所を含む、隠れ面除
去に必要な前記グラフィックス・プリミティブの部分と、を記憶するステップと
;状態メモリに:(1)隠れ面除去に必要ない前記パイプライン状態の部分と;
及び(2)バーテックス色及びテクスチャ座標を含む、隠れ面除去に必要ない前
記グラフィックス・プリミティブの部分と、を記憶するステップと;タイルに従
って、前記ソート・メモリから前記ソートされたグラフィックス・プリミティブ
を読み取るステップと;前記デリバティブの計算を含む、前記ソート・メモリか
ら読み取られた、前記ソートされたグラフィックス・プリミティブ上で、増分レ
ンダリングに関するセットアップを実行するステップと;前記ソートされたグラ
フィックス・プリミティブのどの部分が、前記フレーム・バッファにおけるピク
セルの最終色に影響を与えるかを決定するために、隠れ面除去をするステップと
;各フラグメントに関する色値を生成するために、フラグメント・カラリングを
するステップであって、各フラグメントは、前記ピクセルの一つの中で、一つの
サンプル又はサンプルのグループを具備し、前記フラグメントの各々に関する色
値の生成は、前記フレーム・バッファにおけるピクセルの前記最終色に影響を与
えると決定された前記グラフィックス・プリミティブの前記部分に関してのみ実
行される前記ステップと;単一の色値をピクセルごとに生成するために、前記フ
ラグメント色をブレンドするステップと;及び前記生成されたピクセルごとの色
値を、前記フレーム・バッファに記憶するステップとを具備する前記グラフィッ
クス・レンダリング方法。 (12)コンピュータ・ディスプレイ上のウィンドウ内で、グラフィックス画像
を表示するための方法であって:フレーム・バッファに画像を記憶するステップ
と;補間係数をダウンロードするステップと;複数の固定ズーム比の一つを選択
するステップと;前記コンピュータ・ディスプレイ内にズーム文字枠を配置する
ステップと;前記ズーム文字枠に、ウィンドウ識別子を割り当てるステップと;
前記コンピュータ・ディスプレイ内での表示ピクセルに関して、ピクセル・デー
タをデジタル−アナログ・コンバータに送るステップであって、さらに:前記フ
レーム・バッファから第一のピクセル色を読み取るステップと;前記フレーム・
バッファから、複数の第二のピクセル色を読み取るステップと;前記複数の第二
のピクセル色及び前記ダウンロードされた補間係数から、ズームされたピクセル
色を計算するステップと;前記フレーム・バッファから、ピクセル・ウィンドウ
識別子を読み取るステップと;前記ディスプレイ・ピクセルが、前記ズーム文字
枠内にあり、及び前記ピクセル・ウィンドウ識別子が、前記ズーム文字枠に割り
当てられた前記ウィンドウ識別子に等しい場合、前記計算されたズーム・ピクセ
ル色を、前記デジタル−アナログ・コンバータに送るステップと;及び前記ディ
スプレイ・ピクセルが、前記ズーム文字枠内になく、又は前記ピクセル・ウィン
ドウ識別子が、前記ズーム文字枠に割り当てられた前記ウィンドウ識別子と等し
くない場合、前記読み取られた第一のピクセル色を、前記デジタル−アナログ・
コンバータに送るステップとを具備する前記送信ステップとを具備する前記方法
【0485】 (13)デジタル画像をフレーム・バッファに記憶するための方法であって、前
記フレーム・バッファは、一列のピクセルを具備し:ウィンドウ識別子マップを
記憶するステップであって、前記ウィンドウ識別子マップは、前記フレーム・バ
ッファにおける前記ピクセルの各々に関して、ウィンドウ識別子を具備する前記
ステップと;複数の文字枠記述を記憶するステップであって、前記文字枠記述の
各々は、前記対応する文字枠及び文字枠ウィンドウ識別子の最大及び最小ピクセ
ル座標を具備する前記ステップと;画像識別子を前記デジタル画像に割り当てる
ステップと;画像ピクセルを前記デジタル画像から選択するステップと;前記選
択された画像ピクセルをオーナシップ・テストするステップであって:ウィンド
ウ識別子マップ・テストが可能にされる場合は、前記ウィンドウ識別子マップ・
テストが実行され:前記ウィンドウ識別子を、前記選択された画像ピクセルに対
応する前記ウィンドウ識別子マップから読み取るステップと;前記割り当てられ
た画像識別子を、前記読み取られたウィンドウ識別子と比較するステップと;及
び前記割り当てられた画像識別子が、前記読み取られたウィンドウ識別子と適合
しない場合、前記選択されたピクセルは廃棄され、及び前記フレーム・バッファ
に書き込まれないステップを具備する前記前記ウィンドウ識別子マップ・テスト
と;及び文字枠テストが可能にされる場合には、前記文字枠テストが実行され:
前記選択されたピクセルが、前記第一の文字枠記述の最大及び最小ピクセル座標
内に入るように、前記文字枠記述の第一の一つを選択するステップと;前記割り
当てられた画像識別子を、前記第一の文字枠記述の前記文字枠ウィンドウ識別子
と比較するステップと;前記割り当てられた画像識別子が、前記第一の文字枠記
述の前記文字枠ウィンドウ識別子に適合しない場合、前記選択されたピクセルが
廃棄され、及び前記フレーム・バッファに書き込まれないステップとを具備する
前記文字枠テストと;及び 前記選択された画像ピクセルが廃棄されなかった
場合、前記選択された画像ピクセルを前記フレーム・バッファに書き込むステッ
プとを具備する前記オーナシップ・テストをするステップとを具備する前記方法
。 (14)前記ウィンドウ識別子マップを前記フレーム・バッファに記憶するステ
ップをさらに具備することを特徴とする、デジタル画像をフレーム・バッファに
記憶するための、(13)に記載の方法。 (15)オーナシップ・テストの前記ステップが、複数のピクセル上で並行して
実行されることを特徴とする、デジタル画像をフレーム・バッファに記憶するた
めの、(13)に記載の方法。
【0486】 (16)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための装置であって:第一の直接メモリ・アクセス・コマンド及び2次元グラ
フィックス・オペレーションを実行するための第一のコマンドを受け取り及び記
憶する2Dコマンド待ち行列メモリと;第二の直接メモリ・アクセス・コマンド
と、及び3次元グラフィックス・オペレーションを実行するための第二のコマン
ドを受け取り及び記憶する3Dコマンド待ち行列メモリと;2次元グラフィック
ス・オペレーションを実行するための第三のコマンドを受け取り及び記憶する2
D応答待ち行列メモリと;3次元グラフィックス・オペレーションを実行するた
めの第四のコマンドを受け取り及び記憶する3D応答待ち行列メモリと;前記2
Dコマンド待ち行列メモリ及び前記3Dコマンド待ち行列メモリに接続された直
接メモリ・アクセス・コントローラであって:(1)前記コンピュータ・グラフ
ィックス・パイプラインの外部にあるメモリから、前記第三のコマンドを読み取
り、及び前記読み取られた第三のコマンドを、前記2D応答待ち行列に書き込む
ことによって、前記記憶された第一の直接メモリ・アクセス・コマンドを受け取
り及び前記第一の直接メモリ・アクセス・コマンドを実行する第一のロジックと
;及び(2)前記コンピュータ・グラフィックス・パイプラインの外部にあるメ
モリから、前記第四のコマンドを読み取り、及び前記読み取られた第四のコマン
ドを、前記3D応答待ち行列に書き込むことによって、前記記憶された第二の直
接メモリ・アクセス・コマンドを受け取り、及び前記第二の直接メモリ・アクセ
ス・コマンドを実行する第二のロジックとを具備する前記直接メモリ・アクセス
・コントローラとを具備する前記装置。 (17)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記2Dコマンド待ち行列メモリに
おいて許可されるエントリの数を記憶するプログラム可能2D最高点レジスタと
;及び前記2Dコマンド待ち行列メモリにおけるエントリの数が、前記2D最高
点レジスタに記憶された数よりも大きい時、割り込みを生成するロジックとをさ
らに具備することを特徴とする、前記装置。 (18)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(17)に記載の装置であって:前記2Dコマンド待ち行列への書き
込みが許可される前に、前記2Dコマンド待ち行列メモリにおけるエントリの最
大数を記憶するプログラム可能2D最低点レジスタと;及び前記2Dコマンド待
ち行列メモリにおけるエントリの数が、前記2D最高点レジスタに記憶された数
よりも小さい時、割り込みを生成するロジックとをさらに具備することを特徴と
する、前記装置。 (19)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
おいて許可されるエントリの数を記憶するプログラム可能3D最高点レジスタと
;前記3Dコマンド待ち行列メモリにおけるエントリの数が、前記3D最高点レ
ジスタに記憶された数よりも大きい時、割り込みを生成するロジックと をさらに具備することを特徴とする、前記装置。 (20)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(19)に記載の装置であって:前記3Dコマンド待ち行列への書き
込みが許可される前に、前記3Dコマンド待ち行列メモリにおけるエントリの最
大数を記憶するプログラム可能3D最低点レジスタと;及び前記3Dコマンド待
ち行列メモリにおけるエントリの数が、前記3D最高点レジスタに記憶された数
よりも小さい時、割り込みを生成するロジックとをさらに具備する前記装置。
【0487】 (21)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:グラフィックス・データを記憶する
フレーム・バッファと;ホスト待ち行列メモリと;第三の直接メモリ・アクセス
・コマンドをさらに受け取り、及びさらに記憶する前記2Dコマンド待ち行列メ
モリと;前記フレーム・バッファ、前記ホスト待ち行列メモリ、及び前記2Dコ
マンド待ち行列メモリに接続された2Dグラフィックス装置であって:前記コン
ピュータ・グラフィックス・パイプラインの外部にあるメモリへの、前記フレー
ム・バッファからの、前記グラフィックス・データのいくつかの転送を特定する
第一のコマンドを読み取るロジックと;及びグラフィックス・データを前記フレ
ーム・バッファから読み取り、及び前記読み取られたグラフィックス・データを
前記ホスト待ち行列に記憶するロジックであって、前記第一のロジックはさらに
、前記ホスト待ち行列から前記グラフィックス・データを読み取り、及び前記コ
ンピュータ・グラフィックス・パイプラインの外部にある前記メモリへ、前記ホ
スト待ち行列から読み取られた前記グラフィックス・データを書き込むことによ
って、前記第三の直接メモリ・アクセス・コマンドを実行するロジックとを具備
する前記2Dグラフィックス装置と;をさらに具備する前記装置。 (22)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:第四の直接メモリ・アクセス・コマ
ンドをさらに受け取り及びさらに記憶する前記2Dコマンド待ち行列メモリと;
前記ホスト待ち行列から前記グラフィックス・データを読み取り、及び前記ホス
ト待ち行列から読み取られた前記グラフィックス・データを、前記3D応答待ち
行列メモリを書き込むことによって、前記第四の直接メモリ・アクセス・コマン
ドを実行するロジックをさらに具備する前記第一のロジックと、をさらに具備す
る前記装置。 (23)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
接続された3Dコマンド・デコーダであって:前記3Dコマンド待ち行列メモリ
から第二のコマンドを読み取るロジックと;及び前記読み取られた第二のコマン
ド上で、データ・フォーマット変換を実行するロジックとを具備する前記3Dコ
マンド・デコーダをさらに具備する前記装置。 (24)コンピュータ・グラフィックス・プロセッサにおいてコマンドを受け取
るための、(16)に記載の装置であって:前記3Dコマンド待ち行列メモリに
接続された3Dコマンド・デコーダであって:前記3Dコマンド待ち行列メモリ
から、第二のコマンドを読み取るロジックと;及び無効な第二のコマンドを検出
し、及び無効なコマンド割り込みを生成するロジックとを具備する前記3Dコマ
ンド・デコーダとをさらに具備する前記装置。 (25)コンピュータ・グラフィックス・パイプラインにおいて、グラフィック
ス・プリミティブと関連するデータを補間する方法であって:バーテックス座標
、w座標、及びテクスチャ座標を具備する色データを受け取るステップと; 前
記グラフィックス・プリミティブの各々に関して重心係数を計算するステップと
;複数の前記グラフィックス・プリミティブに対応する複数のデータ・キャッシ
ュ・エントリを記憶するステップであって、前記キャッシュされたデータは、重
心係数及びテクスチャ座標を具備する前記ステップと;フラグメント座標を具備
するグラフィックス・プリミティブ・フラグメントを受け取るステップと;前記
受け取られたグラフィックス・プリミティブ・フラグメントに対応する前記記憶
されたデータ・キャッシュ・エントリの一つを選択し及び読み取るステップと;
前記重心係数及び前記フラグメント座標から補間係数を計算するステップと;及
び前記計算された補間係数を使用して、前記テクスチャ座標を補間するステップ
と;を具備する前記方法。 (26)コンピュータ・グラフィックス・パイプラインにおいてテクスチャ座標
を補間する方法であって:バーテックス座標、w座標、及びテクスチャ座標を具
備するグラフィックス・プリミティブを受け取るステップと;前記グラフィック
ス・プリミティブのフラグメントを受け取るステップであって、前記フラグメン
トは、サンプル・マスクを具備し、前記サンプル・マスクは、前記フラグメント
によって覆われたピクセルの中のサンプル場所を示す前記ステップと;前記サン
プル・マスクを、プログラム可能ルックアップ・テーブルに入力することによっ
て、前記ピクセル内に補間座標を決定するステップであって、前記ルックアップ
・テーブルの前記出力は、前記ピクセル内の前記補間座標であって、前記補間座
標はサブ・ピクセル精度を有する前記ステップと;前記補間座標、前記バーテッ
クス座標、及び前記w座標を使用して、補間係数を計算するステップと;及び前
記計算された補間係数を使用して、前記テクスチャ座標を補間し、前記補間座標
においてテクスチャ座標を生成するステップとを具備する前記方法。 (27)コンピュータ・グラフィックス・パイプラインにおいて面法線を補間す
る方法であって:バーテックス座標、w座標、及びバーテックス面法線を具備す
るグラフィックス・プリミティブを受け取るステップと;前記グラフィックス・
プリミティブのフラグメントを受け取るステップであって、前記フラグメントは
、単一のピクセル内における前記グラフィックス・プリミティブの一部である前
記ステップと;前記ピクセル内における補間座標を決定するステップと;前記補
間座標、前記バーテックス座標、及び前記w座標を使用して、補間係数を計算す
るステップと;前記バーテックス面法線の各々を、バーテックス大きさベクトル
及びバーテックス方向ベクトルに分解するステップと;複数の前記バーテックス
大きさベクトル及び前記計算された補間係数から、補間された大きさベクトルを
計算するステップと;複数の前記バーテックス方向ベクトル及び前記計算された
補間係数から、補間された方向ベクトルを計算するステップと;及び補間された
面法線を生成するために、前記補間された大きさベクトル及び前記補間された方
向ベクトルを結合させるステップとを具備する前記方法。
【0488】 (28)コンピュータ・グラフィックス・パイプラインのための状態モニタリン
グ装置であって、前記コンピュータ・グラフィックス・パイプラインは、複数の
3次元オブジェクトを処理することによって、フレーム・バッファにレンダリン
グされた画像を形成し、前記3次元オブジェクトはそれぞれ、グラフィックス・
プリミティブを具備し:前記3次元オブジェクトが前記コンピュータ・グラフィ
ックス・パイプラインによって処理されると、オブジェクト・タグを前記3次元
オブジェクトと関連付けるロジックと;前記3次元オブジェクトが、前記グラフ
ィックス・レンダリング・パイプラインにおいて処理されると、前記3次元オブ
ジェクトオブジェクトを一つ以上の可視性基準でテストするロジックと;複数の
ビットを具備する状態レジスタと;前記オブジェクト・タグの一つに従って、前
記状態レジスタにおいて前記ビットの一つを選択するロジックと;前記可視性基
準での前記テストに合わせて、前記3次元オブジェクトの前記対応する一つの応
答に従って、前記状態レジスタにおいて前記選択されたビットの値を設定するロ
ジックと;及びホストCPUへの前記状態レジスタ内容を読み取り、及び転送す
るロジックであって、前記CPUは、前記3次元オブジェクトのいずれが、少な
くとも部分的に可視であるかを決定する前記ロジックとを具備する前記状態モニ
タリング装置。 (29)(28)に記載の状態モニタリング装置であって:前記3次元オブジェ
クトの文字枠ボリュームを表すグラフィックス・プリミティブを生成するロジッ
クと;及びホストCPUへの前記状態レジスタ内容を読み取り、及び転送するロ
ジックであって、前記ホストCPUは、前記文字枠ボリュームのいずれが少なく
とも部分的に可視であるかを決定し、及び少なくとも部分的に可視であると決定
されないさらなる処理から、前記オブジェクトを廃棄する前記ロジックとをさら
に具備する前記状態モニタリング装置。 (30)(28)に記載の状態モニタリング装置であって:複数の前記3次元オ
ブジェクトを蓄積するメモリと;前記フレーム・バッファにおいて、前記コンピ
ュータ・グラフィックス・パイプラインから、前記レンダリングされた画像に影
響を与えないことを保証されている、前記グラフィックス・プリミティブの部分
を除去するロジックと;及び前記3次元オブジェクトが、前記コンピュータ・グ
ラフィックス・パイプラインによって処理されると、1つにつき1つのベースで
、複数の前記オブジェクト・タグを、複数の前記3次元オブジェクトと自発的に
関連させるロジックであって、前記状態レジスタはそれから、前記蓄積されたオ
ブジェクトの各々の可視性を決定するために使用される前記ロジックとをさらに
具備することを特徴とする、前記状態モニタリング装置。
【0489】 (31)コンピュータ・グラフィックス・パイプラインのためのスキャンアウト
装置であって、前記パイプラインは、ピクセル値のレンダリングされた画像を、
フレーム・バッファに記憶し、及びデジタル−アナログ・コンバータを具備し:
前記ピクセル値が、前記フレーム・バッファに記憶されると、前記レンダリング
された画像において前記ピクセル値のヒストグラムを生成するロジックと;前記
ヒストグラムに基づいて、前記デジタル−アナログ・コンバータのスケール及び
動的な範囲に実質的に適合するように、前記ピクセル値のスケール及び動的な範
囲を調節するために、変換関数を計算するロジックと;ラスタ線のオーダで、前
記フレーム・バッファから、前記ピクセル値を読み取るロジックと;前記計算さ
れた変換関数に従って、前記読み取られたピクセル値を変換するロジックと;及
び前記変換されたピクセル値を、前記デジタル−アナログ・コンバータに入力す
るロジックとを具備する前記装置。 (32)(31)に記載のスキャンアウト装置であって、前記フレーム・バッフ
ァは、浮動小数点ピクセル値を記憶するためのメモリをさらに具備し;ヒストグ
ラムを生成する前記ロジックは、入力浮動小数点ピクセル値として扱われる、浮
動小数点計算ブロックをさらに具備し;及び前記計算された変換関数に従って、
前記読み取られたピクセル値を変換する前記ロジックは、前記読み取られたピク
セル値を変換する浮動小数点計算ブロックと、及び浮動小数点変換ピクセル値を
、整数変換ピクセル値に変換するためのフォーマット変換ブロックとをさらに具
備することを特徴とする、前記装置。 (33)(31)に記載のスキャンアウト装置であって、前記読み取られたピク
セル値を変換する前記ロジックは:ある範囲の値を、その範囲の圧縮又は拡張、
線形圧縮又は拡張、対数圧縮、指数又は電力拡張、他の代数又は多項式マッピン
グ関数、又はそれらの組み合わせをすることなく、異なる範囲の値へのオフセッ
ト又はシフトを含むグループから選択されたオペレーションの一つ以上を実行す
るロジックを具備することを特徴とする、前記装置。 (34)グラフィックス・プリミティブから、レンダリングされた画像を形成す
るためのグラフィックス・レンダリング装置であって、前記レンダリングされた
画像はフレーム・バッファに記憶されており:(a)(1)前記グラフィックス
・プリミティブを変換するロジックと;(2)前記グラフィックス・プリミティ
ブが少なくとも部分的にビュー・ボリュームに含まれるか決定するために、前記
グラフィックス・プリミティブをクリップ・テストするロジックと;(3)ビュ
ー・ポイントから逸れた方を向いている前記グラフィックス・プリミティブのい
ずれをも廃棄するために、面決定を実行するロジックと;を具備するジオメトリ
装置と;(b)デリバティブを計算するセットアップ装置と;(c)(1)前記
グラフィックス・プリミティブの属性とともに、フレームに関する前記グラフィ
ックス・プリミティブと;及び(2)前記フレーム全体の、パイプライン状態の
様々な設定と;を記憶するシーン・メモリと(d)前記シーン・メモリに記憶さ
れた前記グラフィックス・プリミティブのどの部分が、前記フレーム・バッファ
におけるピクセルの最終色に影響を与えるのかを決定するために、隠れ面除去を
実行するカル装置と;(e)前記各ピクセル内において、各サンプル又はサンプ
ルのグループに関してフラグメント色値を生成する一つ以上の計算装置であって
、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響を与えると決
定された前記グラフィックス・プリミティブの部分に関してのみ実行される、前
記計算装置と;及び(f)(1)ピクセルごとの色値を生成するために、前記フ
ラグメント色をブレンドするロジックと;及び(2)前記生成されたピクセルご
との色値を、前記フレーム・バッファに記憶するロジックとを具備するピクセル
装置とを具備する前記グラフィックス・レンダリング装置。
【0490】 (35)グラフィックス・プリミティブからレンダリングされた画像を形成する
ためのグラフィックス・レンダリング装置であって、前記レンダリングされた画
像はフレーム・バッファに記憶され:(a)(1)前記グラフィックス・プリミ
ティブを変換するロジックと;(2)前記グラフィックス・プリミティブが少な
くとも部分的にビュー・ボリュームに含まれるかを決定するために、前記グラフ
ィックス・プリミティブをクリップ・テストするロジックと;(3)ビューイン
グ・ポイントから逸れた方を向いている前記グラフィックス・プリミティブのい
ずれをも廃棄するために、面決定を実行するロジックと;を具備するジオメトリ
装置と;(b)デリバティブを計算するセットアップ装置であって、前記デリバ
ティブは、空間デリバティブ及び色デリバティブを具備する前記セットアップ装
置と;(c)(1)隠れ面除去に必要なパイプラインの部分と;及び(2)バー
テックス場所及び前記空間デリバティブを含む、隠れ面除去に必要な前記グラフ
ィックス・プリミティブの部分と;を記憶する空間メモリと; (d)(1)隠
れ面除去に必要ないパイプライン状態の部分と;及び(2)バーテックス色、テ
クスチャ座標、及び前記色デリバティブを含む、隠れ面除去に必要ない前記グラ
フィックス・プリミティブの部分とを記憶するポリゴン・メモリと;(e)前記
シーン・メモリに記憶されたグラフィックス・プリミティブのどの部分が、前記
フレーム・バッファにおけるピクセルの最終色に影響を与えるかを決定するため
に、隠れ面除去を実行するカル装置と;(f)前記各ピクセル内の各サンプル又
はサンプルのグループに関して、フラグメント色値を生成する一つ以上の計算装
置であって、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響を
与えると決定されたグラフィックス・プリミティブの部分に関してのみ実行され
る、前記計算装置と;及び(g)(1)ピクセルごとに色値を生成するために、
前記フラグメント色をブレンドするロジックと; (2)前記生成された
ピクセルごとの色値を、前記フレーム・バッファに記憶するロジックと;を具備
するピクセル装置とを具備する前記グラフィックス・レンダリング装置。 (36)グラフィックス・プリミティブから、レンダリングされた画像を形成す
るためのグラフィックス・レンダリング装置であって、前記レンダリングされた
画像はフレーム・バッファに記憶され:(a)(1)前記グラフィックス・プリ
ミティブを変換するロジックと;(2)前記グラフィックス・プリミティブが、
少なくとも部分的にビュー・ボリュームに含まれるかを決定するために、前記グ
ラフィックス・プリミティブをクリップ・テストするロジックと;(3)前記ビ
ューイング・ポイントから逸れた方を向いている前記グラフィックス・プリミテ
ィブのいずれをも廃棄するために、面決定を実行するロジックと; を具備
するジオメトリ装置と;(b)(1)隠れ面除去に必要な前記パイプラインの部
分と;及び(2)バーテックス場所を含む、隠れ面除去に必要な前記グラフィッ
クス・プリミティブの部分と;を記憶するソート・メモリと;(c)(1)前記
グラフィックス・プリミティブの属性とともに、フレームに関する前記グラフィ
ックス・プリミティブと;及び(2)バーテックス色及びテクスチャ座標を含む
、隠れ面除去に必要ない前記グラフィックス・プリミティブの部分とを記憶する
状態メモリと;(d)(1)前記画像内のタイル領域に従って、前記グラフィッ
クス・プリミティブをソートするロジックと;(2)タイルに従って、前記ソー
ト・メモリから前記ソートされたグラフィックス・プリミティブを読み取るロジ
ックとを具備するソート装置と;(e)前記ソートされたグラフィックス・プリ
ミティブに関してデリバティブを計算するセットアップ装置と; (f)前記シ
ーン・メモリに記憶された前記グラフィックス・プリミティブのどの部分が、前
記フレーム・バッファにおけるピクセルの最終色に影響を与えるかを決定するた
めに、隠れ面除去を実行するカル装置と;(g)前記各ピクセル内の各サンプル
又はサンプルのグループに関して、フラグメント色値を生成する一つ以上の計算
装置であって、前記ピクセルの各々に関する色値の生成は、前記ピクセルに影響
を与えると決定された前記グラフィックス・プリミティブの部分に関してのみ実
行される、前記計算装置と;及び(h)(1)ピクセルごとの色値を生成するた
めに、前記フラグメント色をブレンドするロジックと;及び(2)前記生成され
たピクセルごとの色値を、前記フレーム・バッファに記憶するロジックとを具備
するピクセル装置とを具備する前記グラフィックス・レンダリング装置。
【0491】 (37)コンピュータ・グラフィックス・パイプラインのためのスキャンアウト
装置であって、前記パイプラインは、ピクセル値のレンダリングされた画像を、
フレーム・バッファに記憶し、前記コンピュータ・グラフィックス・パイプライ
ンはコンピュータ・ディスプレイを具備し:プログラムに従ってダウンロードさ
れた補間係数を記憶するメモリと;プログラムに従って選択された、複数のズー
ム比の一つを記憶するレジスタと;前記コンピュータ・ディスプレイ内における
ズーム文字枠の、プログラムに従って選択された場所を記憶するレジスタと;前
記ズーム文字枠と関連する、プログラムに従って割り当てられたウィンドウ識別
子を記憶するレジスタと;第一のピクセル色を前記フレーム・バッファから読み
取るロジックと;複数の第二のピクセル色を前記フレーム・バッファから読み取
るロジックと;前記複数の第二のピクセル色及び前記ダウンロードされた補間係
数から、ズームされたピクセル色を計算するロジックと;ピクセル・ウィンドウ
識別子を前記フレーム・バッファから読み取るロジックと;前記ディスプレイ・
ピクセルが、前記ズーム文字枠内にあり、及び前記ピクセル・ウィンドウ識別子
が前記ズーム文字枠に割り当てられた前記ウィンドウ識別子と等しい場合、前記
計算されたズーム・ピクセル色を前記デジタル−アナログ・コンバータに送るロ
ジックと;及び前記ディスプレイ・ピクセルが、前記ズーム文字枠内になく、又
は前記ピクセル・ウィンドウ識別子が、前記ズーム文字枠に割り当てられた前記
ウィンドウ識別子と等しくない場合、前記読み取られた第一のピクセル色を、前
記デジタル−アナログ・コンバータに送るロジックとを具備する前記スキャンア
ウト装置。 (38)デジタル画像をフレーム・バッファに記憶するための装置であって、前
記フレーム・バッファは一列のピクセルを具備し:ウィンドウ識別子マップを記
憶する第一のメモリであって、前記ウィンドウ識別子マップは、前記フレーム・
バッファにおける各ピクセルに関するウィンドウ識別子を具備する前記メモリと
;複数の文字枠記述を記憶する第二のメモリであって、前記文字枠記述の各々は
、対応する文字枠の最大並びに最小ピクセル座標及び文字枠ウィンドウ識別子を
具備する前記メモリと;前記デジタル画像と関連する、プログラムに従って割り
当てられた画像識別子を記憶するレジスタと;前記デジタル画像から画像ピクセ
ルを選択するロジックと;前記選択された画像ピクセル上で動作するピクセル・
オーナシップ・ロジックであって:(1)プログラムに従って設定された制御ビ
ットによって可能にされたウィンドウ識別子マップ・テスト・ロジックであって
:(a)前記選択された画像ピクセルに対応する、前記ウィンドウ識別子を前記
第一のメモリから読み取るロジックと;(b)前記割り当てられた画像識別子を
、前記読み取られたウィンドウ識別子と比較するコンパリタ回路と;及び(c)
前記割り当てられた画像識別子が、前記読み取られたウィンドウ識別子と適合し
ない場合、前記選択された画像ピクセルを廃棄するロジックと;を具備する前記
ウィンドウ識別子マップ・テスト・ロジックと;及び(2)プログラムに従って
設定された制御ビットによって可能にされた文字枠テスト・ロジックであって:
(a)前記選択されたピクセルが、前記選択された第一の文字枠記述の最大及び
最小ピクセル座標内になるように、前記文字枠の第一の一つを選択するロジック
と;(b)前記割り当てられた画像識別子を、前記第一の文字枠記述の前記文字
枠ウィンドウ識別子と比較するコンパリタ回路と;及び(c)前記割り当てられ
た画像識別子が、前記第一の文字枠の前記文字枠ウィンドウ識別子と適合しない
場合、前記選択された画像ピクセルを廃棄するロジックとを具備する前記文字枠
テスト・ロジックと;及び(3)前記選択された画像ピクセルが廃棄されなかっ
た場合に、前記選択された画像ピクセルを、前記フレーム・バッファに書き込む
ロジックとを具備する前記ピクセル・オーナシップ・ロジックとを具備する前記
装置。
【0492】 (39)(38)に記載の装置であって、前記第一のメモリは、フレーム・バッ
ファと同じ物理メモリ・アレイにあることを特徴とする、前記装置。 (40)(38)に記載の装置であって、前記ピクセル・オーナシップ・ロジッ
クは、複数の選択された画像ピクセルと並行して動作することを特徴とする、前
記装置。 (41)3Dグラフィックス・レンダリングのための計算システムであって:ホ
スト・プロセッサと:システム・メモリと;及びホスト・プロセッサに接続され
たコンピュータ・グラフィックス・パイプラインとを具備し、;前記コンピュー
タ・グラフィックス・パイプラインは:(1)2次元グラフィックス・オペレー
ションを実行するための、第一の直接メモリ・アクセス・コマンドと、及び第一
のコマンドを受信し及び記憶する2Dコマンド待ち行列メモリと;(2)3次元
グラフィックス・オペレーションを実行するための、第二の直接メモリ・アクセ
ス・コマンド及び第二のコマンドを受信し及び記憶する3Dコマンド待ち行列メ
モリと;(3)2次元グラフィックス・オペレーションを実行するための、第三
のコマンドを受信し及び記憶する2D応答待ち行列メモリと;(4)3次元グラ
フィックス・オペレーションを実行するための、第四のコマンドを受信し及び記
憶する3D応答待ち行列メモリと;及び(5)前記2Dコマンド待ち行列メモリ
及び前記3Dコマンド待ち行列メモリに接続された直接メモリ・アクセス・コン
トローラであって:(a)前記第三のコマンドを、前記システム・メモリから読
み取り、及び前記読み取られた第三のコマンドを、前記2D応答待ち行列に書き
込むことによって、前記記憶された第一の直接メモリ・アクセス・コマンドを受
信し、及び前記第一の直接メモリ・アクセス・コマンドを実行する第一のロジッ
クと;及び(b)前記第四のコマンドを、前記システム・メモリから読み取り、
及び前記読み取られた第四のコマンドを、前記3D応答待ち行列に書き込むこと
によって、前記記憶された第二の直接メモリ・アクセス・コマンドを受信し、及
び前記第二の直接メモリ・アクセス・コマンドを実行する第二のロジックとを具
備する前記直接メモリ・アクセス・コントローラとを具備する前記計算システム
。 (42)(41)に記載のシステムであって:前記2Dコマンド待ち行列メモリ
に許可されたエントリの数を記憶するプログラム可能2D最高点レジスタと;及
び前記2Dコマンド待ち行列メモリにおけるエントリの数が、前記2D最高点レ
ジスタに記憶された数よりも大きい時に、割り込みを生成するロジックとをさら
に具備することを特徴とする、前記システム。 (43)(42)に記載のシステムであって:前記2Dコマンド待ち行列への書
き込みが許可される前に、前記2Dコマンド待ち行列メモリにおけるエントリの
最大数を記憶するプログラム可能2D最低点レジスタと;及び前記2Dコマンド
待ち行列メモリにおけるエントリの数が、前記2D最高点レジスタに記憶された
数よりも小さい時に、割り込みを生成するロジックとをさらに具備することを特
徴とする、前記システム。 (44)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に許可されたエントリの数を記憶するプログラム可能3D最高点レジスタと;及
び前記3Dコマンド待ち行列メモリにおけるエントリの数が、前記3D最高点レ
ジスタに記憶された数よりも大きい時、割り込みを生成するロジックとをさらに
具備することを特徴とする、前記システム。 (45)(44)に記載のシステムであって:前記3Dコマンド待ち行列への書
き込みが許可される前に、前記3Dコマンド待ち行列メモリにおけるエントリの
最大数を記憶するプログラム可能3D最低点レジスタと;及び前記3Dコマンド
待ち行列メモリにおけるエントリの数が、前記3D最高点レジスタに記憶された
数よりも小さい時、割り込みを生成するロジックをさらに具備することを特徴と
する、前記システム。 (46)(41)に記載のシステムであって:グラフィックス・データを記憶す
るフレーム・バッファと;ホスト待ち行列メモリと;第三の直接メモリ・アクセ
ス・コマンドをさらに受信し及び記憶する前記2Dコマンド待ち行列メモリと;
前記フレーム・バッファと、前記ホスト待ち行列メモリと、及び前記2Dコマン
ド待ち行列メモリとに接続され:前記フレーム・バッファから、前記コンピュー
タ・グラフィックス・パイプライン外部にある前記メモリへの前記グラフィック
ス・データのいくつかの転送を特定する、前記第一のコマンドを読み取るロジッ
クと;及び前記フレーム・バッファからのグラフィックス・データを読み取り、
並びに前記読み取られたグラフィックス・データを前記ホスト待ち行列に記憶す
るロジックとを具備する2Dグラフィックス装置であって;前記第一のロジック
は、前記グラフィックス・データを前記ホスト待ち行列から読み取り、並びに前
記ホスト待ち行列から読み取られた前記グラフィックス・データを、前記コンピ
ュータ・グラフィックス・パイプラインの外部にある前記メモリに書き込むこと
によって、第三の直接メモリ・アクセス・コマンドを実行するロジックをさらに
具備する前記2Dグラフィックス装置とをさらに具備することを特徴とする、前
記システム。
【0493】 (47)(41)に記載のシステムであって:第四の直接メモリ・アクセス・コ
マンドをさらに受信し、及びさらに記憶する前記2Dコマンド待ち行列メモリと
;及び前記グラフィックス・データを前記ホスト待ち行列から読み取り、及び前
記ホスト待ち行列から読み取られた前記グラフィックス・データを、前記3D応
答待ち行列メモリに書き込むことによって、前記第四の直接メモリ・アクセス・
コマンドを実行するロジックをさらに具備する前記第一のロジックとをさらに具
備することを特徴とする、前記システム。 (48)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に接続され、:前記3Dコマンド待ち行列メモリから第二のコマンドを読み取る
ロジックと;及び前記読み取られた第二のコマンド上で、データ・フォーマット
変換を実行するロジックとを具備する3Dコマンド・デコーダをさらに具備する
ことを特徴とする、前記システム。 (49)(41)に記載のシステムであって:前記3Dコマンド待ち行列メモリ
に接続され:前記3Dコマンド待ち行列メモリから第二のコマンドを読み取るロ
ジックと;及び無効な第二のコマンドを検出し、及び無効なコマンド割り込みを
生成するロジックとを具備する3Dコマンド・デコーダをさらに具備することを
特徴とする、前記システム。 (50)コンピュータ・グラフィックス・パイプラインにおいて、グラフィック
ス・プリミティブと関連するデータを補間するための装置であって:バーテック
ス座標、w座標、及びテクスチャ座標を具備する色データを記憶するメモリと;
前記バーテックス座標及び前記w座標からの前記グラフィックス・プリミティブ
の各々に関する重心係数を計算するロジックと;複数の前記グラフィックス・プ
リミティブに対応する複数のデータ・キャッシュ・エントリを記憶するキャッシ
ュ・メモリであって、前記キャッシュされたデータは、重心係数及びテクスチャ
座標を具備する前記キャッシュ・メモリと;受信されたグラフィックス・プリミ
ティブ・フラグメントに対応する、前記記憶されたデータ・キャッシュ・エント
リの一つを選択し及び読み取るロジックであって、前記グラフィックス・プリミ
ティブ・フラグメントは、フラグメント座標を具備する前記ロジックと;前記重
心係数及び前記フラグメント座標から補間係数を計算するロジックと;及び前記
計算された補間係数を使用して、前記テクスチャ座標を補間するロジックとを具
備する前記装置。 (51)コンピュータ・グラフィックス・パイプラインにおいて、テクスチャ座
標を補間するための装置であって:グラフィックス・プリミティブと関連するデ
ータを記憶するメモリであって、前記記憶されたデータは、バーテックス座標、
w座標、及びテクスチャ座標を具備する前記メモリと;前記グラフィックス・プ
リミティブのフラグメントを受信するレジスタであって、前記フラグメントは、
サンプル・マスクを具備し、前記サンプル・マスクは前記フラグメントによって
覆われるピクセル内のサンプル場所を示す前記レジスタと;補間場所の低位ビッ
トを決定するルックアップ・テーブルであって、前記ルックアップ・テーブルは
、前記サンプル・マスクを具備し、前記補間場所は、サブ・ピクセル精度を有す
る前記ルックアップ・テーブルと;前記補間場所、前記バーテックス座標、及び
前記w座標を使用して、補間係数を計算するロジックと;及び前記計算された補
間係数を使用して、前記テクスチャ座標を補間し、前記補間場所にテクスチャ座
標を生成するロジックとを具備する前記装置。
【0494】 (52)コンピュータ・グラフィックス・パイプラインにおいて、バーテックス
面法線を補間するための装置であって:グラフィックス・プリミティブを記憶す
るメモリであって、前記グラフィックス・プリミティブは、バーテックス座標、
w座標、及びバーテックス面法線を具備する前記メモリと;前記グラフィックス
・プリミティブのフラグメントを記憶するレジスタであって、前記フラグメント
は単一のピクセル内の前記グラフィックス・プリミティブの一部である前記レジ
スタと;前記ピクセル内の補間座標を決定するロジックと;前記補間座標、前記
バーテックス座標、及び前記w座標を使用して、補間係数を計算するロジックと
;前記バーテックス面法線の各々を、バーテックス大きさベクトル及びバーテッ
クス方向ベクトルに分解するロジックと;補間された大きさベクトルを、複数の
前記バーテックス大きさベクトル及び前記計算された補間係数から計算するロジ
ックと;補間された方向ベクトルを、複数の前記バーテックス方向ベクトル及び
前記計算された補間係数から計算するロジックと;及び補間された面法線を生成
するために、前記補間された大きさベクトル及び前記補間された方向ベクトルを
結合させるロジックとを具備する前記装置。 (53)3次元(3D)グラフィックス・レンダリングのため、及びフレーム・
バッファに記憶された画像を生成するための計算システムであって、前記システ
ムは:ホスト・プロセッサと;前記ホスト・プロセッサに接続されたシステム・
メモリと;及びホスト・プロセッサに接続されたコンピュータ・グラフィックス
・パイプラインとを具備し、前記コンピュータ・グラフィックス・パイプライン
は:3次元オブジェクトが、前記コンピュータ・グラフィックス・パイプライン
によって処理されると、3次元オブジェクトにオブジェクト・タグを関連させる
ロジックと;前記3次元オブジェクトが、前記グラフィックス・レンダリング・
パイプラインにおいて処理されると、一つ以上の可視性基準で、前記3次元オブ
ジェクトをテストするロジックと;複数のビットを具備する状態レジスタであっ
て、前記ホスト・プロセッサによって読み取られることができる前記状態レジス
タと;前記オブジェクト・タグの一つに従って、前記状態レジスタにおいて前記
ビットの一つを選択するロジックと;及び前記可視性基準でのテストに合わせて
、前記3次元オブジェクトの対応する一つの応答に従って、前記状態レジスタに
おける選択されたビットの値を設定するロジックとを具備する、前記計算システ
ム。 (54)(53)に記載のシステムであって:画像のレンダリングを、特定され
た方法で機能するように導くプログラム・モジュールを実行する前記ホスト・プ
ロセッサを具備し、前記プログラム・モジュールは:前記3次元オブジェクトの
一つの文字枠ボリュームを定義する、非レンダリング可能グラフィックス・プリ
ミティブによって表示される前記3次元オブジェクトの一つを受信し;前記非レ
ンダリング可能グラフィックス・プリミティブを入力することによって、前記3
次元オブジェクトの一つを、前記コンピュータ・グラフィックス・パイプライン
に入力し;及び前記非レンダリング可能グラフィックス・プリミティブに対応す
るオブジェクトが隠されるか決定するために、状態レジスタ内容を読み取るため
の指示を含む、前記ホスト・プロセッサをさらに具備することを特徴とする、前
記システム。 (55)(54)に記載のシステムであって、前記コンピュータ・グラフィック
ス・パイプラインはさらに:その各々が前記非レンダリング・プリミティブの対
応する組によって表示される、複数の前記3次元オブジェクトを蓄積するメモリ
と;及び明確には最終的にレンダリングされた画像に寄与しない前記プリミティ
ブの部分を切り取るために、隠れ面除去を実行するロジックであって、前記隠れ
面除去は、色データが、前記画像の前記領域において、グラフィックス・プリミ
ティブに関して生成される前に、前記画像の領域に関して実行され、それによっ
て、生成される必要がある前記色データの量を低減させる前記ロジックとを具備
し;及び前記プログラム・モジュールはさらに:前記状態レジスタを読み取る前
に、複数の前記3次元オブジェクトを入力し;前記状態レジスタを読み取り、並
びに前記コンピュータ・グラフィックス・パイプラインへ、その非レンダリング
可能プリミティブは隠されない3次元オブジェクトに対応するレンダリング可能
プリミティブを入力し、それによって、その非レンダリング可能プリミティブは
隠されない、前記3次元オブジェクトに対応する前記レンダリング可能プリミテ
ィブを入力することを避けるための指示をさらに含むことを特徴とする、前記シ
ステム。
【0495】
【関連出願】 本出願は、1998年8月20日提出、アメリカ特許仮出願第60/097,3
36号、「ディファード・シェーディングを伴うグラフィックス・プロセッサ(
GRAPHICS PROCESSOR WITH DEFFERED SHADING)」、の35USCセクション11
9(e)の利益を主張し、その内容はここに参照のために採用されている。 本出願はまた、1998年12月17日提出、アメリカ特許出願第09/21
3,990号、「ディファード・シェーディング・アーキテクチャにおける、接
線空間ライティングの方法(HOW TO DO TANGENT SPACE LIGHTING IN A DEFFERED
SHADING ARCHITECTURE)」、(代理人ドケット番号A−66397); 年 月 日提出、特許出願第 号、「統一されたプリミティブ記
述子を使用して、3Dグラフィックス・パイプラインにおいてセットアップ・オ
ペレーションを実行するための装置及び方法(APPARATUS AND METHOD FOR REFOR
MING SETUP OPERATIONS IN A 3-D GRAPHICS PIPELINE USING UNIFIED PRIMITIVE
DESCRIPTORS)」、(代理人ドケット番号A−66382); 年 月 日提出、特許出願第 号、「ポスト・ファイル・ソーテ
ィング・セットアップ(POST-FILE SORTING SETUP)」、(代理人ドケット番号
A−66383); 年 月 日提出、特許出願第 号、「タイル相対Y値及びスクリ
ーン相対X値(TILE RELATIVE Y-VALUES AND SCREEN RELATIVE X-VALUES)」、
(代理人ドケット番号A−66384); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、画像データを空間的にソートするためのシステム、装置、
及び方法(SYSTEM,APPARATUS AND METHOD FOR SPATIALLY SORTING IMAGE DATA I
N A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、(代理人ドケット番号A−6
6380); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、オブジェクト・ジオメトリをソートするための、保証され
た保存性メモリ評価を生成するためのシステム、装置及び方法(SYSTEM, APPARA
TUS AND METHOD FOR GENERATING GUARANTEED CONSERVATIVE MEMORY ESTIMATE FO
R SORTING OBJECT GEOMETRY IN A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、
(代理人ドケット番号A−66381); 年 月 日提出、特許出願第 号、「3次元グラフィックス・パ
イプラインにおいて、レンダリング・リソースの均衡を取るためのシステム、装
置及び方法(SYSTEM, APPARATUS AND METHOD FOR BALANCING RENDERING RESOURC
ES IN A THREE-DIMENSIONAL GRAPHICS PIPELINE)」、(代理人ドケット番号A
−66379);
【0496】 年 月 日提出、特許出願第 号、「パイプライン状態記憶及び
検索を伴うグラフィックス・プロセッサ(GRAPHICS PROCESSOR WITH PIPELINE S
TATE STORAGE AND RETRIEVAL)」、(代理人ドケット番号A−66378); 年 月 日提出、特許出願第 号、「テクスチャを生成するため
の方法及び装置(METHOD AND APPARATUS FOR GENERATING TEXTURE)」、(代理
人ドケット番号A−66398); 年 月 日提出、特許出願第 号、「3Dグラフィックス・パイ
プラインにおけるジオメトリ・オペレーションのための装置及び方法(APPARATU
S AND METHOD FOR GEOMETRY OPERATIONS IN A 3D GRAPHICS PIPELINE)」、(代
理人ドケット番号A−66373); 年 月 日提出、特許出願第 号、「3Dグラフィックス・パイ
プラインにおけるフラグメント・オペレーションのための装置及び方法(APPARA
TUS AND METHOD FOR FRAGMENT OPERATIONS IN A 3D GRAPHICS PIPELINE)」、(
代理人ドケット番号A−66399); 年 月 日提出、特許出願第 号、「ディファード・シェーディ
ング・グラフィックス・パイプライン・プロセッサ(DEFFERED SHADING GRAPHIC
S PIPELINE PROCESSOR)」、(代理人ドケット番号A−66360); 年 月 日提出、特許出願第 号、「ディファード・シェーディ
ングを伴うグラフィックス・プロセッサにおける保存性隠れ面除去を実行するた
めの方法及び装置(METHOD AND APPARATUS FOR REFORMING CONSERVATIVE HIDDEN
SURFACE REMOVAL IN A GRAPHICS PROCESSOR WITH DEFFERRED SHADING)」、(
代理人ドケット番号A−66386);及び 年 月 日提出、特許出願第 号、「向上した特性を有するディ
ファード・シェーディング・グラフィックス・パイプライン・プロセッサ(DEFE
RRED SHADING GRAPHICS PIPELINE PROCESSOR HAVING ADVANCED FEATURES)」、
(代理人ドケット番号A−66364) の35USCセクション120の利益を主張する。 本明細書に記載されたすべての公告、特許、及び特許出願は、各個別の公告又
は特許出願が、参照のために採用されるように特定的及び個別に示されているの
と同じ範囲で、参照のために採用されている。 本発明の特定の実施形態の上述の記載は、例示及び説明の目的で示されてきた
。それらは、完全なものではなく、また本発明を、開示された精密な形式に限定
する目的ではなく、明らかに多くの変更及び変形が、上述の教示に照らして可能
である。前記実施形態は、本発明及びその実践的応用の原則を最も良く説明し、
それによって当業者が、検討される特定の使用に適した様々な変更とともに、本
発明及び様々な実施形態を最も良く使用することができるようにするために、選
択され及び説明された。本発明の範疇は、本書に添付された特許請求の範囲及び
それの同等物によって定義されるものである。
【図面の簡単な説明】 本発明のさらなる目的及び特徴は、図面を参照すると、以下の詳細な説明及び
添付の特許請求の範囲から容易に明らかになるであろう。
【図1】 図1は、自らの座標軸、ビューイング・ポイントの座標システム、及びスクリ
ーン座標を伴う、四面体を示す図である。
【図2】 図2は、3Dグラフィックス・パイプラインのための、従来の包括的レンダラ
を示す図である。
【図3】 図3は、本発明の3次元グラフィックス・パイプラインの実施形態を示す、特
に他の機能的ブロックを伴うジオメトリ・エンジン3000と、及びホスト上で
実行するアプリケーション、及びホスト・メモリとの関係を示す図である。
【図4】 図4は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第一の実施形態を示す図である。
【図5】 図5は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第二の実施形態を示す図である。
【図6】 図6は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第三の実施形態を示す図である。
【図7】 図7は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第四の実施形態を示す図である。
【図8】 図8は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第五の実施形態を示す図である。
【図9】 図9は、本発明の3次元ディファード・シェーディング・グラフィックス・パ
イプラインの第六の実施形態を示す図である。
【図10】 図10は、保存性隠れ面除去の実施形態の検討を示す図である。
【図11】 図11は、保存性隠れ面除去の実施形態におけるアルファ・テスト及び深度テ
ストの検討を示す図である。
【図12】 図12は、保存性隠れ面除去の実施形態におけるステンシル・テストの検討を
示す図である。
【図13】 図13は、保存性隠れ面除去の実施形態におけるアルファ・ブレンディングの
検討を示す図である。
【図14】 図14は、保存性隠れ面除去の実施形態のさらなる検討を示す図である。
【図15】 図15は、パイプラインの実施形態の、ブロックを通過するデータの例示的な
流れを示す図である。
【図16】 図16は、カル・ブロックのある実施形態が、部分的に不明瞭な三角形からフ
ラグメントを作る方法を示す図である。
【図17】 図17は、ピクセル・ブロックのある実施形態が、1スタンプの価値を有する
フラグメントを処理する方法を示す図である。
【図18】 図18は、フロント・エンド・コマンド・フェッチ及びデコード・ブロック(
CFD)2000における主な機能的装置を示す、パイプラインの実施形態の例
示的なブロック図を示す図である。
【図19】 図19は、ディファード・シェーディング・グラフィックス・プロセッサ(D
SGP)の一つの実施形態が、バーテックス座標を変換する方法を強調する図で
ある。
【図20】 図20は、ディファード・シェーディング・グラフィックス・プロセッサ(D
SGP)の一つの実施形態が、法線、接線、及び従法線を変換する方法を強調す
る図である。
【図21】 図21は、ジオメトリ・ブロック(GEO)の機能的ブロック図を示す図であ
る。
【図22】 図22は、本発明の構造の3チップ実施形態における半導体チップ上の機能的
ブロック間の関係を示す図である。
【図23】 図23は、モード・エクストラクション・ブロック(MEX)の一つの実施形
態における例示的なデータ・フローを示す図である。
【図24】 図24は、例示的なモード・エクストラクション・ブロックに送信されるパケ
ットを示す図である。
【図25】 図25は、例示的なモード・エクストラクション・ブロックのオンチップ状態
ベクトル・パーティショニングの実施形態を示す図である。
【図26】 図26は、ポリゴン・メモリへの情報をセーブするための処理の特徴を示す図
である。
【図27】 図27は、MEXと相対したポリゴン・メモリに関する例示的な構成を示す図
である。
【図28】 図28は、MEXブロックにおける色ポインタ生成と相対した色情報に関する
例示的ビット構成を示す図である。
【図29】 図29は、MEXブロックにおける色タイプ・フィールドに関する例示的構成
を示す図である。
【図30】 図30は、点リスト、線ストリップ、三角形ストリップ、又は三角形ファンの
リストの第一のデュアロクトに記憶されたMLMポインタ・パケットの内容を示
す図である。
【図31】 図31は、データ記憶装置及びポインタ記憶装置に分割される方法を含む、デ
ータがソート・メモリ・ページに記憶される方法の例示的実施形態を示す。
【図32】 図32は、ソート・ブロックの例示的実施形態の単純化されたブロック図を示
す。
【図33】 図33は、タイルABC及び(xTile,yTile)に中心を有するタイルに関す
るタッチド・タイル計算プロシージャの特徴を示す図である。
【図34】 図34は、タッチド・タイル計算プロシージャの特徴を示す図である。
【図35A及び35B】 図35A及び35Bは、タッチド・タイル・プロシージャにおけるしきい値距
離計算の特徴を示す図である。
【図36A】 図36Aは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第一の関係を示す図である。
【図36B】 図36Bは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第二の関係を示す図である。
【図36C】 図36Cは、垂直ベクトルとしきい値距離との間の特定の関係に関するタイル
の位置と三角形の位置との間の第三の関係を示す図である。
【図37】 図37は、タイルの辺の一つに関連した、線の角度の間の関係を含むしきい値
距離決定のエレメントを示す図である。
【図38A】 図38Aは、18×14アレイでの252タイルを有するウィンドウに関する
SuperTileホップ・プロシージャ・シーケンスの例示的な実施形態を示
す図である。
【図38B】 図38Bは、図38Aに記載のN=63及びM=13のSuperTileホ
ップ・プロシージャに関する例示的シーケンスを示す図である。
【図39】 図39は、STPブロックに到着し、及びエイリアス又はアンチ・エイリアス
・モードでレンダリングされることができるDSGP三角形を示す図である。
【図40】 図40は、線をクワド及び様々な方向のエイリアスされ及びアンチ・エイリア
スされた線の描画のために生成された様々なクワドへと変換することによって、
DSGPが線をレンダリングする方法を示す図である。
【図41】 図41は、ユーザ特定点が、ジオメトリ装置におけるレンダリングされた点に
調節される方法を示す図である。
【図42】 図42は、アンチ・エイリアスされた線セグメントが、平行四辺形及び三角形
を統一的にラステライズするCUL装置スキャン・コンバータにおいて、三角形
に変換される方法を示す図である。
【図43】 図43は、アンチ・エイリアスされた線の場合における長方形と比較して、エ
イリアスされた線のエンド・ポイントが、平行四辺形を使用して計算される方法
を示す図である。
【図44】 図44は、長方形が、線の可視部分を表示する方法を示す図である。
【図45】 図45は、点描オフセットstplStartBitと同様に、新しい線開始
点が、クリップされた点に関して生成される方法を示す図である。
【図46】 図46は、線モード三角形のジオメトリを示す図である。
【図47】 図47は、セットアップが、バーテックス割り当てを含む、線及び三角形をど
のように表示するかの特徴を示す図である。
【図48】 図48は、セットアップが、スロープ割り当てを含む、線及び三角形をどのよ
うに表示するかの特徴を示す図である。
【図49】 図49は、セットアップが、線の方向に基づいて四分円弧割り当てを含む、線
及び三角形をどのように表示するかの特徴を示す図である。
【図50】 図50は、セットアップが、クリップ記述子のネーミング及びバーテックスへ
のクリップ・コードの割り当てを含む、線及び三角形をどのように表示するかを
示す図である。
【図51】 図51は、セットアップが、特定の値をCULにどのように渡すかの特徴を含
む、セットアップがどのように線及び三角形を表示するかの特徴を示す図である
【図52】 図52は、点処理と関連したタイル座標の決定を示す図である。
【図53】 図53は、カル・ブロックの例示的実施形態の図である。
【図54】 図54は、カル・ブロック・サブユニットの例示的実施形態の図である。
【図55】 図55は、完全に結合的であり、キャッシュ・タグ・ルックアップに関してコ
ンテント・アドレッサブル・メモリ(CAMs)を使用するタグ・キャッシュの
例示的実施形態の図である。
【図56】 図56は、モード・データが流れ、及びDSGPパイプラインの部分にキャッ
シュされる方法を示す図である。
【図57】 図57は、フラグメント・ブロックの例示的実施形態の図である。
【図58】 図58は、様々なプリミティブによって形成されるピクセル・フラグメントを
有するVSPの例を示す図である。
【図59】 図59は、三角形に関して透視的修正重心補間を使用するフラグメント・ブロ
ック補間の特徴を示す図である。
【図60】 図60は、不等マグニチュードのベクトル間の補間が、どのように一様でない
角度粒状度(uneven angular granularity)を生み、及びなぜ本発明の構造及び
方法が、このように法線と接線を補間しないのか、の例を示す。
【図61】 図61は、フラグメント・ブロックにおける補間係数を形成するために使用さ
れるフラグメントx及びy座標が、どのように形成されるかを示す図である。
【図62】 図62は、テクスチャ・アレイ・アドレッシングの概観を示す図である。
【図63】 図63は、パイプラインにおけるフォン装置位置及び隣接するブロックへの関
係を示す図である。
【図64】 図64は、いくつかのサブ・ユニットを具備するフォンのブロック図を示す図
である。
【図65】 図65は、PIXブロックのブロック図を示す図である。
【図66】 図66は、バックエンド・ブロック(BKE)及びそれに接する装置を示す図
である。
【図67】 図67は、BKEを通したメモリ読み取り及び書き込みを実行する外部クライ
アント装置を示す図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,UG,ZW),E A(AM,AZ,BY,KG,KZ,MD,RU,TJ ,TM),AE,AL,AM,AT,AU,AZ,BA ,BB,BG,BR,BY,CA,CH,CN,CU, CZ,DE,DK,EE,ES,FI,GB,GD,G E,GH,GM,HR,HU,ID,IL,IN,IS ,JP,KE,KG,KP,KR,KZ,LC,LK, LR,LS,LT,LU,LV,MD,MG,MK,M N,MW,MX,NO,NZ,PL,PT,RO,RU ,SD,SE,SG,SI,SK,SL,TJ,TM, TR,TT,UA,UG,UZ,VN,YU,ZA,Z W (71)出願人 1 Infinite Loop,Cup ertino California 95014 U.S.A. (72)発明者 ヘッセル リチャード イー アメリカ合衆国 カリフォルニア州 94588 プレザントン フレミントン コ ート 3225 (72)発明者 アーノルド ヴォーン ティ アメリカ合衆国 カリフォルニア州 95066 スコッツ ヴァリー カネパ ド ライヴ 621 (72)発明者 ベンコール ジャック アメリカ合衆国 カリフォルニア州 95014 クーパーティノ ティンバー ス プリング コート 11661 (72)発明者 ブラット ジョセフ ピー アメリカ合衆国 カリフォルニア州 95129 サン ホセ オークトリー ドラ イヴ 1045 (72)発明者 クアン ジョージ アメリカ合衆国 カリフォルニア州 94086 サニーヴェイル ルスターリーフ ドライヴ 798 (72)発明者 ドッジェン スティーヴン エル アメリカ合衆国 カリフォルニア州 95006 ボールダー クリーク フォレス ト ヒル ドライヴ 15735 (72)発明者 ファン エマーソン エス アメリカ合衆国 カリフォルニア州 94539 フリーモント ウィステリア ド ライヴ 1197 (72)発明者 ゴン ザオユ ジー アメリカ合衆国 カリフォルニア州 95014 クーパーティノ サウス ステリ ング ロード 1342 (72)発明者 ホー トーマス ワイ アメリカ合衆国 カリフォルニア州 94539 フリーモント オンディナ プレ イス 40732 (72)発明者 スー ヘングウェイ アメリカ合衆国 カリフォルニア州 94536 フリーモント キャンフィールド ドライヴ 4209 (72)発明者 リー シドン アメリカ合衆国 カリフォルニア州 95118 サン ホセ ルフェーヴル ドラ イヴ 5598 (72)発明者 ング サム アメリカ合衆国 カリフォルニア州 94555 フリーモント メイバード サー クル 34377 (72)発明者 パパキポス マシュー エヌ アメリカ合衆国 カリフォルニア州 94025 メンロ パーク オーク アベニ ュー 1701 (72)発明者 レッドグレイヴ ジェイソン アール アメリカ合衆国 カリフォルニア州 95040 マウンテン ヴィュー マーテン ス アベニュー 278 (72)発明者 トリヴェディ スシュマ エス アメリカ合衆国 カリフォルニア州 94087 サニーヴェイル レンブラント ドライヴ 1208 (72)発明者 タック ネイサン ディー アメリカ合衆国 カリフォルニア州 92123 サン ディエゴ サマーセット アベニュー 8666 Fターム(参考) 5B057 CA01 CA08 CA13 CA17 CB01 CB08 CB13 CB16 CC04 CE02 CE11 CE16 CH08 CH11 CH14 5B080 AA13 BA03 BA05 CA04 CA07 CA08 FA01 FA02 FA03 FA13 FA14 FA17 GA03 GA14 GA15 GA18 GA22 GA23

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ディファード・グラフィックス・パイプライン・プロセッサ(deferred graph
    ics pipeline processor)であって: (a)通信チャネルを介して、外部コンピュータからデータ及び/又はコマン
    ドの入力を通信し、及び前記入力を、一連のパケットに変換するコマンド・フェ
    ッチ(command fetch)及びデコート(decode)装置であって、前記パケットは
    、色、表面法線、テクスチャ座標、レンダリング情報、ライティング、ブレンデ
    ィング・モード、及びバッファ機能を含むグループから選択された情報項目を含
    む前記装置と; (b)前記パケットを受信し、及び座標変換、すべてのポリゴンの実際の又は
    退化した三角形への分解、ビューイング・ボリューム・クリッピング(viewing
    volume clipping)、並びに任意で、グロー・シェーディング(Gouraud shading
    )に必要とされるパー・バーテックス・ライティング(per-vertex lighting)
    並びに色計算を実行するジオメトリ(geometry)装置と; (c)モード・エクストラクション(mode extraction)装置及び前記ポリゴ
    ン装置と関連するポリゴン・メモリ(polygon memory)であって、前記モード・
    エクストラクション装置は、前記ジオメトリ装置からデータ・ストリームを受信
    し、前記データ・ストリームを、ソート装置と通信するバーテックス・データと
    、及び記憶のために前記ポリゴン・メモリに送信される非バーテックス・データ
    とに分割する前記装置及びメモリと; (d)ソート装置及び前記ソート装置と関連するソート・メモリであって、前
    記ソート装置は、前記モード・エクストラクション装置からバーテックスを受信
    し、及びその結果の点、線並びに三角形をタイルでソートし、及びタイル毎のオ
    ーダで、完全なプリミティブを表すソート・ブロック出力パケット(sort block
    output packet)の手段によって、前記ソートされたジオメトリを、セットアッ
    プ装置(setup unit)に通信する前記装置及びメモリと; (e)前記ソート・ブロック出力パケットを受信し、及び一度に一つのプリミ
    ティブで、タイル毎のベースで線及び三角形に関して空間的導関数を計算し、及
    び前記空間的導関数を、パケット形状で、カル(cull)装置に通信するセットア
    ップ装置と; (f)一度に、1タイル分の価値を有するデータを受信し、及び大きさ比較コ
    ンテント・アドレッサブル・メモリ(Magnitude Comparison Content Addressab
    le Memory)(MCCAM)カル・サブ装置並びにサブピクセル・カル・サブ装
    置(Sub-pixel Cull sub-unit)を有するカル装置であって、前記MCCAMカ
    ル・サブ装置は、以前に処理されたジオメトリによって完全に隠されているプリ
    ミティブを廃棄するように操作可能であり、及び前記サブピクセル・カル・サブ
    装置は、一部又は全体が可視である残りのプリミティブを処理し、及び前記残り
    のプリミティブの可視フラグメントを決定し、前記サブピクセル・カル・サブ装
    置は、一度に、1スタンプ分の価値を有するフラグメントを出力する前記カル装
    置と; (g)前記カル装置からの入力を受信し、及び前記ポリゴン・メモリから、色
    並びに素材属性を含むモード情報を検索し、及び前記モード情報を、フラグメン
    ト装置、テクスチャ装置、フォン装置、ピクセル装置、及びバックエンド(back
    end)装置のうち一つ以上に通信するモード・インジェクション(mode injectio
    n)装置であって;前記フラグメント装置、前記テクスチャ装置、前記フォン装
    置、前記ピクセル装置、又は前記バックエンド装置の少なくともいくつかは、最
    近使用されたモード情報をキャッシュするためのモード・キャッシュを含み;前
    記モード・インジェクション装置は、すでにキャッシュされた情報を識別し、及
    びすでにキャッシュされた情報を送信しない状態情報を維持し、それによって通
    信帯域幅を低減させる前記装置と; (h)グロー・シェーディングに関する色値を補間し、フォン・シェーディン
    グに関する表面法線及びテクスチャ・マッピングに関するテクスチャ座標を補間
    し、及びテクスチャを、高さフィールド勾配として表示するバンプ・マップが使
    用されている場合に、表面接線を補間するためのフラグメント装置であって;重
    心係数を使用して、透視的な修正された補間を実行する前記フラグメント装置と
    ; (i)テクスチャ装置及び前記テクスチャ装置と関連するテクスチャ・メモリ
    であって;前記テクスチャ装置は、前記テクスチャ・メモリに記憶されたテクス
    チャ・マップを、ピクセル・フラグメントに適用し;前記テクスチャは、MIP
    マップされ、及び異なるレベルの詳細において、一連のテクスチャ・マップを具
    備し;各マップは、視点から一定の距離における、前記テクスチャの外観を表し
    ;前記テクスチャ装置は、正しいレベルの詳細に近い一定のピクセル・フラグメ
    ントに関してテクスチャ値を生成するために、前記テクスチャ・マップから3線
    の補間を実行し;前記テクスチャ装置は、補間されたテクスチャ値を、前記フォ
    ン装置へ、パー・フラグメント・ベース(per-fragment basis)で通信する前記
    装置及びメモリと; (j)前記モード・インジェクション装置と、前記テクスチャ装置からの前記
    テクスチャ色と、及び前記フラグメントの外見の色を決定するための前記フラグ
    メント装置によって生成された前記表面法線とによって供給された素材及びライ
    ティング情報を使用して、各ピクセル・フラグメントに関して、フォン・シェー
    ディングを実行するフォン・ライティング装置であって;前記フォン・ブロック
    は任意で、バンプ・マッピングが使用されている場合に、シェーディングの前に
    、フラグメントの表面法線を摂動させるために、前記テクスチャ装置から前記補
    間された高さフィールド勾配を使用する前記装置と; (k)一度に、1スタンプ分の価値を有するフラグメントを受信し、ビジブル
    ・スタンプ・ポーション(Visible Stamp Portion)と称され、各フラグメント
    は独立の色値を有し、及びピクセル・オーナシップ・テスト、シザー・テスト、
    アルファ・テスト、ステンシル・オペレーション、深度テスト、ブレンディング
    、ディザリング及び論理オペレーションを、各ピクセルにおいて、各サンプル上
    で実行し、及び1タイル分の価値を有する完成したピクセルを蓄積した後に、前
    記ピクセルをアンチエイリアスするために、各ピクセル内のサンプルをブレンド
    し、及び前記アンチエイリアスされたピクセルを、バックエンド装置に通信する
    ピクセル装置と;及び (l)前記ピクセル装置から、一度に1タイル分の価値を有するピクセルを受
    信するための前記ピクセル装置に接続され、及び前記ピクセルをフレームバッフ
    ァに記憶する前記バックエンド装置と を具備する前記プロセッサ。
JP2000572802A 1998-08-20 1999-08-20 ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor) Expired - Lifetime JP3657518B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US9733698P 1998-08-20 1998-08-20
US60/097,336 1998-08-20
US09/213,990 US6771264B1 (en) 1998-08-20 1998-12-17 Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US09/213,990 1998-12-17
PCT/US1999/019254 WO2000019377A1 (en) 1998-08-20 1999-08-20 Graphics processor with deferred shading

Publications (2)

Publication Number Publication Date
JP2002526842A true JP2002526842A (ja) 2002-08-20
JP3657518B2 JP3657518B2 (ja) 2005-06-08

Family

ID=26793137

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2000572802A Expired - Lifetime JP3657518B2 (ja) 1998-08-20 1999-08-20 ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
JP2000582972A Expired - Lifetime JP3657519B2 (ja) 1998-08-20 1999-08-20 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ
JP2004136902A Expired - Fee Related JP4516350B2 (ja) 1998-08-20 2004-03-16 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2000582972A Expired - Lifetime JP3657519B2 (ja) 1998-08-20 1999-08-20 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ
JP2004136902A Expired - Fee Related JP4516350B2 (ja) 1998-08-20 2004-03-16 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ

Country Status (6)

Country Link
US (5) US6771264B1 (ja)
EP (2) EP1105844A1 (ja)
JP (3) JP3657518B2 (ja)
KR (2) KR100478767B1 (ja)
AU (6) AU5779799A (ja)
WO (6) WO2000011605A2 (ja)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002074389A (ja) * 2000-08-23 2002-03-15 Nintendo Co Ltd グラフィクス処理システムおよびエンボス型バンプマッピングを行う方法
JP2002529870A (ja) * 1998-11-06 2002-09-10 イマジネイション テクノロジーズ リミテッド 3次元コンピュータ生成画像のシェーディング及びテクスチャリング
JP2008165760A (ja) * 2006-12-04 2008-07-17 Arm Norway As グラフィックスを処理する方法および装置
JP2011524562A (ja) * 2008-05-30 2011-09-01 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 拡大縮小可能で且つ統合化されたコンピュータシステム
JP4809359B2 (ja) * 2004-10-20 2011-11-09 シーメンス、プラダクツ、ライフサイクル、マニジマント、ソフトウエア、インク ダイナミック・シェーダ生成用システム、方法、およびコンピュータ・プログラム製品
JP2012033173A (ja) * 2005-03-21 2012-02-16 Qualcomm Inc タイル化されたプリフェッチ及びキャッシングされたデプスバッファ
US8681168B2 (en) 2009-01-15 2014-03-25 Arm Limited Methods of and apparatus for processing graphics
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
JP2017516200A (ja) * 2014-04-05 2017-06-15 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上
JP2017520870A (ja) * 2014-05-30 2017-07-27 インテル コーポレイション 遅延分離シェーディングのための技術
KR101821124B1 (ko) 2016-04-05 2018-01-23 한화테크윈 주식회사 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치
US9965886B2 (en) 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
US10019820B2 (en) 2005-12-05 2018-07-10 Arm Norway As Method of and apparatus for processing graphics
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
US10412130B2 (en) 2016-04-04 2019-09-10 Hanwha Techwin Co., Ltd. Method and apparatus for playing media stream on web browser
US11010959B2 (en) 2016-04-29 2021-05-18 Arm Limited Graphics processing systems

Families Citing this family (638)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8253729B1 (en) * 1983-05-09 2012-08-28 Geshwind David M Trimming depth buffer during 2D to 3D conversion
US6590996B1 (en) * 2000-02-14 2003-07-08 Digimarc Corporation Color adaptive watermarking
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US7023437B1 (en) 1998-07-22 2006-04-04 Nvidia Corporation System and method for accelerating graphics processing using a post-geometry data stream during multiple-pass rendering
US7375727B1 (en) * 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6525737B1 (en) * 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6978045B1 (en) * 1998-10-02 2005-12-20 Minolta Co., Ltd. Image-processing apparatus
US6509905B2 (en) * 1998-11-12 2003-01-21 Hewlett-Packard Company Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
JP3258286B2 (ja) * 1998-12-15 2002-02-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 半透明物体と不透明物体とが混在する複数の物体についての画像データをコンピュータ表示画面に表示する描画方法および描画装置
US7224364B1 (en) * 1999-02-03 2007-05-29 Ati International Srl Optimal initial rasterization starting point
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6791569B1 (en) * 1999-07-01 2004-09-14 Microsoft Corporation Antialiasing method using barycentric coordinates applied to lines
US6628836B1 (en) * 1999-10-05 2003-09-30 Hewlett-Packard Development Company, L.P. Sort middle, screen space, graphics geometry compression through redundancy elimination
JP3950926B2 (ja) * 1999-11-30 2007-08-01 エーユー オプトロニクス コーポレイション 画像表示方法、ホスト装置、画像表示装置、およびディスプレイ用インターフェイス
US6870540B1 (en) * 1999-12-06 2005-03-22 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US7058636B2 (en) * 2000-01-03 2006-06-06 Dirk Coldewey Method for prefetching recursive data structure traversals
US6848029B2 (en) 2000-01-03 2005-01-25 Dirk Coldewey Method and apparatus for prefetching recursive data structures
US6731297B1 (en) * 2000-01-11 2004-05-04 Intel Corporation Multiple texture compositing
US7483042B1 (en) * 2000-01-13 2009-01-27 Ati International, Srl Video graphics module capable of blending multiple image layers
US6995761B1 (en) * 2000-01-14 2006-02-07 California Institute Of Technology Compression of 3D surfaces using progressive geometry
WO2001055969A1 (fr) * 2000-01-28 2001-08-02 Namco Ltd. Systeme de jeu et procede de creation d'image
US20020009293A1 (en) * 2000-02-03 2002-01-24 Aldrich Kipp A. HDTV video server
JP3349490B2 (ja) * 2000-02-14 2002-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 画像表示方法、画像表示システム、ホスト装置、画像表示装置、およびディスプレイ用インターフェイス
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US7098925B1 (en) * 2000-03-10 2006-08-29 Intel Corporation Shading of images using texture
US6819321B1 (en) * 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
KR100550240B1 (ko) * 2000-03-31 2006-02-08 인텔 코오퍼레이션 타일형 그래픽스 아키텍쳐
US7038811B1 (en) * 2000-03-31 2006-05-02 Canon Kabushiki Kaisha Standardized device characterization
US6532013B1 (en) 2000-05-31 2003-03-11 Nvidia Corporation System, method and article of manufacture for pixel shaders for programmable shading
US6664963B1 (en) 2000-05-31 2003-12-16 Nvidia Corporation System, method and computer program product for programmable shading using pixel shaders
US6690372B2 (en) 2000-05-31 2004-02-10 Nvidia Corporation System, method and article of manufacture for shadow mapping
US7119813B1 (en) * 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US7032031B2 (en) * 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US7405734B2 (en) * 2000-07-18 2008-07-29 Silicon Graphics, Inc. Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units
US6963347B1 (en) * 2000-08-04 2005-11-08 Ati International, Srl Vertex data processing with multiple threads of execution
US7061502B1 (en) * 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US7002591B1 (en) * 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US8692844B1 (en) * 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
US6828980B1 (en) * 2000-10-02 2004-12-07 Nvidia Corporation System, method and computer program product for z-texture mapping
US6914618B2 (en) * 2000-11-02 2005-07-05 Sun Microsystems, Inc. Methods and systems for producing A 3-D rotational image from A 2-D image
US7079133B2 (en) * 2000-11-16 2006-07-18 S3 Graphics Co., Ltd. Superscalar 3D graphics engine
US6778181B1 (en) 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
JP3705739B2 (ja) * 2000-12-11 2005-10-12 株式会社ナムコ 情報記憶媒体及びゲーム装置
US6975320B1 (en) 2000-12-12 2005-12-13 Micron Technology, Inc. Method and apparatus for level-of-detail computations
US6664961B2 (en) * 2000-12-20 2003-12-16 Rutgers, The State University Of Nj Resample and composite engine for real-time volume rendering
US20030063095A1 (en) * 2000-12-29 2003-04-03 Sun Microsystems, Inc. Statistic logic for collecting a histogram of pixel exponent values
JP2002252770A (ja) * 2001-02-22 2002-09-06 Matsushita Graphic Communication Systems Inc 画像情報の分類方法,画像符号化方法および画像符号化装置
US6791559B2 (en) * 2001-02-28 2004-09-14 3Dlabs Inc., Ltd Parameter circular buffers
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
FR2822274B1 (fr) * 2001-03-13 2003-11-21 Stephane Clement Francoi Rehel Procede d'affichage et de manipulation d'un objet en trois dimensions et applications correspondantes
EP1258837A1 (en) * 2001-05-14 2002-11-20 Thomson Licensing S.A. Method to generate mutual photometric effects
US6859209B2 (en) * 2001-05-18 2005-02-22 Sun Microsystems, Inc. Graphics data accumulation for improved multi-layer texture performance
US7009615B1 (en) 2001-11-30 2006-03-07 Nvidia Corporation Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline
US7456838B1 (en) 2001-06-08 2008-11-25 Nvidia Corporation System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
US7162716B2 (en) 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US6697064B1 (en) 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
WO2002101497A2 (en) 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for programmable fragment processing in a graphics pipeline
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
GB2378108B (en) 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US6778189B1 (en) 2001-08-24 2004-08-17 Nvidia Corporation Two-sided stencil testing system and method
US6734853B2 (en) * 2001-08-28 2004-05-11 Intel Corporation Method of using view frustrum culling for scaleable collision detection
US6704025B1 (en) 2001-08-31 2004-03-09 Nvidia Corporation System and method for dual-depth shadow-mapping
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6924820B2 (en) * 2001-09-25 2005-08-02 Sun Microsystems, Inc. Over-evaluating samples during rasterization for improved datapath utilization
EP1442390B1 (en) 2001-10-10 2017-09-13 Sony Computer Entertainment America LLC System and method for environment mapping
US6999076B2 (en) * 2001-10-29 2006-02-14 Ati Technologies, Inc. System, method, and apparatus for early culling
JP3761085B2 (ja) * 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
KR100450836B1 (ko) * 2001-12-11 2004-10-01 삼성전자주식회사 이차원 영상의 입체화 장치 및 방법
US7426534B2 (en) * 2001-12-19 2008-09-16 International Business Machines Corporation Method and system for caching message fragments using an expansion attribute in a fragment link tag
US6816161B2 (en) * 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US6774895B1 (en) 2002-02-01 2004-08-10 Nvidia Corporation System and method for depth clamping in a hardware graphics pipeline
JP2005516314A (ja) * 2002-02-01 2005-06-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンピュータ・グラフィックスのステップを発生させ無い3次元テクスチャ・マッピング
US7310103B2 (en) * 2002-03-05 2007-12-18 Sun Microsystems, Inc. Pipelined 2D viewport clip circuit
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7159212B2 (en) * 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6975322B2 (en) * 2002-03-12 2005-12-13 Sun Microsystems, Inc. Dynamically adjusting a number of rendering passes in a graphics system
US7015909B1 (en) * 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7376743B1 (en) * 2002-04-02 2008-05-20 Cisco Technology, Inc. Method and apparatus for load balancing in a virtual private network
US7009608B2 (en) * 2002-06-06 2006-03-07 Nvidia Corporation System and method of using multiple representations per object in computer graphics
US6771271B2 (en) * 2002-06-13 2004-08-03 Analog Devices, Inc. Apparatus and method of processing image data
AUPS300502A0 (en) * 2002-06-17 2002-07-11 Canon Kabushiki Kaisha Generating one or more linear blends
US6812927B1 (en) * 2002-06-18 2004-11-02 Nvidia Corporation System and method for avoiding depth clears using a stencil buffer
KR20030097507A (ko) * 2002-06-21 2003-12-31 삼성전자주식회사 평판 표시 장치의 색도 보정 장치 및 그 방법
US6977658B2 (en) * 2002-06-27 2005-12-20 Broadcom Corporation System for and method of performing an opacity calculation in a 3D graphics system
US6954215B2 (en) * 2002-06-28 2005-10-11 Microsoft Corporation System and method for employing non-alpha channel image data in an alpha-channel-aware environment
JP3845045B2 (ja) * 2002-07-23 2006-11-15 株式会社リコー 画像処理装置、画像処理方法、画像形成装置、印刷装置及びホストpc
FR2842977A1 (fr) 2002-07-24 2004-01-30 Total Immersion Procede et systeme permettant a un utilisateur de melanger en temps reel des images de synthese avec des images video
US7002599B2 (en) * 2002-07-26 2006-02-21 Sun Microsystems, Inc. Method and apparatus for hardware acceleration of clipping and graphical fill in display systems
US6857108B2 (en) * 2002-07-31 2005-02-15 Lsi Logic Corporation Interactive representation of structural dependencies in semiconductor design flows
US7257519B2 (en) * 2002-08-02 2007-08-14 Evans & Sutherland Computer Corporation System and method for weighted correction of an eyepoint position
US7176917B1 (en) 2002-08-09 2007-02-13 Avid Technology, Inc. Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface
US7508398B1 (en) 2002-08-27 2009-03-24 Nvidia Corporation Transparent antialiased memory access
US20040088682A1 (en) * 2002-11-05 2004-05-06 Thompson Ryan C. Method, program product, and apparatus for cache entry tracking, collision detection, and address reasignment in processor testcases
US7242400B2 (en) * 2002-11-13 2007-07-10 Ati Technologies Ulc Compression and decompression of data using plane equations
US7633506B1 (en) * 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7656416B2 (en) * 2002-11-27 2010-02-02 Ati Technologies, Inc. Apparatus for generating anti-aliased and stippled 3d lines, points and surfaces using multi-dimensional procedural texture coordinates
JPWO2004055697A1 (ja) * 2002-12-13 2006-04-20 富士通株式会社 処理方法、処理装置及びコンピュータプログラム
US7928997B2 (en) * 2003-02-06 2011-04-19 Nvidia Corporation Digital image compositing using a programmable graphics processor
US8749561B1 (en) * 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
EP1620806A2 (en) * 2003-04-03 2006-02-01 Koninklijke Philips Electronics N.V. Runtime configurable virtual video pipeline
US7259765B2 (en) 2003-04-04 2007-08-21 S3 Graphics Co., Ltd. Head/data scheduling in 3D graphics
US7148888B2 (en) * 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7714858B2 (en) * 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7218331B2 (en) * 2003-05-13 2007-05-15 Via Technologies, Inc. Bounding box in 3D graphics
US20050017969A1 (en) * 2003-05-27 2005-01-27 Pradeep Sen Computer graphics rendering using boundary information
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US7852405B1 (en) * 2003-06-27 2010-12-14 Zoran Corporation Method and apparatus for high definition capture
US8275910B1 (en) 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US7164420B2 (en) * 2003-07-24 2007-01-16 Autodesk, Inc. Ray tracing hierarchy
WO2005013066A2 (en) * 2003-07-25 2005-02-10 New York University Logic arrangement, data structure, system and method for miltilinear representation of multimodal data ensembles for synthesis, rotation and compression
US7139005B2 (en) * 2003-09-13 2006-11-21 Microsoft Corporation Optimized fixed-point mathematical library and graphics functions for a software-implemented graphics rendering system and method using a normalized homogenous coordinate system
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8768642B2 (en) 2003-09-15 2014-07-01 Nvidia Corporation System and method for remotely configuring semiconductor functional circuits
JP4740135B2 (ja) * 2003-09-17 2011-08-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 3次元画像ディスプレイの画面に3次元画像を描画するシステム及び方法
US7593010B2 (en) * 2003-09-18 2009-09-22 Microsoft Corporation Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system
JP2005100176A (ja) * 2003-09-25 2005-04-14 Sony Corp 画像処理装置およびその方法
JP4183082B2 (ja) * 2003-09-26 2008-11-19 シャープ株式会社 3次元画像描画装置および3次元画像描画方法
KR100546383B1 (ko) * 2003-09-29 2006-01-26 삼성전자주식회사 눈에 보이지 않는 프래그먼트를 처리하기 위한 3차원그래픽스 렌더링 엔진 및 그 방법
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US7139003B1 (en) * 2003-12-15 2006-11-21 Nvidia Corporation Methods of processing graphics data including reading and writing buffers
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8174531B1 (en) 2003-10-29 2012-05-08 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
KR20050047741A (ko) * 2003-11-18 2005-05-23 삼성전자주식회사 영상처리장치 및 그 방법
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7053893B1 (en) * 2003-12-15 2006-05-30 Nvidia Corporation Position conflict detection and avoidance in a programmable graphics processor using tile coverage data
US7102645B2 (en) * 2003-12-15 2006-09-05 Seiko Epson Corporation Graphics display controller providing enhanced read/write efficiency for interfacing with a RAM-integrated graphics display device
US7053904B1 (en) * 2003-12-15 2006-05-30 Nvidia Corporation Position conflict detection and avoidance in a programmable graphics processor
US7420568B1 (en) * 2003-12-17 2008-09-02 Nvidia Corporation System and method for packing data in different formats in a tiled graphics memory
US7221368B1 (en) * 2003-12-18 2007-05-22 Nvidia Corporation Stippled lines using direct distance evaluation
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7450120B1 (en) 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US8269769B1 (en) 2003-12-22 2012-09-18 Nvidia Corporation Occlusion prediction compression system and method
US7995056B1 (en) 2003-12-22 2011-08-09 Nvidia Corporation Culling data selection system and method
US8854364B1 (en) * 2003-12-22 2014-10-07 Nvidia Corporation Tight depth range occlusion prediction system and method
US8390619B1 (en) * 2003-12-22 2013-03-05 Nvidia Corporation Occlusion prediction graphics processing system and method
US7433364B2 (en) * 2003-12-24 2008-10-07 Intel Corporation Method for optimizing queuing performance
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US9098943B1 (en) * 2003-12-31 2015-08-04 Ziilabs Inc., Ltd. Multiple simultaneous bin sizes
US7281122B2 (en) * 2004-01-14 2007-10-09 Ati Technologies Inc. Method and apparatus for nested control flow of instructions using context information and instructions having extra bits
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
FI117655B (fi) * 2004-03-25 2006-12-29 Cadfaster Oy Menetelmä tietokoneavusteisen polygonimallin prosessointiin, laite ja tietokoneohjelma
US7609902B2 (en) * 2004-04-13 2009-10-27 Microsoft Corporation Implementation of discrete cosine transformation and its inverse on programmable graphics processor
US7847800B2 (en) * 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US7248265B2 (en) * 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7636489B2 (en) * 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
KR100601952B1 (ko) * 2004-04-20 2006-07-14 삼성전자주식회사 3차원 그래픽 데이터의 재구성장치 및 방법
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US7190366B2 (en) * 2004-05-14 2007-03-13 Nvidia Corporation Method and system for a general instruction raster stage that generates programmable pixel packets
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8411105B1 (en) 2004-05-14 2013-04-02 Nvidia Corporation Method and system for computing pixel parameters
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7389006B2 (en) * 2004-05-14 2008-06-17 Nvidia Corporation Auto software configurable register address space for low power programmable processor
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
WO2005114646A2 (en) 2004-05-14 2005-12-01 Nvidia Corporation Low power programmable processor
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8416242B1 (en) 2004-05-14 2013-04-09 Nvidia Corporation Method and system for interpolating level-of-detail in graphics processors
US20060007234A1 (en) * 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
JP4451717B2 (ja) 2004-05-31 2010-04-14 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US20050275733A1 (en) * 2004-06-10 2005-12-15 Philip Chao Method and apparatus of rendering a video image by polynomial evaluation
US7382377B1 (en) * 2004-06-17 2008-06-03 Nvidia Corporation Render to texture cull
ES2368929T3 (es) * 2004-06-23 2011-11-23 Quin Media Arts And Sciences Inc. Formación de imágenes escultóricas con mosaicos ópticos.
US8068103B2 (en) * 2004-06-24 2011-11-29 Apple Inc. User-interface design
US8130237B2 (en) * 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7397964B2 (en) * 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US20050285866A1 (en) * 2004-06-25 2005-12-29 Apple Computer, Inc. Display-wide visual effects for a windowing system using a programmable graphics processing unit
US7652678B2 (en) * 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7546543B2 (en) 2004-06-25 2009-06-09 Apple Inc. Widget authoring and editing environment
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US7755629B2 (en) * 2004-06-30 2010-07-13 Canon Kabushiki Kaisha Method of rendering graphic objects
US7518608B2 (en) * 2004-07-30 2009-04-14 Sony Corporation Z-depth matting of particles in image rendering
US7256796B1 (en) * 2004-08-03 2007-08-14 Nvidia Corporation Per-fragment control for writing an output buffer
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US20060033736A1 (en) * 2004-08-10 2006-02-16 Wang Andy W Enhanced Color and Lighting Model for Computer Graphics Productions
EP1815317A2 (en) * 2004-08-31 2007-08-08 Silicon Optix Method and apparatus for reading and writing pixel-aligned subframes in a frame buffer
US7218291B2 (en) * 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US7286139B2 (en) * 2004-09-17 2007-10-23 Via Technologies, Inc. Partial guardband clipping
US20060061577A1 (en) * 2004-09-22 2006-03-23 Vijay Subramaniam Efficient interface and assembler for a graphics processor
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US20060071933A1 (en) 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
JP4692956B2 (ja) * 2004-11-22 2011-06-01 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
US7227551B2 (en) * 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US7209139B1 (en) * 2005-01-07 2007-04-24 Electronic Arts Efficient rendering of similar objects in a three-dimensional graphics engine
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
JP4812073B2 (ja) * 2005-01-31 2011-11-09 キヤノン株式会社 画像撮像装置、画像撮像方法、プログラムおよび記録媒体
KR100612890B1 (ko) * 2005-02-17 2006-08-14 삼성전자주식회사 3차원 이미지의 다중 특수 효과 표현 방법 및 장치
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
AU2006225395B2 (en) * 2005-03-24 2009-08-27 Lg Electronics Inc. Method of executing scanning in broadband wireless access system
JP2006293553A (ja) * 2005-04-07 2006-10-26 Aisin Aw Co Ltd フォントデータの回転処理装置及び地図表示システム
US7479965B1 (en) 2005-04-12 2009-01-20 Nvidia Corporation Optimized alpha blend for anti-aliased render
US9363481B2 (en) * 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
US7463261B1 (en) * 2005-04-29 2008-12-09 Adobe Systems Incorporated Three-dimensional image compositing on a GPU utilizing multiple transformations
US7802028B2 (en) * 2005-05-02 2010-09-21 Broadcom Corporation Total dynamic sharing of a transaction queue
US7349066B2 (en) * 2005-05-05 2008-03-25 Asml Masktools B.V. Apparatus, method and computer program product for performing a model based optical proximity correction factoring neighbor influence
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8234577B1 (en) * 2005-05-23 2012-07-31 Glance Networks, Inc. Method and apparatus for the transmission of changed host display information
US7894528B2 (en) * 2005-05-25 2011-02-22 Yissum Research Development Company Of The Hebrew University Of Jerusalem Fast and robust motion computations using direct methods
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7432937B2 (en) * 2005-06-30 2008-10-07 Intel Corporation System and method for concave polygon rasterization
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US20070035553A1 (en) * 2005-08-12 2007-02-15 Microsoft Corporation General framework for aligning textures
US7436412B2 (en) * 2005-08-24 2008-10-14 Qualcomm Incorporated Graphics engine with efficient interpolation
US7551177B2 (en) * 2005-08-31 2009-06-23 Ati Technologies, Inc. Methods and apparatus for retrieving and combining samples of graphics information
US8014615B2 (en) * 2005-09-02 2011-09-06 Adobe Systems Incorporated System and method for decompressing video data and alpha channel data using a single stream
US8189908B2 (en) 2005-09-02 2012-05-29 Adobe Systems, Inc. System and method for compressing video data and alpha channel data using a single stream
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7441230B2 (en) 2005-10-07 2008-10-21 Lucasfilm Entertainment Company Ltd. Method of utilizing product proxies with a dependency graph
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US7414624B2 (en) * 2005-10-28 2008-08-19 Intel Corporation Apparatus and method for a frustum culling algorithm suitable for hardware implementation
US20070097139A1 (en) * 2005-11-02 2007-05-03 Chao-Chin Chen Method and apparatus of primitive filter in graphic process applications
US7934255B1 (en) * 2005-11-08 2011-04-26 Nvidia Corporation Apparatus, system, and method for offloading packet classification
US8294731B2 (en) * 2005-11-15 2012-10-23 Advanced Micro Devices, Inc. Buffer management in vector graphics hardware
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US8624909B2 (en) * 2005-11-21 2014-01-07 Vixs Systems Inc. Image processing system and method thereof
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
KR100957760B1 (ko) * 2005-11-30 2010-05-13 후지쯔 마이크로일렉트로닉스 가부시키가이샤 3차원 그래픽 장치, 3차원 그래픽 방법, 3차원 그래픽 프로그램을 기록한 컴퓨터 판독 기록매체
US8803872B2 (en) * 2005-12-01 2014-08-12 Intel Corporation Computer graphics processor and method for rendering a three-dimensional image on a display screen
US7439988B1 (en) 2005-12-05 2008-10-21 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives with respect to a clipping plane
US7616218B1 (en) 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US7434032B1 (en) 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
US7593018B1 (en) * 2005-12-14 2009-09-22 Nvidia Corp. Method and apparatus for providing explicit weights for texture filtering
US7423642B2 (en) * 2005-12-14 2008-09-09 Winbond Electronics Corporation Efficient video frame capturing
US9123173B2 (en) * 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US8390645B1 (en) * 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US7714877B1 (en) 2005-12-19 2010-05-11 Nvidia Corporation Apparatus, system, and method for determining clipping distances
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US7420572B1 (en) * 2005-12-19 2008-09-02 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives with accelerated context switching
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8300059B2 (en) * 2006-02-03 2012-10-30 Ati Technologies Ulc Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping
JP4734138B2 (ja) * 2006-02-23 2011-07-27 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
JP4734137B2 (ja) * 2006-02-23 2011-07-27 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
JP4782583B2 (ja) * 2006-02-23 2011-09-28 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US8006236B1 (en) * 2006-02-24 2011-08-23 Nvidia Corporation System and method for compiling high-level primitive programs into primitive program micro-code
US8171461B1 (en) 2006-02-24 2012-05-01 Nvidia Coporation Primitive program compilation for flat attributes with provoking vertex independence
US7825933B1 (en) 2006-02-24 2010-11-02 Nvidia Corporation Managing primitive program vertex attributes as per-attribute arrays
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8452981B1 (en) 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing
JP5085642B2 (ja) * 2006-04-20 2012-11-28 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 画像ブロックを圧縮する方法、画像ブロックの圧縮表現を処理する方法、ブロック圧縮器、及びブロック伸張器
JP2007287084A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
JP2007287085A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
US8766995B2 (en) * 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
WO2007130933A2 (en) * 2006-05-01 2007-11-15 Jeffrey W Bezanson Apparatuses, methods and systems for vector operations and storage in matrix models
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
SG137754A1 (en) * 2006-05-12 2007-12-28 Nvidia Corp Antialiasing using multiple display heads of a graphics processor
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US7395180B2 (en) * 2006-05-17 2008-07-01 Lockheed Martin Corporation Efficient translation of data from a two-dimensional array to a wedge
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8892517B2 (en) * 2006-06-09 2014-11-18 Aisin Aw Co., Ltd. Data updating system, navigation device, server, and method of data updating
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US20070291031A1 (en) * 2006-06-15 2007-12-20 Right Hemisphere Limited Three dimensional geometric data correction
US7940262B2 (en) * 2006-06-15 2011-05-10 Right Hemisphere Limited Unification and part hiding in three dimensional geometric data
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
JP2008009696A (ja) * 2006-06-29 2008-01-17 Fuji Xerox Co Ltd 画像処理装置及びプログラム
JP4795138B2 (ja) * 2006-06-29 2011-10-19 富士ゼロックス株式会社 画像処理装置及びプログラム
US8477134B1 (en) 2006-06-30 2013-07-02 Nvidia Corporation Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation
US8284204B2 (en) * 2006-06-30 2012-10-09 Nokia Corporation Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering
US8560495B1 (en) * 2006-07-07 2013-10-15 Sybase, Inc. System and method for synchronizing message processing in a continuous processing system
JP4979287B2 (ja) * 2006-07-14 2012-07-18 富士ゼロックス株式会社 画像処理装置及びプログラム
US8633927B2 (en) * 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8085264B1 (en) 2006-07-26 2011-12-27 Nvidia Corporation Tile output using multiple queue output buffering in a raster stage
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
KR20080014402A (ko) * 2006-08-11 2008-02-14 삼성전자주식회사 컴퓨터 그래픽스 데이터 처리방법과 데이터 처리장치
US9007389B1 (en) * 2006-08-24 2015-04-14 Nvidia Corporation Texture map component optimization
KR100745768B1 (ko) * 2006-08-29 2007-08-02 삼성전자주식회사 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템
US7905610B1 (en) * 2006-08-29 2011-03-15 Nvidia Corporation Graphics processor system and associated method for projecting an image onto a three-dimensional object
US8237739B2 (en) 2006-09-12 2012-08-07 Qualcomm Incorporated Method and device for performing user-defined clipping in object space
CN101501732A (zh) * 2006-09-13 2009-08-05 松下电器产业株式会社 图像处理装置、图像处理用集成电路、图像处理系统、输入汇编装置、输入汇编用集成电路
JP4079378B2 (ja) 2006-09-21 2008-04-23 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理装置の制御方法及びプログラム
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8237738B1 (en) 2006-11-02 2012-08-07 Nvidia Corporation Smooth rasterization of polygonal graphics primitives
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8232991B1 (en) 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US7701459B1 (en) * 2006-11-03 2010-04-20 Nvidia Corporation Primitive oriented assembly for parallel vertex/geometry processing
US8300050B2 (en) * 2006-11-28 2012-10-30 Adobe Systems Incorporated Temporary low resolution rendering of 3D objects
US8059124B2 (en) 2006-11-28 2011-11-15 Adobe Systems Incorporated Temporary non-tiled rendering of 3D objects
WO2008073455A1 (en) * 2006-12-11 2008-06-19 Koplar Interactive Systems International, L.L.C. Spatial data encoding and decoding
US7891818B2 (en) 2006-12-12 2011-02-22 Evans & Sutherland Computer Corporation System and method for aligning RGB light in a single modulator projector
US8736627B2 (en) * 2006-12-19 2014-05-27 Via Technologies, Inc. Systems and methods for providing a shared buffer in a multiple FIFO environment
US7580035B2 (en) * 2006-12-28 2009-08-25 Intel Corporation Real-time collision detection using clipping
US7982733B2 (en) 2007-01-05 2011-07-19 Qualcomm Incorporated Rendering 3D video images on a stereo-enabled display
EP2102823B8 (en) * 2007-01-05 2016-06-29 Landmark Graphics Corporation Systems and methods for visualizing multiple volumetric data sets in real time
ITMI20070038A1 (it) * 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
CN101681526B (zh) * 2007-01-24 2013-03-27 英特尔公司 通过使用可置换的剔除程序提高图形性能的方法和装置
US7746355B1 (en) * 2007-01-24 2010-06-29 Vivante Corporation Method for distributed clipping outside of view volume
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
WO2008103775A2 (en) 2007-02-20 2008-08-28 Pixologic, Inc. System and method for interactive masking and modifying of 3d objects
US7473258B2 (en) * 2007-03-08 2009-01-06 Cardica, Inc. Surgical stapler
US8471862B2 (en) * 2007-03-09 2013-06-25 Ati Technologies Ulc Offset tiles in vector graphics
US7694193B2 (en) * 2007-03-13 2010-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for implementing a stride value for accessing memory
JP4446201B2 (ja) * 2007-03-30 2010-04-07 アイシン・エィ・ダブリュ株式会社 画像認識装置及び画像認識方法
US8155826B2 (en) * 2007-03-30 2012-04-10 Aisin Aw Co., Ltd. Vehicle behavior learning apparatuses, methods, and programs
JP5306317B2 (ja) * 2007-04-04 2013-10-02 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ベクトルを使用する画像処理
US10605610B2 (en) * 2007-04-09 2020-03-31 Ian Cummings Apparatus and methods for reducing data transmission in wireless client-server navigation systems
JP4588736B2 (ja) * 2007-04-12 2010-12-01 富士フイルム株式会社 画像処理方法および装置並びにプログラム
US8633948B2 (en) 2007-04-16 2014-01-21 Sunfish Studio, Llc Single-pass and order-independent transparency in computer graphics using constant memory
GB2448717B (en) * 2007-04-25 2012-09-19 David Hostettler Wain Method and apparatus for the efficient animation of textures based on images and graphical components
US8203560B2 (en) * 2007-04-27 2012-06-19 Sony Corporation Method for predictively splitting procedurally generated particle data into screen-space boxes
US20080273113A1 (en) * 2007-05-02 2008-11-06 Windbond Electronics Corporation Integrated graphics and KVM system
US7876677B2 (en) * 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
FR2917211A1 (fr) * 2007-06-08 2008-12-12 St Microelectronics Sa Procede et dispositif de generation d'images graphiques
US8558832B1 (en) * 2007-06-19 2013-10-15 Nvida Corporation System, method, and computer program product for generating a plurality of two-dimensional images and depth maps for a scene at a point in time
KR101378372B1 (ko) * 2007-07-12 2014-03-27 삼성전자주식회사 디지털 이미지 처리장치, 그 제어방법 및 제어방법을실행시키기 위한 프로그램을 저장한 기록매체
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US7925100B2 (en) * 2007-07-31 2011-04-12 Microsoft Corporation Tiled packaging of vector image data
US7805579B2 (en) * 2007-07-31 2010-09-28 International Business Machines Corporation Methods and arrangements for multi-buffering data
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8249391B2 (en) * 2007-08-24 2012-08-21 Ancestry.com Operations, Inc. User interface method for skew correction
US8156467B2 (en) 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
KR100933366B1 (ko) * 2007-09-13 2009-12-22 한국전자통신연구원 블랙박스 기능을 가지는 라우터 장치와 그 장치를 포함하는네트워크 시스템
JP4501983B2 (ja) * 2007-09-28 2010-07-14 アイシン・エィ・ダブリュ株式会社 駐車支援システム、駐車支援方法、駐車支援プログラム
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
KR101407639B1 (ko) * 2007-10-22 2014-06-16 삼성전자주식회사 3차원 그래픽 렌더링 장치 및 방법
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8638341B2 (en) * 2007-10-23 2014-01-28 Qualcomm Incorporated Antialiasing of two-dimensional vector images
US8760450B2 (en) * 2007-10-30 2014-06-24 Advanced Micro Devices, Inc. Real-time mesh simplification using the graphics processing unit
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8063903B2 (en) * 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware
US8035641B1 (en) 2007-11-28 2011-10-11 Adobe Systems Incorporated Fast depth of field simulation
US9153211B1 (en) * 2007-12-03 2015-10-06 Nvidia Corporation Method and system for tracking accesses to virtual addresses in graphics contexts
US8026912B1 (en) * 2007-12-04 2011-09-27 Nvidia Corporation System and method for structuring an A-buffer
US8040349B1 (en) 2007-12-04 2011-10-18 Nvidia Corporation System and method for structuring an A-buffer
US7940280B2 (en) * 2007-12-06 2011-05-10 Seiko Epson Corporation System and method for color format conversion in a graphics environment
US8102393B1 (en) 2007-12-13 2012-01-24 Nvidia Corporation Cull streams for fine-grained rendering predication
US9489767B1 (en) * 2007-12-13 2016-11-08 Nvidia Corporation Cull streams for fine-grained rendering predication
US8179394B1 (en) 2007-12-13 2012-05-15 Nvidia Corporation Cull streams for fine-grained rendering predication
US8878849B2 (en) * 2007-12-14 2014-11-04 Nvidia Corporation Horizon split ambient occlusion
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
CN101216944B (zh) * 2008-01-07 2011-08-03 北大方正集团有限公司 在排版过程中实现渐变底纹的方法及装置
US20090184972A1 (en) * 2008-01-18 2009-07-23 Qualcomm Incorporated Multi-buffer support for off-screen surfaces in a graphics processing system
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
WO2009095906A2 (en) * 2008-01-30 2009-08-06 Ramot At Tel Aviv University Ltd. Method, system and computer program product for manipulating a graphic entity
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8098251B2 (en) * 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing
KR100866573B1 (ko) * 2008-02-22 2008-11-03 인하대학교 산학협력단 가시성 맵을 이용한 점-기반 렌더링 방법
KR100914171B1 (ko) 2008-02-28 2009-08-28 한국전자통신연구원 휴대 방송에서의 3차원 서비스를 위한 깊이 영상 기반렌더링 장치 및 방법
US7675513B2 (en) * 2008-03-14 2010-03-09 Evans & Sutherland Computer Corp. System and method for displaying stereo images
GB2458488C (en) 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
US7984317B2 (en) * 2008-03-24 2011-07-19 Apple Inc. Hardware-based power management of functional blocks
US8125494B2 (en) * 2008-04-03 2012-02-28 American Panel Corporation Method for mapping optical properties for a display device
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
US8427497B1 (en) 2008-08-01 2013-04-23 Marvell International Ltd. Methods and apparatuses for processing cached image data
US8130223B1 (en) 2008-09-10 2012-03-06 Nvidia Corporation System and method for structuring an A-buffer to support multi-sample anti-aliasing
US8654135B1 (en) * 2008-09-10 2014-02-18 Nvidia Corporation A-Buffer compression for different compression formats
US8553041B1 (en) 2008-09-10 2013-10-08 Nvidia Corporation System and method for structuring an A-buffer to support multi-sample anti-aliasing
US8370759B2 (en) 2008-09-29 2013-02-05 Ancestry.com Operations Inc Visualizing, creating and editing blending modes methods and systems
US9336624B2 (en) * 2008-10-07 2016-05-10 Mitsubishi Electric Research Laboratories, Inc. Method and system for rendering 3D distance fields
KR101496340B1 (ko) 2008-10-31 2015-03-04 삼성전자주식회사 프로세서 및 메모리 제어 방법
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US20100128038A1 (en) * 2008-11-25 2010-05-27 Sony Computer Entertainment America Inc. Method and apparatus for interpolating color and direction as one entity in computer graphics
US8355022B2 (en) * 2008-11-25 2013-01-15 Sony Computer Entertainment America Llc Method and apparatus for aggregating light sources per-vertex in computer graphics
WO2010062790A1 (en) * 2008-11-25 2010-06-03 Sony Computer Entertainment America Inc. Computer graphics method for aggregating light sources per-vertex and interpolating color and direction as one entity
WO2010065466A1 (en) * 2008-12-01 2010-06-10 Life Image Inc. Medical imaging viewer
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
US8803945B2 (en) * 2009-02-01 2014-08-12 Lg Electronics Inc. Broadcast receiver and 3D video data processing method
US8384740B1 (en) 2009-02-24 2013-02-26 A9.Com, Inc. Method and system for virtually placing a tangible item on an appendage
US8854379B2 (en) * 2009-02-25 2014-10-07 Empire Technology Development Llc Routing across multicore networks using real world or modeled data
US8095560B2 (en) * 2009-02-26 2012-01-10 Yahoo! Inc. Edge attribute aggregation in a directed graph
US20100241638A1 (en) * 2009-03-18 2010-09-23 O'sullivan Patrick Joseph Sorting contacts
US8330767B2 (en) * 2009-03-24 2012-12-11 Advanced Micro Devices, Inc. Method and apparatus for angular invariant texture level of detail generation
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
KR100927128B1 (ko) * 2009-04-30 2009-11-18 주식회사 넥서스칩스 타일 더티 테이블을 이용한 3d 그래픽 처리 장치 및 처리 방법
JP5304443B2 (ja) * 2009-05-28 2013-10-02 富士通セミコンダクター株式会社 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
US8294714B1 (en) * 2009-06-26 2012-10-23 Nvidia Corporation Accelerated rendering with temporally interleaved details
KR101649098B1 (ko) * 2009-06-30 2016-08-19 삼성전자주식회사 휴대용 단말기에서 센서를 이용한 렌더링 방법 및 장치
US7973705B2 (en) * 2009-07-17 2011-07-05 Garmin Switzerland Gmbh Marine bump map display
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US9300969B2 (en) 2009-09-09 2016-03-29 Apple Inc. Video storage
GB2473513B (en) * 2009-09-14 2012-02-01 Sony Comp Entertainment Europe A method and apparatus for determining processor performance
US20110063304A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US8692829B2 (en) * 2009-10-05 2014-04-08 Nvidia Corporation Calculation of plane equations after determination of Z-buffer visibility
US9438861B2 (en) * 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
US9058672B2 (en) * 2009-10-06 2015-06-16 Nvidia Corporation Using a pixel offset for evaluating a plane equation
US9125689B2 (en) * 2009-12-08 2015-09-08 Koninklijke Philips N.V. Clipping-plane-based ablation treatment planning
CN102087752B (zh) * 2009-12-08 2013-11-20 鸿富锦精密工业(深圳)有限公司 光照环境模拟系统及方法
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
TWI482998B (zh) * 2010-01-11 2015-05-01 Hon Hai Prec Ind Co Ltd 光照環境類比系統及方法
JP5571977B2 (ja) * 2010-03-01 2014-08-13 キヤノン株式会社 画像処理装置
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9058685B2 (en) * 2010-03-11 2015-06-16 Broadcom Corporation Method and system for controlling a 3D processor using a control list in memory
US8320622B2 (en) * 2010-03-29 2012-11-27 Sharp Laboratories Of America, Inc. Color gradient object tracking
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
KR101016075B1 (ko) * 2010-06-04 2011-02-17 김시용 러버 교체형 와이퍼 블레이드
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US10109103B2 (en) 2010-06-30 2018-10-23 Barry L. Jenkins Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation
US8493404B2 (en) 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101064178B1 (ko) * 2010-08-24 2011-09-14 한국과학기술원 버퍼 캐시 관리 시스템 및 방법
CN103221993B (zh) * 2010-09-13 2017-02-15 巴里·林恩·詹金斯 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8811699B2 (en) * 2010-09-22 2014-08-19 Siemens Aktiengesellschaft Detection of landmarks and key-frames in cardiac perfusion MRI using a joint spatial-temporal context model
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9430036B1 (en) * 2010-12-10 2016-08-30 Wyse Technology L.L.C. Methods and systems for facilitating accessing and controlling a remote desktop of a remote machine in real time by a windows web browser utilizing HTTP
US8949726B2 (en) 2010-12-10 2015-02-03 Wyse Technology L.L.C. Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing
US9244912B1 (en) 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop redrawing session utilizing HTML
US9395885B1 (en) 2010-12-10 2016-07-19 Wyse Technology L.L.C. Methods and systems for a remote desktop session utilizing HTTP header
US9535560B1 (en) 2010-12-10 2017-01-03 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session for a web browser and a remote desktop server
US9245047B2 (en) 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface
KR20120065589A (ko) * 2010-12-13 2012-06-21 삼성전자주식회사 저전력을 위한 타일 비닝 장치 및 방법
US9477597B2 (en) 2011-03-25 2016-10-25 Nvidia Corporation Techniques for different memory depths on different partitions
US8422770B2 (en) * 2011-03-30 2013-04-16 Mckesson Financial Holdings Method, apparatus and computer program product for displaying normalized medical images
US8701057B2 (en) 2011-04-11 2014-04-15 Nvidia Corporation Design, layout, and manufacturing techniques for multivariant integrated circuits
CN102739998B (zh) * 2011-05-11 2017-03-01 新奥特(北京)视频技术有限公司 一种三维空间中空间变换的实现方法
GB2491156B (en) * 2011-05-25 2019-08-07 Advanced Risc Mach Ltd Processing pipeline control
US9311433B2 (en) * 2011-05-27 2016-04-12 Airbus Operations S.L. Systems and methods for improving the execution of computational algorithms
AU2011202508B2 (en) 2011-05-27 2013-05-16 Canon Kabushiki Kaisha Method, apparatus and system for rendering an object on a page
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9652560B1 (en) 2011-07-18 2017-05-16 Apple Inc. Non-blocking memory management unit
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9342322B2 (en) 2011-09-12 2016-05-17 Microsoft Technology Licensing, Llc System and method for layering using tile-based renderers
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface
US20130106887A1 (en) * 2011-10-31 2013-05-02 Christopher Tremblay Texture generation using a transformation matrix
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US9087409B2 (en) 2012-03-01 2015-07-21 Qualcomm Incorporated Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values
US20130235154A1 (en) * 2012-03-09 2013-09-12 Guy Salton-Morgenstern Method and apparatus to minimize computations in real time photo realistic rendering
US8959494B2 (en) * 2012-03-20 2015-02-17 Massively Parallel Technologies Inc. Parallelism from functional decomposition
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9148699B2 (en) * 2012-06-01 2015-09-29 Texas Instruments Incorporated Optimized algorithm for construction of composite video from a set of discrete video sources
US9251555B2 (en) 2012-06-08 2016-02-02 2236008 Ontario, Inc. Tiled viewport composition
JP2014006674A (ja) * 2012-06-22 2014-01-16 Canon Inc 画像処理装置及びその制御方法、プログラム
US20140010479A1 (en) * 2012-07-09 2014-01-09 Samsung Electro-Mechanics Co., Ltd. Bilinear interpolation circuit for image and method thereof
US9105250B2 (en) * 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8786889B2 (en) * 2012-08-29 2014-07-22 Eastman Kodak Company Method for computing scale for tag insertion
US8928929B2 (en) * 2012-08-29 2015-01-06 Eastman Kodak Company System for generating tag layouts
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
GB201223089D0 (en) 2012-12-20 2013-02-06 Imagination Tech Ltd Hidden culling in tile based computer generated graphics
US9082212B2 (en) * 2012-12-21 2015-07-14 Nvidia Corporation Programmable blending via multiple pixel shader dispatches
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US9251554B2 (en) * 2012-12-26 2016-02-02 Analog Devices, Inc. Block-based signal processing
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
DE102013201377A1 (de) * 2013-01-29 2014-07-31 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zum Verarbeiten von 3d-Bilddaten
US20140225902A1 (en) * 2013-02-11 2014-08-14 Nvidia Corporation Image pyramid processor and method of multi-resolution image processing
KR101529942B1 (ko) * 2013-02-18 2015-06-18 서경대학교 산학협력단 병렬 처리 래스터라이저 및 병렬 처리를 이용한 래스터라이징 방법
GB2511817A (en) * 2013-03-14 2014-09-17 Imagination Tech Ltd Rendering in computer graphics systems
US9229688B2 (en) 2013-03-14 2016-01-05 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
US10169906B2 (en) 2013-03-29 2019-01-01 Advanced Micro Devices, Inc. Hybrid render with deferred primitive batch binning
US10957094B2 (en) 2013-03-29 2021-03-23 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
GB2506706B (en) 2013-04-02 2014-09-03 Imagination Tech Ltd Tile-based graphics
US10008029B2 (en) 2013-05-31 2018-06-26 Nvidia Corporation Updating depth related graphics data
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
KR20140142863A (ko) * 2013-06-05 2014-12-15 한국전자통신연구원 그래픽 편집기 제공 장치 및 그 방법
KR101451966B1 (ko) * 2013-06-17 2014-10-22 (주)가비아 모바일용 영상 렌더링 제공 시스템 및 방법
US9418400B2 (en) 2013-06-18 2016-08-16 Nvidia Corporation Method and system for rendering simulated depth-of-field visual effect
US9177413B2 (en) * 2013-06-26 2015-11-03 Nvidia Corporation Unique primitive identifier generation
US9607574B2 (en) 2013-08-09 2017-03-28 Apple Inc. Video data compression format
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9230363B2 (en) 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9230362B2 (en) 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9437040B2 (en) * 2013-11-15 2016-09-06 Nvidia Corporation System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
US9276610B2 (en) * 2014-01-27 2016-03-01 Tensorcom, Inc. Method and apparatus of a fully-pipelined layered LDPC decoder
US20150228106A1 (en) * 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
CN105100862B (zh) * 2014-04-18 2018-04-24 阿里巴巴集团控股有限公司 网格移动的显示处理方法及其系统
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
GB2524121B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
GB2524120B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
US9307249B2 (en) * 2014-06-20 2016-04-05 Freescale Semiconductor, Inc. Processing device and method of compressing images
US9721376B2 (en) * 2014-06-27 2017-08-01 Samsung Electronics Co., Ltd. Elimination of minimal use threads via quad merging
CN104217461B (zh) * 2014-07-10 2017-05-10 无锡梵天信息技术股份有限公司 一种基于深度图模拟实时凹凸效果的视差映射方法
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
US9569862B2 (en) * 2014-08-15 2017-02-14 Qualcomm Incorporated Bandwidth reduction using texture lookup by adaptive shading
US9665370B2 (en) * 2014-08-19 2017-05-30 Qualcomm Incorporated Skipping of data storage
US10019834B2 (en) 2014-09-26 2018-07-10 Microsoft Technology Licensing, Llc Real-time rendering of volumetric models with occlusive and emissive particles
KR102281180B1 (ko) 2014-11-21 2021-07-23 삼성전자주식회사 영상 처리 장치 및 방법
US9720769B2 (en) * 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US10249079B2 (en) * 2014-12-11 2019-04-02 Intel Corporation Relaxed sorting in a position-only pipeline
US9916326B2 (en) 2015-01-27 2018-03-13 Splunk, Inc. Efficient point-in-polygon indexing technique for facilitating geofencing operations
US9836874B2 (en) * 2015-01-27 2017-12-05 Splunk Inc. Efficient polygon-clipping technique to reduce data transfer requirements for a viewport
US9607414B2 (en) 2015-01-27 2017-03-28 Splunk Inc. Three-dimensional point-in-polygon operation to facilitate displaying three-dimensional structures
US10026204B2 (en) 2015-01-27 2018-07-17 Splunk Inc. Efficient point-in-polygon indexing technique for processing queries over geographic data sets
US9530237B2 (en) * 2015-04-02 2016-12-27 Apple Inc. Interpolation circuitry and techniques for graphics processing
US10255651B2 (en) 2015-04-15 2019-04-09 Channel One Holdings Inc. Methods and systems for generating shaders to emulate a fixed-function graphics pipeline
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US9959665B2 (en) 2015-07-21 2018-05-01 Qualcomm Incorporated Zero pixel culling for graphics processing
KR20170034727A (ko) 2015-09-21 2017-03-29 삼성전자주식회사 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치
US10269154B2 (en) * 2015-12-21 2019-04-23 Intel Corporation Rasterization based on partial spans
KR102521654B1 (ko) * 2016-01-25 2023-04-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
US9818051B2 (en) * 2016-01-29 2017-11-14 Ricoh Company, Ltd. Rotation and clipping mechanism
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
CN107180441B (zh) 2016-03-10 2019-04-09 腾讯科技(深圳)有限公司 生成眼睛图像的方法和装置
US11847040B2 (en) 2016-03-16 2023-12-19 Asg Technologies Group, Inc. Systems and methods for detecting data alteration from source to target
US10332290B2 (en) * 2016-03-21 2019-06-25 Adobe Inc. Fast, coverage-optimized, resolution-independent and anti-aliased graphics processing
US9798672B1 (en) 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
EP3249612B1 (en) * 2016-04-29 2023-02-08 Imagination Technologies Limited Generation of a control stream for a tile
WO2018044738A1 (en) * 2016-08-29 2018-03-08 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
US10756785B2 (en) * 2016-09-29 2020-08-25 Nokia Technologies Oy Flexible reference signal design
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10282889B2 (en) * 2016-11-29 2019-05-07 Samsung Electronics Co., Ltd. Vertex attribute compression and decompression in hardware
KR20180070314A (ko) 2016-12-16 2018-06-26 삼성전자주식회사 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US10977858B2 (en) 2017-03-30 2021-04-13 Magic Leap, Inc. Centralized rendering
US11017592B2 (en) 2017-03-30 2021-05-25 Magic Leap, Inc. Centralized rendering
US10157493B2 (en) * 2017-04-01 2018-12-18 Intel Corporation Adaptive multisampling based on vertex attributes
GB2562041B (en) * 2017-04-28 2020-11-25 Imagination Tech Ltd Multi-output decoder for texture decompression
US10521877B2 (en) 2017-05-23 2019-12-31 Samsung Electronics Co., Ltd Apparatus and method for speculative buffer reservations with cancellation mechanism
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
US10969740B2 (en) 2017-06-27 2021-04-06 Nvidia Corporation System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
CN107463398B (zh) 2017-07-21 2018-08-17 腾讯科技(深圳)有限公司 游戏渲染方法、装置、存储设备及终端
GB2569271B (en) 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
GB2569844B (en) 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
GB2569775B (en) 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
US10600142B2 (en) * 2017-11-02 2020-03-24 Advanced Micro Devices, Inc. Compression and decompression of indices in a graphics pipeline
US11057500B2 (en) * 2017-11-20 2021-07-06 Asg Technologies Group, Inc. Publication of applications using server-side virtual screen change capture
US10699374B2 (en) 2017-12-05 2020-06-30 Microsoft Technology Licensing, Llc Lens contribution-based virtual reality display rendering
GB2569546B (en) * 2017-12-19 2020-10-14 Sony Interactive Entertainment Inc Determining pixel values using reference images
US10877740B2 (en) 2017-12-29 2020-12-29 Asg Technologies Group, Inc. Dynamically deploying a component in an application
US11611633B2 (en) 2017-12-29 2023-03-21 Asg Technologies Group, Inc. Systems and methods for platform-independent application publishing to a front-end interface
US10812611B2 (en) 2017-12-29 2020-10-20 Asg Technologies Group, Inc. Platform-independent application publishing to a personalized front-end interface by encapsulating published content into a container
GB2572617B (en) * 2018-04-05 2021-06-16 Imagination Tech Ltd Blending hardware
US10672182B2 (en) * 2018-04-19 2020-06-02 Microsoft Technology Licensing, Llc Compact visibility state for GPUs compatible with hardware instancing
CN112204622A (zh) 2018-05-24 2021-01-08 首选网络株式会社 绘制装置、学习装置、绘制方法以及程序
GB2575294B8 (en) 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway
US10861230B2 (en) * 2018-08-01 2020-12-08 Nvidia Corporation System-generated stable barycentric coordinates and direct plane equation access
KR20240007716A (ko) * 2018-09-13 2024-01-16 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 아핀 선형 가중 인트라 예측
US11138747B1 (en) * 2018-11-02 2021-10-05 Facebook Technologies, Llc Interpolation optimizations for a display engine for post-rendering processing
GB2579412B (en) 2018-11-30 2020-12-23 Graphcore Ltd Gateway pull model
US10909659B2 (en) 2018-12-12 2021-02-02 Apical Limited Super-resolution image processing using a machine learning system
US11715262B2 (en) * 2018-12-17 2023-08-01 Advanced Micro Devices, Inc. Optimizing primitive shaders
KR102216749B1 (ko) * 2019-03-05 2021-02-17 네이버웹툰 유한회사 타겟 이미지의 채색 완성 방법, 장치 및 컴퓨터 프로그램
US10866280B2 (en) * 2019-04-01 2020-12-15 Texas Instruments Incorporated Scan chain self-testing of lockstep cores on reset
US11640649B2 (en) * 2019-06-19 2023-05-02 Samsung Electronics Co., Ltd. Methods and apparatus for efficient range calculation
US11762634B2 (en) 2019-06-28 2023-09-19 Asg Technologies Group, Inc. Systems and methods for seamlessly integrating multiple products by using a common visual modeler
US11488349B2 (en) 2019-06-28 2022-11-01 Ati Technologies Ulc Method and apparatus for alpha blending images from different color formats
US10981059B2 (en) * 2019-07-03 2021-04-20 Sony Interactive Entertainment LLC Asset aware computing architecture for graphics processing
EP4004766A4 (en) * 2019-07-30 2023-09-20 Falkonry, Inc. SMOOTH AND RESOLUTION-FRIENDLY REPRESENTATION OF LARGE AMOUNTS OF TIME SERIES DATA
US11269660B2 (en) 2019-10-18 2022-03-08 Asg Technologies Group, Inc. Methods and systems for integrated development environment editor support with a single code base
US11693982B2 (en) 2019-10-18 2023-07-04 Asg Technologies Group, Inc. Systems for secure enterprise-wide fine-grained role-based access control of organizational assets
US11941137B2 (en) 2019-10-18 2024-03-26 Asg Technologies Group, Inc. Use of multi-faceted trust scores for decision making, action triggering, and data analysis and interpretation
US11055067B2 (en) 2019-10-18 2021-07-06 Asg Technologies Group, Inc. Unified digital automation platform
US11886397B2 (en) 2019-10-18 2024-01-30 Asg Technologies Group, Inc. Multi-faceted trust system
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11216993B2 (en) * 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11514549B2 (en) * 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11113858B2 (en) * 2020-02-04 2021-09-07 Inventive Software, LLC System and method for deep compositing of images in web browsers
US11321259B2 (en) * 2020-02-14 2022-05-03 Sony Interactive Entertainment Inc. Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server
US11132831B1 (en) * 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization
US11243882B2 (en) * 2020-04-15 2022-02-08 International Business Machines Corporation In-array linked list identifier pool scheme
US11250627B2 (en) * 2020-06-29 2022-02-15 Intel Corporation Tile sequencing mechanism
US11277658B1 (en) 2020-08-21 2022-03-15 Beam, Inc. Integrating overlaid digital content into displayed data via graphics processing circuitry
US11849330B2 (en) 2020-10-13 2023-12-19 Asg Technologies Group, Inc. Geolocation-based policy rules
AU2021364215A1 (en) * 2020-10-22 2023-06-22 Zazzle Inc. System and method for high quality renderings of synthetic views of custom products
US11232628B1 (en) * 2020-11-10 2022-01-25 Weta Digital Limited Method for processing image data to provide for soft shadow effects using shadow depth information
US11481933B1 (en) 2021-04-08 2022-10-25 Mobeus Industries, Inc. Determining a change in position of displayed digital content in subsequent frames via graphics processing circuitry
US11586835B2 (en) 2021-04-30 2023-02-21 Mobeus Industries, Inc. Integrating overlaid textual digital content into displayed data via graphics processing circuitry using a frame buffer
US11477020B1 (en) 2021-04-30 2022-10-18 Mobeus Industries, Inc. Generating a secure random number by determining a change in parameters of digital content in subsequent frames via graphics processing circuitry
US11483156B1 (en) 2021-04-30 2022-10-25 Mobeus Industries, Inc. Integrating digital content into displayed data on an application layer via processing circuitry of a server
US11475610B1 (en) 2021-04-30 2022-10-18 Mobeus Industries, Inc. Controlling interactivity of digital content overlaid onto displayed data via graphics processing circuitry using a frame buffer
US11682101B2 (en) 2021-04-30 2023-06-20 Mobeus Industries, Inc. Overlaying displayed digital content transmitted over a communication network via graphics processing circuitry using a frame buffer
US11601276B2 (en) 2021-04-30 2023-03-07 Mobeus Industries, Inc. Integrating and detecting visual data security token in displayed data via graphics processing circuitry using a frame buffer
CN113256485B (zh) * 2021-05-21 2024-01-30 百果园技术(新加坡)有限公司 图像拉伸方法、装置、电子设备和存储介质
US20220410002A1 (en) * 2021-06-29 2022-12-29 Bidstack Group PLC Mesh processing for viewability testing
US11562153B1 (en) 2021-07-16 2023-01-24 Mobeus Industries, Inc. Systems and methods for recognizability of objects in a multi-layer display
US11882295B2 (en) 2022-04-15 2024-01-23 Meta Platforms Technologies, Llc Low-power high throughput hardware decoder with random block access
US20230334736A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Rasterization Optimization for Analytic Anti-Aliasing
US20230334728A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Destination Update for Blending Modes in a Graphics Pipeline
CN114529705B (zh) * 2022-04-22 2022-07-19 山东捷瑞数字科技股份有限公司 一种三维引擎编辑器的界面布局处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855239A (ja) * 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
JPH09179999A (ja) * 1995-12-25 1997-07-11 Nec Corp 画像生成方法およびその装置
JP2003515798A (ja) * 1998-08-20 2003-05-07 アップル コンピュータ インコーポレイテッド 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ

Family Cites Families (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2353185A1 (fr) * 1976-04-09 1977-12-23 Thomson Csf Dispositif correlateur rapide, et systeme de traitement des signaux d'un recepteur comportant un tel dispositif
FR2481489A1 (fr) * 1980-04-25 1981-10-30 Thomson Csf Dispositif correlateur bidimensionnel
US4484346A (en) 1980-08-15 1984-11-20 Sternberg Stanley R Neighborhood transformation logic circuitry for an image analyzer system
US4559618A (en) 1982-09-13 1985-12-17 Data General Corp. Content-addressable memory module with associative clear
US4783829A (en) 1983-02-23 1988-11-08 Hitachi, Ltd. Pattern recognition apparatus
US4581760A (en) * 1983-04-27 1986-04-08 Fingermatrix, Inc. Fingerprint verification method
US4670858A (en) * 1983-06-07 1987-06-02 Tektronix, Inc. High storage capacity associative memory
US4594673A (en) * 1983-06-28 1986-06-10 Gti Corporation Hidden surface processor
US4532606A (en) * 1983-07-14 1985-07-30 Burroughs Corporation Content addressable memory cell with shift capability
US4564952A (en) * 1983-12-08 1986-01-14 At&T Bell Laboratories Compensation of filter symbol interference by adaptive estimation of received symbol sequences
US4694404A (en) * 1984-01-12 1987-09-15 Key Bank N.A. High-speed image generation of complex solid objects using octree encoding
US4794559A (en) 1984-07-05 1988-12-27 American Telephone And Telegraph Company, At&T Bell Laboratories Content addressable semiconductor memory arrays
US4622653A (en) 1984-10-29 1986-11-11 Texas Instruments Incorporated Block associative memory
US4669054A (en) * 1985-05-03 1987-05-26 General Dynamics, Pomona Division Device and method for optically correlating a pair of images
SE445154B (sv) * 1985-07-08 1986-06-02 Ibm Svenska Ab Metod for att avlegsna dolda linjer
US4695973A (en) * 1985-10-22 1987-09-22 The United States Of America As Represented By The Secretary Of The Air Force Real-time programmable optical correlator
US4758982A (en) 1986-01-08 1988-07-19 Advanced Micro Devices, Inc. Quasi content addressable memory
US4890242A (en) 1986-06-05 1989-12-26 Xox Corporation Solid-modeling system using topology directed subdivision for determination of surface intersections
US5067162A (en) 1986-06-30 1991-11-19 Identix Incorporated Method and apparatus for verifying identity using image correlation
US4998286A (en) * 1987-02-13 1991-03-05 Olympus Optical Co., Ltd. Correlation operational apparatus for multi-dimensional images
US4825391A (en) * 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US5129060A (en) * 1987-09-14 1992-07-07 Visual Information Technologies, Inc. High speed image processing computer
US4841467A (en) * 1987-10-05 1989-06-20 General Electric Company Architecture to implement floating point multiply/accumulate operations
GB2215623B (en) 1987-10-23 1991-07-31 Rotation Limited Apparatus for playing a game for one or more players and to games played with the apparatus
US4945500A (en) 1987-11-04 1990-07-31 Schlumberger Technologies, Inc. Triangle processor for 3-D graphics display system
US4888712A (en) 1987-11-04 1989-12-19 Schlumberger Systems, Inc. Guardband clipping method and apparatus for 3-D graphics display system
FR2625345A1 (fr) * 1987-12-24 1989-06-30 Thomson Cgr Procede de visualisation en trois dimensions d'objets codes numeriquement sous forme arborescente et dispositif de mise en oeuvre
EP0329166B1 (en) * 1988-02-17 1994-10-12 Nippondenso Co., Ltd. Fingerprint verification method employing plural correlation judgement levels and sequential judgement stages
US4888583A (en) 1988-03-14 1989-12-19 Ligocki Terry J Method and apparatus for rendering an image from data arranged in a constructive solid geometry format
US5083287A (en) 1988-07-14 1992-01-21 Daikin Industries, Inc. Method and apparatus for applying a shadowing operation to figures to be drawn for displaying on crt-display
US5133052A (en) * 1988-08-04 1992-07-21 Xerox Corporation Interactive graphical search and replace utility for computer-resident synthetic graphic image editors
US4996666A (en) * 1988-08-12 1991-02-26 Duluk Jr Jerome F Content-addressable memory system capable of fully parallel magnitude comparisons
GB8828342D0 (en) 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
US4970636A (en) 1989-01-23 1990-11-13 Honeywell Inc. Memory interface controller
FR2646046B1 (fr) * 1989-04-18 1995-08-25 France Etat Procede et dispositif de compression de donnees d'image par transformation mathematique a cout reduit de mise en oeuvre, notamment pour la transmission a debit reduit de sequences d'images
JPH0776991B2 (ja) * 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Nurbsデータ変換方法及び装置
US5245700A (en) * 1989-11-21 1993-09-14 International Business Machines Corporation Adjustment of z-buffer values for lines on the surface of a polygon
JPH03166601A (ja) 1989-11-27 1991-07-18 Hitachi Ltd 制御支援装置
US5129051A (en) * 1990-03-16 1992-07-07 Hewlett-Packard Company Decomposition of arbitrary polygons into trapezoids
US5123085A (en) 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
US5128888A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
GB9009127D0 (en) * 1990-04-24 1990-06-20 Rediffusion Simulation Ltd Image generator
US5369734A (en) 1990-05-18 1994-11-29 Kabushiki Kaisha Toshiba Method for processing and displaying hidden-line graphic images
EP0464907B1 (en) * 1990-06-29 1996-10-09 Philips Electronics Uk Limited Generating an image
JPH0475183A (ja) * 1990-07-17 1992-03-10 Mitsubishi Electric Corp 画像の相関度検出装置
US5054090A (en) 1990-07-20 1991-10-01 Knight Arnold W Fingerprint correlation system with parallel FIFO processor
US5050220A (en) * 1990-07-24 1991-09-17 The United States Of America As Represented By The Secretary Of The Navy Optical fingerprint correlator
JPH07120435B2 (ja) * 1990-12-06 1995-12-20 インターナショナル・ビジネス・マシーンズ・コーポレイション 高速zバッファの初期化および更新方法ならびにそのシステム
FR2670923A1 (fr) * 1990-12-21 1992-06-26 Philips Lab Electronique Dispositif de correlation.
JPH07122908B2 (ja) 1991-03-12 1995-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 3次元のソリッド物体を表す表示可能情報を生成する装置と方法
US5289567A (en) * 1991-04-01 1994-02-22 Digital Equipment Corporation Computer apparatus and method for finite element identification in interactive modeling
US5293467A (en) * 1991-04-03 1994-03-08 Buchner Gregory C Method for resolving priority between a calligraphically-displayed point feature and both raster-displayed faces and other calligraphically-displayed point features in a CIG system
US5315537A (en) * 1991-04-08 1994-05-24 Blacker Teddy D Automated quadrilateral surface discretization method and apparatus usable to generate mesh in a finite element analysis system
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5347619A (en) * 1991-04-30 1994-09-13 International Business Machines Corporation Nonconvex polygon identifier
US5299139A (en) * 1991-06-21 1994-03-29 Cadence Design Systems, Inc. Short locator method
US5493644A (en) * 1991-07-11 1996-02-20 Hewlett-Packard Company Polygon span interpolator with main memory Z buffer
US5295235A (en) * 1992-02-14 1994-03-15 Steve Newman Polygon engine for updating computer graphic display employing compressed bit map data
US5319743A (en) * 1992-04-02 1994-06-07 Digital Equipment Corporation Intelligent and compact bucketing method for region queries in two-dimensional space
US5669010A (en) * 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
WO1993023816A1 (en) * 1992-05-18 1993-11-25 Silicon Engines Inc. System and method for cross correlation with application to video motion vector estimation
US5621866A (en) * 1992-07-24 1997-04-15 Fujitsu Limited Image processing apparatus having improved frame buffer with Z buffer and SAM port
US5455900A (en) 1992-10-20 1995-10-03 Ricoh Company, Ltd. Image processing apparatus
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
TW241196B (ja) * 1993-01-15 1995-02-21 Du Pont
JP3240447B2 (ja) 1993-02-19 2001-12-17 株式会社リコー 画像処理装置
US5574835A (en) 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5509110A (en) * 1993-04-26 1996-04-16 Loral Aerospace Corporation Method for tree-structured hierarchical occlusion in image generators
US6167143A (en) * 1993-05-03 2000-12-26 U.S. Philips Corporation Monitoring system
US5684939A (en) 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5579455A (en) 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
GB9316214D0 (en) * 1993-08-05 1993-09-22 Philips Electronics Uk Ltd Image processing
JPH07182537A (ja) 1993-12-21 1995-07-21 Toshiba Corp 図形描画装置および図形描画方法
US5699497A (en) 1994-02-17 1997-12-16 Evans & Sutherland Computer Corporation Rendering global macro texture, for producing a dynamic image, as on computer generated terrain, seen from a moving viewpoint
US5778245A (en) * 1994-03-01 1998-07-07 Intel Corporation Method and apparatus for dynamic allocation of multiple buffers in a processor
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5546194A (en) * 1994-03-23 1996-08-13 Videofaxx, Inc. Method and apparatus for converting a video image format to a group III fax format
US5596686A (en) 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
US5544306A (en) * 1994-05-03 1996-08-06 Sun Microsystems, Inc. Flexible dram access in a frame buffer memory and system
US5572634A (en) 1994-10-26 1996-11-05 Silicon Engines, Inc. Method and apparatus for spatial simulation acceleration
JPH08127167A (ja) * 1994-11-01 1996-05-21 Arutetsuku Kk ロール紙終端検知装置及び方法
US5594854A (en) 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5798770A (en) 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5710876A (en) 1995-05-25 1998-01-20 Silicon Graphics, Inc. Computer graphics system for rendering images using full spectral illumination data
JPH08329276A (ja) 1995-06-01 1996-12-13 Ricoh Co Ltd 3次元グラフィックス処理装置
WO1997005576A1 (en) * 1995-07-26 1997-02-13 Silicon Engines, Inc. Method and apparatus for span and subspan sorting rendering system
US5841447A (en) 1995-08-02 1998-11-24 Evans & Sutherland Computer Corporation System and method for improving pixel update performance
US5990904A (en) 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US5977977A (en) 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
JP4540753B2 (ja) * 1995-08-04 2010-09-08 マイクロソフト コーポレーション グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5949428A (en) 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5767859A (en) 1995-09-28 1998-06-16 Hewlett-Packard Company Method and apparatus for clipping non-planar polygons
US5854631A (en) 1995-11-22 1998-12-29 Silicon Graphics, Inc. System and method for merging pixel fragments based on depth range values
US5574836A (en) 1996-01-22 1996-11-12 Broemmelsiek; Raymond M. Interactive display apparatus and method with viewer position compensation
US5850225A (en) 1996-01-24 1998-12-15 Evans & Sutherland Computer Corp. Image mapping system and process using panel shear transforms
US6046746A (en) * 1996-07-01 2000-04-04 Sun Microsystems, Inc. Method and apparatus implementing high resolution rendition of Z-buffered primitives
US5751291A (en) * 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
US5767589A (en) 1996-09-03 1998-06-16 Maximum Products Inc. Lighting control circuit for vehicle brake light/tail light/indicator light assembly
US5860158A (en) 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6167486A (en) 1996-11-18 2000-12-26 Nec Electronics, Inc. Parallel access virtual channel memory system with cacheable channels
US5936629A (en) 1996-11-20 1999-08-10 International Business Machines Corporation Accelerated single source 3D lighting mechanism
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6697063B1 (en) * 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US5852451A (en) 1997-01-09 1998-12-22 S3 Incorporation Pixel reordering for improved texture mapping
US5949424A (en) * 1997-02-28 1999-09-07 Silicon Graphics, Inc. Method, system, and computer program product for bump mapping in tangent space
US5880736A (en) 1997-02-28 1999-03-09 Silicon Graphics, Inc. Method system and computer program product for shading
US6259452B1 (en) 1997-04-14 2001-07-10 Massachusetts Institute Of Technology Image drawing system and method with real-time occlusion culling
US6084591A (en) * 1997-04-29 2000-07-04 Ati Technologies, Inc. Method and apparatus for deferred video rendering
US5920326A (en) 1997-05-30 1999-07-06 Hewlett Packard Company Caching and coherency control of multiple geometry accelerators in a computer graphics system
US6002412A (en) 1997-05-30 1999-12-14 Hewlett-Packard Co. Increased performance of graphics memory using page sorting fifos
US5889997A (en) 1997-05-30 1999-03-30 Hewlett-Packard Company Assembler system and method for a geometry accelerator
US6118452A (en) 1997-08-05 2000-09-12 Hewlett-Packard Company Fragment visibility pretest system and methodology for improved performance of a graphics system
US6002410A (en) 1997-08-25 1999-12-14 Chromatic Research, Inc. Reconfigurable texture cache
US6128000A (en) 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
US6204859B1 (en) 1997-10-15 2001-03-20 Digital Equipment Corporation Method and apparatus for compositing colors of images with memory constraints for storing pixel data
JPH11161819A (ja) * 1997-11-27 1999-06-18 Sega Enterp Ltd 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体
US6201540B1 (en) * 1998-01-07 2001-03-13 Microsoft Corporation Graphical interface components for in-dash automotive accessories
US6259460B1 (en) 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
US6246415B1 (en) 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US6243744B1 (en) * 1998-05-26 2001-06-05 Compaq Computer Corporation Computer network cluster generation indicator
US6650327B1 (en) * 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6216004B1 (en) * 1998-06-23 2001-04-10 Qualcomm Incorporated Cellular communication system with common channel soft handoff and associated method
US6263493B1 (en) * 1998-07-08 2001-07-17 International Business Machines Corporation Method and system for controlling the generation of program statements
US6525737B1 (en) 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6577317B1 (en) * 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US6275235B1 (en) * 1998-12-21 2001-08-14 Silicon Graphics, Inc. High precision texture wrapping method and device
US6228730B1 (en) * 1999-04-28 2001-05-08 United Microelectronics Corp. Method of fabricating field effect transistor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855239A (ja) * 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
JPH09179999A (ja) * 1995-12-25 1997-07-11 Nec Corp 画像生成方法およびその装置
JP2003515798A (ja) * 1998-08-20 2003-05-07 アップル コンピュータ インコーポレイテッド 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002529870A (ja) * 1998-11-06 2002-09-10 イマジネイション テクノロジーズ リミテッド 3次元コンピュータ生成画像のシェーディング及びテクスチャリング
JP4691273B2 (ja) * 2000-08-23 2011-06-01 任天堂株式会社 グラフィクス処理システムおよびエンボス型バンプマッピングを行う方法
JP2002074389A (ja) * 2000-08-23 2002-03-15 Nintendo Co Ltd グラフィクス処理システムおよびエンボス型バンプマッピングを行う方法
JP4809359B2 (ja) * 2004-10-20 2011-11-09 シーメンス、プラダクツ、ライフサイクル、マニジマント、ソフトウエア、インク ダイナミック・シェーダ生成用システム、方法、およびコンピュータ・プログラム製品
JP2012033173A (ja) * 2005-03-21 2012-02-16 Qualcomm Inc タイル化されたプリフェッチ及びキャッシングされたデプスバッファ
US10657681B2 (en) 2005-12-05 2020-05-19 Arm Norway As Method of and apparatus for processing graphics
US10019820B2 (en) 2005-12-05 2018-07-10 Arm Norway As Method of and apparatus for processing graphics
US9965886B2 (en) 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
JP2008165760A (ja) * 2006-12-04 2008-07-17 Arm Norway As グラフィックスを処理する方法および装置
JP2011524562A (ja) * 2008-05-30 2011-09-01 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 拡大縮小可能で且つ統合化されたコンピュータシステム
US8681168B2 (en) 2009-01-15 2014-03-25 Arm Limited Methods of and apparatus for processing graphics
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
JP2017516200A (ja) * 2014-04-05 2017-06-15 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上
JP2017520870A (ja) * 2014-05-30 2017-07-27 インテル コーポレイション 遅延分離シェーディングのための技術
US10412130B2 (en) 2016-04-04 2019-09-10 Hanwha Techwin Co., Ltd. Method and apparatus for playing media stream on web browser
KR101821124B1 (ko) 2016-04-05 2018-01-23 한화테크윈 주식회사 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치
US11010959B2 (en) 2016-04-29 2021-05-18 Arm Limited Graphics processing systems

Also Published As

Publication number Publication date
WO2000011613A9 (en) 2000-08-03
KR100485241B1 (ko) 2005-04-27
WO2000019377B1 (en) 2000-06-08
AU5690499A (en) 2000-03-14
WO2000011605A3 (en) 2000-06-22
EP1138023A1 (en) 2001-10-04
JP2003515798A (ja) 2003-05-07
WO2000011613A3 (en) 2000-06-29
WO2000011605A9 (en) 2001-06-21
AU5576599A (en) 2000-03-14
KR20010085424A (ko) 2001-09-07
WO2000011604A2 (en) 2000-03-02
AU5687599A (en) 2000-03-14
US7167181B2 (en) 2007-01-23
US6614444B1 (en) 2003-09-02
AU5687899A (en) 2000-04-17
EP1105844A1 (en) 2001-06-13
WO2000011605B1 (en) 2001-04-12
JP2004272928A (ja) 2004-09-30
WO2000011614A3 (en) 2000-06-15
WO2000011605A2 (en) 2000-03-02
WO2000019377A1 (en) 2000-04-06
WO2000011614A2 (en) 2000-03-02
AU5782599A (en) 2000-03-14
WO2000011613A2 (en) 2000-03-02
US6771264B1 (en) 2004-08-03
JP3657519B2 (ja) 2005-06-08
JP3657518B2 (ja) 2005-06-08
WO2000030040A9 (en) 2001-10-18
US20040130552A1 (en) 2004-07-08
JP4516350B2 (ja) 2010-08-04
KR20010085426A (ko) 2001-09-07
WO2000011614B1 (en) 2000-07-27
US6597363B1 (en) 2003-07-22
WO2000030040A1 (en) 2000-05-25
AU5779799A (en) 2000-06-05
WO2000011604B1 (en) 2000-07-20
KR100478767B1 (ko) 2005-03-24
EP1138023A4 (en) 2005-09-07
WO2000011604A3 (en) 2000-06-02
US6717576B1 (en) 2004-04-06

Similar Documents

Publication Publication Date Title
JP3657518B2 (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
US7808503B2 (en) Deferred shading graphics pipeline processor having advanced features
US6326964B1 (en) Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system
EP1789927B1 (en) Increased scalability in the fragment shading pipeline
US6577317B1 (en) Apparatus and method for geometry operations in a 3D-graphics pipeline
US20180082464A1 (en) Apparatus and method for an efficient 3d graphics pipeline
US10055883B2 (en) Frustum tests for sub-pixel shadows
US20050134588A1 (en) Method and apparatus for image processing
TW201618041A (zh) 來自片段著色器程式之樣本遮罩的控制
US10846915B2 (en) Method and apparatus for masked occlusion culling
KR20210117988A (ko) 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20031216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041214

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: 20050207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050309

R150 Certificate of patent or registration of utility model

Ref document number: 3657518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080318

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090318

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090318

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100318

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100318

Year of fee payment: 5

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110318

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110318

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120318

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130318

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130318

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140318

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term