JPH11515121A - スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法および装置 - Google Patents

スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法および装置

Info

Publication number
JPH11515121A
JPH11515121A JP9507824A JP50782497A JPH11515121A JP H11515121 A JPH11515121 A JP H11515121A JP 9507824 A JP9507824 A JP 9507824A JP 50782497 A JP50782497 A JP 50782497A JP H11515121 A JPH11515121 A JP H11515121A
Authority
JP
Japan
Prior art keywords
span
current
polygon
spans
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9507824A
Other languages
English (en)
Inventor
ダラク,ジェローム,エフ.,ジュニア
Original Assignee
レイカー,インコーポレイティド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by レイカー,インコーポレイティド filed Critical レイカー,インコーポレイティド
Publication of JPH11515121A publication Critical patent/JPH11515121A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

(57)【要約】 本発明は、矩形形状検索領域に基づく空間データベースの単純検索または範囲検索によって、高品質画像のカラーでのリアルタイムパフォーマンスを得るため、検索に加えてデータをソートできるデータシフティングケイパビリティを提供する(図13)。ソーティング・マグニチュード連想メモリ(SMCCAM)は範囲検索を行って理想的な閉塞領域の保守的近似を導入し、MCCAMを提供するが、ここでフィールドに保存されたデータワードは、マグニチュード比較に基づき、隣接するワードの対応するフィールドにシフトされる(図7)。この3Dグラフィックス方法は空間データベースに多角形スパンのパラメータを保存し(804−814)、データベースに照会オペレーションを実行して、これらスパン、またはスパンポーションのどれが可視であるか決定し(816および818)、サブスパン毎に新しいスパンポーションを古いスパンポーションと比較するルールを適用し、ラスタライン内の追加多角形辺情報を与え、アンチエイリアシングを行う。

Description

