(57)【特許請求の範囲】
【請求項１】
オブジェクトプリミティブを定義するための、頂点データと、関連する属性データと、前記頂点データを示すインデックスデータとを含む、レンダリングされるべきシーンに関するオブジェクトデータを受け取るための手段と、
レンダリングされるべき前記シーンを複数の矩形領域へ更に分割するための手段と、
前記シーン内の各矩形領域に関するオブジェクトデータを組立てるための手段と、
前記シーン内の各矩形領域に関する前記オブジェクトデータを圧縮するための手段と、
前記オブジェクトデータを読み出し、解凍するための手段と、
表示するために、前記オブジェクトデータをシェーディングし、テクスチャリングするための手段と、
を含み、
前記圧縮手段が、各頂点に関する基点を基準にした差分データを得るための手段を含み、表示リストメモリが、前記基点と差分データとを格納し、前記差分データを得るための手段が、前記関連する属性データから基点を決定し且つ各頂点に関して基点を基準にして前記差分データを得、
前記オブジェクトデータを組立てるための手段が、インデックスデータが格納されるインデックスバッファと、頂点データが格納される頂点バッファとを含み、
前記属性が、基点値及び差分値に圧縮された位置データを含み、
前記圧縮されたテクスチャ属性が、浮動小数点値として格納されており、
入ってくるデータに関連付けられたタグ値が、矩形領域と関連付けられた現在のタグ値と一致しない場合には、前記矩形領域内へデータが挿入されることを特徴とする３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項２】
前記頂点バッファの内容を前記圧縮手段へ送るための手段と、前記インデックスバッファの内容と圧縮された頂点データとを前記表示リストメモリへ送るための手段と、を含むことを特徴とする、請求項１に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項３】
前記データが、前記インデックスバッファ内に格納されるデータ量に応じて、前記圧縮手段と前記表示リストに送られることを特徴とする、請求項１に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項４】
前記データが、前記頂点バッファ内に格納されるデータ量に応じて、前記圧縮手段と前記表示リストに送られることを特徴とする、請求項２又は３に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項５】
オブジェクトプリミティブを定義するための、頂点データと、関連する属性データと、前記頂点データを示すインデックスデータとを含む、レンダリングされるべきシーンに関するオブジェクトデータを受け取るための手段と、
レンダリングされるべき前記シーンを複数の矩形領域へ更に分割するための手段と、
前記シーン内の各矩形領域に関するオブジェクトデータを組立てるための手段と、
前記シーン内の各矩形領域に関する前記オブジェクトデータを圧縮するための手段と、
前記オブジェクトデータを読み出し、解凍するための手段と、
表示するために、前記オブジェクトデータをシェーディングし、テクスチャリングするための手段と、
を含み、
前記圧縮手段が、各頂点に関する基点を基準にした差分データを得るための手段を含み、表示リストメモリが、前記基点と差分データとを格納し、前記差分データを得るための手段が、前記関連する属性データから基点を決定し且つ各頂点に関して基点を基準にして前記差分データを得、
前記表示リストメモリが、複数のメモリブロックを含み、前記表示リストメモリ内にデータを格納するための手段が、各矩形領域内の各頂点に関連付けられる制御データを前記メモリブロックの一方端から書き込むための手段と、前記同じ矩形領域のための前記制御データに関連付けられる頂点データを同じ前記メモリブロック内に前記ブロックの他方端から書き込むための手段とを含むことを特徴とする３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項６】
オブジェクトプリミティブを定義するための、頂点データと、関連する属性データと、前記頂点データを示すインデックスデータとを含む、レンダリングされるべきシーンに関するオブジェクトデータを受け取るための手段と、
レンダリングされるべき前記シーンを複数の矩形領域へ更に分割するための手段と、
前記シーン内の各矩形領域に関するオブジェクトデータを組立てるための手段と、
前記シーン内の各矩形領域に関する前記オブジェクトデータを圧縮するための手段と、
前記オブジェクトデータを読み出し、解凍するための手段と、
表示するために、前記オブジェクトデータをシェーディングし、テクスチャリングするための手段と、
を含み、
前記圧縮手段が、各頂点に関する基点を基準にした差分データを得るための手段を含み、表示リストメモリが、前記基点と差分データとを格納し、前記差分データを得るための手段が、前記関連する属性データから基点を決定し且つ各頂点に関して基点を基準にして前記差分データを得、
前記表示リストメモリが、複数のメモリブロックを含み、前記表示リストメモリ内にデータを格納するための手段が、各矩形領域内の各頂点に関連付けられる制御データを前記メモリブロックの一方端から書き込むための手段と、前記同じ矩形領域のための前記制御データに関連付けられる頂点データを同じ前記メモリブロック内に前記ブロックの他方端から書き込むための手段とを含み、
前記メモリブロックがそれぞれ、メモリページを含むことを特徴とする３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項７】
各頂点が、該頂点に関連付けられた複数の画像属性を有し、前記圧縮手段が、前記属性を定義するデータを圧縮する手段を含むことを特徴とする、請求項１に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項８】
前記属性が、テクスチャ属性、頂点位置、色及びフォグ値の少なくとも１つを含むことを特徴とする請求項６又は７に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項９】
前記属性の一部だけが圧縮されていることを特徴とする、請求項７又は１に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項１０】
前記タグを更新するための手段を含むことを特徴とする、請求項１に記載の３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項１１】
オブジェクトプリミティブを定義するための、頂点データと、関連する属性データと、前記頂点データを示すインデックスデータとを含む、レンダリングされるべきシーンに関するオブジェクトデータを受け取るための手段と、
レンダリングされるべき前記シーンを複数の矩形領域へ更に分割するための手段と、
前記シーン内の各矩形領域に関するオブジェクトデータを組立てるための手段と、
前記シーン内の各矩形領域に関する前記オブジェクトデータを圧縮するための手段と、
前記オブジェクトデータを読み出し、解凍するための手段と、
表示するために、前記オブジェクトデータをシェーディングし、テクスチャリングするための手段と、
を含み、
前記圧縮手段が、各頂点に関する基点を基準にした差分データを得るための手段を含み、表示リストメモリが、前記基点と差分データとを格納し、前記差分データを得るための手段が、前記関連する属性データから基点を決定し且つ各頂点に関して基点を基準にして前記差分データを得、
各矩形領域に対して複数のタグ値を関連付けるための手段を含み、
入ってくるデータに関連付けられたタグ値が、矩形領域と関連付けられた現在のタグ値と一致しない場合には、前記矩形領域内へデータが挿入されることを特徴とする３次元コンピュータ・グラフィックス・レンダリングシステム。
【請求項１２】
３次元コンピュータ・グラフィックス画像をレンダリングするための方法であって、
オブジェクトプリミティブを定義するための、頂点データと、関連する属性データと、前記頂点データを示すインデックスデータとを含む、レンダリングされるべきシーンに関するオブジェクトデータを受け取る段階と、
レンダリングされるべき前記シーンを複数の矩形領域へ更に分割する段階と、
前記シーン内の各矩形領域に関するオブジェクトデータを組立てる段階と、
各矩形領域に関する前記オブジェクトデータを圧縮する段階と、
各矩形領域に関する前記圧縮されたオブジェクトデータを、表示リストメモリ内に格納する段階と、前記オブジェクトデータを読み出し、解凍する段階と、
表示するための、前記オブジェクトデータをシェーディングし、テクスチャリングする段階と、を含み、
前記圧縮する段階が、各頂点に関する基点を基準にした差分データを得る段階を含み、
前記格納する段階が、前記基点データ及び差分データを前記表示リストメモリ内に格納する段階を含み、前記関連する属性データから基点を決定し且つ各頂点に関して基点を基準にして前記差分データを得る段階を更に含み、
前記表示リストメモリが、複数のメモリブロックを含み、
前記表示リストメモリ内にデータを格納する前記段階が、
各矩形領域内の各頂点に関連付けられた制御データを、前記表示リストメモリ内のメモリブロックの一方端から書き込む段階と、
同じ前記矩形領域に関する前記制御データに関連付けられた対応する頂点データを、同じ前記メモリブロック内で、前記ブロックの他方端から書き込む段階と、を含むことを特徴とする方法。
【請求項１３】
各矩形領域に関するオブジェクトデータを組立てる前記段階が、インデックスデータをインデックスバッファへ書き込む段階と、頂点データを頂点バッファ内へ書き込む段階と、を含むことを特徴とする、請求項１２に記載の方法。
【請求項１４】
前記インデックスバッファの内容を、圧縮するために送り出す段階と、前記インデックスバッファの内容と圧縮された頂点データとを前記表示リストメモリへ送り出す段階と、を含むことを特徴とする、請求項１３に記載の方法。
【請求項１５】
前記圧縮のために送り出されるデータと、前記表示リストメモリに送り出されるデータとが、前記インデックスバッファ内に格納されるデータ量に応じて送られることを特徴とする、請求項１２に記載の方法。
【請求項１６】
圧縮のため、及び前記表示リストメモリに送り出される前記データが、前記頂点バッファ内に格納されるデータ量に応じて送り出されることを特徴とする、請求項１２又は１５に記載の方法。
【請求項１７】
各頂点が、該頂点に関連付けられた複数の画像属性を有し、前記圧縮段階が、これらの属性を定義するデータを圧縮する段階を含むことを特徴とする、請求項１２に記載の方法。
【請求項１８】
前記属性が、基点値及び差分値に対して圧縮された位置データを含むことを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記属性が、テクスチャ座標、頂点位置、色、フォグ値の少なくとも１つを含むことを特徴とする、請求項１７又は１８に記載の方法。
【請求項２０】
前記属性の一部だけが圧縮されていることを特徴とする、請求項１７、１８又は１９に記載の方法。
【請求項２１】
前記圧縮されたテクスチャ属性が、浮動小数点値として格納されていることを特徴とする、請求項１９に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元（３Ｄ）コンピュータ・グラフィックス・レンダリング・システムに関し、より詳細には、レンダリングされるシーンを複数の矩形領域、すなわちタイルへと更に分割し、その各々を、交差する全てのオブジェクトに関して順番に処理する形式のシステムに関する。
【０００２】
【従来の技術】
図１は、従来技術の３−Ｄレンダリングシステムを示す。
【０００３】
このシステムは、シーン１００に関する三次元記述を有し、コンピュータのモニターのような出力装置上に表示することができる、二次元表現のシーン１０５を生成する。
【０００４】
効率的なオペレーションとするために、このシステムは、二次元表現のシーンをタイルと称される領域へ更に分割する。
【０００５】
三次元シーンにおけるオブジェクトは、タイル・アクセラレータ１０１によって処理され、次に定義データが、表示リスト１０２内に格納される。この表示リストは、シーンをレンダリングするのに必要とされる全ての頂点データと制御データとを含む。この頂点データは、通常頂点の細片として格納される。
【０００６】
シーン空間を含む各タイルに関して、画像合成プロセッサ（ＩＳＰ）１０３は、タイルに対応する表示リストを読み取り、どのシーンの部分が目に見えるかを決定する。この情報は次いで、テクスチャリング及びシェーディングプロセッサ（ＴＳＰ）１０４に伝えられて、レンダリングされる。
【０００７】
更に精緻化するには、タイル領域をマクロタイルへと互いにグループ化することである。シーン全体の表示リストを生成する代わりに、このタイル・アクセラレータは、各マクロタイルに関する表示リストを生成する。これにより、表示リストのメモリを全て消費した場合には、その後マクロタイルをレンダリングすることができ、このマクロタイルに関連付けられた表示リストメモリは、システムによって再生して使用されることができる利点を有する。欠点は、シーン内のオブジェクトが多くのマクロタイルに及んでいる場合には、該オブジェクトは、各マクロタイルの表示リスト内に複製された頂点データを有する可能性があることである。
【０００８】
【発明が解決しようとする課題】
非タイル化三次元図形処理システムのほとんどは、直接モードでレンダリングを行うアーキテクチャを有する。直接モードでレンダリングを行うことは、表示リスト内にシーン全体に関する記述を格納する必要がなく、その代わりに、システムに対してプリミティブが示される場合に、該プリミティブがレンダリングされる。直接モードでレンダリングを行うことは、表示リストに関するメモリを必要としないという利点を有するが、タイル化されたアーキテクチャを使用することによって可能な、例えば遅延テクスチャリング及び半透明ソーティングのような、多くの最適化を妨げる。
【０００９】
強力で、低価格のレンダリングシステムがより普及するにつれて、レンダリングされるシーンの複雑さは増大している。このことは、表示リストが必要とする記憶所要量及び帯域幅要件もまた増大することから、タイル化されたレンダラーに対する問題がある。
【００１０】
【課題を解決するための手段】
本発明の実施形態は、表示リストに関して必要とされるサイズ及びメモリ帯域幅を低減するための方法及び装置を提供し、これによりタイル化されたレンダリングシステムが低価格で実施可能となる。
【００１１】
本発明の特定の実施形態は、スクリーン空間の頂点データのブロックをタイル・アクセラレータ内に集め、該頂点データ間の空間的な関係を利用することによって、データを格納するのに必要な記憶量及び帯域幅量を低減する。これは、基点値のセットを決定し、頂点の属性を基点値を基準にしたデルタ（或いは、差分）値として格納することによってなされる。
【００１２】
また、好ましい実施形態は、表示リスト内にあるインデックス付きプリミティブを簡潔に記述している仕組みを使用し、この仕組みは、参照場所を保存すると同時に、細片のような従来の方法を上回って頂点をシーン内で再利用することができる回数を改善する。
【００１３】
本発明は、添付の請求項に一層正確に示され、その様々な態様において定義されており、ここで参照されたい。
【００１４】
ここで、添付図面を参照しながら、本発明の特定の実施形態を例示的に以下に詳しく説明する。
【００１５】
【発明の実施の形態】
図２は、本発明の実施形態における頂点データの圧縮を用いたタイル・アクセラレータの処理段階及びデータの流れを示す。
【００１６】
入力データ１００は、レンダリングされるシーンの記述を含む。これは、シーンを定義する複数の頂点と、これらの頂点を直線及び三角形のようなプリミティブ・オブジェクトへ組み立てる方法の記述と、これらをレンダリングする方法を記述するステート情報とを含む。このステート情報は、プリミティブ・オブジェクトのラスタライズ、テクスチャリング、及びシェーディングの方法に関する情報を含む。実施形態において、このステート情報は、両方とも業界標準のアプリケーション・プログラミング・インターフェースであるＯｐｅｎＧＬ及びＤｉｒｅｃｔ  Ｘによって仕様が定められるステートを含む。
【００１７】
タイル・アクセラレータ１０１は、入力データ内のレンダリングコマンドのリストに従って頂点を読み取って、処理を行う。
【００１８】
図３は、入力データの可能な構成を示す。レンダリングコマンド３００は、描かれるべき２つの三角形があることを示し、ステート情報は、これらの三角形がどのようにレンダリングされるべきかを定義する。この構成において、アプリケーションは、２種類の三ビットインデックス３０１及び３０２を得て、その各々が、どの頂点３０３がそれぞれの三角形を構成しているかを記述する。
【００１９】
また、三角形の細片或いは扇形を記述するインデックスのリストのような、頂点のリストからプリミティブがどのように組立てられるべきかを記述するための別の構成も可能である。また、四分円及び直線のような、別の型式のプリミティブに関する記述は、より少ない或いは追加的なインデックス値を使用することによって可能である。特定の構成においては、インデックスのリストを、システムが内部的に包含し、発生させることができる。
【００２０】
インデックスを使用することにより、細片を使用して可能である場合よりも極めて多くのシーン内のプリミティブが、個々の頂点を参照することが可能となることが分かる。以下に示されるように、このシステムは、インデックスを表示リスト内に小さく効率的に格納できるようにする。好ましい実施形態において、インデックスのセットは、プリミティブがどのように形成されるかを記述するために、システム全体にわたって使用される。
【００２１】
レンダリングコマンドによって命令されると、図２において、このシステムは頂点を読み取り、それらを、クリップ空間座標へ変換するための変換プロセッサ２００へ渡す。これにより、固定関数変換及び照明ロジックとして、或いは、頂点に対して実際に適用されたものである作業順序を利用するプログラム可能なロジックとして実行することができる。この実施形態において、変換プロセスはプログラム可能であり、プリミティブ・オブジェクトへの頂点ブレンディングと高次曲面のテセレーションとを含む。幾つかの状況によっては、レンダリングシステムへ提供される入力データは、既にスクリーン空間内にあるものとすることができ、この場合、このデータを変換する必要がない。幾つかの実施形態においては、頂点データがレンダリングシステムに提供される前に常に変換を実行することができ、変換機能は全く必要でないものとすることができる。
【００２２】
クリッピング及びカリング２０１は、変換された頂点及びインデックス情報を取り、プリミティブが前面又は背面に面しているかに基づいて、前部、後部或いは任意のクリップ面に対するクリッピングと、カリングとをプリミティブに対して実行する。この実施形態においては、スクリーン空間への頂点の最終変換は、ここで実行される。
【００２３】
タイル化ユニット２０２は、このクリッピング及びカリングプロセスからインデックスと頂点とを受け取る。この変換され、クリップリングされた頂点は、頂点バッファ２０３内に置かれ、インデックスは、インデックスバッファ２０４内に置かれる。このタイル化プロセスは次いで、このインデックスを使用して対応する頂点のスクリーン座標をバッファから取り出して、データがどのタイルをバッファ効果内に含んだかを決定する。
【００２４】
実施形態において、頂点バッファは１６の頂点まで、インデックスバッファは９６のインデックスまで格納することができる。これらのバッファが満杯の場合、頂点バッファの内容は圧縮プロセス２０７へ送られ、インデックスは、表示リストの制御部分２０５へ送られる。図４は、頂点及びインデックスをこれらのバッファへ追加するために使用されるプロセスを示す。
【００２５】
図４のプロセスは、５００において、次のプリミティブに関する新規のインデックスを受け取り、５０１で、この新規のインデックスがインデックスバッファに適合するか否かを決定する。これらが適合しない場合には、ステップ５０２において、インデックスバッファの内容は表示リストへフラッシュされ、頂点バッファの内容は圧縮ユニット２０７へフラッシュされる。このプロセスは次に、新規のインデックスがインデックスバッファに適合する場合に、ステップ５０１から直接同様に到達できるステップ５０３に移動する。この段階では、この新規のインデックスが、インデックスバッファの内容と比較され、この新規のインデックスによって参照されるどの頂点が、現在の頂点バッファ内に存在しないかに関して決定される。この後、５０３において決定された新規の頂点が、頂点バッファに適合するか否かに関して、５０４で決定される。これら新規の頂点が適合しない場合には、ステップ５０５において、インデックスバッファの内容は表示リストへフラッシュされ、頂点バッファの内容は圧縮ユニット２０７へフラッシュされる。このプロセスはその後、また同様にこの新規の頂点が、頂点バッファに適合しない場合にステップ５０４から移動するステップ５０６へ移り、次に新規のインデックスがインデックスバッファに追加される。このプロセスは、新規の頂点が取り出されて頂点バッファへ追加されるステップ５０７で完了する。
【００２６】
頂点バッファ内の各頂点は、関連する多くの属性を有することができる。好ましい実施形態において、各頂点は、４つの位置属性（Ｘ、Ｙ、Ｚ、Ｗ）、ベース及びオフセット色と称される２つのグループの色属性（Ｒ、Ｇ、Ｂ、Ａ）、８つのグループであるテクスチャ座標（Ｕ、Ｖ、Ｓ、Ｔ）、及びフォグ値とからなる、４５のＩＥＥＥ浮動小数点規格の属性値を有する。図５は、頂点バッファの編成を示す。
【００２７】
頂点位置４００は、頂点のスクリーン空間座標を示す。このデータは、シーンをラスタライズするのに必要とされ、オブジェクトの視認性を決定する。ベース色及びオフセット色４０１と、テクスチャ座標４０２と、フォグ値４０３とを含む残りのデータは、テクスチャリング及びシェーディングの間に使用される。
【００２８】
このシステムは、Ｚが目から頂点によって表される点までの距離を表すように、或いは、Ｚが前平面からの距離であるように、構成されることができる点に留意されたい。
【００２９】
タイル化プロセスの間、プリミティブは、該プリミティブが完全に画面から外れており、或いはピクセルが抽出されるようになっている点をどこもカバーしないので、カリングを行うことができる。プリミティブをカリングした後、このタイル化プロセスは、残りのプリミティブのインデックスを調べ、どの頂点を更に参照するかを決定する。この情報は、マスクの形で圧縮プロセスへ前送りされる。マクロタイル化が使用される場合には、この情報を頂点バッファ効果の内容である各マクロタイル用に、マクロタイル基準相当で圧縮モジュールへ渡すことができることに留意されたい。
【００３０】
頂点バッファ内に格納可能な頂点数の限界、又はタイル化においてバッファリング可能なインデックス数の限界、或いは、プリミティブの最後の頂点、又はシーンの最後に至った場合には、頂点バッファの内容はフラッシュされて、圧縮プロセスへ送られ、プリミティブを記述するインデックスが、表示リストの制御部分２０５に書き込まれる。
【００３１】
ステート情報は、タイル化プロセスによって、この表示リストの制御部分内に置かれる。好ましい実施形態において、システムに対する入力データのステート情報には、１から６３までのタグが付けられる。タイル化プロセスは、現在のタグと、各タイルに書き込まれた最終ステートのタグとを記録する。プリミティブが特定のタイルをもたらすと決定される場合には、該タイルに書き込まれた最終タグは、現在のタグと対比される。番号が一致しない場合には、このステート情報は、該タイルの制御データへ挿入され、該タイルに関する最終タグが更新される。各フレームの開始時、又は６３のタグがシステムへ送られた後、各タイルに書き込まれた最終タグの記録はクリアされてゼロになる。
【００３２】
図６は、表示リスト編成を示す。表示リスト内の各タイルは、制御データの自己ストリームを有する。領域アレー７０６は、各タイルに関する制御データの先頭に対するポインタを保持する。
【００３３】
制御データ及び頂点データを含む表示リストの部分は、典型的にはメモリページと同じ大きさであるメモリブロック７００へ分割される。タイル化プロセスの間、タイル毎の制御データ７０６は、メモリブロック内の昇順アドレスへ書き込まれ、頂点データのブロック７０３は、降順メモリアドレス内へ書き込まれる。
メモリブロック内の全アドレススペースが使用された場合には、新しいメモリブロックが割り当てられる。このようにして、頂点データが、参照する制御データと同一のメモリブロック内へ格納されることができるので、参照する場所が改善される。
【００３４】
タイル化プロセスの間、メモリアレーは、各タイルに関する制御データが付加されるべきメモリブロックの、表示リスト内の場所を記録するために使用される。マクロタイル化の場合には、マクロタイル毎に埋められている一つのメモリブロックがある。
【００３５】
制御データは、ステート情報７０１と、頂点ブロックポインタ７０２と、インデックス７０４と、ストリームポインタ７０５とを含む。
【００３６】
実施形態において、ＩＳＰによって必要とされるだけであるステート情報は、制御データ内へ直接格納される。ＴＳＰによって必要とされるステート情報は、一旦表示リスト内へ書き込まれ、該ステート情報に対する参照は、制御データ内に置かれる。
【００３７】
ＴＳＰステート情報のために必要とされる表示リストの記憶量を減少させるため、該ＴＳＰステート情報は、３つの部分に分割される。即ち、多数のオブジェクト全体にわたって共有されるオブジェクトステートと、通常は頻繁に変化するテクスチャステートと、概して大きいが、多くのオブジェクト全体にわたって共有されるブレンディングステートである。このようにして、テクスチャステートは、その都度大きなブレンディングステートを複製する必要無しに頻度を変えることができる。
【００３８】
頂点ブロックポインタは、プリミティブを描くために引き続き使用されることになる頂点データのブロックを識別する。好ましい実施形態において、これは描かれるプリミティブの型式に関するバッファからの記述を含む。これは、線、点、塗りつぶされた三角形、及び輪郭だけの三角形を含む。
【００３９】
表示リストの記憶量を減少させるため、制御データ内へ書き込まれるインデックスは、ゼロと頂点バッファ内に格納された頂点数との間の範囲内で、連想記憶を使用してマッピングされる。実施形態において、制御データ内に書き込まれるインデックスは、４ビット値である。
【００４０】
タイル用の制御データは、連続的なメモリアドレスの形でメモリブロックへ書き込まれる。各メモリブロックは、複数のタイル用の制御データを含むことができ、タイル用の制御データは、複数のメモリブロックにまたがることができる。
各一連の制御データの最後において、このタイル化プロセスは、表示リスト内の、制御データが連続するアドレスを識別するため、或いは、タイル用の制御データの最終を示すためのいずれの目的としても、ストリームポインタを挿入する。
【００４１】
図２における圧縮ユニット２０７は、頂点バッファ内に格納される頂点の属性を調べ、該頂点の記憶装置及びメモリ帯域幅要件を低減させるために、該頂点の間の空間的な関係を利用することを試みる。実施形態において、属性のブロックは、該ブロックを基点値に対するデルタ値すなわち差分値として格納することによって圧縮される。ブロック内の全頂点に対する基点値及びデルタ値は、表示リスト内の頂点データへ格納される。
【００４２】
図７は、頂点属性を圧縮するプロセスを示す。このプロセスは、圧縮されるべき各頂点用の各属性に対して実行される。この結果は、各セットの属性が、デルタ値と基点値とのセットとして圧縮形式の形で書き出されるか、或いは、３２ビットＩＥＥＥ浮動小数点値（Ｒ、Ｇ、Ｂ及びＡ属性を除く全属性に対して）と８ビット整数値（Ｒ、Ｇ、Ｂ及びＡ属性に対して）とのセットとして、生の「非圧縮」形式の形で書き出されるかのいずれかである。タイル・アクセラレータは、可能な属性の部分集合のみを処理するように構成されることができる点に留意されたい。また、実施形態において、フォグ値は、圧縮されないが、しかしながら、他の属性に対するのと同様に処理することもできる。
【００４３】
６００において、どの属性が処理されるべきかを示す、タイル化からのマスク・ビットのセットと共に、頂点バッファから属性のセットを受け取る。
【００４４】
６０１において、対応するマスク・ビットを有さない属性は、これ以降の処理から切り捨てられる。このシステムの幾つかの実施形態において、このマスクは使用されず、この場合、全ての属性が常に処理される。
【００４５】
６０２において、属性値は、特定量の小数精度に低減され、それはスナッピングと称される。保持される精度量は、属性の型式及び、圧縮プロセスがどのように構成されてきたかによって異なる。該実施形態に関して、表１は、切捨てられる属性と、保存される小数ビット又は仮数ビット数とを示す。
【表１】
表１
0004564718.tif 000002
【００４６】
スクリーン空間内の位置は、通常は整数値座標で抽出され、変換の間に精度が低下するので、Ｘ、Ｙ用に保存される小数ビットの数を比較的小さいものとすることができる。Ｚに人為的に影響を与えないように、Ｚを十分な精度に維持する必要がある。
【００４７】
テクスチャ座標に関しては、保存される小数ビット数は、設定可能である点に留意されたい。圧縮は通常、ｌｏｇ２（ｄｉｍ）＋８の小数ビットを保持するように設定される。ここで、ｄｉｍは、その属性と関連するテクスチャ・マップのテクセルにおける最大寸法であり、ｌｏｇ２は、２を底とする対数である。保存される小数ビット数は、精度を犠牲にして圧縮比を大きくする目的で低減することができる。
【００４８】
実施形態において、０と１．０との間の、浮動小数点の色値は、符号なしの８ビット整数値に変換され、２５５又は２５６と乗算されて、保持される。
【００４９】
圧縮プロセスは、特定の属性の圧縮を無効とするように設定することができる。これにより、属性をそのままの形式で保存するように強制するので、スナッピングは何も実行されない。
【００５０】
６０３において、スナッピングされた属性セットの最小値と最大値とが決定される。
【００５１】
６０４において、この最小値は、基点値として選択される。
【００５２】
テクスチャ・マップは、小数部分のみ、時にはテクスチャ座標の奇数／偶数値が有効であるように抽出されることが多い。このようにして使用されるテクスチャ座標に対しては、圧縮プロセスは、基点値の最有効ビットを切り捨てるように設定することができ、これは、１又は２の倍数を加算或いは減算することと等価であり、従って、該最有効ビットをゼロに近づけることができる。このようにしてテクスチャ座標基点値の大きさを低減することにより、テクスチャ座標基点に必要とされる記憶量を低減することができる。
【００５３】
マクロタイル化が実行されている場合、Ｘ及びＹ属性は、両属性から減算されるマクロタイルの基点に最も近い場所にマクロタイルコーナを有することができる。
【００５４】
幾つかの属性は、圧縮形式で表すことができる基点値の大きさに関して制限を有することができる。好ましい実施形態において、テクスチャ座標基点値は、−２16と２16との間の値に制限され、Ｚ、Ｗ及びＴ基点値は、正数に制限される。
【００５５】
６０５において、圧縮プロセスは、基点値を表すことができるかどうかを決定する。テクスチャ座標基点値が、表示可能な範囲の外にある場合には、属性は圧縮されずに、属性の「生」の３２ビットＩＥＥＥ形式浮動値が、６１１において表示リスト内へ格納される。
【００５６】
圧縮メモリ形式の符号化及び復号化を簡単にするため、属性を生の形式で格納するように決定することはまた、関連する属性を生の形式で格納することを強制することができる。例えば、圧縮プロセスが、Ｘ、Ｙ又はＺの何れかを生の形式で格納することを決定する場合、セット内の全ての属性を生の形式で格納することができる。同様に、テクスチャ座標の各グループに対して、Ｕ、Ｖ、Ｓ又はＴの何かを生の形式で格納する場合、該グループに対する全てのテクスチャ座標の属性も、生の形式で格納できる。
【００５７】
属性のセットが生の形式で格納される場合には、基点値は使用されない点に留意されたい。
【００５８】
６０６において、各属性の最大デルタ値のすなわち差分値は、最大値から最小値を減算することによって計算される。
【００５９】
６０７において、各属性に対する最大デルタ値の大きさが調べられ、該デルタ値が、圧縮形式で表されることができる最大値を超えるか否かを決定する。
【００６０】
好ましい実施形態において、Ｘ、Ｙ、Ｕ、Ｖ及びＳ属性全てに対する圧縮形式のデルタ値は、固定小数点のデルタ値として格納される。表２は、圧縮形式ではデルタを表すことができない大きさを示す。
【表２】
表２
0004564718.tif 000003
【００６１】
色デルタ値Ｒ、Ｇ、Ｂ及びＡは、０から２５５までの範囲にある整数量である。好ましい実施形態において、色デルタ値のグループは、単一の１６ビット・ブロック内に格納される。このＡ属性が全て２５５とは限らない場合には、Ｒ、Ｇ、Ｂ及びＡデルタ値を表すことができない大きさは、２4である。Ａ属性が全て２５５である場合には、Ｒ及びＢに対する値は２5であり、Ｇに対しては２6である。
【００６２】
Ｚ、Ｗ及びＴ属性は、浮動小数点値として格納される。デルタ値は、基点の指数に対する仮数値として格納される。デルタ値内に保存される仮数ビット数は、スナッピング時に使用される数と同一である。基点は最小値であるので、この指数に対する仮数値を格納することは、全ての可能な仮数精度を保存することである点に留意されたい。
【００６３】
６０８において、最大デルタ値の大きさは、圧縮形式で格納されるように、属性デルタのサイズを決定するのに使用される。好ましい実施形態において、各セット内の全ての属性に対するこの圧縮形式は、同様のデルタ・サイズを有し、Ｘ、Ｙ、Ｚ、Ｗ、Ｕ、Ｖ、Ｓ及びＴに対しては０、８又は１６ビット、色のグループに対しては１６ビットとすることができる。これは、ブロック内の各頂点が同一サイズであることを意味する点に留意されたい。
【００６４】
６０９において、各属性に対するデルタ値は、各属性の値から基点値を減算することによって計算される。保存されるビット数は、上述の説明の通りである。
【００６５】
６１０において、属性のセットは、デルタ値及び基点値のセットとして圧縮形式で表示リスト内へ書き込まれる。
【００６６】
６１１において、属性のセットは、３２ビットＩＥＥＥ浮動値のセットとして生の形式で表示リストへ書き込まれる。
【００６７】
図８は、表示リストメモリ内の各頂点データブロックに対する頂点データを、圧縮プロセスがどのように編成しているかを示す。
【００６８】
頂点データの最初の部分は、頂点形式７００である。これは、頂点データ形式の一部を記述している。好ましい実施形態において、これは即ち、Ｘ、Ｙ及びＺ属性が、生の形式又は圧縮形式のいずれで格納されているかを示すフラグと；圧縮形式のデルタＸ７０４、デルタＹ７０５及びデルタＺ７０６が、８ビットデルタ値又は１６ビットデルタ値のいずれであるかを示す３つのフィールドと；Ｗ基点７０７、ベース色基点７０８、オフセット色基点７０９が存在するか否かを示す３つのフラグと；存在するテクスチャ座標形式７１０の数を示すフィールドと；Ｗデルタ７１５値が、０、８、又は１６ビット・デルタ値のいずれか、或いは３２ビットの生の値であるかを示すフィールドと；ベース・デルタ７１６及びオフセット・デルタ７１７が、０、８、又は１６ビット・デルタ値のいずれか、或いは３２ビットの生の値であるかを示す２つのフィールドと；フォグ７１９値が存在するか否かを示すフラグとを含む。
【００６９】
頂点データの第２の部分７５０は、頂点に対する位置情報を含む。
【００７０】
Ｘ、Ｙ及びＺ属性が圧縮形式で格納されている場合、この頂点形式の後には、６０４で決定されたように、Ｘ基点７０１、Ｙ基点７０２及びＺ基点７０３の値が続く。基点値に続いて、この頂点データは次に、６０９で決定されたように、ブロック内の全ての頂点に対する、Ｘデルタ値、Ｙデルタ値及びＺデルタ値を含む。
【００７１】
Ｘ、Ｙ及びＺ属性が生の形式である場合には、Ｘ基点、Ｙ基点及びＺ基点の値は使用されず、頂点形式の後にはブロック内の全ての頂点に対する生の形式のＸ、Ｙ及びＺ属性値が続く。幾つかの実施形態において、Ｘ基点、Ｙ基点及びＺ基点は、常時存在するものとすることができる。
【００７２】
頂点データの第３の部分７５１は、頂点のテクスチャリング及びシェーディングに必要なデータを含む。幾つかの実施形態において、頂点がテクスチャリング又はシェーディングを必要としない場合には、該第３の部分は存在しないものとすることができる。
【００７３】
６０４で決定されたように、Ｗ基点７０７、ベース色基点７０８、オフセット色基点７０９は、Ｗに対する基点値と、ベース色及びオフセット色に対するＲ、Ｇ、Ｂ及びＡ基点値とを含む。これら基点値は、頂点形式内の対応するフラグが設定されている場合にだけ存在する。
【００７４】
ゼロ又はそれ以上のテクスチャ座標形式が存在してもよい。各々は、Ｕ、Ｖ、Ｓ及びＴ属性のグループに対する形式を記述する。好ましい実施形態において、これは、このグループに対するＵ、Ｖ及びＳ属性が、生の形式か又は圧縮形式のいずれで格納されるかを示すフラグと；このグループに対するＵデルタ値、Ｖデルタ値及びＳデルタ値が、８ビット又は１６ビットのいずれであるかを示す３つのフィールドと；Ｓ及びＴ属性が存在するか否かを示す２つのフラグと；Ｓデルタ値及びＴデルタ値が、８ビット又は１６ビットであるかを示す２つのフィールドとを含む。
【００７５】
各テクスチャ座標形式の後には、６０４で決定されたように、Ｕ基点値７１１、Ｖ基点値７１２、Ｓ基点値７１３及びＴ基点値７１４が続く。好ましい実施形態において、このＵ基点値、Ｖ基点値及びＳ基点値は、１つの符号ビットと、４つの指数ビットと、１１の仮数ビットとを有する１６ビットの浮動小数点数として格納され、Ｔ基点は、３２ビットＩＥＥＥ形式の浮動小数点数として格納される。
【００７６】
このテクスチャ座標形式並びにＵ基点、Ｖ基点、Ｓ基点及びＴ基点データの後に、残りの属性に対する頂点毎のデータが続く。これは、Ｗデルタ７１５、ベース色デルタ７１６、オフセット色デルタ７１７、フォグ７１８を含み、またテクスチャ座標属性の各グループに対しては、Ｕデルタ７１９、Ｖデルタ７２０、Ｓデルタ７２１及びＴデルタ７２２が存在する。幾つかの実施形態において、これらの値は、頂点形式又はレイヤ形式内の対応するビットが設定されている場合にのみ存在する。
【００７７】
頂点位置データは、ＩＳＰがタイル毎の制御データを表示リストから取り出すと解凍される。図９は、シーンの各タイルに対して実行されるプロセスを示す。
制御ストリームの取り出しを開始するため、制御ストリームデータのポインタは、領域アレー内に格納されているアドレスから、制御ストリームデータの開始点に初期設定される。９００において、制御ストリームのポインタによって示されたアイテムが読み込まれ、該ポインタは、増分して次のアイテムを示す。９０１において、読み込まれたアイテムは、制御ストリームが最後に至ったかどうかを決定するために調べられる。最後に至った場合には、このタイルに対するＩＳＰデータ取り出しは完了し、シーンの次のタイルが処理されなければならないか、又はシーンのレンダリングが完了であるかのいずれかである。ストリームが最後に至っていない場合には、続いて９０２において、該アイテムがストリームポインタであるか否かを決定するために調べられる。ストリームポインタである場合には、続いて９０３において、この制御ストリームデータのポインタは、示されたアドレスに更新され、制御はステップ９０１に戻る。該アイテムがストリームポインタではない場合には、９０４において調べられて、ステートであるか否かが決定される。ステートである場合には、該ステートデータは、９０５において記録され、制御はステップ９０１へ戻る。該アイテムがステートではない場合には、９０６において調べられて、頂点ブロックポインタであるか否かが決定される。頂点ブロックである場合、続いて基点データが、９０７において頂点ブロックから読み込まれ、制御はステップ９０１へ戻る。該アイテムが頂点ブロックポインタでない場合には、該アイテムはインデックスでなければならない。この場合、該インデックスに対応するデルタ値は、頂点ブロックから取り出される。頂点の属性は、基点値に対してデルタ値を加算することによって再構成される。
【００７８】
頂点を解凍するために必要なデータは、この頂点に対する基点値とデルタ値とからなる点に留意されたい。このようにして、ブロック内にある他の全ての頂点を形成するデータを取り出す必要も無く、単一の頂点を取り出すことができる。
【００７９】
実施形態において、Ｚ、Ｗ及びＴ基点値は、正数であるように制限される。圧縮プロセスに関する別の実施形態において、Ｚ、Ｗ及びＴ属性のセットの符号が記録され、圧縮プロセスは、上述のように、属性の絶対値に対して実行される。
これら属性の各々に対して、圧縮形式が選択される場合には、元の属性の符号を含む追加のビットが、頂点データ内の各属性デルタ値と共に記録される。これにより、圧縮された浮動小数点値が、該浮動小数点値の符号を維持することが可能になる点に留意されたい。生の形式が選択される場合には、頂点データ内へ書き込まれるこの値は、元の符号を含む。
【図面の簡単な説明】
【図１】上述の従来技術のレンダリングシステムである。
【図２】本発明を具現化するタイル・アクセラレータのブロック図である。
【図３】図３の実施形態内部の入力データ編成を示す。
【図４】本発明の実施形態におけるタイル化によるインデックス処理のフロー図を示す。
【図５】図２のタイル・アクセラレータ内の頂点バッファ編成の構造を示す。
【図６】本発明実施形態における表示リストの編成を概略的に示す。
【図７】属性がどのように圧縮されるかを示すフロー図である。
【図８】頂点編成の更に詳細な図である。
【図９】頂点データの読み出し及び解凍に関するフロー図である。
【符号の説明】
１００  入力データ
２００  変換
２０１  クリッピング及びカリング
２０２  タイル化
２０３  頂点バッファ
２０４  インデックスバッファ
２０５  制御
２０７  圧縮
２０８  頂点データ
【図１】
0004564718.tif 000004
【図２】
0004564718.tif 000005
【図３】
0004564718.tif 000006
【図４】
0004564718.tif 000007
【図５】
0004564718.tif 000008
【図６】
0004564718.tif 000009
【図７】
0004564718.tif 000010
【図８】
0004564718.tif 000011
【図９】
0004564718.tif 000012