(57)【特許請求の範囲】
【請求項１】
頂点データ入力と制御入力とを有し、かつその頂点データ入力からのプリミティブ頂点データに基づきかつその制御入力の制御下で、クリップ領域に対して関してプリミティブをクリップするように構成配置されるクリッピング・プロセッサを含むグラフィックス・アクセレレータで使用するためのグラフィックス処理回路において、
前記クリッピング・プロセッサの前記頂点データ入力に作動的に結合された頂点入力データ・パス（１２９）と、
前記頂点入力データ・パスに作動的に結合された頂点データ入力と、前記クリッピング・プロセッサの前記制御入力に作動的に結合された制御出力（１０９、１１１）とを有するクリッピング・プリプロセッサ回路（１１２）とを備えており、
前記クリッピング・プリプロセッサ回路が、前記頂点入力データ・パスからの前記プリミティブ頂点データと前記クリップ領域の間の関係の評価を行い、この評価に基づいて前記制御出力に信号をもたらすように構成配置され、
前記クリッピング・プリプロセッサ回路は、それぞれがクリップコード回路を含む少なくとも三つの頂点処理回路（２２０、２４４、２４６；２５０）を備え、さらに前記クリッピング・プリプロセッサ回路は、各頂点処理回路の前記クリップコード回路に応答する入力を有するトリビアル受容／拒否回路（２５０）を含み、
前記クリッピング・プリプロセッサ回路における各頂点処理回路が、ｘ座標プリプロセシング回路、ｙ座標プリプロセシング回路、およびｚ座標プリプロセシング回路を含み、
前記ｘ座標プリプロセシング回路、前記ｙ座標プリプロセシング回路、および前記ｚ座標プリプロセシング回路がそれぞれシフト・レジスタ内にメモリ・セルを含み、  
前記トリビアル受容／拒否回路（２５０）は、前記メモリ・セルの出力に作動的に結合された組合せ論理回路を含むことを特徴とする回路。
【請求項２】
各頂点処理回路が使用可能入力を有し、前記頂点データ入力からの前記プリミティブ頂点データに基づき前記プリミティブに対するクリップコード（１１３）を発生するよう構成配置されており、
前記グラフィックス処理回路は、前記頂点入力データ・パス（１２９）と前記頂点処理回路の前記頂点データ入力の間の比較器をさらに備えることを特徴とする、請求項1に記載の回路。
【請求項３】
頂点データ入力と制御入力とを有し、かつその頂点データ入力からのプリミティブ頂点データに基づきかつその制御入力の制御下で、クリップ領域に対して関してプリミティブをクリップするように構成配置されるクリッピング・プロセッサを含むグラフィックス・アクセレレータで使用するためのグラフィックス処理回路において、
前記クリッピング・プロセッサの前記頂点データ入力に作動的に結合された頂点入力データ・パス（１２９）と、
前記頂点入力データ・パスに作動的に結合された頂点データ入力と、前記クリッピング・プロセッサの前記制御入力に作動的に結合された制御出力（１０９、１１１）とを有するクリッピング・プリプロセッサ回路（１１２）とを備えており、
前記クリッピング・プリプロセッサ回路が、前記頂点入力データ・パスからの前記プリミティブ頂点データと前記クリップ領域の間の関係の評価を行い、この評価に基づいて前記制御出力に信号をもたらすように構成配置され、
前記クリッピング・プリプロセッサ回路は、それぞれがクリップコード回路を含む少なくとも三つの頂点処理回路（２２０、２４４、２４６；２５０）を備え、さらに前記クリッピング・プリプロセッサ回路は、各頂点処理回路の前記クリップコード回路に応答する入力を有するトリビアル受容／拒否回路（２５０）を含み、
前記クリッピング・プリプロセッサ回路が、
前記頂点入力データ・パスに作動的に結合された頂点座標レジスタと、
前記頂点入力データ・パスに作動的に結合されたウィンドウ・エッジ座標レジスタと、
前記頂点座標レジスタの出力に作動的に結合された第１の入力と、前記ウィンドウ・エッジ座標レジスタの出力に作動的に結合された第２の入力とを有し、かつ比較出力を有する比較器と、を備え、
前記頂点処理回路が、前記比較出力に作動的に結合された複数の入力を含み、かつ、それぞれ前記比較出力に作動的に結合された並列入力を有するシフトレジスタを含むことを特徴とする回路。
【請求項４】
前記比較器が、浮動小数点比較器である、請求項３に記載の回路。
【請求項５】
前記クリッピング・プリプロセッサ回路と前記クリッピング・プロセッサとの間に作動的に結合されるクリップ・コード・バス（１１３）をさらに含む、ことを特徴とする請求項１又は３に記載の回路。
【請求項６】
前記頂点処理回路はそれぞれ頂点使用可能線を有する、ことを特徴とする請求項１又は３に記載の回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・グラフィックス・システムにおける形状アクセレレータに関する。さらに具体的には、グラフィックス・プリミティブのクリッピングが改善された形状アクセレレータに関する。
【０００２】
【従来の技術】
コンピュータ・グラフィックス・システムは一般に、オブジェクトのグラフィックス表示を２次元の表示画面に表示するために使用されている。現在のコンピュータ・グラフィックス・システムはきわめて細かい表示を行うことができ、各種の用途で使用されている。
【０００３】
典型的なコンピュータ・グラフィックス・システムでは、表示画面に表示されるオブジェクトは、複数のグラフィックス・プリミティブに分割される。プリミティブはグラフィックス・ピクチャの基本的な構成要素であり、点、線、ポリライン、ベクトル、および三角形や四辺形などの多角形を含む。通常、画面に表示される１つまたは複数のオブジェクトのビューを表すグラフィックス・プリミティブを、２次元の表示画面にレンダリングないし描画するハードウェア／ソフトウェア方式が実施されている。
【０００４】
通常、レンダリング対象の３次元オブジェクトを画定するプリミティブは、各プリミティブをプリミティブ・データによって定義しているホスト・コンピュータによって与えられる。例えば、プリミティブが三角形である場合、ホスト・コンピュータは、プリミティブをその頂点のｘ、ｙ、ｚ座標によって、また各頂点のＲ、Ｇ、Ｂカラー値によって定義することができる。レンダリング・ハードウェアは、プリミティブ・データを補間して、各プリミティブを表すためにオンになっている表示画面ピクセル、および各ピクセルのＲ、Ｇ、Ｂ値を計算する。
【０００５】
コンピュータ・グラフィックス・システムの基本的な構成要素は、一般に、形状エンジン、すなわち形状アクセレレータ、ラスタライザおよびフレーム・バッファを含む。システムは、テクスチャ・マッピング・ハードウェアも含むことができる。形状アクセレレータは、表示されるビューを構成するプリミティブを定義するプリミティブ・データをホスト・コンピュータから受け取る。形状アクセレレータは、プリミティブ・データを使用して、各プリミティブに対して、変換、四辺形の三角形への分解、ライティング、クリッピングおよび平面式計算を実行する。形状アクセレレータの出力は、ラスタライザとテクスチャ・マッピング・ハードウェアによって使用されるデータをレンダリングして、各プリミティブ内の各ピクセルのデータを生成する。ラスタライザからのピクセル・データとテクスチャ・マッピング・ハードウェアからのピクセル・データは結合され、ビデオ表示画面に表示するためにフレーム・バッファ内に格納される。
【０００６】
「クリッピング」は、形状アクセレレータがプリミティブのどの部分をいわゆる「クリップ領域」内に表示すべきかを決定する操作である。クリップ領域は、ウィンドウなどの２次元面積かまたは３次元ビュー体積である。クリップ領域内に表示されるプリミティブは、１次元（例えば線）または２次元（例えば多角形）である。
【０００７】
点、線、および多角形をクリップするための様々な技法が開発されている。それらの技法には、Ｃｏｈｅｎ−Ｓｕｔｈｅｒｌａｎｄ線クリッピング、パラメトリック線クリッピング、Ｗｅｉｌｅｒ多角形クリッピング、Ｌｉａｎｇ−Ｂａｒｓｋｙ多角形クリッピング、および、Ｓｕｔｈｅｒｌａｎｄ−Ｈｏｄｇｍａｎ多角形クリッピングがある。これらの技法は、特に３次元クリップ領域に対して多角形をクリップするのに適用する場合の計算中心グラフィックス操作である。
【０００８】
【発明が解決しようとする課題】
形状アクセレレータの動作の速度を増すために、クリッピング操作専用の特殊目的回路を実施することが周知である。それにもかかわらず、性能をさらに改善する必要がある。特に、形状アクセレレータによるデータの処理および計算の効率を向上させる必要がある。
【０００９】
【課題を解決するための手段】
１つの一般態様では、本発明は、クリッピング・プロセッサの頂点データ入力に頂点入力データ・パスが動作可能に接続されたクリッピング・プロセッサを含むグラフィックス・アクセレレータで使用するためのグラフィックス処理回路を特徴とする。クリッピング・プロセッサ回路は、頂点入力データ・パスに動作可能に接続された頂点データ入力と、クリッピング・プロセッサの制御入力に動作可能に接続された制御出力とを有する。クリッピング・プロセッサは、頂点入力データ・パスからのプリミティブ頂点データとクリップ領域の間の関係の評価を実行し、この評価に基づいて制御出力に信号を提供するように構成配置される。
【００１０】
グラフィックス・アクセレレータは、使用可能入力を有し、かつその頂点データ入力からのプリミティブ頂点データに基づいてプリミティブの表示パラメータを生成する頂点処理回路を含む。グラフィックス処理回路は、頂点入力データ・パスと頂点処理回路の頂点データ入力との間に第１の回路パスを含み、かつ制御出力と頂点処理回路の使用可能入力との間に第２の回路パスを有する。クリッピング・プリプロセッサは、それぞれシフト・レジスタ内にメモリ・セルを含むｘ、ｙ、およびｚ座標プリプロセシング回路と、メモリ・セルの出力に動作可能に接続された組合せ論理回路とを含む。クリッピング・プリプロセッサ回路は、頂点座標レジスタ、および頂点入力データ・パスに動作可能に接続されたウィンドウ・エッジ座標レジスタ、および頂点座標レジスタの出力に動作可能に接続された第１の入力とウィンドウ・エッジ座標レジスタの出力に動作可能に接続された第２の入力とを有する比較器、ならびに比較器の比較出力に動作可能に接続された入力を有するマッチング回路を含む。比較器は、浮動小数点比較器でよい。マッチング回路は、それぞれ比較出力に動作可能に接続された並列入力を有するシフト・レジスタを含む。マッチング回路は、トリビアル受容出力とトリビアル拒否出力を有する。クリップ・コード・バスは、クリッピング・プリプロセッサとクリッピング・プロセッサの間に動作可能に接続される。クリッピング・プリプロセッサは、それぞれ使用可能線を有する頂点処理回路を含む。クリッピング・プリプロセッサは、少なくとも３つの頂点処理回路を含む。
【００１１】
他の一般態様では、本発明は、クリップ領域の外側にある座標だけを有する第１のプリミティブの定義から表示パラメータを生成するステップと、同時に座標がすべてクリップ領域の外側にあるか判定するステップと、判定ステップが座標がすべてクリップ領域の外側にあると判定した場合に生成ステップを停止するステップを含むグラフィックス処理方法を特徴とする。
【００１２】
生成ステップは第１のグラフィックス・プロセッサ部分によって実施され、この方法は、判定ステップが座標がすべてクリップ領域の外側にあると判定した場合に、表示パラメータを第２のグラフィックス・プロセッサ部分に転送することを抑制するステップを含む。この方法はまた、第１のプリミティブと異なりかつまたクリップ領域の外側にある座標だけを有する第２のプリミティブの定義から表示パラメータを生成するステップと、第２のプリミティブの座標がすべてクリップ領域の外側にあると判定しないステップを含む。この方法はさらに、第１のプリミティブと異なりかつクリップ領域の内側にある座標だけを有する第２のプリミティブの定義から表示パラメータを生成するステップと、第２のプリミティブの座標がすべてクリップ領域の内側にあると判定するステップを含む。生成ステップは第１のグラフィックス・プロセッサ部分によって実施され、この方法は、プリミティブ用のクリップ・コードを第２のグラフィックス・プロセッサ部分に転送するステップを含む。この方法は、第１のプリミティブと異なる個数の頂点を有する第２のプリミティブの定義から表示パラメータを生成するステップを含む。
【００１３】
他の一般態様では、本発明は、第１の座標の最小値より小さい第１の半空間を画定するステップと、第１の座標の最大値より大きい第２の半空間を画定するステップと、第２の座標の最小値より小さい第３の半空間を画定するステップと、第２の座標の最大値より大きい第４の半空間を画定するステップと、第３の座標の最小値より小さい第５の半空間を画定するステップと、第３の座標の最大値より大きい第６の半空間を画定するステップと、第１のプリミティブを構成する頂点がすべて半空間のうちの１つの半空間の内側にあるかどうか判定するステップと、判定ステップが第１のプリミティブを構成する頂点がすべて半空間のうちの１つの半空間の内側にあると判定した場合に、第１のトリビアル拒否信号を生成するステップを含むグラフィックス処理方法を特徴とする。
【００１４】
判定ステップは、浮動小数点比較ステップを含む。この方法は、第１のプリミティブを構成する頂点のすべてが、すべての半空間の外側にあるかどうか判定するステップと、このステップが第１のプリミティブを構成する頂点のすべてがすべての半空間の外側にあると判定した場合に、第１のトリビアル受容信号を生成するステップを含む。この方法はさらに、第２のプリミティブを構成する異なる個数の頂点がすべて半空間のうちのいずれかの半空間の内側にあるかどうか判定するステップと、このステップが第２のプリミティブを構成する頂点がすべて半空間のうちのいずれかの半空間の内側にあると判定した場合に、第２のトリビアル拒否信号を生成するステップを含む。
【００１５】
本発明による改善されたクリッピング・プリプロセシングを有する形状アクセレレータは、クリッピング領域の内側に完全に入るかまたはクリッピング領域の完全に外側にあるプリミティブの計算負担が大幅に軽減できるので有利である。これにより、グラフィックス・アクセレレータが所定の時間中により多くのプリミティブを表示できるようになる。さらに、本発明によるクリッピング・プリプロセシングは、比較的小さい回路を使用して実施できる。これにより、あまり費用のかからない形状アクセレレータが実施でき、また集積回路上にグラフィックス処理特徴用の余地を残すことができる。さらに、クリッピング・プリプロセシングがクリップ・コードを生成する場合、これらは、全特徴クリッパによって再生成する必要がなく、したがってクリッパの性能がさらに改善できる。
【００１６】
本発明をよりよく理解するために、参照することによって本明細書に組み込まれる添付図面を参照する。
【００１７】
【発明の実施の形態】
図１は、本発明によるクリッピング・プリプロセシングを組み込むのに適したコンピュータ・グラフィックス・システムの第１の実施形態のブロック図である。図示の例証としての実施形態は、基板とチップの数、これらを区画する態様、バス幅、およびデータ転送レートに関して例示的なものに過ぎないことを理解すべきである。他の多数の実施形態が使用できる。図示のように、システムは、フロント・エンド基板１０、テクスチャ・マッピング基板１２、およびフレーム・バッファ基板１４を含む。フロント・エンド基板１０は、５２ビット・バス１６によってホスト・コンピュータ１５と通信を行う。フロント・エンド基板１０は、レンダリング対象のプリミティブをバス１６によってホスト・コンピュータ１５から受け取る。プリミティブは、プリミティブが三角形である場合の頂点などのプリミティブのすべての部分に対するｘ、ｙ、ｚベクトル座標データ、Ｒ、Ｇ、Ｂカラー・データおよびテクスチャＳ、Ｔ座標によって規定される。次いで、プリミティブを３次元で表すデータは、フロント・エンド基板１０によって、８５ビット・バス１８によってテクスチャ・マッピング基板１２およびフレーム・バッファ基板１４に与えられる。テクスチャ・マッピング基板１２は、受け取ったプリミティブ・データを補間して、プリミティブを表す画面表示ピクセルを計算し、各プリミティブ・ピクセルの対応する合成テクスチャ・データを決定する。合成テクスチャ・データは、図面が見やすいように図１では単一のバスとして示されている５本の５５ビット・バス２８によってフレーム・バッファ基板１４に提供される。
【００１８】
フレーム・バッファ基板１４もフロント・エンド基板１０から受け取ったプリミティブ・データを補間して、各プリミティブを表す表示画面上のピクセルを計算し、各ピクセルのオブジェクト・カラー値を決定する。次いで、フレーム・バッファ基板１４は、ピクセルごとに、オブジェクト・カラー値を、テクスチャ・マッピング基板１２から提供される合成テクスチャ・データと組み合わせて、各ピクセルの得られた画像のＲ、Ｇ、Ｂ値を生成する。各ピクセルのＲ、Ｇ、Ｂカラー制御信号はそれぞれ、表示画面２７のピクセルを制御するためにＲ、Ｇ、Ｂライン２９によって提供され、テクスチャ・マップされたプリミティブを表す得られた画像を表示画面２７に表示する。
【００１９】
フロント・エンド基板１０、テクスチャ・マッピング基板１２およびフレーム・バッファ基板１４はそれぞれパイプライン化されており、複数のプリミティブに対して同時に動作する。テクスチャ・マッピング基板１２とフレーム・バッファ基板１４が、前にフロント・エンド基板１０によって提供されたプリミティブに対して動作している間に、フロント・エンド基板１０は、テクスチャ・マッピング基板１２およびフレーム・バッファ１４中のパイプラインがいっぱいになるまで動作し続け、新しいプリミティブを提供し続ける。
【００２０】
フロント・エンド基板１０は、ディストリビュータ・チップ３０、３個の３次元（３−Ｄ）形状アクセレレータ・チップ３２Ａ、３２Ｂおよび３２Ｃ、２次元（２−Ｄ）形状アクセレレータ・チップ３４ならびにコンセントレータ・チップ３６を含む。ディストリビュータ・チップ３０は、バス１６によってホスト・コンピュータ１５からＸ、Ｙ、Ｚ座標データおよびカラー・プリミティブ・データを受け取り、３−Ｄプリミティブ・データを３−Ｄ形状アクセレレータ・チップ３２Ａ、３２Ｂおよび３２Ｃに均等に分配する。このようにすると、プリミティブの３つのグループが同時に操作されるので、システムの帯域幅が増加する。データは、４０ビット・バス３８Ａによって３−Ｄ形状アクセレレータ・チップ３２Ａおよび３２Ｂに提供され、また４０ビット・バス３８Ｂによってチップ３２Ｃに提供される。バス３２Ａおよび３２Ｂはどちらも、６０ＭＨｚの速度でデータを転送し、２個の３−Ｄ形状アクセレレータ・チップをサポートするのに十分な帯域幅を提供する。２−Ｄプリミティブ・データは、４４ビット・バス４０によって４０ＭＨｚの速度で２−Ｄ形状アクセレレータ・チップ３４に提供される。
【００２１】
各３−Ｄ形状アクセレレータ・チップ３２Ａ−Ｃは、受け取ったプリミティブを画定するｘ、ｙ、ｚ座標を対応する画面空間座標に変換し、その画面空間座標に関するオブジェクトのＲ、Ｇ、Ｂ値およびテクスチャのＳ、Ｔ値を決定し、プリミティブの四辺形を三角形に圧縮解除し、各三角形を画定する三角形平面式を計算する。各３−Ｄ形状アクセレレータ・チップ３２Ａ−Ｃはまた、ビュー・クリッピング操作を行って、複数のウィンドウが表示されている場合、またはプリミティブの一部が表示画面２７に表されたビュー体積を超えた場合に、得られた画像が正確に画面表示されるようにする。３−Ｄ形状アクセレレータ・チップ３２Ａおよび３２Ｂおよび３２Ｃからの出力データはそれぞれ、４４ビット・バス４２Ａおよび４２Ｂによって６０ＭＨｚの速度でコンセントレータ・チップ３６に提供される。２次元形状アクセレレータ・チップ３４も、４６ビット・バス４４によって４５ＭＨｚの速度で出力データをコンセントレータ・チップ３６に提供する。コンセントレータ・チップ３６は、３−Ｄ形状アクセレレータ・チップ３２Ａ−Ｃから受け取った３−Ｄプリミティブ出力データを組み合わせ、プリミティブをこれらがディストリビュータ・チップ３０によって分配される前に有していた元の順序に並べ換え、組み合わされたプリミティブ出力データをバス１８によってテクスチャ・マッピング基板１２およびフレーム・バッファ基板１４に提供する。
【００２２】
テクスチャ・マッピング基板１２は、テクスチャ・マッピング・チップ４６と、キャッシュ・メモリとして配置されることが好ましいローカル・メモリ４８を含む。本発明の好ましい実施形態では、ローカル・メモリは、複数個のＳＤＲＡＭ（同期ダイナミック・ランダム・アクセス・メモリ）によって形成される。キャッシュ・メモリ４８は、フレーム・バッファ基板１４にレンダリングされるプリミティブと関連するテクスチャＭＩＰマップ・データを記憶する。テクスチャＭＩＰマップ・データは、ホスト・コンピュータ１５のメイン・メモリ１７から、バス４０を通り、２−Ｄ形状アクセレレータ・チップ３４を介し、かつ２４ビット・バス２４を通ってダウンロードされる。
【００２３】
テクスチャ・マッピング・チップ４６は、バス１８によって、表示画面２７にレンダリングされるプリミティブを表すプリミティブ・データを逐次受け取る。上述したように、３−Ｄ形状アクセレレータ・チップ３２Ａ−Ｃによって提供されるプリミティブは、線および三角形を含む。テクスチャ・マッピング基板１２は、点や線のテクスチャ・マッピングは行わず、三角形のプリミティブだけに動作する。三角形のプリミティブを表すデータは、少なくとも１つの頂点に関するｘ、ｙ、ｚオブジェクト・ピクセル座標、少なくとも１つの頂点のオブジェクト・カラーＲ、Ｇ、Ｂ値、少なくとも１つの頂点に対応するテクスチャ・マップの部分のＳ、Ｔの座標、および三角形の平面式を含む。テクスチャ・マッピング・チップ４６は、オブジェクト・ピクセルのｚ座標およびオブジェクト・カラーＲ、Ｇ、Ｂ値を無視する。テクスチャ・マッピング・チップ４６は、ｘ、ｙピクセル座標を補間し、プリミティブを表す各ｘ、ｙ画面表示ピクセルに対応するＳおよびＴ座標を補間する。各ピクセルに関して、テクスチャ・マッピング・チップ４６は、キャッシュ・メモリ４８からそれに対応するテクスチャＭＩＰの部分にアクセスし、ピクセルの合成テクスチャ・データを計算する。このデータは、複数のテクセルの加重平均を含む。
【００２４】
各ピクセルのテクスチャ・データは、テクスチャ・マッピング・チップ４６によって、５本のバス２８によってフレーム・バッファ基板１４に提供される。５本のバス２８はそれぞれ、フレーム・バッファ基板上に設けられた５個のフレーム・バッファ・コントローラ・チップ５０Ａ、５０Ｂ、５０Ｃ、５０Ｄおよび５０Ｅに結合され、合成テクスチャ・データをフレーム・バッファ・コントローラ・チップ５０Ａ−Ｅに並列に提供する。フレーム・バッファ・コントローラ・チップ５０Ａ〜Ｅはそれぞれ、関連するＶＲＡＭ（ビデオ・ランダム・アクセス・メモリ）チップ５１Ａ〜Ｅのグループに結合される。さらに、フレーム・バッファ基板１４は、４個のビデオ・フォーマット・チップ５２Ａ、５２Ｂ、５２Ｃおよび５２Ｄと、ＲＡＭＤＡＣ（ランダム・アクセス・メモリ・ディジタル・アナログ変換器）５４を含む。フレーム・バッファ・コントローラ・チップ５０Ａ−Ｅは、表示画面２７の異なる非重畳セグメントを制御する。各フレーム・バッファ・コントローラ・チップ５０Ａ−Ｅは、バス１８によってフロント・エンド基板１０からプリミティブ・データを受け取り、またバス２８によってテクスチャ・マッピング基板１２から合成テクスチャ・マッピング・データを受け取る。フレーム・バッファ・コントローラ・チップ５０Ａ−Ｅは、プリミティブ・データを補間して、プリミティブを表すチップのそれぞれのセグメントにおける画面表示ピクセル座標、および各ピクセル座標の対応するオブジェクトＲ、Ｂ、Ｇカラー値を計算する。合成テクスチャ・データがテクスチャ・マッピング基板１２から提供されるこれらのプリミティブ（すなわち、三角形）に対して、フレーム・バッファ・コントローラ・チップ５０Ａ−Ｅは、ピクセルごとに、オブジェクト・カラー値と合成テクスチャ・データを組み合わせて、表示画面２７に表示される各ピクセルの最終的なＲ、Ｇ、Ｂ値を生成する。
【００２５】
オブジェクト・カラー値とテクスチャ・カラー値を組み合わせる態様は、様々な方法で制御することができる。例えば、置換モードでは、オブジェクト・カラー値をテクスチャ・カラー値と置き換えるだけで、テクスチャ・カラー値だけをピクセルのレンダリングに使用できる。あるいは、変調モードでは、オブジェクト・カラー値とテクスチャ・カラー値を乗算して、ピクセルの最終的なＲ、Ｇ、Ｂ値を生成することができる。さらに、対応するテクスチャ・カラー値をオブジェクト・カラー値と組み合わせる態様を規定する比率を指定するカラー制御ワードを各テクセルに関して記憶することができる。各ピクセルに対応しかつバス２８によってフレーム・バッファ・コントローラ・チップに提供される合成テクセル・データに関して合成カラー制御ワードを決定でき、したがってコントローラ・チップが対応する合成制御ワードによって指定された比率を使用して、各ピクセルの最終的なＲ、Ｇ、Ｂ値を決定することができる。
【００２６】
フレーム・バッファ・コントローラ・チップ５０Ａ〜Ｅによって生成された、各ピクセルのＲ、Ｇ、Ｂ値を含む得られた画像のビデオ・データは、対応するＶＲＡＭチップ５１Ａ〜Ｅに記憶される。ＶＲＡＭチップ５１Ａ〜Ｅの各グループは８個のＶＲＡＭチップを含み、４０個のＶＲＡＭチップがフレーム・バッファ基板上に配置されるようになっている。ビデオ・フォーマット・チップ５２Ａ〜Ｄはそれぞれ、１０個のＶＲＡＭチップの異なる組に接続され、それらからデータを受け取る。ビデオ・データは、ＶＲＡＭチップ５１Ａ−Ｅから直列にシフト・アウトされ、それぞれ６４ビット・バス５８Ａ、５８Ｂ、５８Ｃおよび５８Ｄによって３３ＭＨｚの速度で４個のビデオ・フォーマット・チップ５２Ａ、５２Ｂ、５２Ｃおよび５２Ｄに提供される。ビデオ・フォーマット・チップ５２Ａ−Ｄは、ＲＡＭＤＡＣ５４によって処理できるようにビデオ・データをフォーマットし、かつフォーマットされたデータを３２ビット・バス６０Ａ、６０Ｂ、６０Ｃおよび６０Ｄによって３３ＭＨｚの速度でＲＡＭＤＡＣ５４に提供する。ＲＡＭＤＡＣ５４は、ディジタル・カラー・データをアナログＲ、Ｇ、Ｂカラー制御信号に変換し、各ピクセルのＲ、Ｇ、Ｂ制御信号をアナログＲ，Ｇ，Ｂ制御ライン２９に沿って画面表示２７に提供する。
【００２７】
本発明の一実施形態では、いくつかのプリミティブ・レンダリング・タスクを複数のプリミティブ上で並行して実行できるように、テクスチャ・マッピング基板１２とフレーム・バッファ基板１４上のハードウェアを複製し、それによってシステムの帯域幅を増加させる。そのような本発明の他の実施形態の例を図２に示す。図２はいくつかのハードウェアが複製された本発明のコンピュータ・グラフィックス・システムのブロック図である。図２のシステムは、４個の３−Ｄ形状アクセレレータ・チップ３２Ａ、３２Ｂ、３２Ｃおよび３２Ｄ、それぞれキャッシュ・メモリ４８Ａおよび４８Ｂと関連した２個のテクスチャ・マッピング・チップ４６Ａおよび４６Ｂ、およびそれぞれＶＲＡＭチップ５１Ａ−Ｊのグループと関連した１０個のフレーム・バッファ・コントローラ・チップ５０Ａ〜Ｊを含む。図２のシステムの動作は、上述の図１のシステムの動作と同じである。図２の実施形態のハードウェアの複製では、いくつかのプリミティブ・レンダリング動作を複数のプリミティブ上で並列に実行できるので、システムの帯域幅が増加する。
【００２８】
形状アクセレレータ３２Ａ、３２Ｂおよび３２Ｃを表わす簡単化したブロック図を図３に示す。ホスト・コンピュータ１５からのプリミティブ・データは、入力ＦＩＦＯ１００を介して、第１の頂点ＲＡＭ（バッファ０）１０２と第２の頂点ＲＡＭ（バッファ１）１０４とを含むダブルバッファ頂点ＲＡＭに供給される。形状アクセレレータは、パイプライン構成中に別個の２個のプロセッサを含む。左側スタック１１０は、クリップ・コード論理１１２、レジスタ・ファイル１１４、マルチプレクサ１１６、浮動小数点ＡＬＵ１１８、および浮動小数点マルチプレクサ１２０を含む。左側スタック１１０の動作は、左側スタック制御ユニット１２２によって制御される。左側スタック１１０からの結果は、第１のプリミティブＲＡＭ（バッファ０）１３２と第２のプリミティブＲＡＭ（バッファ１）１３４とを含むダブルバッファ・プリミティブＲＡＭを介して、右側スタック１３０に供給される。右側スタックは、カラー・クランパ／コンパレータ１３８、レジスタ・ファイル１４０、マルチプレクサ１４２、浮動小数点ＡＬＵ１４４、浮動小数点マルチプレクサ１４６、および浮動小数点分割／平方根ユニット１４８を含む。右側スタック１３０からの結果は、出力ＦＩＦＯ１５０を介して、テクスチャ・マッピング基板１２およびフレーム・バッファ基板１４（図１参照）に供給される。右側スタック１３０の動作は、ライティング、クリッピング、および平面式生成論理を含む右側スタック制御ユニット１５２によって制御される。スタック制御ユニットは階層的に設計されており、各ユニットが高レベル・ディスパッチャとスタックの様々な機能用の複数の低レベルコントローラを含む。ハンドシェーキング制御ユニット１０７は、左側スタック制御ユニット１２２と右側スタック制御ユニット１５２の間の対話を制御する。クリッピング・パラメータおよびライティング・パラメータは、ホスト・コンピュータ１５によってクリッピング／ライティングＲＡＭ１５４に供給される。
【００２９】
形状アクセレレータは、変換、四辺形と三角形の圧縮解除、ライティング（またはシェーディング）、クリッピング、およびランダムに配向し画定された四辺形（クワッド）、三角形およびベクトルの平面式（またはスロープ）計算を実行する。出力は、ピクセル・データにレンダリングするためにフレーム・バッファ基板１４内のスキャン変換器に供給され、かつ、ピクセル毎のテクスチャ・カラー値を生成するためにテクスチャ・マッピング基板１２に供給される。
【００３０】
図３の例では、サイズおよびコストを制限するために右側スタック１３０だけが分割器を含む。右側スタック１３０は分割器を含み、左側スタックは分割器を含まないので、形状アクセレレータの機能性の区分化は、左側スタック１１０が、変換、部分スロープ計算、クリップ・チェック、圧縮解除、およびライティングの事前計算を実行することである。右側スタック１３０は、ライティング、クリッピング、および平面式計算を実行する。動作の基本的な流れは、プリミティブ・データをホスト・コンピュータ１５から入力ＦＩＦＯ１００に入れることである。プリミティブ・データは、頂点ＲＡＭバッファ１０２および１０４の一方に入れられる。左側スタック１１０は、変換、圧縮解除、部分スロープ計算を実行し、その結果をローカル・バス１２９を介してプリミティブＲＡＭバッファ１３２および１３４内に入れる。左側スタック１１０がプリミティブに対してその動作を完了すると、そのコントローラ１２２は、ハンドシェーキング制御ユニット１０７を介して、右側スタック１３０のコントローラ１５２にプリミティブに対する動作を開始するように告知する。次いで、左側スタック１１０は、次のプリミティブに対する作業を開始できる。同時に、右側スタック１３０は、プリミティブＲＡＭバッファ内にあるプリミティブに対して、ライティング、クリッピング（必要な場合）、および平面式計算を実行する。他の実施形態では、左側スタック１１０と右側スタック１３０はどちらも、分割器を含む同一のハードウェアを含む。この構成では、機能性は、各スタックが異なるプリミティブに対して同じ動作を実行するように区分化される。
【００３１】
次に、図３および図４を参照して、本発明の形状アクセレレータ内でクリッピング・プリプロセシングを実行する回路の構造について詳細に説明する。クリップ・コード論理１１２は、シーケンシャル・ディジタル・クリッピング・プリプロセシング回路であり、出力バス１２９を介して左側スタック１１０の出力ポートに動作可能に接続された入力ポートと、クリップ・コード・バス１１３に動作可能に接続された出力ポートとを有する。トリビアル受容出力線１０９とトリビアル拒否出力線１１１は、ハンドシェーキング制御ユニット１０７の入力に供給され、トリビアル拒否出力線１１１は、左側スタック制御ユニット１２２の入力にも供給される。
【００３２】
クリッピング・プリプロセシング回路は、最大クリッピング・エクステント・レジスタ２００、クリッピング頂点座標レジスタ２０２、および最小クリッピング・エクステント・レジスタ２０４を含む。これらはそれぞれ左側スタック１１０のローカル・バス１２９に動作可能に接続された入力ポートを有する。第１の浮動小数点比較器２０６は、頂点座標レジスタ２０２の出力ポートから第２のレジスタ出力バス２０３に動作可能に接続された第１の入力ポートと、最大クリッピング・エクステント・レジスタ２００の出力ポートから第１のレジスタ出力バス２０１に動作可能に接続された第２の入力ポートとを有する。第２の浮動小数点比較器２０８は、第２のレジスタ出力バス２０３に動作可能に接続された第１の入力ポートと、最小クリッピング・エクステント・レジスタ２０４の出力ポートから第３のレジスタ出力バス２０５に動作可能に接続された第２の入力ポートとを有する。
【００３３】
浮動小数点比較器２０６、２０８は、それぞれ受け取った２つの浮動小数点数を比較し、どちらが大きいかを示す信号を提供する。特に、第１の浮動小数点比較器２０６は、頂点座標レジスタ２０２から受け取った値が最大レジスタ２００から受け取った値よりも大きい場合に、最大出力線２１０に論理ハイ信号（２進数１）を提供する。反対に、第２の浮動小数点比較器２０８は、頂点座標レジスタ２０２から受け取った値が最小レジスタ２０４から受け取った値よりも小さい場合に、最小出力線２１２に論理ハイ信号を提供する。
【００３４】
浮動小数点比較器は、２つの３２ビットＩＥＥＥ−７５４標準浮動小数点フォーマット数に対して動作する。このフォーマットでの最上位ビットは、１がその数が負であることを示し、０がその数が正であることを示す符号ビットである。次の８つの最上位ビットは指数部であり、最後の２３ビットは仮数部である。
【００３５】
比較器は、符号付きの値に対して動作するために、追加の回路を有する絶対値比較器として実施される。特に、図５も参照すると、第２の比較器２０８は、頂点座標レジスタ２０２の出力ポートからの第２の出力バス２０３に動作可能に接続された第１の入力ポートを有する絶対値比較器２１３を含む。絶対値比較器２１３は、最小クリッピング・エクステント・レジスタ２０４の出力ポートからの第３の出力バス２０５に動作可能に接続された第２の入力ポートを有する。
【００３６】
絶対値比較器２１３は、まず、その２つの入力ポートで受け取った数をそれらの符号ビットをスワッピングすることによって修正し、次いで第１の出力ＮＤＤ０および第２の出力ＮＣＤ０上で信号を生成する絶対値の比較を行う。第１の出力ＮＤＤ０上の論理ハイ出力は２つの数が等しいことを示し、論理ロー出力はそれらが等しくないことを示す。第１の出力ＮＤＤ０上の論理ロー出力と結合する第２の出力ＮＣＤ０上の論理ハイ出力は、第１の入力ポートからの修正された数が、第２の入力ポートからの修正された数よりも大きいことを示す。２つの出力ＮＤＤ０および出力ＮＣＤ０は、比較器出力調整回路２１４に提供される。
【００３７】
図６も参照すると、比較器出力調整回路２１４は、頂点座標レジスタ２０２からの符号ビット（符号Ａ）に応答する第１の入力と、最小クリッピング・エクステント・レジスタ２０４からの符号ビット（符号Ｂ）に応答する第２の入力と、絶対値比較器２１３の第１の出力ＮＤＤ０の反転出力に応答する第３の入力とを有するＡＮＤゲート２１６を含む。ＡＮＤゲートの出力は、ＮＣＤ０に応答する第１のデータ入力とＮＣＤ０の反転出力に応答する第２のデータ入力とを有するマルチプレクサ２１８の選択入力に動作可能に接続される。マルチプレクサ２１８は、比較器出力調整回路２１４の出力の役目をするデータ出力ＳＮＣＤ０を有する。排他的ＮＯＲゲート２１５は、データ出力ＳＮＣＤ０に動作可能に接続された第１の入力と、絶対値比較器２１３の第１の出力ＮＤＤ０に動作可能に接続された第２の入力とを有する。排他的ＮＯＲゲート２１５の出力は、第２の比較器２０８の最小出力線２１２の役目をする。第１の比較器２０６は、排他的ＮＯＲゲート２１５を含まない点を除いて、第２の比較器と同じである。その代わり、マルチプレクサのデータ出力ＳＮＣＤ０が最大出力２１０として使用される。
【００３８】
再び図３および図４を参照すると、第１の比較器２０６からの最大出力線２１０および第２の比較器２０８からの最小出力線２１２はそれぞれ、一連の各頂点クリップ・コード・シフト・レジスタ２２０、２４４、２４６、２４８のそれぞれの並列入力線に動作可能に接続される。プリプロセシング回路１１２は、２つまたはそれ以上のシフト・レジスタを含み、シフト・レジスタの個数はプリプロセシング回路によって処理される頂点の個数に対応する。この例示的な実施形態では、４つのシフト・レジスタが備えられているが、第２のシフト・レジスタ２４４、第３のシフト・レジスタ２４６、および第４のシフト・レジスタ２４８は構造的に第１のシフト・レジスタ２２０と同じであるので、第１のシフト・レジスタ２２０についてのみ詳細に説明する。
【００３９】
第１の頂点クリップ・コード・シフト・レジスタ２２０は、一連の単一ビット・メモリ・セルを構成するシフト・レジスタ記憶要素を含む。この実施形態は３次元座標空間に対して動作するので、この実施形態には６個のメモリ・セル２３２、２３４、２３６、２３８、２４０、２４２がある。この回路はまた、他の種類の座標空間を使用して動作するように構成できるが、その場合異なる個数のメモリ・セルを使用することになる。
【００４０】
第１の頂点クリップ・コード・シフト・レジスタ２２０は、第１の頂点ロード制御線２２４、第１のセル２３２用の第１の並列入力線２２６、第２のセル２３４用の第２の並列入力線２２８を有する。第１の並列入力線２２６は最小出力線２１２に動作可能に接続され、第２の並列入力線２２８は最大出力線２１０に接続される。頂点ロード制御線２２４は、左側スタック制御ユニット１２２によって駆動される。
【００４１】
メモリ・セル２３２、２３４、２３６、２３８、２４０、２４２は、２つの要素によってそれらの内容をシフトするように接続され、２ビット並列ロードを同時に実行する。特に、頂点ロード制御線２２４上でロード信号を受け取ると、第１のメモリ・セル２３２の内容は第３のメモリ・セル２３６にシフトされ、一方、第２のメモリ・セル２３４の内容は第４のメモリ・セル２３８にシフトされる。同様に、第３のメモリ・セル２３６の内容は第５のメモリ・セル２４０にシフトされ、一方、第４のメモリ・セル２３８の内容は第６のメモリ・セル２４２にシフトされる。同時に、最小出力線２１２上の信号は第１のメモリ・セル内に並列にロードされ、最大出力線２１０上の信号は第２のメモリ・セル内に並列にロードされる。第２のシフト・レジスタ２４４、第３のシフト・レジスタ２４６、および第４のシフト・レジスタ２４８はそれぞれ、それらの別個の頂点ロード制御入力線２４５、２４７、２４９の制御下で同様に独立して動作する。
【００４２】
シフト・レジスタ２２０、２４４、２４６、２４８は、受容／拒否回路２５０の異なる入力に動作可能に接続される並列出力を有する。受容／拒否回路２５０は、使用可能なすべてのシフト・レジスタ内のすべてのビットが０である場合に、トリビアル受容線１０９にトリビアル受容信号をアサートし、すべてのシフト・レジスタ内の同じビットが１にセットされている場合に、トリビアル拒否線１１１にトリビアル拒否信号をアサートする。
【００４３】
図４および図８を参照すると、受容／拒否回路２５０はトリビアル受容回路２５１を含む。トリビアル受容回路２５１は、第１のシフト・レジスタ２２０の並列出力からの６つの信号線に動作可能に接続された６つの入力線を有する第１のＯＲゲート２５２を含む。同様に、第２のＯＲゲート２５４、第３のＯＲゲート２５６、および第４のＯＲゲート２５８はそれぞれ、第２のシフト・レジスタ２４４、第３のシフト・レジスタ２４６および第４のシフト・レジスタ２４８の６つの出力線にそれぞれ動作可能に接続された６つの入力線を有する。第１のＯＲゲート、第２のＯＲゲート、第３のＯＲゲート、および第４のＯＲゲートはそれぞれ、第１のＮＡＮＤゲート２７２、第２のＮＡＮＤゲート２７４、第３のＮＡＮＤゲート２７６、第４のＮＡＮＤゲート２７８の第１の入力線に動作可能に接続される。これらのＮＡＮＤゲートはまた、第１の頂点使用可能線２６２、第２の頂点使用可能線２６４、第３の頂点使用可能線２６６、および第４の頂点使用可能線２６８に動作可能に接続された第２の入力線を有する。４つのＮＡＮＤゲートは、出力ＮＡＮＤゲート２８０の４つの入力のうちの１つの入力に動作可能に接続された出力線を有する。ＮＡＮＤゲートの出力線は、トリビアル受容出力１０９の役目をする。
【００４４】
図４および図９を参照すると、受容／拒否回路２５０はトリビアル拒否回路３５０も含む。この回路は、第１のＮＯＲゲート３５２、第２のＮＯＲゲート３５４、第３のＮＯＲゲート３５６、第４のＮＯＲゲート３５８、第５のＮＯＲゲート３６０、および第６のＮＯＲゲート３６２を含むＮＯＲゲートの第１のバンクを含む。これらのＮＯＲゲートはそれぞれ、第１のシフト・レジスタ２２０の出力線のうちの１つの出力線に動作可能に接続された第１の入力線を有し、またそれぞれ第１の頂点使用可能線２６２の反転出力に動作可能に接続された第２の入力線を有する。同様にして、第１のＮＯＲゲート３６４、第２のＮＯＲゲート３６６、第３のＮＯＲゲート３６８、第４のＮＯＲゲート３７０、第５のＮＯＲゲート３７２、および第６のＮＯＲゲート３７４を含むＮＯＲゲートの第２のバンクは、第２のシフト・レジスタ２４４の出力および第２の頂点使用可能線２６４の反転出力に動作可能に接続される。さらに、ＮＯＲゲート３７６、３７８、３８０、３８２、３８４、３８６の第３のバンクは、第３のシフト・レジスタ２４６の出力および第３の頂点使用可能線２６６の反転出力に動作可能に接続され、ＮＯＲゲート３８８、３９０、３９２、３９４、３９６、３９８の第４のバンクは、第４のシフト・レジスタ２４８の出力線および第４の頂点使用可能線２６８の反転出力に動作可能に接続される。
【００４５】
各バンク内の第１のＮＯＲゲート３５２、３６４、３７６、３８８（すなわちその対応するシフト・レジスタの第１のメモリ・セルの出力線に動作可能に接続された入力線を有するＮＯＲゲート）の出力線は、第１の４入力ＮＯＲゲート４００の入力線のうちの１つの入力線に動作可能に接続される。同様に、各バンクの第２のＮＯＲゲート３５４、３６６、３７８、３９０の出力線は、第２の４入力ＮＯＲゲート４０２の入力線のうちの４つの入力に動作可能に接続される。各バンクの第３のＮＯＲゲート、第４のＮＯＲゲート、および第５のＮＯＲゲートも、第３の４入力ＮＯＲゲート、第４の４入力ＮＯＲゲート、および第５の４入力ＮＯＲゲート（図示せず）に動作可能に接続された出力線を有する。各バンク内の第６のＮＯＲゲート３６２、３７４、３８６、３９８は、第６の４入力ＮＯＲゲート４１０の１つの入力線に動作可能に接続された出力線を有する。第１の４入力ＮＯＲゲート、第２の４入力ＮＯＲゲート、第３の４入力ＮＯＲゲート、第４の４入力ＮＯＲゲート、第５の４入力ＮＯＲゲート、および第６の４入力ＮＯＲゲートの出力はそれぞれ、６入力ＯＲゲート４１２の１つの入力線に動作可能に接続される。この６入力ＯＲゲートの出力は、トリビアル拒否出力線１１１の役目をする。
【００４６】
動作に際して、図３〜１０を参照すると、クリッピング・プリプロセシング回路１１２は、左側スタック１１０からクリップすべきプリミティブの各頂点のクリッピング・エクステントと変換された座標を受け取る。クリッピング・エクステントは、プリミティブの各座標の最大値と最小値を含む。例えば、３次元座標の場合、これらのエクステントは、ｘの最小値ｘmin 、ｘの最大値ｘmax 、ｙの最小値ｙmin 、ｙの最大値ｙmax 、ｚの最小値ｚmin 、およびｚの最大値ｚmax を含む。
【００４７】
左側スタック１１０内のプリミティブの第１の頂点に関して変換動作が終了し、プリミティブの第１の頂点の変換された第１の座標（例えばｘ座標）が得られたらクリッピング・プリプロセシング３００を開始する（ステップ３０２）。クリッピング・プリプロセシングの進行中に、左側スタック１１０が変換動作を終了する。
【００４８】
また、クリッピング・プリプロセシングのおよその開始時に、左側スタック制御ユニット１２２は、プリミティブ内の頂点の数に等しい数のいくつかの頂点使用可能線２６２、２６４、２６６、２６８に使用可能信号を提供する（ステップ３０４）。線セグメントの場合、第１の頂点使用可能信号と第２の頂点使用可能信号をアサートする。三角形の場合、第１の頂点使用可能信号、第２の頂点使用可能信号、および第３の頂点使用可能信号をアサートする。四辺形の場合、４つの頂点使用可能線上の４つの信号すべてをアサートする。この実施形態では、ポイント・プリミティブがサポートされていないが、そのようなプリミティブは、単一の使用可能信号を使用可能にすることによって対処できる。ベクトルの場合は、４つのうち２つの頂点使用可能線上の信号の任意の組合せをアサートできる。回路は、任意の数の頂点を有するプリミティブを処理できるように、任意の数の頂点使用可能線および関連する回路を含むことができる。
【００４９】
パースペクティブが使用可能である場合、次いで左側スタック１１０は、浮動小数点マルチプレクサ１２０を使用して、変換された頂点に関するパースペクティブ係数Ｗによって、プリミティブの第１の頂点の第１の座標に関する最大クリップ・エクステントおよび最小クリップ・エクステントを乗算することによってそれらを修正する（ステップ３０６）。パースペクティブ・モードが使用可能である場合、その側面が一定のデカルト座標を有しない特性を有するビュー体積が切頭角錐になるので、この修正が必要となる。したがって、パースペクティブ・モードでは、最大クリップ・エクステントおよび最小クリップ・エクステントは、プリミティブの各頂点で異なる。
【００５０】
任意選択の修正ステップ３０６の後、プリミティブの第１の頂点の第１の座標（例えばｘ座標）をクリップ比較レジスタ２０２内にロードし、この第１の座標の最小クリップ・エクステントを最小クリップ・エクステント・レジスタ２０４内にロードし、この第１の座標の最大クリップ・エクステントを最大クリップ・エクステント・レジスタ２００内にロードする（ステップ３０８）。第１の浮動小数点比較器２０６および第２の浮動小数点比較器２０８は、これらの値を比較し、第１の比較器２０６が最大フラグ・ビットを生成し、一方、第２の比較器２０８が最小フラグ・ビットを生成する。これらの値が安定したら、左側スタック制御ユニット１２２は、頂点ロード制御線２２４上に信号をアサートすることによって、第１のシフト・レジスタ２２０の第１のセル２３２内に最小フラグ・ビットをロードし、第１のシフト・レジスタ２２０の第２のセル２３４内に最大フラグ・ビットをロードする（ステップ３１０）。頂点の単一の座標に関するこのようなフラグ・ビットの対は「クリップ・サブコード」と呼ばれる。同時に、シフト・レジスタは、２つのセルによってその内容の残りをシフトする。
【００５１】
次に、頂点に関する座標が残っている場合（ステップ３１２の「ＮＯ」ブランチ）、クリップ・エクステントを修正するステップ（ステップ３０６）、クリップ・エクステント内に座標をロードするステップ（ステップ３０８）、およびクリップ・サブコードを生成、ロードおよびシフトするステップ（ステップ３１０）を、第１の頂点の残りの座標について繰り返す。第１の頂点に関するすべてのクリップ・サブコードが生成、記憶されており（ステップ３１２の「ＹＥＳ」ブランチ）、かつプリミティブ内に頂点が残っている場合（ステップ３１６の「ＮＯ」ブランチ）、上述のステップを繰り返して、残りの頂点の各座標に関するサブコードを生成する。
【００５２】
プリミティブ内のすべての頂点に関してサブコードが生成、記憶されている場合（ステップ３１６の「ＹＥＳ」ブランチ）、受容／拒否回路２５０は、それぞれトリビアル受容出力線１０９上およびトリビアル拒否出力線１１１上にトリビアル受容信号およびトリビアル拒否信号を生成する（ステップ３１８）。プリミティブがトリビアル拒否またはトリビアル受容されない場合は、第１のシフト・レジスタ２２０、第２のシフト・レジスタ２４４、第３のシフト・レジスタ２４６、および第４のシフト・レジスタ２４８に記憶されるクリップ・コードは、クリップ・コード・バス１１３によって右側スタック１３０に転送され（ステップ３２２）、プリミティブのプリプロセシングが完了する（ステップ３２４）。頂点がトリビアル拒否かまたはトリビアル受容される場合は、クリップ・コードは転送されない。
【００５３】
シフト・レジスタ内のデータの転送を図７に示す。特に、頂点の最小ｘフラグおよび最大ｘフラグは、まず第１のメモリ・セル２３２内および第２のメモリ・セル２３４内にそれぞれ記憶される。次いでフラグは、それぞれ第３のメモリ・セル２３６および第４のメモリ・セル２３８へ２だけシフトされる。一方、ｙクリップ・コードは、それぞれ第１のメモリ・セル内および第２のメモリ・セル内に挿入される。次に、ｘクリップ・コードは再び、今度は第３のメモリ・セルおよび第４のメモリ・セルから第５のメモリ・セル２４０および第６のメモリ・セル２４２にそれぞれ転送され、ｙクリップ・コードは、それぞれ第１のメモリ・セルおよび第２のメモリ・セルから第３のメモリ・セルおよび第４のメモリ・セルに転送され、ｚクリップ・コードは、第１のメモリ・セルおよび第２のメモリ・セル内にロードされる。
【００５４】
サブコードをこのようにシフトすることによって、各座標に関するクリップ・サブコードを含むクリップ・コード・ワードをシフト・レジスタ内にアセンブルする。座標に関するクリップ・サブコードはすべて１つの大きい組合せ回路内で同時に生成でき、シフト・レジスタは不要になることに留意されたい。この回路はより大きい集積回路面積を必要とするので、この実施形態ではこれは行わない。さらに、残りの頂点に関して変換計算を実行する際に、連続的な方法で左側スタック１１０による変換計算から頂点座標が得られるので、クリッピング・プリプロセッサは、座標に対して同時に動作する必要がない。
【００５５】
トリビアル拒否出力線１１１は、左側スタック制御ユニット１２２の入力に動作可能に接続される。トリビアル拒否信号をアサートすると、プリミティブに関する圧縮解除および部分スロープ計算が、左側スタック制御ユニット１２２によって、例えば左側スタック１１０に対して使用可能入力をアサート解除することによって直ちに停止する。また、この信号をアサートすると、左側スタック制御ユニット１２２が左側スタック１１０からプリミティブＲＡＭバッファ１３２、１３４のうちの一方へ転送されたプリミティブに関するデータを検証するのが防止され、したがって拒否されたプリミティブ頂点データが右側スタック１３０へ転送されるのが効率的に防止される。これにより、左側スタック１１０および右側スタック１３０が、圧縮解除、部分スロープ計算、クリッピング、ライティング、および全く表示されない頂点データに関するその他の計算を実行する手間が省ける。その結果、どちらのスタックもより効率的に動作できる。
【００５６】
トリビアル拒否出力線１１１も、ハンドシェーキング制御ユニット１０７の入力に動作可能に接続される。ハンドシェーキング制御装置は、この線に応答して、トリビアル拒否線の状態を示すトリビアル拒否フラグを、内部レジスタを介して右側スタック制御ユニット１５２に提供する。右側スタック制御ユニット１５２は、そのプリミティブが一連のプリミティブまたはプリミティブの「チャック」のうちの最後の１つである場合にこのフラグを使用して、そのプリミティブに送るパラメータがない場合でも、チャック終端の指示をコンセントレータに送るかどうか判断する。チャック内の最後のプリミティブがクリッピング領域の外側にある場合にこの指示を送ると、コンセントレータがプリミティブ・データの流れと同期したままになる。
【００５７】
クリップ・コード・バス１１３は、右側スタック制御ユニット１５２の入力に直接動作可能に接続される。トリビアル受容線１０９は、ハンドシェーキング制御ユニット１０７の入力に動作可能に接続される。ハンドシェーキング制御ユニット１０７は、この線に応答して、トリビアル受容線の状態を示すトリビアル受容フラグを、内部レジスタを介して右側スタック制御ユニット１５２に提供する。トリビアル受容フラグおよびクリップ・コードは、右側スタックの一部として実施されるクリッピング・プロセッサによって使用される。このクリッピング・プロセッサは、一時記憶用のクリッピング／ライティングＲＡＭ１５４を使用し、I.E.SutherlandおよびG.W.hodgman が「Reentrant Polygon Clippinng 」ＣＡＣＭ、１７（１）、１９７４年１月、３４−３２に記載した方法など、周知のクリッピング方法を適用できる。
【００５８】
右側スタック制御ユニット１５２は、トリビアル受容フラグのアサートされた状態に応答して、クリッピング・プロセッサを使用可能にするのを止める。これは、トリビアル受容フラグのアサートは、プリミティブがクリップ体積内に完全に入ることを示すために行われ、したがってそれに対してクリッピング処理を実行する必要はない。事前受容されたプリミティブに関してクリッピング・プロセッサを使用可能にするのを止めることによって、右側スタック１３０は、他の動作を自由に実行できるようになる。
【００５９】
トリビアル受容出力線１０９上のトリビアル受容信号とトリビアル拒否出力線１１１上のトリビアル拒否信号のどちらにもアサートしない場合、クリッピング・プロセッサは、プリミティブに対してクリッピング動作を実行する。クリップ・コード論理１１２はすべての拒否可能なプリミティブをトリビアル拒否しないので、これらの動作の結果さらに表示されないプリミティブが生じる。クリップ・コード論理１１２がすべての拒否可能なプリミティブをトリビアル拒否しない理由は、図１１に示す３次元クリップ領域４２０を参照すればより容易に理解できよう。まず、すべての頂点が、最小値ｘ座標ｘmin と最大ｘ座標ｘmax の間にｘ座標を有し、最小値ｙ座標ｙmin と最大ｙ座標ｙmax の間にｙ座標を有し、最小値ｚ座標ｚmin と最大ｚ座標ｚmax の間にｚ座標を有するプリミティブについて考える。これらの頂点はすべてクリップ領域内に入るので、プリミティブ全体はクリップ領域内に必ず入る。これは、トリビアル受容状態に対応する。
【００６０】
一方、トリビアル拒否の場合には、すべてのプリミティブの頂点は、クリップ領域の外側の６つの半空間のいずれか１つの半空間内に必ずある。これらの半空間は、頂点のｘ座標がｘmin より下にある空間、ｘ座標がｘmax より上にある空間、ｙ座標がｙmin より下にある空間、ｙ座標がｙmax より上にある空間、ｚ座標がｚmin より下にある空間、ｚ座標がｘmax より上にある空間を含む。プリミティブは、これらの半空間のうちの複数の半空間内にその頂点を有することができるが、まだ全体的にクリッピング領域の外側にある。例えば、三角形プリミティブ４２２は、ｘ座標がｘmax より上にある半空間内に２つの頂点４２４、４２６と、その体積中にない頂点４２８とを有することができるが、ｙ座標がｙmax より上にある半空間内に挿入される。クリッピング・プリプロセッサ１１２は、このプリミティブようなプリミティブを除去せず、スタック１１０、１３０はどちらもそれに対してより多くの処理を実行し、その後右側スタック１３０内のクリッピング・プリプロセッサがそれを表示する必要がないと決定する。しかしながら、結局、多くの場合、クリッピング・プリプロセシングではさらに、処理の速度が大幅に上がり、したがって性能の全体的な改善が得られる。さらに、クリッピング・プリプロセッサはクリップコードを生成するので、クリッピングを実行する場合にクリッピング・プリプロセッサはそれらを再計算する必要がない。クリップコードは、クリッピング・プリプロセッサがどの頂点をクリップするかを決定するのを助ける。
【００６１】
上記の回路はまた、多角形および三角形ストリップを処理するように作成することができる。ポリラインは、一連の頂点によって画定される終端間線の連続で構成されるプリミティブである。ポリラインの頂点を受容するたびに、新しいセグメントがポリライン中に画定され、次いでクリッピング・プリプロセッサを動作させて、このセグメントがトリビアル受容またはトリビアル拒否できるかを判定する。この動作は、新しい頂点に関する座標を受容するたびに、２つのシフト・レジスタを交互に使用することによって行う。一方のシフト・レジスタは、新しい頂点に関するクリップ・コードを受容し、他方のシフト・レジスタには最後の頂点からのクリップ・コードだけが残り、次いで新たに画定されたセグメントに関するトリビアル受容信号およびトリビアル拒否信号がこれらのクリップ・コードから生成される。
【００６２】
三角形ストリップは、一連の頂点によって画定される隣接する三角形の連続で構成されるプリミティブである。第１の三角形が三角形ストリップ内に画定されると、他の頂点は、受容されるたびに、受容された最後の２つの頂点とともに新しい三角形を画定する。これらの頂点は、クリップ・コード・プリプロセッサが２つではなく３つのシフト・レジスタを交互に使用する点を除いて、ポリラインの場合とまったく同様にして処理される。
【００６３】
本明細書で図示説明した回路は単なる例として挙げたものである。例えば、ゲート・レベルに直接に設計され、Ｓｙｎｏｐｓｙｓが市販している論理合成ソフトウェアを使用した大規模カスタム集積回路で、回路を実現することが好ましい。論理合成ソフトウェアは、Ｖｅｒａｌｏｇなどの高水準言語で書かれた回路記述を最適化し、論理ゲートに変換する。５ボルトで動作する１ミクロンＦＥＴを作成するＣＭＯＳプロセス、３．３ボルトで動作する０．６ミクロン描画ゲート長デバイスを作成するＣＭＯＳプロセス、あるいはディジタル回路を実現する任意のその他適切なプロセスを使用して、回路を実現してもよい。論理合成ソフトウェアへの入力は、構造的というよりも機能的なものであるので、論理合成ソフトウェアによって生成される実際の回路は、本明細書で開示したものと異なるものであることもある。
【００６４】
以上本発明の好ましい実施形態について図示説明したが、添付の図面によって規定されているように、本発明の範囲から逸脱することなく、本発明に様々な変更および修正を加えることができることが、当業者には明らかであろう。
なお、本発明による実施態様を列挙すると、概ね以下の通りである。
【００６５】
(1)  頂点データ入力と制御入力とを有し、かつその頂点データ入力からのプリミティブ頂点データに基づきかつその制御入力の制御下で、クリップ領域に対して関してプリミティブをクリップするように構成配置されるクリッピング・プロセッサを含むグラフィックス・アクセレレータで使用するためのグラフィックス処理回路において、クリッピング・プロセッサの頂点データ入力に動作可能に接続された頂点入力データ・パス（１２９）と、頂点入力データ・パスに動作可能に接続された頂点データ入力と、クリッピング・プロセッサの制御入力に動作可能に接続された制御出力（１０９、１１１）とを有するクリッピング・プリプロセッサ回路（１１２）とを備えており、クリッピング・プリプロセッサが、頂点入力データ・パスからのプリミティブ頂点データとクリップ領域の間の関係の評価を行い、この評価に基づいて制御出力に信号をもたらすように構成配置される装置。
【００６６】
(2)  クリッピング・プリプロセッサがｘ座標プリプロセシング回路、ｙ座標プリプロセシング回路、およびｚ座標プリプロセシング回路を含み、かつｘ座標プリプロセシング回路、ｙ座標プリプロセシング回路、およびｚ座標プリプロセシング回路がそれぞれシフト・レジスタ内にメモリ・セルを含みかつメモリ・セルの出力に動作可能に接続された組合せ論理回路を含むことを特徴とする、上記(1) に記載の装置。
【００６７】
(3)  クリッピング・プリプロセッサ回路が、頂点入力データ・パスに動作可能に接続された頂点座標レジスタと、頂点入力データ・パスに動作可能に接続されたウィンドウ・エッジ座標レジスタと、頂点座標レジスタの出力に動作可能に接続された第１の入力とウィンドウ・エッジ座標レジスタの出力に動作可能に接続された第２の入力とを有し、かつ比較出力を有する比較器と、比較出力に動作可能に接続された複数の入力を有するマッチング回路とを含むことを特徴とする、上記(1) に記載の装置。
【００６８】
(4)  クリッピング・プリプロセッサ回路がトリビアル受容出力とトリビアル拒否出力とを有することを特徴とする、上記(1) に記載の装置。
【００６９】
(5)  さらにクリッピング・プリプロセッサとクリッピング・プロセッサの間に動作可能に接続されたクリップ・コード・バスを含むことを特徴とする、上記(1) に記載の装置。
【００７０】
(6)  クリップ領域の境界の外側にある座標だけを有する第１のプリミティブの定義から表示パラメータを生成するステップと、生成ステップと同時に実行される、プリミティブの座標がすべてクリップ領域の境界の外側にあるかどうか判定するステップと、プリミティブの座標がすべてクリップ領域の境界の外側にあると判定ステップが判定した場合に、判定ステップの結果に応答して生成ステップを停止するステップとを含むグラフィックス処理方法。
【００７１】
(7)  さらに、プリミティブの座標がすべてクリップ領域の境界の外側にあると判定ステップが判定した場合に、判定ステップの結果に応答してプリミティブの表示パラメータを第２のグラフィックス・プロセッサ部分に転送することを抑制するステップを含み、さらに、第１のプリミティブと異なりかつまたクリップ領域の境界の外側にある座標だけを有する第３のプリミティブの定義から表示パラメータを生成するステップと、第３のプリミティブの座標がすべてクリップ領域の境界の外側にあると判定しないステップとを含む、生成ステップが第１のグラフィックス・プロセッサ部分によって実行されることを特徴とする、上記(6) に記載の方法。
【００７２】
(8)  さらに、第１のプリミティブと異なりかつクリップ領域の境界の内側にある座標だけを有する第２のプリミティブの定義から表示パラメータを生成するステップと、第２のプリミティブの座標がすべてクリップ領域の境界の内側にあることを判定するステップとを含むことを特徴とする、上記(6) に記載の方法。
【００７３】
(9)  第１の座標の最小値（Ｘmin ）より下にある第１の半空間を定義するステップと、第１の座標の最大値（Ｘmax ）より上にある第２の半空間を定義するステップと、第２の座標の最小値（Ｙmin ）より下にある第３の半空間を定義するステップと、第２の座標の最大値（Ｙmax ）より上にある第４の半空間を定義するステップと、第３の座標の最小値（Ｚmin ）より下にある第５の半空間を定義するステップと、第３の座標の最大値（Ｚmax ）より上にある第６の半空間を定義するステップと、第１のプリミティブを構成する第１の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のうちの１つの半空間の内側にあるかどうか判定するステップと、第１のプリミティブを構成する第１の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のうちの１つの半空間の内側にあると判定ステップが判定した場合に、第１のトリビアル拒否信号を生成するステップとを含むグラフィックス処理方法。
【００７４】
(10)  第１のプリミティブを構成する第１の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のすべての半空間の外側にあるかどうか更に判定するステップと、第１のプリミティブを構成する第１の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のすべての半空間の外側にあると更に判定するステップが判定した場合に、第１のトリビアル受容信号を生成するステップと、  第２のプリミティブを構成する第１と異なる数の第２の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のいずれか１つの半空間の内側にあるかどうか更に判定するステップと、第２のプリミティブを構成する第２の複数の頂点がすべて、第１、第２、第３、第４、第５および第６の半空間のいずれか１つの半空間の内側にあると更に判定するステップが判定した場合に、第２のトリビアル拒否信号を生成するステップとを含むことを特徴とする、上記(9) に記載の方法。
【００７５】
【発明の効果】
以上、記述した本発明のクリッピング・プリプロセシングを有する形状アクセレレータは、クリッピング領域の内側に完全に入るかまたはクリッピング領域の完全に外側にあるプリミティブの計算負担が大幅に軽減できるので、グラフィックス・アクセレレータが所定の時間中により多くのプリミティブを表示できる。さらに、本発明によるクリッピング・プリプロセシングは、比較的小さい回路を使用して実施できので、あまり費用のかからない形状アクセレレータが実施でき、また集積回路上にグラフィックス処理特徴用の余地を残すことができる。さらに、クリッピング・プリプロセシングがクリップ・コードを生成する場合、これらは、全特徴クリッパによって再生成する必要がなく、したがってクリッパの性能がさらに改善できる。
【図面の簡単な説明】
【図１】本発明を組み込むコンピュータ・グラフィックス・システムの第１の実施形態のブロック図である。
【図２】本発明を組み込むコンピュータ・グラフィックス・システムの第２の実施形態のブロック図である。
【図３】図１および図２のグラフィックス・システムに接続して使用する本発明による形状アクセレレータのブロック図である。
【図４】図３の形状アクセレレータの一部をなすクリッピング・プリプロセシング回路のブロック図である。
【図５】図４のクリッピング・プリプロセシング回路用の浮動小数点比較器のブロック図である。
【図６】図５の浮動小数点比較器の比較器出力調整ブロックのブロック図である。
【図７】図４のクリッピング・プリプロセシング回路中の第１のシフト・レジスタの動作を示すデータ・フロー・ダイヤグラムである。
【図８】図４のクリッピング・プリプロセシング回路のトリビアル受容回路の論理図である。
【図９】図４のクリッピング・プリプロセシング回路のトリビアル拒否回路の論理図である。
【図１０】単一のプリミティブ用の図４のクリッピング・プリプロセシング回路の動作を示すフローチャートである。
【図１１】クリップ領域および図３の形状アクセレレータによってレンダリングされる三角形プリミティブを示す図である。
【符号の説明】
１０  フロント・エンド基板１０
１２  テクスチャ・マッピング基板
１４  フレーム・バッファ基板
１６  ５２ビット・バス
１５  ホスト・コンピュータ
１８  ８５ビット・バス
２８  ５５ビット・バス
２９  Ｒ、Ｇ、Ｂライン
３０  ディストリビュータ・チップ
３２Ａ、３２Ｂ、３２Ｃ  ３−Ｄアクセレレータ・チップ
３４  ２−Ｄアクセレレータ・チップ
３６  コンセントレータ・チップ
５０Ａ、５０Ｂ、５０Ｃ、５０Ｄ、５０Ｅ、５０Ｊフレーム・バッファ・コントローラ・チップ
５１Ａ〜Ｊ  ＶＲＡＭチップ
５２Ａ〜Ｄ  ビデオ・フォーマット・チップ
１０９  トリビアル受容出力
１１１  トリビアル拒否出力
１１０  左側スタック
１３０  右側スタック
１１２  クリップ・コード論理（クリッピング・プリプロセッサ回路）
１２２  左側スタック制御ユニット
１２９  頂点入力データ・パス
１５２  右側スタック制御ユニット
【図１】
0003860859.tif 000002
【図２】
0003860859.tif 000003
【図３】
0003860859.tif 000004
【図４】
0003860859.tif 000005
【図５】
0003860859.tif 000006
【図６】
0003860859.tif 000007
【図７】
0003860859.tif 000008
【図８】
0003860859.tif 000009
【図９】
0003860859.tif 000010
【図１０】
0003860859.tif 000011
【図１１】
0003860859.tif 000012