【発明の詳細な説明】 スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法 および装置 発明の分野 本発明の分野は、1)3次元コンピュータグラフィックス、および2)コンピ ュータメモリの2部分、さらに詳しく言うと連想メモリ(CAM)に関する。 発明の背景 3次元コンピュータグラフィックス コンピュータグラフィックスは、コンピュータを使って図を生成する芸術およ び科学である。図または画像の生成はしばしばレンダリングと呼ばれる。一般に 、3次元(3D)コンピュータグラフィックスでは、あるシーンのオブジェクト の表面(またはボリューム)を表す幾何形状を、フレームバッファに保存したピ クセルに変換してから、ディスプレイ装置で表示する。コンピュータモニタとし て用いられるCRTなどのリアルタイムディスプレイ装置が、画像を繰り返し連 続的に表示することによって表示をリフレッシュする。このリフレッシュは通常 、列毎に発生し、各列をラスタラインまたはスキャンラインと呼ぶ。本書では、 ラスタラインは下から上に番号付けられているが、上から下の順に表示される。 3Dアニメーションでは、画像シーケンスが表示され、3次元空間でモーショ ンの錯覚を与える。インタラクティブな3Dコンピュータグラフィックスでは、 ユーザはリアルタイムで自分のビューイングポイントを変えたり幾何形状を変え たりすることができるため 、レンダリングシステムはリアルタイムにオンザフライ式に新しい画像を作成す る必要がある。 3Dコンピュータグラフィックスでは、レンダリング可能なオブジェクトは一 般にそれぞれ独自の局所的オブジェクト座標系を持っているため、オブジェクト 座標からピクセル表示座標へ翻訳202(または変換)する必要がある。概念的 には、これは次の4ステップのプロセスである。1)オブジェクト座標から、シ ーン全体の座標系であるワールド座標への翻訳(サイズ拡大または縮小のための スケーリング含む)、2)シーンのビューイングポイントに基づくワールド座標 から視点座標への翻訳、3)視点座標から透視翻訳視点座標への翻訳で、ここで は透視スケーリング(遠いオブジェクトほど小さく見える)が実行される、4) 透視翻訳視点座標から、スクリーン座標とも呼ばれるピクセル座標への翻訳。ス クリーン座標とは3次元空間中のポイントで、後で説明するように、スクリーン 精密(すなわちピクセル)か、オブジェクト精密(通常は浮動小数点の高精密数 )のいずれかが可能である。これら翻訳ステップは、何らかの翻訳が発生する前 に適切な翻訳マトリクスを予め計算しておくことで、1または2ステップに圧縮 することができる。幾何形状がスクリーン座標に入ると、ピクセルカラー値セッ トに分け(すなわち「ラスタライズ」)、フレームバッファに保存される。ピク セルカラー値の生成には、Gouraud シェーディング、Phong シェーディング、テ クスチャマッピングなど様々な技術が用いられる。 先行技術のレンダリングプロセスの概要は、Wattによる「Fundamentals of Th ree-dimensional Computer Graphics」第5章:The Rendering Process、97− 113頁、Massachusetts州Reading、Addison-Wesley Publishing Company によ る出版,1989年、再版1991年、ISBN0−201−15442−0( 以下、Wa tt参考文献と称する)に見られる。 図1に、固有の座標軸(xobj、yobj、zobj)を持つ3次元オブジェクトの 正四面体110を示す。この3次元オブジェクト110を、(xeye、yeye、zeye )に基づくビューイングポイント130の座標系で翻訳、スケーリング、位 置づけを行う。オブジェクト120をビューイングプレーン102に投影し、も って透視を補正する。この時点で、オブジェクトは2次元になったように見える が、オブジェクトのz座標を留保し、隠面消去技術によって後で使えるようにす る。オブジェクトは最終的に(xscreen、yscreen、zscreen)に基づくスクリ ーン座標に翻訳され、ここでzscreenがページに垂直になる。ここでオブジェク ト上のポイントはピクセル位置(およびその小数部)で記述するディスプレイス クリーン104内のx座標およびy座標と、ビューイングポイント130からの 距離のスケール化バージョンのz座標を持つ。 1つのピクセルに幾何形状の数多くの異なる部分が影響を与えるため、シーン ビューイングポイント130に最も近い表面を表す幾何形状を決定しなければな らない。そのため、各ピクセルについて、ピクセル領域が定めるボリューム内の 可視面がピクセルカラー値を決定する一方、隠面はピクセルに影響を与え得ない 。最も近い不透明面(または、幾何形状の縁がピクセル領域を横切っている場合 は面)よりビューイングポイントに近い非不透明面がピクセルカラー値に影響す る一方で、他の非不透明面はすべて放棄される。本書において、「閉塞された」 という用語は、他の非不透明幾何形状によって隠された幾何形状を記述するため に用いられる。 可視面の決定には多くの技術が開発されており、これら技術を次の通り参照に よって本書に組み入れる。Foley,van Dam,FeinerおよびHughesによる「Comput er Graphics: Principles and Practice 」第15章:Visible-Surface Determination、649−720頁、第2版、Mas sachusetts州Reading,Addison-Wesley Publishing Companyによる出版、199 0年、訂正付き再版1991年、ISBN0−201−12110−7(以下、 Foley 参考文献と称する)。Foley 参考文献の650頁に、「画像精密」および 「オブジェクト精密」という用語が定義され、「画像精密アルゴリズムはディス プレイ装置の解像において多く実行され、各ピクセルの可視性を決定する。オブ ジェクト精密アルゴリズムは各オブジェクトを定義する精密度で実行され、各オ ブジェクトの可視性を決定する」とされている。 レンダリング・プロセスが進むにつれ、大半の先行技術レンダラーでは、ピク セルが定めるボリュームに複数の面が交差するため、あるスクリーンピクセルの カラー値を複数回計算しなければならない。あるシーンについてピクセルをレン ダリングしなければならない平均回数をシーンの深さ複雑性と呼ぶ。単純なシー ンの深さ複雑性は1に近いが、複雑なシーンの深さ複雑性は10や20になるこ とがある。シーンモデルが複雑になるにつれ、レンダラーはますます深さ複雑性 の高まるシーンを処理する必要がでてくる。このように大半のレンダーで、ある シーンの深さ複雑性は無駄な処理の尺度となる。例えば、深さ複雑性が10のシ ーンでは、計算の90%が隠れたピクセルに浪費されている。この無駄な計算は 単純なZバッファ技術(本書で後で説明)を用いるハードウェア・レンダラーに 典型的なものだが、これはハードウェアに容易に構築できるために選ばれること が多い。Zバッファ技術より複雑な方法はこれまで一般的に複雑すぎ、コスト効 果高く構築することができなかった。本発明の方法および装置の重要な特徴は、 幾何形状をラスタライズする前に隠れた部分を消去することでこの無駄な計算を 回避する一方 、単純なままコスト効果の高いハードウェアに構築できる点である。 表面上のポイント(しばしば多角形頂点)をスクリーン座標に翻訳する時、こ のポイントは次の3つの座標を持つ:1)ピクセル単位のx座標(一般に小数部 を含む)、2)ピクセル単位のy座標(一般に小数部を含む)、および3)視点 座標、バーチャルスクリーンからの距離、またはビューイングポイントから面の 相対距離を保存するその他座標系でのポイントのz座標。本書では、正のz座標 値をビューイングポイントからの「ルック方向」に用い、小さい値はビューイン グポイントに位置が近いことを示す。 表面をプレーナ多角形セットで近似する時、各多角形の頂点をスクリーン座標 に翻訳する。多角形の中または上のポイント(頂点以外)については、エッジウ ォーキング218およびスパン補間220のプロセスによって、スクリーン座標 を頂点座標から補間する。このように、z座標値は一般に幾何形状をレンダリン グした時各ピクセル値に(カラー値と共に)含まれる。 ジェネリック3Dグラフィックス・パイプライン 多くのハードウェアレンダラーが開発されており、参照によって次の例を本書 に組み入れる:Deering およびNelsonによる「Leo: A System for Cost Effecti ve 3D Shaded Graphics」、SIGGRAPH93議事録101−108頁、1993年8 月1−6日、コンピュータ・グラフィックス議事録、年次会議シリーズ、ACM SI GGRAPH、ニューヨーク、1993年、ソフトカバー、ISBN0−201−58 889−7およびCD−ROM ISBN0−201−56997−3(以下、 Deering 参考文献と称する)には、「トップレベルのほぼすべての市販3Dグラ フィックス・アクセラレータがこの抽象に一致するため、真にジェネリック」と するジェネリック3Dグラ フィックス・パイプライン200(すなわち、レンダラーあるいはレンダリング システム)の図が含まれ、このパイプライン図を本書に図2として再現する。こ のようなパイプライン図はレンダリングのプロセスを示すが、特定のハードウェ アは記述しない。本書は、ジェネリック3Dグラフィックス・パイプライン20 0のステップを一部共有する新しいグラフィックス・パイプライン400を提示 する。ジェネリック3Dグラフィックス・パイプライン200の各ステップを本 書に簡単に説明し、図3のメソッドフロー図300にも示す。本書を通じて多角 形の処理を想定するが、3D幾何形状を記述する他の方法も代用できる。説明を 単純化するため、記述する方法では多角形の種類として三角形を用いる。 図2に示すように、ジェネリック3Dグラフィックス・パイプライン200の 浮動小数点インテンシブ・ファンクション250の最初のステップは、上記に説 明した変換ステップ202である。変換ステップ202は図3のメソッドフロー 図300の外ループの最初のステップとしても示され、これには「次の多角形取 得」も含まれる。第2のステップ、クリップテスト204は、多角形がビューボ リューム106に少なくとも部分的に含まれるか否か(時には錐台の形で)、多 角形をチェックする。多角形がビューボリューム106中にない場合、これは放 棄され、そうでない場合は処理が継続する。第3ステップは面決定206で、こ こでビューイングポイントより外を向く多角形は放棄される。一般に、面決定2 06はボリュームの閉じたオブジェクトにのみ適用される。第4ステップ、ライ ティング計算208には一般に、複数の各種光源によるGouraud シェーディング および/またはテクスチャマッピングのセットアップを含むが、Phong シェーデ ィングその他の方法についてもセットアップできる。第5ステップ、クリッピン グ210は、ビューボリュ ーム106外の多角形部分を削除するが、これは、この部分がビューイングプレ ーン102の矩形領域内に投影しないためである。一般に、多角形クリッピング 210は、多角形をどちらもビューイングプレーン102の面積内に投影する2 つの小さな多角形に分けることによって行う。多角形クリッピングは計算するに は高価だが、その必要性は本発明では回避されるため、計算の節約となる。第6 ステップの透視分割212では、オブジェクトのビューイングプレーン102へ の投影の透視補正を行う。この時、多角形の頂点を表すポイントを、ステップ7 のスクリーン空間変換214ステップによりピクセル空間座標に変換する。第8 ステップのインクレメンタルなレンダーのセットアップ216では、エッジウォ ーキング218とスパン補間220(例:x、yおよびz座標;RGBカラー; テクスチャマップ空間μおよびν座標;等)に必要な各種開始、終了および増分 値を計算する。 ドローイング・インテンシブ・ファンクション260では、エッジウォーキン グ218は、前回生成したスパン(同じ多角形中)の値をインクレメントするこ とによりディスプレイ装置の各ラスタラインの水平スパンをインクレメンタルに 生成し、もって多角形の対向する辺にそって縦に「ウォーキング」する。同様に 、スパン補間220はスパンに沿って水平に「ウォーキング」して、ビューイン グポイント130からのピクセルの距離を示すz座標値を初めとするピクセル値 を生成する。このz座標値をZバッファに保存した対応する値と比較することに よって、zバッファブレンド222は新しいピクセル値を(そのピクセル位置で 前に保存した値よりビューイングポイントに近い場合)フレームバッファ224 に書き込むことで保存するか、あるいはその新しいピクセル値を(遠い場合)放 棄する。このステップでは、アンチエイリアシング方法(次のセク ションで説明)によって新しいピクセルカラーを古いピクセルカラーとブレンド することができる。 ジェネリック3Dグラフィックス・パイプライン200にはダブルバッファフ レームバッファ224が含まれるため、ダブルバッファMUX226も含まれる 。出力ルックアップテーブル226が、カラーマップ値翻訳のために含まれる。 最後に、デジタルからアナログへの変換228によって、ディスプレイ装置に入 力するアナログ信号を生成する。 ジェネリック3Dグラフィックス・パイプライン200の大きな欠点は、その ドローイング・インテンシブ・ファンクション260が固定数の多角形について ピクセルレベルで決定的でないことである。すなわち、固定数の多角形の場合、 平均多角形サイズが大きくなると、より多くのピクセルレベルの計算が必要にな る。しかしながら、浮動小数点インテンシブ・ファンクション250は多角形の 数に比例し、平均多角形サイズから独立している。そのため、浮動小数点インテ ンシブ・ファンクション250とドローイング・インテンシブ・ファンクション 260の計算力のバランスが平均多角形サイズで決まることから、バランスさせ るのが難しくなる。 理想的なレンダラーのピクセルドローイングの計算要件は、ビューボリューム 106中のすべての多角形のピクセル総数ではなく、ディスプレイスクリーン1 04のピクセル数に比例することになる。この理想は、ドローイング・インテン シブ・ファンクションの大半を実行する前に隠れた幾何形状を消去するため、本 発明によって達成される。本発明では、浮動小数点計算が実質的にドローイング 計算量から独立しているため、計算負荷のバランスは問題とならない。 アンチエイリアシング 本書において、ピクセルとはディスプレイ装置の個々に制御可能な最小要素と 定義される。しかし、画像は離散ピクセルに量子化されるため、空間的なエイリ アシングが発生する。典型的なエイリアシングアーティファクトは、直線や辺が ピクセルの列を斜めに横切る時に生じる「階段」効果である。理想的なアンチエ イリアシング画像では、各ピクセルについてピクセル領域内の可視面による部分 的カバレッジを考慮して平均カラーを計算することにより、この「階段」効果を なくしている。 レンダリング・システムによっては、ピクセルをサブピクセルに分けて各サブ ピクセルを独立してカラー化することによってエイリアシング効果を減少させて いる。この画像を表示すると、各ピクセル内の全サブピクセルがブレンドされて 、そのピクセルについて平均カラーを形成する。1ピクセルあたり16のサブピ クセルを用いるレンダラーが、Akeleyによる「RealityEngine Graphics」、SIGG RAPH93 議事録109−116頁、1993年8月1−6日、コンピュータ・グ ラフィックス議事録、年次会議シリーズ、ACM SIGGRAPH、ニューヨーク、199 3年、ソフトカバー、ISBN0−201−58889−7およびCD−ROM ISBN0−201−5997−3(以下、Akeley参考文献と称する)に記述 されている。サブピクセルを用いる欠点は、各サブピクセルでカラー値を計算す ることによる計算の増加である。Akeley参考文献では、計算の増加は、ピクセル が多角形の線や辺を横切った時にのみピクセルをサブピクセルに分割することで 減らしている。多角形の数が増えれば、この減少も重要でなくなる。言い換える と、重なり合う多数の小さな多角形から画像が形成される場合、大半のピクセル に分割が必要となる。サブピクセルの利用は画像精密なアンチエイリアシング技 術である。 先行技術の別のアンチエイリアシング方法は、アルファブレンディングの実行 に用いるAバッファで(この技術はAkeley参考文献にも含まれる)、L.Carpente r による「The A-buffer,an Antialiased Hidden Surface Method」、SIGGRAPH 1984会議議事録103−108頁(以下、Carpenter 参考文献と称する) に記述されている。Aバッファは、レンダリングした多角形によるピクセルのパ ーセントカバレッジを記録することでエイリアシングを減らす画像精密アンチエ イリアシング技術である。この技術の主な欠点は、許容可能なアンチエイリアシ ング多角形を得るため、各ピクセルでフロント・ツー・バック(あるいはバック ・ツー・フロント)に多角形をソートしなければならない点である。 理想的なアンチエイリアシング方法では、オブジェクト精密な計算を実行して 、幾何形状の可視部分を精密に識別する。これには、多角形の辺を互いに比較し て、各多角形がカバーする各ピクセルの小数部を決定することが必要となる。本 発明では、各スキャンライン内でオブジェクト精密なアンチエイリアシングを実 行するため、この理想を達成できる。 Zバッファ 簡単に言うと、Zバッファは、各ピクセルについてピクセルに影響する(ビュ ーイングポイントに)最も近い幾何形状のz座標を保存する。そのため、新しい ピクセル値が生成されると、新しい各ピクセルのz座標を対応するZバッファで の位置と比較する。新しいピクセルのz座標の方が小さいと(すなわちビューイ ングポイントに近いと)、この値をZバッファに保存し、新しいピクセルのカラ ー値をフレームバッファに書き込む。新しいピクセルのz座標の方が大きいと( すなわちビューイングポイントから遠いと)、フレームバッファとZバッファの 値は無変更で、新しいピクセルを放棄す る。Zバッファは画像精密な可視面決定技術である。 先行技術Zバッファ方法を含むフロー図を図3に示す。Zバッファ隠面消去方 法の大きな欠点は、隠面消去を行うには幾何形状をピクセル値に変換しなければ ならない点である。これは、保存/放棄決定をピクセル毎に行うためである。こ れとは対照的に、本発明は、ピクセルではなくスパンを処理することにより、よ り高いレベルで隠面消去を実行する。深さ複雑性の大きいシーンでは、ほとんど が隠れており放棄されるのにも拘わらず、ビューボリューム内の幾何形状をすべ てピクセルに変換しなければならないため、ピクセル毎の隠面消去計算によって 無駄な計算が増える。ハードウェアレンダリングシステムでは、ピクセルカラー 生成(シェーディング、テクスチャマッピング等)はしばしばZバッファ比較テ ストと平行して行われるため、計算の大半がカラー生成に関連し、ピクセルの大 半が放棄されるため、無駄な計算が増加する。さらに、Zバッファメモリオペレ ーションは読み取り−修正−書き込みサイクルであり、Zバッファメモリの入/ 出力バスはピクセルをフレームバッファに書き込む際、一般に2回方向を変更し なければならず、レンダラーにボトルネックを生じる。このボトルネックは、本 発明の装置および方法には生じない。 先行技術のZバッファは従来のランダムアクセスメモリ(RAM)、ビデオR AM(VRAM)または専用DRAMに基づく。専用DRAMの1例が、Deerin g,SchlappおよびLavelle による「FBRAM: A New Form of Memory Optimized fo r 3D Graphics」、SIGGRAPH94議事録167−174頁、1994年7月24− 29日、コンピュータ・グラフィックス議事録、年次会議シリーズ、ACM SIGGRA PH、ニューヨーク、1994年、ソフトカバー、ISBN0−201−6079 5−6に提示されている。 幾何形状データベース レンダリング可能なシーンの生成に必要な幾何形状はデータベースに保存され る。この幾何形状データベースは、グラフィックス基本立体の単純なディスプレ イリストでも、階層的に編成されたデータ構造でもよい。階層的編成の幾何形状 データベースでは、階層のルートはデータベース全体で、データ構造のサブノー ド第1層は一般に、ビューポイントから見える「ワールド」のすべてのオブジェ クトである。各オブジェクトにはそれぞれサブオブジェクトが入り、サブにはサ ブサブオブジェクトが入っているため、オブジェクトの階層的「ツリー」となる 。以下、「オブジェクト」という用語は、オブジェクトの階層ツリーにおけるノ ードを指す。そのため、各サブオブジェクトはオブジェクトである。「ルートオ ブジェクト」という用語は、データ構造のサブノードの第1層にあるノードを指 す。故に、シーンの階層データベースはシーンのルートノードから始まり、オブ ジェクトの第1層はルートオブジェクトである。 この種の階層的データベースは、Programmer's Hierarchical Interactive Sy stem(PHIGS)およびPHIGIS PLUS 標準で用いられる。これら標準の説明は、T.L.J .Howard他による「A Practical Introduction to PHIGS and PHIGS PLUS」、Add ison-Wesley Publishing Company、1991年、ISBN0−201−4164 1−7(参照により本書に組み入れ、以下、Howard参考文献と称する)にある。 Howard参考文献は、5頁から8頁に3Dモデルの階層的性質とそのデータ構造を 説明している。階層的モデルは、階層の各層で別個の変換マトリクスを提供でき るため、変換マトリクスを変更することによってモデルまたはモデルの一部を移 動することが可能である。これによって無変更モデル幾何形状(オブジェクト座 標中)をアニメーションの移動オブジェクトとして用いることができる。 連想メモリ 大半の連想メモリ(CAM)は、入力ベクトルと、CAMに保存する各データ ワードとの間でビット毎の一致テストを行う。この種のCAMは、すべてのワー ドの対応するビットが一致テストに影響しないよう、しばしばビット位置のマス キングを行う。このタスクを行うには多数のクロックサイクルが必要であるため 、一致テスト中のCAMで大きさの比較を行うのは非効率的である。 CAMは現在、一部のコンピュータのバーチャルメモリーシステム内で翻訳ル ックアサイド・バッファに用いられている。CAMはまた高速コンピュータネッ トワークでアドレスの一致にも用いられている。CAMは実用的な先行技術レン ダーでは用いられていない。 マグニチュード比較CAM(MCCAM)は、本書において、保存したデータ を数として扱い、データの算術マグニチュード比較(すなわち、より小さい、よ り大きい、より小さいまたは等しい等)を並列して実行するCAMと定義される 。これは、保存したデータを数としてではなく厳密にビットベクトルとして扱う 通常のCAMとは対照的である。参照によって本書に含まれるMCCAM特許は 、Jerome F.Duluk Jr.による1991年2月26日付与の米国特許番号第4, 996,666号、「完全並列マグニチュード比較の可能な連想メモリシステム 」(以下、Duluk 特許と称する)である。特に参照するDuluk 特許内の構造には 、プレフィックス「Duluk 特許」を含む(例えば、「Duluk 特許MCCAMビッ ト回路」等)。MCCAMは先行技術のレンダラーでは用いられていない。 MCCAMの基本的内部構造はワードに編成されたメモリビットのセットで、 ここでは各ワードが保存されたデータと入力データとの間で1以上の算術マグニ チュード比較を実行することができる。 一般に、MCCAMでは、数のベクトルをワード配列に平行して適用した時、全 ワード中のすべての算術比較が平行して発生する。このような並列検索比較オペ レーションを保存データの「照会」と呼ぶ。 本発明は、ソーティング実行能力を含む各種特徴を付加することによってMC CAMのケイパビリティを強化する。この新しいMCCAMを、ソーティング・ マグニチュード比較CAM(SMCCAM)と呼ぶ。 発明の概要 コンピュータグラフィックスは、コンピュータを使って図または画像を生成す る芸術および科学である。このような図の生成はしばしばレンダリングと呼ばれ る。例えば3次元アニメーションでのモーションの発現は、画像シーケンスを表 示することによって達成する。インタラクティブ3次元(3D)コンピュータ・ グラフィックスでは、ユーザはリアルタイムで自分のビューポイントを変えたり 幾何形状を変えたりすることができるため、レンダリングシステムはリアルタイ ムにオンザフライ式に新しい画像を作成する必要がある。そのため、カラーの高 品質画像でのリアルタイムのパフォーマンスがますます重要になっている。 本発明の装置および方法は、検索に加えてデータのソーティングの可能なデー タシフティング能力を提供する。また、矩形形状検索領域に基づく空間データベ ースのシンプル検索または範囲検索を実行する新しい方法を提供する。範囲検索 は、特殊な新ソーティング・マグニチュード比較連想メモリ(SMCCAM)装 置で行うことができる。このSMCCAMはマグニチュード比較連想メモリを提 供し、ここではメモリの各ワードのフィールドに保存したデータを 、隣接するワードの対応するフィールドにシフトすることができ、このシフトが マグニチュード比較結果に基づいて条件付きで実行される。 3Dグラフィックス方法では空間データベースに多角形スパンのパラメータを 保存し、照会オペレーションをデータベースについて実行してどのスパン、また はスパン部分が可視かを決定する。スパンの空間データベースをSMCCAMに 保存できる。SMCCAM装置は、そのオペレーションが高速で、標準や新しい ビデオ技術(NTSC、PAL、HDTV等)、ビジュアルフライトシミュレー ション、バーチャルリアリティ画像生成等のリアルタイムオペレーションをサポ ートできるため、重要である。 範囲検察を用いるため、理想的「閉塞領域」の保守的近似を導入する。閉塞テ ストによって理想的閉塞領域の近似としての閉塞テスト領域を定義する。カレン トスパンポーションを新しいスパンと比較する際、ルールベース方法を用いて、 新しいスパンは閉塞テストによって発見し、メモリに保存したデータ構造から読 み出す。そのメモリはSMCCAMであることが有利だが、従来の空間データベ ース方法で空間データ構造をインプリメントする従来のメモリでもよい。比較結 果に基づき、考えられるいくつかの単純なルールの1つを選択し、これを適用し てカレントスパンのどの片が可視かを決定する。いくつかの代替えルールを説明 する。 セグメントスパン、台形スパンおよび四辺形スパンを含む複数の代替えスパン 表現を設ける。これらスパンのそれぞれを独自のスパンパラメータセットで定義 するが、その中にそれぞれ複数の選択肢がある。スパンパラメータはメモリのデ ータ構造に保存され、SMCCAMによってインプリメントすることができ、照 会検索オペレーション中に用いる。これらスパンタイプにはそれぞれ利点がある 。例えば、台形スパンまたは四辺形スパンは、セグメントスパンより優れたアン チエイリアシング性能を持つ。この性能上の利点は、特定のラスタライン内の多 角形の左および右辺情報を保存することによって達成する。台形および四辺形ス パンの照会オペレーションを取り扱う方法について説明する。 空間検索およびソーティング装置および方法は、空間検索およびソーティング を用いてフロント・ツー・バックまたはバック・ツー・フロント順で透明な多角 形スパンを正しくレンダリングできる。 この方法および装置に可能な改良として、2つの別個のメモリ(バケットソー トメモリおよびカレント多角形メモリ)を使って多角形の幾何形状情報がスクリ ーン座標に翻訳された時にこれを保存するのではなく、1つのメモリ(ソートメ モリ)を使って多角形の幾何形状情報を保存することができる。これは、カレン ト多角形メモリをソートメモリへのポインタのリストに代えることによって、バ ケットソートメモリからカレント多角形メモリに多角形パラメータをコピーする 必要をなくすことによって行う。 台形スパンと四辺形スパンに考えられるもう1つの改良として、空間データ構 造がスパン全体のパラメータを保存することが可能で、スパンをデータ構造から 読み取った時、サブスパンのセットをオンザフライで生成し、これらサブスパン をフルスパンの高さに縦に配分し、各サブスパンがセグメントスパンとなる。カ レントスパンポーションと新しいスパンを比較するためのルールはサブスパン毎 に適用し、ラスタライン内の追加多角形辺情報を与えて、これがアンチエイリア シングとなる。ここでも、リアルタイムパフォーマンスのため、空間データ構造 をSMCCAMに保存することができる。 本発明の装置、システムおよび方法はまた、基本的システムにい くつかのオプションと強化方法を与える。例を挙げると、これにはレンダリング 順の保存、シングルバッファのフレームバッファを利用して従来のビデオカード との互換性を高める、特定の多角形辺のアンチエイリアシングを選択的にオンま たはオフする能力、多角形ではなく辺ペアを保存することによって下流の処理を 単純化する能力、カレント多角形メモリをポインタリストに置き換えることで除 去する能力、クリッピングプレーン(フロント、リアおよび/または任意)を追 加する能力、幾何形状をレンダリングの入力として保存するための幾何形状キャ ッシュの装備、スパンメモリおよびページメモリI/Oバスアーキテクチャのペ ージ数に関する柔軟なオプション、多角形以外の幾何学的基本立体(CSG基本 立体等)のサポート、パフォーマンスで妥協した従来のハードウェアで本発明を サポートする代替え案などがある。 図面の簡単な説明 図1は、3次元空間のオブジェクトとそのビューイングプレーンへの投影、お よびディスプレイスクリーンでの画像である。 図2は、Deering 参考文献のジェネリック・レンダリング・パイプラインであ る(先行技術)。 図3は、標準Zバッファ方法のメソッドフロー図である(先行技術)。 図4は、スパン・ソーティング・レンダリング・パイプラインである。このス パンメモリはSMCCAM800でインプリメントできる。 図5は、スパン・ソーティング・レンダリング・アーキテクチャのブロック図 である。 図6は、9個の多角形がディスプレイスクリーンと交差する様子 と特定のラスタラインに含まれる様子を示す例である。 図7は、多角形スパンをモデル化する次の3つの方法である:1)ラインセグ メント、2)台形、および3)四辺形。 図8は、ソーティング・マグニチュード比較連想メモリ800(SMCCAM 800)内のデータ編成である。 図9は、SMCCAMワード900ブロック図である。 図10は、2つの潜在的閉塞スパンを含むスパン閉塞テスト照会がカバーする 領域である。 図11は、x―z空間で示す1本のラスタライン上のスパンセット例である。 図12は、各スパン周囲の境界ボックスを除く図11に示すのと同じスパンセ ット例である。 図13は、スパン・ソーティング・レンダリング方法1300のフロー図であ る。 図14は、スパン・ソーティング・レンダリング方法1300の一部である多 角形処理方法1400のフロー図である。 図15は、スパン・ソーティング・レンダリング方法1300の一部であるカ レント多角形メモリ処理方法1500のフロー図である。 図16は、スパン・ソーティング・レンダリング方法1300の一部であるバ ケット・ソート・メモリ処理方法1600のフロー図である。 図17は、ライト・スパン・パラメータ方法1700のフロー図である。 図18は、スパン・ソーティング・レンダリング方法1300の一部である簡 易スパン・ラスタリゼーション方法1800のフロー図である。 図19は、スパン・インタラクション命名定義である。 図20は、スパンインタラクションタイプの36のバラエティである。 図21は、スパン・ソーティング・レンダリング方法1300の一部であるセ グメント・スパン・ラスタリゼーション方法2100のフロー図である。 図22は、セグメント・スパン・ラスタリゼーション方法2100の一部であ るルール1 2200方法のフロー図である。 図23は、セグメント・スパン・ラスタリゼーション方法2100の一部であ るルール2 2300方法のフロー図である。 図24は、セグメント・スパン・ラスタリゼーション方法2100の一部であ るルール3 2400方法のフロー図である。 図25は、セグメント・スパン・ラスタリゼーション方法2100の一部であ るルール4 2500方法のフロー図である。 図26は、セグメント・スパン・ラスタリゼーション方法2100の一部であ るルール5 2600方法のフロー図である。 図27は、15のスパンを持つラスタラインの例である。各スパンの境界ボッ クスと、x軸に沿った各スパンのxL位置を共に示す。 図28は、フェイズロックラスタライン処理とディスプレイのタイミング図で ある。 図29は、シングルバッファのフレームバッファのタイミング図である。 図30は、スパンラスタリゼーションが1以上のスクリーンディスプレイタイ ムをカバーする場合のシングルバッファのフレームバッファのタイミング図であ る。 図31は、スパンプロセッサのハードウェアアーキテクチャのブ ロック図である。 図32は、スパンプロセッサ内の比較およびオフセット計算ブロックのブロッ ク図である。 図33は、先行技術のMCCAM CMOSビットセルである。 図34は、SMCCAMビットセルの「TTLタイプ」回路である。 図35は、マスタスレーブ・フリップフロップのマスタハーフに静的記憶装置 を用いるSMCCAMビットセルのCMOS回路である。 図36は、マスタスレーブ・フリップフロップの両ハーフに動的記憶装置を用 いるSMCCAMビットセルのCMOS回路である。 図37は、SMCCAMビットセルの配列である。 図38は、ラスタライン内の縦の複数スパンである。 図39は、図示の台形スパンが共に動作しなかった場合、可視の遠いスパンを 閉塞するため共に動作する2個の台形スパンである。 図40は、x―z空間で示す台形スパンセットの例である。 図41は、上部および下部別処理のためのSOT照会である。 図42は、スパン上部とスパン下部に別個に閉塞処理を行う台形スパン・ラス タリゼーション方法バージョンを示す台形スパンセットの例である。 図43は、各可視性トランジションを処理するためのSOT照会である。 図44は、複雑な形状を持つSOT照会である。 図45は、広い検索領域を持つSOT照会である。 図46は、可視不透明面を太い黒線で、可視半透明スパンを太い陰付き線で示 したラスタラインのセグメントスパンセットである。 図47は、エンドポイントあたり1つのz値のみ使う近似台形ス パンの四辺形スパンへの変化である。 図48は、x―z空間で示す四辺形スパンセットの例である。 図49は、ダイレクトスパン生成によるスパン・ソーティング・レンダリング ・パイプラインである。 図50は、ダイレクトスパン生成によるスパン・ソーティング・レンダラー・ アーキテクチャである。 図51は、ソートメモリ4904に保存される多角形パラメータの代替えセッ トである。 図52は、ジェネリック三角形パラメータである。 図53は、スパンパラメータレジスタ3104に保存される代替えスパン表現 である。 図54は、ラスタライズプロセッサ512に送られる代替えスパン表現である 。 図55は、スパンメモリ408に保存されるスパンパラメータの代替えセット である。 図56は、角を含める場合生成できる複数の台形スパンである。 発明の詳細な説明 スパン・ソーティング・レンダリング・パイプライン 図4は、スパン・ソーティング3Dグラフィックス・パイプライン400を示 すが、最初の6つのステップを多角形処理1400ステップとして定義する。最 初の5つのステップ(変換202、クリップテスト204、面決定206、ライ ティング208、および透視分割212)は、ジェネリック3Dグラフィックス ・パイプライン200の最初の6つのステップの内の5つと同じである。スパン ・ソーティング3Dグラフィックス・パイプライン400はオブジェクト精密で 動作し、座標はディスプレイスクリーン104の領域 に限定されないため、クリップ210ステップは省略される。クリップ210ス テップの省略によって、ビューボリューム106中のすべての多角形を同様に扱 うことができる。しかしながら、クリップ210ステップは所望により挿入する ことができる。スパン・ソーティング3Dグラフィックス・パイプライン400 は、専用ハードウェアで構築するか、完全にソフトウェアで行うか、またはこの 2つを組み合わせることができる。以下、専用ハードウェアのインプリメンテー ションを想定し、新しい装置を説明する。 新しい装置のトップレベルのブロック図を図5に示す。多角形処理1400ス テップは、多角形プロセッサ502で実行する。多角形プロセッサ502の最後 のステップは、多角形パラメータ402の計算である。多角形プロセッサ502 が出力する多角形パラメータは、スパン・ソーティング3Dグラフィックス・パ イプライン400の残りが必要とする多角形を記述する。 各多角形について、多角形パラメータがバケット・ソート・メモリ400に書 き込まれ、次のものを含む:1)それぞれ、(x1、y1、z1)、(x2、y2、 z2)、(x3、y3、z3)等と定義される多角形頂点V1、V2、V3等のオブジ ェクト精密スクリーン座標での位置、2)Gouraud(またはPhong)シェーディン グおよび/またはテクスチャマッピングパラメータのための頂点カラーなどを含 むカラー情報、3)各辺のyに対するxおよびzの辺の導関数(すなわちδx/ δyおよびδz/δy)、4)開始ラスタライン(または最上)、ySTART、5 )終了ラスタライン(または最下)、yEND、および6)変数dに割り当てられ たxに対するzのスパン導関数(すなわち、δx/δy)。このリストの最後の 4つを計算し402、これは多角形プロセッサ502で行う。 多角形を三角形と想定し、辺の導関数を次のように計算する: 開始ラスタライン、ySTARTと終了ラスタライン、yENDを計算する時、一般に ディスプレイスクリーン104の辺を考慮しなければならない。図6に、8個の 多角形(この場合、三角形)を有するディスプレイスクリーン104を示すが、 この一部がディスプレイスクリーン104の辺と交差している。多角形がディス プレイスクリーン104の右または左辺と交差しない場合、ySTARTおよびyEND は次のように計算できる: STARTの計算でまず多角形の頂点のy座標の最大値がわかり、多角形の「最 上」y座標が見つかる。そして関数IntPartOf()が最上y座標「の整数部」を取 り、多角形の「最上」y座標のラスタラインを計算する。多角形のスタートはデ ィスプレイスクリーン104の最上ラスタラインより上にはあり得ないため、多 角形が非存在ラスタラインからスタートする場合、MinOf()関数はyMAXを代用す る。yENDの計算も同様に行う。図6に、yMAXからスタートする多角形602と 、ラスタラインゼロで終了する別の604を示す。 多角形がディスプレイスクリーン104の右または左辺と交差すると、ySTAR T およびyENDは、ディスプレイスクリーン104内で多角形に影響を受ける最初 で最後のラスタラインでなければならない。図6において、例の多角形606は yA608で始まり、yB 610で終わる。別の例の多角形612はyC614で始まりラスタラインゼロ で終わる。ディスプレイスクリーン104の右および左辺の効果は無視できるが 、スパン生成1500でディスプレイスクリーン104内にないスパンが生成さ れるため、これをテストしてこのようなスパンを放棄しなければならない。 スパン導関数d(すなわちδz/δx)の計算は、従来の様々な方法の1つを 使ってできる。 スパン導関数は各プレーナ多角形について一定で、正または負の値を取ることが できる。 バケット・ソート・メモリ404への書き込みは各多角形のySTARTに従って 行う。1本のラスタラインにつき1つの「バケット」があり、多角形はその開始 ラスタラインに対応する1つのバケットに入れる。各バケット内で多角形をソー トする必要はない。バケット・ソート・メモリ404中のデータ管理は、バケッ ト・ソート・プロセッサ504が行い、これはバケット毎に1つのリストをリン クさせてソートすることができる。さらに、バケット・ソート・メモリ404は ダブルバッファとして、シーンに関連する書き込みオペレーションを前のシーン からの読み取りオペレーションと同時に実行することができる。 前述のカラー情報すべてをバケット・ソート・メモリ404に保存したら、こ れをスパン・ソーティング・レンダラー500(図5参照)を介してラスタライ ズ・プロセッサ512に運ばなければならない。あるいは、バケット・ソート・ メモリ404のカラー情報を情報ポインタで置き換えて、別の多角形情報メモリ 514に保存することができる。情報ポインタは多角形情報メモリ514へのア ドレスで、ここには多角形のすべてのカラー情報が保存され、ラスタライズ・プ ロセッサ514が用いてカラー情報を読み取ることができる。情報ポインタはラ スタライズ・プロセッサ512に運ばれる。情報ポインタは多角形のすべてのカ ラー情報と比べるとほとんどビットがないため、これによってスパン・ソーティ ング・レンダラー500内の高価なハードウェアメモリを節約できる。この節約 は次の理由から可能である:1)カラー情報は多角形全体を通じて一定で、多角 形のすべてのスパンが共有できる、2)カラー情報は、ラスタライズ・プロセッ サ512が可視スパンポーションをカラー化するまで必要ない。本書後半では情 報ポインタと多角形情報メモリ514の利用を想定する。 スパン・ソーティング・レンダラー500内で、現在レンダリングしているラ スタラインに影響するすべての多角形のリストをカレント多角形メモリ406に 保持する。そのため、シーンのレンダリングが始まる時、カレント多角形メモリ 406は空である。レンダリング中、特定のラスタラインに到達すると、そのラ スタライン(すなわちそのバケット)にySTARTを持つすべての多角形がバケッ ト・ソート・メモリ404から読み出され、カレント多角形メモリ406に付加 される。レンダリングが進むにつれ、多角形のyEND値に到達するので多角形は カレント多角形メモリ406から削除される。カレント多角形メモリ406のデ ータは、カレント多角形プロセッサ506が管理し、これはパイプライン図40 0に示すように、「バケット・ソート・メモリ404のデータ処理」オペレーシ ョン1600を実行する。また、カレント多角形プロセッサ506は、ラスタラ インに影響する多角形をスパン生成プロセッサ508に送る。 ラスタラインのレンダリング開始から、そのラスタラインにスパ ンを持つ各多角形がスパン生成プロセッサ508に入力され、これがスパン生成 1600を実行する。スパン生成プロセッサ508は、式1の辺導関数を含む各 多角形の幾何学的特性を用いて、カレントラスタライン内のそのスパンの左右エ ンドポイントの、オブジェクト精密スクリーン座標での位置を計算する。スパン は、図7に示すように、単純なラインセグメント、台形または四辺形にモデル化 できる。スパンの幾何学的特性は照会プロセッサ510に送られ、これら特性に は次のものが含まれる:1)スパンの左エンドポイントの座標、2)スパンの右 エンドポイントの座標、3)スパン導関数d、および4)情報ポインタ。スパン のエンドポイントの座標は次のいずれかになる:1)スパンを図7Aに示すライ ンセグメントとしてモデル化した時に用いられるカレントラスタライン内の(x 、y)ポイント、2)スパンを図7Bに示す台形としてモデル化した時に用いら れるカレントラスタラインの上辺と下辺の2つの(x、z)ポイント、または3 )スパンを図7Cに示す四辺形としてモデル化した時に用いられるカレントラス タラインの上辺と下辺のz座標とx座標を含む(xU、xL、z)トリプレット。 図6に示す8個の多角形例の内、616、618、620、622の4個はカレ ントラスタライン例640上にスパン626、628、630、632を有する 。スパン例の1つ626は負のx値で始まっていることに注意する。 あるラスタラインについて、スパンの幾何学的特性がスパン生成プロセッサ5 08から出力されると、これらを照会プロセッサ510が受け取ってすべてをダ ブルバッファのスパンメモリ406のバンクの1つに書き込む。スパンがスパン メモリ406に書き込まれると、これらは次によって優先順にソートされる:1 )左x座標、2)左z座標、および3)スパン導関数。一方のバンクへのスパン データの書き込みと同時に、スパンメモリ406の他方のバンクのスパンデータ を処理して可視スパンポーションを発見する。 照会プロセッサ510がスパンメモリ406の一方のバンクに保存されたスパ ンの処理を完了し、次のラスタラインのすべてのスパンをスパン生成プロセッサ 508から受け取って他方のバンクに書き込むと、スパンメモリ406の2つの バンクがスワップされる。バンクスワップ後、照会プロセッサ510とスパンメ モリ406は共同してスパンデータに関する算術比較(以下、照会オペレーショ ンと称する)と各種算術演算を実行して1800または2100を処理し、どの スパン、またはどのスパンポーションがシーンで可視かを決定する。これら可視 スパン(またはスパンポーション)はラスタライズ・プロセッサ512に送られ る。照会プロセッサ510とスパンメモリ406のより詳細なブロック図を図3 1に示す。 ラスタライズ・プロセッサ512は完全に可視なスパン(またはスパンポーシ ョン)のみ受け取る。各スパンを処理するため、ラスタライズ・プロセッサ51 2はインクレメンタルなスパンレンダー412をセットアップしてから、スパン 補間220を実行する。ピクセルカラー値は、多角形情報メモリ514、および 場合によってテクスチャマップメモリ516に保存されたデータを利用して生成 する。ピクセルカラー値を生成すると、これらはラスタラインメモリ416に書 き込まれる。 ラスタラインメモリ416は、複数の完全なラスタラインについてすべてのカ ラーピクセル値を保存できる。すなわち、416は現在(ラスタライズ・プロセ ッサ512を介して)デジタルアナログコンバータ228に送られているラスタ ラインと複数の後続ラスタラインについてカラー値を保存する。あるラスタライ ンのすべての値がデジタルアナログコンバータ228に送られると、ラスタライ ンメモリ416の対応する部分に他のラスタラインを上書きすることができる。 このように、必要なメモリの総量は、先行技術の3Dグラフィックスレンダーに はダブルバッファされたフルディスプレイスクリーン104のフレームバッファ 224が必要なのに比べて、ラスタライン数行(最小で2行)で済む。これによ ってメモリの多くのメガバイトを節約できる。ラスタラインメモリ416は、ラ スタリゼーションプロセスがデジタルアナログコンバータ228「より先に動作 」するため複数のラスタラインのデータを保存し、処理に平均時間以上を必要と するラスタラインにある程度の時間クッションを与えることができる。 数行のラスタライン分のメモリしか持っていないことで、スパン・ソーティン グ・レンダラー500のアーキテクチャは平均ラスタライン表示速度に遅れない ようにする必要がある。そのため、非常に大きな幾何形状データベース(スパン ・ソーティング・レンダラー500がついていける最大より大きい)をレンダリ ングしなければならない場合、ラスタラインメモリ416をダブルバッファされ たフルディスプレイスクリーン104のフレームバッファ224に置き換えるこ とができる。 ソーティング・マグニチュード比較連想メモリ800 スパンメモリ406のページ内のデータ記憶装置800の図を図8に示す。こ のデータ配列は、ソートされたデータ構造として典型的なランダムアクセスメモ リ(RAM)に常駐することもでき、ソーティング・マグニチュード比較連想メ モリ(SMCCAM)に常駐することもできる。本書後半ではSMCCAMイン プリメンテーションを想定する。 SMCCAMは新しいタイプのMCCAMであり、メモリレジスタ(またはワ ード)セットから構成され、各ワードは複数のフィー ルドから構成され、各フィールドは、1)整数または浮動小数点の数として数を 保存することができ、2)保存した数とすべてのワードにブロードキャストされ た別の数との算術比較を実行し、3)その内容を次のワードの対応するフィール ドにシフトする。スパン・ソーティング・レンダラー500内のスパンメモリ4 06として用いる場合、SMCCAMはスパンセットを保存し、並列検索および ソーティングオペレーションを実行して可視スパンポーションを見つける。 図8に示すように、SMCCAM800内のデータ記憶装置はSMCCAMワ ード900に分けられ、各ワード900はカレントラスタラインの1スパンに対 応するデータを(照会オペレーション実行によって)保存・処理する。この図は 、0からW−1まで番号付けられたW個のSMCCAMワード900をすべて示 す。各SMCCAMワード900には、次の7個の数値フィールド(および本書 で示す変数名はn番目のワード)を含む:1)ワード番号フィールド802、w で、アドレスに類似の、各ワード900の固定された(すなわちリードオンリー )一意の識別番号、2)左Xフィールド804、XnLで、スパンの左エンドポイ ントのx座標を保存する、3)左Zフィールド806、znLで、スパンの左エン ドポイントのz座標を保存する、4)右Xフィールド808、XnRで、スパンの 右エンドポイントのx座標を保存する、5)右Zフィールド810、XnRで、ス パンの右エンドポイントのz座標を保存する、6)スパン導関数フィールド81 2、dnで、スパンのδz/δxスロープを保存する、および7)情報ポインタ フィールド814、inで、スパンの多角形のカラー情報について多角形情報メ モリ514にポインタを保存する。 各SMCCAMワード900はまた次のものを保存する:1)有 効フラッグ816、FnVで、SMCCAMワード900が有効データを保存して いるか否かを示す1つのビット値、および2)照会フラッグ818、FnQで、S MCCAMワード900が照会オペレーションに肯定応答したか否かを示す1つ のビット値。いずれのフラッグビット816、818も対応する「ワイヤードノ ア」バスを持ち、すべてのワード900がそのフラッグビットをオフにしている か否かを示す。特に、有効フラッグ816、FnVについては、FnVがすべてのn (すなわちすべてのワード)について偽なら、信号AllWordInvalid990が表明 される。同様に、FnQがすべてのnについて偽なら、信号NullQueryResponse 9 92が表明される。2つのワイヤードノア信号、AllWordInvalid990とNullQu eryResponse992は、照会結果を外部コントローラ(照会プロセッサ510中 にある)にフィードバックし、方法内での進め方に関する決定(すなわち「ブラ ンチ」)を行うメカニズムとなる。 フィールドおよびフラッグ804から818までの命名には、フィールドサブ スクリプトの第1部(例:z3Lがワード3中)としてのワード番号フィールド8 02の値を含む。本書後半で、スパン・ソーティング・レンダラー500に各種 機能を追加するため各ワードのフィールド数が増える。図8に、2つの可変ワー ドインデックス、nおよびwを示し、これは本書を通じてSMCCAMワード9 00の参照に用いる。 SMCCAMワード900のブロック図を図9に示すが、ここに7個のフィー ルド802から814のそれぞれを示す。7個のフィールド、xwL804、zwL 806、xwR808、zwR810、dw812およびiw814はそれぞれ、配列 バスセット910:バスW912、バスXL914、バスZL916、バスXR 918、バスZR920、バスD922及びバス1924内に対応するデータ バスを有する。フィールド802から812の6個はメモリ902または904 におよびコンパレータ906または908に分かれる。ワード番号フィールド8 02に1)固定メモリ902、および2)一致比較回路906が含まれ、これは 照会オペレーションで用いられて固定メモリ値902を入力バス、バスW912 のデータと比較する。フィールド804から812の5個は、1)読み取り/書 き込みメモリ904および2)算術比較回路906(より小さい等のテスト)を 含み、これは照会オペレーションで用いられて保存されたメモリ値904を対応 する入力バスのデータと比較する。7番目のフィールド、情報ポインタフィール ド814、iwは、一般に照会オペレーションに参加しない単なる読み取り/書 き込みメモリである。 照会オペレーションは、SMCCAMワード900の配列800の検索、ソー ト、読み取り、書き込みに用いられる。照会オペレーションは、照会データを配 列バス910を介してすべてのワード900に供給することで、すべてのSMC CAMワード900が平行して実行する。SMCCAM800は照会論理配列8 50を含み、これは照会論理930回路のセットで、SMCCAMワード900 にそれぞれ1個ある。 平行して、各SMCCAMワード900内では、照会オペレーション結果が照 会論理930によって計算される。照会論理930は、コンパレータ906およ び908の結果と、有効フラッグ816および照会フラッグ818の値を受け取 り、これらの値に選択的ブール演算を行って(QueryCntrl932で選択)照会結 果ビットを生成し、この照会結果ビットを有効フラッグ816または照会フラッ グ818のいずれかに書き戻す。 照会オペレーションを実行すると、各ワード900は照会結果を 生成し、これはその900有効フラッグ816か照会フラッグ818に保存され る。すべての有効フラッグ816のセットは有効フラッグワード830と呼ばれ 、すべての照会フラッグ818のセットは有効フラッグワード834と呼ばれる 。検索を行うと、照会結果はどのワードが照会オペレーションのパラメータを満 たすか指定する。照会オペレーションの例は次の通りである: 但し、次が発生する:1)xCLが、バスZL916を介してすべてのワード9 00にブロードキャストされる、2)各ワード900の左Xフィールド804が 、その804の内容、XnLをバスZL916の値と比較することで、(xnL≦xCL )を実行する。3)各ワード900の照会論理930が、そのワード900の 照会結果である式4の右辺を実行する、4)各ワード900において、照会結果 が式4の左辺に示す照会フラッグ818に保存される。および5)照会フラッグ 818がすべてのワード900で偽なら、信号、NullQueryResponse 992が表 明される。 ブール演算の追加例を式5に示すが、ここでxCL、SP、xCR、zCF、zCLお よびzCRは、配列バス910を介してすべてのSMCCAMワード900にブロ ードキャストされたデータで、nはオペレーションが発生する特定のワード90 0である(これはすべてのn、すなわちすべてのSMCCAMワード900につ いて発生する)。 照会オペレーションメカニズムはSMCCAM800に保存されたデータにつ いて固有に検索オペレーションを実行し、検索結果は照会フラッグ818に保存 される。データをSMCCAM800に書き込む必要がある場合、次のシーケン スが発生する:1)有効フラッグワード830(または一部アプリケーションで は照会フラッグワード834も使える)を選んで、書き込むワード900を決定 する、2)有効フラッグワード830の内容を830に対応する優先順位レゾル バ840に入力する、3)優先順位レゾルバ840は、フラッグワード830内 で論理「ゼロ」の最初の出現を発見し、これが最初の無効ワードとなる、4)論 理「ゼロ」の最初の出現のあるSMCCAMワード900が選択されたワード9 00で、配列バス910のデータをそのワード900に保存する、そして5)選 択したワード900はその有効フラッグ816を表明し、そのワードに有効なデ ータが入っていることを示す。 読み取りオペレーションも、次のシーケンスで同様に動作する:1)有効照会 フラッグワード834を選んで、読み取るワード900を決定する、2)照会フ ラッグワード834の内容を834に対応する優先順位レゾルバ840に入力す る、3)優先順位レゾルバ840は、フラッグワード834内で論理「1」の最 初の出現を発見する、4)論理「1」の最初の出現のあるSMCCAMワード9 00が選択されたワード900で、その900の内容を配列バス910のデータ に出力する、5)選択されたワード900はその照会フラッグ818をデアサー ションし、そのワードは内容を読み取られたことを示し、後続読み取り(介入照 会なし)が他のワードを読み取る、そして6)照会フラッグ818がすべてのワ ード900で偽なら、信号、NullQueryResponse 992を表明し、他のワードが 読み取りオペレーションに応答しないことを示す。照会、書き込み 、読み取りオペレーションは、Duluk 特許の説明にやや類似して動作する。 SMCCAMワード900内の優先順位レゾルバ840の部分を優先順位レゾ ルバセクション934と呼び、これら934は次のバスを介してSMCCAMワ ード900全体で通信する:ValidPriOut[w-1]936、QueryPriOut[w-1]937 、ValidPriOut[w]938およびQueryPriOut[w]939。または、優先順位レゾル バ840はツリー状構造で構築し、最悪回路伝搬をWではなくlog Wに比例して 遅らせることもできる。 SMCCAM800はまた、Duluk 特許で説明する装置にはないソートオペレ ーションも実行する。前述のように、スパン・ソーティング・レンダラー500 は、スパンをスパンメモリ406に書き込む時に次に従ってスパンをソートする :1)左x座標、2)左z座標、および3)スパン導関数。SMCCAM800 では、スパンを挿入しなければならないスパンリスト中の場所を位置づけること でソーティングを行い、この場所からSMCCAM800の内容を1つのワード 900にシフトダウンし、新しいスパンを空になったワード900に書き込む。 SMCCAM800は、データをワード毎にシフトしてソートしたスパンリス トに場所を設けることができる。ソートオペレーションは次のシーケンスで行わ れる:1)書き込むスパンの(前述)幾何学的特性を照会オペレーションのため にSMCCAM800に入力する、2)照会フラッグ818に書き込んだ照会結 果で、各SMCCAMワード900で式6の照会オペレーションを実行し、無効 データが入っているか、スパン書き込み中のスパンリストで後でソートしなけれ ばならないスパンの入っているすべてのワードを識別する、3)照会フラッグワ ード834の内容を対応する優先順位レ ゾルバ840に入力する、4)優先順位レゾルバ840が照会フラッグワード8 34内で論理「1」の最初の出現を発見し、選択ワード900を決定する、5) 選択ワード900と選択ワード900の後のすべてのSMCCAMワード900 について、保存したデータを次のワード900にシフトする、そして6)選択し たワード900で配列バス910のデータをワード900に保存する。 フィールド802から814のデータのSMCCAMワード900の1つから 次へのシフトは、前のワード900のシフトアウトバス970に接続されたシフ トインバス950を介して行う。シフトインバス950のリストには次のものが 含まれる:ShiftOutXL[w-1]952、ShiftOutXR[w-1]954、ShiftOutZL[w-1] 956、ShiftOutZR[w-1]958、ShiftOutD[w-1]960、およびShiftOutI[w-1 ]962。シフトアウトバス970のリストには次のものが含まれる:ShiftOutX L[w]972、ShiftOutXR[w]974、ShiftOutZL[w]976、ShiftOutZR[w]97 8、ShiftOutD[w-1]980、およびShiftOutI[w]982。本書で用いる回路信号 命名法には、「[w]」などの括弧入りインデックスの利用が含まれ、これがバ ス配列の一部であることを示す(「C」コンピュータ言語の配列命名法に類似) 。ここで「[w]」はw番目のワード900、「[w−1]」はワード800セ ットの直前のワード900を示す。 スパン閉塞テスト 図10に、ディスプレイスクリーン104の1ラスタラインに対応する、x― zプレーンのラインセグメント(すなわち「セグメントスパン」)で表す3つの スパン、1002、1004、1006を示す。スパンの1つ1002は、対応 する閉塞領域1008と共 に示す。領域を閉塞1008するスパンがないと、対応するスパン1002は隠 れない。閉塞領域1008の形状は台形であるため、他のスパンがその1008 内にあるか否かを決定する計算は高価になり、領域1008に対して多くのスパ ンをテストしなければならない場合は特に高価である。閉塞領域1008の単純 化近似が、矩形スパン閉塞テスト領域1010(以下SOT領域1010と称す る)である。SOT領域1010は、閉塞テスト中のスパン(またはスパンポー ション)から生成し、以下これをカレントポーション、SC1004と称する。 エンドポイント(xCL、zCL)1012および(xCR、zCR)1014のカレン トポーションSC1004について、エンドポイント(xnL、znL)および(xn L 、znL)のスパン1006がSOT領域1010内にあるか否かの決定は次の ように行う: 式7に必要な算術計算は4つの比較と1つの「最大選択」関数(式で必要なこ の2つは同一)である。SMCCAM800が式7の演算を実行するには、SM CCAM800外で「最大選択」を行って次を決定する: そして値xCL、xCRおよびzCFを配列バス910に入力して、該当するフィー ルド804から810で比較を行う。このように、SMCCAM800に保存さ れるすべてのスパンは平行してテストされ、ナノ秒の内に閉塞スパンを検索する 。本書において、SOT照会が見つけるスパンはすべて閉塞スパンと呼ばれる。 スパン閉塞テスト照会(以下、SOT照会と称する)の完全な式 を式9として示す。 完全なSOT照会式は、論理積に次のあと2つの項を追加する:1)無効デー タのあるワードが自身を誤って閉塞スパンを保存すると識別しないために必要な 有効フラッグ816、および2)SPがカレントポーションに対応するワード番 号フィールド802の場合、スパンが自身を閉塞と識別するのを防ぐために行う テスト、n≠SP。完全なSOT照会式は、照会結果を各SMCCAMワード9 00の照会フラッグ818に保存する。SOT照会結果は、信号、NullQueryRes ponse 992で利用でき、表明された値は閉塞スパンが見つからなかったことを 示す。 閉塞領域1008の近似としてSOT領域を用いることで、保守的なエラーが 導入される。すなわち、SOT照会で、SOT領域1010内にあるが、実際は カレントポーションの背後にある閉塞スパンを見つける可能性がある。但し、S OT照会はカレントポーションを実際に閉塞するスパンを見つけ損なうことはな い。 スパン・ソーティング・レンダリング方法1300 SOT照会が、カレントポーションを実際には閉塞しない閉塞スパンを不注意 で発見するには、カレントポーションの境界ボックス(次のセクションで説明) が閉塞スパンの境界ボックスと重なっていなければならない。そのため、スパン ・ソーティング・レンダリング方法1300の最もシンプルな形式では、スパン の境界ボックスが重ならないと想定して、実際にはカレントポーションを閉塞し ない閉塞スパンを扱わなくてよいようにしている。この想定はほとんどのレンダ リングアプリケーションについて実際的ではないが、方法1300の説明の一部 を単純化する。そのため、この簡易(実 際的ではないが)バージョンを先に説明する。後のセクションで、方法1300 を境界ボックスの重なるスパンの処理に拡大する。 図11に、同じラスタラインの14個のスパンセット(S0 1100からS13 1113まで番号付け)を示すが、ここで各スパンはラスタラインのx―z平 面(y座標は固定)のラインセグメントで表される。スパンの可視部分を太いラ インで、隠れた部分を細いラインで示す。例えば、S4 1104とS6 1106 は隠れており、S0 1110は2つの可視ポーションを持つ。スパンは左エンド ポイントのx座標位置に従ってソートされている。そのため、スパンはSMCC AM800に保存された時割り当てられたワード番号フィールド802に従って 左から右に番号付けられている。例えば、スパンS4 1104はSMCCAMワ ード900番号4に保存され、左エンドポイントはポイント(x4L、z4L)に、 右エンドポイントは(x4R、z4R)にある。 図12に、同じ14個のスパンを示すが、各スパンは境界ボックスで囲まれて いる。図11と図12のスパンのセットは、スパン境界ボックスが重ならないよ うに選んでいる。図12のスパンを使って、スパン・ソーティング・レンダリン グ方法1300の最もシンプルな形式を説明するが、このバージョンは、スパン 境界ボックスが重ならないと想定する簡易スパン・ラスタリゼーション方法18 00を含む。 スパン・ソーティング・レンダリング方法1300を、本書記載の装置のコン テキストで説明するが、これは汎用コンピュータのソフトウェアでも実行できる 。図13はスパン・ソーティング・レンダリング方法1300のトップレベル方 法図である。この方法1300は、ジェネリック3Dグラフィックス・パイプラ イン200が図3の方法フロー図300を実行するのと同じ方法で、図4のスパ ン・ソーティング・レンダリング・パイプライン400によって実行される。 スパン・ソーティング・レンダリング方法1300では、シーンが生成され1 302(ワールド座標のオブジェクト位置等)、各シーン内で多角形が取得され 1304、スパン・ソーティング・レンダリング・パイプライン400に入力さ れて処理される1400。 図14に、多角形処理ステップ1400を示す。ここには、前に説明した変換 202、クリップテスト204、面決定206、ライティング208、透視分割 212、および多角形パラメータ計算402ステップが含まれる。これらステッ プの後、多角形は各自のySTARTパラメータに従ってバケット・ソート・メモリ 404に書き込まれる。 図13に戻り、あるシーンのすべての1306多角形が処理され1400、バ ケット・ソート・メモリ404に書き込まれると、各ラスタラインが処理される 。変数、Rを使って現在のラスタライン番号を記録し、ゼロに初期化1308す る。最初のラスタラインを処理するには、カレント多角形メモリ406をクリア し1310、カレントラスタラインに多角形がないことを示さなければならない 。また、スパンメモリ408をクリアし1312、カレントラスタラインにスパ ンがないことを示さなければならない。これらオペレーション1310、131 2は、メモリ406、408の内容全体を無効とマークすることで実行できる。 最初のラスタラインでは、カレント多角形メモリ406に多角形がないため、次 のステップ1600でカレントラスタラインで始まる多角形をバケット・ソート ・メモリ404からカレント多角形メモリ406に移し、これら多角形のスパン を作る。第2のラスタライン(すなわち、R=1)から、カレント多角形メモリ 406には恐らく多角形があるので、こ れら多角形についてスパンを作る1500必要がある。 図15は、スパン・ソーティング・レンダリング方法1300内のカレント多 角形メモリ406処理ステップ1500である。カレント多角形メモリ406の 各1502多角形を読み取り1504、1506その多角形がカレントラスタラ インに含まれていなければ、カレント多角形メモリ406から削除1508して 、後続ラスタラインがこれを考慮しなくて済むようにする。1506その多角形 が現在のラスタラインに含まれる場合、その多角形についてカレントラスタライ ン内のスパンとそのスパンパラメータ(前述)を生成1510する。そしてスパ ンパラメータをスパンメモリ408に書き込む1700。 図16は、スパン・ソーティング・レンダリング方法1300内のバケット・ ソート・メモリ404処理ステップ1600である。もし1602カレントラス タラインについてバケット・ソート・メモリ404からさらに読み込む多角形が あれば、そのような各多角形について、1)バケット・ソート・メモリ404か ら多角形を読み取る1604、2)多角形をカレント多角形メモリ406に書き 込む1606、3)多角形はカレントラスタラインにスパンを持ち、スパンパラ メータ(前述)をそのスパンについて生成する1510、および4)スパンパラ メータをスパンメモリ408に書き込む1700。 スパンメモリ408にスパンパラメータを書き込む時1700、ソートオペレ ーションを行う。ソートオペレーションは、SMCCAM800が照会オペレー ション(式6)および前述の特別書き込みオペレーションとして行う。SMCC AM800の装置はこのステップ1700を平行して行うが、図17のフロー図 1700には、順次検索プロセスのように記述されている。SMCCAMワード 900セットへのインデックスとして用いるカウンタ、nをゼロに初期化する1 702。フロー図は、新しいスパンをn番目のワード900に挿入しなければな らないか否かをテストする、6つの条件に分けた1704式6の照会オペレーシ ョンを示す。かかる挿入ポイントが見つかるまでnを増分することによって17 06、ワード900を進める。挿入ポイントが見つかると、カウンタnは増分を 中止し、W―1からn(カウンタmを用いる)のすべてのワードの内容を次のワ ードへ転送し1708、スパンパラメータをワードnに書き込む1710。ラス タラインのWスパンの合計より多くあり、ワード900の総数を超える場合、最 後のワード900(すなわち、ワードW―1)に達するテスト1712を含めて 例外1714条件を検出する。固定数のワード900内で作業する戦略は本書後 半で提示する。 再び図13に戻り、ラスタラインRのディスプレイスクリーン内のすべてのス パンをスパンメモリ408に書き込んだら、可視スパンポーションを識別する1 800または2100。方法のこの部分のバージョンに簡易スパン・ラスタリゼ ーション方法1800があるが、これはスパン境界ボックスが重ならないと想定 している。この想定を行わない他のバージョンは、以下のセクションで説明する セグメント・スパン・ラスタリゼーション方法2100と台形スパン・ラスタリ ゼーション方法である。 簡易スパン・ラスタリゼーション方法1800 図18に示す簡易スパン・ラスタリゼーション方法1800は、次の3つの変 数セットを維持する:1)カレントラスタラインの内今までどれだけレンダリン グしたかを示すのに用いるカレント左x座標位置、xCL、2)xCLの最前スパン を記録するのに用いる現在のスパンSpで、そのスパンパラメータxPL、zPL、 xPR、zPR、 dP、iPおよびワード番号を含む、および3)スパンメモリ408から最も最近 読み取ったスパンを記録するのに用いる新しいスパンSNで(一般に照会で見つ ける)、そのスパンパラメータ、xNL、zNL、xNR、zNR、dN、iNおよびワー ド番号を含む。簡易スパン・ラスタリゼーション方法1800では、カレントポ ーション、SCは常に現在のスパンSPに等しい。 ラスタリゼーション方法1800を、図12のスパンセットを例に用いて説明 する。本セクション後半において、方法1800をスパン例処理と共にステップ バイステップで追う。 方法1800は、1802xCLをゼロにセットし(これによってディスプレイ スクリーンの左辺で始まる)、変数SPとSNを無効と宣言1804することで始 まる。Spが無効1804で、スパンメモリ408にまだ保存された有効180 6スパンがあるため、xCL(すなわちゼロ)の最前スパンか、xCLにスパンが ない場合はスパンメモリ408の最左有効スパンのいずれかを見つけるために検 索1808を行わなければならない。 この検索1808の第1ステップは、照会1810を行って、xCL(すなわち ゼロ)を含むスパンメモリ408のすべての有効スパンを見つけることである。 図12を見ると、x座標ゼロにはスパンがない1812ことがわかる(照会18 10で何も見つけない)。x座標ゼロにスパンがない1812ため、スパンメモ リ408の最左スパン(すなわち、スパンはソートされているため最初の有効ス パン)を読み取り1818、SpをS0と等しくする1200。xCL(すなわち ゼロ)には有効スパンがなかったので、最左スパンはx0L(S01200の左エ ンドポイント)まで開始せず、ゼロからx0Lまでの範囲は全くスパンがないため 、背景をxCL(すなわちゼロ)からx0Lまでレンダリング1820する。レンダ リングを行っ たのでxCLの値が更新され1822、xPL(すなわちx0L)になり、このポイン トまでレンダリングが行われたことを示す。現在のスパン(すなわちS0 120 0)についてSOT照会を行い1824、閉塞スパンがあればこれを見つけ、他 のすべてのスパン1201から1213がS0 1200のSOT領域にあるた めこれらを見つける。これら見つかったスパンの最初のものを読み取り1824 、新しいスパン、SNの値をS1 1201に等しくする。 方法1800はディスプレイスクリーンの右辺(すなわち、xCL<XMAX)に 達しておらず1826、SPとSNの両方とも有効1804および1828で、次 のステップ1830では、xCL(すなわち、x0L)からxNL(すなわち、x1L) までSP(すなわち、S0 1200)をレンダリングする。SOT照会1824 がS0 1200の前に最左閉塞スパンを見つけており、この閉塞スパンの左のS0 1200のあらゆる部分が可視でなければならないため、このレンダリングが 可能となる。このステップ1830もxCLの値をxNL(すなわち、x1L)に更新 し、SN(すなわち、S1 1201)をSPの新しい値とする。SOT照会は、閉 塞スパンを見つけるため現在のスパン(すなわち、S1 1201)について行い 1832、スパンS2 1202のみ見つけるが、これ1202がS1 1201の SOT領域の唯一のスパンであるためである。このスパンを読み取り1832、 新しいスパンSNの値をS2 1202に等しくする。 スパンS1 1201をS0 1200と同じ方法で処理する。方法1800はデ ィスプレイスクリーンの右辺(すなわち、xCL<XMAX)に達しておらず182 6、SPとSNの両方とも有効1804および1828で、SP(すなわち、S1 1201)をxCL(すなわち、x1L)からxNL(すなわち、x2L)までレンダリ ング183 0する。xCLの値をxNL(すなわち、x2L)に更新し1830、SN(すなわち 、S2 1202)をSPの新しい値にする。現在のスパン(すなわち、S2 12 02)にSOT照会を行うが1832、S2 1202を閉塞するものがないので 、この照会ではスパンが見つからず、新しいスパンSNの値は無効にセットされ る。 ディスプレイスクリーンの右辺に到達しておらず1826、SPは有効で18 04、SNは無効で1828、方法1800の次の部分1834はSPの隣接スパ ン検索を含む。隣接スパンとは、左エンドポイントがカレントポーション(また は簡易スパン・ラスタリゼーション方法1800では、現在のスパン)の右エン ドポイントと同じポイントにあるスパンである。図12において、隣接するスパ ンペアの3つの例には次のものがある:1)S2 1202とS5 1205、2) S5 1205とS7 1207、および3)S6 1206とS9 1209。3Dオ ブジェクトは一般に辺を共有する多角形のセットとして記述されるため、隣接ス パンはしばしば発生する。そのため、高度にモザイク化されたオブジェクトでは 、大半のスパンが少なくとも1つの隣接するスパンペアの一部となる。 方法1800のポーション1834は、xCL(すなわち、x2L)からxPR(す なわち、x2R)までのSP(すなわち、S2 1202)のレンダリング1836 から始まる。SOT照会で閉塞スパンが見つかっていないため、SP(すなわち 、S2 1202)が全く隠れておらず、レンダリングしなければならないために これが可能である。また、xCLをxPR(すなわち、x2R)にセットする1836 。次に、照会を行って1838、SP(すなわち、X2 1202)の隣接スパン を見つけるが、これでスパンS5 1205が見つかる。1840で隣接スパンが 見つかったため、隣接スパンS5 1205を読み取り1846、SPに割り当て る。現在のスパン(すなわ ち、S5 1205)にSOT照会を行うが1848、S5 1205を閉塞するも のがないので、この照会ではスパンが見つからず、新しいスパンSNの値を無効 にセットする。 現在のスパン、S5 1205をS2 1202と同様に処理する。ディスプレイ スクリーンの右辺に到達しておらず1826、SPは有効で1804、SNは無効 で1828、xCL(すなわち、x2R)からxPR(すなわち、x5R)までSP(す なわち、S5 1205)をレンダリング1836し、xCLをxPR(すなわち、x5R )にセット1836する。隣接するスパンについて照会を行い1838、S7 1207を見つける。隣接するスパンS7 1207を読み取り1846、SPに 割り当てる。現在のスパン(すなわち、S7 1207)にSOT照会を行い18 48、S8 1208のみ見つけ、これを読み取り1832、SNの値をS8 12 08に等しくする。 現在のスパン、S7 1207をS1 1201と同様に処理する。ディスプレイ スクリーンの右辺に到達しておらず1826、SPとSNは共に有効で1804お よび1828、xCL(すなわち、x5R)からxNL(すなわち、x8L)までSP( すなわち、S7 1207)をレンダリング1830する。xCLの値をxNL(すな わち、x8L)に更新し1830、SPをSN(すなわち、S2 1202)にセット する。現在のスパン(すなわち、S8 1208)にSOT照会を行うが1832 、この照会ではスパンが見つからず、新しいスパンSNの値を無効にセットする 。 現在のスパン、S8 1208をS2 1202およびS5 1205と同様に処理 する。ディスプレイスクリーンの右辺に到達しておらず1826、SPは有効で 1804、SNは無効で1828、xCL(すなわち、x8L)からxPR(すなわち 、x8R)までSP(すなわち、S8 1208)をレンダリング1836し、xCL をxPR(すな わち、x8R)にセット1836する。隣接するスパンについて照会を行い183 8、S10 1210を見つける。隣接するスパンS10 1210を読み取り184 6、SPに割り当てる。現在のスパン(すなわち、S10 1210)にSOT照会 を行うが1848、この照会ではスパンが見つからず、新しいスパンSNの値を 無効にセットする。 現在のスパン、S10 1210を処理する時、隣接スパンの検索でそのような スパンを見つけない。ディスプレイスクリーンの右辺に到達しておらず1826 、SPは有効で1804、SNは無効で1828、xCL(すなわち、x8R)からxPR (すなわち、x10R)までSP(すなわち、S10 1210)をレンダリング1 836し、xCLをxPR(すなわち、x10R)にセット1836する。隣接するス パンについて照会を行うが1838、隣接するスパンは見つからない。隣接する スパンが見つからなかったため1840、検索を行ってxCL(すなわち、x10R )の最前スパンを見つけなければならない。しかしながら、この検索を行う前に 、照会を行って完全にxCL(すなわち、x10R)の左にあるすべてのスパンを無 効にする1842。xCL(すなわち、x10R)までのカレントラスタラインを レンダリングしており、xCL(すなわち、x10R)の左のスパンがレンダリング されているか隠れている(あるいは両方)ため、この無効化1842が可能であ る。無効化1842で、S1 1201からS10 1210の有効フラッグ816 を切り、S0 1200とS11 1211からS13 1213までのみ有効保存スパ ンとして残す。現在のスパンSNの値と、新しいスパンSNの値はいずれも無効に セットする1844。 ディスプレイスクリーンの右辺に達しておらず1826、SPが無効で180 4、まだ有効なスパンがあり1806、方法の次の部 分1808には、xCL(すなわち、x10R)の最前スパンの検索を含む。まず、 照会1810を行って、xCL(すなわち、x10R)を含むすべてのスパンを見つ け、2つのスパン、S0 1200とS11 1211が見つかる。スパンが見つか ったため1812、これら2つのスパン1200と1211を読み取り1814 、スパンのxCL(すなわち、x10R)のz座標を計算し、比較して、S11 121 1が最前スパンであると決定する1814。z座標計算は、スパン導関数(スパ ン導関数フィールド812から)をスパン左エンドポイントからの外挿に用いる ことで簡略化する。最前スパンS11 1211を現在のスパン、SPとする181 4。現在のスパン(すなわち、S11 1211)にSOT照会を行うが1824 、この照会でスパンが見つからず、新しいスパンSNの値を無効にセットする。 現在のスパン、S11 1211を、S2 1202、S5 1205およびS8 1 208と同様に処理する。ディスプレイスクリーンの右辺に到達しておらず18 26、SPは有効で1804、SNは無効で1828、xCL(すなわち、x10R) からxPR(すなわち、x11R)までSP(すなわち、S11 1211)をレンダリ ング1836し、xCLをxPR(すなわち、x11R)にセット1836する。隣接 するスパンについて照会を行い1838、S12 1212を見つける。隣接する スパンS12 1212を読み取り1846、SPに割り当てる。現在のスパン(す なわち、S12 1212)にSOT照会を行うが1848、この照会ではスパン が見つからず、新しいスパンSNの値を無効にセットする。 現在のスパン、S12 1212を、S10 1210と同様に処理する。ディスプ レイスクリーンの右辺に到達しておらず1826、SPは有効で1804、SNは 無効で1828、xCL(すなわち、 x11R)からxPR(すなわち、x12R)までSP(すなわち、S12 1212)をレ ンダリング1836し、xCLをxPR(すなわち、x12R)にセット1836する 。隣接するスパンについて照会を行うが1838、隣接するスパンは見つからな い。隣接するスパンが見つからなかったため1840、照会を行って完全にxCL (すなわち、x12R)の左にあるすべてのスパンを無効にし1842、S11 12 11とS12 1212の有効フラッグ816を切り、S0 1200とS13 121 3のみ有効保存スパンとして残す。現在のスパンSNの値と、新しいスパンSNの 値はいずれも無効にセットする1844。 ディスプレイスクリーンの右辺に達しておらず1826、SPが無効で180 4、まだ有効なスパンがあり1806、方法の次の部分1808には、xCL(す なわち、x12R)の最前スパンの検索を含む。まず、照会1810を行って、xC L (すなわち、x12R)を含むすべてのスパンを見つけ、1つのスパン、S0 12 00のみ見つかる。スパンが見つかったため1812、これを現在のスパン、SP にする1814。現在のスパン(すなわち、S0 1200)にSOT照会を行 い1848、S13 1213のみ見つけ、これを読み取り1832、SNの値をS13 1213に等しくする。 ディスプレイスクリーンの右辺に到達しておらず1826、SPとSNは共に有 効で1804および1828、xCL(すなわち、x12R)からxNL(すなわち、 x13L)までSP(すなわち、S0 1200)をレンダリング1830する。xCL の値をxNL(すなわち、x13L)に更新し1830、SPをSN(すなわち、S13 1213)にセットする。現在のスパン(すなわち、S13 1213)にSOT 照会を行うが1832、この照会ではスパンが見つからず、新しいスパンSNの 値を無効にセットする。 ディスプレイスクリーンの右辺に達しておらず1826、SPが有効で180 4、SNが無効で1828、xCL(すなわち、x13LL)からxPR(すなわち、x13R )までSP(すなわち、S13 1213)をレンダリング1836し、xCLを xPR(すなわち、x13R)にセット1836する。隣接するスパンについて照会 を行うが1838、隣接するスパンは見つからない。隣接するスパンが見つから なかったため1840、照会を行って完全にxCL(すなわち、x13R)の左にあ るすべてのスパンを無効にし1842、S0 1200とS13 1213の有効フ ラッグ816を切り、最後に有効なスパンを取り除く。現在のスパンSNの値と 、新しいスパンSNの値はいずれも無効にセットする1844。 ディスプレイスクリーンの右辺に達しておらず1826、SPが無効で180 4、有効なスパンがない1806。そのため、xCL(すなわち、x13R)からxM AX (すなわち、ラスタラインの右辺)まで背景をレンダリングする。これでカレ ントラスタライン体がレンダリングされたので、図13の方法フロー図に示すよ うに次のラスタラインを処理できる。 方法1800はスパンの可視ポーションをレンダリングしており、完全に隠れ ているスパン(すなわち、S3 1203、S4 1204、S6 1206およびS9 1209)を完全に無視していることに注意する。深さ複雑性の大きいシーン では、スパンの大きな部分が同様に無視されるため、大きな計算上の節約となる 。本方法1800の独自の特徴は、隣接スパンが共に動作して後ろのスパンを閉 塞する能力である。 方法1800の別の重要な特徴は、ラスタライン内のピクセルカラー化処理が 、ラスタラインの全スパンのピクセル数でなく、ラスタラインのピクセル数にほ ぼ比例していることである。これは、ス パン内の隠れたポーションは決してピクセルカラー化プロセスに送られないため である。例えば、右のスパンがピクセルの境界内で終わることがあるため、ピク セルが2つのスパンに影響されるので、ピクセルカラー化処理は、ラスタライン 内のピクセル数に「ほぼ」比例する。この場合、2つのスパンからのカラーがブ レンドされてそのピクセルの最終カラーを形成する。 スパン・インタラクション・タイプとスパン・インタラクション・パラメータ 前述のように、SOT照会はSMCCAM800がハードウェア中で実行でき るだけ単純な比較オペレーションセットである。しかしながら、スパン境界ボッ クスが重なる一般的なケースでは、SOT照会でカレントポーションを閉塞しな いスパンを発見することがある。さらに、SOT照会はカレントポーションと交 差するスパンを見つけることがあり、いずれも部分的に可視となる。セグメント ・スパン・ラスタリゼーション方法2100は、カレントポーションとSOT領 域中のスパンのインタラクションを、多くのスパン・インタラクション・タイプ (以下、SITと略す)の1つに分類し、SITに基づくレンダリング規則を適 用することによってこの欠点を解決する。SITは、2つのスパンのスパン・イ ンタラクション・パラメータ(以下、SIP)から決定する。 セグメント・スパン・ラスタリゼーション方法2100が進む間、2100は 次の4つのスパンとその関連パラメータを保持する:1)前述のxCLの最前スパ ンである現在のスパン、SP、2)前述のSPのSOT領域中のスパンである新し いスパン、SN、3)現在のスパンSPのサブセクションであるカレント・ポーシ ョン、SC、および4)SNを一時的にセーブして、SPのSOT領域でより多く のスパンを読みとれるようにするため1つの深さスタックと して用いるセーブされたスパン、SS。 スパン、スパンのエンドポイント、SIPおよびSITの命名については、図 19に例として示す。現在のスパン、SP1902は、エンドポイント(xPL、 zPL)1904、1906と(xPR、zPR)1908、1910を持ち、破線楕 円に囲まれ、黒実線と細点線の和集合として示される。SP1902の黒実線サ ブセクションはカレントポーションSC1912で、エンドポイント(xCL、zC L )1914、1916と(xCR、zCR)1918、1920を持つ。SC191 2に対応するSOT領域1922は破線に囲まれる。新しいスパンSN1932 は、エンドポイント(xNL、zNL)1934、1936と(xNR、zNR)193 8、1940を持ち、境界ボックス1942に囲まれる。 スパン・インタラクション・パラメータ(すなわち、SIP)は、4つのx座 標値、特に2つのスパンのエンドポイント:xNL1934、xNR1938、xCL 1914およびxCR1918における、SC1912とSN1932のz座標の算 術比較結果である。詳しく言うと、4つのスパン・インタラクション・パラメー タ(すなわち、SIP)とは次の通りである:1)SC1912はxNL1934 にポイントを持たないため、例で「非存在」と示されるxNL1934からzNL1 936のSC1912のz座標の比較、2)SC1912上のポイントはzNR19 40より遠い(すなわち、z座標が大きい)ため、例で「より遠い」と示される xNR1938からzNR1940のSC1912のz座標の比較、3)SN1932 上のポイントはzCL1916より遠い(すなわち、z座標が大きい)ため、例で 「より遠い」と示されるxCL1914からzCL1916のSN1932のz座標 の比較、および4)SN1932はxCR1918にポイントを持たないため、例 で「非存在」と示されるxCR19 18からzCR1920のSN1932のz座標の比較。4つのSIPはそれぞれ 次の値の1つを取ることができる:1)「非存在」(「非」と略す)、2)「よ り遠い」(「遠」と略す)、3)より近い」「近」と略す)、または4)「等し い」。図19の例では、4つのSIPは、図に示すように非、遠、遠、非である 。この特定の4セットはSIT23で、本書後半で説明するようにルール4を呼 び出す。 SIPは、除法などの高価な計算を避け、計算しやすいように選んだ。比較で 用いるz座標の計算は次のように行う: xNLでのSCのz座標=zCL+(xNL−xCL)dC NRでのSCのz座標=zCL+(xNR−xCL)dC (式10) xNLでのSNのz座標=zNL+(xCL−xNL)dN CRでのSNのz座標=zNL+(xCR−xNL)dN 図20は、考えられる49のSITすべてを一覧したものである。例えば、図 20CはSIT3を示し、SNとペアのSCの3例を示すが、ここでSIPは近、 等、非、非である。SIPに可能な組み合わせはそれぞれ1つのSITに対応す る。セグメント・スパン・ラスタリゼーション方法2100中にあるSITに遭 遇すると、複数のルールの内1つが呼び出されるが、図20の各SITはそれが 呼び出すルールを明示する。SIT19やSIT22など一部SITは、方法2 100で遭遇することがあり得ないため、何のルールも呼び出されず、タグ「不 可」が図20に示される。 セグメント・スパン・ラスタリゼーション方法2100 図21に示すセグメント・スパン・ラスタリゼーション方法2100は、ライ ンセグメント(図7Aに示す)で表すスパンを処理する。この方法は、図13に 示すスパン・ソーティング・レンダリング方法1300内で利用することができ る。本書のこのセクション では、図21から図26の方法フロー図を極めて一般的な用語で説明する。次の セクションでは、スパン例の複雑なセットを使って、方法2100の機能をステ ップバイステップで説明する。 セグメント・スパン・ラスタリゼーション方法2100は、2102と210 4変数の初期化で始まる。方法2100は、ルール1 2200からルール5 2600と呼ばれるサブ方法を呼び出す。各ルールは次のことを考慮する:1) もしあれば、SCのどの部分をレンダリングすべきか、2)SPおよび/またはSC の更新、3)SSの更新、4)スパンメモリ408に保存されたスパンの無効化 、5)SOT照会実行、および/または6)SNの更新。 ルール1 2200(図22に示す)は、SPが無効の場合に呼び出す。22 00はxCLの最前スパンを探し、最前スパンSPを作り、SOT照会を実行し、 SNを更新する。 ルール2 2300(図23に示す)は、SCに潜在的閉塞スパンが残ってい ない場合に呼び出す。そのため、2300は現在のスパン、SPをxCLからxCR までレンダリングする。そしてSCを次の先行順でセットする:1)セーブした スパン、SS、2)隣接スパン、または3)完全にxCRの左のすべてのスパン無 効化後、最初に有効なスパン。いかなる場合も、xCLはxCRにセットされ、SS は無効とされる。 ルール3 2400(図24に示す)は、カレントポーション、SCがxNLで 閉塞されるが、xCLからxNLまで可視であるようなSITの場合に呼び出す。そ のため、現在のスパン、SPをxCLからxNLまでレンダリングする。そして、新 しいスパン、SNを現在のスパンにして、その処理を始める。SCはxCRまでレン ダリングしていないので、セーブしたSSを無効にする。 ルール4 2500(図25に示す)は、SCがSNと交差し、 交点が可視であるようなSITの場合に呼び出す。カレントポーション、SCと 新しいスパン、SNとの間の(xI、zI)における交点を計算する。SCはxIの 右に閉塞されているので、xCRをxIに変更してSCを修正する。新しいスパン、 SNを、ルール1 2200で後で必要となる場合に備えてセーブしたスパン、 SSとして保存する。そして次の潜在的閉塞スパンを読み取り、SNとする。 ルール5 2600(図26に示す)は、カレントポーション、SCが新しい スパン、SNを閉塞して、SNのどれもxCLからxCRまで可視でない場合に呼び出 す。そのため、SNを放棄し、次の潜在的閉塞スパンを読み取り、SNとする。こ のルールを適用している時はSCをレンダリングしないので、セーブしたスパン 、SSの状態は無変化のままである。 セグメント・スパン・ラスタリゼーション方法2100の詳細な例 セグメント・スパン・ラスタリゼーション方法2100をステップバイステッ プで完全に説明するため、図27の15のスパン例セットを使って、方法210 0の動作方法を示す。この例のスパンは、セグメント・スパン・ラスタリゼーシ ョン方法2100のすべての部分を実行できるように選んだ。典型的なシーンの 典型的なラスタラインに比べると、この例は、境界ボックスの重なりとスパンの 交差の部分が大きいため、異常に複雑である。セグメント・スパン・ラスタリゼ ーション方法2100の各ステップを説明する際、方法フロー図の対応する参照 指示番号をステップ説明の冒頭に一覧する。ステップ説明において、照会オペレ ーションの式はまず方法フロー図に現れる通りに示してから、2行目で、同じ式 をすべての変数に図27の例の値を代入して示す。ステップ説明ではまた、代入 文をカスケードして(複数の「=」記号によって)、完全代入変数 への到達方法を示す。 図27の例では、セグメント・スパン・ラスタリゼーション方法2100が始 まる時、SMCCAM800にS0からS14と指定された15の有効スパンがあ る。これらスパンをSMCCAMワード900の0から14に保存するため、そ れぞれが(FnV=1)を持ち、SMCCAMワード900が有効な内容を持つこ とを示す。SMCCAMワード900の残り、すなわちワード15からW―1は 、それぞれ(FnV=0)を持ち、SMCCAMワード900が無効な内容を持つ ことを示す。故に、セグメント・スパン・ラスタリゼーション方法2100のス タートにおいて、有効フラッグワード840、FVは有効スパンセットを指定し 、このセットは空ではない。 図27に示す15のスパン例セットについて、セグメント・スパン・ラスタリ ゼーション方法2100を使ったステップバイステップの処理は次のようになる : 1)2102 カレントポーションの左x値、xCLは、レンダリングが現在の ラスタラインをどのくらい遠くまで進んだかを示す。故に、ラスタラインのスタ ートで設定(xCL=0)となる。カレントポーションの左z値、zCLを無限にセ ットし、背景の前にあらゆるスパンを見込む。背景の深さ位置は無限と考える。 背景は多角形から構成されず、アプリケーションを考え、カラーブラックにセッ トする。カレントポーションの右のxおよびy値、xCRとxCRは、有効な現在の スパン、SPがないため、「無効」にセットする。これは代入文によって次のよ うに記述される: xCL=0; xCR=無効; zCL=無限; zCR=無効; (式11) zCF=無限; 2)2104 SMCCAM800外部でスパン情報を保存するレジスタ内の データ(すなわち、SP、SN、およびSS)も無効と指定する: SP =無効; SN =無効; (式12) SS =無効; 3)2106、2108、および2200 現在のスパン、SPが有効でなく 、FVが空でないため(少なくとも何らかのスパンが有効であることを示す)、 ルール1を呼び出す。ここで、ルール1を用いて第1のスパンを探し、現在のス パン、SPを作る。 3A)2202 照会を行って、xCLで(すなわち、x座標ゼロ)カレントラ スタラインに影響を与えそうな有効スパンすべてを探す。照会は、各SMCCA Mワード900で次のように実行する: この照会でスパンが見つからないため、セットFQは空である。 3B)2204、2206および2208 FQが空でSPが有効でないため、 xCLでカレントラスタラインに影響する有効スパンがあってはならない。そのた め、FVの第1スパンを読み取り、現在のスパン、SPとする。この読み取りオペ レーションで次の値をセットする: SP =読み取り(n)=0; xPL=読み取り(xL)=x0L; xPR=読み取り(xR)=x0R; zPL=読み取り(zL)=z0L; zPR=読み取り(zR)=z0R; (式14) dP =読み取り(d)=d0; iP =読み取り(i)=i0; スパンはSMCCAM800で左から右の順で保存されているため、FVから の第1スパンの読み取りで、最左有効スパン、S0が 与えられる。 3C)2210 xCL(すなわち、x座標ゼロ)でカレントラスタラインに影 響を与えそうな有効スパンがないので、最左有効スパンはxPL(すなわち、x0L )までスタートせず、背景をxCLからxPL(すなわち、0からx0L)までレンダ リングしなければならない。 可能な代替え方法として、次の場合は背景のレンダリングを避けることができ る:1)多角形が常にビューイング面の100%をカバーするとわかっている、 または2)各ラスタラインの第1スパンの処理前に、ラスタバッファを背景カラ ーで初期化する。 3D)2212 これで現在のスパン、SP(すなわち、S0)があるので、次 のようにセットすることで、カレントポーション、SCをSPに等しくセットする : カレントポーション、SCはS0に等しい。カレントポーションの遠Z値、zCF を、「最大を探す」ファンクションでzOLにセットする。 3E)2214 これで定義された現在のスパン、SP(すなわち、S0)と定 義されたカレントポーション、SC(すなわち、S0)があるので、カレントポー ション、SC(すなわち、S0)を閉塞する可能性のあるスパンについて検索を行 う。スパン閉塞テスト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S0)につ いてすべての潜在的閉塞スパンのセットを作る。照会でS1からS14が見つかる 。一般に、検索オペレーションに用いる照会には、論理積でFnVを含み、SMC CAMワード900に保存された無効データがFQにビットを生じ、誤って表明 されないようにする。 3F)2216および2218 FQが空でないため、カレントポーション、 SC(すなわち、S0)を閉塞する可能性のあるスパンがなければならない。その ため、FQの第1スパンを読み取り、新しいスパンSNとする。この読み取りオペ レーションで次の値をセットする: SN =読み取り(n)=1; xNL=読み取り(xL)=x1L; xNR=読み取り(xR)=x1R; zNL=読み取り(zL)=z1L; zNR=読み取り(zR)=z1R; (式17) dN =読み取り(d)=d1; iN =読み取り(i)=i1; FQの第1スパンの読み取りで、セットの第1スパン、S1が与えられる。読み 取りプロセスではまた、(F1Q=0)をセットすることでFQからS1を削除する 。 4)2109、2106、2110および2112 ディスプレイスクリーン の右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(すな わち、S0)も新しいスパン、SN(すなわち、S1)も有効である。そのため、 これら2つのスパンのスパン・インタラクション・パラメータを計算し、次のよ うになる:(遠、非、非、遠)。 5)2114 スパン・インタラクション・パラメータからスパン・インタラ クション・タイプを決定し、タイプ14であることがわかる。 6)2116および2400 スパン・インタラクション・タイプがタイプ1 4なので、ルール3を呼び出して次のようにS0を処 理する: 6A)2402 カレントポーション、SC(すなわち、S0)がxNL(すなわ ち、x1L)から隠れているが、xNL(すなわち、x1L)の左は可視である。その ため、現在のスパン、SP(すなわち、S0)をxCLからxNL(すなわち、x0L からx1L)までレンダリングする。 6B)2404 現在のスパンの処理が完了したので(この時点)、次のよう にセットして、SN(すなわち、S1)を現在のスパン、SPにする: 6C)2406 カレントポーション、SCを次のようにセットすることでS Nに等しくセットする: あるいは、カレントポーション、SCは、同じ値を持っているため、現在のス パン、SP(SNではなく)にセットすることもできる。しかしながら、このステ ップと前のステップを平行して行えないため、この代替え方法はハードウェアイ ンプリメンテーションには望ましくない。 6D)2408 セーブしたスパン、SSを無効化するが、この例のこの時点 で既に無効だった。 6E)2410 新しいカレントポーション、SC(すなわち、S1)があるの で、これを閉塞する可能性のあるスパンを検索する 。スパン閉塞テスト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S1)についてすべての潜 在的閉塞スパンのセットを作る。照会でS0とS2からS14が見つかる。 6F)2412および2414 FQが空でないため、カレントポーション、 SC(すなわち、S1)を閉塞する可能性のあるスパンがなければならない。その ため、FQの第1スパンを読み取り、新しいスパンSNとする。この読み取りオペ レーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式21) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、セットの第1スパン、S0が与えられる。読み 取りプロセスではまた、(F0Q=0)をセットすることでFQからS0を削除する 。 7)2109、2106、2110および2112 ディスプレイスクリーン の右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(すな わち、S1)も新しいスパン、SN(すなわち、S0)も有効である。そのため、 これら2つのスパンのスパン・インタラクション・パラメータを計算し、次のよ うになる:(遠、非、遠、非)。 8)2114 スパン・インタラクション・パラメータからスパン・インタラ クション・タイプを決定し、タイプ23であることが わかる。 9)2116、2118および2500 スパン・インタラクション・タイプ がタイプ23なので、ルール4を呼び出して次のようにS1を処理する: 9A)2502 カレントポーション、SC(すなわち、S1)と新しいスパン 、SN(すなわち、S0)がインタラクトして、SCをその長さのどこか:SC(す なわち、S1)とSN(すなわち、S0)の間の交点で、可視から隠れに移行させ る。交点を計算し、図27に示すように、(x1、z1)2702であることがわ かる。 9B)2504 カレントポーション、SC(すなわち、S1)を、その右エン ドポイントを交点に変更して短縮する。SCの右エンドポイントを次のようにセ ットして修正する 現在のスパン、SPはまだS1のすべてに等しい。 9C)2506 新しいスパン、SN(すなわち、S0)を、セーブしたスパン 、SSとしてセーブする。これは、SP(すなわち、S1)をx1までレンダリング する場合、後でSSが必要とするために行う。 セーブしたスパン、SSのx1の右のポーションがx座標x1でSCと隣接する。 方法の後半で、SCをx1までレンダリングする 場合、SSは現在のスパン、SPになる。 9D)2508 カレントポーション、SC(すなわち、x1Lからx1までのS1 )を変更し、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テス ト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x1Lとx1の間のS1)に ついてすべての潜在的閉塞スパンのセットを作る。照会ではS2しか見つからな い。照会によって実行した論理積にはFQを含み、前に読み取った(そして放棄 した)S1の潜在的閉塞スパンがFQに再び入れられて、不要に再処理されないよ うにする。 この方法のバリエーションとして、このステップを省略し、照会ではなく既存 FQからの読み取りを継続してFQからのスパンを除去するものがある。このバリ エーションは、照会をなくすことで実行時間を節約するが、FQのスパン数を減 少できずに実行時間が増加することがある。 9E)2510および2512 FQが空でないため、カレントポーション、 SC(すなわち、x1Lからx1までのS1)を閉塞する可能性のあるスパンがなけ ればならない。そのため、FQの第1スパンを読み取り、新しいスパンSNとする 。この読み取りオペレーションで次の値をセットする: SN =読み取り(n)=2; xNL=読み取り(xL)=x2L; xNR=読み取り(xR)=x2R; zNL=読み取り(zL)=z2L; zNR=読み取り(zR)=z2R; (式25) dN =読み取り(d)=d2; iN =読み取り(i)=i2; FQの第1スパンの読み取りで、セットの第1(そして唯一の)スパン、S2が 与えられる。読み取りプロセスではまた、(F2Q=0)をセットすることでFQ からS2を削除し、FQを空にする。 10)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S1)も新しいスパン、SN(すなわち、S2)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようになる:(遠、非、非、近)。 11)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ13であることがわかる。 12)2116および2400 スパン・インタラクション・タイプがタイプ 13なので、ルール3を呼び出して次のようにS1の処理を継続する: 12A)2402 カレントポーション、SC(すなわち、x1Lとx1の間のS1 )がxNL(すなわち、x2L)から隠れているが、xNL(すなわち、x2L)の左 は可視である。そのため、現在のスパン、SP(すなわち、S1)をxCLからxNL (すなわち、x1Lからx2L)までレンダリングする。 12B)2404 現在のスパンの処理が完了したので(この時点)、次のよ うにセットして、SN(すなわち、S2を現在のスパン、SPにする: 12C)2406 カレントポーション、SCを次のようにセットすることで SNに等しくセットする: 12D)2408 セーブしたスパン、SSを無効化する。ステップ9Cで、 SSの値はS1の値にセットされたが、ここでこれらに無効というラベルが付く。 SS =無効; (式28) 12E)2410 新しいカレントポーション、SC(すなわち、S2)がある ので、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は 、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S2)についてすべての潜 在的閉塞スパンのセットを作る。照会でS0、S3およびS4が見つかる。 12F)2412および2414 FQが空でないため、カレントポーション 、SC(すなわち、S2)を閉塞する可能性のあるスパンがなければならない。そ のため、FQの第1スパンを読み取り、新しいスパンSNとする。この読み取りオ ペレーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式30) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、セットの第1スパン、S0が与えられる。読み 取りプロセスではまた、(F0Q=0)をセットすることでFQからS0を削除する 。 13)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S2)も新しいスパン、SN(すなわち、S0)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようになる:(非、非、遠、遠)。 14)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ32であることがわかる。 15)2116、2118および2600 スパン・インタラクション・タイ プがタイプ32なので、ルール5を呼び出して次のようにS2を処理する: 15A)2602および2604 新しいスパン、SN(すなわち、S0)がSC (すなわち、S2)のx軸投影内に隠れている。そのため、SN(すなわち、S0 )を放棄する。FQが空でないため、カレントポーション、SC(すなわち、S2 )を閉塞する可能性のあるスパンがなければならない。そのため、FQの第1ス パンを読み取り、新しいスパンSNとする。この読み取りオペレーションで次の 値をセットする: SN =読み取り(n)=3; xNL=読み取り(xL)=x3L; xNR=読み取り(xR)=x3R; zNL=読み取り(zL)=z3L; zNR=読み取り(zR)=z3R; (式31) dN =読み取り(d)=d3; iN =読み取り(i)=i3; FQの第1スパンの読み取りで、セットの第1スパン、S3が与 えられる。読み取りプロセスではまた、(F3Q=0)をセットすることでFQか らS3を削除する。S2はまだ現在のスパン、SPである。セーブしたスパン、SS の状態は無変化のままなので、無効のままである。 16)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S2)も新しいスパン、SN(すなわち、S3)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようになる:(遠、非、非、近)。 17)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ13であることがわかる。 18)2116および2400 スパン・インタラクション・タイプがタイプ 13なので、ルール3を呼び出して次のようにS2の処理を継続する: 18A)2402 カレントポーション、SC(すなわち、S2)がxNL(すな わち、x3L)から隠れているが、xNL(すなわち、x3L)の左は可視である。そ のため、現在のスパン、SP(すなわち、S2)をxCLからxNL(すなわち、x2L からx3L)までレンダリングする。 18B)2404 現在のスパンの処理が完了したので、次のようにセットし て、新しいスパン、SN(すなわち、S3)を現在のスパン、SPにする: 18C)2406 カレントポーション、SCを次のようにセットすることで SN(すなわち、S3)に等しくセットする: 18D)2408 セーブしたスパン、SSを無効化するが、これは前のステ ップで既に無効というラベルが付いている。 SS =無効; (式34) 18E)2410 新しいカレントポーション、SC(すなわち、S3)がある ので、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は 、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S3)についてすべての潜 在的閉塞スパンのセットを作る。照会でS0のみ見つかる。 18F)2412および2414 FQが空でないため、カレントポーション 、SC(すなわち、S3)を閉塞する可能性のあるスパンがなければならない。そ のため、FQの第1スパンを読み取り、新しいスパンSNとする。この読み取りオ ペレーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式36) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、セットの第1(で唯一の)スパ ン、S0が与えられる。読み取りプロセスではまた、(F0Q=0)をセットする ことでFQからS0を削除する。読み取りプロセスでセットFQは空のままになる 。 19)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S3)も新しいスパン、SN(すなわち、S0)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようになる:(非、非、遠、遠)。 20)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ32であることがわかる。 21)2116、2118および2600 スパン・インタラクション・タイ プがタイプ32なので、ルール5を呼び出して次のようにS3を処理する: 21A)2602および2606 新しいスパン、SN(すなわち、S0)がSC (すなわち、S3)のx軸投影内に隠れている。そのため、SN(すなわち、S0 )を放棄する。FQが空なので、カレントポーション、SC(すなわち、S3)を 閉塞する可能性のあるスパンは他にない。そのため、新しいスパン、SNに無効 とラベル付けする。 SN =無効 (式37) 読み取りオペレーションは終わっていない。S3はまだ現在のスパン、SPであ る。セーブしたスパン、SSの状態は無変化のままなので、無効のままである。 22)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax) で、現在のスパンが有効で新しいスパン、SNは有効でないので、ルール2を呼 び出して、S3の処理を継続する。 22A)2302 カレントポーションSC(すなわち、S3)は完全に可視で なければならない。そのため、現在のスパン、SP(すなわち、S3)をxCLから xCR(すなわち、x3Lからx3R)までレンダリングする。 22B)2304および2306 セーブしたスパン、SSは有効でないので 、SCのサイズを小さくする交差スパンはなかった。そのため、照会を行って隣 接スパンを探す。照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S3)について隣接するす べてのスパンのセットを作り、これらをFQに保存する。照会でS7のみ見つかる 。 22C)2308および2310 FQが空でないため、隣接するスパンがな ければならない。そのため、FQの第1スパンを読み取り、現在のスパン、SPと する。この読み取りオペレーションで次の値をセットする: SP =読み取り(n)=7; xPL=読み取り(xL)=x7L; xPR=読み取り(xR)=x7R; xPL=読み取り(zL)=z7L; zPR=読み取り(zR)=z7R; (式39) dP =読み取り(d)=d7; iP =読み取り(i)=i7; FQの第1スパンの読み取りで、セットの第1(で唯一の)スパン、S7が与え られる。読み取りプロセスではまた、(F7Q=0)をセットすることでFQから S7を削除する。読み取りプロセスでセットFQは空のままになる。 22D)2312 カレントポーション、SCを次のようにセットすることで SP(すなわち、S7)に等しくセットする: これは、ステップ22Cと同時に行うことができる。 22E)2314 新しいカレントポーション、SC(すなわち、S3)がある ので、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は 、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S7)についてすべての潜 在的閉塞スパンのセットを作る。照会でスパンは見つからず、FQは空である。 22F)2316および2318 FQが空なので、カレントポーション、SC (すなわち、S7)を閉塞する可能性のあるスパンは他にない。そのため、新し いスパン、SNに無効とラベル付けする。 SN =無効 (式42) 読み取りオペレーションは終わっていない。S7はまだ現在のスパン、SPであ る。 23)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S7の処理する。 23A)2302 カレントポーション、SC(すなわち、S7 )は完全に可視でなければならない。そのため、現在のスパン、SP(すなわち 、S7)をxCLからxCR(すなわちx7Lからx7R)までレンダリングする。 23B)2304および2306 セーブしたスパン、SSは有効でないので 、SCのサイズを小さくする交差スパンはなかった。そのため、照会を行って隣 接スパンを探す。照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S7)について隣接するす べてのスパンのセットを作り、これらをFQに保存する。照会でスパンは見つか らず、FQは空である。 23C)2308および2320 FQが空なので、隣接するスパンはない。 完全にxCR(すなわち、x7R)の左のスパンはすべて隠れていなければならない ため、これらを無効と宣言する。これは、次のように各SMCCAMワード90 0で照会することで行う: この照会で、セットFVのスパンを15から10に減らすことで、有効スパン の数を減らす。この時点で、FVはS0、S1、S6およびS8からS14で構成され る。 23D)2322 有効な現在のスパン、SPも、有効な新しいスパン、SNも ない。故に、いずれも無効とラベルを付ける。 SP =無効; (式45) SN =無効; 23E)2324 カレントポーション、SCを次に等しくセットする: xCL=xCR=x7R; xCR=無効; zCL=無限; zCR=無効; (式46) zCF=無限 24)2109、2106、2108および2200 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SPが有 効でなく、FVが空でないので(少なくとも一部スパンが有効であることを示す )、ルール1を呼び出す。ここで、ルール1を使ってx7Rの最前スパンを検索す る。見つかったら、この最前スパンを現在のスパンSPとして処理する。 24A)2202 照会を行って、xCL(すなわち、x7R)でカレントラスタ ラインに影響を与えそうな有効スパンすべてを見つける。照会は、次のように各 SMCCAMワード900で行う: この照会で、S0、S1、S6およびS8が見つかる。照会オペレーションには、 無限にセットされたzCFより小さい値をチェックするz座標比較も含むことがで きる。 24B)2204および2222 FQが空でないので、xCL(すなわち、x7 R )でカレントラスタラインに影響を与えそうな少なくとも1つのスパンがなけ ればならない。そのため、FQの第1スパンを読み取り、新しいスパン、SNとす る。この読み取りオペレーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; xNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式48) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、FQの最左スパン、S0が与え られる。読み取りプロセスではまた、(F0Q=0)をセットすることでFQから S0を削除する。 24C)2224 新しいスパン、SN(すなわち、S0)のx座標xCL(すな わち、x7R)のz値をztempとして計算する。 この位置(x7R、ztemp)2704を図27に示す。 24D)2226、2228および2232 計算した値、ztempはzCL(す なわち、無限)より小さいので、次のようにセットして新しいスパン、SN(す なわち、S0)を現在のスパン、SPにする: 24E)2236 カレントポーション、SCを、次のようにセットしてxCL (すなわち、x7R)の右の現在のスパン、SP(すなわち、S0)のポーションに セットする: 24F)2237および2238 前述の通り、この方法の本部分の目的はxCL (すなわち、x7R)の最前スパンを見つけることである。xCL(すなわち、x7R )で、現在のスパン、SP(すなわち、S0)のz座標はztempに等しい。その ため、xCL(すなわち、x7R)のSP(すなわち、S0)の前にスパンがあれば、 これは少なくとも部分的にztempよりオブザーバに近い位置になければなら ない。セットFQは空でなく、xCL(すなわち、x7R)の最前スパンの全候補を 含むので、これら候補の一部を照会で除くことができる: この照会オペレーションで、エンドポイントのz座標がztempより小さい候補 スパンを保持する。照会後、FQにはS8のみ入っている。 この方法のバリエーションとしてこの照会を省き、時間を節約することができ るが、xCL(すなわち、x7R)でSP(すなわち、S0)によって隠されるスパン を削除しないため、xCL(すなわち、x7R)でカレントラスタラインに影響しそ うなスパンをすべて読み取らなければならない。深さ複雑性が小さいなら、この バリエーションで充分な節約ができるが、深さ複雑性が大きいと、候補スパンの 除去で節約できる時間は、照会オペレーションに費やす時間を上回る。そのため 、方法の選択はシーンに予測される深さ複雑性で決まる。 シーンの複雑性についてアプリオリな推測をするのを避けるため、セットFQ のスパン数を数えることでxCLの深さ複雑性を決定するメカニズムをSMCCA M800含めることができる。FQのスパン数が小さい場合、このステップの照 会オペレーションを省略し、FQの各スパンを読み取る。FQのスパン数が充分多 い場合、照会オペレーションは省略せず、FQの一部のスパンを削除し、充分な 節約を達成する。 24G)2204および2222 FQが空でないので、xCL(すなわち、x7 R )で最前となりそうな候補スパンが少なくとももう1つなければならない。そ のため、FQの第1スパンを読み取り、 新しいスパン、SNとする。この読み取りオペレーションで次の値をセットする : SN =読み取り(n)=8; xNL=読み取り(xL)=x8L; xNR=読み取り(xR)=x8R; zNL=読み取り(zL)=z8L; zNR=読み取り(zR)=z8R; (式53) dN =読み取り(d)=d8; iN =読み取り(i)=i8; 第1スパンの読み取りで、FQの唯一のスパン、S8が与えられる。読み取りプ ロセスではまた、(F8Q=0)をセットすることでFQからS8を削除する。読み 取りプロセスでセットFQは空のままになる。 24H)2224 新しいスパン、SN(すなわち、S8)のx座標xCL(すな わち、x7R)のz値をztempとして計算する。 この位置(x7R、ztemp)2704を図27に示す。 241)2226、2228および2232 計算した値、ztempはzCL(す なわち、ステップ24Cでztempとして計算したx7RでのS0のz座標)より小 さいので、次のようにセットして新しいスパン、SN(すなわち、S8)を現在の スパン、SPにする: 24J)2236 カレントポーション、SCを、次のようにセットしてxCL (すなわち、x7R)の右の現在のスパン、SP(すなわち、S8)のポーションに セットする: 24K)2237、2204、2206および2214 FQが空でSP(すな わち、S8)が有効なので、カレントポーション、SC(すなわち、x7Rの右のS8 )を閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は、次の ように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x7Rの右のS8)について すべての潜在的閉塞スパンのセットを作る。照会でS0とS9が見つかる。 24L)2216および2218 FQが空でないため、カレントポーション 、SC(すなわち、x7Rの右のS8)を閉塞する可能性のあるスパンがなければな らない。そのため、FQの第1スパンを読み取り、新しいスパンSNとする。この 読み取りオペレーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式58) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、セットの第1スパン、S0が与えられる。読み 取りプロセスではまた、(F0Q=0)をセットすることでFQからS0を削除する 。 25)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax) で、現在のスパン、SP(すなわち、S8)も新しいスパン、SN(すなわち、S0 )も有効である。そのため、これら2つのスパンのスパン・インタラクション・ パラメータを計算し、次のようになる:(非、非、遠、近)。 26)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ31であることがわかる。 27)2116、2118および2500 スパン・インタラクション・タイ プがタイプ31なので、ルール4を呼び出して次のようにS8を処理する: 27A)2502 カレントポーション、SC(すなわち、x7Rの右のS8)と 新しいスパン、SN(すなわち、S0)がインタラクトして、SCをその長さのど こか:SC(すなわち、x7Rの右のS8)とSN(すなわち、S0)の間の交点で、 可視から隠れに移行させる。交点を計算し、図27に示すように、(x1、z1) 2708であることがわかる。 27B)2504 カレントポーション、SC(すなわち、x7Rの右のS8)を 、その右エンドポイントを交点に変更して短縮する。SCの右エンドポイントを 次のようにセットして修正する カレントポーション、SCはこれでx7Rとx1の間のS8のポーションになる。 現在のスパン、SPはまだS8のすべてに等しい。 27C)2506 新しいスパン、SN(すなわち、S0)を、セーブしたスパ ン、SSとしてセーブする。これは、SP(すなわち、S8)をx1までレンダリン グする場合、後でSSが必要とす るために行う。 セーブしたスパン、SSのx1の右のポーションがx座標x1でSCと隣接する。 方法の後半で、SCをx1までレンダリングする場合、SSは現在のスパン、SPに なる。 27D)2508 カレントポーション、SC(すなわち、x7Rからx1までの S8)が変更されたので、これを閉塞する可能性のあるスパンを検索する。スパ ン閉塞テスト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x7Rからx1までのS8) についてすべての潜在的閉塞スパンのセットを作る。照会でスパンは見つからな いため、FQは空である。 27E)2510および2514 FQが空なので、カレントポーション、SC (すなわち、x7Rからx1までのS8)を閉塞する可能性のあるスパンがあっては ならない。そのため、新しいスパン、SNを無効と宣言する。 SN =無効; (式62) 28)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S8を処理する。 28A)2302 カレントポーション、SC(すなわち、x7R からx1までのS8)は完全に可視でなければならない。そのため、現在のスパン 、SP(すなわち、S8)をxCLからxCR(すなわちx7Rからx1)までレンダリ ングする。 28B)2304および2326 セーブしたスパン、SSは有効なので、SC のサイズを小さくする交差スパンがあった。そのため、次のようにセットして、 セーブしたスパン(すなわち、S0)を現在のスパン、SPにする: 28C)2328 カレントポーション、SCを、SP(すなわち、S0)のx1 の右のポーションにセットする。こうして、セーブしたスパン、SS(すなわち 、S0)はx1の左のS8のポーションについて隣接するスパンとして動作し、隣 接はx1で発生する。これは次のようにセットすることで行う: このステップは、ステップ28Bと同時に行うことができる。 28D)2330 セーブしたスパン、SSの値を現在のスパン、SPに転送し たので、SSを無効化する。 Ss =無効; (式65) 28E)2314 新しいカレントポーション、SC(すなわち、x1の右のS0 )があるので、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テ スト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x1の右のS0)について すべての潜在的閉塞スパンのセットを作る。照会でS8からS13が見つかる。 28F)2316および2332FQが空でないので、カレントポーションSC (すなわち、x1の右のS0)に影響を与えそうなスパンがなければならない。そ のため、FQの第1スパンを読み取り、新しいスパン、SNとする。この読み取り オペレーションで次の値をセットする: SN =読み取り(n)=8; xNL=読み取り(xL)=x8L; xNR=読み取り(xR)=x8R; xNL=読み取り(zL)=z8L; zNR=読み取り(zR)=z8R; (式67) dN =読み取り(d)=d8; iN =読み取り(i)=i8; FQの第1スパンの読み取りで、セットの第1スパン、S8が与えられる。読み 取りプロセスではまた、(F8Q=0)をセットすることでFQからS8を削除する 。 別の方法として、交差スパンペアの左側パートナーを右側パートナーの潜在的 閉塞スパンとみなされないようにする方法を含めることができる。これは、各S MCCAMワード900のnについて同時に2つの不等テストを実行できるSM CCAM800の追加照会によって行う。 29)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S0)も新しいスパン、SN(すなわち、S8)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようにな る:(非、近、等、非)。 30)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ21であることがわかる。 31)2116、2118および2600 スパン・インタラクション・タイ プがタイプ21なので、ルール5を呼び出して次のようにS0を処理する: 31A)2602および2604 新しいスパン、SN(すなわち、S8)がSC (すなわち、x1の右のS0)のX軸投影内に隠れている。そのため、SN(すな わち、S8)を放棄する。FQが空でないので、カレントポーション、SC(すな わち、x1の右のS0)を閉塞する可能性のあるスパンは他になければならない。 そのため、FQの第1スパンを読み取り、新しいスパン、SNとする。この読み取 りオペレーションで次の値をセットする: SN =読み取り(n)=9; xNL=読み取り(xL)=x9L; xNR=読み取り(xR)=x9R; zNL=読み取り(zL)=z9L; zNR=読み取り(zR)=z9R; (式68) dN =読み取り(d)=d9; iN =読み取り(i)=i9; FQの第1スパンの読み取りで、セットの第1スパン、S9が与えられる。読み 取りプロセスではまた、(F9Q=0)をセットすることでFQからS9を削除する 。S0はまだ現在のスパン、SPで、セーブしたスパン、SSの状態は無変化のま まなので、無効のままである。 32)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S0)も新しいスパン、SN(すなわち、S9)も有効である。そのため 、これら2つのスパン のスパン・インタラクション・パラメータを計算し、次のようになる:(遠、遠 、非、非)。 33)2114 スパン・インタラクション・パラメータからスパン・インタ ラクション・タイプを決定し、タイプ5であることがわかる。 34)2116および2400 スパン・インタラクション・タイプがタイプ 5なので、ルール3を呼び出して次のようにS0の処理を継続する: 34A)2402 カレントポーション、SC(すなわち、x1の右のS0)が xNL(すなわち、x9L)から隠れているが、xNL(すなわち、x9L)の左は可視 である。そのため、現在のスパン、SP(すなわち、S0)をxCLからxNL(すな わち、x1からx9L)までレンダリングする。 34B)2404 現在のスパンの処理が(ここで)完了したので、次のよう にセットして、新しいスパン、SN(すなわち、S3)を現在のスパン、SPにす る: 34C)2406 カレントポーション、SCを次のようにセットすることで SN(すなわち、S9)に等しくセットする: 34D)2408 セーブしたスパン、SSを無効化するが、これは既に無効 というラベルが付いている。 SS =無効; (式71) 34E)2410 新しいカレントポーション、SC(すなわち、S9)がある ので、これを閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は 、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S11)についてすべての 潜在的閉塞スパンのセットを作る。照会ではスパンは見つからず、FQは空であ る。 34F)2412および2416 FQが空なので、カレントポーション、SC (すなわち、S9)を閉塞する可能性のあるスパンが他にあってはならない。そ のため、新しいスパン、SNに無効というラベルを付ける。 SN =無効; (式73) 読み取りオペレーションは終わっていない。S9はまだ現在のスパン、SPであ る。セーブしたスパン、SSの状態は無変化のままなので、無効のままである。 35)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S9を処理する。 35A)2302 カレントポーション、SC(すなわち、S9)は完全に可視 でなければならない。そのため、現在のスパン、SP(すなわち、S9)をxCLか らxCR(すなわちx9Lからx9R)までレンダリングする。 35B)2304および2306 セーブしたスパン、SSは有 効でないので、SCのサイズを小さくする交差スパンがなかった。そのため、照 会を行って隣接スパンを探す。照会は、次のように各SMCCAMワード900 で行う: この照会で、カレントポーション、SC(すなわち、S3)について隣接するす べてのスパンのセットを作り、FQに保存する。照会ではS11のみ見つかる。 35C)2308および2310 FQが空でないため、隣接するスパンがな ければならない。そのため、FQの第1スパンを読み取り、現在のスパン、SPと する。この読み取りオペレーションで次の値をセットする: SP =読み取り(n)=11; xPL=読み取り(xL)=x11L; xPR=読み取り(xR)=x11R; zPL=読み取り(zL)=z11L; zPR=読み取り(zR)=z11R; (式75) dP =読み取り(d)=d11; iP =読み取り(i)=i7; FQの第1スパンの読み取りで、セットの第1(で唯一の)スパン、S11が与 えられる。読み取りプロセスではまた、(F11Q=0)をセットすることでFQか らS11を削除する。読み取りプロセスでセットFQは空のままになる。 35D)2312 カレントポーション、SCを次のようにセットすることで SP(すなわち、S11)に等しくセットする: 35E)2314 新しいカレントポーション、SC(すなわち、S11)があ るので、これを閉塞する可能性のあるスパンを検索す る。スパン閉塞テスト照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S7)についてすべての潜 在的閉塞スパンのセットを作る。照会でS0のみ見つかる。 35F)2316および2432FQが空でないので、カレントポーションSC (すなわち、S11)を閉塞しそうなスパンがなければならない。そのため、FQ の第1スパンを読み取り、新しいスパン、SNとする。この読み取りオペレーシ ョンで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式78) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、セットの第1(で唯一の)スパン、S0が与え られる。読み取り処理ではまた、(F0Q=0)をセットすることでFQからS0を 削除する。読み取りプロセスでセットFQは空のままになる。 36)2109、2106、2110および2112 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SP(す なわち、S11)も新しいスパン、SN(すなわち、S0)も有効である。そのため 、これら2つのスパンのスパン・インタラクション・パラメータを計算し、次の ようになる:(非、非、遠、遠)。 37)2114 スパン・インタラクション・パラメータからス パン・インタラクション・タイプを決定し、タイプ32であることがわかる。 38)2116、2118および2600 スパン・インタラクション・タイ プがタイプ32なので、ルール5を呼び出して次のようにS11を処理する: 38A)2602および2606 新しいスパン、SN(すなわち、S0)がSC (すなわち、S11)のx軸投影内に隠れている。そのため、SN(すなわち、S0 )を放棄する。FQが空なので、カレントポーション、SC(すなわち、S11) を閉塞する可能性のあるスパンは他にない。そのため、新しいスパン、SNに無 効とラベル付けする。 SN =無効 (式79) 読み取りオペレーションは終わっていない。S3はまだ現在のスパン、SPであ る。セーブしたスパン、SSの状態は無変化のままなので、無効のままである。 39)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S11の処理を継続する。 39A)2302 カレントポーションSC(すなわち、S11)は完全に可視 でなければならない。そのため、現在のスパン、SP(すなわち、S11)をxCL からxCR(すなわち、x11Lからx11R)までレンダリングする。 39B)2304および2306 セーブしたスパン、SSは有効でないので 、SCのサイズを小さくする交差スパンはなかった。そのため、照会を行って隣 接スパンを探す。照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、S11)について隣接する すべてのスパンのセットを作る。照会でスパンは見つからず、FQは空である。 39C)2308および2320 FQが空なので、隣接するスパンはない。 完全にxCR(すなわち、x11R)の左のスパンはすべて隠れていなければならな いため、これらを無効と宣言する。これは、次のように各SMCCAMワード9 00で照会することで行う: この照会で、セットFVのスパンを10から5に減らすことで、有効スパンの 数を減らす。この時点で、FVはS0、S1、S12からS14で構成される。 39D)2322 有効な現在のスパン、SPも、有効な新しいスパン、SNも ない。故に、いずれも無効とラベルを付ける。 SP =無効; (式82) SN =無効; 39E)2324 カレントポーション、SCを次に等しくセットする: xCL=xCR=x11R; xCR=無効; zCL=無限; zCR=無効; (式83) zCF=無限 40)2109、2106、2108および2200 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SPが有 効でなく、FVが空でないので(少な くとも一部スパンが有効であることを示す)、ルール1を呼び出す。ここで、ル ール1を使ってx11Rの最前スパンを検索する。見つかったら、この最前スパン を現在のスパンSPとして処理する。 40A)2202 照会を行って、xCL(すなわち、x11R)でカレントラス タラインに影響を与えそうな有効スパンすべてを見つける。照会は、次のように 各SMCCAMワード900で行う: この照会で、S0、S1およびS12が見つかる。照会オペレーションには、無限 にセットされたzCFより小さい値をチェックするz座標比較も含むことができる 。 40B)2204および2222 FQが空でないので、xCL(すなわち、x1 1R )でカレントラスタラインに影響を与えそうな少なくとも1つのスパンがなけ ればならない。そのため、FQの第1スパンを読み取り、新しいスパン、SNとす る。この読み取りオペレーションで次の値をセットする: SN =読み取り(n)=0; xNL=読み取り(xL)=x0L; xNR=読み取り(xR)=x0R; zNL=読み取り(zL)=z0L; zNR=読み取り(zR)=z0R; (式85) dN =読み取り(d)=d0; iN =読み取り(i)=i0; FQの第1スパンの読み取りで、FQの最左スパン、S0が与えられる。読み取 りプロセスではまた、(F0Q=0)をセットすることでFQからS0を削除する。 40C)2224 新しいスパン、SN(すなわち、S0)のx座標xCL(すな わち、x11R)のz値をztempとして計算する。 この位置(x11R、ztemp)2710を図27に示す。 40D)2226、2228および2232 計算した値、ztempはzCL(す なわち、無限)より小さいので、次のようにセットして新しいスパン、SN(す なわち、S0)を現在のスパン、SPにする: 40E)2236 カレントポーション、SCを、次のようにセットしてxCL (すなわち、x11R)の右の現在のスパン、SP(すなわち、S0)のポーション にセットする: 40F)2237および2238 前述の通り、この方法の本部分の目的はxCL (すなわち、x11R)の最前スパンを見つけることである。xCL(すなわち、 x11R)で、現在のスパン、SP(すなわち、S0)のz座標はztempに等しい。 そのため、xCL(すなわち、x11R)のSP(すなわち、S0)の前にスパンがあ れば、これは少なくとも部分的にztempよりオブザーバに近い位置になければな らない。セットFQは空でなく、xCL(すなわち、x11R)の最前スパンの全候補 を含むので、これら候補の一部を照会で除くことができる: この照会オペレーションで、エンドポイントのz座標がztempよ り小さい候補スパンを保持する。照会後、FQは空である。 40G)2204、2206および2214 FQが空なので、xCL(すなわ ち、x11R)で最前となる候補スパンは他にあり得ない。また、SP(すなわち、 S0)が有効なので、各SMCCAMワード900でスパン閉塞テスト照会を実 行する: この照会で、カレントポーション、SC(すなわち、x11Rの右のS0)につい てすべての潜在的閉塞スパンのセットを作る。照会でスパンは見つからず、FQ は空である。 40H)2216および2220 FQが空なので、カレントポーション、SC (すなわち、x11Rの右のS0)を閉塞しそうなスパンは他にあり得ない。そのた め、新しいスパン、SNに無効とラベルを付ける。 SN =無効; (式91) 読み取りオペレーションは終わっていない。S0はまだ現在のスパン、SPであ る。セーブしたスパン、SSの状態は無変化のままなので、無効のままである。 41)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S0を処理する。 41A)2302 カレントポーションSC(すなわち、x11Rの右のS0)は 完全に可視でなければならない。そのため、現在のスパン、SP(すなわち、S0 )をxCLからxCR(すなわち、x11Lからx0R)までレンダリングする。 41B)2304および2306 セーブしたスパン、SSは有 効でないので、SCのサイズを小さくする交差スパンはなかった。そのため、照 会を行って隣接スパンを探す。照会は、次のように各SMCCAMワード900 で行う: この照会で、カレントポーション、SC(すなわち、S0)について隣接するす べてのスパンのセットを作り、FQに保存する。照会でスパンは見つからず、FQ は空である。 41C)2308および2320 FQが空なので、隣接するスパンはない。 完全にxCR(すなわち、x0R)の左のスパンはすべて隠れていなければならない ため、これらを無効と宣言する。これは、次のように各SMCCAMワード90 0で照会することで行う: この照会で、セットFVのスパンを10から2に減らすことで、有効スパンの 数を減らす。この時点で、FVはS1とS14で構成される。 41D)2322 有効な現在のスパン、SPも、有効な新しいスパン、SNも ない。故に、いずれも無効とラベルを付ける。 SP =無効; (式94) SN =無効; 41E)2324 カレントポーション、SCを次に等しくセットする: xCL=xCR=x0R; xCR=無効; zCL=無限; zCR=無効; (式95) zCF=無限 42)2109、2106、2108および2200 ディスプ レイスクリーンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のス パン、SPが有効でなく、FVが空でないので(少なくとも一部スパンが有効であ ることを示す)、ルール1を呼び出す。ここで、ルール1を使ってx0Rの最前ス パンを検索する。見つかったら、この最前スパンを現在のスパンSpとして処理 する。 42A)2202 照会を行って、xCL(すなわち、x0R)でカレントラスタ ラインに影響を与えそうな有効スパンすべてを見つける。照会は、次のように各 SMCCAMワード900で行う: この照会で、S1とS14が見つかる。照会オペレーションには、無限にセット されたzCFより小さい値をチェックするz座標比較も含むことができる。 42B)2204および2222 FQが空でないので、xCL(すなわち、x0 R )でカレントラスタラインに影響を与えそうな少なくとも1つのスパンがなけ ればならない。そのため、FQの第1スパンを読み取り、新しいスパン、SNとす る。この読み取りオペレーションで次の値をセットする: SN =読み取り(n)=1; xNL=読み取り(xL)=x1L; xNR=読み取り(xR)=x1R; zNL=読み取り(zL)=z1L; zNR=読み取り(zR)=z1R; (式97) dN =読み取り(d)=d1; iN =読み取り(i)=i1; 第1スパンの読み取りでFQの最左スパン、S1が与えられる。読み取りプロセ スではまた、(F1Q=0)をセットすることでFQからS1を削除する。 42C)2224 新しいスパン、SN(すなわち、S1)のx座標xCL(すな わち、x0R)のz値をztempとして計算する。 この位置(x0R、ztemp)2712を図27に示す。 42D)2226、2228および2232 計算した値、ztempはzCL(す なわち、無限)より小さいので、次のようにセットして新しいスパン、SN(す なわち、S1)を現在のスパン、SPにする: 42E)2236 カレントポーション、SCを、次のようにセットしてxCL (すなわち、x0R)の右の現在のスパン、SP(すなわち、S1)のポーションに セットする: 42F)2237および2238 前述の通り、この方法の本部分の目的はxCL (すなわち、x0R)の最前スパンを見つけることである。xCL(すなわち、x0R )で、現在のスパン、SP(すなわち、S1)のz座標はztempに等しい。その ため、xCL(すなわち、x0R)のSP(すなわち、S1)の前にスパンがあれば、 これは少なくとも部分的にztempよりオブザーバに近い位置になければならない 。セットFQは空でなく、xCL(すなわち、z0R)の最前スパンの全候補を含む ので、これら候補の一部を照会で除くことができる: この照会オペレーションで、エンドポイントのz座標がztempより小さい候補 スパンを保持する。照会後、FQにはS14しか入っておらず、照会によって変更 されていない。 42G)2204および2222 FQが空でないので、xCL(すなわち、x0 R )で最前となりそうなスパンが少なくとももう1つなければならない。そのた め、FQの第1スパンを読み取り、新しいスパン、SNとする。この読み取りオペ レーションで次の値をセットする: SN =読み取り(n)=14; xNL=読み取り(xL)=x14L; xNR=読み取り(xR)=x14R; zNL=読み取り(zL)=z14L; zNR=読み取り(zR)=z14R;(式 102) dN =読み取り(d)=d14; iN =読み取り(i)=i14; 第1スパンの読み取りで、FQの唯一のスパン、S14が与えられる。読み取り プロセスではまた、(F14Q=0)をセットすることでFQからS14を削除する。 読み取りプロセスでセットFQは空のままになる。 42H)2224 新しいスパン、SN(すなわち、S14)のx座標xCL(す なわち、x0R)のz値をztempとして計算する。 この位置(x0R、ztemp)2714を図27に示す。 421)2226、2228および2232 計算した値、ztempは、zCL( すなわち、ステップ42C)でztempとして計算したx7RでのS0のz座標)よ り小さいので、次のようにセットして新しいスパン、SN(すなわち、S14)を 現在のスパン、SPにする : 42J)2236 カレントポーション、SCを、次のようにセットしてxCL (すなわち、x0R)の右の現在のスパン、SP(すなわち、S14)のポーション にセットする: 図27に示すように、ztempはzCLと等しいので、max()ファンクションで ztempまたはzCLを選ぶことができる。 42K)2237、2204、2206および2214 FQが空でSP(すな わち、S14)が有効なので、カレントポーション、SC(すなわち、x0Rの右の S14)を閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は、次 のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x0Rの右のS14)につい てすべての潜在的閉塞スパンのセットを作る。照会ではスパンが見つからず、FQ は空である。 42L)2216および2220 FQが空なので、カレントポーション、SC (すなわち、x0Rの右のS14)を閉塞しそうなスパンは他にあり得ない。そのた め、新しいスパン、SNに無効とラベルを付ける。 SN =無効; (式 107) 読み取りオペレーションは終わっていない。S14はまだ現在のスパン、SPで ある。セーブしたスパン、SSの状態は無変化のままなので、無効のままである 。 43)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S14を処理する。 43A)2302 カレントポーションSC(すなわち、x0Rの右のS14)は 完全に可視でなければならない。そのため、現在のスパン、Sp(すなわち、S 14)をxCLからxCR(すなわち、x0Rからx14R)までレンダリングする。 43B)2304および2306 セーブしたスパン、SSは有効でないので 、SCのサイズを小さくする交差スパンはなかった。そのため、照会を行って隣 接スパンを探す。照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x0Rの右のS14)につい て隣接するすべてのスパンのセットを作り、FQに保存する。照会でスパンは見 つからず、FQは空である。 43C)2308および2320 FQが空なので、隣接するスパンはない。 完全にxCR(すなわち、x14R)の左のスパンはすべて隠れていなければならな いため、これらを無効と宣言する。これは、次のように各SMCCAMワード9 00で照会することで行う: この照会で、セットFVのスパンを2から1に減らすことで、有効スパンの数 を減らす。この時点で、FVはS1のみから構成される。 43D)2322 有効な現在のスパン、SPも、有効な新しいスパン、SNも ない。故に、いずれも無効とラベルを付ける。 SP =無効; (式 110) SN =無効; 43E)2324 カレントポーション、SCを次に等しくセットする: xCL=xCR=x14R; xCR=無効; zCL=無限; zCR=無効; (式 111) zCF=無限 44)2109、2106、2108および2200 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、現在のスパン、SPが有 効でなく、FVが空でないので(少なくとも一部スパンが有効であることを示す )、ルール1を呼び出す。ここで、ルール1を使ってx14Rの最前スパンを検索 する。見つかったら、この最前スパンを現在のスパンSPとして処理する。 44A)2202 照会を行って、xCL(すなわち、x14R)でカレントラス タラインに影響を与えそうな有効スパンすべてを見つける。照会は、次のように 各SMCCAMワード900で行う: この照会で、S1のみ見つかる。照会オペレーションには、無限にセットされ たzCFより小さい値をチェックするz座標比較も含む ことができる。 44B)2204および2222 FQが空でないので、xCL(すなわち、x1 4R )でカレントラスタラインに影響を与えそうな少なくとも1つのスパンがなけ ればならない。そのため、FQの第1スパンを読み取り、新しいスパン、SNとす る。この読み取りオペレーションで次の値をセットする: SN =読み取り(n)=1; xNL=読み取り(xL)=x1L; xNR=読み取り(xR)=x1R; zNL=読み取り(zL)=z1L; zNR=読み取り(zR)=z1R; (式 113) dN =読み取り(d)=d1; iN =読み取り(i)=i1; 第1スパンの読み取りで、FQの最左スパン、S1が与えられる。読み取り処理 ではまた、(F1Q=0)をセットすることでFQからS1を削除する。 44C)2224 新しいスパン、SN(すなわち、S1)のx座標xCL(すな わち、x14R)のz値をztempとして計算する。 この位置(x14R、ztemp)2716を図27に示す。 44D)2226、2228および2232 計算した値、ztempはzCL(す なわち、無限)より小さいので、次のようにセットして新しいスパン、SN(す なわち、S1)を現在のスパン、SPにする: 44E)2236 カレントポーション、SCを、次のようにセ ットしてxCL(すなわち、x14R)の右の現在のスパン、SP(すなわち、S1) のポーションにセットする: 44F)2237、2204、2206および2214 FQが空でSP(すな わち、S1)が有効なので、カレントポーション、SC(すなわち、x14Rの右の S1)を閉塞する可能性のあるスパンを検索する。スパン閉塞テスト照会は、次 のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x14Rの右のS1)につい てすべての潜在的閉塞スパンのセットを作る。照会ではスパンが見つからず、FQ は空である。 44G)2216および2220 FQが空なので、カレントポーション、SC (すなわち、x14Rの右のS1)を閉塞しそうなスパンは他にあり得ない。そのた め、新しいスパン、SNに無効とラベルを付ける。 SN =無効; (式 118) 読み取りオペレーションは終わっていない。S1はまだ現在のスパン、SPであ る。セーブしたスパン、SSの状態は無変化のままなので、無効のままである。 45)2109、2106、2110および2300 ディスプレイスクリー ンの右辺に達しておらず(すなわち、xCL<xmax)で、SPが有効でSNは有効 でないので、ルール2を呼び出して、S1を処理する。 45A)2302 カレントポーションSC(すなわち、x14Rの右のS1)は 完全に可視でなければならない。そのため、現在のスパン、SP(すなわち、S1 )をxCLからxCR(すなわち、x14Rからx1R)までレンダリングする。 45B)2304および2306 セーブしたスパン、SSは有効でないので 、SCのサイズを小さくする交差スパンはなかった。そのため、照会を行って隣 接スパンを探す。照会は、次のように各SMCCAMワード900で行う: この照会で、カレントポーション、SC(すなわち、x14Rの右のS1)につい て隣接するすべてのスパンのセットを作り、FQに保存する。照会でスパンは見 つからず、FQは空である。 45C)2308および2320 FQが空なので、隣接するスパンはない。 完全にxCR(すなわち、x14R)の左のスパンはすべて隠れていなければならな いため、これらを無効と宣言する。これは、次のように各SMCCAMワード9 00で照会することで行う: この照会で、セットFVのスパンを1から0に減らすことで、有効スパンの数 を減らす。この時点で、FVは空である。 45D)2322 有効な現在のスパン、SPも、有効な新しいスパン、SNも ない。故に、いずれも無効とラベルを付ける。 SP =無効; (式 121) SN =無効; 45E)2324 カレントポーション、SCを次に等しくセッ トする: xCL=xCR=x1R; xCR=無効; zCL=無限; zCR=無効; (式 122) zCF=無限 46)2106、2108および2120 現在のスパン、SPが有効でなく 、FVは空で、すべてのスパンを処理した。xCL(すなわち、x1R)はxmaxより 小さくなければならないので、スパンのカバーしているxCL(すなわち、x1R) の右にまだカレントラスタラインの一部がある。そのため、背景をxCL(すなわ ち、x1R)からxmaxまでレンダリングする。カレントラスタラインについてセ グメント・スパン・ラスタリゼーション方法2100は完了する。 スパン・ソーティング・パイプライン400内の処理のタイミング ジェネリック3Dグラフィックス・パイプライン200は全体として2ページ のメモリを持つダブルバッファされたフレームバッファ224を用いる。これに よって、1ページの画像をディスプレイ装置に表示しながら、レンダリングプロ セスでもう1枚のページに画像を書き込むことができる。幾何形状が空間ソーテ ィングなしにパイプラインに送られるため、画像データはディスプレイスクリー ン104内のランダムな位置に書き込まれる。シーンレンダリングが完了すると 、ページがスワップされ、次のシーンがレンダリングされる。 ディスプレイメモリの数個のラスタラインのみ使用 スパン・ソーティング・レンダリング・パイプライン400は、1つのラスタ ラインについて完全なピクセルカラー化を生成してから、次のラスタラインに進 む。ラスタラインのレンダリングを表示に遅れない速度で行う場合、ラスタライ ンメモリ416に数個のラ スタラインしか必要としない。 図28に、ラスタラインメモリ416のラスタライン2個のみで行えるスパン ・ソーティング・レンダリング・パイプライン400内の処理のタイミングを示 す。この図において、水平軸は時間で、目盛りマークがそれぞれ物理的ディスプ レイ装置(CRT等)に1ラスタラインを表示する時間を表す。シーン1 28 02の多角形処理1400は、シーンの多角形をすべてバケット・ソート・メモ リ404に書き込む。この2802を完了すると、シーン1についてラスタライ ン0がレンダリングされる2804。この第1ラスタラインのレンダリング28 04が完了すると、後続ラスタラインをディスプレイ装置が必要とする前にレン ダリングした場合、ディスプレイ装置へのシーン1の表示2806を開始できる 。このように、ラスタラインのレンダリング2808は、ラスタラインの表示2 806と共にロックステップにあり、ラスタラインを処理しながら書き込む1つ と、読み取ってディスプレイ装置にデータを送る1つという、ラスタラインメモ リ416のラスタライン2個しか必要としない。シーン1 2802の多角形処 理1400が完了すると、シーン2 2810の多角形処理1400を開始でき 、この2810を、シーン1 2808のラスタライン処理と、シーン1 28 06のラスタライン表示と平行して(パイプライン方式で)行う。 図28の図は、ラスタライン処理2808がラスタラインの表示にかかる時間 に非常に近接して一致すると想定しているため、理想的なケースである。実際の システムでは、ラスタラインの処理にかかる時間にはややバリエーションがある 。そのため、いくつかのラスタラインは、対応するシーンを表示する前に処理す ることによって、タイミング要件に「スラック」を与えなければならない。図2 8の図は水平や縦リトレース時間などの表示タイミング要件も無視 しているが、これらはタイミングにある程度の「スロップ」を導入するために用 いることができる。 ピクセルカラー化処理が、ラスタラインのすべての多角形スパンのピクセル数 ではなくディスプレイスクリーンのピクセル数に比例するため、フルフレームバ ッファよりメモリを少なくすることができる。レンダリングのタイミングをこの ようにすると、スパン・ソーティング・レンダリング・パイプライン400の待 ち時間は大半が多角形処理1400部分となる。多角形処理1400がディスプ レイスクリーン速度に遅れなければ、ディスプレイ装置のスクリーンをリフレッ シュする毎に新しいシーンを表示することができる。 図28の図は、新しいシーンを表示する時、シーンのラスタライン0を先に表 示しなければならないと想定している。この想定により、多角形処理2802と ラスタライン処理2808がディスプレイ装置2806に「シンクアップ」しな ければならない。別のアプローチとして、多角形処理をディスプレイ装置のサイ クル2806内のあらゆるポイントで完了させ、表示するラスタラインでラスタ ラインレンダリングを開始(ラスタリン処理の待ち時間を考慮して)するものが ある。この代替えアプローチには、バケット・ソート・メモリ404がどのラス タラインでも読み取りオペレーションを開始できなければならない。 標準型テレビなど一部のディスプレイスクリーンは、ラスタラインのインター レースディスプレイを用いている。これは、偶数番号のラスタラインを先に(偶 数「フィールド」)、奇数番号のラスタラインを次に(奇数「フィールド」)表 示するものである。この種のディスプレイでは、スパン・ソーティング・レンダ リング・パイプライン400はディスプレイが必要とする順番でラスタラインを 生成する。ディスプレイの2つのフィールドは別のシーンとして、 あるいは1つのインターレースシーンとして扱うことができる。 シングルバッファのディスプレイメモリの使用 図28では、ラスタラインメモリ416には数個のラスタラインしか保存しな いと想定している。別のアプローチとして、ラスタラインメモリ416にラスタ ラインすべてについてメモリを持たせるものがある。これによって必要なメモリ が非常に大きく(おそらく100倍以上)なるが、大半のコンピュータのビデオ ディスプレイシステムはスクリーンの各ピクセルについてメモリを持っており、 3Dレンダリングはこの種のコンピュータディスプレイのアドオンと考えること ができる。そのため、必要なメモリは既にホストコンピュータシステムのビデオ メモリ中に存在している場合がある。 本書の本部分では、ラスタラインメモリ416は各ラスタラインについてすべ てのピクセルカラー情報を保存すると想定する。図29に、10個のラスタライ ン(実用的なディスプレイは一般に1000のオーダーのラスタラインを有する )を連続してリフレッシュするディスプレイ装置のタイミングを示すが、ここで はラスタラインに相当する3枚のスクリーンが表示される2902。前の図のよ うに、水平軸が時間で、各目盛りマークが物理的ディスプレイ装置に1つのラス タラインを表示する時間を表す。シーン表示中のあるポイント2904で、次の シーンの多角形処理1400を完了し2906、このポイント2906はいかな る方法でもシーン表示にシンクロするとは想定されない。多角形処理1400の 完了2906は、ラスタライン処理2907が開始できることを意味する。ラス タライン0の処理2908を先に行い、このラスタライン0をディスプレイ装置 に送る次回2910にラスタラインを表示する。同様に、ラスタラインを処理し 2912、その後表示し2914、もってシーン全体を表示する2916。図2 9は、シーンの多角形処理 1400の完了時2906、最後のラスタラインのラスタライン処理2912が 、最初のラスタライン表示2910後に起こっても、ディスプレイのすぐ次のリ フレッシュサイクル2916からシーンを表示する方法を示す。多角形処理とシ ーン全体のラスタライン処理の両方がディスプレイ装置のスクリーンのリフレッ シュレートに遅れなければ、新しいシーンをスクリーンリフレッシュ毎に表示す ることができる。場合によって多角形処理またはラスタライン処理のいずれかが 追いつかなかった場合、ディスプレイ装置は2つの連続するディスプレイリフレ ッシュサイクルで同じシーンを表示することができる。 図29の背後にあるコンセプトを、平均してディスプレイリフレッシュサイク ルに追いつかないラスタライン処理2912に拡大することができる。すなわち 、最後のラスタラインのラスタライン処理2912が表示2914の前に完了す る限り、シーン全体が正しく表示される。さらに、ラスタライン処理は、最も最 近表示されたばかりのラスタラインについて開始することができる。図30は、 ラスタライン7が完全に表示される直前に多角形処理1400が完了3002す るところを示す。ラスタライン処理3004は、ラスタライン7 3006で始 まることができ、このラスタラインは、ディスプレイ装置がそれを表示する次回 に表示される3008。シーンの表示は、最後に処理されたラスタライン301 0がその表示3012前に完了している限り、前のシーンの表示と混合しない( すなわちクリーンなトランジション)。このように、すべてのラスタを処理する 最大時間3014はほぼ2つのスクリーンリフレッシュサイクルと同じ長さであ る。故に、各ラスタラインの処理は、ダブルバッファを必要とすることなく、シ ングルバッファのみで、表示する時間の約2倍の長さとなる。 図30に示すコンセプトは、ラスタライン処理3004が1以上のスクリーン リフレッシュサイクルをカバーするものだが、これをラスタライン処理3004 がラスタライン0の表示まで待つようにして、リフレッシュサイクルと同期する よう修正することができる。次のシーンの多角形処理1400は、バケット・ソ ート・メモリ404がダブルバッファであるため、待つ必要はない。 ダブルバッファのディスプレイメモリの使用 スパン・ソーティング・レンダリング・パイプライン400は、完全ダブルバ ッファのラスタラインメモリ416と共に機能することができ、ここでディスプ レイスクリーン104の各ピクセルはメモリの2ワード(各バッファページに1 つずつ)に対応する。この構成では、あるシーンの多角形処理104は完了する まで実行し、そして、ディスプレイスクリーン104のすべてのラスタラインが 処理されるまでラスタライン処理を実行し、そしてシーンをディスプレイ装置に 表示する。このアプローチには、ディスプレイ装置のタイミングに制約されずに 必要なだけ長く時間をかけられるという利点がある。このアプローチには、追加 待ち時間段階を導入するという不都合がある。 照会プロセッサのアーキテクチャ 図5の各ラスタラインに関するスパン・ソーティング・レンダリング・アーキ テクチャ500内では、照会プロセッサ510はスパン生成プロセッサ508か らスパンを受け取り、可視スパンポーション(前述)を決定し、その可視スパン ポーションをラスタライズ・プロセッサ510に送る。照会プロセッサ510の ブロック図を、スパンメモリ408内の2ページと共に図31に示す。 一方のスパンメモリページ800はスパン生成プロセッサ508からスパンパ ラメータを受け取り、他方のページ800は照会され 、可視スパンポーションを決定する。2つのページ800を、マルチプレクサの セットである照会プロセッサクロスバー3102を介してスワップする。照会プ ロセッサ510には、スパンパラメータを保存する次の5組のレジスタに細分さ れたレジスタファイル3104が含まれる:1)カレントポーションのSCのレ ジスタ3106、2)現在のスパン、SPのレジスタ3108、3)新しいスパ ンSNのレジスタ3110、4)セーブしたスパン、SSのレジスタ3112、お よび5)スパン交差位置などのために使うテンポラリレジスタ3114。 照会プロセッサコントロール3116は、照会オペレーションのシーケンスを 含む照会プロセッサ510のオペレーションのシーケンスを決定する。ラスタラ イン処理が進むにつれ、方法1800または2100内のブランチは、照会結果 、スパン状態およびスパン・インタラクション・タイプ(SIT)で決まる。SC およびSNの各ペアにつき、SITおよびSIP論理3118がスパン・インタ ラクション・タイプを生成する。SITの計算には、式10の演算と、各種比較 演算を実行する必要がある。これら演算は、レジスタファイル3104から受け 取ったデータについて、比較およびオフセット計算3200ブロックで行う。ル ール4 2500を呼び出す時は常に、交差計算ブロックでSCとSNの交点を計 算する。 スループットを最大にするため、比較およびオフセット計算3200を並列ハ ードウェアにインプリメントすることができる。図32に4個の同一ブロック3 202を示すが、各ブロック3202には2つの算術コンパレータ3204およ び3206、減算器3208、乗算器3210を含む。減算器3208と乗算器 3210は式10に示すオフセットを計算する。コンパレータは、スパン・イン タラクション・パラメータ(SIP)の生成に用いることのできる 信号を生成する。ブロック3202への入力は、レジスタファイル3104から 入り、出力はSITおよびSIP論理3118へ出る。 ソーティング・マグニチュード比較CAM回路 図33に、CMOSトランジスタとゲートから構成されるDuluk 特許による先 行技術のMCCAMビットセル3300を示す。MCCAMワード内のフィール ドは、多数のこれらセル3300で構築できる。このセル3300で、1ビット は6トランジスタRAMサブ回路3302に保存され、読み取りと書き込みは信 号CamWord 3304で制御し、データは差分ビット線、BitH3306およびBitL 3308を介して読み取り・書き込みされる(信号名末尾の「H」および「L」 は、それぞれアクティブハイとアクティブローを示す)。照会オペレーションに おいて、XORサブ回路3310は排他的OR関数を実行して信号NotEqual33 12を出すが、これはRAM3302に保存されるビット値がビット線3306 および3308のビット値と等しくないことを示す。照会オペレーション中、表 明される信号EnableIn3314は、フィールドの上位ビットがすべて等しいこと を示し、このビット位置は比較に使用できる。EnableIn3314を表明した時No tEqual3312が論理「0」だと、予めチャージしたイネーブル・プロパゲーシ ョン・サブ回路3316が、EnableOut 3318を表明することで次に下位のビ ット位置を使用可能にする。EnableIn3314を表明した時NotEqual3312が 論理「1」だと、2トランジスタ照会解像サブ回路3320が、ComparisonOp3 324(Duluk 特許記述の通り)の値に応じて条件付きでQueryTrue 3322信 号をプルダウンし、EnableOut 3318は表明されないままとなる。 MCCAMとは対照的に、SMCCAM800(「S」は「ソー ティング」を表すことに注意)は、ソーティングオペレーション中、1つのワー ド900から次へデータをシフトできる。図34は、SMCCAMワード900 中の1ビットの「TTLタイプ」回路である。このセル3400にはビットを保 存するためのマスタスレーブ・フリップフロップ3402を含むが、これがシフ トレジスタでビットとして機能しなければならないためである。このセルを、別 個のI/Oライン、InputBit3404とOutputBit 3406と共に示すが、1つ の双方向I/Oラインまたは双方向差分ペアを用いることもできる。読み取りオ ペレーションは、Read3408制御ラインを表明することで行い、これがトライ ステートバッファ3410を使用可能にする。書き込みオペレーションは、Writ eEn 3414が表明されShiftEn 3416が表明されない時、Clock 3412の 立ち上がりエッジで行われる。ソートオペレーション内のシフトは、WriteEn 3 414が表明されShiftEn 3416も表明されている時、Clock 3412の立ち 上がりエッジで行われる。信号ShiftEn 3416は、InputBit3404とShiftI n 3420のデータのいずれをフリップフロップ3402に保存するかを選択す るマルチプレクサ3418を制御する。ShiftIn 3420のデータは、前のSM CCAMワード900の対応するセル3400のShiftOut3422から来る。照 会オペレーションは、Duluk 特許のMCCAMと同様に機能する。すなわち、排 他的OR3424で信号NotEqual3312を生成し、これを使ってEnableOut 3 318とワードの照会結果StoredGreaterL3426を生成する。照会オペレーシ ョン機能の大きな違いは、1)セルにComparisonOp3324がないこと、および 2)照会結果を生成するためのオープンコレクタ回路3428である。 図35は、SMCCAMワード900の1ビットのための27ト ランジスタCMOS回路である。このセル3500は、フリップフロップのマス タ部分としての6トランジスタRAMサブ回路3302と、フリップフロップの スレーブ部分としてのスレーブ・メモリ・サブ回路3502を含む。6トランジ スタRAMサブ回路3302は従来の方法で読み取りおよび書き込みオペレーシ ョンに使い、スレーブ・メモリ・サブ回路3502はシフト中にのみ用いる。ビ ットを6トランジスタRAMサブ回路3302にシフトできるようにするため、 セル3504にシフト・ライト・サブ回路を含む。シフトを行うと(この例のセ ル3500内で)次のシーケンスが発生する:1)差分クロック信号ShiftToSla veH 3506とShiftToSlaveL 3508を表明してから、デアサーションして、 データビットをスレーブ・メモリ・サブ回路3502にラッチする、2)データ ビットを、差分信号ShiftDataOutH 3510とShiftDataOutL 3512を介して 、セルから次のワード900の対応するセル3500に出力する、そして3)デ ータビットを次のワード900の差分信号ShiftDataInH3514とShiftDataInL 3516で受け取って、ShiftEnable 3518を表明することでそのセル350 0に書き込む。 多くのビットセル回路を等価関数を行うよう設計することができる。その他の 選択例を示すため、図35のセルは予めチャージされていないイネーブル・プロ パゲーション・サブ回路3520と3トランジスタ照会解像サブ回路3522を 使っている。スレーブ・メモリ・サブ回路3502はダイナミック回路で、静的 ラッチを含む他の様々なタイプのラッチと置き換えられることに注意。 図36は、SMCCAMワード900の1ビットの23トランジスタCMOS 回路である。このセル3600は、フリップフロップのマスタハーフとスレーブ ハーフの両方で動的記憶装置を用いる1 2トランジスタ・マスタ・スレーブ・メモリ・サブ回路3602を使っている。 このセルの大きな利点は、トランジスタの数が少なく、直列トランジスタ(直列 トランジスタは拡散接点が少ないためスペースが小さくてすむ)が多いため、チ ップ面積が小さいということである。入力バス、BitInH3604からのデータビ ットは、WriteToMasterH3606とWriteToMasterL3608からなる差分信号ペ アを表明することでフリップフロップ3602のマスターハーフに書き込まれる 。クロックサイクルのもう半分の間、ShiftToSlaveH3610とShiftToSlaveL 3612からなる差分信号ペアを表明することで、フリップフロップ3602の スレーブハーフにデータビットを保存する。前のワードの対応するビットからの データビットは、ShiftToMasterH3616とShiftToMasterL3618からなる差 分信号ペアを表明することで、ShiftDataInH3514を介してフリップフロップ 362のマスターハーフにシフトされる。保存されたデータビットは、ReadWord 3620を表明してセル3600から読み取られ、これが逆ビット値をBitOutL 3622バスに入れる。セル3600のバランスが比較を実行し、前述のセル3 500に似た方法でチェーンを使用可能にする。XORサブ回路は保存されたビ ット値を(フリップフロップ3602のマスタ値とスレーブ値が互いの補数であ るためこれらを利用して)BitInH3604とBitInL3624の相補値と比較する 。 図37は、フィールドセットを形成するCMOS SMCCAMビットセル配 列を示す。信号、ShiftDataInH3514とShiftDataInL3516は、第1ワード 900がデータを900にシフトできないため、第1ワード900にグラウンド される。 符号付き数をSMCCAMに保存しなければならない場合、読み取りおよび書 き込みプロセスの両方で、符号ビット(すなわち「1 」が正を暗示)を逆転させるだけである。このようにすると、ハードウェアで正 の数が負の数より「大きく」なる。別のアプローチとして、符号付き数を保存・ 照会しなければならない場合各フィールドの符号ビット位置の論理を変更するも のがある。浮動小数点数は、ビット位置のより上位のセットに指数を入れ、指数 を正の数として保存することで容易に保存される。故に、IEEE浮動小数点標 準数は正しく処理される。 ラスタライン内で縦の複数スパン 前述のセグメント・スパン・ラスタリゼーション方法2100では、各多角形 はあるラスタラインに1つしかスパンを持つことができず、そのスパンはスクリ ーン座標のx―y平面に平行なラインセグメント(故に、上記名2100)で表 される。スパンのエンドポイントの位置はオブジェクト精密であるため、ピクセ ルの境界内のどこにでも水平に位置づけることができる。スパン端部がピクセル 幅の20%をカバーしているとすると、そのスパンはそのピクセルのカラー値の 20%となり、ピクセル幅の残りの80%のカラー値とブレンドされる。これに よって水平のアンチエイリアシングができるが、縦のアンチエイリアシングには ならない。すなわち、ブレンドは縦ではなく水平に起こる。多角形の辺が縦より 水平に近いと、その辺は複数のピクセル領域を横切る可能性が高いため、その多 角形のカラーを複数ピクセルにブレンドしなければならない。しかしながら、1 つのラインセグメントを使ってスパンを表現すると、多角形のカラーは1ピクセ ル(セグメントスパンエンドポイントを含むピクセル)にブレンドされ、両側の ピクセルは100%カバーされていると想定されるためブレンドされない(可視 スパンポーションが1ピクセルより広いと想定)。縦のアンチエイリアシングの 欠如は一部アプリケーションでは許容可能だが、高品質画像は両方 向でアンチエイリアシングしなければならない。 縦のアンチエイリアシングを追加する方法として、各ラスタラインを複数の「 サブラスタ」ラインに縦に分割するものがある。そして、セグメント・スパン・ ラスタリゼーション方法2100を各サブラスタに用いて、縦と水平にブレンド することでピクセルカラー値を生成することができる。図38Aにラスタライン 3802とそのピクセル3804、多角形の2辺3806と3808、その多角 形の2つのサブラスタスパン3810と3812を示す。図38Bに、その多角 形の4つのサブラスタスパン、3814、3816、3828および3820を 示す。可能なバリエーションとして、ピクセルが同じ多角形のこのようなサブラ スタスパン2つのみにカバーされている場合、ピクセル中央で1つのカラー値を 計算することが可能となる。 サブラスタラインを用いることで縦のエイリアシングは減るが、無くなること はない。多くのアプリケーションにとってこれは許容可能な近似である。 台形スパン・ラスタリゼーション方法 スパンは、1次元のラインセグメントではなく2次元の台形で表すことができ る。ラインセグメントもプレーナ台形も3次元のオブジェクト精密の視点座標で ある。台形表現の利点は、辺情報をラスタライン内に保存することによって水平 と縦の両寸法で正しいアンチエイリアシングを行う点である。 図39に、2つの三角形3902と3904、1つのラスタライン3906を ディスプレイスクリーン104内に持つ三角形メッシュを示す。各三角形390 2と3904のラスタライン3906内の領域は台形形状スパンで、S11 39 08とS12 3910というラベルが付いている。台形スパンにおいて、スパン のエンドポイ ントは台形の辺であり、3次元スクリーン座標において次の2つのポイント:ラ スタライン上辺の1つと、ラスタライン下辺の1つで記述される。故に、台形ス パンはスクリーン座標の4つのポイントで記述される。例えば、図の左台形スパ ン3908のx―z空間のエンドポイントは次によって記述される:1)(x11 LT 、z11LT)に位置する左エンドポイント上部、2)(x11LB、z11LB)に位置 する左エンドポイント下部、3)(x11LT、z11LT)に位置する右エンドポイン ト上部、および4)(x11LB、z11LB)に位置する右エンドポイント下部。これ ら4つのポイントは実際にx−z平面にあるが、y座標はラスタライン3906 の上または下位置で決まる。座標変数のサブスクリプトが次の3つのことを示す のに注意する:1)スパン番号(すなわち、「11」)、2)左または右エンド ポイント(すなわち、「L」または「R」)、および3)ラスタライン上または 下(すなわち、「T」または「B」)。 不透明台形スパンは、その長さの大半でより遠い幾何形状を閉塞するが、別の 台形スパンと隣接しないエンドポイント3912と3914では、より遠い幾何 形状は部分的に可視である。しかしながら、図39に示すような隣接する台形ス パンでは、共通エンドポイント3916はより遠い幾何形状を閉塞する。台形ス パンを用いる時これが問題となる。すなわち、隣接しない台形スパンのエンドポ イントはより遠い幾何形状を閉塞しないが、隣接するエンドポイントは共により 遠い幾何形状を閉塞する3918。本発明は、隣接するスパンを検索することで この問題を解決することに成功している。 図40に、同じラスタラインの台形スパングループを示すが、これらスパンは 図11のセグメントスパンの台形バージョンである。図40において、スパンの 可視ポーションはシェーディングされて いる。多角形メッシュのスパン(すなわち隣接するスパン)で、スパン上部が互 いにエンド・ツー・エンドで重なり、スパン下部も同様であることに注意する。 スパンエンドポイントは、ビューイングポイントから遠いスパンに辺の「シャド ー」を投影する。例えば、S2の左エンドポイント4002は、S1にこのような シャドー4004を投げかけている。 台形スパンを用いる際のもう1つの懸念は、多角形がラスタライン上下の両方 でなく、上か下と交差する時に発生する。これは一般に次のところで発生する: 1)多角形の角、2)多角形の水平辺、または3)閉塞スパンがスパンの裂辺の み可視に残す。この1例を図40に示すが、ここでS0の右端エンド4006は 可視である。このような状況で、台形スパンは実際に三角形のような形状である ため、上または下の長さがゼロの「縮重台形」とみなされることがある。 本書ではセグメント・スパン・ラスタリゼーション方法2100を詳しく説明 してきたが、台形スパン・ラスタリゼーション方法は、最前スパンを左から右に 追い、スパンの可視ポーションをラスタリゼーション・プロセッサ512に送る という点で類似である。重要な違いは、台形スパンの隣接しないエンドポイント がより遠い幾何形状を完全に閉塞しない点である。台形スパン・ラスタリゼーシ ョン方法はこの種のスパンを正しく取り扱わなければならない。 台形形状スパンの取り扱いにはいくつか方法がある。本書で提示する台形スパ ン・ラスタリゼーション方法の4つの選択肢のそれぞれについて方法フロー図を 示すのではなく、対応するSOT照会の選択肢と共にそれぞれの特徴を説明する 。これら4つの選択肢は、本書で提示するラスタリゼーション方法をいかに台形 形状スパンの処理に拡大するか図示するよう選んだ。 バージョン1:スパン上部とスパン下部に別個の閉塞処理 台形スパンは、次の集合として記述できる:1)ラスタライン上部に沿った台 形スパンの境界上のラインセグメントであるスパン上部、2)ラスタライン下部 に沿ったラインセグメントであるスパン下部、および3)スパン上部とスパン下 部の間の領域。本書セクションに説明する台形スパン・ラスタリゼーション方法 のバージョンは、スパン上部についてスパン下部とは別に閉塞処理を行う。同じ ラスタラインでは、スパン上部とスパン下部は互いを閉塞することがないのでこ れが可能である。スパン上部の閉塞処理は、セグメント・スパン・ラスタリゼー ション方法2100でセグメントスパンで行った閉塞処理と同じ方法で行うこと ができる。スパン下部の閉塞処理は、同じ方法で別に行うことができ、上部と下 部のペアをピクセルカラー生成のため正しくペア組みするため、スパン上部の閉 塞処理と平行して行わなければならない。 台形スパン・ラスタリゼーション方法のこのバージョンは、次の「スパン状の 」もの(該当するエンドポイント含む)を記録する:1)どの部分をレンダリン グするか確認するため現在テスト中の台形スパンである、現在のスパン、SP、 2)可視性をテスト中のSPの上辺、カレントスパン・トップ、SCT、3)可視 性をテスト中のSPの下辺、カレントスパン・ボトム、SCB、4)スパンメモリ 408から最近読み取った台形スパンである、新しいスパン、SN、5)SNの上 辺、新しいスパン・トップ、SNT、6)SNの下辺、新しいスパン・ボトム、SN B 、7)前述のルール4に類似の状況でSCTがSNTと交差するため、一時的にセ ーブした台形スパン、トップ・セーブ・スパン、SST、および8)SCBがSNBと 交差するため、一時的にセーブした台形スパン、ボトム・セーブ・スパン、SSB 。スパン上部はスパン下部と別に処理し、これらが別のスパンと の交点を持つ可能性があるため、2つの異なるセーブしたスパンが必要となる。 ラスタリゼーション中により多くの情報を記録するには、照会プロセッサ510 内のスパン・パラメータ・レジスタ3104にレジスタを追加する必要がある。 図41に、図40のスパン例、S1 4101とS2 4102を拡大したバージ ョンを示し、S1 4101を現在のスパン、SPと想定する。S1T 4103と呼 ぶS1 4101のスパン上部はその対応するSOT領域4104を持ち、それ4 103を閉塞するS2T 4106を見つける。このSOT領域4104はスパン 上部のみ検索しているため、S2B 4108は見つけない。同様に、S1のスパン 下部、SIB 4110のSOT領域4112は、それ4110を閉塞するS2 4 108を見つける。 図42に、S31 4201からS39 4209のラベルの付いた、ラスタライン 4200内の部分的スパンセットの図を2つ示す。上の図は、スパンのx―z図 (ルック方向はy軸と平行)、下の図は、同じスパンのx―y図(ルック方向は z軸と平行)である。下の図で、スパンの隠れたポーションは図示しないため、 そのラスタライン4200についてスパンの無限精密レンダリングがどのように 描かれるかを表す。しかし、ディスプレイ装置には無限の精密がないため、スパ ンカラーは各ピクセルについて正しい割合でブレンドしなければならない。図で は、スパン上部と下部の可視ポーションは太い線で示す。スパン上部と下部の可 視ポーションはラスタリゼーション・プロセッサ512に送られ、ここで多角形 辺導関数と共にピクセルカラーを決定する。図42のスパンは、スパン上部また はスパン下部のみ可視のスパンや、ラスタライン4200の高さ全体をカバーし ないスパンを含む各種ケースの取り扱いを示すように選んだ。 セグメント・スパン・ラスタリゼーション方法2100の場合同様、スパンは 左から右へ処理する。図42の例は、ラスタライン中間(すなわち、水平)で始 まり、S31 4201がSP、S31T 4211がSCT、S31B 4221がSCBであ る。SCTとSCBのSOT照会では何も見つからず、SNが無効にセットされ、セ グメント・スパン・ラスタリゼーション方法2100のルール2 2300に類 似のレンダリングルールによって、S31 4201をその右エンドポイントまで レンダリングする。S31 4201のレンダリングは、x31RT 4251を含むピ クセルまでピクセルの100%をカバーする。このポイントから、対応する多角 形辺の辺導関数(式1参照)を使って、各ピクセルのパーセントカバレッジを決 定し、このパーセンテージでピクセルカラーを重みづけする。スパン4201は 、エンドポイントの全長(台形スパンのエンドポイントはラインセグメント)が 可視と保証されているため、右エンドポイントまでレンダリングできる。再びル ール2 2300類似により、隣接するスパン上部およびスパン下部の照会で、 S32T 4212とS32B 4222が見つかる。方法のこのポイントで、S32 4 202はSP、S32T 4212はSCT、S32B 4222はSCBである。SCTとSC B のSOT照会では何も見つからず、隣接するスパンも見つからない。そのため 、SNを無効にセットする。 ルール2 2300類似のルールによって、S32 4202の全体をレンダリ ングし(その右エンドポイントは可視保証)、再び辺導関数を使ってピクセルカ バレッジを計算する。例を見ると、x31RT 4251とx31RB 4252の間に少 なくとも部分的に含まれるピクセルについて、S31 4201とS32 4202に よるパーセントカバレッジの合計は100%である。隣接するスパン上部と下部 を探す照会は失敗で、完全にx32RB 4252の左にあるスパ ンはすべて無効とし、SPとSNの両方を無効とセットする。 ルール1 2200に類似のルールによって検索を行い、x32RT 4253と x32RB 4254の最前スパン上部と下部を探し、S33 4203が見つかり、こ れをSPに割り当て、SCTをx32RT 4254の左のS33T 4213の部分にセッ トし、SCBをx32RB 4253の左のS33B 4223の部分にセットする。SCT とSCBのSOT照会でS34T 4214とS35B 4225(これらは異なるスパン からのものであることに注意)が見つかり、それぞれSNTとSNBに割り当てる。 SNをS35 4205ではなくS34 4204にセットするが、S34 4204の可 視ポーションがより左に遠いためで、方法は左から右に進む。 ルール3 2400に類似のルールでS33 4203を部分的にのみレンダリ ングする。この時点で、4203のx34LT 4225の右の領域はまだその可視 性を決定しなければならないため(一般にSNTとSNBが同じスパンからのもので ない場合)、ラスタリゼーションプロセッサ512は4203をx34LT 422 5までしかレンダリングできない。x34RT 4255はほぼ確実にピクセル辺と 揃っていないため、x34RT 4255を含むピクセルは、それ(と後で追加した 残り)をカバーするとわかっているS33 4203のポーションで部分的にカラ ー化される。または、S33 4203によるそのピクセルへのカラーコントリビ ューション全体を、ピクセルカバレッジの全体量がわかるまで延期することがで きる。この方法のこの時点で、S34 4204はSP、S34T 4214はSCT、S35B 4225はSCBである。SCT(すなわち、S34T 4214)のSOT照会で S35T 4215が見つかり、これをSNTにする。このSNTが前のステップのSNB と一致するので(すなわち、これらが同じスパン、S35 4205から)、SCB (すなわち、S35B 42 25)のSOT照会を方法の次のステップまで延期する。SNをS35 4205に セットする。 この方法中、SNTとSNBが同じスパンからのものでない時、ラスタラインの上 部に沿った現在のx値位置かラスタラインの下部に沿った現在のx値位置の最左 までしかレンダリングできない。2つのx値の最左で、左のスパンはすべて考慮 されているため、レンダリングができる。 ルール3 2400に類似のルールで、S34 4204をラスタリゼーション ・プロセッサ512でレンダリングする。この時、SNTとSNBは同じスパンから のものであるため、S34 4204をS35 4205の左エンドポイントまでレン ダリングする。また、S33 4203は、その可視性が決定されたので、そのレ ンダリングを完了できる。この方法のこの時点で、S35 4202をSPに、S35 T 4215をSCTに、S35B 4225をSCBにする。SCT(すなわち、S35T 4 215)のSOT照会でS37T 4217が見つかり、これをSNTにする一方、SCB (すなわち、S35B 4225)のSOT照会では何も見つからず、SNBを無効 にし、SNをS37 4207にセットする。 ルール3 2400に類似のルールにより、x35RB 4256がx35RB 425 6とx37LT 4257の間の最左選択であるため、S35 4205をその左エンド ポイントからx35RB 4256までレンダリングする。SCB(すなわち、S35B 4225)の隣接スパン下部の検索でS36B 4226が見つかる。この方法のこ の時点で、S35 4206はSP、S37T 4217はSCT、S36B 4226はSCB 、S37T 4217はSNTであり、SCB(すなわち、S36B 4226)のSOT照 会でS39B 4229が見つかり、これをSNBにする。 ルール3 2400に類似のルールにより、x37LT 4257がx37LT 425 7とx39LB 4258の間の最左選択であるため、S36 4206をx37LT 42 57までレンダリングする。また、S35 4205のレンダリングはx37LT 42 57まで継続できる。S37 4207は隠れておらず、1つのスパン上部しか持 たない(スパン下部なし)ことがわかっているので、4207をSPにする。こ の時点でまた、S37T 4217はまだSCT、S39B 4229はSCBであり、S37 4207に隣接するスパンを見つける照会で何も見つからないため、SNTは無 効で、S39B 4229がまだSNBである。 ルール2 2300に類似のルールにより、S37 4207の全体をレンダリ ングする。S35 4205もS36 4206も、x37RT 4259(S35 4205 を完了)がx37RT 4259とx39LB 4258の間の最左選択であるため、ここ までレンダリングすることができる。この時点で、S38 4208はSP、SCTは 無効、S39B 4229はSCB、SNTは無効で、SCB(すなわち、S39B 4229 )のSOT照会で何も見つからないため、SNBは無効である。 ルール1 2200に類似のルールにより、検索を行って、x37RT 4259 の最前スパン上部を見つける。この検索でS38T 4218が見つかり、SCTをx37RT 4259の右のS38T 4218のポーションにセットする。SCTのSOT 照会でS39T 4219が見つかり、これをSNTに割り当てる。この時点で、S38 4208はまだSP、S39B 4229はまだSCBで、SNBはまだ無効である。 ルール3 2400に類似のルールにより、S38 4208を、S39B 422 9の左エンドポイントまでレンダリングする。S39 4209は次のSPになるた め、他方の残りの完了していないスパ ン、S36 4206を、S39B 4229の左エンドポイントまでレンダリングし て完了する。すべての多角形辺導関数を正しく考慮するよう注意する。 ラスタライン4200処理はS39 4209をSPとして続くが、我々の例の右 辺に達した。この例の左および右境界内に完全に隠れたスパンがあったなら、こ れらはSOT照会で全く見つからないか、ルール5 2600類似のレンダリン グルールによって放棄されることによって完全に回避されている。同様に、2つ のスパン上部または2つのスパン下部の間に交差があったなら、ルール4 25 00に類似のルールが適用され、セーブしたスパンが用いられている。 スパン上部もスパン下部も持たない(高さが1ピクセルより小さい)か、スパ ン上部もスパン下部も隠れているが、ラスタライン内で可視(2つのほぼ水平な 多角形辺の間からのぞく)のスパンの取り扱いについて特殊なケースを追加する ことができる。大半の実用アプリケーションでは、このような限界的に可視のア イテムは無視できる。 いくつかの異なるスパンからのカラー情報を特定のピクセルについてブレンド することが可能である。このような状況では(および2つのスパンのカラーのみ のブレンドでも)、高品質画像を作るには妥当なパーセントカバレッジ近似のみ 必要である。 ハードウェアにインプリメントする場合、台形スパン・ラスタリゼーション方 法のこのバージョンでは、各スパン上部に1つのSMCCAMワード900、各 スパン下部に別に1つを用いる。スパン上部もスパン下部もスパンメモリ408 の同じページに保存できる。これは、スパンメモリ408を2つの本質的に独立 した閉塞プロセスの間で時分割することを意味し、スパン上部とスパン下部を別 のページに保存する場合に比べてパフォーマンスが落ちる。閉塞に1つのページ を使うことで、図39に示すように、スパンメモリ408はスパンをダブルバッ ファするのに合計2ページを必要になる。 スパンメモリ408で2ページ用いると、2つの閉塞プロセスを平行して行う ことができる。しかしながら、スパン導関数フィールド812や情報ポインタフ ィールド812など一部のフィールドは両方の閉塞プロセスが必要とするため、 重複させる必要がある。また、閉塞処理に2ページを用いることは、スパンメモ リ408に合計4ページ必要なことを意味することがある。しかし、非インター レースディスプレイ装置を用いる場合は、カレントラスタラインのスパン下部セ ットは次のラスタラインのスパン上部セットと同じである。そのため、1ページ を書き込み、2ページを読み取りに使い、これら2ページの内の1頁を次のラス タラインに再使用するため、スパンメモリ408には合計3ページ必要となる。 インターレースディスプレイ装置を用いる場合、同じ技術を使えるが、ラスタラ インのレンダリング順はディスプレイ装置と一致しない。 もう1つの代替え案は、他のメモリに可視下部スパンポーション(すなわち閉 塞処理後)のリストをセーブして、これらを次のラスタラインのスパン上部に用 いるものである。このようなメモリは、ラスタリゼーション・プロセッサ512 に含めることができる。これは確実に可能で、可視上部スパンの再計算ではおそ らくより経済的である。 バージョン2:ラスタラインの各トランジションでSOT照会を実行 台形スパン・ラスタリゼーション方法のこのバージョンでは、スパンは左から 右に処理するが、閉塞処理では各スパンを別個のスパ ン上部とスパン下部ではなく、1つのユニットとして扱う。このため、SOT領 域をスパン上部またはスパン下部で可視性トランジションによって右と左に境界 をつける。 図43に、図40の例のスパンS1 4301とS2 4302の拡大版を示す。 この例のスタート時、S1 4301は現在のスパン、SPで、x1LB 4304が 現在のx座標、xCLである。そのため、ラスタラインはS1 4301のx1LT 4 303とx1LB 4304の間の部分を含むx1LB 4304までレンダリングされ ている。カレントスパン、SCは同じ可視性特徴を持つxCL(すなわち、x1LB 4304)の右のSP(すなわち、S1 4301)の部分、すなわち、x1LB 4 304とx1RT 4306(x1RT 4306をxCRの値とする)の間の部分である 。S1 4301の可視性特徴は、スパン4301が右でより遠い幾何形状を閉塞 しないが、そのポイント4306の左で閉塞するため、x1RT 4306で変化す る。このSCのSOT領域4308を図43に示し、式123によって記述する 。 この照会では、2つの異なるz値、zCFTとZTFBを用いるが、閉塞テストする スパンポーションがその上部と下部に異なる深さ値を持つためである。zCFTの 値はSCのx座標間隔内のスパン上部の最大z値にセットし、これはztemp1 4 309のラベルがついた、値x1LB 4304を持つx座標である。値ztemp1 4 309は、S1 4301のスパン導関数を使って計算する。同様に、zCFBの値 は、Scのx座標間隔内のスパン下部の最大z値にセットし、こ の値はz1LB 4310である。SOT照会でS2 4302が見つかり、4302 をSNにする。 セグメント・スパン・ラスタリゼーション方法2100のルール3 2400 に類似のルールによって、SP(すなわち、S1 4301)をxCL(すなわち、 x1LB 4304)からSN(すなわち、S2 4302)の最左ポイントまでレン ダリングするが、これはx2LB 4304である。この間隔中、可視性特徴はラス タラインについて変化しない。すなわち、S1 4301はこの間隔内で可視の唯 一の幾何形状である。 xCLの値はx2LB 4311に変更され、SCは、同じ間隔でS2 4302の下 辺と組み合わされ、x2LB 4311からx2LT 4312までS1 4301の上辺 である。SNの有効は無効にセットする。このSCについて、全幅でS2 4302 に徐々にカバーされるS1 4301を含む点から可視性特徴は一定である。対応 する照会領域4313はx座標寸法でSCの間隔にある。しかし、z座標寸法で は、スパン上部座標をテストして、これらがztemp2 4314の前にあるか確か め、スパン下部座標をテストして、これらがz2LT 4316の前にあるか確かめ る。座標ztemp2 4314はx座標x1LB 4304でS1 4301のスパン上部 のz座標である。左上角がこの範囲にあるスパンは可視になるため、この照会領 域4313にはztemp2 4314とz2LT 4316の間のスパン上部の検索を含 める必要がある。照会オペレーションは式124に示す通りである。 この例で、照会領域4313では何も見つからないため、SNは無効のままで ある。 ルール2 2300に類似のルールによって、SCは隠れていないため、レン ダリングし、SCの全幅についてS1 4301とS2 4302がブレンドされる 。そしてこのルールで隣接するスパンの等価を「チェック」し、S2 4302が x2LT 4312から右に続くため、存在することがわかる。そのため、SCをS2 4302のx2LT 4312とx2RT 4318の間の部分にセットし、xCLをx2 LT 4312にセットする。再び(この方法のこのバージョンでは常にそうだが )、SCはその全幅にわたって一貫した可視性特徴を持つ。このSCのSOT領域 4320を図43に示し、式125で記述する。値、ztemp3 4322は、S2 4302のx座標x2LT 4312でのスパン下部のz値である。 このラスタラインのスパンのラスタリゼーションはこのポイントから続くこと になる。この方法のこのバージョンにも、ルール12200、ルール4 250 0およびルール5 2600に類似のルールがある。 一般に、この方法のこのバージョンでは、スパンを取り、これら を水平に細分して一貫した可視性特徴を持つセクションを作る。これは、スパン のエンドポイント領域(図39のエンドポイント3912と3914のように、 遠い幾何形状を閉塞しない部分)をスパンの中央ポーションと別に扱うというこ とを意味する。これによってより多くの照会オペレーションが必要となるが、1 つの閉塞プロセスで行うことができる。 台形スパン・ラスタリゼーション方法のこのバージョンでは、1つのエンドポ イントにつき2つではなく4つのフィールドがあるため、1つのSMCCAMワ ード900により多くのフィールドが必要となる。ワード番号フィールド802 が、2つの台形スパンの組み合わせであるカレントスパンとの不等価をチェック できなければならないため、ワード番号フィールド802に比較論理も追加する 必要がある。上記の例では、X2LB 4310からX2LT 4312までをカバーす る照会領域4313に対応するSCの値は、S1 4301とS2 4302の組み 合わせである。そのため、SOT照会では、(n≠1)と(n≠2)の両方をチ ェックしなければならず、その照会オペレーション中に2つの不等価比較が必要 となる。この方法のこのバージョンには、スパンを保存するのにワード900を 1つしか必要としないという利点がある。 バージョン3:より複雑なSOT領域の可能な1ワードあたりより多くの比較 台形スパン・ラスタリゼーション方法のこのバージョンでは、閉塞処理はバー ジョン2同様、各スパンをユニットとして扱う。しかしながら、このバージョン では各SMCCAMワード900でより多くの比較オペレーションを実行するこ とによって、より複雑なSOT領域を作ることができる。各可視性トランジショ ンでスパンを分割するのではなく、カレントスパン、SCには1つの可視性トラ ンジションを入れることができる。本質的に、このバージョンのSOT領域はバ ージョン2で定義する2つのSOT領域の合併である。図44に、図43に示す ものと同じ2つのスパン4401と4402、およびこの方法のバージョン2か らの2つのSOT領域4313と4320の合併であるSOT領域4404を示 す。このSOT照会を実行するため、照会オペレーションは式124と式125 の右辺の論理和(すなわち、論理「or」)である。 より複雑な照会ファンクションを実行してSOT領域4404を生成するには 、各SMCCAMワード900のフィールドがそれぞれ2つの比較オペレーショ ンを平行して行う必要がある(2つのオペレーションを順次行うと、これはバー ジョン2と同じになる)。これによってハードウェアはより複雑になるが、閉塞 処理を実行する時間が約2倍短くなる。 バージョン4:閉塞領域のよりルーズな近似の使用 閉塞処理時間を短縮するもう1つの選択は、閉塞領域のよりルーズな近似を使 用することである。例えば、図44の「L字形」SOT領域4404(充分な近 似)は、その領域を増やすことで単純な矩形領域とすることができる。図45に 、図44に示すのと同じ2つのスパン4501と4502、この方法のバージョ ン3からのSOT領域4404より大きくて単純なSOT領域4504を示す。 このSOT領域4504を生成するSOT照会は、式124と式15を各フィー ルドにさらにルーズな制約を使うように組み合わせたものである。照会オペレー ションは次の通りである: このルーズな近似をSOT領域4504に用いると、実際には隠れている潜在 的閉塞スパンが(平均して)より多く見つかるので、パフォーマンスが落ちる。 しかしながら、照会オペレーション数が減るので、正味ゲインとなる場合がある 。 透明性 スパン・ソーティング・レンダリング・アーキテクチャ500は、不透明な幾 何形状と同じ方法でスパンを生成することにより、透明な幾何形状(見透かせる 着色幾何形状)をレンダリングすることができる。半透明は同様に扱えるが、本 書では透明性に注目する。ラスタリゼーションプロセスを支援するため、各スパ ンの透明性を次の3つの方法の1つでスパンメモリ408にマークする:1)別 のフラッグビット、FnTを各ワード900に追加する、2)情報ポインタフィー ルド814のビット、または3)別のフィールド、半透明フィールドを各ワード 900に追加する。不透明係数(すなわち、透明幾何形状が透過する光の量)は 、他のカラー情報と共に多角形情報メモリ514に保存される。 本書に提示するラスタリゼーション方法で透明スパンを取り扱う方法には各種 ある。以下の説明をわかりやすくするため、図46(図11の修正版)にラスタ ラインのセグメントスパン4600から4613のセットを示すが、ここで可視 不透明面は太い黒線で、透明スパン4602、4605および4607の可視ポ ーションは太い隠線で示す。本書のこのセクションではセグメントスパンの例を 用いるが、透明方法は台形スパンにも四辺形スパンにも適用できる。 バージョン1:可視性特徴をカレントスパンに対して一定に保つ この方法のこのバージョンでは、カレントスパン、SCを透明スパンが閉塞す る場合、必要ならSCを小さくして、SCの可視性特 徴を一定に保つ。この方法は最前の不透明スパンを追い、これらがSCを閉塞し ていたら、透明スパンの効果を加える。 例えば、図46で、S1 4601のSOT照会で透明スパンS2 4602が見 つかったら、SCはx1L 4624とx2L 4626の間のS1 4601の部分に 変化し、S1 4601もセーブしたスパン、SSとして保持され、そのx2L 46 24の右の部分が次のSCになる。この部分がSC(すなわち、x2L 4626と x3L 4628の間のS1 4601の部分)になったら、そのSOT照会もS2 4602を見つけ、S1 4601とS2 4602の組み合わせがレンダリングさ れる。S3 4603とS2 4602の組み合わせが同様に処理される。 S4 4604に達したら、そのx4L 4630とx5L 4632の間の部分が先 に処理され、S2 4602の効果を含める。そして、SCがx5L 4632の右の S4 4604の部分になると、SOT照会でS5 4605とS6 4606の両方 が見つかる。この時点で、この方法および装置を次のいずれかを行うように設計 することができる:1)最左不透明閉塞スパンを読み取る、2)最左透明閉塞ス パンを読み取る、または3)両方のタイプの最左スパンを読み取る。ここでは、 これら選択肢の内1番目を想定する。故に、ルール3 2400に類似のレンダ リングルールによって、SCがx5L 4632とx6L 4634の間のS4 460 4のポーションまで減少する。しかし、SCをレンダリングする前に、SOT領 域の透明スパンを読み取って、S5 4605を取得する。S5 4605はSC( すなわち、x5L 4632とx6L 4634の間のS4 4604)のすべてをカバ ーしているため、SCはこれ以上分割されず、x5L 4632からx6L 4634 までの間隔でS4 4604とS5 4605の組み合わせとしてレンダリングされ る。同じレンダ リングルールで、S6 4606がSPになり、4606のすべてがSCに指定され る。 スパンS6 4606をS4 4604と同様に処理するが、そこでx6L 463 4からx7L 4636までのその第1ポーションが透明スパンS5 4605と組 み合わされる。x7L 4635からx8L 4636までの第2のポーションを透明 スパンS7 4607と組み合わせる。そして、x8L 4636の右の第3のポー ションは隠れているため、S7 4607がSPになる。もう透明スパンはないの で、x8L 4636から右まで、前のセクションで説明したようにスパンを処理 する。 バージョン2:深さ可視性が変化するところでラスタラインを片に分割する この方法のこのバージョンでは、不透明か透明かを問わず、左から右へ最前ス パンを追う。不透明スパンを左から右へ、可視透明スパンが始まるx座標までレ ンダリングする時、不透明スパンのレンダリングは一時的に中断され(本質的に 、このレンダリングプロセスは1スタックにプッシュされる)、レンダリングは 透明スパンにシフトする。最前透明スパンは次のいずれかまで左から右へレンダ リングされる:1)透明スパンが、不透明スパンのみかスパンがまったく存在し ないx座標で終わる、または2)最前透明スパンが不透明スパンに閉塞される。 この時、レンダリングは、一時的に中断した不透明スパンのレンダリングに戻る (レンダリングプロセスのスタックがポップされる)。 透明スパンをレンダリングすると、これらをスパンメモリ408から削除し、 方法の後で再レンダリングされないようにする。透明スパンは可視から隠れへト ランジションでき、方法がさらに右までレンダリングすると再び可視になるため 、既にレンダリングした可 視部分を削除して再レンダリングされないようにする必要がある。これは、スパ ンメモリ408の透明スパンに上書きして、その左エンドポイントを変更するこ とによって行う。こうして、透明スパンをレンダリングする時、その右エンドポ イントまでレンダリングされると、完全に削除される。透明スパンが部分的にレ ンダリングされる時、レンダリングした部分のみ削除される。 可視透明スパンを1つしか持たないラスタラインのポーションでは、スタック 指向のアプローチでまず透明スパンをレンダリングしてから不透明スパンをレン ダリングする。可視透明スパンを2つ(他方の前に1つ)持つラスタラインのポ ーションでは、スタック指向アプローチで最前透明スパンを先にレンダリングし てから、フロントの透明スパンから2番目、そして最後に不透明スパンをレンダ リングする。レンダリングプロセスのスタックがオーバフローしない限り、この 方法はあらゆる深さの可視透明スパンをレンダリングできる。 ラスタラインは、可視性深さが変化するx座標位置の片に分割されていると考 えることができる(1から2、2から3、2から1等)。これらの片の中で、可 視スパンを前から後ろの順でレンダリングする。前から後ろへレンダリングする ことで、ピクセルカラー値を正しくブレンドできる。これは、ランダム順に幾何 形状をレンダリングする先行技術方法(zバッファ技術等)とは対照的である。 図46に示すスパンを例に用いると、この方法のこのバージョンは、S0 46 00とS1 4601の可視ポーションをx2L 4626までレンダリングする。 この方法のこの時点で、SCは、x2L 4626とx3L 4628の間のS1 46 01のポーションで、これはレンダリングプロセススタックにプッシュされる。 次に、透明スパンS2 4602、S5 4605およびS7 4607を、x2L 4626からx8L 4636までレンダリングする。これらのスパンをレンダリ ングする時、S2 4602を削除し、S5 4605を削除し、S7 4607の部 分をその左エンドポイントを(x8L、ztemp1)4640に変更することで削除 する。次に、レンダリングプロセススタックがポップされ、SCがx2L 4626 とx3L 4628の間のS1 4601の部分に復元される。ここで、不透明スパ ンのレンダリングが再開し、スパンS1 4601、S3 4603、S4 4604 およびS6 4606の可視ポーションがx2L 4626からx8L 4636までレ ンダリングされる。次のSCをS8 4608のすべてにセットし、不透明スパン のバランスをレンダリングする。S6 4606の残りの片は隠れているため、こ の方法はスパンメモリ408から4606を読み出すことを避ける。 バージョン3:複数パスの実行 この方法のこのバージョンでは、複数パス戦略を用いる。第1パスで、本書で 前に説明した方法で不透明幾何形状をすべてレンダリングする。不透明スパンの レンダリング終了時、不透明スパンの有効フラッグ816はすべて切れている。 そして、透明スパンをレンダリングする第2パスで、不透明スパンの有効フラッ グ816をすべて入れ、各透明スパンを順次テストして、不透明スパンに閉塞さ れているか否か決定し、その可視ポーションをレンダリングする。 考えられるオプションとして、不透明スパンをレンダリングする時、照会を行 って、完全に不透明スパンの背後にある透明スパンをすべて見つけ、そのような 透明スパンの有効フラッグ816をデアサーションする。これによって、処理し て隠れている透明スパンの数が減るが、別の照会を追加することで各不透明スパ ンが必要とする処理が増える。このオーバヘッドを減らすため、隣接する不透明 スパンの各セットの後で透明スパンを無効化する照会を実行するこ とができる。そして、隣接するスパンセットのレンダリングが終了したら、その セットのスパンのいずれかの可視ポーションの最大z値を照会の最小z値として 使って、隠れた透明スパンを探す。このオプションは、次のパラグラフで説明す る例で想定している。このオプションでは、1つのスパンを1スパンセットと考 え、閉塞透明スパンとして用いることができる。 図46に示すスパンを例として用いると、この方法のこのバージョンの第1パ スでは、S0 4600、S1 4601、S3 4603およびS4 4604の可視 ポーションをレンダリングする。この方法のこの時点で、隣接するスパンセット の、レンダリングは終了しており、そのセットによって隠された透明スパンは、 透明スパンが完全にx1L 4624からx6L 4634のx座標範囲内にあり、そ の両方のエンドポイントのZ値がztemp2 4642より大きいことを見つける照 会によって無効化される。次に、S6 4606の可視部分をレンダリングする。 そして、S8 4608とS10 4610の隣接するスパンセットをレンダリング して、照会を行い、そのセットの背後にある透明スパンを無効化する。同様に、 S11 4611とS12 4612をレンダリングして、同じ種類の照会を行う。ラ スタラインのもう一方の不透明スパンは正常に処理する。第2パスの冒頭で、不 透明スパンの有効フラッグ816をすべて表明し、透明スパンを左から右へ順次 処理する。例では、S2 4602をスパンメモリ408から読み取り、4602 についてSOT照会を行い、閉塞するスパンが見つからないため、レンダリング する。スパンS6 4606を同様に処理する。S7 4607については、そのS OT照会でS8 4608が見つかるため、S7 4607はx8L 4636までの みレンダリングする。他の透明スパンが残っていないため、このラスタラインは 完了している。 この方法のこのバージョンの任意の変更として、スパンメモリ408とは別の メモリに透明スパンを保存するものがある。そして、第2パスで各透明スパンを この別のメモリから読み取り、これについてSOT照会を行い、その可視部分を レンダリングする。 透明性の追加考察 多角形カラー化はしばしばテクスチャマップで記述される。テクスチャマップ には、100%透明(完全にクリア)なピクセルを持つと定義されるものがある 。このようなテクスチャマップの典型的な使用例は、矩形の「ビルボード形」多 角形(ビルボード多角形は自動的に回転してビューイングポイントを向く)にマ ップされた木の画像で、ここで矩形の角はクリアで、木の画像内に穴が発生する ことがある。このようなテクスチャマップを持つ多角形は、そのスパンを透明ス パンとして処理する必要がある。これらがその後ろの幾何形状のすべてを完全に は閉塞していないためである。故に、多角形が透明ピクセルのテクスチャマップ を使っている時は、その多角形のスパンは透明と想定し、テクスチャマップがそ の各ピクセルの不透明係数を決定する。 台形スパン(または四辺形スパン)を使用する際、スパン上部かスパン下部の いずれかを有するが両方は持たない多角形の角と辺を含むスパンは、透明スパン として処理できる。これが可能なのは、この種のスパンは、透明スパンのように より遠いスパンを完全には閉塞しないためである。故に、本書の透明性に関する このセクションを使って、ラスタラインの縦高さを部分的にのみカバーするスパ ンを処理する。 四辺形で表すスパン スパンを台形で表すことには、x―z面(正確には面ではなく、1ラスタライ ンの厚みを持つ)に4ポイントの位置を必要とするた め、メモリビットを多く必要とするという不都合がある。これは、z値がそれぞ れ32ビットの場合に特に当てはまる。 メモリ要件を減らすため、スパンのエンドポイント位置を2つのx値と1つの z値で近似させることができる。本質的に、エンドポイントを記述するこの2つ のポイントは同じz座標を持つが、x座標は異なる。そのため、座標を保存する フィールドの数が8から6に減る。これによって、前述のアンチエイリアシング 法に少量のエラーが導入されるが、エラーはx―z面にほぼ平行な多角形にとっ てのみ重要である。このような多角形では、ルック方向は多角形の面の接線に非 常に近い。しかしながら、大半のアプリケーションで、これら多角形のビューイ ングプレーン102への投影は変化していないため、このエラーは許容可能であ る。 図47に、台形スパンS1 4701、S3 4703およびS4 4704を点線 で示し、これらスパンの四辺形近似、S´1 4711、S´3 4713およびS ´4 4714を実線で示す。この図で、四辺形スパンのエンドポイントは常に水 平ラインセグメントである。すべての台形スパンをその台形近似で置き換えてい る点を除き、図48は図40に類似である。台形スパンの一部は折り重なってい るように見えることに注意する。台形スパンは、台形スパンについて本書で説明 したのと類似の方法で処理できる。 カレント多角形メモリ406をなくしソートメモリ404から読み取る バケット・ソート・プロセッサ504に「スマートさ」を追加することで、カ レント多角形メモリ406とカレント多角形プロセッサ506をなくすことがで きる。図49に、直接スパン生成4900を持つスパン・ソーティング・レンダ リング・パイプラインを示すが、ここではバケット・ソート・メモリとカレント 多角形メモリ 406からのデータの処理1600が(スパン・ソーティング・レンダリング・ パイプライン400と比較して)除去されており、バケット・ソート・メモリ4 04はソートメモリ4904に変更されている。パイプライン4900の多角形 処理1400部分で多角形を生成する時、そのパラメータをソートメモリ490 4に書き込む。カレントラスタラインに影響する多角形の記録は、多角形パラメ ータを別のメモリ(カレント多角形メモリ406)にコピーするのではなく、ポ インタのリストをソートメモリ4904内に保持することによって行う。これは 、直接スパン生成5000を持つスパン・ソーティング・レンダラー・アーキテ クチャに示すように、多角形をバケット・ソート・プロセッサ504から直接、 高速でスパン生成プロセッサ508に送ることで達成する。ソートメモリ490 4により高速でアクセスするため、これには、ソートメモリ4904に低速メモ リではなく高速メモリが必要になる可能性があるという不都合がある。 この代替え案を用いる決定は、1つの大型高速メモリ(ソートメモリ4904 )対1つの小型高速メモリ(カレント多角形メモリ406)と2つの大型低速メ モリ(バケット・ソート・メモリ404)の両方の内いずれかというエンジニア リング上の決定に基づかなければならない。しかしながら、すべての多角形が特 定のラスタラインに影響するような極端なケースでは、カレント多角形メモリ4 06はバケット・ソート・メモリ404と同じくらい大型である必要があるため 、別にカレント多角形メモリ406を用いる場合でも大型高速メモリの必要があ るだろう。 導関数を用いる多角形の代替え表現 考えられる改良方法として、パラメータの代替えセットを多角形とスパンに用 いて、導関数を追加使用することができる。例えば、 図51に示すように、三角形は次のパラメータで表すことができる:1)1つの 頂点5102の(x、y、z)、2)第2の頂点5104の(x、y)、3)第 3の頂点5106のy、4)図52に示す各頂点5202、5204、5206 のそれぞれの(x、y、z)という一般的な表現ではなく、三角形の3辺510 8、5110、5112の3つのそれぞれのδx/δy。いずれの場合も、三角 形のパラメータ数は9である。この改良方法は、辺導関数5108、5110、 5112が両方の表現(すなわち、図51と図52)のエッジウォーキングに必 要で、計算・保存しなければならないため重要である。故に、より少ない頂点座 標(図51のような)を用いるとメモリを節約できる。 サブスパンのオンザフライ生成 図38に示すように、複数のセグメントスパンをラスタライン内で用いてアン チエイリアシングを強化することができる。1つのラスタラインについて複数の セグメントスパンを持つことによる重要な不都合によって次のいずれかが必要に なる:1)各ラスタラインで実行する処理の対応する増加、2)スパンメモリ4 08を含むハードウェアの対応する増加、または3)処理の増加とハードウェア の増加の組み合わせ。 台形スパンと四辺形スパンに考えられる改良方法として、空間データ構造でス パン全体のパラメータを保存することができ、スパンをデータ構造から読み取る と、サブスパンのセットがオンザフライで生成され、ここでこれらサブスパンが フルスパンの高さに縦に分布され、各サブスパンがセグメントスパンとなる。こ の例を図53に示すが、ここでは8個のサブスパンをスパン5300について示 す。各サブスパンの左エンドポイント、xL[0]5302、xL[1]5304 、xL[2]5306、xL[3]5308、xL [4]5310、xL[5]5312、xL[6]5314およびxL[7]53 16は、頂点の座標、辺導関数、頂点からのyオフセットを用いて生成する。右 エンドポイント、xR[0]5322、xR[1]5324、xR[2]5326 、xR[3]5328、xR[4]5330、xR[5]5332、xR[6]53 34およびxR[7]5336は同様に生成する。サブスパンを使う場合、エン ドポイントの位置はスパン・パラメータ・レジスタ3104に保存されるので、 これを拡張して追加情報を保存できるようにする必要がある。 サブスパンを使う場合、カレント・スパン・ポーションを新しいスパンと比較 するルールがサブスパン毎に適用され、ラスタライン内の追加多角形辺情報を与 え、これがアンチエイリアシングとなる。ここでも、リアルタイムパフォーマン スのため、空間データ構造をSMCCAMに保存することができる。あるスパン のポーションを、そのスパンのサブスパンのポーションが可視であるため可視と 決定する時、これらサブスパンポーションをラスタライズ・プロセッサ512に 送らなければならない。しかしながら、可視サブスパンポーションの右エンドポ イントのみ送る必要がある。可視スパンポーション5400の例を図54に示す が、この右エンドポイントをxR[0]5402、xR[1]5404、xR[2 ]5406、xR[3]5408、xR[4]5410、xR[5]5412、xR [6]5414およびxR[7]5416として示す。左エンドポイントは、前 に送った可視スパンポーションの右エンドポイントと等しいため、ラスタライズ ・プロセッサ512に送る必要はない。故に、右エンドポイントセットのシーケ ンスを、ラスタラインの長さに沿って移動する「ウェーブ」と考えることができ 、ここで「ウェーブフロント」は任意の形状を取ることができる。「穴」 ができて「ウェーブ状フロー」を乱さないよう特別に注意しなければならない。 これは、最も最近送った右エンドポイントセット中の最左ポイントで可視サブス パンを見つけることで行う。図54の例では、次に可視のスパンポーションはポ イントxR[3]5408に位置しなければならない。 台形スパンの代替え表現 スパンメモリ408に保存したスパンの照会可能なパラメータの最小数は、1 )スパン、xL[rMinX]5502の最左x値、2)スパン、xR[rmaxX]55 04の最右x値、および3)スパンのあらゆる角に位置できるような、スパン、 zMin 5506の最前z値である。これら3つのパラメータは、算術比較を実行 できるSMCCAM内のフィールドに保存しなければならない。しかしながら、 これを生成し、スパンパラメータ、スパンのサブスパンエンドポイント、スパン 内のサブスパンのあらゆるポイントのz値を形成することが容易なことも重要で ある。計算によって次の2種類の結果を生成する必要がある:1)スパン内また はその辺のあらゆるポイントでのz値、および2)スパンの投影された辺を定義 するx値。図55に示す基準ポイント(xRef、zRef)5508は、ラスタライ ン内の最上サブスパンy値に(スパンがラスタラインのその部分に接触していな くとも)位置することができる。この基準ポイント5508がわかっていれば、 そのスパンのz値は、どの位置にあってもこの基準ポイント5508とオリジナ ルの多角形の導関数、δz/δy5510とδz/δx5512のxとyのオフ セットから計算することができる。スパンの投影辺は同様に計算可能でなければ ならず、パラメータには多数の選択肢が可能で、考えられる選択肢には次のもの が含まれる:1)辺導関数δxR/δy5514とδxL/δy5516、2)最 上サブスパン位置、rTop 551 8、3)最下サブスパン位置、rBot 5520、4)スパン、xL[rMinX]5 502の最右x値を含むサブスパン位置、rMinX 5522、および5)スパン 、xR[rMaxX]5504の最右x値を含むサブスパン位置、rMaxX 5524。 ラスタラインが多角形の角を含むなら、そのスパンは台形形状を持たない。こ の例を図56に示すが、ここには中間(上下ソートで)角が含まれる。この例で 結果として生じたスパンは5つの辺を持つため、台形にモデル化することができ ず、スパンは次の2つのスパンに分割される:1)上台形5602、および2) 下台形5604。多角形の最上角または最下角が含まれる場合、スパンはディジ ェネレート台形としてモデル化し、ここで4つの角の内2つが同一である。 四辺形スパンに同様の代替え表現を用いることができる。 レンダリング順の保存 アプリケーションによっては、レンダリング順を保存しなければならない。典 型的な例は、コンピュータのウィンドウ機能システムに用いる「ペインターズ・ アルゴリズム」(Foley 参考文献、674頁参照)である。境界のある内側矩形 のレンダリングでは、まず境界を充填矩形としてレンダリングしてから、内側矩 形をレンダリングし、境界矩形のピクセルの大半に上書きする。これら2つの矩 形のレンダリング順を逆転させると、内側矩形が完全に上書きされるので、領域 全体が境界矩形のカラーとなる。これら2つの矩形が、z座標の相違によって明 確な配置を持っていれば、正しくレンダリングされる。しかしながら、z座標が 指定されていないと(デフォルトはビューイングプレーン102の深さとなる) 、順番を保存しなければならない。これは、バケット・ソート・メモリ514を 持つことで可能で、カレント多角形プロセッサ506が、多角形プ ロセッサ512から受け取る順番を維持する。照会プロセッサは、後に入力され た多角形のスパンをスパンリストの後の位置に入れることでレンダリング順を保 持する。そして、レンダリングが進むにつれ、z座標がタイの場合、リストの先 のスパンを先にレンダリングし、同じz座標で後の幾何形状は隠れていると想定 するため、レンダリング順が保存される。 方法と装置のオプションと考えられる強化法 シングルバッファVGAグラフィックス・カードへの追加 コンピュータのビデオ出力(IBM互換機のVGAやSVGAインターフェー スなど)には一般に、ディスプレイ装置(すなわち、CRT)に送られるピクセ ル情報を保存するフレームバッファメモリが含まれる。本書に記述する3Dグラ フィックス・レンダリング方法および/または装置をこのようなディスプレイシ ステムに追加することができる。CPU(またはDMAコントローラ)がレンダ ラーに幾何形状を書き込み、処理して、バケット・ソート・メモリ(ダブルバッ ファの必要あり)に保存する。幾何形状を書き込んでいる時、パイプラインの残 りはコンピュータディスプレイにシンクロして、必要になる前にスパンを生成し 、コンピュータのフレームバッファの前のフレームのデータに上書きする。故に 、低コストだが高性能の3Dグラフィックスアクセラレータを、フレームバッフ ァにメモリを追加することなくコンピュータに加えることができる。 特定多角形辺のアンチエイリアシングを切る 前述したアンチエイリアシング方法では、各多角形が独立したカラー値を持つ と想定し、隣接するスパンが見つかれば、両方のスパンを含むピクセルは、2つ の多角形からブレンドしたカラーを持つ必要がある。しかしながら、辺を共有す る多角形はしばしば辺に沿 って正確に同じカラー情報を持つ。例えば、Gouraudシェーディングを施した多 角形で、同じ多角形辺の両端に同じカラーおよび面の正規情報を持つものにこれ が発生する。このような辺では、2つの同じカラーがブレンドされるため、ピク セルのブレンドを無視できる。かかる多角形辺は、レンダラーに供給するとき、 「スキップ・アンチエイリアシング」というタグを付けることができる。そして 、もしこのような辺が隣接するスパンペアの一部に見つかった場合、その内の一 方(例えば右)のピクセルカラー値をスキップすることによって、計算を節約す る。タグが付くが、隣接するスパンペアの一部でない辺は、上記アンチエイリア シング方法によって処理する。先行技術のレンダラーは、隣接するスパンや多角 形を検索しないため、このような節約の利点はない。すなわち、先行技術レンダ ラーは一般に各多角形が他のすべての多角形から独立していると想定している。 タグ付けが行われない場合(インターフェースソフトウェアによる制約などによ り)、スパン・ソーティング・レンダリング・パイプライン400は、2つの多 角形に共有される辺が両多角形について同じカラー情報を持っている場合、多角 形メッシュおよびストリップ内の辺について自動的にこのようなタグを生成する ことができる。 バケット・ソート・メモリ404に多角形ではなく辺ペアを保存 バケット・ソート・メモリ404に多角形を保存するのではなく、多角形の辺 ペアを保存することができる。これによって多角形が水平にスライスされるため 、多角形の各水平ストリップに多角形の角が入らない。故に、多角形がySTART でもyENDでもない角のy座標(または近接するラスタライン境界)で水平にス ライスされる。この多角形スライスにより、多角形角でいつ新しい辺に変更する かテストする必要がなくなるため、下流処理が容易になる。 フロントおよびリアのクリッピングプレーン クリッピングプレーンを追加することで、ビューボリューム(無限ピラミッド の形状)を錐台に変更する。スパンをスパンメモリ408に書き込む直前に、こ れらのエンドポイントのz値を、フロントおよびリアのクリッピングプレーンの z位置と比較する。両エンドポイントがフロントのクリッピングプレーンより近 いか、リアのクリッピングプレーンより遠ければ、スパンを放棄する。1つのエ ンドポイントがリアのクリッピングプレーンより遠ければ、スパンのその端部を 短縮して、そのエンドポイントがリアのクリッピングプレーンに来るようにする 。1つのエンドポイントがフロントのクリッピングプレーンより近ければ、その スパンの端部を短縮してそのエンドポイントがフロントのクリッピングプレーン に来るようにする。これには、スパン生成プロセッサ508か照会プロセッサ5 10のいずれかにコンパレータセットを追加する必要がある。 複数の任意クリッピングプレーン 任意のクリッピングプレーンをシンプルなフロントおよびリアクリッピングプ レーンと同様に用いることができるが、この場合、スパンメモリ408にスパン を書き込む直前に、スパンとクリッピングプレーンのスパンの間のスパン・イン タラクション・パラメータを生成して、これらを上記説明したように使ってスパ ン・インタラクション・タイプ(SIT)を決定する。そしてSITに応じてス パンを保持するか、クリップするか、あるいは放棄する。 これは、任意のクリッピングプレーンの位置を表すダミーのスパンをスパンメ モリ408に追加することでも行える。そして上記のラスタリゼーション方法を 変更して、レンダリングしたスパンすべてがこれらダミースパンの背後にあるよ うにする。 幾何形状キャッシュ パイプラインの入力にメモリを加えて、幾何形状をレンダリングのために入力 する時にこれを保存することができる。そして、後続シーンをレンダリングする 時、この保存した(または「キャッシュした」)幾何形状を再レンダリングする ことで(おそらく変更した翻訳マトリクスによって)、システムバスのサイクル をセーブすることができる。これによって、1秒あたりにホストコンピュータの バスがサポートできるより多くの幾何形状を処理できるレンダラーによって生じ るボトルネックを解決することができる。これは、前回のレンダリングから形状 を変更していない幾何形状にのみ適用できる。「スクイッシ」なオブジェクトは 一般に各シーンについてレンダラーに供給する必要がある。 スパンメモリ408の1ページのみ使用 スパンメモリ408を1ページのみ使用することが可能である。これは、有効 スパンを上ワードに向かってシフトし、下ワードは無効のまま残すことで行う。 そして、新しいスパンが生成されると、これらを下ワードに保存する。この戦略 は、可動境界で2ページに分けた1つのメモリバンクと考えることができる。こ れが可能なのは、ラスタラインを処理する時、スパンを削除しながら、次のラス タラインを準備する同時プロセスでスパンを生成するためである。 代替えアプローチとして、固定ワード番号フィールド802を可変タグフィー ルドに変更することができる。各スパンについて一意の(ランダムでもよい)タ グをこのタグフィールドに書き込み、次のものを指定する:1)スパンがカレン トラスタラインにあるか、次のラスタラインにあるか、および2)スパンスパン の一意の識別子。さらに、このタグを照会プロセスに含めて、カレントラスタラ インのスパンを次のラスタラインのものと混合することができる。同じラスタラ インのスパンが互いに対する順番を保持する限り、無 関連のラスタラインのスパンは、無視されていれば混合できる。これは、各ラス タラインに1つずつ、2つの有効フラッグ816セットを維持することで可能で ある。有効フラッグ816のセットをさらに追加することで、より多くのラスタ ラインのスパンを同時に保持することができる。 スパンメモリページの別個の読み取りバスと書き込みバス SMCCAMセル3400または3500の回路を修正して、入力バスと出力 バス両方を持たせることができる。これによって読み取りオペレーションと書き 込みオペレーションを同時にできる。これは、前のセクションで説明したように スパンメモリ408に1ページしかない場合に特に有益である。 境界ボックスが重なる時のみSIPとSITを計算 新しいスパンSNすべてについてSITを計算するのではなく、境界ボックス が重なる時のみより少ないハードウェアで順次計算する。これは回路を節約する ため時間を犠牲にする。 SMCCAMメモリを節約するためラスタラインを小片に分割する スパンメモリページ800のワード総数は、あるラスタラインで処理できるス パン数に制約を加えている。この制約は、ラスタラインを条件付きで半分(また は必要ならそれ以上)に分割し、スパンデータを2回通過することで解決できる 。この決定は、シーンをレンダリングする時オンザフライで、またはレンダリン グが始まる前にアプリオリで行うことができる。 オーバフローRAMでソートオペレーション中にシフトアウトされたスパンをセ ーブする ラスタラインを分割するのではなく、スパンメモリページ800に、最後のS MCCAMワード900からシフトアウトされたスパンを保存する「オーバフロ ーRAM」を追加することができる。シ フトアウトされたスパンはラスタラインの右から始まるので、xCLが最左シフ トアウトスパンの左に達するまで、ラスタラインの左側は正常に処理できる。そ して、ラスタライズプロセスによってスパンを削除(すなわち、無効化)してい るので、シフトアウトスパンをスパンメモリページ800に再書き込みできる。 多角形ではなく基本立体のレンダリングを含める 多角形ではなく幾何学的基本立体(CSG基本立体など)を、スパン・ソーテ ィング・レンダリング・パイプライン400で処理することができる。ySTART およびyENDパラメータを計算でき(そして基本立体をバケット・ソート・メモ リに保存でき)、境界ボックスのあるスパンを生成できればこれが可能である。 境界ボックスの角をスパンパラメータとして用いて、SOT照会を使って境界ボ ックスの可視ポーションを見つける。特定の幾何学的基本立体セットには、スパ ン・インタラクション・タイプの別のセットが必要になる。 低コストバージョンでCPUをフロントエンドに使える ホストCPU、または専用汎用プロセッサで多角形プロセッサ502のタスク を実行し、スクリーン座標の幾何形状(オブジェクト精密)をパイプラインの残 りに送ることができる。同様に、このようなCPUでパイプライン400のフロ ントエンドをより多く実行することができる。例えば、CPUとその汎用メモリ は、多角形プロセッサ502、バケット・ソート・プロセッサ504、バケット ・ソート・メモリ404のタスクを実行し、現在のラスタラインでスタートする 多角形をパイプラインの残りに送ることができる。 代替えソーティングメカニズムでアップカウンティングタグを使える ワード番号フィールド802を条件付きアップカウンタに置き換 え、SMCCAMからのシフティングをなくすことができる。新しいスパンをS MCCAMに書き込む時、ソートしたリストのどのスパンが新しいスパンより後 かを照会で決定する。このような「後の」スパンは自分のアップカウンタを増分 し、シフティングは実行されない。新しいスパンのアップカウンタを、アップカ ウントする前に「後の」スパンのリストの最小カウンタ番号に割り当てる。 このアプローチは、「保存リストの最初のスパンを取得」が、スパンメモリ4 08の「最小カウンタ値を見つける」になることを意味する。故に、ソーティン グ(すなわちシフティング)が新しい検索タイプと置き換わる。これを速くする には、ハードウェアにアップカウンタセットに関連する「最小発見」機能を持た せる必要がある。また、この「最小発見」をビットシリアル方法で実行すること もできる。 ジェネリックCAMを使う ジェネリックの先行技術CAMを使うことができるが、マグニチュード比較は ビットシーケンシャルになる。これによって処理は非常に遅くなるが、ハードウ ェアのコストをやや節約できる。この代替え案ではアップカウンティングタグを 前のセクションのように用いることになる。 1つの算術コンパレータに複数のレジスタを使う SMCCAMの上記説明では、メモリレジスタと算術コンパレータに1対1の 対応を想定している。代替えアプローチとして、同じワードのすべてのメモリレ ジスタが1つの算術コンパレータを共有するものがある。これによって回路は節 約できるが処理は遅くなる。しかしながら、すべてのフィールドがすべての照会 オペレーションに参加するわけではないので、パフォーマンスロスはフィールド 総数には比例しない。 別の代替えアプローチとして、ワード間、またはワードとフィールド間でコン パレータを共有することができる。このアプローチでハードウェアの量はさらに 減るが、パフォーマンスもさらに落ちる。このような共有コンパレータアプロー チのいずれかを用いる場合、最も密度が高いので標準型6トランジスタRAMセ ルを使わなければならない。故に、検索およびソーティングハードウェアは複数 ワードメモリセットで構成することができ、このような各メモリはそれに関連す るコンパレータを1以上持つことになる。 RAMベースソーティングプロセッサを使う あらゆる種類のCAMの使用の代替え案として、高速リンクのリストソーティ ングプロセッサを用いることができる。高速メモリを利用することで、スパンを 前述(SMCCAMを用いる)と同じ順番で線形リストにソートすることができ る。しかし、スパンを頻繁に追加・削除するため、このアプローチは非常に遅く なる。利点は、容易に入手可能な高速の市販RAMを使えることである。 SOT照会オペレーションを助けるため、2次元データ構造を使ってxおよび z次元のスパンを同時にソートすることができる。このような検索およびソーテ ィング構造は、Kurt Mehlhorn による「Data Structures and Algorithms 3: Mu lti-dimensional Searching and Computational Geometry」、24から55ペー ジ、Brauer,W.他監修による「Monographs on Theoretical Computer Science」 のEATCS シリーズ、ISBN0−387−13642−8、Springer-Verlag 社 、ニューヨーク、1985年、に記載されている。 シャドー処理 シャドー計算は隠面消去と本質的に同じであるため、スパン・ソーティング・ レンダラー500をシャドー計算に用いることができる。これは、複数のスパン ・ソーティング・レンダラー500を平 行して用いるか、または1つのスパン・ソーティング・レンダラー500を時分 割することによって可能である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AU,AZ ,BB,BG,BR,BY,CA,CH,CN,CU, CZ,DE,DK,EE,ES,FI,GB,GE,H U,IL,IS,JP,KE,KG,KP,KR,KZ ,LK,LR,LS,LT,LU,LV,MD,MG, MK,MN,MW,MX,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,TJ,TM ,TR,TT,UA,UG,US,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.3次元オブジェクト幾何形状データを処理し、前記オブジェクト幾何形状 データの少なくとも一部を2次元ディスプレイスクリーンでレンダリングするグ ラフィック処理システムにおいて、次の各ステップを具備し、スキャンラインを レンダリングする方法、 (a) オブジェクト幾何形状データを多角形表現に変換するステップであって 、前記多角形表現は少なくとも1つの多角形からなり、前記多角形の各々はディ スプレイスクリーン相対座標を有する多角形頂点を含む多角形パラメータセット で定義されるステップ、 (b) バケットソーティングルーチンを使用して前記多角形をソーティングす るステップであって、別個のメモリバケットが各ディスプレイラスタラインに割 り当てられ、多角形がその開始ラスタラインに対応する一つの特定のバケットに 入れられるステップ、および (c) 各ディスプレイラスタスキャンラインについて、 (i) 現在レンダリングされているラスタスキャンラインと交差する現在の 多角形すべてのリストを保持するステップ、 (ii) 前記多角形パラメータを含む前記多角形の幾何学的特性に基づき、 現在の前記ディスプレイラスタスキャンラインと交差する各多角形のスパンを生 成するステップであって、各前記スパンに、該ラスタスキャンラインの縦範囲内 のスパンの幾何学的形状を記述するサブラスタ情報を含めるステップ、 (iii) 各前記生成されたスパンの幾何学的特性をスパンメモリに保存する ステップ; (iv) 潜在的に可視のスパンの部分であるカレントスパンポーションを保 持するステップであって、前記カレントスパンポーショ ンはカレントサブスパンのセットからなり、各前記カレントサブスパンは前記カ レントスパンポーション内の矩形領域を表し、前記カレントサブスパンセットは 前記カレントスパンポーションの領域に近似するステップ、 (v) 1以上のスパン閉塞テストを実行して、前記カレントスパンポーショ ンを潜在的に閉塞する新しいスパンを見つけるステップであって、前記スパン閉 塞テストが次のステップを具備するステップ、 (1) 前記カレントサブスパンセットで最左、最右および最遠の空間座標 を決定するステップ、 (2) 前記スパンメモリの前記保存された幾何学的特性に照会オペレーシ ョンを実行し、保存された幾何学的特性に、前記カレントサブスパンセットの前 記最左および前記最右空間座標の間に位置する空間座標、および、前記カレント サブスパンセットの前記最遠空間座標より近い空間座標、を含む前記スパンをす べて見つけるステップ、 (vi) 新しいサブスパンセットを生成するステップであって、各前記新し いサブスパンは前記新しいスパン内の矩形領域を表現し、前記新しいサブスパン セットは前記新しいスパンの領域に近似するステップ、 (vii) 前記カレントサブスパンセットの各前記サブスパンについて、次の ステップを具備するサブスパン比較を実行するステップ、 (1) 前記カレントサブスパンセットの前記サブスパンと、前記新しいサ ブスパンセットの対応するサブスパンと、の間の空間比較のステップ、および (2) 前記カレントサブスパンセットの各サブスパンの可視 性、部分的可視性、または非可視性を決定するステップ、 (vi) 前記サブスパン比較結果に基づき前記カレントスパンポーションを 更新するステップ。 2.前記スパンメモリがランダムアクセスメモリ(RAM)のデータ配列から なる、請求の範囲第1項に記載の方法。 3.可視の前記カレントサブスパンのラスタライズによって、可視の前記スパ ンまたは前記スパンポーションをラスタライズするステップをさらに具備する、 請求の範囲第1項に記載の方法。 4.各前記生成されたスパンの幾何学的特性をスパンメモリに保存する前記ス テップがさらに次のステップを具備する、請求の範囲第1項に記載の方法、 (a) 前記スパンメモリに保存されている前記スパンデータと前記スパンメモ リに前に保存されたスパンデータとを比較し、第1保存データを第2保存データ と直接比較するステップ、および (b) 前記スパンメモリに保存されている前記スパンデータを挿入し、前記ス パンメモリ内に前記スパンデータのソートリストを保持するステップ。 5.各前記生成されたスパンの幾何学的特性を保存する前記ステップは、左x 座標の優先順である、請求の範囲第4項に記載の方法。 6.前記レンダリングは、ピクセル毎のzバッファ比較を実行せずにレンダリ ングされうる可視多角形スパンを識別することによって実行される、請求の範囲 第1項に記載の方法。 7.すべてのカレント多角形のリストを保持する前記ステップは、前のラスタ ライン処理による多角形スパンのソートリストを放棄するステップと、各ラスタ ラインを処理する時に新しいソートリストを構築するステップと、を含む、請求 の範囲第1項に記載の方法 。 8.前記ディスプレイスクリーン相対座標は、前記オブジェクト幾何形状につ いて多角形頂点のオブジェクト精密スクリーン座標での位置を含む、請求の範囲 第1項に記載の方法。 9.前記座標は、前記ディスプレイスクリーンの境界領域内の座標に限られな い、請求の範囲第1項に記載の方法。 10.バケットソーティングルーチンを使用して前記多角形をソーティングす る前記ステップは、1バケットあたりに1つのリンクリストを生成するステップ と、前記リンクリストを使用して前記ソーティングを実行するステップと、を含 む、請求の範囲第1項に記載の方法。 11.前記多角形パラメータが、オブジェクト精密スクリーン座標での前記多 角形頂点の位置、カラー情報、各多角形辺の辺導関数、開始ラスタライン、終了 ラスタライン、およびスパン導関数を含む、請求の範囲第1項に記載の方法。 12.前記スパンメモリが、第1および第2バンクを持つダブルバッファされ たスパンメモリからなり、前記スパン幾何学的特性が、前記第1バンクに書き込 まれ、前記第1バンクへのスパン幾何学的特性の書き込みと同時に、前記第2バ ンクのスパン幾何学的特性が、可視スパンポーションを識別するために処理され る、請求の範囲第1項に記載の方法。 13.前記レンダリングは、リアルタイムの画像生成を提供するのに充分な速 度で実行される、請求の範囲第1項に記載の方法。 14.前記スパンメモリは前記ソーティングマグニチュード比較連想メモリ( SMCCAM)からなり、前記ソーティングマグニチュード比較連想メモリ(S MCCAM)は前記照会オペレーションを実行し、前記ソーティングマグニチュ ード比較連想メモリ(SM CCAM)装置は、 複数のワードを保存する手段であって、前記ワードはそれぞれ複数のデータフ ィールドからなり、前記データフィールドはそれぞれ複数のデータビットに分割 されるものと、 前記データフィールドの一部に一致する複数の入力フィールドからなる入力を 提供する手段であって、前記入力フィールドはそれぞれ入力ビットに分割され前 記ワードの前記データフィールドの前記データビットと1対1のビット対応を有 するものと、 各前記データフィールドがその対応する入力フィールドと比較されるような同 時フィールド比較で、前記複数の入力フィールドを前記ワードすべてと同時比較 し、前記入力フィールドの1つと比較さける前記ワード内の前記データフィール ドすべてが対応する各入力フィールドと良好に比較されるとき、各前記ワードに 照会結果が真という1ビットの照会結果を生成する照会手段と、 前記ワードそれぞれの前記照会結果に等しいフラグビットを保存するフラグメ モリ保存手段と、 各前記ワードの前記データフィールドに保存されたデータを、前記ワードに保 存された前記フラグビットの別の隣接するワードの対応するフィールドに、条件 付きでシフトするシフト手段と、 を具備する、請求の範囲第1項に記載の方法。 15.可視の前記カレントサブスパンをラスタライズすることで可視の前記ス パンまたは前記スパンポーションをラスタライズするステップをさらに具備する 、請求の範囲第14項に記載の方法。 16.各前記生成されたスパンの幾何学的特性をスパンメモリに保存する前記 ステップが次のステップをさらに具備する、請求の範囲第14項に記載の方法、 (a) 前記スパンメモリに保存されている前記スパンデータと前 記スパンメモリに前に保存されていたスパンデータとを比較するこによって、第 1保存データを第2保存データと直接比較するステップ、および (b) 前記スパンメモリに保存されている前記スパンデータを挿入して、前記 スパンメモリ内に前記スパンデータのソートリストを保持するステップ。 17.各前記生成されたスパンの幾何学的特性を保存する前記ステップは、左 x座標の優先順である、請求の範囲第16項に記載の方法。 18.前記レンダリングは、ピクセル毎のzバッファ比較を実行せずにレンダ リングされうる可視多角形スパンを識別することによって実行される、請求の範 囲第14項に記載の方法。 19.すべてのカレント多角形のリストを保持する前記ステップは、前のラス タライン処理による多角形スパンのソートリストを放棄するステップと、各ラス タラインを処理する時に新しいソートリストを構築するステップと、を含む、請 求の範囲第14項に記載の方法。 20.前記ディスプレイスクリーン相対座標は、前記オブジェクト幾何形状に ついて多角形頂点のオブジェクト精密スクリーン座標での位置を含む、請求の範 囲第14項に記載の方法。 21.前記座標は、前記ディスプレイスクリーンの境界領域内の座標に限られ ない、請求の範囲第14項に記載の方法。 22.バケットソーティングルーチンを使用して前記多角形をソーティングす る前記ステップは、1バケットあたりに1つのリンクリストを生成するステップ と、前記リンクリストを使用して前記ソーティングを実行するステップと、を含 む、請求の範囲第14項に記載の方法。 23.前記多角形パラメータが、オブジェクト精密スクリーン座標での前記多 角形頂点の位置、カラー情報、各多角形辺の辺導関数、開始ラスタライン、終了 ラスタライン、およびスパン導関数を含む、請求の範囲第14項に記載の方法。 24.前記スパンメモリが、第1および第2バンクを持つダブルバッファされ たスパンメモリからなり、前記スパン幾何学的特性が前記第1バンクに書き込ま れ、前記第1バンクへのスパン幾何学的特性の書き込みと同時に、前記第2バン クのスパン幾何学的特性が、可視スパンポーションを識別するために処理される 、請求の範囲第14項に記載の方法。 25.前記レンダリングは、リアルタイムの画像生成を提供するのに充分な速 度で実行される、請求の範囲第14項に記載の方法。 26.前記新しいソートリストは、保存された1データ値あたり約2クロック サイクル内で生成され、第1の前記クロックサイクル中、どの前記ワードが前記 条件付きシフトを実行するかを照会オペレーションが決定し、第2の前記クロッ クサイクル中、前記スパンの前記幾何学的特性が前記スパンメモリに書き込まれ る、請求の範囲第14項に記載の方法。 27.隠面消去がピクセルではなくスパンの処理で実行されることにより、深 さ複雑性の大きいシーンの計算が減らされる、請求の範囲第14項に記載の方法 。 28.前記多角形スパンはSMCCAMに保存され、照会を実行する前記ステ ップは、前記SMCCAMに保存された多角形スパンセット全体を直接照会して 可視スパンを識別し、比較オペレーション数を、スパン総数より小さい可視多角 形スパン数に比例させるステップをさらに具備する、請求の範囲第14項に記載 の方法。
JP9507824A 1995-07-26 1996-07-26 スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法および装置 Pending JPH11515121A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US152995P 1995-07-26 1995-07-26
US60/001,529 1995-07-26
PCT/US1996/012390 WO1997005576A1 (en) 1995-07-26 1996-07-26 Method and apparatus for span and subspan sorting rendering system

