首页 / 专利库 / 银行与财务事项 / 别名映射 / Method and device for image rendering

Method and device for image rendering

阅读:609发布:2020-11-15

专利汇可以提供Method and device for image rendering专利检索,专利查询,专利分析的服务。并且PURPOSE:To provide the method and device for visual image rendering for eliminating the alias and for transparency. CONSTITUTION:The method is composed of the alias elimination/pixel blend/ pipeline technology. The parallel rendering pipeline executes the interpolation of the polygon edge, pixel blend and alias elimination rendering. The primitive polygon is converted into a sub pixel coordinate sliced and diced, resulting in generating the 'pixlink' elements being mapped on each pixel. A frame buffer memory 38 stores many pixlinks for each pixel. The Z sorting is made not necessary by the list data object to be linked for each pixlink vector of the pixel struck. All picture data for X,Y, Z, R, G, and B and for the pixel coverage A are held in the pixlink data object and the blending processing is applicable for the alias elimination and for the transparency.,下面是Method and device for image rendering专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 各ピクセルデータは複数の画像値を含み、画像表示装置上に前記ピクセルデータの配列としてのグラフィクスデータをレンダリングするレンダリング装置であって、 グラフィクスデータに対応するプリミテイブポリゴンデータを作成するポリゴンジェネレータ手段であって、前記プリミテイブポリゴンデータは、複数の画像値を有する少なくとも1つの頂点画像データを含み、 前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記頂点画像データのペア間の傾斜を計算する、前記ポリゴンジェネレータ手段に結合されたセットアップ手段と、 前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを表すピクスリンクデータを生成する、前記セットアップ手段に結合したレンダリング手段と、 複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成する、前記レンダリング手段に結合したブレンディング手段と、 第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納する、前記ブレンディング手段に結合したフレームバッファ手段と、 ビデオ表示信号を前記ピクセルデータに対応して生成する、前記ブレンディグ手段に接続したミキサー手段とを備え、 前記ピクスリンクデータの各々は、水平位置(X)と、
    垂直位置(Y)と、視点からの距離(Z)と、赤(R)
    と、緑(G)と、青(B)と、ピクセル領域カバレッジ(A)を含み、 前記ピクセル画像は、前記画像表示装置でレンダリングされることを特徴とする画像レンダリング装置。
  • 【請求項2】 表示装置上に、ピクセル画像配列としてのグラフィクスデータをレンダリングする方法であって、 前記グラフィクスデータの複数の2次元断片を表すプリミテイブポリゴンデータを生成する工程と、 前記第1の頂点データを拡張して、前記画像値を複数の第2の頂点データの各々が備える第2のポリゴンデータを形成する工程と、 第2の頂点データのペアを表現する複数の第2のポリゴンエッジの傾斜を計算する工程と、 前記第2のポリゴンエッジの各々に沿って、前記第2の頂点画像値を補間して、前記第2のポリゴン画像の各々に沿った位置毎に、前記画像値を定義する工程と、 前記第2のポリゴンデータを、前記ピクセル画像配列の水平境界にマッピングして、前記第2のポリゴンデータをスライスし、また、複数の第3のポリゴンデータを生成する工程と、 前記第3のポリゴンデータを、前記ピクセル画像配列の垂直境界にマッピングして、前記第3のポリゴンデータをダイシングし、各々が複数の前記画像値を有する各複数のピクスリンクデータを生成する工程と、 前記ピクセル画像配列のピクセル領域に対し、前記ピクスリンクデータの各々の面積を計算する工程と、 前記ピクスリンクデータを、前記ピクスリンクデータが視点(Z)の画像値からの前記距離によって順序付けされるようにメモリに格納する工程と、 前記ピクセル配列中の前記ピクセルの各々に対する前記ピクセルデータを生成する工程とを備え、 前記プリミテイブポリゴンデータは、水平位置(X)
    と、垂直位置(Y)と、視点からの距離(Z)と、赤(R)と、緑(G)と、青(B)と、透明度(T)とを含む複数の画像値を有する、少なくとも1つの第1の頂点データを含み、 前記ピクセルデータを生成する工程は、 前記ピクセルデータを、もし、対応するピクスリンク領域カバレッジ値Aが単一であるなら、前記画像値(Z)
    の最小値を有する前記対応するピクスリンクデータと等しいみなし、 単一でないなら、前記視点からの距離(Z)の相対値に比例する前記対応するピクスリンクデータの各々に対する前記画像値と、前記対応するピクスリンクデータ内の前記領域カバレッジ(A)をブレンディングして、前記ピクセルデータの各々に対する画像値を生成する工程と、前記ピクセルデータを、メモリに格納する工程と、
    前記格納されたピクセルデータに対応するビデオ表示信号を生成する工程を備えることを特徴とするグラフィクスデータをレンダリングする方法。
  • 【請求項3】 複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング装置であって、 グラフィクスデータに対応するプリミテイブポリゴンデータを作成するポリゴンジェネレータ手段と、 前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算するセットアップ手段と、 前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成するレンダリング手段と、 複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成するブレンディング手段と、 第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納するフレームバッファ手段と、 ビデオ表示信号を前記ピクセルデータに対応して生成するミキサー手段と、 前記ビデオ表示信号に基づいて、前記画像表示装置上に画像を形成する画像形成手段とを備えることを特徴とする画像レンダリング装置。
  • 【請求項4】 前記プリミテイブポリゴンデータは、複数の画像値を有する少なくとも1つの頂点画像データを含むことを特徴とする請求項3に記載の画像レンダリング装置。
  • 【請求項5】 前記ピクスリンクデータの各々は、水平位置(X)と、垂直位置(Y)と、視点からの距離(Z)と、赤(R)と、緑(G)と、青(B)と、ピクセル領域カバレッジ(A)を含むことを特徴とする請求項3に記載の画像レンダリング装置。
  • 【請求項6】 複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング方法であって、 グラフィクスデータに対応するプリミテイブポリゴンデータを作成するポリゴンジェネレータ工程と、 前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算するセットアップ工程と、 前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成するレンダリング工程と、 複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成するブレンディング工程と、 第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータをフレームバッファに格納するフレームバッファ工程と、 ビデオ表示信号を前記ピクセルデータに対応して生成するミキサー工程と、 前記ビデオ表示信号に基づいて、画像を形成する画像形成工程とを備えることを特徴とする画像レンダリング方法。
  • 【請求項7】 前記プリミテイブポリゴンデータは、複数の画像値を有する少なくとも1つの頂点画像データを含むことを特徴とする請求項6に記載の画像レンダリング方法。
  • 【請求項8】 前記ピクスリンクデータの各々は、水平位置(X)と、垂直位置(Y)と、視点からの距離(Z)と、赤(R)と、緑(G)と、青(B)と、ピクセル領域カバレッジ(A)を含むことを特徴とする請求項6に記載の画像レンダリング方法。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【産業上の利用分野】本発明は、一般的に、画像のレンダリング方法とその装置、特に、面積計算およびピクセルブレンディングを行うことによって、ピクセルブレンディングおよびエイリアス除去を行なう高速ハードウエアプロセッサに関する。

    【0002】

    【従来の技術】従来の三次元グラフィックワークステーションには、きわめて単純な走査変換ハードウエアがあり、単一のきわめて小さいサンプルピクセルを用いて、
    点、線、ポリゴンをサンプリングする。 結果的にこれら表示要素をレンダリングすると、エイリアスのある画像が生じる。 モニタピクセル密度を増加させると、エイリアス効果は多少軽減されるが、現代の高速ワークステーションにおいて、モーションの使用が増大すると、この改良されたエイリアスが相殺される。 このため、エイリアスの問題は、全てのワークステーション画像レンダリングプロセッサで、厄介な問題として残されている。

    【0003】現代のワークステーションを用いる技術に携わる人々は、様々な技術を駆使して、エイリアスの問題を解決しようとしている。 点および線に対する適切なピクセルカバレッジを計算する装置を提供している業者もある。 その一例として、ポール ハエバリ(Paul haeb
    erly)らが提案する累積バッファ技術がある。 (”The
    Accumulation Buffer: Hardware Support forA High-Q
    uality Rendering",ACM Computer Graphics , Vol.24,
    No.4, pp.309-318, August 1990)。 ハエバリ(Haeberl
    i)らはポリゴンエイリアス除去解決方法を提案しており、この場合、既存の走査変換システムと互換性がある上、低性能ワークステーションにおいて品質を高めかつ円滑に性能/品質のトレードオフを行なう。 この技術においては、全体画像は何度もピクセルメモリ内に描き直される。 画像の作画は、作画ごとにわずかに異なる画面位置決め値を用いる。 画像は累積バッファ内で平均化され、最終画像を生成し、エイリアス除去された特性を示す。 この技術は、点、線、ポリゴンに適している。 その技術は、単純な透過を許し、他の特定の目的にも使用できるが、複数の作画が必要であるため非効率である。

    【0004】ローレン カーペンター(Loren Carpente
    r) ("The A Buffer And Anti-Aliased Hidden Surface
    Method", ACM Computer Graphics, Vol.18, No.3, pp.
    103-108, July 1984)は、A−バッファエイリアス除去領域平均化累積バッファ技術を提案した。 A−バッファは、比較的単純なエイリアス除去機構であり、例外的なケースでは計算時間がかかることもあるが、膨大な数のピクセルを最小手順で最高精度に処理することを目的として設計されている。 このため、同一ピクセルにおいて、いくつかの表面が交差する場合には、この技法に用いるフラグメントの交差近似は問題を生じうる。 ビットマスク間隔より小さいポリゴンについては、適切にサンプリングされない。

    【0005】他の業者は、J. ツルーブラッド(J. Tru
    eblood)らが提案した近似テーブルコンセプトに追従している("An Efficient Anti-Aliasing Software Algor
    ithm", Society For Information Display Internation
    al Symposium, San diego, Session 19,Digest of Tech
    nical Papers, Vol.17, pp.348-351, May 6-8, 1986)。
    ツルーブラッド(Trueblood)らは、錯視を利用するソフトウエアエイリアス除去アルゴリズムを提案している。 二つの隣接するピクセルの相対輝度を制御することによって眼球は光を統合し、単一スポットの印象を与える。 ここで、この単一スポットの中心は、二つのスポットの明るい方にオフセットされ、また、そのスポット輝度は、両スポット輝度の合計に等しい。 この種のエイリアス除去技術は、主として線および点の作画に利用されてきた。 ピクセルに関する位置およびオリエンテーションは、消去値テーブルの指標として用いられる。 その値は、ピクセルを介する線の輝度を示す。 ピクセルに寄与する複数の線は累積されて、輝度レベルは最高に達する。 残念ながら、この輝度近似技術は、ポリゴンには適用できず、透過をサポートしない。 正確なサンプリング、およびポリゴンエイリアス除去の問題は、たびたび、数多くの方法で解決されてきた。 しかしながら、ほとんどの高性能ワークステーショングラフィックプロセッサでの明らかな傾向は、毎秒当たり大量の小ポリゴンをレンダリングする能の方に向いている。 最近の装置は、RGB照射され、ゴーラッド(Gourad)シェーディングされ、Zバッファリングされた連結した三形を、
    毎秒100万個以上処理することができる。 第2の傾向は、サンプリングの質の改善である。

    【0006】これらは、相反する利益をもたらす傾向がある。 従来のワークステーション走査変換システムは、
    算術処理において多くの簡便法を用い、大量のポリゴンのスループットをサポートする。 これらの簡便法は、精密な技術を使用せずに、サブピクセル以外の位置決め(変換後、頂点座標を整数画面空間において最も近いピクラル位置に丸められる)と、ブレセンハム(Bresenha
    m)サンプリング(領域サンプリングの代わりに線フィルに対する最適の算術に基づいたポリゴンの走査変換の中にピクセルが含まれる)と、スロッピー反復(輪郭反復中、正確度は不十分のままであり、傾斜および初期パラメータ値は頂点、スパンまたは走査のサブピクセル位置に関して補正を受けない)から発生するエイリアスを除去する。 正確なポリゴンサンプリングアーキテクチャは、1985年にすでにヘンリーフチ(Henry Fuchs)
    らが導入している("Fast Spheres, Shadows, Texture
    s, Transparencies and Image Enhancements in Pixel-
    Planes", ACM Computer Graphics, Vol.19, No.3, pp.1
    11-120, July 1985)が、近年になって、ようやく最高速のグラフィックプロセッサが出現し、これら三つの問題にすべて正確に対応できるようになった。

    【0007】多くの他の業者も、エイリアス問題に関する解決方法を提示している。 たとえば、米国特許第5,
    142,273号において、オバーミン(Wobermin)
    は、シンボルジェネレータを開示し、これによりピクセルの重なりを表わす頂点は、色ブレンディングリストを用いて色をブレンドする。 米国特許第5,153,937
    号において、オバーミン(Wobermin)らは、エイリアス除去ビデオ信号を生成する同様のシステムを開示している。 さらに、米国特許第5,175,809号において、
    オバーミン(Wobermin)らは、これより先に開示したピクセルソート方法および色重複方法を使用するパイプライン処理装置を開示している。 パイプライン機構によって、技術上の処理能力は高まるが、レンダリングを適用する場合には非常に効率が悪い。

    【0008】米国特許4,930,091号において、ブライアン D. シュローダー(BrianD. Schroeder)らは、グラフィックプロセッサのレンダリングエンジンに基本三角形入力の自動的アレンジメントを実行する三次元グラフィック表示システムのための三角形分類機構を開示した。 シュローダー(Schroeder)らは、ルックアップテーブルを使用し、入力される頂点から三角形パラメータを計算した後、入力される三角形をカバーする。
    こうして前処理をすると、後の処理は不要になる。

    【0009】米国特許第5,138,699号において、
    バレー L. ミラー(Barry L. Minor)らは、ハードウェア色補間装置を開示しており、この装置はレイ・トレーシング法を用い、以前に色画像化されたピクセル間の領域に介在するピクセルに対する色値を補間する。 処理能力およびマージンの向上方法を考慮していない業者は少数である。

    【0010】米国特許第4,885,688号において、
    カール R. クロフォード(Carl R.Crawford)は、ピクセルデータを補間し、三次元表面構造を表示するシステムを開示している。 米国特許第5,070,465号において、テツロウ カトウ(Tetsurou Kato)らは、ビデオ画像変換方法およびビデオ画像変換装置を開示しており、これは長方形のプリミテイブを用い、生成される三角形の区画上で補間する。 同様に、米国特許第5,10
    9,481号において、オーリン G. ラスロップ(Olin
    G. Lathrop)らは、三角形のプリミテイブ内の頂点補間に基づく二次のシェーディングを使用するシェーディング画像生成のために、二次の補間技術を開示している。 最後に、米国特許第5,123,085号において、
    スターツC. ウエルズ(Stuart C.Wells)らは、エイリアス除去ポリゴンをレンダリングする方法および装置を開示しており、これは、単一パス走査変換処理に依存し、ポリゴンのエッジおよび頂点のピクセルは、最初にポリゴン頂点データから決定される。 ウエルズ(Well
    s)らによれば、各入力因子を合成することによって、
    以後の各プリミテイブに対応するサブピクセル値から、
    1つのピクセルでの画像を累積する。 この方法によって、合成前にポリゴンをZ深度の順にソートする処理に時間を消費せずに、ポリゴンを最小のエイリアスでレンダリングすることができる。 ウエルズ(Wells)らは、
    幾何ピクセルカバレッジ面積計算については触れておらず、またこの装置は、レンダリングされた画像データを格納するための単一層のフレームバッファに限られている。 単一層フレームバッファは、複数ポリゴンからピクセル因子を効果的に統合することができず、ソーティング処理に時間消費しなければ透過性のレンダリングをサポートすることができない。 これらの業者は、この技術に制約を課す処理能率限界を引き下げることに努力している。

    【0011】他の業者は、各ピクセルの画像をレンダリングするための改良技術を提案している。 たとえば米国特許第4,679,040号において、ジョンソン K.
    ヤン(Johnson K. Yan)は、信号変調回路を有するシステムを開示し、このシステムは予め決定された輝度変調因子をいまだ凍結されていない領域すべてに適用する。
    このため、ヤン(Yan)の技術では、輝度が低下した半透明領域の裏の領域の表示が可能になる。

    【0012】米国特許第4,945,500号において、
    ミッシェル F. デイアリング(Michael F. Deering)
    は、三次元グラフィックディスプレイシステムに関する三角形プロセッサを開示し、これは走査中の各ピクセルをポリゴンと比較し、そのピクセルがポリゴン内にあるかどうかを決定する。 デイアリング(Deering)は、その後、相対Z位置に対応して、そのピクセルデータを格納し、ハードウエア内の能率向上のためのパイプライン処理を提案している。 "走査ライン"ピクセルプロセッサの代わりに"ポリゴンプロセッサ"を使用することによって、正規ポリゴンオーバレイ処理を覆した。

    【0013】米国特許第5,142,617号において、
    ジョン C. ダリンプル(John C. Dalrymple)らは、各頂点に対応する表面正規ベクトルと頂点とを連結する線によって定義される表示領域をタイリングするための方法およびその装置を開示した。 補間を介して、付加的な頂点および表面正規ベクトルを計算することによって、
    この表示領域は、下位表示領域に細分化される。 こうして生じた副表示領域は、その頂点の輝度値を計算し、算出した頂点輝度値を直線補間することにより領域をタイリングすることによって、レンダリングされる。

    【0014】米国特許第5,179,638号において、
    ジョン F. ドーソン(John F. Dawson)らは、テクスチュアマッピングされた正面図を生成する方法および装置を開示しているが、これは平面のポリゴン頂点補間に依存している。 このため、エイリアス除去は、各ポリゴンエッジの描写を不鮮明にすることにより完成させることができ、"階段ステップ"エイリアス効果の出現を抑えるだけならば十分であるが、実際に線をぼやけさせるには不十分である。

    【0015】他の構成では、ピクセルの幾何学的中心からのエッジの距離によってピクセル上のエッジ効果にウエイト付けすることで、エイリアスを減少させ、その結果、ピクセルの中心に近接するポリゴンエッジの色がそのピクセルを支配するものもある。 エッジがピクセルをただかすめるだけの場合は、エッジの色はピクセルの色に対して最小限の影響しか与えない。 また周知のように、実際の画面ピクセルより緻密な解像度を有するサブピクセルの仮想セット上の線またはエッジの因子を計算し、その後、実際のピクセル各々に対応するサブピクセルの因子を累積することによって、画像をレンダリングする。 透過の問題も、多くのレンダリング技術によって追求されている。 透過の問題に関して提示された従来の解決方法には、スクーリンドア技術があるが、この技術は最も使用方法が単純である。 マスクを用いて、あるオブジェクトにおけるピクセルのいくつかを存在するものとし、残りを存在しないものとして選別する。 これは、
    新聞の写真印刷に使用するカバー技術に似ている。 結果はきわめて粗雑なクラスで、コンピュータ画面上に現れる。 透過性のレンダリングを扱う当業者も、ソートZリスト技術を提案している。 まず、プリミテイブの物体は、不透明と透明の二つのリストに区分される。 不透明の物体は、可視性を決定するために、通常Zバッファを使用してレンダリングされる。 透明の物体は、視点からの距離によってソートされ、その後レンダリングされる。 この技術によって、適度に上質な画像が得られるが、分離およびソート操作はきわめて非効率で遅い。

    【0016】マルチパス技術もまた、透過性のレンダリングに有用であるが、本来は、上述の累積バッファレンダリングと併用する。 透明度50%のオブジェクトは、図形の半分においては不透明としてレンダリングされ、かつ残りの半分においては透明としてレンダリングされ、
    最終的に、図形は平均化されオブジェクトの透明度は5
    0%になる。 マルチパス方法は、複数の図形に対して必要なため時間を要し、また、透明のタイプにも制限がある。 パス数を増加させることによってレンダリングが遅くなるのと引き換えに、精密な透明特性が得られるが、
    離散断片的透明値でのみでしかレンダリングをすることができない。 この方法では、ポリゴンを横切る透明値を補間することはできない。

    【0017】数多くの高度なレンダリング技術が存在するにもかかわらず、ほとんどのワークステーションレンダリング処理には、限界があるので、多くの簡便法を用いる単純な方法に制限される。 このため、エイリアス除去の問題は、より汎用性の高い画像変換アルゴリズムおよびプロシージャと同様に、正確なハードウエア処理を用いることに着目すべきである。

    【0018】

    【発明が解決しようとする課題】本発明は上記従来例に鑑みてなされたもので、エイリアス除去と透明性の処理を含むグラフィクスデータのレンダリングを高精度にかつ高速に行うレンダリング処理方法とその装置を提供することを目的とする。

    【0019】

    【課題を解決するための手段】上記目的を達成するため、本発明の画像レンダリング処理方法とその装置は以下の構成を備える。 即ち、各ピクセルデータは複数の画像値を含み、画像表示装置上に前記ピクセルデータの配列としてのグラフィクスデータをレンダリングするレンダリング装置であって、グラフィクスデータに対応し、
    複数の画像値を有する少なくとも1つの頂点画像データを含むプリミテイブポリゴンデータを作成するポリゴンジェネレータ手段と、前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記頂点画像データのペア間の傾斜を計算する、前記ポリゴンジェネレータ手段に結合されたセットアップ手段と、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを表すピクスリンクデータを生成する、前記セットアップ手段に結合したレンダリング手段と、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成する、前記レンダリング手段に結合したブレンディング手段と、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納する、前記ブレンディング手段に結合したフレームバッファ手段と、ビデオ表示信号を前記ピクセルデータに対応して生成する、
    前記ブレンディグ手段に接続したミキサー手段とを備え、前記ピクスリンクデータの各々は、平位置(X)
    と、垂直位置(Y)と、視点からの距離(Z)と、赤(R)と、緑(G)と、青(B)と、ピクセル領域カバレッジ(A)を含み、前記ピクセル画像は、前記画像表示装置でレンダリングされる。

    【0020】また、別の発明は、表示装置上に、ピクセル画像配列としてのグラフィクスデータをレンダリングする方法であって、前記グラフィクスデータの複数の2
    次元断片を表すプリミテイブポリゴンデータを生成する工程と、前記第1の頂点データを拡張して、前記画像値を複数の第2の頂点データの各々が備える第2のポリゴンデータを形成する工程と、第2の頂点データのペアを表現する複数の第2のポリゴンエッジの傾斜を計算する工程と、前記第2のポリゴンエッジの各々に沿って、前記第2の頂点画像値を補間して、前記第2のポリゴン画像の各々に沿った位置毎に、前記画像値を定義する工程と、前記第2のポリゴンデータを、前記ピクセル画像配列の水平境界にマッピングして、前記第2のポリゴンデータをスライスし、また、複数の第3のポリゴンデータを生成する工程と、前記第3のポリゴンデータを、前記ピクセル画像配列の垂直境界にマッピングして、前記第3のポリゴンデータをダイシングし、各々が複数の前記画像値を有する各複数のピクスリンクデータを生成する工程と、前記ピクセル画像配列のピクセル領域に対し、
    前記ピクスリンクデータの各々の面積を計算する工程と、前記ピクスリンクデータを、前記ピクスリンクデータが視点(Z)の画像値からの前記距離によって順序付けされるようにメモリに格納する工程と、前記ピクセル配列中の前記ピクセルの各々に対する前記ピクセルデータを生成する工程とを備え、前記プリミテイブポリゴンデータは、水平位置(X)と、垂直位置(Y)と、視点からの距離(Z)と、赤(R)と、緑(G)と、青(B)と、透明度(T)とを含む複数の画像値を有する、少なくとも1つの第1の頂点データを含み、前記ピクセルデータを生成する工程は、前記ピクセルデータを、もし、対応するピクスリンク領域カバレッジ値Aが単一であるなら、前記画像値(Z)の最小値を有する前記対応するピクスリンクデータと等しいみなし、単一でないなら、前記視点からの距離(Z)の相対値に比例する前記対応するピクスリンクデータの各々に対する前記画像値と、前記対応するピクスリンクデータ内の前記領域カバレッジ(A)をブレンディングして、前記ピクセルデータの各々に対する画像値を生成する工程と、前記ピクセルデータを、メモリに格納する工程と、前記格納されたピクセルデータに対応するビデオ表示信号を生成する工程を備える。

    【0021】また、別の発明は、複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング装置であって、グラフィクスデータに対応するプリミテイブポリゴンデータを作成するポリゴンジェネレータ手段と、前記プリミテイブポリゴンデータの拡張とソートを行い、
    また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算するセットアップ手段と、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成するレンダリング手段と、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成するブレンディング手段と、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納するフレームバッファ手段と、ビデオ表示信号を前記ピクセルデータに対応して生成するミキサー手段と、前記ビデオ表示信号に基づいて、前記画像表示装置上に画像を形成する画像形成手段とを備える。

    【0022】また、別の発明は、複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング方法であって、グラフィクスデータに対応するプリミテイブポリゴンデータを作成するポリゴンジェネレータ工程と、前記プリミテイブポリゴンデータの拡張とソートを行い、
    また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算するセットアップ工程と、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成するレンダリング工程と、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成するブレンディング工程と、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納するフレームバッファ工程と、ビデオ表示信号を前記ピクセルデータに対応して生成するミキサー工程と、前記ビデオ表示信号に基づいて、画像を形成する画像形成工程とを備える。

    【0023】

    【作用】以上の構成において、グラフィクスデータに対応し、複数の画像値を有する少なくとも1つの頂点画像データを含むプリミテイブポリゴンデータを、ポリゴンジェネレータ手段が作成し、前記ポリゴンジェネレータ手段に結合されたセットアップ手段が、前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記頂点画像データのペア間の傾斜を計算し、前記セットアップ手段に結合したレンダリング手段が、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを表すピクスリンクデータを生成し、前記レンダリング手段に結合したブレンディング手段が、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成し、前記ブレンディング手段に結合したフレームバッファ手段が、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納し、前記ブレンディグ手段に接続したミキサー手段が、ビデオ表示信号を前記ピクセルデータに対応して生成し、前記ピクセル画像は、前記画像表示装置でレンダリングされる。

    【0024】また、別の発明は、表示装置上に、ピクセル画像配列としてのグラフィクスデータをレンダリングする方法であって、前記グラフィクスデータの複数の2
    次元断片を表すプリミテイブポリゴンデータを生成し、
    前記第1の頂点データを拡張して、前記画像値を複数の第2の頂点データの各々が備える第2のポリゴンデータを形成し、第2の頂点データのペアを表現する複数の第2のポリゴンエッジの傾斜を計算し、前記第2のポリゴンエッジの各々に沿って、前記第2の頂点画像値を補間して、前記第2のポリゴン画像の各々に沿った位置毎に、前記画像値を定義し、前記第2のポリゴンデータを、前記ピクセル画像配列の水平境界にマッピングして、前記第2のポリゴンデータをスライスし、また、複数の第3のポリゴンデータを生成し、前記第3のポリゴンデータを、前記ピクセル画像配列の垂直境界にマッピングして、前記第3のポリゴンデータをダイシングし、
    各々が複数の前記画像値を有する各複数のピクスリンクデータを生成し、前記ピクセル画像配列のピクセル領域に対し、前記ピクスリンクデータの各々の面積を計算し、前記ピクスリンクデータを、前記ピクスリンクデータが視点(Z)の画像値からの前記距離によって順序付けされるようにメモリに格納し、前記ピクセル配列中の前記ピクセルの各々に対する前記ピクセルデータを生成し、前記プリミテイブポリゴンデータは、水平位置(X)と、垂直位置(Y)と、視点からの距離(Z)
    と、赤(R)と、緑(G)と、青(B)と、透明度(T)とを含む複数の画像値を有する、少なくとも1つの第1の頂点データを含み、前記ピクセルデータの生成は、以下の手順で実行する。 即ち、前記ピクセルデータを、もし、対応するピクスリンク領域カバレッジ値Aが単一であるなら、前記画像値(Z)の最小値を有する前記対応するピクスリンクデータと等しいみなし、単一でないなら、前記視点からの距離(Z)の相対値に比例する前記対応するピクスリンクデータの各々に対する前記画像値と、前記対応するピクスリンクデータ内の前記領域カバレッジ(A)をブレンディングして、前記ピクセルデータの各々に対する画像値を生成し、前記ピクセルデータを、メモリに格納し、前記格納されたピクセルデータに対応するビデオ表示信号を生成する。

    【0025】また、別の発明は、複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング装置であって、ポリゴンジェネレータ手段が、グラフィクスデータに対応するプリミテイブポリゴンデータを作成し、セットアップ手段が、前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算し、レンダリング手段が、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成し、ブレンディング手段が、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成し、フレームバッファ手段が、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータを格納し、ミキサー手段が、ビデオ表示信号を前記ピクセルデータに対応して生成し、画像形成手段が、前記ビデオ表示信号に基づいて、前記画像表示装置上に画像を形成する。

    【0026】また、別の発明は、複数の画像値を含むピクセルデータの配列としてのグラフィクスデータを、画像表示装置上にレンダリングするレンダリング方法であって、グラフィクスデータに対応するプリミテイブポリゴンデータを作成し、前記プリミテイブポリゴンデータの拡張とソートを行い、また、前記プリミテイブポリゴンデータが備える頂点画像データのペア間の傾斜を計算し、前記頂点画像データのペア間を補間し、前記ピクセル配列内の個々のピクセルに対する前記プリミテイブポリゴンデータの部分のマッピングを示すピクスリンクデータを生成し、複数の前記ピクスリンクデータを合成し、前記ピクセル配列中の前記ピクセルデータの各々に対する前記画像値を生成し、第1の複数の前記ピクスリンクデータと第2の複数の前記ピクスリンクデータをフレームバッファに格納し、ビデオ表示信号を前記ピクセルデータに対応して生成し、前記ビデオ表示信号に基づいて、画像を形成する。

    【実施例】ハードウェア内で実行される本実施例に係る方法は、標準幾何学的公式を使用し、あらゆるピクセルと各エッジのオーバーラップを計算することによる第1
    の原理に帰着する。 面積計算を制御自在にするために、
    各ポリゴンを水平方向バンドおよび垂直方向バンドにスライスして、長方形、三角形、台形に変換し、全体の複雑な面積計算を減らす。 本実施例に係る方法は、添付の図1〜図5に示される一連のステップを含む。

    【0027】図1において、三角形またはポリゴンが設定され、関連するピクセルが設定される。 点は、大きさがゼロの数学的抽象点から、その点のサブピクセル位置に中心を置くピクセルよりもやや広く覆う小ポリゴンまで拡張される。 端点のサブピクセル位置を用いて、線は、幅がゼロの抽象点から細長長方形にまで拡張される。 ポリゴン頂点は、最小画像パラメータ値を有する頂点から、反時計回り(CCW)に順番に順序付けられる。 ピクセルの境界は、図1に点線で示されている。 各ポリゴンエッジの傾斜は、所望の画像パラメータ各々に対して計算され、線形補間係数は所望の画像パラメータすべてに対して計算される(図6)。

    【0028】図2は、図1の三角形を垂直ピクセル境界に沿って走査ラインに"スライス"したものである。 各走査ラインの最初のピクセルに対する画像パラメータ値が計算される。

    【0029】図3においては、走査ライン区画はさいの目状に切られ、複数の単一のピクセルが生成され、また、部分的にカバーされた各ピクセルの面積が計算される。 各ピクセルを通過するエッジの位置に依存して、種々の加減算を使用すれば、部分的なピクセル領域カバレージを十分計算することができる。 各カバレージ領域は、三角形、長方形または台形のいずれかであるので、
    計算は比較的単純である。

    【0030】図4は、代表的な部分的カバーピクセルを示す。 その領域は、長方形の領域から三角形を差引いたものである。

    【0031】図5は、3つの個別の面積計算を必要とする複合カバレージ計算を示す図である。 各画像成分からの因子を加算することによって、7つの所望の画像パラメータが、各ピクセルで計算される。 ここで、この因子は、全ピクセル領域によって分割された画像成分によってカバーされるピクセル領域の割合に等しい。

    【0032】最終表示画像は、各ピクセルでの、複数の異なる構成ポリゴンからの因子を混合することによって得られる。 "さいの目分割"によって生成された因子を"
    ピクスリンク"と呼ぶ。さいの目分割処理から得られる各ピクスリンクは、7つの画像パラメータに対する個々の値を含むデータオブジェクトにリンクされる。単一のピクスリンクは、ピクセル全体または一部をカバーすることができる。幾つかのピクスリンクは、一つの単一のピクセルに寄与するかもしれない。さいの目分割処理からの得られる各ピクスリンクは、独立して処理され、この処理の結果は混合され、合成画像パラメータが生成される。

    【0033】例えば、視点(Z)からの画像"距離"が比較され、視点からの距離の順に、より近い因子は遠い因子上に混合される。 より近いピクセルリンク領域値が完全なカバレージを示す時、最上部のピクスリンクの色がそのピクセルに割当てられる。 もし、より上部のピクスリンクが完全にピクセルをカバーしない場合は、その色は、より下部のピクセルリンクからのピクスリンク色と混合される。 この色の混合は、より上部のピクセルリンクとより下部のピクセルリンクの領域カバレージに比例する。 もし、2つ以上のピクセルリンクが単一のピクセルに寄与する場合、ピクセルの完全なカバレージを得るために、これらの因子は最上部から最下部まで混合される。 他のイメージパラメータ、例えば、輝度のようなものも、同様に混合される。

    【0034】1つ以上のポリゴンまたはエッジが、いくつかのピクセルで存在するかもしれない。 このことは、
    線がその他の線またはポリゴン上に描かれた場合やオブジェクトがポリゴンエッジの陰に見える時などに、実際に頻繁に発生する。 また、透明画像の場合、単一のピクセルが、しばしばより近くの透明オブジェクトおよびより遠くの不透明オブジェクトの両方を表すことがある。
    これらの異なるピクセルの因子の効果は合成される必要がある。

    【0035】従来の技術では、より遠くのオブジェクト上のエッジのエイリアス除去と透過性を得るためには、
    視点からオブジェクトまでの距離に対応して、オブジェクトをソーテイングする必要があった。 本実施例の方法では、リストデータオブジェクトを用いることによって、複数因子の合成が各ピクセルごとに達成され、様々な関連するポリゴンに対する画像パラメータ因子を格納する。 このため、色の画像パラメータについては、1つのポリゴンがピクセルの色に寄与する場合、視点からのポリゴンの距離が用いられ、リスト中のその場所を得る。 本実施例の利点は、このようなすべてのポリゴンを、どのような順序でもシステムに提供することができるので、ソーテイング操作は必要とされない。 さらに、
    本実施例では、視点から遠方のオブジェクトに対して、
    適切なエッジのエイリアス除去を行うことができる。

    【0036】本実施例に係るリストデータオブジェクトは、視点からの距離の順に維持される。 このリストは、
    リスト中のどの点にでも新しい要素を挿入することができるよう構成されている。 リストは、デイスプレー上の各ピクセルに対して維持される。 完全にカバーされ、そのため見ることができないオブジェクトは、そのリストが構築されるとき、そのリストから除去される。 このため、ソーテイング処理は必要とされない。 本実施例によれば、大きい画像が多数の小ポリゴンから構成される場合、処理時間を大幅に節約することができる。

    【0037】最後に、本実施例のシステム全体は、ハードウェアに組み込まれる。 これは、コマンドパイプライン処理の導入と、プロセス制御のシングルステートマシンを用いることで可能となる。 本実施例の目的と有効な点は、サブピクセルスライス技術と、さいの目分割技術と、ピクスリンク混合技術との組合せをハードウェアに組み込むことによって、そのハードウェア実行の処理パワーを高めることにある。

    【0038】[図面の簡単な説明] 本実施例をより完全に理解するために、添付図面に描かれた実施例の詳細な説明を以下行う。 図1は、本実施例の基本三角形の用語を示す図である。

    【0039】図2は、本実施例の基本三角形スライス操作を示す図である。

    【0040】図3は、本実施例の基本三角形ダイシング(さいの目分割)操作を示す図である。

    【0041】図4は、本実施例のシステムに使用する部分的にカバーされたピクセルの面積計算を示す図である。

    【0042】図5は、本実施例のシステムに使用する部分的にカバーされたピクセルの複合面積計算を示す図である。

    【0043】図6は、本実施例のシステムにおいて使用する画像パラメータに関する平面方程式の公式を示す図である。

    【0044】図7は、本実施例の方法の利用に適したワークステーショングラフィックプロセッサを示す図である。

    【0045】図8は、本実施例のレンダリングパイプラインの機能ブロック図である。

    【0046】図9Aと図9Bは、本実施例の画像生成ボード(IGB)の詳細機能ブロック図である。

    【0047】図10Aと図10Bは、本実施例のPHI
    GS幾何ボード(PGB)の詳細機能ブロック図である。

    【0048】図11Aと図11Bは、本実施例のフレームバッファメモリを示すブロック図である。

    【0049】図12A、図12BA、図12BB、図1
    2BC、図12BD、図12CA、図12CB、図12
    CCは、本実施例のブレンダASICを示す詳細機能ブロック図である。

    【0050】図13は、本実施例の単純パイプライン制御の概念を示す図である。

    【0051】図14は、本実施例の完全パイプライン制御の概念を示す図である。

    【0052】図15は、本実施例のステートマシンで使われる2ホットステート符号化パラメータのテーブルを示す。

    【0053】図16Aと図16Bと図16Cは、本実施例のレンダリング(スライサー/ダイサー)ASICを示す詳細機能ブロック図である。

    【0054】図17は、本実施例のレンダリングASI
    Cにおいて使用されるX-on-next-Y公式を示す図である。

    【0055】図18は、本実施例のレンダリングASI
    Cにおいて使用されるX-on-next-Y公式を示す図である。

    【0056】図19は、本実施例のレンダリングASI
    Cによって使用される調整された基本色公式を示す図である。

    【0057】図20は、本実施例のレンダリングASI
    Cによって使用される長方形公式を示す図である。

    【0058】図21A、図21B、図21Cは、本実施例のフィル長方形(Fill Rectangle)プロシージャとフィルイン次ピクセル(Fill-in Next Pixel)プロシージャを示す図である。

    【0059】図22A、図22B、図22Cは、本実施例の点と線インターセプトプロシージャを示す図である。

    【0060】図23A、図23BA、図23BBは、本実施例の三角形インターセプトプロシージャを示す図である。

    【0061】図24A、図24B、図24C、図24D
    は、本実施例のピクセル生成ユニットのポリゴン処理ユニット(PIXGENA)の特性を示す図である。

    【0062】図25は、本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のスパンカウンタユニット(PBCNT)の特性を示す図である。

    【0063】図26A、図26B、図26C、図26
    D、図26Eは、本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【0064】図27A、図27B、図27Cは、本実施例のピクセル生成ユニットのスパン処理ユニット(PI
    XGENBEN)のセグメントユニット(PBSEG)
    によって使用される計算プロシージャを示す図である。

    【0065】図28Aと図28Bは、本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGEN
    C)の面積計算要素において使用される計算プロシージャを示す図である。

    【0066】図29Aと図29Bは、本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGEN
    C)の面積計算要素によって使用される擬似コードを示す図である。

    【0067】図30は、本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の色補間要素の機能ブロックを示す図である。

    【0068】図31は、本実施例のセットアップASI
    Cの機能ブロック図である。 [好適な実施例の詳細な説明] レンダリングシステムの性能の概要 本実施例のレンダリングシステムは、以下の性能を有する。 点、線およびポリゴンはエイリアス除去される。 本システムは、主に、使用可能なエイリアス除去を実行する。 標準解像度は、1280×1024である。 オプション解像度は、2048×2048である。 仮想画像解像度は、少なくとも物理解像度の8倍である(すなわち1280×1024システムに対しては10240×8
    192である)。 色は、完全24ビットRGBである。
    表示信号は、標準色モニタに適応する。

    【0069】点、線の端点およびポリゴンの頂点は、少なくともピクセルの8分の1の精度で位置設定される。
    背景は、いかなる色でも可能で、黒色である必要はない。 線の輝度は、表示の角度により異なる。 線端は、正方形で線の角度に対し垂直である。 透明はサポートされ、透明オブジェクトをランダムなZ順にレンダリングすることができる。 本実施例のレンダリングシステムは、一枚の9U形式因子ボードに完全に適合するハードウエア内で実現される。

    【0070】本実施例のレンダリングプロシージャは、
    概念的に、以下に示す3つのタスクに分類される。 1) 基本ポリゴンによってカバーされるピクセルが認識される。

    【0071】2) 赤(R)、緑(G)、青(B)、Z
    深度(Z)、透明度(T)およびパターン座標(UおよびV)値は、第1のタスクにおいて認識される各ピクセルに対して決定される。

    【0072】3) 第2のタスクから生じたピクセル(色とZ値を含む)は、予めレンダリングされたプリミテイブから生じたピクセルと合体される。 第1のカバレージタスク開始には、各プリミテイブは、1個以上の頂点を有することに注意する。 各頂点は、それぞれに対応するX、Y、Z、R、G、B、T、UおよびVの値を有する。 ピクセルは、長方形二次元グリッドとして考えることができる。 X値およびY値は整数部と小数部の両方から成る実数であり、ピクセルグリッド上のプリミテイブの頂点の位置を表す。 点は、領域内の1つかそれ以上のピクセルをわずかに広くカバーする正方形として表される。 線は、一方の端点から他の端点まで伸びる細長い長方形で、幅はピクセルよりわずかに広いものとして表される。 ポリゴンは、単に頂点によって囲まれた領域として表される。

    【0073】ピクセルは、部分的または全体的にプリミテイブにカバーされる。 完全にカバーされたピクセルの処理は単純だが、部分的にカバーされたピクセルには、
    より多くの作業が必要になる。 これらのピクセルについて、そのカバレージ領域は計算される必要がある。 プリミテイブ内の全ピクセルが識別され、部分的カバレージ領域が計算された時、第1のカバレージタスクの処理は終了する。

    【0074】第2のタスクでは、第1の工程における各ピクセルの色値およびZ値は、プリミテイブ頂点の色およびZ値を線形補間することにより計算される。

    【0075】第3のタスクでは、Zバッファのように配列したリンクリストを使用することによって、第2の工程からのピクセルは、他のプリミテイブからのピクセルと混合される。 ピクセルの部分カバレージの場合には、
    複数の部分カバレージ因子は、Z順に格納される。 プリミテイブによって部分的にカバーされたピクセルに対する因子は、そのプリミテイブによってカバーされたピクセル領域に比例する。 これは、ボックスフィルタを用いることによって、効果的なエイリアス除去を行う。

    【0076】上述のプロシージャのコンピュータによる実現は、異なるシーケンスで生じる。 ピクセルを識別するタスク1と、ピクセルにおける値を検出するタスク2
    とが組み合わされる。 ピクセルを混合するタスク3は、
    異なる工程として残される。

    【0077】タスク1とタスク2を組み合せて、以下3
    つのサブタスクを実行する。 サブタスク1A) セットアップ − 点は、ゼロサイズの数学的抽象点から、その点のサブピクセル位置に中心を置くピクセルよりもやや広くカバーする小ポリゴンまで拡張される。 線は、その端点のサブピクセル位置を用いて、幅がゼロの抽象線から、細長い長方形まで拡張される。 ポリゴンの頂点は、方向(時計回りと反時計回り)がチェックされ、必要に応じて(このハードウエアは、反時計回り(CC
    W)のポリゴンだけを描画する)、反転されて、Xにおける最小頂点が配置される。 図1は、CCW順にソートされた頂点P0、P1およびP2を持つ三角形を示す。
    ピクセルの境界は、鎖線で描画され、ポリゴンの処理を描いている。 セットアップASICは、ポリゴンエッジの斜きを計算する。 次に、R、G、B、Z、T、UおよびVの線形補間係数が計算される。 ポリゴンによっては、これらの値の全ての補間を必要としないものもあるかもしれない。 例えば、パタンがそのプリミテイブに適用されていないならば、UおよびVは不要である。 パタンが適用されているプリミテイブに対して、そのパタンのミップマップ(mipmap)レベルが計算される。

    【0078】サブタスク(1B) スライシング −
    ポリゴン(今、すべてのプリミテイブはポリゴンであるとする)は、走査ライン境界上でスライスされる。 図2
    は、図1と同様の三角形を示し、垂直ピクセル境界に沿って、複数の走査ラインにスライスされる。 走査ライン上の第1のピクセルのR、G、B、Z、T、UおよびV
    の値が計算される。

    【0079】サブタスク(1C)ダイシング − 走査ラインの小片を、個々のピクセルに分割し、部分的にカバーされたピクセルの領域(A)が計算される。 図3
    は、水平ピクセル境界に沿ってカットされた三角形を示す。 部分的にカバーされたピクセルの領域が計算される。 ピクセルを通過する基本ポリゴンエッジに基づいて、ピクセル領域カバレッジを計算するために、領域の様々な加減算が必要とされる。 各サブ領域は、三角形か長方形か台形であるため、必要な計算は単純である。

    【0080】図4は、部分的にカバーされたピクセルの一例を示す。 その領域は、長方形の面積(H*W)から三角形の面積(h1*w1)/2を引いた部分になる。
    図5は、より複雑な例を示す。 エリア1は、上辺より下の領域であり、長方形(H*W)から三角形((hr*
    wr)/2)を引いた領域である。 エリア2は、底辺より下の領域であり、台形((h11+h12)/2*w))
    である。 カバーピクセル領域は、エリア1からエリア2
    を引いた領域である。

    【0081】図6は、頂点間のZ、R、G、B、T、U
    およびVの値の補間に使用する平面方程式の公式化を示す。 部分的に透明なプリミテイブに関して、領域(A)
    には透明度(T)が乗じられ、縮小された領域カバレッジ因子(A)を生成する。

    【0082】タスク(3)ブレンディング − ここでは"ピクセル"という用語は、より厳密に定義され、本実施例のブレンダで使用する部分カバー要素を識別する。
    ピクセルは、画面の最小の離散アドレス可能領域として定義される。 フレ−ムバッファ内に格納され、また、画面のアップデートに用いられる最終色もまた、ピクセルと呼ばれる。 逆に、ピクスリンク(PIXLINK)
    は、ダイサによって生成された値として定義される。 ダイサから生成された各ピクスリンクは、X、Y、Z、
    R、G、BおよびA値のベクトルにリンクされる。 ピクスリンクは、ピクセルの一部または全部をカバーすることができる。 いくつかのピクスリンクは、単一のピクセルに寄与するかも知れない。 フレームバッファは、各ピクセルいおいて、Z、R、G、BおよびA値を含む、1
    個以上のピクスリンクを格納する。

    【0083】ダイサから生成される各ピクスリンクは、
    独立に処理される。 この処理結果は、ブレンドされて、
    フレームバッファに格納される。 各新ピクスリンクのZ
    値は、フレームバッファの最上部のピクスリンク値と比較される。 もし、新Zが旧Zより視点に近ければ、新ピクスリンクは、旧ピックスリンク上に"ブレンド"される。 それ以外は、新ピクスリンクは、旧ピクスリンクの下に"ブレンド"される。 Zが等しい場合は、新ピックスリンクは、旧ピックスリンクの下に"ブレンド"される。
    最上部のピクスリンク領域値が、完全なカバレージを示している場合には、最上部のピクスリンクの色が使われる。 この1つの条件が、本技術における標準Zバッファプロシージャに等価である。

    【0084】最上部のピクスリンクが、ピクセルの部分的カバレージを示す領域値を有する場合には、ブレンディングは必要とされない。 結果として生成されるピクセル色は、最上部ピクスリンク色と下層ピクスリンク色をブレンディングした混合色である。 色の混合は、最上部および下位のピックスリンクの領域カバレージに比例する。 単一のピクセルに寄与する、2つ以上のピクスリンクがあっても良い。 このような場合には、完全なピクセルカバレージが達成されるまで、いくつかのピックスリンクは先頭から底部までブレンドされる。

    【0085】パタンは、ブレンダによって適用される。
    パタンが使用可能な場合には、ピクスリンクからのUおよびVのパタン座標値、およびミップマップ(mipm
    ap)レベルが、セットアップ手続きによって計算される。 その後、これらは8個のパタン値を得るために使われる。 パタン値は3線補間され、単一のパタン値を生成する。 この値は、ピクスリンクのR、G、BおよびA値を修正するために適用される。 ピクスリンクがフレームバッファで処理される前に、パタンは適用される。 ハードウェア実施例の概要 本実施例のレンダリングシステムのハードウェア態様は、上述した手続き的実現に非常に似ている。 そのハードウェア態様は、4つの異なる専用集積回路(ASI
    C)設計を含む。 フレームバッファを伴い、それらの4
    つのASICは、本実施例のレンダリングパイプラインを構成する。 本実施例のパイプラインを説明するために、PHIGS画像表示システムハードウェアが、トップダウンに説明される。

    【0086】図7のPHIGSウィンドウズ表示システムは、2つの主要なサブシステムから成るグラフィクスワークステーションである。 第1のサブシステムは、C
    PU(Sun SPARC)、またはワークステーションプロセッサ(WP)20である。 第2のサブシステムは、Mega
    tecグラフィックアクセラレータ22である。 各サブシステムは、独自のシャーシに存在する。 両サブシステムは、ケーブルによって接続されている。 本実施例のレンダリングシステムは、グラフィックアクセラレータ22
    内に備えられる。

    【0087】WP20は、標準CPUであり、キーボード、色モニタ、ディスクなどを含む。 ワークステーションインタフェースボード(WIB)24は、WPシャシ内のスロットを占有する。

    【0088】グラフィックスサブシステム22は、バックプレーン(図示せず)と3枚のボードとを備えるシャーシを含む。 グラフィックスインタフェースボード(G
    IB)26はケーブルを介してWIB24に接続され、
    バックプレーンを介してその他のボードに接続される。
    PHIGS幾何ボード(PGB)28は、グラフィックス表示リストを格納し、表示リストを検索し、幾何プリミティブを変換する。 画像生成ボード(IGB)30
    は、幾何プリミティブをレンダリングし、画像を構築し、完成画像をRGBケーブルを介して色モニタ(不図示)に表示する。

    【0089】図7の画像表示システムの心臓部は、PG
    B28とIGB30にあり、これらは互いにすべてのグラフィックスを機能的に供給する。 PGB28は、サーバ側の中央構造記憶装置(CSS)と複数(9個まで)
    のインテル社(Intel)80860XPマイクロプロセッサとを含む。 これらは、PHIGS CSS検索と、XおよびPHIGSの幾何計算と、イメージングなどの付加的な機能とを実行する。 IGB30は、フレームバッファと、オフ画面記憶装置と、色探索表と、カーソルハードウェアと、複数のカスタムグラフィックスチップを含み、本実施例に係るピクセルレンダリングプリミティブおよびビデオ出力生成プロシージャを実行する。

    【0090】図8は、本実施例に係るレンダリングシステムを示し、これはIGB30内に含まれる。 IGB3
    0は、グラフィックスアクセラレータの半分である。 I
    GB30は、専用レンダリングパイプラインと、フレームバッファと、オフスクリーンメモリとから成る。 IG
    B30は、専用集積回路(ASIC)を使用し、非常に高い性能を提供する。 IGB30は、限定数の処理を非常に高速に実行する。 複合タスクはIGB30用に単純な演算に分解される。 IGB30レンダリングパイプラインは、主に図8に示す5つの構成要素を含む。 セットアップASIC32は、頂点データをバッファリングし、傾斜を計算し、線を指定の線幅にまで拡張し、点を指定の点サイズまで拡大し、その点を三角形にソートし、データをスライサ/ダイサに伝送する。 IGB30
    は、2つのセットアップASICを含む。 上述のセットアップ演算に加えて、セットアップASICも1組の頂点レジスタを含む。 これらのレジスタは、バッファとして機能し、複数の頂点のロードを一度に1つ実行することができる。

    【0091】スライサ/ダイサASIC34(レンダリングASIC34とも呼ぶ)は、点、線およびポリゴンのエッジを走査し、X、Y、Z、R、G、B、T、UおよびVのデータを走査線に補間する。 そして、走査線のピクセルの領域カバレージを計算し、ピクセルデータをブレンダにパスする。 IGB30は、5つのスライサ/
    ダイサを含む。

    【0092】ブレンダASIC36は、領域カバレージを含むピクセル値をスライサ/ダイサから受信し、Zバッファリングを実行する。 そして、複数のプリミティブによって部分的にカバーされ、またパタンをマッピングするピクセルに対して、色をブレンドする。 IGB30
    は、10個のブレンダASICを含む。 ブレンダASI
    C36は、(非常に高速の)20通りのインタリーブアクセスをバッファメモリ38に提供する。

    【0093】フレームバッファメモリ38は、(A)
    (ピクセルエリアカバレージ)と同様に、通常のRGB
    Z値を格納する。 フレームバッファメモリ38は、ピクセルあたりRGBZA値の複数のセットを格納し、エイリアス除去および透明化プロシージャに使用する。 フレームバッファ38は、20バンクのメモリに分割される。

    【0094】ミクサASIC40は、ビテオタイミングと制御ロジックを含む。 これは、7色ハードウェアカーソルを組み込む。 IGB30は、3つのミクサASIC
    を含む。

    【0095】本実施例に係るレンダリングシステムは、
    スライサ/ダイサASIC34、ブレンダASIC36
    およびフレームバッファメモリ38に含まれる。

    【0096】図9Aと図9Bは、本実施例に係るIGB
    30の機能ブロック図である。 図10Aと図10Bは、
    本実施例のPGB28の機能ブロック図である。 PHI
    GS幾何ボード(PGB)PGB28は、グラフィックスパイプラインの第1のボードであり、WPと残りのグラフィックスシステムの間の論理インタフェースを提供する。 図10Aと図10Bは、PGBハードウェアを示し、カスタム高性能バスに対するインタフェースと、C
    CSマネジメントと、変換と、IGBインタフェースと、タイミングレジスタと、LEDクラス標識、バージョンEAROM、ブートPROMおよびワークステーションプロセッサコンソールサポートとを含む。

    【0097】PGB−WPインタフェースは、WPのS
    バス上の単一のインタフェースボード24を介する。 F
    IFOは、システムデータフローに対して、WP20を補助する。

    【0098】サーバ側中央ストラクチャストア(CS
    S)管理は、編集および検索処理を含む。 これらの機能は、トラバーサルエンジン(TE)42によって、PG
    B28上で実行される。 ハードウェア構成要素(図10
    Aと図10B)は、CSS管理に含まれ、ワークステーションプロセッサトラバーサルエンジン(WP−TE)
    FIFO44と、トラバーサルエンジン(TE)42
    と、トラバーサルエンジン中央ストラクチャストアメモリ46と、トラバーサルエンジンダイレクトメモリアクセスサポート48とを含む。

    【0099】PGB28は、WP20とTE42との間に、ハードウェアWP−TE FIFO44を含む。 これによって、TW42がWP20からのデータ受取りが可能になるまで、WP20を待たせることなしに、32
    ビットコマンドおよびデータをWP20からTE42へパスすることを許す。

    【0100】PGB上のトラバーサルエンジン(TE)
    42は、50MHzのIntel 80860XPである。 TE42は、
    PHIGSサーバ側CSSを検索し、PFIGSウィンドウグラフィックスのプリミティブ、属性および変換値と、Xウィンドウのグラフィックスのプリミティブおよび属性とを幾何エンジン(GES)に伝送する。 TE4
    2は、WP−TE FIFO44と、TW−CSSメモリ46と、ブートPROM(不図示)と、バージョンE
    AROM(不図示)と、タイミングレジスタ50と、G
    Eメモリ52と、フレームバッファメモリ38とにアクセスする。 PGB28上のTE−CSSメモリ46は、
    TE42に対するコードおよびデータと、PHIGSサーバ側CSSすなわちPHIGS表示リストを含む。

    【0101】TE−CSSメモリ46のコンフィグレーションは、表面実装メモリチップである4MBパリティ保護DRAMを用いて、32MBまたは64MBを構成している。 ユーザが入手できるTE−CSSメモリ46の量は、TEコードとデータの格納に必要な概算の2MB、およびコンソールメールボックスメモリに割当てられる1
    60KBよりも少ない。 TE−CSSメモリ46を、プロプラエタリ高性能IバスおよびTE−CSSローカルバスからアクセスすることができる。 プロプラエタリ高性能Iバスインタフェースによって、TE−CSSメモリ46のすべてにアクセスし、TE42に対するコードおよびデータをロードすることができる。 TE42は、80
    860XPメモリマネジメント装置(MMU)を利用し、C
    SSデータを含むTE−CSSメモリ46の部分を仮想アドレス空間にマッピングする。 TE42は、WP20
    で実行するページドメイン処理(不図示)を伴い、仮想CSSをサポートする。 CSSデータを含むTE−CS
    Sメモリ46の物理ページは、WP20のメモリから、
    また、WP20のメモリにスワップされ、ページドメインによって管理される。

    【0102】CSSとWP−TE FIFO44の間のデータ転送速度を上げるため、DMA機能が提供される。 TE42が、命令語と、エレメントの1つかそれ以上の引数を読込み、そのタイプとサイズを決定しなければならない場合、CSSからのエレメントを読込み、必要に応じて、WP−TE FIFO44に書込む。 これからWP−TE FIFO44に書込まれなければならないエレメントに対する語数が一旦決まると、TE42
    は、このDMA機能を用いて転送する。 このモードによって、TE42がCSSから各値を読み、それをWP−
    TE FIFO44に書込む手間が省ける。 その代わりに、TE42は、エレメントに対して残っている語を読込み、自動的にWP−TE FIFO44に書込むことができる。

    【0103】いくつかの画像変換機能は、幾何エンジン48のPGB28上のIntel 80860XPプロセッサによって実行される。 この変換動作に関するハードウェア要素には、トラバーサルエンジン−幾何エンジン(TE−G
    E) FIFO54と、8個のプロセッサGE0A-GE
    3Aを備える幾何エンジン(GE)48と、幾何エンジンメモリ52と、各GEプロセッサに対する幾何エンジン−IGB FIFO56と、幾何エンジンルーチン制御ハードウェア58とを含む。 次に、これらを簡潔に説明する(図10Aと図10B)。

    【0104】トラバーサルエンジン−幾何エンジン(T
    E−GE)FIFO54は、GE48が読込み可能になるまでTE42を待たせることなく、64ビットコマンドおよびデータをTE42からGE48にパスすることができる。

    【0105】8個の幾何エンジン(GE)プロセッサ4
    8は、Xと、PHIGSと、画像変換を実行する。 各プロセッサ48は、40MHzで実行するIntel 80860XPプロセッサである。 全てのGEプロセッサ48は、すべてのGEに対する共通コードと各GEに必要なXおよびPH
    IGSのデータの専用コピーとを含むメモリ52を共有する。 このメモリ52はまた、WP20にアクセスして、GEコードおよびデータをロードすることができる。

    【0106】GE48は、XおよびPHIGSグラフィックスプリミティブを変換し、PHIGS変換を連結し、PHIGS光照射計算を実行し、XおよびPHIG
    S属性情報をIGB30にパスし、複合画像処理機能を実行する。 各GE48は、WP−TE FIFO44
    と、GEメモリ52と、GE−IGB FIFO56
    と、TE−CSSメモリ46と、ブートPROM(図示せず)と、バージョンEAROM(不図示)と、タイミングレジスタ50と、フレームバッファメモリとにアクセスする。

    【0107】PGB28は、GE48とIGB30上のセットアップグラフィックスチップ60(図9)間に、
    4つのFIFO56を含む。 各FIFOは、2つのGE
    によって共有される。 これによって、セットアップグラフィックスチップ60がデータを受けとるまでGEが待つことなしに、GEからセットアップグラフィックスチップ60に、32ビットコマンドおよびデータをパスすることができる。

    【0108】ルーテイングハードウェア58は、(1)
    WP−TE FIFO44とGE48の間と、(2)4
    つのGE−IBG FIFO56とセットアップグラフィックチップ60との間に存在する。 このルーテイングハードウェア58は、中央スイッチとして機能し、各G
    Eに入力を分配し、各GEから出力を集める。

    【0109】GEルーテイングハードウェア58は、ラウンドロビン技術を利用して、データの収集分配を行う。 GE入力ルーテイングハードウェアは、WP−TE
    FIO44からデータを読込み、1つのコマンドおよびその引数をGE48に書込む。 GE出力ルーテイングハードウェアは、GE−IGB FIFO56から1コマンドとその引数を読込み、IGB30上のセットアップグラフィックスチップ60に書込む。 各コマンド処理後、それら両者は順に次のGE48またはGE−IGB
    FIFO56に移る。 このラウンドロビン技術は、コマンドがGE48に伝送された順番を維持する。 イメージングとグラフィクスボード IGB30は、本実施例に係るレンダリングシステム(図9Aと図9B)を含む。 このレンダリングシステムは、XとPHIGSプリミテイブを描画する。 PGB2
    8は、XYデータを、サブピクセル情報と24ビットZ
    値と共にスクリーン座標として、IGB30へ転送する。 IGB30は、幾何学的レンダリング、色レンダリング、X値比較の機能を実行する。 幾何学的レンダリングの時、IGB30は、ポリラインやポリゴンの頂点座標間のピクセル座標とZ値を補間する。 これは、エイリアス除去のためにカバーされたピクセルの一部分の面積計算の実行を含む。 色レンダリングを行う時、IGB3
    0は、頂点間のRGB色とテクスチャ座標を補間する。
    これは、各プリミテイブに対する幾何学的レンダリングからのピクセル値に適用され、また、エイリアス除去処理のために、異なるプリミテイブからのピクセルに対する色値のブレンデイングの実行を含む。 このデータは、
    次に、フレームバッファメモリ38に書かれる。

    【0110】IGB30は、図9に示すようなハードウエアを含む。 即ち、複数のカスタムグラフィクスレンダリングチップ34と36、フレームバッファメモリ3
    8、ピクセルコオペレーション、制御プレーン、ビデオ出力サブシステム62、LEDステータスインデイケータ(不図示)、カスタム高性能Iバスインターフェイス64、PGBインターフェイス66である。

    【0111】IGB30は、複数のセットアップグラフィクスチップ32を含む3種のカスタムグラフィクスレンダリングチップと、複数のレンダリンググラフィクスチップ34と、複数のブレンデインググラフィクスチップ36を含む。

    【0112】各グラフィクスチップは、マガテク(Maga
    tek)社によってカスタム設計されたASICである。
    ボード上に、どのバージョンの各グラフィクスチップが搭載されているか確認するために、全グラフィクスチップは、TE42によって読みだし可能なステッピング情報を有するレジスタを含む。

    【0113】これらのチップ(複数のASIC)について、次に説明する。 2つのセットアップチップ32は、
    ポリラインやポリゴン頂点の斜度、即ち、線セグメントやポリゴンエッジに沿ったピクセルをフィルする時使うXとYの増加量を決定するための計算を実行する。

    【0114】4つのスライサ/ダイサや複数のレンダリングチップ34は、ピクセルアドレス、色、頂点間のテクスチャ座標の補間処理を実行する。 グローシェーデイング(Gouraud shading)のための色補間は、ポリラインの色値間やポリゴン頂点間で、線形である。 レンダリングチップ34はまた、エイリアス除去処理のためのブレンデイングに使うための各プリミテイブによってカバーされたピクセル領域を計算し、また、最終的なピクセル色を決定するために使われる各プリミテイブに対する、断片的ピクセルカバレージのアルファ(A)値を生成する。

    【0115】本実施例のエイリアス除去処理は、点、
    線、ポリゴンに対して選択的に実行可能にされる。 描画されたイメージの仮想解像度は、少なくとも10240
    x8192サブピクセルである。 デイスプレイは、好ましくは、点、線端、ポリゴン頂点が、少なくともピクセルの1/8の精度(XとYの両方について)で位置決めされた標準の1280x1024カラーモニタが良い。
    2kx2kまでのデイスプレイの解像度は、ハードウエアによってサポートされる。

    【0116】10個のブレンダチップ36は、複数のプリミテイブから単独の値までの各ピクセルに対し複数の色値をブレンドする計算を実行し、結果として、エイリアス除去された線とポリゴンエッジが生成される。 ブレンダチップ36はまた、ポリゴン表面にわたるテクスチャマップからの値を補間する。

    【0117】ブレンダチップ36はまた、次の処理を実行する。 即ち、Z値が小さいか等しいか大きいかの比較(この処理は、イネーブルかデイスエーブルにされえる)、幻影線スタイルの比較、ピクセル処理、制御プレーンの使用である。 幻影線スタイルの比較は、ポリゴン要素をワイアフレームとして引くために使われる。 ポリゴンレンダリングで隠れなかったエッジは、ソリッド線として引かれる。 ポリゴンレンダリングで普通に隠れたエッジは、非ソリッド線スタイルで引かれる。 これは、
    2つの処理を必要とする。 即ち、1つは、全ポリゴンにZ値を設定することで、2つ目の処理は、エッジを描画することである。

    【0118】IGB30のフレームバッファメモリ(F
    BM)38は、VRAMとDRAMに分かれる。 2MBのVRAMから成る20MBは、ビデオリフレッシュされる必要のあるデータのために使われ、24ビットのフレームバッファと制御プレーンを含む。 DRAMの52MB
    は、24ビットZバッファとオフスクリーンフレームバッファメモリのような、24ビットフレームバッファに関連する非ビデオデータのために使われる。

    【0119】RGB色プレーンは、24ビットでダブルバッファである。 このコンフィギュレーションは、同時表示可能な16.7M色までサポートする。 エイリアス除去処理のためのブレンデイング計算を実行する時に、色当たり8ビット精度を維持するために、その色プレーンは、実際に27ビット(各レッド、グリーン、ブルーに対するエキストラビットと共に)を格納する。

    【0120】メモリ38は、5対4(X:Y)メモリインターリーブで配列されているので、連続するFBM3
    8のアクセスは、5個の連続するX位置、または4個の連続するY位置(図11A)に対して、同じVRAMをアクセスしない。 これは、XとPHIGSレンダリング性能を最大化させる。 VRAMの20MBは、2つのバッファ、AとB(図11B)に分割される。 バッファは、
    ウインドウを更新するためか、または、スクリーンのビデオリフレッシュを実行するためかのどちらかのために使われる。 プレーンが選択されたフレームバッファは、
    どのバッファがビデオリフレシュのために使われるか決定する。

    【0121】IGB30でサポートされる制御プレーンは、ウインドウクリッププレーン、フレームバッファセレクトプレーン、Zバッファイレースステータスプレーンを含む。 加えて、IGB30は、ピクセル当たりのブリンクを制御するブリンクプレーンを含む。

    【0122】DRAMの52MBの内、10MBは、Zとアルファに対して割り当てられる。 そのアルファバッファは、ピクセル当たり9ビットのデータを含む。 アルファ(A)バッファ値は、幾何プリミテイブによってカバーされるピクセルのパーセンテージを含み、また、エイリアス除去処理のために、ブレンダチップ36によって使われる。

    【0123】DRAMの残り42MBは、エイリアス除去、Xピクスマップ、イメージプリミテイブ、テクスチャのためにシェアされる、プールされたオフスクリーンメモリスペースを含む。 幾何プリミテイブの検索とレンダリングの間に、エイリアス除去に使われるメモリスペースは、レンダリングチップによって動的に割り当てられて、その後、解放される。 エイリアス除去のために使われるメモリスペースの量は、描画される線とポリゴンエッジの数と、単独のピクセルをどのくらいカバーするか、また、透明性のものであるかどうかに依存する。

    【0124】ピクセルブロック転送("PixBLT")は、ソースアドレスとデステネーションアドレス(テキストのスクローリングで必要とされる)のオーバーラッピングと、並べられていないピクセルアドレスと、ピクスマップ拡張(1:24 - ラスタフォント出力)へのビットマップ、ウインドウまたはピクスマップ上での処理能力について取り扱う機能を備える。 そのピクセル処理は、
    簡単なイメージ処理に必要とされるものを含む。 より複雑なイメージ処理は、PGB28上で実行される。 ASICのセットアップ セットアップASIC32は、主に、頂点バス、即ち、
    ドローポイント(P0)、ドローライン(P0,P
    1)、ドロートライアングル(P0,P1,P2)を経由してPGBから送られる3種のグラフィクプリミテイブを取り扱うように設計される。 図31は、セットアップASIC32の機能ブロック図である。

    【0125】Pnは、9個の異なるパラメータ、即ち、
    (X,Y,R,G,B,T,U)によって完全に記述することができる点(頂点)を意味する。 全てのパラメータが、いつも頂点に伴って出されるとは限らない。 使用可能にされるモードビットに依存して、T,U,Vパラメータは、オンまたはオフされ、セットアップASIC
    32は、それらのパラメータに対して計算を実行しなければならないかどうかを検出する。

    【0126】セットアップASIC32は、頂点データをバッファし、頂点をソートし、必要な斜度を計算し、
    線を具体的に指定された線幅に拡張し、図6に示すプレーンの計算に対応するプレーンのフォーマットでRGB
    ZTUVパラメータを計算する。 スライサ/ダイサ34
    やブレンダ36に対する他のコマンドとデータは、セットアップASIC32によって扱われ、何等の処理なしに他のASICに転送される。 セットアップASIC3
    2は、40MHzで動作するように設計されている。 好適な設計性能は、1秒間に百万ポリゴンのスピードで、
    ポリゴンメッシュを処理する。 しかしながら、1秒間に1万ポリゴンの性能を達成するためには、2つのセットアップが1GBごとに要求される。 そのポリゴンデータ情報は、両方のセットアップにロードされ、現在動作可能にされるそのセットアップは、そのポリゴン情報を処理するための優先度を保持する。 もし、1つのチップがデータを処理中で、他のチップがその前のコマンドを終了しているなら、2つのセットアップ間のトグル動作が発生する。

    【0127】それらセットアップASICの各々は、自分自身にルックアップテーブル(LUT)を分割することを要求する。 2つの分離したテーブルの各々は、2つの、32kx8、12nsアクセスのスタテイックRAM
    から構成される。 通常の実行条件では、そのテーブルは、そのテーブルに接続しているセットアップASIC
    によってのみアクセスされる。 しかしながら、LUTそれ自体は、レンダリングパイプがイネーブルにされる前に、初期化されなければならない。 4つのアドレスがこれらLUTのリード/ライトのために必要となる。 データをライトするとき、両方のLUTには、同じ時間に同じデータがライトされる。 "ライト アドレス/データ"ポートは、データの下位の15ビット(14-0)を、L
    UTアドレスレジスタにラッチする。 同じライトサイクル間に、上位16ビット(31-16)は、SRAMにライトされるデータとなる。 リード動作は、2サイクル動作である。 第1に、そのテーブルに対するアドレスまたはインデックスは、"そのライトアドレスオンリイ"ポートと共に、LUTアドレスレジスタにライトされる。
    繰り返すが、そのアドレスフィールドはデータビット1
    4-0である。 このアドレスは、両方のLUTによってシェアされる。 そのデータは、LUT1リードポートとLUT2リードポート別々に、各LUTから再びリードされる。 データは、ビット31-16上に戻される。 レンダリング(スライサ/ダイサ)ASIC 本実施例の高性能処理では、IGB30の各々のASI
    Cの複数のコピーが必要である。 最も単純な構成では、
    レンダリングパイプは、2つのセットアップASICから成り、各々はデータを5つのスライサ/ダイサに供給する。 図16A−図16Cは、スライサ/ダイサASI
    C34について説明するための機能ブロック図を示す。

    【0128】図8および図10Aと図10Bに示すように、スライサ/ダイサASIC34は、ドロー(Draw)
    コマンドデータをセットアップASIC32から受信し、ブレンダASIC26にパスされるピクセル情報を生成する。 スライサ/ダイサASIC34は、点、線および三角形の作画をサポートする。 スライサは、これらのプリミティブ各々を複数の垂直スパンに"スライス"
    (図2)し、それらの垂直スパンは、ダイサにパスされ、ピクセル処理(図3)にパスされる。 5つのダイサの各々は、5番目の垂直スパン毎に処理する。 スライサは、情報をダイサモジュールに転送し、ダイサは、スパンの各ピクセルに対する座標を計算する。 スライサは、
    色情報も転送する。

    【0129】各ピクセルに対し、ダイサは、ピクセル座標を表すX、YおよびZと、ピクセル色を表すR、GおよびBと、ピクセルカバレッジ領域を表すα(A)とを生成する。 モードレジスタ内の値によって、ダイサは、
    テクスチャ処理のために使用されるU、Vと、透明度のために使用されるTを生成することもできる。

    【0130】モードレジスタは、3ビットレジスタであり、IGBパイプコマンドによってセットされる。 IG
    Bパイプコマンドは、レンダリングパイプラインにパスされ、ASICの内部クラスを変更する。 各IGBパイプコマンドは、特定のASICに対してアドレス指定される。 モードレジスタのビット2の設定は、T値の生成を可能にする。 同様に、ビット1の設定は、U、V値の生成を可能にする。 どちらの場合にも、レンダリングA
    SIC34は、セットアップASIC22からU、VやTに関する付加的な情報を期待する。 ビット0の設定は、エイリアス除去モードを使用可能にする。 エイリアス除去処理が使用不可能な場合、レンダリングASIC
    34は、常時ピクセル領域値Aを最大値にセットする。
    ただし、エイリアス除去処理が使用できる場合、ダイサは、プリミテイブによってカバーされるピクセル各々の断片領域Aを計算する。

    【0131】スライサ/ダイサASIC34は、三角形スパン、水平スパンおよびピクセルフィルを高速処理するために使用される一連のIGBのドロー(Draw)コマンドもまたサポートする。 このような状況の場合、色はグラフィックエンジンから受信されるが、スライサ/ダイサASIC34は、ブレンダ36によって処理される座標情報を生成する。

    【0132】プリミテイブエッジを走査する処理は、プリミテイブの最も左下の頂点から開始される(図1)。
    セットアップASIC32は、これが点ゼロ(Pnt0)であることを保証する。 Pnt0から、処理はプリミテイブエッジを走査し、各連続するスパンを通過する時、エッジに対する上および下のY座標を計算する。 Y座標は、エッジに対する傾斜値およびスパンと交差するエッジの長さを使用して計算される。 各スパンに対して2対の座標が計算されるが、その1対は上位のエッジであり、もう1対は下位のエッジである。 Y座標は、ダイサに渡され、ピクセル領域を計算し、ピクセル走査線に対する値X、Y、Z、R、G、B、T、UおよびVを補間する。

    【0133】ASIC34のダイサは、下位エッジのY
    座標ペアを使用して、処理すべきスパンの第1のピクセルの初期Y座標を決定する。 ダイサは、Y座標が上のY
    座標対によって交差されるまで、各新ピクセル座標を処理して、Y座標をインクリメントする。 演算モードによって、ダイサは、各処理されたピクセルに対するR、
    G、B、T、U、V、Zと領域Aの値を生成しなければならないこともある。 ピクセル各々に対する値は、スパンに対してASIC34中のスライサから受信される値と、Y軸における単位変化に対する各軸の差異とに基づく。 各プリミテイブに対するY軸、最小値Zおよび最大値Zにおける単位変化当たりの差異は、その内部論理初期化フェーズ中、スライサから受信される。 各スライサ/ダイサASIC34は、毎秒百万個のポリゴンを処理し、各ピクセルに対するX、Y、R、G、B、Zおよび領域(A)を生成する。 ブレンダASIC 図12A−図12Cを参照して、ブレンダASIC36
    は、ピクセルを処理してフレームバッファ38に格納するために、ピクセルおよびコマンドを垂直バスを介して受信する。 データの2つのソースは、垂直バスを介して、ブレンダ36経由でフレームバッファ38にアクセスする。 スライサ/ダイサASIC34は、ピクセルおよびコマンドの1ソースである。 Iバスインタフェースは、第2のソースである。 Iバスは、ブレンダ36を介して、フレームバッファ38からピクセルのライト/リードを行う。 ブレンダ36のコマンドレジスタとコントロールレジスタはまた、Iバス I/Fによってリードされる。 各ブレンダ36は、フレームバッファメモリの2つのバンクを制御するよう設計されている。 IGB30上のフレームバッファ38は、20個のメモリバンクを有しているので、10個のブレンダが必要となる。 ブレンダは、ピクセルの最終的分配を、フレームバッファ38
    に行う。 ブレンダASIC36で実行された機能は、エイリアス除去、パタンマッピング、線形成、IGB同期化、領域フィル、隠れ面消去、Zソーテイング、深度キューイング、かぶりと霞み、ピクセルのレフレッシュを含む。

    【0134】エイリアス除去が実行可能な場合、ブレンダは、6ビットのα(A)値をデータR、G、BおよびZとともに、各ピクセル毎にダイサから受信する。 αA
    値は、ポリゴンがピクセル通ってスライスするように生成する領域カバレージの割合を示す。 ブレンダは、領域値を使用し、すでにフレームバッファ内にあるピクセル色またはバックグラウンド色のパーセンテージに対して、ピクセル色のパーセンテージをブレンドする支援を行う。

    【0135】パタンが使用可能な場合、ブレンダは、1
    6ビットのUと16ビットのV値をR、G、B、AおよびZデータと共に、各ピクセルデータごとにダイサから受取る。 以前にブレンダ内にロードされ、ミップマップ(MIPMAP)三角形UVデータのサイズログは、ブレンダによって使用され、8パタンまでのピクセルをインデックスする。 これらのパタンは、フレームバッファのオフスクリーンメモリに配置されるパタンマップテーブル内にある。 UVおよびログの各値を使用して、インデックスされた複数のピクセルを双一次的に補間して、1つのピクセルを生成する。 それから、もし、エイリアス除去処理がイネーブルなら、その1ピクセルは、そのα値に基づきブレンディングされ、フレームバッファに格納できる。

    【0136】ライン形成機能は、ブレンダ上のパタンマッピング能力を利用する。 ドット−ダッシュパタンは、
    パタンマップテーブルに格納される。 この機能は、各ピクセルと共にU値入力が必要なので、インデックス付けを1次元にする。

    【0137】ブレンダは、本実施例のレンダリングパイプライン中の最後の部分であり、グラフィックスパイプラインをIバスI/Fと同期化する。 レンダリングパイプラインASICの各々は、シンク(SYNC)コマンドをパイプライン経由で受取る。 受取りと同時に、セットアップASICおよびスライサ/ダイサASICは、たまに、パイプライン経由でコマンドをパスして処理を継続する。 スライサ/ダイサは、ブレンダの"BLENDE
    R BSY * "信号を受信した後にのみ、処理を中断する。スライサ/ダイサがバックアップする場合、レデイ(READY)信号を除去し、セットアップを停止する。

    【0138】異なる2つのタイプのシンク(sync)
    コマンド、"シンクオンリー(synconly)"と、"シンク
    ウイズ インタラプト(sync with interrupt)"とがある。"シンクオンリー(sync only)"コマンドは、ブレンダに、シンク(sync)コマンドに先行する全てのピクセルとコマンドに関してを完了させ、シンクダン(SYNC_DONE * )を生成させる。IGB論理は、
    すべてのブレンダが同期されているかを検出する際、ピックヒット(pick hit)クラスをチェックする。 どのブレンダからもピックヒットが起こっていない場合は、グルー(glue)論理は、50ns間ブレンダリクエスト(BLENDER REQUEST)信号をロウ(lo
    w)にストローブすることにより、自動的にブレンダを再始動させる。 その後ブレンダはパイプライン処理に戻る。

    【0139】"シンク ウイズ インタラプト(sync with
    interrupt)"コマンドは、ブレンダに、疑のピックヒット(pick hit)を発生させる。すべてのブレンダが同期されている場合には、IGB論理は、すべてのPIC
    K_HIT *信号のクラスを調べる。 PICK_HIT *が検出された場合(即ち、それらのすべてが、このコマンドに従う場合)、IGBは、TE42に対しIバス割り込み(Ibus interrupt)を起こす。 I/OマップトポートBLENDER REQUEST *がライトされるまで、その割り込み要求は続く。 BLENDER REQ
    UEST *は、ブレンダを"レンダリング中断(renderin
    g-suspended)"クラスにしておく。このクラスの間は、
    Iバス(IBus)は、ブレンダレジスタまたはフレームバッファにアクセスできる。 要求中のIバスマスタが、ブレンダ転送を完了させる場合には、Iバスが、IBLO
    CKOUT *およびBLENDER REQUESTを除去し、レンダリング処理を再開する。

    【0140】Iバス転送の初期化には、複数のブレンダレジスタは、それらの元々のレンダリング値から修正される。 どのレジスタおよびいくつのレジスタが、元々のクラスから変わっているかは、Iバスが何の機能を実行するかによる。 Iバスのトランザクションが完了し、I
    BLOCKOUT *が解除された後、ブレンダは、パイプラインコマンド処理を再開する。 最初のすこしのコマンドは、以前のブレンダのレンダリングクラスを再度初期化するのに必要なブレンダレジスタロードである。 シンク(SYNC)コマンドが、そのパイプラインは既知のクラスにあることを確実にしても、ブレンダサイクルを要求することは必要とされない。 IBLOCKOUT
    *信号のみを送出することによりブレンダは停止し、I
    バスをアクセスすることが許可される。

    【0141】高速領域フィル機能に対して、ブレンダは、VRAMフレームバッファ38にページブロックライトサイクルを生成することによって、長方形領域を迅速にフィルすることができる。 長方形領域は、Xデバイス座標においては20で、またYデバイス座標においては、4で割り切れなければならない。 また、その長方形の左上隅は、5×4の偶数境界から始まる必要がある。
    もし、その長方形がこの規則を満たしていない場合には、正規のポリゴンとしてフィルされる必要がある。 ページブロックライトサイクル中は、ウインドウクリッピング機能は使用できない。

    【0142】ブレンダは、すべての3Dデータに対する24ビットのZデータを受け取り、Zバッファ内の目的のピクセルのZデータをリードし、その両者の値を比較する。 Z深度について、入力ピクセル値が目的ピクセル値より小さい場合は、新ピクセルが旧ピクセルに置き変わる。 ブレンダ上でのエイリアス除去処理が可能な場合、Zソーティング機能は自動的に完了する。 エイリアス除去処理は、Z深度に基づいてピクセルリンク(PixL
    inks)を生成するために、ピクセルリンク(PixLink)
    構築動作が、Zソーティング処理にとって代わる。

    【0143】ブレンダ36とIバス64間でデータ転送を迅速に行うするには、DMAエンジンが使用される。
    エンジンの心臓部は、Lattice ISPLSSI-1032 PALである。 付加的な外部レジスタおよびカウンタが必要とされる。 ´1032デバイスは、ソフトウエアポートを通してロード可能であるが、ボード上に組み込まれる前に、
    予めプログラムされている。 そのソフトウェアのプログラム可能性は、フィールドアップグレードを許容する。

    【0144】パタンは、オフスクリーンメモリに格納される。 ブレンダによる高速アクセスを行うには、各ブレンダが、そのパタンのコピーを持つ必要がある。 パタンは、2つのフォーマット、即ち、レギュラー(regula
    r)とミップマップ(mipmap)で格納される。 開始アドレス、Xサイズ、Yサイズおよびフォーマットを指定することは、完全にパタンを記述することになる。 セットアップチップは、各頂点に対するU、Vパタン座標のセットを保持する。 それらは、ポリゴンの各ピクセルに対して線形補間される。 パタン配列に格納された値は、R
    GBAの4つのグループである。 そのパタン配列からの各要素は、対応する入力ピクセル値と乗算される。 R=R入力 * Rパタン G=G入力 * Gパタン B=B入力 * Bパタン A=A入力 * Aパタン それから、結果は、シフト操作によって正規化される。
    パタンが適用される方法として、異なる3種の方法がある。 RGB色、A領域、またはその両方が使用可能である。

    【0145】次に、図12のブレンダASICブロック図に関して説明する。 ブレンダが、スライサを中断させた時、垂直バス(Vertical Bus)やスライサ垂直バスインターフェイス(Slicer Vertical bus interface)の最後のパイプステージに残されている最後の数ワードを吸収するには、その入力FIFOは、十分な深度である。

    【0146】ページ検索論理は、パイプラインを下るピクセルストリームで必要とされるのど同様に、遠い先をチェックして、また、それら背中合わせのピクセルの幾つが、同じページに入るか決定する。 このことによって、可能な限り長いページサイクル中で、メモリタイミングが発生することを許容される。 フレームバッファ3
    8は、すべてのベンチマーク三角形がメモリバンクの同一ページに残るように設計されている。 一旦、ページ検索論理が、ピクセルのストリームがページに適合していると決定すると、そのピクセルのストリームだけが次の下位のパイプラインステージに落ちて、新たなメモリサイクルを開始することが許される。

    【0147】バンク1およびバンク2のアドレスコントローラは同一のものである。 これらのバンクは、それぞれのメモリバンクに対する行アドレスおよび列アドレスの複数のソースを生成する。 スクリーンリフレッシュカウンタは、9ビットラインカウンタであり、ステレオに対して1024× 512本の解像度をサポートする。 リンクポインタは、16ビットカウンタであり、ピクスリンク(Pixlink)アドレスをエイリアス除去モード中に生成する。 アドレスバッファ選択レジスタは、IGBコマンドによってロードされ、単にサブメモリバンクポインタとして使用される。 垂直バス上のYフィールドはわずか8ビットであり、バンク全体を直接アドレスするには不十分であるために、これが必要とされる。

    【0148】RAM制御機能は、プログラマブルステートマシンであり、VRAMおよびDRAMに必要なタイミングすべてを生成する。 異なるサイクルタイプを必要とする異なる操作には、ページリードサイクル、ページライトサイクル、ページリード−モデファイ−ライトサイクル、リード転送サイクル、ライト転送サイクル、専用VRAMレジスタロードサイクル、CAS-ビフォア-
    RASEサイクル、ページブロックライトサイクルが含まれる。

    【0149】RGBAUVブレンダブロックは、多重レベルデータフローパイプラインであり、乗算器、算術演算ユニット、シフト、レジスタ、マルチプレクサを含む。 サポートされる6つの基本機能は、αブレンド、非αブレンド、Xピクセル操作、オーバーフローおよびアンダーフロー保護、テクスチャテクセル(texture texe
    ls)の双線形補間、霧と霞みと深度のキューイングである。 リンクバッファは、32ワード×66ビットRAM
    から構成される。 専用アドレスジェネレータおよびコントローラは、バッファをサポートし、このバッファは、
    ピクスリンクスタック(pixlink stack)に使用され、
    PixBLT中に、中間バッファとして使用される。

    【0150】比較論理ブロックは、RGBAUVブレンダからの結果をテストするための、24ビットのマグニチュード比較器から8個の大型比較器までの範囲の比較器を含む。 12ビットの比較器は、ピック論理モード(Pick logic mode)に対するXY座標をテキスト化する。

    【0151】α非ブレンド処理がときどき必要となる時、αルックアップテーブルが、エイリアス除去処理中に使用される。 この非ブレンドは、8を6で割る関数である。 このルックアップテーブルは、αの逆数である。
    インデックスは9ビットであり、出力ワードは9ビットである。 ミクサASIC 1つの共通部分が複数の構成をサポートするため、ミクサASIC40は、さまざまな機能をサポートする。 I
    GB30は、2つの主要な構成、即ち、単一IGB構成と二重IGB構成を有する。 ミクサは次の機能、即ち、
    ビデオタイミング生成、ハードウェアカーソル(カーソルRAM、十字および長方形ウィンドウ)、フレームバッファブリンク論理、2つのバッファ選択論理、そして、二重IGBモードで、IGBフレームバッファを交互に選択するMUX論理を備える。

    【0152】ミクサは、3つの異なるカーソル機能をサポートとする。 これらは、一色の64×64のカーソルRAM、フル-スクリーン十字カーソル、ウィンドウカーソルである。 カーソルRAMと十字カーソルは、Broo
    ktree(ブルックトリー社製) BT431のオペレーションとコンパチブルである。 ウィンドウカーソル機能は、十字カーソルと同様の方法で制御される。 ミクサが、他のセットのミクサからのピクセルを受取るモードで使用された場合、マスタIGBの第2ステージのミクサは、すべてのカーソルデータを生成する。

    【0153】カーソル分裂を避けるために、ミクサは、
    全てのカーソル位置レジスタにシャドーレジスタを持ち、全ての位置レジスタが、アップデートが可能になる前に、ロードされる必要がある。 その位置に影響を与える全レジスタがロードされた後で、かつ、そのミクサが垂直ブランク期間にある時、そのカーソル位置は、スクリーン上で更新される。

    【0154】ローデイングの順番は、Xがロウ、Xがハイ、Yがロウ、次に、Yがハイである。 これによって、
    ソフトウェアがいつでもその位置をアップデートし、ハードウェアが、垂直ブランクまでシャドーレジスタに新しい値を保持することを許す。 もし、すでに垂直ブランククラスにあり、すべてのレジスタがロードされているならば、その位置は直ちに更新される。

    【0155】各ミクサは、1ビット深度の64×64のカーソルRAMを備える。 3つのミクサが24ビットシステムに使用された場合、7つのカーソル色が可能となる。

    【0156】512バイトRAMには、自動インクリメントアドレスポインタによってアドレスされ、一度に8
    ビットロードされる。 カーソルRAMのアドレス0は、
    カーソルイメージの左上を示し、X方向に交差してアドレスステップをインクリメントする。 8箇所のRAM位置は、各リードまたはライトサイクルごとにアクセスされる。 データビット7は、最下位のX位置であるカーソルビットに対応する。 すなわち、これは、データビット0が表示されるところの左画面に表示される。

    【0157】64×64カーソルは、X、Yカーソル位置レジスタ内にロードされた値付近の33、31のオフセットの位置にその中心を置く。 カーソル論理全体を制御するクロックは、LD_CLK(RAMDACに対してドライブされるクロック)である。 3つのカーソルすべてが、非LD_CLK境界上の画面上に位置決めされるので、ミクサ内にバッファリング論理とミキシング論理がなければならず、これによって、カーソルRAM、
    十字カーソルおよびウィンドウカーソルを画面上のどこへでも配置することができる。

    【0158】十字カーソルは、1、3または5つのピクセル幅の水平垂直十字カーソルを生成する。 十字カーソルのサイズは、CH_WIDTHレジスタとCH_HEI
    GHTレジスタによって指定される十字ウィンドウの境界に限定される。 カーソル位置レジスタは十字の中心を決定するので、ソフトウェアは中心を十字ウィンドウ内に存在するよう指定しなければならない。 X CHOP
    レジスタとY CHOPレジスタは、十字クリッピングウィンドウを位置決めする。 十字自体は、カーソルRA
    Mの中心に置かれ、X CUR_POSレジスタとY_C
    UR POSレジスタによって位置決めされる。 十字は、CURSOR_CNTLレジスタによって、使用可能または使用不可能にされる。 十字ウィンドウカーソルは、同一の色である。

    【0159】ウィンドウカーソルは、長方形ボックスが生成されることを除き、十字カーソルと同様の操作をする。 セグメントの幅は、1、3または5個のピクセル幅であり、ウィンドウサイズは、RW_WIDTHレジスタおよびRW_HEIGTHレジスタによって決定される。 ウィンドウカーソルセグメントは、幅と高さを決定する値に関して、中心に置かれる。 ウインドウカーソルの位置決めは、十字カーソルを中心に置くのと同じ値によって中心に置かれ、また、CURSOR_-CNTLレジスタを通して実行可能/不可能に設定される。 ウィンドウカーソルは、十字カーソルと同色である。

    【0160】表示される3つカーソルのどの組合わせも可能である。 カーソル以上のものが表示された場合には、ユーザは、どのようにカーソルの交差または重複が処理されるべきかを決定することができる。 カーソルR
    AMと、十字カーソルまたは十字ウィンドウのいずれかが使用可能な時、CURSOR_CNTLレジスタの優先ビットは、カーソルRAMと十字/ウィンドウカーソルのいずれが表示されるかを決定する。

    【0161】ミクサのロジックは、ピクセルのブリンクやハードウェアカーソルをブリンクさせることを許容する。 そのブリンク機能は、フレームバッファから駆動される1つのブリンクビットに基づいたピクセル単位ベースで働く。 ブリンクのレートとデューティサイクルは、
    BRINK_RATE_ONレジスタおよびBLINK_
    RATE_OFFレジスタによって決定される。 B_CO
    UNT_ONカウンタおよびB_CONUT_OFFカウンタは、8でプリスケールされた垂直シンク(vertical
    sync)によってインクリメントされる。 この構成では、1280×1024 74Hzのビデオタイミングを使用する場合、ブリンクレートのオンとオフ時間を、
    0.1秒から5秒まで0.1秒単位で調整することができる。 3つのミクサ全体に対するブリンクレートカウンタは、RESET時に同期化され、また、マスタビデオタイミングジェネレータからドライブされるVSYNC信号に基づき、インクリメントする。 BT459とは異なり、ピクセルブリンクマスク当り8ビットを指定することは不可能である。 単一ビットの使用可/不可ブリンクが、供給されるすべてである。 ブリンク色操作のモードは1つしかない。 ブリンク可能なピクセルは、イントリンシックフレームバッファ値からBLINK_CLRレジスタに指定された色までブリンクする。

    【0162】3つのミクサは、8ビットの色を供給する各ミクサに対して、単一ピクセルの全体の幅を定義することが求められるので、フル24ビットのブリンク色の定義が可能である。

    【0163】フレームバッファデータブリンクに加えて、カーソルをブリンクさせることもできる。 CURS
    OL_CNTLレジスタ中のCUR_BLINKビットをセットすることによって、表示されるすべてのカーソルは、ブリンクレジスタに指定されたレートでブリンクする。 ユーザに対して柔軟性を付加するために、カーソルがブリンクする方法として、プログラムを組み込む方法がある。 カーソルは、フレームバッファデータに同期したブリンクか、180゜位相を異にしたブリンクを行うことができる。 これは、CURSOL_CNTLレジスタによって制御される。

    【0164】カーソルに対応するブリンク色はなく、R
    AMDACのオーバーレイルックアップ内にロードされた色か、または透明かが選択される。

    【0165】ミクサは、必要なビデオタイミングすべてを生成する。 ビデオタイミングに柔軟性を附与するために、そのビデオタイミングは、TI 34020 の後にモデル化された複数の異なるレジスタにロードされる値によって制御される。 その解像度は、ステレオモードで、60
    Hzと74Hzで1280x1024、また、120H
    zで640x512である。 すべてのレジスタは、リード/ライトアクセスできるが、VCOUNTカウンタは、リードアクセスしかしない。 VCOUNTのリードアクセスを可能にすることによって、通常、垂直同期(sync)に依存する機能に対する処理遅延時間を減少させる。 ビデオタイミングは、フリーランニング5X
    ピクセルクロックから派生生成される。 MODE_CN
    TLレジスタのMASTER_EN構成ビットは、どのミクサがマスタビデオタイミングジェネレータかを決定する。 スレーブミクサは、同期(sync)信号をマスタから入力し、そのビデオタイミングと同期化させる。 フレームバッファ フレームバッファ38は、メモリプレーンのセットである。 バッファ内のデータのほとんどは、表示される必要はない。 このため、フレームバッファ38は、2タイプのメモリ要素、即ち、256k×8 70nsの専用機能VRAMと512k×8 70nsのDRAMとを含む。
    フレームバッファ38は、図11Bに示すように、4つの基本セクションに分けられる。 すなわち、表示バッファAと、表示バッファBと、表示バッファAとBに対する視覚化できない情報である。 そのメモリは、5(X方向)×4(Y方向)の平面配列である。 全ての20個のバンクが、互いに分離されているので、20段並列操作が可能である。

    【0166】パターンマップバッファは同じもの10個から構成されているので、図11Bに示す全メモリは、
    DRAMメモリの41.9メガバイトのすべてを含んではいない。 10個のパターンマップの各々は、2つに分けられ、各ブレンダ36に接続される2つのメモリブロック間で分割される。 図11Bに示すVRAMブロックは、正確にVRAMメモリの全20.9Mバイトを示す。

    【0167】表示フレームバッファは、64ビットのフレームバッファワードの上位32ビットである。 各ワードは、各8ビットのR、GおよびBと、1ビットのダブルバッファ選択ビット(DBS)と、1ビットのブリンクビットと、1ビットのウィンドウクリップビット(W
    CB)と、1ビットの消去クラスビットと(ES)と、
    1つのリンクポインタバリッド(LPV)と、1ビットのIDビットと、3ビットの予約ビットとを含む。

    【0168】作業フレームバッファは、表示不要の情報を含む。 この情報は、エイリアス除去され、Zバッファリングされ、ブレンドされたピクセルを生成する際に使用される。 各ワードは、7ビットのα(A)値と、24
    ビットのZ値と、16ビットのリンクポインタとを有する。 作業フレームバッファ情報の複数レベルが、エイリアス除去に使用される。 1以上のプリミテイブが、ピクセルで可視である時、個々の因子は、Z深度順に、その作業バッファの複数のレベルに格納される。

    【0169】ピクスリンク(PixLink)バッファは、2
    56×64ビットである。 次のピクスリンク(PixLin
    k)に対する次のポインタを格納するために、同一ページで隣接する2つの位置は常に相互に関連する。 ピクスリンク(PixLink)バッファは、24のRGBビットと、24のZビットと、1ビットのNLK(Next link
    on)ビットと、1ビットのOLT(Other link true)
    ビットと、8ビットのMSWリンクポインタビットと、
    8ビットのLSWリンクポインタビットと、7ビットのα(a)ビットとを有する。

    【0170】ウィンドウ境界に対するクリッピングは、
    ピクセル当り1クリップビットで達成される。 この機能が実行可能とされている場合、ブレンダは、フレームバッファの目的ピクセルについて、そのウィンドウクリップビット(WCB)がオンにセットされているかどうかをテストする。 これによって、入力するピクセルがライトされる資格が与えられる。 もし、WCBがオフ(OF
    F)なら、その入力ピクセルは直ちに廃棄される。

    【0171】ハイライトオーバライト機能においては、
    ブレンダは、すべての入力ピクセルのRGB値に、フレームバッファ内のそのピクセルの古いRGB値に加える。 オーバーフローテストは、各々が加算された後に行われ、真であれば、RGB値は最大値255,255,2
    55に設定される。

    【0172】フレームバッファ38の領域消去には、その領域のピクセルのすべての値の初期化が必要である。
    VRAM中のそれらの値は、非常に速く初期化することができる。 DRAM中の値の初期化速度は遅い。 したがって、速く消去できる単一ビットプレーンが確保される。 消去クラスビットをセットすることで、そのピクセルに対するDRAM中の値すべてが不要情報として見做され、代わりに適切な初期値が用われるべきであることを示す。

    【0173】フレームバッファ38は、Iバス64経由でTE42によって、直接リード/ライトできる。 このアクセス速度は、バーストモードでは、 128Mバイト/秒、または、32Mピクセル/秒である。 GE48
    は、パイプライン経由でフレームバッファ38に書込む。 フレームバッファ38またはブレンダレジスタがアクセスされる必要がある時、そのパイプラインは同期化される必要はないが、同期(sync)が実行されないなら、フレームバッファはレンダリングコマンドの意図と一致しないクラスになるかもしれない。 最初に、ブレンダのアービトレーションは、IBLOCKOUTポートのテスト/セットによって得られなければならない。
    次に、BLENDER REQUESTポートに"1"がライトされ、LOCKOUT信号を10個のブレンダすべてに送出する。 ブレンダは、Iバス転送の準備ができていることを示すBLNDR_DRYによって、そのL
    OCKOUTに応答する。 その同期(sync)コマンドを受信すると同時に、そのブレンダは、BLENDE
    R_BSY *をダイサに送出する。 これによって、ダイサがさらにコマンドを送出することを防止する。 LOCK
    OUTの送出によってまた、ブレンダは、BLENDE
    _ BSY *を送出することによってパイプラインを凍結させる。

    【0174】フレームバッファ38は、5つの垂直バス(各バス上には、2つのブレンダがある)に分けられるので、3ビットのX START REGISTERには、バスを選択するためにロードされる必要がある。 ロードされた値は、そのXアドレスのモジュール5を示す。 VERTBUS REGISTERを"0"値にセットし、また、DMA制御レジスタのブロードキャストビットをセットすることによって、10個のブレンダすべてを同報通信することができる。 レンダリングパイプラインの操作 レンダリング(スライサ/ダイサ)ASIC操作 スライサ/ダイサチップは、セットアップチップより供給された情報を基にピクセル値を計算する。 これは、点の頂点および線セグメント、線、三角形に関する情報を使用し、これらのプリミテイブの1つによって接触する各ピクセルに対応する値を計算する。 その結果としてのピクセルは、垂直バス上の1対のブレンダチップに利用される。

    【0175】スライサ/ダイサは、3つのプリミテイブすなわち、点、線および三角形を処理する。 三角形は、
    セットアップASICから得られる3組の頂点情報と3
    組のセグメント情報によって記述される。 点および線は、セットアップASICから得られる4組の頂点情報によって記述される。 線にはさらに4組の頂点情報画必要である。

    【0176】スライサ/ダイサは、主に、エイリアス除去されたポリゴンをレンダリングするが、複数のエイリアス除去以外の関数(IGBコマンド)も有する。 これらの関数は、フィル―ネクスト―ピクセル(fill-next-
    pixel)、フィル―長方形(fill-rectangle)、フィル―水平―スパン―ウイズ―スチプル(fill-horizontal-
    span-with-stipple)であり、Xウィンドウのレンダリングとテキスト操作をサポートする。 さらに、ポリゴンは、必要に応じて、エイリアス除去と共に、レンダリングすることができる。 ポリゴンは、パタン情報を用いてもレンダリングすることができる。

    【0177】スライサ/ダイサASICは、主要な2個の機能回路、すなわち、入力ユニット68と、ピクセル生成ユニット70とを含む。 入力ユニット68は、スライサ/ダイサのフロントエンドである。 これは、セットアップASICによって供給された情報を解釈し、セットアップASICでは実行されない付加的なセットアップ計算を実行し、残りのASICで消費されるのに適切なフォーマットで情報を生成する。 チップの残りは、ピクセルジェネレータであり、抽象幾何オブジェクトをピクセルに変換することからの命名である。

    【0178】スライサ/ダイサASICは、一対のセットアップASICからデータを受信し、一対のブレンダASICにデータを供給する。 セットアップASICとスライサ/ダイサASICとの間には43ビットバスが2つある。 これらのデータバスは、SETUP_VAL
    信号を伴い、両データバス上の有効データの存在を示す。 スライサ/ダイサは、SLICER_BUSY信号をセットアップASICに供給し、データフローを調整する。

    【0179】スライサ/ダイサASICからブレンダA
    SICに至るデータバスは3つあり、共通して垂直バスと名付けられている。 スライサ/ダイサASICは、D
    ICER_VAL信号を供給し、出力データバス上の有効データの存在を示す。 ブレンダビジー信号入力には、
    BLNDR1_BUSYとBLNDR_BUSY2の2つがある。 これらの信号は、ブレンダASIC内へのデータフローを調整する。

    【0180】スライサ/ダイサASICは、複数の軸の縦座標値を計算する。 これらの軸は以下の通りである。 X、Y − プリミテイブによってカバーされるピクセルのXおよびY座標。

    【0181】Z − フロントクリップ面からのピクセルまでの距離。

    【0182】U、V − パタンによってカバーされるピクセルのパタン座標。

    【0183】R、G、B− ピクセルの色値。

    【0184】A − プリミテイブ(PIXLI
    NK)の一部によってカバーされる1ピクセルの領域アルファ T − 透明度、表示された場合に浮出る下部の色の百分率。 ポリゴンプリミテイブに関連するパラメータを参照するために、ここでは簡潔な名称を使用する。 この名称は、
    VHDL方式のレコード形式内に存在する。 図1は、任意の三角形の頂点およびセグメントに対する名称を示す。 頂点には、"P"とそれに続く数字で参照符号を付す。 最も左側の頂点は、常にP0である。 図示の如く、
    ポリゴンの反時計回りに番号が増加されている。 セグメントには、"P"とそれに続くセグメントが及ぶ端点の数字で参照符号を付す。 最左端点は、最初に指定される。
    セグメントの名称は、プリミテイブによって様々に異なるので(すなわち、三角形に対するセグメント2は、P
    12とP21のいずれにもなり得る)、"S"とそれに続く数字で呼ばれる。 S0は、常にP0に関する最初の反時計回りのセグメントである。

    【0185】傾斜などのセグメント量は、常にセグメントの最左端に関して指定される。 頂点およびセグメントの量は、VHDLレコード形式またはCレコード形式として処理される。 これらの構造に関連する値は、レコードのフィールドとして参照される。 このため、セグメントP01の傾斜は、P01.,Sとなり、逆傾斜は、P0
    1.I.となる。 このフォーマットを使用するその他のデータとしては、基本色値にたいする"B"と、デルタ-X
    (Delta-X)色傾斜に対する"DX"と、デルタ-Y(Delt
    aY)色傾斜に対する"DY"である。 例えば、"DY.T"
    は、T軸のデルタ-Y(Delta-Y)値を表している。

    【0186】基本コマンドには、"ドローポイント(d
    raw point)"と、"ドロー三角形(draw
    triangle)"と、"ドロー線(drawlin
    e)"の3つがある。各基本コマンドに対するデータは、プリミテイブの種類に基づく所定のシーケンスで、
    ストローブされて、スライサ/ダイサへ入力される。

    【0187】プリミテイブ頂点は、セットアップチップによってソートされ、最左端頂点は常に頂点0となる。
    残りの頂点は、頂点0から反時計回りに指定される。 傾斜および逆傾斜もセットアップチップによってソートされる。 傾斜0は、ポリゴンのセグメント0に対応する。
    セグメント0は、頂点0をその左端点に有する。 残りのセグメントおよび逆傾斜は、セグメント0から反時計回りに指定される。

    【0188】点は、ダイヤモンド形のポリゴンとしてレンダリングされる。 この点は、4頂点と単一の基本色値とを有する。 透明も可能である場合は、基本の透明値も有する。 点コマンドには、2つのバージョンがある。 すなわち、透明の表現が可能なコマンドと、透明を表現できないコマンドとがある。 透明を扱わない時、そのコマンドの実行には、6サイクル必要である。 透明を扱う時には、7サイクル必要である。

    【0189】三角形は、3頂点と、3傾斜と、3逆傾斜とによって指定される。 さらに、X座標またはY座標の値の変化率を記述する基本値とデルタ値は、Z軸、R
    軸、G軸およびB軸に対して指定される。 透明を扱う場合には、基本値とデルタも、T軸に対して指定される。
    パタンを扱う場合には、基本値およびデルタが、U軸およびV軸に対しても同様に指定される。 三角形コマンドには、4つのバージョンがある。 そのコマンドは、透明とパタンのどの組合わせかによって変化する。

    【0190】線は、4つの頂点、4つの斜度、4つの逆斜度によって指定される。 さらに、X座標値とY座標値の変化率を記述する基本値とデルタ値は、Z軸、R軸、
    G軸、B軸に対して指定される。 もし、透明を扱う場合は、基本値とデルタが、U軸とV軸に対して指定される。 その線コマンドには、4つのバージョンがある。 そのコマンドは、透明とパタンの組み合わせに依存して変化する。

    【0191】IGBコマンドには、"フィル-長方形(f
    ill−rectangle)"と、"フィル-ネクスト-
    ピクセル(fill−next−pixel)"と、"フィル-スパン-ウイズ-スチプル(fill−span−
    with−stipple)"の3つがある。これらは、エイリアス除去をしないレンダリングコマンドであり、単一色値を有するピクセルまたはピクセルグループをレンダリングする。各IGBコマンドに対するデータは、そのコマンドのタイプによって所定のシーケンスで、ストローブされて、スライサ/ダイサに入力する。
    フィル-三角形(fill−rectangle)コマンドは、スライサ/ダイサに一セットのピクセルを生成させ、一定色の長方形領域をカバーさせる。 このコマンドは、色値と、左下コーナーと右上コーナーの座標とを指定する。 基本のZ値、および基本値がまた、指定される。

    【0192】フィル-ネクスト-ピクセル(fill−n
    ext−pixel)コマンドは、前にレンダリングしたピクセルのX座標をインクリメントし、次のピクセルを、指定された色でレンダリングする。 このコマンドの最初の発生は、一領域に関するフィル-長方形(fil
    l−rectangle)コマンドが先に実行されるべきである。

    【0193】点画(stipple)コマンドは、水平スパンにわたるピクセルを、指定された1ビット深度パタンでレンダリングする。 点画データタイプの各ビットは、個々のピクセル値を表し、最の左のピクセルから始まる。
    もし、ビットがセットされているなら、そのピクセルに対する色は、点画フォーグラウンドレジスタによって決定される。 もし、ビットがクリアされているなら、そのピクセルは、変更されないままか、あるいは、点画モードレジスタに格納された点画モードに依存する点画バックグラウンドレジスタに格納された値でレンダリングされる。

    【0194】スライサ/ダイサチップは、ソフトウェアによってロード可能な9個の内部レジスタを備える。 これらは、さまざまな関数を制御し、チップが使用する重要なパラメータを保持する。

    【0195】最初の4つのレジスタは、点画のためのパラメータ用である。 点画長レジスタは、5ビット幅である。 点画長と、点画コマンドで扱う点画データタイプから、ビット数が決められる。 その値の範囲は0〜31であり、また、それぞれは、1〜32までの点画長を示す。 点画値0を用いて、点画タイプは、点画バックグラウンド色でピクセルをレンダリングすべきか、あるいは、全くレンダリングしないかを示す。 点画タイプが0
    の時、点画値が0であれば、ピクセルはレンダリングされない。 点画タイプが1の時、点画バックグラウンド色を用いて、ピクセルはレンダリングされる。 点画フォアグラウンドレジスタと、点画バックグラウンドレジスタは、24ビットのRGB色値を保持し、点画をレンダリングする場合に、それらを使用する。

    【0196】モードレジスタの3ビット各々は、スライサ/ダイサ機能のために使用可能なモードである。 このモードでは、エイリアス除去、パタン、透明を扱う。

    【0197】アルファラウンドアップレジスタは、アルファ(A)乗算後に、丸め処理を行うために用われる大きな小数を格納する8ビットワードである。 幅レジスタおよび高さレジスタは、レンダリングウィンドウの右上座標を保持する。 この長方形領域外のすべての値は、クリップされる。

    【0198】ブレンダイネーブルレジスタは、適切なビットを設定することによって、スライサ/ダイサから、
    より下位のパイプラインコマンドを受取るように、ブレンダチップをイネーブルにすることができる。 各スパンに対して、このレジスタには別々のイネーブルビットがあるので、ブレンダチップペアは、個々にイネーブルにされることができる。

    【0199】スライサ/ダイサASIC34は、2個の主要なユニット、即ち、入力ユニット68とピクセルジェネレータユニット70に分割される。

    【0200】入力ユニット68は、複数セグメントが交差する最近隣の整数X値と整数Y値を用いて、各セグメントの第1の切片値を計算する。

    【0201】さらに、入力ユニット68は、基本色値(R、G、B、UとV)と、基本透明値(T)を調整し、また、ポリゴンの頂点を伴い供給されるそれらの値から得られる基本Z値を調整する。 入力ユニット68がこれらの基本値を調整するため、それらの値は、頂点をカバーするピクセルの重心に対する正確な値を表す。

    【0202】ピクセルジェネレータユニット70は、ポリゴンプリミテイブを一連の垂直スパンにスライスし、
    各スライスされたスパンの各ピクセルの各軸に対する値を計算する。 結果のピクセルは、ブレンダASIC36
    のペアに出力される。

    【0203】入力ユニット操作: スライサ/ダイサ入力ユニット68は、ピクセルジェネレータユニット(P
    IXGEN)70に必要な複数の重要なセットアップ計算を行う。 ポリゴンプリミテイブに対して、入力ユニット68は、面積計算のために切片値を計算し、また、補間に使用する調整された基本色値を計算する。 IGBコマンド(フィル-ネクスト-ピクセル(fill-next-pixe
    l)、フィル-長方形(fill-rectangle)、フィル-水平-
    スパン-ウイズ-スチプル(fill-horizontal-span-with-
    stipple))に対して、入力ユニット68は、同じ値を供給し、ピクセルジェネレータに正確な値を出力させる。

    【0204】本実施例のレンダリングエンジンの目的の1つは、40クロックでカタログポリゴンの処理を完了することにある。 入力ユニット68は、単一ステートマシンでの集中制御によって、これらの要求を満たしている。 このステートマシンは、非常に大きいことは当然である。 ステートマシンは、一般に、一度に一つの作業しか行わない(例えば、レジスタへのロード、値の計算等)。 これは、同時に所望の操作に影響するデータパスにおけるすべてのステージをセットアップするのに必要である。 もし、そのデータパスがパイプライン化されていないなら、これは問題にならない。 しかし、40Mh
    zでは、そのデータパスは、大掛かりにパイプライン化されなければならない。 このため、与えられた計算には、多くのサイクルがかかり、単一操作の必要条件と矛盾する。

    【0205】本発明者は、パイプライン制御の概念を導入することによって一度に一つの作業を行う制限を緩和せずに、この問題を解決した。 図13は、その最も単純な形態を示す。 基本的には、データパス制御信号は、データと共にパイプラインで供給され、ステートマシンは、特定のデータ値、または同時に計算に関する制御信号をすべてを生成する。 データパイプラインと制御パイプラインとを整合させることによって、データパスは全くパイプライン化されていないように形成することができる。 このため、ステートマシン内で一度に一作業しか行わないとの制限を性能に影響させずに適用することができる。

    【0206】本文に使用される表記上の取決めは、データ制御信号に対してアルファベットのポストスクリプトを、データパス制御信号に付記することであり、適用されるパイプライン方式のクラス数を示す。 接尾字Aは、
    パイプライン方式の1ステージを、接尾字Bは2ステージを、接尾字Cは3ステージを示し、以後も同様である。

    【0207】接尾字なしは、パイプラインなしを意味する。 この表記法は、図13〜図14に示した。

    【0208】制御パイプライン方式のさらに完全な例は、図14に示され、データのパイプラインステージ数は一定ではない。 図13では、データ入力およびデータ出力間のどのパスも、2つのレジスタを通過する。 図1
    4では、パスのうち1つだけが、2つのレジスタを通過する。 計算に依存して、データパスの異なる部分は、異なる時間に用いられることができる。 このため、データパスの与えられた要素(YMUXなど)は、その計算に依存した異なる時間に制御される必要があるかもしれない。 図14では、データがXMUXからなのか、右端の入力レジスタからなのかに依存して、YMUXは1サイクル後または2サイクル後に制御を必要とする。 YMU
    Xの選択デフォルト(インアクテイブ)値を慎重に選択すれば、この単純な例における問題は一掃されるが、一般的に正しくはない。

    【0209】図14に示すように、本実施例のパイプライン方式による解決方法では、ステートマシンが、異なるステージの接尾字を有する同一制御信号の複数のバージョンを生成することを許す。 このことで、ステートマシンが異なるアイテムでその要素を制御することによって、その計算に依存する異なる時間に使用されるデータパス要素の問題解決する。 この制御パイプライン論理は、要素を実際に制御するために、信号の適切な遅延バージョンを組合わせる。 図14の例では、この組合わせ機能は、ORゲートを用いて達成される。 ここで、OR
    ゲートは、一般的な解決方法ではないことに留意されたい。 使用すべき適切なゲートは、ステートマシンによってその信号に割当てられたデフォルト(インアクテイブ)値の機能を持つ。 もし、デフォルト(インアクテイブ)値がゼロである場合、図14からわかるように、O
    Rゲートは、複数の信号を効果的に合成する。 しかしながら、デフォルト(インアクテイブ)値が1なら、AN
    Dゲートが使用される必要がある。

    【0210】異なる時間にデータパス要素を用いる他の結果の可能性としては、衝突がある。 すなわち、2つの計算が同時に同一の要素を使用することを要求する場合である。

    【0211】この問題の解決方法の1つは、ハードウェアインターロック論理である。 しかしながら、ステートマシンをそのような衝突をさけるように設計するほうが極めて簡単である。 これは、本実施例のレンダリングシステムに使用される解決方法である。 ステートマシンは集中制御されているが、いくつかの制御要素は、その関連データと共に遅延される必要がある。 ステートマシンにおいて直接これらの遅延された制御要素を取り扱うと、一時に一作業の制限が反転する。

    【0212】より良い解決方法は、データパスを伴う制御パイプライニング経由で制御を提供するステートマシンと、ステートマシンに対してスレーブとして動作する自律ユニットとしての、これらの遅延可能な機能を用いることである。 本実施例の制御アーキテクチャは、単一のステートマシンでほとんどすべての制御機能を集中化させ、1度に1作業のみを行い、入力ユニット68の残りに対応するインタフェースを有する。

    【0213】次に、ステートマシン(INSTATEおよびINNEXT)を構成するモジュールと、制御パス(INSTB、INVLDおよびINMOD)を完成する周辺制御機能について説明する。

    【0214】入力ユニットステートマシン(INSTA
    TE)はミーリーマシンであり、2ブロック、即ち、ステートレジスタと、次ステート/出力論理とを備える。
    ステートレジスタは、INSTATEブロック内で実現され、次ステート/出力論理は、INNEXTという名の分離ブロック内のINSTATE下にインプリメントされている。 この階層的分割によって、ステートマシンの合成は容易になる。

    【0215】入力ユニットステートマシン次ステート/
    出力論理(INNEXT)は、122のステートをもち、2つのホットステート(フリップフロップ)符号化を利用する。 第1のホットフリップフロップは、どのステートのクラスがアクテイブであるかを示し、もう一方のホットフリップフロップは、そのクラス内のどのステートがアクテイブであるかを示す。 これらのフリップフロップは、クラス間で共用される。 結果としてのステートベクトルは、45ビットの幅を持つ。 図15は、正確な符号化処理を示す。 VHDLのステートで使用される命名規則は、<クラス><操作>である。 このような名前が与えられているように、図15は、どの2つのフリップフロップがホットであるかを示す。 例えば、ステートマシンが、POINT_X1ステートにある時、フリップフロップ#41は、ホット(POINTクラスに対して)であり、フリップフロップ#1はホット(X1操作に対して)である。 ここで、開始ステートは1つだけであるので、STARTクラスには対応する操作がないことに留意されたい。 このため、ステートマシンがその開始クラスにいる場合、1つのフリップフロップ(#4
    4)のみがホットである。 これは、2つのホット規則に対する唯一の例外である。

    【0216】ステートマシン操作自体は、単純である。
    ステートマシンは、スライサ/ダイサ入力ユニットの他のモジュールとのみ対話し、外界とは直接対話しない。
    ステートマシンは、制御パイプラインを使用して、他のモジュールを制御する。 複数のモジュールからステータス値とデータ値を受取り、これらのデータから判断して、ステートの変化を決定する。

    【0217】ストローブジェネレータ(INSTB)
    は、ピクセルジェネレータでのラッチのローデイング制御を行う入力ユニット信号を生成する。 一般には、ラッチに対しては正確に1ストローブある。 データパス中でのパイプライン処理のため、ステートマシンは、これらのストローブを直接ドライブできない。 このため、ステートマシンは、ストローブがデータと同時間にそのラッチに到着するように、ストローブジェネレータに対して、何時どんなストローブを出すかを通知する。 標準制御パイプライン方式は、この目的のために使われる。 ストローブジェネレータは、実際には複数の制御パイプラインを持つ。

    【0218】有効ジェネレータ(INVLD)は、ピクセル生成ユニットとのハンドシェークを実行する。 入力ユニットは、全データセットのさまざまなサブセットが4つの有効信号、即ち、X0VLD、XVLD、XYV
    LD、CVLDによって何時利用できるかを示す。

    【0219】有効ジェネレータは、各有効ビットに対するカウンタを含む。 これらのカウンタは、通常0である。 ステートマシンは、N以上のサイクル後に出力されるべき有効値を必要とすると決定した場合、Nをカウンタにロードする。 カウンタは、ゼロにデクリメントし、
    有効値が出力される。

    【0220】有効値が出力された後、その対応データセットがピクセルジェネレータにストローブされるまで、
    出力され続ける。 X0VLD、XVLDおよびXYVL
    Dに対し、ピクセルジェネレータは、これがXYSTB
    によるものであることを示す。 有効ジェネレータは、ステートマシンに送り返される2つの出力を生成する。 ステートマシンは、これらの信号を使用し、ピクセルジェネレータが前の値を作業レジスタにリードする前に、新しいデータをピクセルジェネレータのラッチにライトすることを防ぐ。

    【0221】モジュールカウンタ(INMOD)は、フィル-ネクスト-ピクセル(Fill-Next-Pixel)性能を最適化するために付加されていた。 一般に、フィル-ピクセル(Fill-Pixel)(例えば、幅=高さ=1.0のフィル三角形(Fill-rectangle))の次には、多数のフィル
    -ネクスト-ピクセル(Fill-Next-Pixel)コマンドが続く。 このような各プリミテイブは、以前のものの右側に対する1スパンであり、第5のスパン毎に処理されるので、各第5のピクセルが出力される。

    【0222】モジュールカウンタは、この状態の対称性を利用する。 ピクセルジェネレータに対して、5回中4
    回は出力が不要の各フィル-ネクスト-ピクセル(Fill-N
    ext-Pixel)をパスする代わりに、モジュールカウンタは、どのピクセルが廃棄されることができるかを見失わないように監視するため、入力ユニットステートマシンは、ピクセルジェネレータの関与無しに、単純にこれらをビットバケット(bit bucket)に捨てることができる。 フィル-ネクスト-ピクセル(Fill-Next-Pixel)の大半をフィルタリングすることによって、ピクセルジェネレータは、それらと遭遇しないため性能は相当に高まる。

    【0223】入力ユニットデータパス: 次に、入力ユニットデータパスを構成するモジュールについて詳細に説明する。

    【0224】入力データパスの単純化ブロック図を、図16Bに示す。 入力FIFO(INFIFO)ユニット72は、セットアップASICと入力ユニット68間にレートバッファを備える。 INFIFO72はまた、スライサ/ダイサASIC34とセットアップASIC3
    2間に必要なハンドシェークプロトコルを実現する。

    【0225】データは、SETUPDA74とSETU
    PEDB76と呼ばれる2つの43ビットバス上のセットアップチップから受取られる。 そのデータは、SET
    UPVLDと呼ばれる有効信号によって資格が与えられる。 入力FIFO72が一杯になり始めると、ビジー信号をセットアップチップに出力する。 この信号は、SE
    TUPBSYと呼ばれる。 入力FIFOは、SETUP
    BSYを十分早い時期に出力するので、有効データが、
    FIFO72内の空間がないために失なわれるということは決してない。

    【0226】有効データは入力レジスタを通過し、8の深度のラッチベースドフォールスルーFIFO(latch
    based fall-through FIFO)を介し、出力レジスタに入る。 このため、入力FIFO72は、実際には10の深度である。

    【0227】入力FIFOのデータ出力は、IF_RE
    G_A 78とIF_REG_B 80と呼ばれる。 これらは、43ビットバスであり、SETUPDA 74とS
    ETUPDB 76とに対応する。 エンプテイ信号IF_
    REG_EMは、データに資格を与えるために供給される。 最後に、ステートマシンからの入力IF_RDは、
    入力FIFO出力レジスタから、カレントのデータをストローブする。

    【0228】フォーマッタ(INFMT)82は、データパスに入る全ての値を、類似のフォーマットの中に入れ、パスに入る値すべてに対する単一エントリポイントを提供し、もし、セグメントの逆傾斜がゼロになると、
    ステートマシンに通知する。

    【0229】下位パイプFIFO(INLP)84は、
    スライサに対して一切用いないセットアップチップから多くのコマンドを受取る。 そして、それらのコマンドは、ブレンダに向かうパイプにパスされる必要がある。
    これらのコマンドは、入力ユニットによって下位パイプFIFO内に置かれ、ピクセルジェネレータの出力ステートマシンによって適切な時間に読み出される。

    【0230】FIFO84内に置かれたデータの大半は、下位パイプデータであり、そのデータにちなんでそのユニット名が付けられている。 しかしながら、各グラフィックオブジェクトにおいて、入力ユニットステートマシンは、"ロード-スライサ(Load-Slicer)"コマンドを、そのFIFOに入力させる。 このコマンドは、実際にはブレンダに転送されない。 そして、そのコマンドは、ピクセルジェネレータ出力ステートマシンが下位パイプデータとピクセルデータとを同期化させるために使用するダミートークンとしてたまに働く。 下位パイプF
    IFOデータ入力は、入力FIFOのA出力レジスタの末尾32ビットである。 有効データは、フォールスルーFIFO(fall-through FIFO)を通過し、出力レジスタに入力する。 このため、FIFOの深度は9である。
    ピクセルジェネレータの出力ステートマシンからの入力は、FIFOの出力レジスタからのカレントのデータをストローブする。

    【0231】ソフトウェアレジスタユニット(INSR
    EGS)86は、スライサソフトウェア構成レジスタのすべてを含む。 これらのレジスタには、入力FIFO
    (INFIFO)からのデータ出力がロードされる。 3
    ポートRAM(INRAM)88は、45ビットレジスタファイルによる8ワードに、1つのライトポートと2
    つのリードポートを供給する。 ライトデータは、フォーマッタ出力(FMT)、あるいは、加算器出力(AD
    D)から来る。 ここで、フォーマッタ出力は、43ビット幅であることに留意されたい。 補正するために、筆者らは、符号ビットを2回複製し、45ビットまでその値を符号拡張する。 ここで、このユニット88は、ステートマシン制御信号の遅延バージョンをどのように組合わせるかを定義し、ある場合には、すべてのバスのビットすべてがステートマシンから出力されないことに留意されたい。

    【0232】小数数学論理(INFMATH)90において、入力データは、3ポートRAM(RAM_AD
    O)のAリードポートから入力し、0.6の2の補数として扱われる。 入力データは登録され、複数の算術関数の一つがそれに適用される。 その結果は2.6の2の補数であり、登録され、FMATH[7:0]として出力される。

    【0233】ノーマライザ(INFORM)92の入力は、フォーマッタ82の出力である。 この入力は、43
    ビットの2の補数である。 10進数の仮数点の位置はさまざまである。 また、ノーマライザに関する限りは、その位置とは無関係である。 ノーマライザは、4ビットの指数を加えることによって、43から29ビットまでの仮数部のビット数を減少させる。 ノーマライザの出力は登録される。

    【0234】乗算器(INMUL)94は、3つの入力、即ち、ノーマライザ94の仮数部出力と指数部出力(NORM[28:0]、NORM_EXP[3:
    0])、小数数学出力(FMATH[7:0])を受取る。 NORM[28:0]とNORM_EXP[3:0]
    に対する値は、2の補数計算を用いて乗算される。 37
    ビットの結果、すなわちMUL[36:0]が登録される。 乗算マクロ自体は、パイプラインレジスタを含み、
    入力から出力に至るまでの全体的遅延は2クロックである。 仮数部と指数部の同期を維持するために、乗算器ユニットは、二重にNORM_EXPを登録する。 第2のレジスタの出力は、MUL_EXP[3:0]と呼ばれる。 FMATH入力は、[2.6]の固定小数点数であるため、指数は6だけインクリメントされなければならない。 何故なら、NORMでの10進数小数点が乗算の結果シフトする場所数が6であるからである。 デノーマライザは、6ビットシフトを行う。

    【0235】デノーマライザ(INDENORM)98
    の入力は、乗算器の仮数出力および指数出力(MUL
    [36:0]およびMUL_EXP[3:0])である。
    デノーマライザは、シフト演算を実行し、その数を43
    ビットの固定仮数点フォーマットに戻す。 そのために、
    ノーマライザと乗算器のアルゴリズムがあり、そのシフトを実行する。 このことによって、10進数小数点をその元の位置に正確に戻す。 この出力は登録される。

    【0236】加算器(INADD)98は、2つの登録mux(マルチプレクサ)から入力する単なる登録加算器である。 A-muxレジスタおよびB-muxレジスタの出力は、加算器自体に供給される。 この加算器は、4
    5ビットの高速並列加算器である。 この加算器は、キャリー入力/出力を持たない。 内部はパイプライン化されていないが、レジスタが出力に置かれている。 レジスタ出力(ADD[44:0])は、ユニット出力である。

    【0237】比較器(INCMP)100は、登録出力を有する19ビットの2の補数のレスザン(less-tha
    n)比較器である。 フォーマッタ(FMT)出力の27-
    9ビットは、加算器のB-mux出力(ADD_BMU
    X)の27-9ビットと比較される。 INCMP(CM
    P)は、FMT < ADD_BMUXの場合はハイを、
    それ以外の場合はロウを出力する。 この出力は、ステートマシンによって使用され、S1. XとS2. Xとを比較し、適切な頂点の並びを決定する。

    【0238】出力MUX(INOUMUX)102は、
    複数の2−1(two-to-one)のmuxを含む。 これらのmuxは、どのデータ値がどのピクセルジェネレータに、どのバスを用いて入力されるかを選択する。 通常、
    計算値はB出力バス(LDDATAB)に置かれ、非計算値はA出力バス(LDDATAA)に置かれる。 ただし、IGBコマンド処理中は、しばしば逆の割当が必要になる。 出力Muxは、これら状態に対応する。

    【0239】次に、入力ユニットの動作を詳細に説明する。

    【0240】スライサ/ダイサ34は、セットアップA
    SIC32によって供給されるデータに対して一連の計算を行う必要があり、その後、ピクセル生成プロセスを開始することができる。 入力ユニット68はこうした計算を実行する。

    【0241】点、線または三角形を構成する各線セグメントに対し、入力ユニット68は、左端点に対するX座標値とY座標値と、右端点に対するX座標値とY座標値と、傾斜値と、逆傾斜値とを受取る。 ピクセルジェネレータユニットは、入力ユニット68が計算する必要のある各線セグメントに対して、さらに3つのデータ値を要求する。 これらの値は、次Y上のX(X-on-next
    -Y)と、次X上のY(Y-on-next-X)と、セグメント構成値である。

    【0242】図17を参照して、次Y上のX(X-on-
    next-Y)値は、セグメントがそのセグメントの左端から右に移動することで交差する第1の整数Y値での第1のX切片である。 言い替えれば、セグメントの左端点から開始して、整数のY座標値(即ち、そのY座標値は水平グリッドを交差する)を有するセグメント上の点に達するまで、セグメントに沿って移動する。 この点のX座標は、線セグメントに対する次Y上のX(X-on-
    next-Y)値として定義される。 ある特別な場合についも述べる。 左端点が、整数のY座標値を持つ時、この点は無視され、整数のY座標値を有する線セグメントに沿ったその次の点が検出される。

    【0243】任意の線セグメントに対しては、次Y上のX(X-on-next-Y)値が、左端点のX座標と、
    左端点のY座標と、逆傾斜の関数として計算される。 このことは、図17に示されている。 ここで、逆傾斜の符号によって僅かに異なる公式が適用されることに留意されたい。 また、水平線(すなわち、傾斜が0)の場合、
    次Y上のX(X-on-next-Y)値は、定義されないことにも留意されたい。 入力ユニット68は、この場合を検出しないが、代わりに、不正確な値を生成する。
    ピクセルジェネレータは、この場合はいずれにせよ、次Y上のX(X-on-next-Y)値を使用しないので、ゴミ値を生成することが許容される。

    【0244】次に、図16Bを参照して、次Y上のX
    (X-on-next-Y)値を計算する入力ユニットを通るデータパスについて説明する。

    【0245】X座標値とY座標値は、逆傾斜以前に、セットアップチップから受取られる。 入力ユニットは、3
    つの値すべてを計算に使用するので、X値とY値は、逆傾斜値くるまでどこかに格納される必要がある。 これらの値は、セットアップチップから、[13.6]の2の補数として受取られ、入力FIFO(INFIFO)を通過して、フォーマッタ(INFMT)によって、[2
    8.15]の2の補数に再フォーマットされ、[30.1
    5]の2の補数まで符号拡張され、そして、3ポートR
    AM(INRAM)にライトされる。

    【0246】その後、逆傾斜値がくる。 これは、[1
    5.15]の2の補数として受取られ、入力FIFO
    (INFIFO)を通り、フォーマッタ(INFMT)
    によって、[28.15]の2の補数に再フォーマットされ、ノーマライザ(INNORM)によって、29ビットの仮数と4ビットの指数に正規化され、そして、乗算器に入力する。 同時に、左端点に対するY座標の小数上位6ビットが3ポートRAMから読み出され、小数A
    LU(INFMATH)に入力し、ここで、次の公式が適用される。 if(I<0) f(fracy) <= −fracy; else f(fracy) <= (1−fracy); end if; ここで、fracyは小数のY座標値であり、Iは逆傾斜である。 その結果は、[2.6]の2の補数であり、
    乗算器に入力される。

    【0247】調整された小数のY座標値は、正規化された逆傾斜と乗算される。 その結果は、デノーマライザ(INDENORM)によって、[28.15]の2の補数にデノーマライズされ、加算器(INADD)に入力される。 同時に、左端点に対するX座標も、3ポートRAM(INRAM)から読み出され、加算器に入力される。 それら2つの値は合計されて、その結果である、
    次Y上のX(X-on-next-Y)値である[30.1
    5]の2の補数は、出力mux(INMUX)を通過して、計算値に対して通常使用されるBバス上に至り、そして、ピクセルジェネレータに入力する。

    【0248】次X上のY(Y-on-next-X)値は、セグメントの左端点から右に移動することでそのセグメントが交差する第1のスパン境界を有する第1のY
    切片である。 線セグメントの左端点に始まり、整数のX
    座標値(すなわち、そのX座標は垂直グリッドと交差する)を有するセグメント上の第1の点が検出される。 この点のY座標値は、線セグメントに対する、次X上のY
    (Y-on-next-X)値として定義される。

    【0249】以下に説明するように、次X上のY(Y-
    on-next-X)値計算と、次Y上のX(X-on-n
    ext-Y)値計算はとても類似している。 本質的に、
    上述したのと同じ場合もまた、ここで述べられる必要がある。 すなわち、左端点が整数のX座標値を持つ場合、
    それは無視され、また、線セグメントに沿う整数のX座標値を持つ次の点が検出される。

    【0250】任意の線セグメントに対し、次X上のY
    (Y-on-next-X)値は、左端点のX座標と、左端点のY座標と、傾斜の関数として計算される。 このことは、図18に示されている。 ここで、垂直線の場合、
    次X上のY(Y-on-next-X)値は定義されていないことに注意されたい。 入力ユニットは、この場合を検出しない代わりに、不正確な値を生成する。 ピクセルジェネレータは、ここでは、次X上のY(Y-on-ne
    xt-X)値を使用しないので、ゴミ値の生成が許容される。

    【0251】XとYとが入れ代わり、傾斜は逆傾斜に代わり、小数ALU(INFMATH)に以下の単純な公式を適用する以外は、そのデータは、次Y上のX(X-
    on-next-Y)計算と同様の方法で、入力ユニットデータパスを介してシャフルされる。 f(fracy) <= (1−fracy) ここで、fracyは、小数のY座標値である。 その他の点では同様である。

    【0252】セグメント構成値は、ステートマシンによって計算される。 データパスがレンダリングすることの唯一の支援は、フォーマッタ(INFMT)に配置される比較器によって、0の逆傾斜値を識別することと、比較器(INCMP)によって、座標値を比較することである。

    【0253】次に、セグメント構成を構築するさまざまな値について説明する。

    【0254】セグメントがオブジェクトに存在しないか、垂直であるなら、そのセグメントは無効であると定義される。 無効としての垂直セグメントの指定は、無効とされる。 なぜなら、垂直線より上の領域が、常にゼロであり、そして、その領域すべてがピクセルジェネレータが関係するためである。

    【0255】セグメントの有効性を決定するための規則は、以下のように単純である。 (1) セグメントインデックスが3であり、オブジェクトが三角形である場合、そのセグメントは無効である(三角形は、セグメントは0、1、2しか持たないため)。

    【0256】(2) セグメントが垂直なら(すなわち、フォーマッタ[INFMT]が決定したように、その逆傾斜が0である)、セグメントは無効である。

    【0257】(3) その他の場合は、セグメントは有効である。 符号ビットは、セグメントがオブジェクトの最上部を形成するか底部を形成するかを識別する。 特に、セグメントがオブジェクトの最上部を形成する場合には、ハイに設定され、それ以外はロウに設定される。
    セットアップチップによって定義された頂点順番付けルールは、このビットがどのようにセットされてるかを決定する。 4つのセグメントを有するオブジェクトに対しては、セグメント0および1は常にオブジェクトの底を形成し、セグメント2および3は常にオブジェクトの最上部を形成する。

    【0258】三角形に対しては、セグメント0は常時三角形の底部を形成し、セグメント2は常に三角形の最上部を形成するが、セグメント1はいずれにも成り得る。
    その状態を決定する最も簡単な方法は、頂点1のX座標(P0.X)を頂点2のX座標(P0.2)と比較し、
    頂点1が頂点2の左右いずれにあるかを検出することである。 セグメント1より左側にある場合は、オブジェクトの底部を形成し、それ以外は最上部を形成する。

    【0259】左の端点インデックスと右の端点インデックスは、頂点がセグメントに対して左の端点を形成するか右の端点を形成するかを識別する。 それらの符号化は、上述の番号付け規則に従う。

    【0260】セットアップチップによって定義される頂点順序付けルールは、これらフィールドがどのようにセットされるかを決定する。 入力ユニットが受取るすべての点、線または三角形に対し、基本色値は補間される各軸に対して受取られる。 ここで、色は、その広い意味での色と理解されたい。 問題は、これらの色値は、第1の入力ポリゴン頂点(すなわち、P0.X、P0.Y)に適用される正確な値に対応し、他方、ピクセルジェネレータは、第1の入力頂点を含むピクセル中心に対して、
    正確な基本色値を期待することである。 このため、入力ユニットは、その基本値を調整しなければならない。

    【0261】どの与えられた色軸(仮想的軸Cのような)に対しても、調整された基本値(AB.C)を、P
    0. XとP0. Y座標と、B. C(Cベース)値と、D
    X. C(C−X勾配)値と、DY. C(C−Y勾配)値の関数として計算することができる。 これについては、
    図19に示す。

    【0262】図16Bを参照して、P0. X座標値とP
    0. Y座標値は、セットアップチップから最初に入力される。 これらは、[13.6]の2の補数として受信され、入力FIFO72を通過し、フォーマッタ82によって、[28.15]の2の補数に再フォーマットされ、3ポートRAM(INRAM)に書込まれる。 その後、DX. C値とDY. C値が同時に受信され、入力F
    IFO72を通過する。 この時点で、データパスは一度に1つの値しか収容できないので、DX. C値とDY.
    C値は直列化されて、DX. Cが最初に、そしてDY.
    Cが1サイクル後に入る。 これらは、フォーマッタ82
    によって符号拡張され、ノーマライザ92によって正規化され、乗算器94に伝送される。 同時に、小数上位6
    ビットP9. XおよびP0. Y(この順で)を3ポートRAMから読み出し、小数ALUにパスする。 ここでは、次の公式が適用される。 f(frac) <= 0.5−frac; ここで、fracは、小数のX要素と小数のY要素である。 この結果は、[2.6]の2の補数となり、乗算器94に入力されて、それぞれDX. CとDY. Cとに乗じられる。 正規化された[DX. C*(0.5−fra
    c(P0.X)]および[DY. C*(0.5−fra
    c(P0.Y)]の積は、デノーマライザによってデノーマライズされる。 DX. C項は、加算器98に入力し、そのA入力レジスタにロードされ、そして、B入力レジスタに移動される。 この時点で、項DY. CはA入力レジスタにロードされ、その2つの数は加算される。
    結果は、加算器98に存在し、フィードバックされてI
    NRAM88に格納される。 後に、B. C. 値が受取られ、入力FIFOに渡される。 フォーマッタ82は、その値をゼロ拡張し、それを十分な追加小数ビットに埋め込み、その10進小数点位置がDX. C値とDY. C値の位置とに一致させる。 小数ALU90の出力は、1.
    0に強いられ、そして、この値は乗算器94へのもう一方の入力に入る。 B. C. 値は、乗算器を出て、デノーマライザ96によってデノーマライズされて、加算器9
    8に入力する。

    【0263】同時に、既に計算された値[[DX. C*
    (0.5−frac(P0.X)]+[DY.C*
    (0.5−frac(P0.Y))]]を3ポートRA
    Mから読み出し、B入力を介して加算器98に入力する。 B. C値をこの値に加え、AB. C値であるその結果は、出力mux1092を通過し、そして、通常、計算値に対して使用されるBバス上に渡され、ピクセルジェネレータ70に入力する。

    【0264】ピクセルジェネレータが要求する値の多くは、セットアップチップによって直接供給される。 このデータは、入力ユニットデータパスを通る過程は比較的短い。

    【0265】ピクセルジェネレータ70が要求する値は、セットアップASIC32から受取られ、入力FI
    FO72を通過し、フォーマッタ82によって再フォーマットされ、出力mux102を通過し、通常は非計算値に使用されるAバス上に渡され、ピクセルジェネレータ70へ入力する。

    【0266】ピクセルジェネレータ70が必要とする値には、レンダリングされているオブジェクトのタイプによって示唆されているものがある。 例えば、Recta
    ngle(長方形)やNext-Pixel(次ピクセル)を構成する線セグメントの傾斜および逆傾斜は、すべて0または不定である。 これらのような値は、セットアップチップによって転送されてず、それ故、入力68
    によって合成されなければならない。 これを達成するために、フォーマッタ82は、特定のハードコード化された値(例えば、0.0や1.0など)を出力する能力を有する。 これらの値は、出力mux102を通過し、非計算値に対して通常使用されるAバス上に渡され、ピクセルジェネレータ70に入力する。

    【0267】ピクセルジェネレータ70にとっては、長方形は、他のオブジェクトとは異ならず、線とほぼ同様に、4頂点すべてに対するX座標値とY座標値を要求する。 しかしながら、セットアップASIC32は、このフォーマットでの情報を提供しない。 その代わり、底部の点に対するX座標およびY座標と、長方形の幅と高さを提供する。 残りの3頂点に対する座標値を、図20に示したようにこの情報の関数として計算することができる。 オブジェクトの対称性によって、2つの値だけを計算すれば良い。 すなわち、X+Width(幅)と、Y
    +Height(高さ)である。

    【0268】図16Bを参照して、X座標値とY座標値は、セットアップチップから受取られる。 これらの値は、[13.6]の2の補数値として受取られる。 何故なら、その入力ユニットは要求していないが、セットアップチップは、小数ビットが0であることを保証するためである。 そして、これら座標値は、入力FIFO72
    を通過し、フォーマッタ82によって、[28.15]
    の2の補正値に再フォーマットされ、3ポートRAM8
    8に書込まれる。

    【0269】その後、Width(幅)値が入力される。 この値は[13.6]の2の補数として入力され、
    FIFO72を通過し、フォーマッタ82によって、
    [28.15]の2の補数に再フォーマットされ、加算器98の入力Aに入力する。 同時に、X座標値は、3ポートRAMから読み出され、加算器98のB入力に入る。 結果は加算器98に存在し、出力Mux102を通過し、多くの場合非計算値(この場合を除き)に対して使用されるAバス上に渡され、ピクセルジェネレータ7
    0に入力する。 加算器98に存在する値もフィードバックされ、3ポートRAMに格納される。

    【0270】Width(幅)値が入力された後、He
    ight(高さ)値が入力される。 この値は、Widt
    hと同様の方法で処理されるが、Xの代わりにYが加算される。 この値もAバス上に渡され、フィードバックされ、RAM88に格納される。

    【0271】3ポートRAM内にX+HeightとY
    +Widthとの計算値を格納する必要はないように見えるが、フィル-ネクスト-ピクセル(Fill-nex
    t-Pixel)コマンドは格納された値を使用する。
    図21Aを参照して、フィル-ネクスト-ピクセル(fill
    -next-pixel)コマンドは、フィル-三角形(Fill-
    Rectangle)コマンド、または他の(Fill
    -next-Pixel)コマンドによって、先行され、
    WidthとHeightとがそのコマンドに対し1にセットされたと仮定していることに留意されたい。 このため、フィル-ネクスト-ピクセル(Fill-next-
    Pixel)コマンドが開始する場合、以下の4つの値は、3ポートRAMに存在する。 すなわち、X、Y、X
    +1、Y+1である。 Fill-Nextの"Next"
    は、そのX値がインクリメントされて、X+1、X+
    2、Y+1がピクセルジェネレータ90に伝送されることを示唆する。 変化した値もまた、3ポートRAM88
    に書込まれ、後続のフィル-ネクスト-ピクセル(Fil
    l-Next-Pixel)コマンドが動作する。

    【0272】図16Bを参照して、値が3ポートRAM
    から一度に1つ読み出され、加算器98の入力Bに入る。 加算器98のA入力には、X値に対して1.0を、
    Y値に対して0.0が強制される。 このため、加算器9
    8の出力は、カレントのピクセルに対して訂正値を有する。 結果は、加算器98を出て、出力Mux102を通過し、非計算値(この場合を除き)に対して使用されるAバス上に渡され、ピクセルジェネレータ70に入力する。 加算器98を出る値はまた、フィードバックされ、
    3ポートRAM88に格納される。

    【0273】次に、各レンダリングコマンドに対して、
    入力ユニット68によって実行される切片計算を説明する。

    【0274】基本色の計算のために、生成されるその色値のすべてはピクセル整列される必要がある。 そのため、その基本色値を最初に調整し、頂点0が検出されるピクセルとともに整列させる。 ここで、使用する式は、
    次の通りである。 Base Color <= Base_Color+distx*DX.color+disty*DY.C
    olor; ここで、 distx <= int(P0.X)−P0.X+0.5; disty <= int(P0.Y)−P0.Y+0.5; このような計算は、各色軸に関して同じである。

    【0275】図22Bにおける疑似コードは、入力ユニットが、点に対する切片を検出するために用いる計算を示す。 対応する切片は、図22Aに示されている。

    【0276】図23Bの疑似コードは、入力ユニットが、三角形に対する切片を検出するために用いる計算を示す。 ここで、P1とP2を結ぶセグメントに対して、
    2つの場合があることに注意されたい。 それら両方の場合について、対応する切片の点を図23に示す。 入力ユニット68は、線に対する切片を検出するために、図2
    2Cに示す計算を実行する。 ある点に対する図22に示した切片の点もまた、線に対して適当である。 スライサ−ダイサチップ34の大多数の論理は、ポリゴン、即ち、3または4の線セグメントから構成されるオブジェクトの立場のみで"思考"するので、入力ユニット68はIGBコマンドでインプリシットなセグメントパラメータを合成する。 したがって、入力時に存在するさまざまなオブジェクト間の差異は、ピクセルジェネレータユニット70からは隠されている。

    【0277】線セグメントは、すべてのオブジェクトに対して生成されなければならない。 点、線および三角形の場合、そのセグメントはセットアップチップ32によって供給されるが、IGBコマンドの場合、オブジェクトの形状はインプリシットであるため、そのセグメントパラメータを合成しなければならない。 例えば、ボックス形状のピクセルは、フィル-ネクスト-ピクセル(fill
    -next-pixel)を表現するために、生成される必要がある。 すべてのIGBコマンドは同様に処理される。 図2
    1BにおけるVHDL疑似コードは、フィル長方形(fi
    ll-rectangle)とフィルスチプル(fill-stipple)コマンドのための切片の割当てと計算を示す。 図21CにおけるVHDL疑似コードは、フィル-ネクスト-ピクセル(fill-next-pixel)コマンドのための切片の割当てと計算を示す。

    【0278】ピクセルジェネレータユニット: ピクセルジェネレータユニット70は、図16Cに示す3つのサブユニットを含む。 これらのサブユニット各々は、プリミテイブの各ピクセルの軸に対する値が計算できるまで、ポリゴンプリミテイブのセグメントを分析する。 第1のユニット(PIXGENA)は、セットアップチップ32および入力ユニット68によって供給される頂点、傾斜、ならびに切片データをラッチする。 PIXG
    ENAは、スライス操作の準備として、ポリゴンの頂点のX座標の整数部を処理する。 ここで、スライス操作は第2のユニット(PIXGENB)で実行される。

    【0279】第2のユニット(PIXGENB)は、処理された頂点情報を使用して、プリミテイブを一連の垂直スパンにスライスする。 PIXGENBは、最左端からポリゴンのエッジを走査する。 スパンを走査するにともない、一連のセグメントプロセッサはレンダリングすべき第1のおよび最後のピクセルを決定する。 このセグメント情報は第3のユニット(PIXGENC)に渡される。

    【0280】第3のユニット(PIXGENC)は、ポリゴンプリミテイブの一部が接触するスパン内のピクセルを生成する。 PIXGENCは、X、Y、Z、A、
    R、GおよびB軸に対する値を生成する。 A軸値も各ピクセルに対して計算される。 透明を扱うことが可能なら、T軸値が計算され、Aが乗じられる。 もし、パタンを使用できるなら、PIXGENCは、UおよびV軸に対する計算も行う。

    【0281】ピクセルジェネレータ70は、データを一連のパイプラインレジスタに受け入れる。 必要なデータをすべて受け入れた後、パイプラインレジスタのカウンタは、作業レジスタにロードされ、ピクセルジェネレータ70はデータの処理を続ける。

    【0282】パイプラインレジスタには、入力ユニット68の出力mux102を起点とする一連のデータバスによって供給される。 パイプラインレジスタは、入力ユニット68によって供給されるロードイネーブル信号によって制御される。 パイプラインレジスタをアクセスするために、多重アドレシング構成が、入力ユニット68
    によって使用される。 入力ユニット68とピクセルジェネレータユニットとのハンドシェークには、入力ユニット68が、第1の頂点に対する有効X座標をロードし、
    スライス操作を開始するために、XOVLDをピクセルジェネレータに対して送ることが必要である。 その後、
    入力ユニット68は、残りのX座標値を頂点のX座標レジスタにロードし、X軸処理を開始するために、XVL
    Dをピクセルジェネレータ70に送る。 入力ユニット6
    8は、頂点パイプラインレジスタとセグメントパイプラインレジスタのリセットをロードする。 必要なパイプラインレジスタがすべてロードされた時、入力ユニット6
    8は、XYVLDをシグナルピクセルジェネレータに送る。 ここで、シグナルピクセルジェネレータの全パイプラインレジスタは、有効情報を備える。 ピクセルジェネレータ70が、データ処理を開始する準備ができている場合には、パイプラインレジスタの内容を作業レジスタにロードするサイクル中にSYSTBを送る。 以後のサイクルでは、入力ユニット68は、新たなデータを頂点パイプラインレジスタおよびセグメントパイプラインレジスタへのローデイングを開始することができる。 作業レジスタが空になるのを待たずに、ピクセルジェネレータ70は、情報がラッチ保持されている間に、幾つかの情報を操作する。 頂点に対するX座標も操作される。 この最適化を容易にするために、入力ユニット68は、2
    つの付加的な信号、即ち、X0VLDとXVLDを備える。 ここで、X0VLDは、頂点ゼロのX座標ラッチが一杯になるとすぐに出され(この値は最初に必要である)、また、XVLDは、残りの頂点のX座標ラッチが一杯になるとすぐに出される(これらの値は後で必要である)。 X0VLDとXVLDの両方は、XYVLDによって出力を解除される。

    【0283】色値は、別のハンドシェークを用いて処理される。 入力ユニット68は、必要な色パイプラインレジスタからラッチにロードを開始する。 すべての必要なパイプラインレジスタがロードされた時、入力ユニット68はCVLDを表明し、全パイプラインレジスタが有効情報を含むピクセルジェネレータ70にCVLDを送る。 ピクセルジェネレータ70が、データ処理を開始する準備ができている場合(一般に、頂点情報とセグメント情報を処理開始後の数サイクル)、パイプラインレジスタの内容を作業レジスタにロードしているサイクル中にCSTBを送る。 次のサイクルでは、入力ユニット6
    8は、新たなデータを色パイプラインレジスタに対してローデイング開始することができる。

    【0284】入力ユニット68は、より下位のパイプコマンドを下位パイプFIFO84に格納する。 ピクセルジェネレータ70が、ポリゴンに対して動作していない場合は、コマンドのためのFIFO89をチェックし、
    そして、もしあれば、それらのコマンドをブレンダ36
    に送る。 "ロード-スライサ(Load-Slicer)"
    コマンドに出会うと、ピクセルジェネレータ70はそれを破棄し、確実に次のポリゴンの処理を開始する。

    【0285】ポリゴン処理ユニット(PIXGENA)
    操作: PIGENAユニット(図16C)は、入力ユニット68からの頂点情報を処理し、ポリゴンプリミテイブを一連の垂直スパンにスライスする準備をする。 このセクションでの計算は、スパン処理ユニットPIXG
    ENBに出力される。 PEIXGENAはまた、入力ユニットからロードされる一連の頂点レジスタを含む。

    【0286】頂点レジスタは、プリミテイブからの値がロードされ、左端頂点は頂点0のレジスタにロードされる。 各連続する頂点座標レジスタは、ポリゴンの次の反時計回り頂点がロードされる。 図24Aは、頂点レジスタと対応するロード信号を表にしたものである。 数値フォーマットは、信号の内部表現(TC=2の補数)を示す。 PIXGENAの入力各々は、PIGENBに対する出力を有するレジスタに格納される。

    【0287】スパンカウンタユニットおよび除算ユニットは、ともに動作する。 これらの主なタスクは、レンダリングされる垂直スパンに関する頂点位置を計算する。

    【0288】除算ユニットは、セットアップASK32
    から4つまでの頂点を受取る。 ここで、そのうちの第1
    の頂点は、ポリゴンの左端の頂点であることは保証されている。 この第1の頂点を5で割って、ポリゴンが交差(左から右に移動することで)する最初のスパンに対する"X/5値"を得る。 その値は、その最初のスパンに対して責任のあるものである。 この値は、PAB-SPA
    NXと呼ばれる。 除算ユニットはまた、ポリゴンに交差する第1のスパンから、チップが責任を持つポリゴンに交差する第1のスパンまでのスパン数を計算する。 この値は、PABOFFSETと呼ばれる。 PABSPAN
    Xは、処理すべき第1のスパンに対するスパン数であるが、他方、PABOFFSETは、左端頂点からスライサが責任を持つ第1のスパンまでのスパン数である。 P
    ABVX0の整数部は、第1のアクテイブスパンに関するこの頂点を配置するために、(4−そのスパンの位置)をPBVX0に加算することによって、SPAN位置から減じられる。 この整数の結果はBX(12:0)
    に残される。

    【0289】LDVX(0)がストローブされ、頂点ゼロの座標がロードされるとすぐに、頂点情報処理は開始される。 頂点0X座標レジスタにロードされると、ミーリー(Mealy)ステートマシンは動作を開始する。 これによって、ブレンダX座標に対する基数を生成するために、X座標レジスタの整数部分を5で除する処理である複数ステージの除算処理が開始する。 また、次のアクテイブスパンに対するオフセットを決定するために、"X
    座標 mod 5"の計算を行う。これらの値は、PABSP
    ANXおよびPABOFFSETとしてそれぞれ出力される。 図24BのVHDL疑似コードは、使用される公式を示す。 ここで、負の場合は、頂点が負の値を使うところでの、魔法(wise)の線や点の場合に、処理される必要がある。

    【0290】除算ユニットが、PABSPANXとPA
    BOFFSETを計算している間、別のユニットは、他の3頂点に対するX座標の整数部分を調整する。 そこでは、それらは、絶対座標値の代わりに、左端点からのオフセットを表現する。 除算器と並列で動作する減算器は、以下の計算をする。 int(PABVX1) ≦ int(PABX0) −(PABVX1) int(PABVX2) ≦ int(PABX0) −(PABVX2) int(PABVX3) ≦ int(PABX0) −(PABVX3) これら3つの減算操作は、連続的に生じるので、同一の減算論理を共用できる。 PABVX0は、左端のX座標であるので、他のX座標値は0以下か0に等しい。 である。 これらの計算が終了するとすぐに、PABOFFS
    ETとともに、これらの値は、各頂点に対するカウンタを持つPIXGENBに設置されたスパンカウンタユニットにパスされる。

    【0291】セグメントレジスタは、スパン処理ユニット(PIXGENB)が必要とする値を含む。 ポリゴン処理ユニット(PIXGENA)は、これらの値の登録のみを行い、修正はしない。 図24Cには、セグメントレジスタとそれに対応するロード信号が記載されている。 "出力"とラベル付けされたカラムは、これらの入力に割り当てられた新たな信号名を示す。 ここで、これらの入力はラッチされる。 セグメント構成レジスタPAB
    SCFG(3:0)の関数は、図24Dに定義されている。

    【0292】スパン処理ユニット(PIXGENB)操作: スパン処理ユニット(図16C)は、一連の垂直スパンに対する基本処理を行う。 スパン処理ユニットは、各スパンに交差する線セグメントの少なくとも一部を有する各スパンに対して必要な情報を処理する。 スパン処理ユニットは、5つのカウンタによる一連のインクリメント値をロードするために、頂点のX座標に対する調整値を使用する。 これらのカウンタは、チップが責任を持つスパンのために、それらスパンをステップする。
    各スパンにおいて、1セットの4つのセグメントユニットは、頂点情報と傾斜情報とを処理し、スパンのエッジとのセグメント交差点を決定する。 それらはまた、スパン内のプリミテイブを境界づける底ピクセルと最上部ピクセルを決定する。 これらの値は、ピクセル処理ユニット(PIXGENC)内の面積計算部に供給される。

    【0293】PIXGENBユニットは、スパンカウンタユニット(PBCNT)と、セグメントユニット(P
    BSEG)と、セグメント制御ユニット(PBCTL)
    とを含む。 次に、これらについて説明する。

    【0294】スパン制御ユニット(PBCNT)はX頂点座標の整数部分を処理する。 カウンタは、各頂点のために提供される。 所定の頂点に対するカウント値は、頂点とカレントのスパン間の関係を反映する。 最初に、頂点カウンタ(XCNTREG0)には、PABOFFS
    ETがロードされて、その他のカウンタ(XCNTRE
    G[1:3])には、PABVXn+PABOFFSE
    T(n=1、2、3)がロードされる。 これらの値は、
    第1のスパンに対して正しい値である。 第1のスパンが完了すると、カウンタはすべて5インクリメントされ、
    それらの値は、第2のスパンに対して正しい値となる。
    この処理を、すべてのスパンについて続ける。

    【0295】スパンカウンタユニット(PBCNT)はまた、PABSPNAX値を受取る。 この値は、毎スパン後インクリメントし、パイプラインにパスされ、最終的には1つのスパンの全ピクセルに対するX座標として、ブレンダ36に供給される。 PBSEGユニットが次のポリゴンを処理する準備ができることを示すPBC
    TLユニットによって、XYSTBが出されている時、
    カウンタには、次の値がロードされる。 XCNTREGO0 <= PABOFFSET : XCNTREGO1 <= Int(PABVX1) + PABOFFSET : XCNTREGO2 <= Int(PABVX2) + PABOFFSET : XCNTREGO3 <= Int(PABVX3) + PABOFFSET : ピクセル処理ユニット(PIXGENC)によって使用される以下の信号がまた、ロードされる。 PBCX <= Int(PABVX)) + PABOFFSET; PBCXD5 <= PABSPANX; PBCNTは、X軸のスライスを5ずつ実行する。 5単位でインクリメントする一連にカウンタによってこれは達成される。 PBSTEPがPBCTLユニットによって出された場合、PBSEGユニットが次のスパンに対する準備ができていることを示し、カウンタはつぎの公式によってインクリメントされる。 XCNTNXT0 <= XCNTREG0 + 5; XCNTNXT1 <= XCNTREG1 + 5; XCNTNXT2 <= XCNTREG2 + 5; XCNTNXT3 <= XCNTREG3 + 5; PBCX <= PBCX+5; PBSTEP信号は、各スパンが処理された後、PBC
    TLユニットによって出される。 整数のX座標値は、X
    CNTNXT(3:0)からのデータをレジスタXCN
    TREG(3:0)に転送し戻すことによって調整される。 XCNTNXT(3:0)レジスタとXCNTRE
    G(3:0)レジスタは、4つのセグメントPBSEG
    ユニット各々に対して出力される。 PBCNTはまた、
    出力X座標に対する調整値を供給する。 ブレンダのX座標は、毎第5のスパンを意味する。 結果として、X座標が、カウンタにおいて5だけインクリメントされる時、
    出力スパンX座標(PBCXD5)は、1インクリメントされて、 PBCXD5 <= PBCXD5+1 となる。

    【0296】XCNTREG(3:0)レジスタ出力は、2の補数値である。 ここで、セグメントの端点に対応するカウンタが、負のままである限り、また、セグメントの端点に対応するカウンタが、カレントのスパンの右に一列に並ぶ限り、セグメントの端点は、カレントのスパンの右にあることに留意されたい。 XCNTREG
    (3:0)レジスタに対応する調整されたX座標は負である一方、対応するセグメントの端点は、カレントのスパンの右側にある。 所定のセグメントの右端点に対するカウント値が、ゼロか正である場合、そのセグメントは、まはやカレントのスパンに対して有効ではなくなる。 PBCNTはまた、PIXGENCによって必要とされるPIXGENAからの2つの別の信号をラッチする。 PBCNTユニットの出力を図25にまとめる。

    【0297】セグメントユニット(PBSEG)は、セグメントに対する生データを処理し、セグメントスパンユニットが必要なスパン指定情報を得る。 セグメントユニット(PBSEG)は、複数のソースから、即ち、直接セットアップチップから、入力ユニットから、スパンカウンタユニット(PBCNT)から、セグメント制御ユニット(PBCTL)から受取る。

    【0298】セットアップチップからは、セグメントユニットは、ポリゴン頂点(PABVXn)のX座標と、
    そのポリゴンセグメントの傾斜(PBASS)および逆傾斜(BABSI)を受取る。 いくつかの場合では、これらの値は、セットアップチップによって生成されない。 その場合は、適切な値が、入力ユニット68によって合成される。

    【0299】入力ユニット68からは、セグメントユニットは、構成ワードと2つの切片値を受取る。 構成ワードは、セグメントがカレントのポリゴンに対して有効であるか否かを示すビットと、どのポリゴン頂点が、セグメント(PABSCFG)に対して右端点か左端点かを示す2セットの複数ビットとを含む。 供給される第1の切片値は、左から右まで移動させるセグメント上の第1
    の点のX座標値である次Y上のX(X-on-next-
    Y)値である。 ここで、そのY座標は整数である。

    【0300】スパンカウンタユニット(PBCNT)からは、セグメントユニットは、各ポリゴン頂点に対する整数値を受取る。 この値は、カレントのスパンに対する頂点の位置関係を示す。 これは、スパンの左境界のX座標から減じた頂点のX座標の下限である。 このため、頂点がスパンの右にある場合、その値は負であり、それ以外は正である。

    【0301】各スパンに対して、セグメントユニットは、セグメントの右端点および左端点に対するカウント値を調べ、スパンに対するセグメントの位置関係を決定する。 その位置に依存して、スパンを有する左切片は、
    左端点と一致することもあれば、セグメントに沿ったある中間点に位置することもある。 このような全中間点は、傾斜に次X上のY(Y-on-next-X)値を繰り返し加算することによって計算することができる。 同様に、右切片は、右端点と一致することもあれば、セグメントに沿ったある中間点に位置することもある。 また、このような中間値は、繰り返し計算することができる。

    【0302】小数Xオフセット(PBCSX0およびP
    BCSX1)はまた、カウント値の関数である。 通常の場合、左のオフセットは0であり、右のオフセットは1.0である。 しかしながら、もし、セグメントがカレントのスパンから開始するなら、左のオフセットは対応して調整される。 同様に、もし、セグメントがカレントのスパンで終わるなら、右のオフセットは、対応して調整される。 調整されたオフセットは、セグメントスパンユニット(PCSEG)に転送される。

    【0303】左切片と右切片が計算されるとすぐに、それらは、垂直位置に対応してソートされる。 下位の切片は、4つの全セグメントに対して下位の切片を取るセグメント制御ユニット(PCCTL)に与えられ、最小値を決定し、必要なY軸変換値を生成する。 セグメントユニットは、左切片と右切片を含むその全Y値を変換する。 この結果の左切片値と右切片値は、整数部分と小数部分に分けられる。 小数成分(PBCSYX0、PBC
    SUX1)は、直接セグメントスパンユニットに転送される。 整数要素(PBCSYX0、PBCSUX1)の両方は、もし、それぞれの小数要素がゼロであるなら、
    デクリメントされ、その後、面積計算部が、それぞれセグメントと交差する第1および最後のピクセルを処理する前に、それら要素は、面積計算部によってあるべきピクセル数を示す。 これらの値は、別々にセグメントスパンユニット(PCSEG)に転送される。

    【0304】左切片と右切片が計算され、ソートされ、
    調整されるとすぐに、セグメントが第1の水平ピクセル境界(PBCSXYN)と交差するセグメントの小数位置は、セグメントと下位切片より大きな第1の整数Y値との間の切片に反映するまで、逆傾斜を次Y上のX(X
    -on-next-Y)値に繰り返し加算することによって計算される。 この計算結果は、セグメントスパンユニット(PCSEG)に渡される。 各PBSEGセグメントユニットは、図26Aにリストされた入力を受取る。
    セグメントユニット(PBSEG)は、図26Bにリストされた出力信号を、セグメントスパン処理ユニット(PCSEG)に供給する。 セグメントユニット出力構成ワードは、図26Cで定義されている。

    【0305】スパン処理ユニット中には、同一のPBS
    EGユニットが4個あり、ポリゴン単位で可能な4つまでのセグメントの各々に対して1つであり、各ユニットに対して割り当てられた出力名はユニークである。 さらに、PBCNTユニットは、次のユニットによって使用するいくつかの信号をラッチする。 スパン処理ユニット(PIXGENB)の最上部のレベルに当てられた名前は、図26Dにリストされている。 これらの出力のすべては、ピクセル処理ユニット(PIXGENC)の入力に接続されている。 各セグメントユニットからの2つの構成ビットだけが、ピクセル処理ユニット(PIXGE
    NC)内のセグメントスパンユニットに伝送される。

    【0306】スパンユニットは、以下に説明する入力ミックスとレジスタを含む。

    【0307】セグメントユニットの幾つかは、複数の入力マルチプレクサによって先行される。 ここで、それらの入力マルチプレクサは、正確な端点データをユニット内部のレジスタにロードさせる。 セグメント1および2
    だけが、これらのマルチプレクサ(mux)を必要とするセグメントである。 何故なら、それらの端点だけが、
    右側または左側に対して異なる頂点を有するかもしれないからである。 これらのマルチプレクサ(mux)が満足しなければならない3つの重要な場合がある。 各セグメントのスパンユニットが必要な頂点は、図26Eにリストされている。

    【0308】入力レジスタは、入力マルチプレクサ(m
    ux)によって選択された頂点値とその他のユニットによって供給されたセグメント値を保持する。 XYSTB
    信号がスパン処理制御ユニット(PBCTL)によって出された場合、これらの信号はラッチされる。 XYST
    B信号が出される時、以下の信号は、XYSTB信号が送られた場合に、図中のGFGREGSにラッチされる。 SREG ≦ PABSS; --セグメント傾斜 IREG ≦ PABSI; --セグメント逆傾斜 CFREG ≦ PABSCFG; --セグメント構成ワード XCREG ≦ frac(PABXBL); --左端点の小数X座標 XRREG ≦ frac(PABVXR); --右端点の小数X座標 以下の信号は、XYSTBが出された時に、XYREG
    Sブロックにおいてラッチされる。 YXOREG ≦ PABVYL; --左端点のY座標 XYREG ≦ PABSXYN; --セグメントのX-on-next-Y切片 以下の信号は、XYSTBが出された時に、YXREG
    Sブロックにおいてラッチされる。 YXOREG ≦ PABVYL; --左端点のY座標 YX1REG ≦ PABSYXN; --セグメントのY-on-next-X
    切片 YXRREG ≦ PABVYR; --右端点のY座標 Xオフセットは、通常、右のXオフセット(PBCSX
    1)に対する左オフセット(PBCSX0)に対して、
    0.0である。 これが真でない時は、問題の頂点がカレントのスパン内にある場合に限られる。 これを検出するには、セグメントユニットは、対応する頂点のカウンタ(PBXCNTn)内の0カウント値に関してチェックする。 これに関する論理は、図27Aの疑似コードによって描かれている。 Y切片値(YX0REG、YX1R
    EG)は、傾斜に次X上のY(Y-on-next-X)
    を累積的に加算することによって、次X上のY(Y-o
    n-next-X)値(PABSXYN)と傾斜(PAB
    SS)から計算することができる。 最初に、セグメントが新たなスパンに対して有効になる時、左頂点のX座標の整数値は重要になる。 何故なら、正確なY切片が検出される前に、何回、傾斜が次X上のY(Y-on-nex
    t-X)に加算されなければならないかを決定するたである。 これは、特別の場合であり、全ての残りの切片は、傾斜に次X上のY(Y-on-next-X)値を正確に5回加算することによって検出される。

    【0309】図27Bの左の図を参照して、陰をつけた領域は、スライサ/ダイサがスパン0にセットされる時に示されるポリゴンに対して計算したい領域を示す。 セグメント0(PBCNTL)の左端点に対するカウント値は、1である。 この場合、左スパン切片(YX0RE
    G)は、次X上のY(Y-on-next-X)とたまたま一致する。 右スパンY切片(YX1RGE)は、傾斜を次X上のY(Y-on-next-X)(PABSYX
    N)に1度だけ加算することによって丸められる。 図2
    7Bの右側の図を参照して、セグメント0に対する左端点は、2スパン離れている(PBCNTL=2)。 左スパン切片(YX0REG)は、傾斜を次X上のY(Y-
    on-next-X)に一回加算することによって検出される。 さらに、もう一度傾斜を加算すると、右スパンY
    切片(YX1REG)の位置が決定する。 次X上のY
    (Y-on-next-X)が、2スパンまたはそれ以上離れている場合、Y切片は、処理のレベルを下げるために、シフトと加算によって計算される。

    【0310】この処理機構は、各セグメントユニット内部のステートマシンによって制御される。 ステートマシンは、INVALIDまたはVALID状態のいずれかから始動する。 XYSTBが新たなポリゴンの開始時に送出された場合、YX1RGEには、次X上のY(Y-
    on-next-X)値(PABSYXN)がロードされ、YXOREGには、セグメントの左頂点Y座標(P
    ABVYL)がロードされる。

    【0311】次に、ステートマシンは、MOVEX0状態に移行し、いつ、セグメントがカレントのスパンに対して有効になるかをチェックする。 3つの条件をチェックすることによってこの処理を行う。 第1に、セグメントの構成レジスタ(9CFREG[5])中の有効ビットがセットされていなければならない。 第2に、セグメントカウント(PBXCNTL)が0以上かをチェックすることによって、カレントのスパンがセグメント左端点の右側にあるかをチェックする。 第3に、右頂点のX
    カウンタが0以下であるかどうかをチェックすることによって、セグメントの右端点がカレントのスパンの右にあるか否かを判定する。 セグメントが有効な場合、2つの大きなシフトコード化作業(SSSEL)をセットする。 シフト値は、0、1、2のいずれかである。

    【0312】次に、ステートマシンは、SSEN信号を出すことによって、バレルシフタを介してアキュムレータ(ISSNEXT)のロードを実行可能にする。 バレルシフタは、SSSELシフトビットによって制御される。 ステートマシンからの別の制御ビットは、いつ加算累積が生じるかを決定する。 計算が完了する時、その結果は、出力レジスタ(図26B参照)に格納され、セグメントスパン処理ユニット(PCSEG)に利用される。

    【0313】次にステートマシンは、X切片計算に移行する。 X切片値(XYREG)は、次Y上のX(X-o
    n-next-Y)値(PABSXYN)および逆傾斜(PABSI)に基づき、逆傾斜をY-on-next-
    Xに累積加算することによって計算される。 Y切片計算とは異なり、この加算操作を行う回数は、一定ではなく、線の逆傾斜によって、様々である。 Y切片計算と同様に、シフトと加算演算は処理を削減するのに使用される。 乗算因子(繰り返された加算数)を決定するには、
    X切片計算にはY切片計算の整数の結果を使用する。 次のスパンに対する最低整数のY-on-next-X値とX-on-next-Yの整数のY値との差が、乗算器に与えられる。 左頂点と所望のX切片の間の完全な水平スパンの数は、最低のスパンのY切片の整数値とX-on-
    next-YのY座標との差になる。 これは、確かに乗算器である。 カレントのX-on-next-Y値(PA
    BSXYN)の整数Y値を検出するには、傾斜(PBA
    SS)の符号とセグメントに対する左頂点の整数Y値(PABVYL)を調査する。 考えられる場合を図27
    Cに示した。 ここで、ある場合には頂点の値を使用し、
    ある場合に頂点より1を減じ、別の2例では、頂点に1
    加算していることに留意されたい。 乗算器が決定されると、ユニットは、次のスパンのX切片値をY切片と同様の方法で計算する。 この結果はXYREGに記憶される。 ここで、この結果は、計算されるスパン内の最も低いX切片であり、左端ではないことをに留意されたい(図27B参照)。

    【0314】Y切片計算後、ステートマシンは、傾斜を使用してどの2つが最低かを判定する。 4つのセグメント各々は、この値をセグメント制御ユニット(PBCT
    L)に提供する。 セグメント制御ユニットは、このうちどれが低いかを判定する。 判定されるとすぐに、この値は、各出力に対する全整数Y値から引かれる。 下位および上位のスパンY切片の調整された整数値はラッチされ、PNCSC0およびPBCSC1のセグメントスパンユニット(PGSEG)にそれぞれ供給される。 これらの整数Y値は、セグメントが有効なカレントのスパンにおいて処理すべき第1のおよび最後の有効ピクセル表す。

    【0315】逆傾斜は、必要なビット数を減少させるために、このユニットによってわずかに修正される。 符号簡約操作は、TC[13.15]からTC[2.15]まで値を減少させるよう実行される。

    【0316】セグメント制御ユニット(PBCTL)
    は、3つの機能を実行する。 第1に、入力ユニットからのXYデータをストローブし、作業レジスタに格納し、
    上述の入力ユニットとハンドシェーク処理を行う。 第2
    に、4つのセグメントユニットを調整し、いつスパン処理が完了するかを決定する。 第3に、各セグメントによって区切られた最低位のピクセルを比較し、最低位のピクセルを上述のセグメントユニットに出力する。

    【0317】ピクセル処理ユニット(PIXGENC操作): ピクセル処理ユニットPIXGENC(図16
    C)は、ポリゴンプリミテイブの一部が接するスパン内にピクセルを生成する。 X、Y、Z、A、R、GおよびBの軸に対する値を生成する。

    【0318】各ピクセルに対して、A軸の値も計算される。 もし、透明化が可能なら、Aは計算されたT軸値によって乗じられる。 もし、パタンが使用できる場合には、U軸およびV軸に対する値も計算する。 面積計算は、ポリゴンプリミテイブの一部にカバーされている実領域を計算することによって、エイリアス除去処理を行う。 面積計算部には、2つの操作モードがあり、1つはエイリアス除去がオンにスイッチされた場合であり、もう一方はオンになっていない場合である。 ピクセル処理ユニットは、面積計算部と色補間部の2つの主要なユニットを含む。

    【0319】面積計算部は、(エイリアス除去がイネーブルである時,ポリゴン下の各ピクセルのように)非ゼロ要素を含むと考えられる各ピクセルに対して、ポリゴンとピクセル間の補間領域の面積を計算する。 どのポリゴン(点、線、三角形)も、互いに接続する多数の線セグメントに分けられる。 このため、所定のピクセル内の完全なポリゴンに対するカバー領域を計算する問題は、
    所定の線セグメント上のピクセル内の領域を計算する小さなタスクに分けることができる。 この操作は、ポリゴンを形成する非垂直のセグメントに対して行われる。 ポリゴン上部境界を構成するセグメントに対して(それが、ポリゴンに交差する場合に、南から北に描かれる線が、ポリゴンの内部領域を残すセグメントのような)、
    その領域は負に見做され、それ以外は、正に見做される。 領域の因子がすべてのセグメントに対して計算された後、因子を合計し、結果はピクセル内のポリゴンの面積となる。

    【0320】面積計算部に対する制御はいたって簡単である。 4つのセグメントスパンユニット(PCSEG)
    がセグメントデータ4組を供給する。 これらは常にゼロ以外の面積が可能であるカレントのスパンの最低位のピクセルに対する値を供給することによって開始する。 面積計算部が、ピクセルを完了した場合、セグメントスパンユニットに次のピクセルに移行する信号を送る。 この処理を繰り返し、面積計算が、すべてのセグメントが0
    以下か無効かのいずれかのピクセルになるまで続け、この際、スパンが完了したことを示す専用の出力トークンを生成し、次のスパンが処理されるのを待つ。

    【0321】面積計算部は、セグメントスパンユニット(PCSEG)とα計算機ユニット(PCAC)の2つの主要なユニットを含む。 これらは、次節で詳細の説明を行う。

    【0322】セグメントスパンユニットは、セグメントユニット(PBSEG)の出力を処理し、ピクセル切片情報を面積計算部に供給する。 ポリゴンは、4つまでのセグメントから成り得るので、4つの同一のセグメントスパンユニットが使用され、各々は、個々のセグメントユニットから入力を受取る。 幾つかの数が供給され、元のままの面積計算部(PCAC)に渡される。 すなわち、セグメントがカレントのスパンに対して有効であるかを示すビット、セグメントがポリゴンの上限および下限を構成するか否かを示すビット、スパンに対する垂直境界ボリュームを定義する2つの小数オフセット(PB
    CSX0n、PBCSX1n)である。

    【0323】いくつかの他の値が、セグメントスパンユニットによって使用され、ピクセル切片を計算し、セグメントとスパン内の所定のピクセル間の関係を定義する。 すなわち、そのセグメントが、垂直境界ボリューム(PBCSX0n、PBCSX1n)に入力しまた存在する断片位置と、セグメントが第1の(最低位の)水平ピクセル境界を交差する断片位置と、それぞれセグメントと交差する第1および最後のピクセルを処理する前に、面積計算部によって処理されるピクセル数を示す2
    つのカウント値(PBCS0n、PBCS1n)である。 線の逆傾斜(PBCSIn)はまた、符号ビット付きで供給される。 これは、上方にピクセルからピクセルに移動する時に、水平ピクセル切片値を調整するのに使用される。 その符号ビットは、面積計算部に渡される。

    【0324】この情報で、ピクセル切片を計算し、各ピクセルに対するセグメント-ピクセル関係を定義することは簡単である。 そのセグメント-ピクセル関係は、図28Aに示される供給されたカウント値に基づいて定義される。 第1の切片は、常に、境界ボリュームを有する下位の切片であり、最後の切片は、常に、境界ボリュームを有する上位の切片である。 いずれかが、セグメントユニット(PBSEG)でソートされるので、セグメントスパンユニット(PCSEG)は、それを考慮する必要はない。 もし、3つの切片があるなら(カウント値が、1異なる)、第2の切片は、単に第1の水平ピクセル境界交差点である。 もし、4つの切片があるなら(カウント値が、2異なる)、第3の切片は、第2の水平ピクセル境界交差点であり、逆傾斜を第1の水平ピクセル境界交差点に加算することによって得られる。 セグメント-ピクセルカウンタは、ピクセル毎にデクリメントされる。 逆スロープの累積を継続することによって、水平ピクセル交差点の数が得られ、そのため、どのセグメントも処理されることができる。

    【0325】水平ピクセル境界切片の計算に関し、興味深い状況が生じる。 理論的には、切片がカレントのスパン内にインプリシットに包含されているので、小数構成要素のみを計算すれば良い。 しかし、実際には、逆傾斜値の値が不正確になることによって、水平ピクセル境界切片が真の値からややずれて、カレントのスパンの外側にわずかに飛び出ることもある。 例えば、スパンを上げると、値は0.95から0.97、0.99、1.01まで変化する。 しかし、もし、整数ビットのをキャリーがないなら、1.01値は0.01になる。 このため、スパンの右境界に非常に近いはずだった切片が、逆に、左の境界に非常に近付いてしまい、その領域値は重大なエラーを示す。

    【0326】本実施例は、計算を通じて最下位整数ビットのキャリーによってこの問題を解決する。 この整数ビットは、入力として供給されるカレントのスパンのX座標の最下位整数ビットと比較される。 もし、そのビットが整合すれば、小数ビットは正確である。 もし、ビットが整合しない場合、その値はスパンの左または右にずれていることになる。 それがどちら側にあるかを判定するには、最上位小数ビットを調べる。 もし、それが0であれば、その値はスパンの右側にあり、その値は1.0にクリップされる。 それ以外の場合は、スパンの左側にあるので、値を0.0にクリップする。

    【0327】α計算ユニット(PCAC)は、実際の面積計算を実行する。 それは、所定のピクセルに対する4
    セットの数を受け取り、その1セットは、ポリゴンを構成し得る4つまでのセグメントの各々に対するものである。 これらの数のセットは、4つの個々のPCSEGユニットによって供給される。 ステータスは符号化され、
    ピクセルに対するセグメントの関係を示す。 セグメントは、ピクセルを含むスパンに対して無効と成り得る。 何故なら、セグメントは、ポリゴンに対して全く定義されず、垂直であるか、または、ピクセルを含むスパンの左もしくは右に完全に位置するかのいずれかであるためである。 セグメントは、カレントのピクセル上に位置付けられるので、その面積は0である。 セグメントは、カレントのピクセルを交差するか、またはその下に存在するので、領域値を計算しなければならない。 ステータス復号化に含まれるものには、セグメントがポリゴンの上限または下限の境界を構成するかどうかを示すビットと、
    セグメントの逆傾斜(セグメントが左と右のどちらかに傾いているか)の符号を示す別のビットがある。 セグメントが、底部のピクセルに入る場合、および最上部に存在する場合には、逆傾斜符号は、ピクセルのどの半分がポリゴン内にあるかを決定するのに必要とされる。

    【0328】2つの小数Xオフセットは、PBSEGユニットによって供給される。 これらのオフセットは、図28Bに示したように、垂直境界ボリュームを形成する。 セグメントが、範囲において無限ではなく、カレントのスパン境界内で開始したり終了したりすることがあるので、このようなオフセットは必要である。

    【0329】2つの小数切片オフセットは、PBSEG
    ユニットによって供給される。 これらのオフセットは、
    どこにセグメントが入り、どこに、垂直方向にXオフセットによって、また、水平方向にピクセル境界によって囲まれている長方形ボリュームを出すかを示す。 各切片オフセットには、(左、下部、右、上部の)どの境界に適用するかを示すコードが供給される。

    【0330】面積計算は、正方形、台形、三角形の公式を使用して実行される。 例えば、ピクセル下に位置するセグメントの場合、正方形公式を使用して、垂直方向にXオフセットによって、また、水平方向にピクセル境界によって囲まれた長方形ボリュームの面積を計算する。
    図29Aと図29Bは、場合と使われる公式の疑似コードをリストにしたものである。

    【0331】ここで、状況は、エイリアス除去をオフにした時に非常に似ている。 非ゼロ面積を有するピクセルは、その領域下か、または、その領域と交差する、少なくとも1つのセグメントをもち、また、全セグメントは無効ではないか、その領域下にあるピクセルと言え、エイリアス除去無しの1.0の面積が割り当てられる。

    【0332】色補間ユニット: 色補間ユニット(図3
    0)は、上述の面積計算パイラインに類似しており、各ピクセルに対する補間色値を正確に生成する。 補間は、
    以下の軸に対して行う。 すなわち、Z、R、G、B、
    T、UおよびVである。 これら軸のすべては、同一に処理されるので、"色"と見做される。

    【0333】所定のピクセルに対し、Z、R、GおよびB軸は、ピクセル座標(XおよびY)とA値とともに、
    ブレンダチップに対して出力される。 もし、パターンニングがイネーブルであるなら、UとVの値も出力される。 もし、透明化がイネーブルであるなら、後者が出力される前に、T値はAと乗算される。

    【0334】調整された基本値が、入力ユニットによって計算されるとすぐに、補間ユニットは、調整された基本値と、X参照(X-delate)値と、Y参照(Y-delate)
    値とがロードされる(図30参照)。 その点に関して、
    ポリゴン上(または画面上)の任意のピクセルに対する色値は、調整値に対するXデルタ値とYデルタ値の正確な数を、単に加減算することによって、計算される。 バレルシフタを使用するとこの処理の速度は増す。 各色軸に対して使用される個々の色補間部があり、それらは、
    図30に示されるように類似している。 これらは全て、
    並列動作であり、同一のステートマシンによって制御される。

    【0335】最初に、ベースレジスタとデルタレジスタが、入力ユニットによってロードされる。 それから、L
    OAD信号が出され、累算器に調整された基本色値がロードされる。 もし、左端頂点がカレントのスパン内にない時、補間部は、適切なスパンに対し初期のXおよびY
    のオフセットを実行する。 Xの調整が、いつも始めに実行される。 STEPX信号が出されると、デルタXレジスタが選択される。 適切なSHIFT値が適用され、累算器のカレントの内容(基本値である)が、シフトされたデルタX値に加算される。 その結果は累算器に残される。

    【0336】カレントのスパンのピクセルに対する値は、デルタYレジスタからACCUMULATORまでの値を加算することによって生成される。 次のスパンに進む時になると、ATEPXが出され、2シフトされたデルタX値がACCUMULATORに加算される。 それから、デルタXはもう一度加算され、右方向に対する5つのスパンを正確な値に与える。 その結果は、また完全ではない。 何故なら、前のスパンからの前のデルタY
    成分は、まだ累積値であるからである。 補間制御ユニット(PCCCTL)は、前のスパンの処理中に出力されたピクセル数の監視を続け、また、カレントのスパンの第1のY値と、前のスパンの第1のY値間の相対的差を知る。 これらの値の合計を使用して、何回、デルタY値がACCUMULATORから減じられる必要があるかを決定する。 BARREL SHIFTERはインバータを含み、このインバータはPCCCTLによって制御され、この減算動作を実行する。 それから、補間部は、
    第1のスパンに対して行ったのと同様な方法で、カレントのスパンに対する色値の計算を開始する。 プリミテイブの最後のスパンが処理されるまで、このように演算は続く。

    【0337】軸の補間部の幾つかは、クリップ/クランプ回路を含み、大きなデルタが引き起こすエラーによって、にせの色値を計算することを防止するものもある。
    これらの値は、累算器から出る時クリップされた後、ブレンダに伝送される。 負のR、G、B、T値は、0にクリップされる。 255以上のR、G、B値は、255にクリップされる。 1.0以上のT値は、1.0にクリップされ、また、Z値は、セットアップチップによって供給される最小値および最大値(Zmin、Zmax)内でクリップされる。

    【0338】点画(stippling)の実行には、基本値、
    デルタX値、デルタY値に基づく線形補間を実行する代わりに、専用の色補間ユニットによって、ピクセルを左から右に生成するように点画値をシフトし、正確な点画値を"補間"する。 この方法であれば、その他の色補正処理とほとんど同様である。

    【0339】乗算ユニット(PCMUL)は、2つの機能を実行する。 それは、すべてのAの計算する乗算器として働き、透明化がイネーブルの時には、計算されたT
    値と計算されたA値と乗算する。

    【0340】この乗算ユニットは、両方の機能によって共用され、ゲートをセーブする。 これに対するスループットペナルティは極めてわずかである。

    【0341】出力FIFO(PCF)は、ブレンダがビジー信号を出すイベント中にバッファリングし、性能を改善するために備えられる。 それは、100ビット幅の8ワード深さであり、個別のリード/ライトアドレスカウンタを使用して、FIFOメモリをアドレス指定する。

    【0342】出力ステートマシンユニット(PCOU
    T)は、出力FIFOとブレンダに対するハンドシェーク線とを制御する。 それは、低位パイプFIFOと出力FIFOユニットからデータを入力する。

    【0343】下位パイプFIFOは、より下位のパイプコマンドを格納し、このコマンドはスライサ/ダイサ自体に用いるものではなく、ブレンダにパスするために必要である。 これらのコマンドは、入力と同じ順番で出力され、そして、ドロー(draw)コマンドによって生成されるピクセルは、適切な時間に到着しなければならない。

    【0344】例えば、入力配列が[ロードブレンダ(L
    oad−Blender)]、[フィル長方形(Fil
    l−Recatngle)]、[ロードブレンダ(Lo
    ad−Blender)]であれば、出力配列は[ロードブレンダ(Load−Blender)]、[ピクセル(Pixel)]、[ピクセル(Pixe
    l)]. . . [ピクセル(Pixel)]、[ロードブレンダ(Load−Blender)]でなければならない。 ある他のシーケンスでは、非決定性のパイプライン動作となる。

    【0345】適切な出力シーケンスを確実するためには、出力ステートマシンは、下位パイプコマンドとピクセルデータの間の調整を行う。 最初に、ステートマシンは、下位パイプFIFOからのデータに優先権を与える。 しかしながら、最終的には、専用コマンドトークンは、FIFO内で検出され、ピクセルデータにスイッチするよう命令する。 この時点から、優先権がピクセルデータに与えられる。 最終的には、専用のピクセルデータが検出され、下位パイプデータにスイッチバックするように命令する。 このやり取りを継続する。

    【0346】これらの専用トークンは、どのようにそれらが生成されるかによって、正確なシーケンスを維持する。 入力ユニット68は、下位パイプコマンドをFIF
    Oにロードするが、ドロー(draw)コマンドを受取り始める時は、特殊なトークンを合成する。 このため、[ロードブレンダ(Load−Blender)]、[フィル長方形(Fill−Recatngle)]、[ロードブレンダ(Load−Blender)]に対し、下位パイプFIFOは、[ロードブレンダ(Load−B
    lender)]、[特殊トークン(Special−
    Token)]、[ロードブレンダ(Load−Ble
    nder)]をロードする。 それから、出力ステートマシンは、第1のロードブレンダ(Load−Blend
    er)コマンドを転送し、ピクセルデータを待つ。 ピクセル生成パイプラインは、しばらく、フィル長方形(F
    ill−Rectangle)処理を実行する。 最終的には、ピクセルの生成を開始し、出力ステートマシンは、ブレンダに対して転送する。 フィル長方形(Fil
    l−Rectangle)処理に対するすべてのピクセルが生成される時、ピクセルジェネレータは、特殊な"
    オブジェクトのエンド(End−of−Objec
    t)"ピクセルを生成するが、これは実際にはピクセルではなく、下位パイプFIFOにスイッチバックするための出力ステートマシンへの信号である。

    【0347】本発明の他の態様およびへ修正は、上述の技術から鑑みて当業者らによって容易に成されることは明らかである。 したがって、本発明は、上述の明細書および添付図面と共に描かれている態様ならびに修正を含む以下の請求の範囲によってのみ限定される。

    【0348】以上説明したように、本実施例によれば、
    エイリアス除去と透明性の処理を含むグラフィクスデータのレンダリングを高精度にかつ高速に行うことができる。

    【0349】

    【発明の効果】以上説明したように、本発明の画像レンダリング方法とその装置によれば、エイリアス除去と透明性の処理を含むグラフィクスデータのレンダリングを高精度にかつ高速に行うことができる。

    【0350】

    【図面の簡単な説明】

    【図1】本実施例の基本三角形の用語を示す図である。

    【図2】本実施例の基本三角形スライス操作を示す図である。

    【図3】本実施例の基本三角形ダイシング(さいの目分割)操作を示す図である。

    【図4】本実施例のシステムに使用する部分的にカバーされたピクセルの面積計算を示す図である。

    【図5】本実施例のシステムに使用する部分的にカバーされたピクセルの複合面積計算を示す図である。

    【図6】本実施例のシステムにおいて使用する画像パラメータに関する平面方程式の公式を示す図である。

    【図7】本実施例の方法の利用に適したワークステーショングラフィックプロセッサを示す図である。

    【図8】本実施例のレンダリングパイプラインの機能ブロック図である。

    【図9A】本実施例の画像生成ボード(IGB)の詳細機能ブロック図である。

    【図9B】本実施例の画像生成ボード(IGB)の詳細機能ブロック図である。

    【図10A】本実施例のPHIGS幾何ボード(PG
    B)の詳細機能ブロック図である。

    【図10B】本実施例のPHIGS幾何ボード(PG
    B)の詳細機能ブロック図である。

    【図11A】本実施例のフレームバッファメモリを示すブロック図である。

    【図11B】本実施例のフレームバッファメモリを示すブロック図である。

    【図12A】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12BA】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12BB】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12BC】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12BD】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12CA】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12CB】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図12CC】本実施例のブレンダASICを示す詳細機能ブロック図である。

    【図13】本実施例の単純パイプライン制御の概念を示す図である。

    【図14】本実施例の完全パイプライン制御の概念を示す図である。

    【図15】本実施例のステートマシンで使われる2ホットステート符号化パラメータのテーブルを示す図である。

    【図16A】本実施例のレンダリング(スライサー/ダイサー)ASICを示す詳細機能ブロック図である。

    【図16B】本実施例のレンダリング(スライサー/ダイサー)ASICを示す詳細機能ブロック図である。

    【図16C】本実施例のレンダリング(スライサー/ダイサー)ASICを示す詳細機能ブロック図である。

    【図17】本実施例のレンダリングASICにおいて使用されるX-on-next-Y公式を示す図である。

    【図18】本実施例のレンダリングASICにおいて使用されるX-on-next-Y公式を示す図である。

    【図19】本実施例のレンダリングASICによって使用される調整された基本色公式を示す図である。

    【図20】本実施例のレンダリングASICによって使用される長方形公式を示す図である。

    【図21A】本実施例のフィル長方形(Fill Rectangle)
    プロシージャとフィルイン次ピクセル(Fill-in Next Pi
    xel)プロシージャを示す図である。

    【図21B】本実施例のフィル長方形(Fill Rectangle)
    プロシージャとフィルイン次ピクセル(Fill-in Next Pi
    xel)プロシージャを示す図である。

    【図21C】本実施例のフィル長方形(Fill Rectangle)
    プロシージャとフィルイン次ピクセル(Fill-in Next Pi
    xel)プロシージャを示す図である。

    【図22A】図22は、図22A−図22Cから成り、
    本実施例の点と線インターセプトプロシージャを示す図である。

    【図22B】図22は、図22A−図22Cから成り、
    本実施例の点と線インターセプトプロシージャを示す図である。

    【図22C】図22は、図22A−図22Cから成り、
    本実施例の点と線インターセプトプロシージャを示す図である。

    【図23A】本実施例の三角形インターセプトプロシージャを示す図である。

    【図23BA】本実施例の三角形インターセプトプロシージャを示す図である。

    【図23BB】本実施例の三角形インターセプトプロシージャを示す図である。

    【図24A】本実施例のピクセル生成ユニットのポリゴン処理ユニット(PIXGENA)の特性を示す図である。

    【図24B】本実施例のピクセル生成ユニットのポリゴン処理ユニット(PIXGENA)の特性を示す図である。

    【図24C】本実施例のピクセル生成ユニットのポリゴン処理ユニット(PIXGENA)の特性を示す図である。

    【図24D】本実施例のピクセル生成ユニットのポリゴン処理ユニット(PIXGENA)の特性を示す図である。

    【図25】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のスパンカウンタユニット(PBCNT)の特性を示す図である。

    【図26A】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【図26B】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【図26C】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【図26D】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【図26E】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)の特性を示す図である。

    【図27A】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)によって使用される計算プロシージャを示す図である。

    【図27B】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)によって使用される計算プロシージャを示す図である。

    【図27C】本実施例のピクセル生成ユニットのスパン処理ユニット(PIXGENBEN)のセグメントユニット(PBSEG)によって使用される計算プロシージャを示す図である。

    【図28A】本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の面積計算要素において使用される計算プロシージャを示す図である。

    【図28B】本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の面積計算要素において使用される計算プロシージャを示す図である。

    【図29A】本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の面積計算要素によって使用される擬似コードを示す図である。

    【図29B】本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の面積計算要素によって使用される擬似コードを示す図である。

    【図30】本実施例のピクセル生成ユニットのピクセル処理ユニット(PIXGENC)の色補間要素の機能ブロックを示す図である。

    【図31】本実施例のセットアップASICの機能ブロック図である。

    【符号の説明】

    20 ワークステーションプロセッサ(WP) 22 Megatecグラフィックアクセラレータ 24 ワークステーションインターフェースボード(W
    IB) 26 グラフィクスインターフェースボード(GIB) 28 PHIGS幾何ボード(PGB) 30 画像生成ボード(IGB)

    フロントページの続き (72)発明者 マニュエル レイ エンリケーズ アメリカ合衆国 カリフォルニア州 92056 オーシャンサイド, アベニダ アンダンテ 1552 (72)発明者 ジェームス ブイ. ヘンソン アメリカ合衆国 カリフォルニア州 92056 ポーウェイ, トビアソン ロー ド 13810 (72)発明者 カート ステリー アメリカ合衆国 カリフォルニア州 92075 ソラナ ビーチ, モラ ビスタ ウエイ 834

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