Publications (1)

Publication Number Publication Date
JPH11515121A true JPH11515121A (ja) 1999-12-21

Family

ID=21696508

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9507824A Pending JPH11515121A (ja) 1995-07-26 1996-07-26 スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法および装置

Country Status (6)

Country Link
US (2) US5977987A (ja)
EP (2) EP0870282B1 (ja)
JP (1) JPH11515121A (ja)
AU (2) AU6600496A (ja)
DE (1) DE69628451D1 (ja)
WO (2) WO1997005576A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007506172A (ja) * 2003-09-17 2007-03-15 コニンクリユケ フィリップス エレクトロニクス エヌ.ブイ. 3次元画像ディスプレイの画面に3次元画像を描画するシステム及び方法
US7425955B2 (en) 2003-06-26 2008-09-16 Canon Kabushiki Kaisha Method for tracking depths in a scanline based raster image processor

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596686A (en) 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
EP0870282B1 (en) * 1995-07-26 2003-05-28 Apple Computer Inc. Method for a span and subspan sorting rendering system
JP2882465B2 (ja) * 1995-12-25 1999-04-12 日本電気株式会社 画像生成方法およびその装置
JP3580682B2 (ja) * 1997-09-26 2004-10-27 株式会社ソニー・コンピュータエンタテインメント 画像処理装置および方法
JPH11259678A (ja) * 1998-03-12 1999-09-24 Sega Enterp Ltd 画像表示装置及びそれによる画像表示方法
JP4505866B2 (ja) * 1998-04-03 2010-07-21 ソニー株式会社 画像処理装置および映像信号処理方法
US6556993B2 (en) * 2000-05-30 2003-04-29 Broadcom Corporation Method and system for providing a hardware sort in a graphics system
WO1999056249A1 (en) 1998-04-27 1999-11-04 Interactive Silicon, Inc. Graphics system and method for rendering independent 2d and 3d objects
US6760025B1 (en) * 1998-07-07 2004-07-06 S3 Graphics Co., Ltd. Z-buffer based interpenetrating object detection for antialiazing
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US7023437B1 (en) 1998-07-22 2006-04-04 Nvidia Corporation System and method for accelerating graphics processing using a post-geometry data stream during multiple-pass rendering
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6525737B1 (en) 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6720964B1 (en) * 1998-08-27 2004-04-13 Ati International Srl Method and apparatus for processing portions of primitives that are being rendered
JP4343344B2 (ja) * 1998-09-11 2009-10-14 キヤノン株式会社 ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法
US6307555B1 (en) * 1998-09-30 2001-10-23 Silicon Graphics, Inc. Boolean operations for subdivision surfaces
US7224364B1 (en) * 1999-02-03 2007-05-29 Ati International Srl Optimal initial rasterization starting point
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
WO2000048080A1 (en) * 1999-02-12 2000-08-17 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP3649947B2 (ja) * 1999-04-30 2005-05-18 富士通株式会社 画像描画装置、画像描画方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6597355B1 (en) * 1999-10-01 2003-07-22 Geometric Software Solutions Co. Limited Automatic recognition and suppression of complex interacting holes
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US6870540B1 (en) * 1999-12-06 2005-03-22 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US6850906B1 (en) * 1999-12-15 2005-02-01 Traderbot, Inc. Real-time financial search engine and method
US6686924B1 (en) * 2000-02-02 2004-02-03 Ati International, Srl Method and apparatus for parallel processing of geometric aspects of video graphics data
US6691098B1 (en) * 2000-02-08 2004-02-10 International Business Machines Corporation System and method for explaining exceptions in data
FR2805637B1 (fr) * 2000-02-25 2002-12-13 Commissariat Energie Atomique Procede de lecture d'etiquettes electroniques par identification simultanee de leur code
US6972760B2 (en) * 2000-03-30 2005-12-06 S3 Graphics Co., Ltd. Area and span based Z-buffer
US20020022974A1 (en) * 2000-04-14 2002-02-21 Urban Lindh Display of patent information
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US6664963B1 (en) 2000-05-31 2003-12-16 Nvidia Corporation System, method and computer program product for programmable shading using pixel shaders
US6690372B2 (en) 2000-05-31 2004-02-10 Nvidia Corporation System, method and article of manufacture for shadow mapping
US6532013B1 (en) 2000-05-31 2003-03-11 Nvidia Corporation System, method and article of manufacture for pixel shaders for programmable shading
US7505044B2 (en) * 2000-07-31 2009-03-17 Bowsher M William Universal ultra-high definition color, light, and object rendering, advising, and coordinating system
US7002591B1 (en) * 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
JP2002092646A (ja) * 2000-09-14 2002-03-29 Minolta Co Ltd 3次元形状データから面を抽出する方法および装置並びに記録媒体
US7663642B2 (en) * 2000-11-15 2010-02-16 Sony Corporation Systems and methods for rendering a polygon in an image to be displayed
US6567099B1 (en) * 2000-11-15 2003-05-20 Sony Corporation Method and system for dynamically allocating a frame buffer for efficient anti-aliasing
US6778181B1 (en) 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
GB2372188B (en) * 2001-02-08 2005-07-13 Imagination Tech Ltd Volume clipping in computer 3-D Graphics
US6822648B2 (en) * 2001-04-17 2004-11-23 Information Decision Technologies, Llc Method for occlusion of movable objects and people in augmented reality scenes
US7221381B2 (en) * 2001-05-09 2007-05-22 Clairvoyante, Inc Methods and systems for sub-pixel rendering with gamma adjustment
JP4245353B2 (ja) * 2001-05-23 2009-03-25 バイタル イメージズ,インコーポレイティド オブジェクトオーダーボリュームレンダリングのオクルージョンカリング
US6772175B2 (en) * 2001-05-31 2004-08-03 Intel Corporation Database that stores data for a three-dimensional mesh
US7162716B2 (en) 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US7456838B1 (en) 2001-06-08 2008-11-25 Nvidia Corporation System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
US7009615B1 (en) 2001-11-30 2006-03-07 Nvidia Corporation Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline
WO2002101497A2 (en) * 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for programmable fragment processing in a graphics pipeline
US6697064B1 (en) 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US6704025B1 (en) 2001-08-31 2004-03-09 Nvidia Corporation System and method for dual-depth shadow-mapping
US6753861B2 (en) * 2001-10-18 2004-06-22 Hewlett-Packard Development Company, L.P. Active region determination for line generation in regionalized rasterizer displays
AUPS028702A0 (en) * 2002-02-01 2002-02-28 Canon Kabushiki Kaisha Efficient display update from changing object graphics
US6862025B2 (en) 2002-02-28 2005-03-01 David B. Buehler Recursive ray casting method and apparatus
US6828978B2 (en) * 2002-02-28 2004-12-07 David B. Buehler Bucket-sorting graphical rendering apparatus and method
US7009605B2 (en) 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US7439987B2 (en) * 2002-04-17 2008-10-21 The Boeing Company Vector graphic normalizer
US7336660B2 (en) * 2002-05-31 2008-02-26 Cisco Technology, Inc. Method and apparatus for processing packets based on information extracted from the packets and context indications such as but not limited to input interface characteristics
US7299317B1 (en) 2002-06-08 2007-11-20 Cisco Technology, Inc. Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
US7558775B1 (en) 2002-06-08 2009-07-07 Cisco Technology, Inc. Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations
US6549442B1 (en) 2002-07-25 2003-04-15 Neomagic Corp. Hardware-assisted fast bank-swap in a content-addressable-memory (CAM) processor
US7313667B1 (en) 2002-08-05 2007-12-25 Cisco Technology, Inc. Methods and apparatus for mapping fields of entries into new values and combining these mapped values into mapped entries for use in lookup operations such as for packet processing
US7349382B2 (en) * 2002-08-10 2008-03-25 Cisco Technology, Inc. Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base
US7177978B2 (en) * 2002-08-10 2007-02-13 Cisco Technology, Inc. Generating and merging lookup results to apply multiple features
US7028136B1 (en) 2002-08-10 2006-04-11 Cisco Technology, Inc. Managing idle time and performing lookup operations to adapt to refresh requirements or operational rates of the particular associative memory or other devices used to implement the system
US7689485B2 (en) * 2002-08-10 2010-03-30 Cisco Technology, Inc. Generating accounting data based on access control list entries
US7065609B2 (en) * 2002-08-10 2006-06-20 Cisco Technology, Inc. Performing lookup operations using associative memories optionally including selectively determining which associative memory blocks to use in identifying a result and possibly propagating error indications
CN100421106C (zh) * 2002-08-10 2008-09-24 思科技术公司 具有增强能力的关联存储器
US7103708B2 (en) * 2002-08-10 2006-09-05 Cisco Technology, Inc. Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry
US7082492B2 (en) * 2002-08-10 2006-07-25 Cisco Technology, Inc. Associative memory entries with force no-hit and priority indications of particular use in implementing policy maps in communication devices
US7441074B1 (en) 2002-08-10 2008-10-21 Cisco Technology, Inc. Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation
US6717946B1 (en) 2002-10-31 2004-04-06 Cisco Technology Inc. Methods and apparatus for mapping ranges of values into unique values of particular use for range matching operations using an associative memory
US7024515B1 (en) 2002-11-15 2006-04-04 Cisco Technology, Inc. Methods and apparatus for performing continue actions using an associative memory which might be particularly useful for implementing access control list and quality of service features
US7496035B1 (en) 2003-01-31 2009-02-24 Cisco Technology, Inc. Methods and apparatus for defining flow types and instances thereof such as for identifying packets corresponding to instances of the flow types
US7261342B2 (en) * 2003-04-08 2007-08-28 Smith Richard B Automatically locking window latch
US8788996B2 (en) * 2003-09-15 2014-07-22 Nvidia Corporation System and method for configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US7593010B2 (en) * 2003-09-18 2009-09-22 Microsoft Corporation Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system
US20050110791A1 (en) * 2003-11-26 2005-05-26 Prabhu Krishnamoorthy Systems and methods for segmenting and displaying tubular vessels in volumetric imaging data
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7382368B1 (en) * 2004-06-28 2008-06-03 Nvidia Corporation Planar z representation for z compression
US8723231B1 (en) * 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8072451B2 (en) * 2004-12-29 2011-12-06 Intel Corporation Efficient Z testing
WO2006073131A1 (ja) * 2005-01-04 2006-07-13 Ssd Company Limited 描画装置及び描画方法
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
JP4052323B2 (ja) * 2005-06-22 2008-02-27 コニカミノルタセンシング株式会社 3次元測定システム
US9298311B2 (en) 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
US7586494B2 (en) * 2006-03-17 2009-09-08 Microsoft Corporation Surface detail rendering using leap textures
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US8477134B1 (en) 2006-06-30 2013-07-02 Nvidia Corporation Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation
US8633927B2 (en) 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US7804499B1 (en) 2006-08-28 2010-09-28 Nvidia Corporation Variable performance rasterization with constant effort
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US7889191B2 (en) * 2006-12-01 2011-02-15 Semiconductor Components Industries, Llc Method and apparatus for providing a synchronized video presentation without video tearing
US8724483B2 (en) * 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8063903B2 (en) * 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) * 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) * 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US20110063304A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US20110119454A1 (en) * 2009-11-17 2011-05-19 Hsiang-Tsung Kung Display system for simultaneous displaying of windows generated by multiple window systems belonging to the same computer platform
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9248525B2 (en) * 2012-06-27 2016-02-02 Mitsubishi Electric Research Laboratories, Inc. Method and system for cutting features from sheet materials with a laser cutter according to a pattern
KR102059578B1 (ko) * 2012-11-29 2019-12-27 삼성전자주식회사 3차원 그래픽스 렌더링 시스템에서 프리미티브 처리 장치 및 방법
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
KR102443697B1 (ko) * 2015-09-11 2022-09-15 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치
US10120961B2 (en) * 2016-07-12 2018-11-06 Nature Simulation Systems Inc. Method for immediate boolean operations using geometric facets
US10109105B2 (en) * 2016-07-12 2018-10-23 Nature Simulation Systems Inc. Method for immediate boolean operations using geometric facets
US10262393B2 (en) * 2016-12-29 2019-04-16 Intel Corporation Multi-sample anti-aliasing (MSAA) memory bandwidth reduction for sparse sample per pixel utilization

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825391A (en) * 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US5129060A (en) * 1987-09-14 1992-07-07 Visual Information Technologies, Inc. High speed image processing computer
US4996666A (en) * 1988-08-12 1991-02-26 Duluk Jr Jerome F Content-addressable memory system capable of fully parallel magnitude comparisons
EP0439507B1 (en) * 1988-10-20 1996-04-24 CHUNG, David Siu Fu Memory structure and method of utilization
JPH0776991B2 (ja) * 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Nurbsデータ変換方法及び装置
US5129051A (en) * 1990-03-16 1992-07-07 Hewlett-Packard Company Decomposition of arbitrary polygons into trapezoids
US5123085A (en) * 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
DE69122557T2 (de) * 1990-06-29 1997-04-24 Philips Electronics Nv Bilderzeugung
US5493644A (en) * 1991-07-11 1996-02-20 Hewlett-Packard Company Polygon span interpolator with main memory Z buffer
US5295235A (en) * 1992-02-14 1994-03-15 Steve Newman Polygon engine for updating computer graphic display employing compressed bit map data
GB9406509D0 (en) * 1994-03-31 1994-05-25 Argonaut Software Limited Rendering 3-d scenes in computer graphics
EP0870282B1 (en) * 1995-07-26 2003-05-28 Apple Computer Inc. Method for a span and subspan sorting rendering system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7425955B2 (en) 2003-06-26 2008-09-16 Canon Kabushiki Kaisha Method for tracking depths in a scanline based raster image processor
JP2007506172A (ja) * 2003-09-17 2007-03-15 コニンクリユケ フィリップス エレクトロニクス エヌ.ブイ. 3次元画像ディスプレイの画面に3次元画像を描画するシステム及び方法

Also Published As

Publication number Publication date
DE69628451D1 (de) 2003-07-03
EP0870282A4 (ja) 1998-10-14
EP0870282A1 (en) 1998-10-14
EP0840915A1 (en) 1998-05-13
AU6714796A (en) 1997-02-26
US5977987A (en) 1999-11-02
EP0870282B1 (en) 2003-05-28
EP0840915A4 (en) 1998-11-04
WO1997005575A1 (en) 1997-02-13
AU6600496A (en) 1997-02-26
WO1997005576A1 (en) 1997-02-13
US6285378B1 (en) 2001-09-04

Similar Documents

Publication Publication Date Title
JPH11515121A (ja) スパンおよびサブスパン・ソーティング・レンダリング・システムのための方法および装置
US5596686A (en) Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
WO1997005576A9 (en) Method and apparatus for span and subspan sorting rendering system
US6476807B1 (en) Method and apparatus for performing conservative hidden surface removal in a graphics processor with deferred shading
JP3657518B2 (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
US6798421B2 (en) Same tile method
US6700581B2 (en) In-circuit test using scan chains
JP3759971B2 (ja) 3次元像を陰影付けする方法
US20020130886A1 (en) Antialias mask generation
JPH05282458A (ja) グラフィックス・システムにおける拡張可能な複数のイメージ・バッファ
JP2009525526A (ja) ビーム放出によって仮想画像を合成するための方法
Wiegand Interactive rendering of CSG models
US8917281B2 (en) Image rendering method and system
US20030164823A1 (en) 3D graphics accelerator architecture
EP2728551B1 (en) Image rendering method and system
KR100256472B1 (ko) 사용자가 정의한 룸 및 윈도우를 이용하는 효율적인 렌더링
Chin A Walk Through BSP Trees
Lehn et al. Visibility Considerations
Day et al. Compound textures for dynamic impostor rendering
JPH09282486A (ja) 画像処理装置
Lau et al. Accurate Image Generation and Interactive Image Editing with the A‐buffer
Yoon et al. Visibility