JP4448210B2 - 3次元画像レンダリング装置及び方法 - Google Patents
3次元画像レンダリング装置及び方法 Download PDFInfo
- Publication number
- JP4448210B2 JP4448210B2 JP21803599A JP21803599A JP4448210B2 JP 4448210 B2 JP4448210 B2 JP 4448210B2 JP 21803599 A JP21803599 A JP 21803599A JP 21803599 A JP21803599 A JP 21803599A JP 4448210 B2 JP4448210 B2 JP 4448210B2
- Authority
- JP
- Japan
- Prior art keywords
- pattern data
- texture
- data
- tile
- rendering
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、三次元図形データに応じて画像をレンダリングする方法および装置に関し、特に、データ転送速度が制限されたネットワークなどの環境において三次元図形データに応じて画像をレンダリングする方法および装置に関する。
【0002】
【従来の技術】
パーソナル・コンピュータと、テレビ・ゲームなどの図形処理装置の処理能力の向上により、三次元コンピュータ・グラフィックス(三次元画像)が次第に普及してきている。三次元画像を含むコンテンツを送るために、インターネットが次第に利用されるようになっている。家庭用パーソナル・コンピュータ(PC)のユーザは、インターネットから三次元図形データをダウンロードし、ブラウザを利用してコンテンツをレンダリングし、表示し、対話することができる。
【0003】
三次元画像のレンダリング技術は、長期間にわたって開発されてきた。最新の技術は、家庭用PCで使用されているグラフィックス・アダプタに差し込むことができる拡張ハードウェアで実施されてきた。PCとグラフィックス・ハードウェアの性能を高めることにより、複雑な画像をレンダリングすることができる。しかしながら、三次元図形データのソースがデータ転送速度の制限されたネットワークであるときは、画像データによって表わされる画像が複雑だと三次元図形データのダウンロードに長い時間がかかる。インターネットは、このようなネットワークの一例である。ネットワークに接続されたクライアント・コンピュータ上で動作する既知のブラウザ・プログラムは、サーバから三次元図形データを実質上すべてダウンロードしてからでないと、三次元図形データに応じた画像を表示するのに必要な図形レンダリング計算を実行し始めることができない。その結果、ユーザは、画像が表示し始めるまでにローディング時間の大部分を待たなければならない。従来の三次元図形レンダリングプログラムの処理構造では、そのようなプログラムが画像を表示し始めるまでに長い遅延が生じていた。
【0004】
三次元画像では、1つまたは複数の三次元オブジェクトが占める三次元空間が定義される。また、三次元空間内の各オブジェクトの基準点の位置も定義される。各オブジェクトの形は、オブジェクトの表面を覆う1組のポリゴンで定義される。たとえば、立方体は、それぞれ立方体の面の1つと一致する6つの正方形ポリゴン(正方形)で定義することができる。それぞれのポリゴンに関して、サイズ、形および座標が定義される。さらに、色と反射率を定義することもできる。しかしながら、オブジェクトの表面のすべてまたは一部分がパターン化されている場合は、面を表すポリゴンを多数の副ポリゴンに分割して、それらの副ポリゴンに異なる色と反射率を割り当てることによってパターンを表すことができるようにしなければならない。これにより、オブジェクトを表わすのに必要なデータの量が事実上増える。
【0005】
したがって、オブジェクトの面を基本パターニング以上にレンダリングする場合は、面の外観をテクスチャを利用して定義することが好ましい。テクスチャは、基本ビットマップから複雑な画像まで任意の複雑さのパターンを表す1組のデータである。この1組のデータは、たとえばパターンを定義する画像マップ・データを含む。外観がテクスチャによって定義されたオブジェクトの面の一部分を表すポリゴンは、テクスチャを使ってタイル表示される。テクスチャを使用すると、複雑な面の外観を持つオブジェクトを、多数のポリゴンを使って面を表現するのに必要なデータよりも少ないデータで表現することができる。
【0006】
三次元オブジェクトが占める三次元空間が、コンピュータ・モニタ画面などの二次元画面上の画像として表示されるときは、まず、視点が、ユーザによって選択されるかまたは画像データによって定義される。また、1つまたは複数の光源を定義したり選択したりすることができる。視点と三次元空間の間にあるレンダリング・スクリーンと呼ばれる仮想平面も定義される。レンダリング・スクリーンは、画像を表示するために使用される画素数に対応することが好ましい配列の画素(ピクセル)に分割される。たとえば、画像をNTSC方式のTVまたはVGAコンピュータ表示装置の画面に表示させる場合は、レンダリング・スクリーンを640×480の画素に分割することが好ましい。次に、レンダリングプログラムは、レンダリング・スクリーンを構成する各画素の色値を計算する。各画素の色値は、通常、赤色値、緑色値および青色値を含む。一方、輝度や色差などの様々な色値が使用されることがある。次に、画素の色値に応じて画像が表示される。これは、たとえば、色値を三次元画像拡張ハードウェアからコンピュータのグラフィックス・アダプタのビデオ・メモリに転送することによって行うことができる。
【0007】
いわゆるにZバッファを使用する従来の三次元図形レンダリングプログラムは、次のように動作することができる。
1.ローディング段階:ネットワークを介したサーバまたはローカル・ファイルから1組の完全な画像データがロードされる。
2.幾何学的段階:ポリゴンのレンダリング・スクリーンへの投影を計算する。これらの計算の結果は、視点から見たそれぞれのポリゴンの各頂点の深さを示す深さ値を含む。
3.ラスタ化段階:陰付き面や隠れ面の削除操作を実行する。投影するポリゴンをレンダリング・スクリーンの画素に対応するオブジェクト画素に変換し、それぞれのオブジェクト画素に関して1組の色値を計算するラスタ化操作を実行する。オブジェクトが三次元なので、レンダリング・スクリーンの所与の画素上に複数のポリゴンが投影されることがある。その結果、ポリゴンがレンダリング・スクリーン上で重なる場合には、複数のオブジェクト画素の色値と深さ値が生成される。色値と深さ値は、レンダリング・スクリーンの画素に対応する記憶位置を有する画素および深さバッファに記憶される。この位置決めプロセスにおいて、所与のレンダリング・スクリーンの画素に複数のオブジェクト画素が生成されるときは、オブジェク画素のどれが目に見えるかを決定するために深さ値が比較される。最も小さな深さ値に対応する色値と深さ値だけ、すなわち目に見えるオブジェクト画素の色値と深さ値だけが、画素バッファおよび深さバッファに記憶される。この操作により、隠れ面(すなわち、視点から見ることができない面)が有効に除去される。
4.表示段階:幾何学段階とラスタ化段階ですべてのポリゴンを処理した後、表示のために画素バッファの内容が出力される。
【0008】
ラスタ化段階では、シェーディング操作により、それぞれのオブジェクト画素の色値が計算される。また、このステップでは、それぞれの画素の1組の輝度係数を計算し、画素のオリジナル色値にそれぞれの輝度係数を掛けて画素の色値を得る。1組の輝度係数は、通常、赤、緑および青の輝度係数も含む。輝度係数は、照明の作用を定義し、オブジェクト画素があるオブジェクト画素のポリゴンの材料特性と、各光源の色と位置と方向、および視点の位置と方向に依存する。輝度係数を計算するためには、既に様々な方法がある。ポリゴンのオリジナル色は、ポリゴンの特性を定義する図形データの一部である。ポリゴンのオリジナル色は、ダイレクト色や、前述のようなテクスチャとして定義することができる。ダイレクト色を使用するときは、ダイレクト色自体がオリジナル色として使用される。ポリゴン上にテクスチャをマッピングするとき、テクスチャを表わすパターン・データからポリゴンの各オブジェクト画素のオリジナル色が計算される。
【0009】
各オブジェクト画素のオリジナル色を定義するテクスチャのパターン・データは、次のように決定される。
1.レンダリング・スクリーンのそれぞれの画素座標(X、Y)について、関連するテクスチャ座標(s、t)を計算する。
2.画素の色は、テクスチャ座標(s、t)上かまたはその近くにある1つまたは複数のテクスチャ画素のパターン・データからアクセスまたは補間される。
【0010】
最も簡単な実施例では、各オブジェクト画素の色値として、テクスチャの1組のパターン・データが適用される。この場合も、各組のパターン・データは、通常、赤、緑および青のパターン・データを含む。しかしながら、この単純なテクスチャ・サンプリング方法は、しばしば、望ましくないブロック・パターンやモワレ・パターンを生成する。テクスチャを表わす複数のパターン・データの間の補間によって1組の単一色値を計算するためには、一般に、テクスチャ・フィルタリング技術が利用される。たとえば、いわゆるMultum in Parvo(MIP)マップは、テクスチャ画像をマルチ解像度ピラミッド形データ形式で記憶する。各オブジェクト画素の色を定義する1組の色値は、2段階の補間を利用して生成される。最初の補間操作は、同じレベルのパターン・データの間の2つのレベル上で、いわゆる層内補間が実行される。同じレベルのパターン・データ間の隣り合った2つのレベルのそれぞれについて、2つの層内補間操作が実行される。次に、2の層内補間操作の結果の間で、層間補間操作が実行される。プロセス全体は、トリリニア補間(tri-linear interpolation)と呼ばれる。
【0011】
従来の三次元図形レンダリングプログラムは、ローディング段階ですべてのテクスチャデータを受け取らなければならない。しかしながら、すべてのテクスチャが、最終的にレンダリングされる画像になるわけではない。後面にあって切り取られたポリゴン上のテクスチャは、ラスタ化段階で処理されず、邪魔されたポリゴンに適用されるテクスチャから得られたオブジェクト画素は、隠れ面除去操作において破棄されるため、最終画像では存在しない。また、単一の高い解像度のビットマップとしてテクスチャを提供する従来の技術は、レンダリング時間を長くする。これは、テクスチャをマッピングするポリゴンが、視点から遠くにあるかまたは視点に対して斜めの角度にあるときは、高解像度テクスチャを生成するのに必要なビットマップ・データの多くは余分になることがあるためである。このような場合は、もっと低い解像度のテクスチャで十分である。従来の三次元図形レンダリングプログラムを使用して、従来のローディング段階でテクスチャをロードする前に画像をレンダリングするのに必要なテクスチャとテクスチャ解像度を決定することは、このとき幾何学形状がまだ計算されていないため不可能である。その結果、従来の三次元図形レンダリングプログラムは、ロード段階の間に、すべてのテクスチャをその最も高い解像度でロードすることを必要とする。
【0012】
ポリゴンの数は、通常、テクスチャのサイズよりもレンダリング時間に及ぼす影響が大きい。したがって、アプリケーションは、一般に、ポリゴンの数を少なくしテクスチャの使用を増やすことによって、現実的でかつ自然な三次元画像を提供するのに必要な計算能力を減少させようとしている。しかしながら、これを行うとき、特にネットワーク環境では、大量のテクスチャ・データによりローディング時間が長くなる。
【0013】
【発明が解決しようとする課題】
本発明は、三次元図形データに応じて画像をレンダリングするレンダリング装置を提供する。
【0014】
【課題を解決するための手段】
このレンダリング装置は、レンダリング装置が三次元図形データを受け取ることができる入力経路と、画素・深さバッファと、参照バッファと、レンダリング・エンジンとを含む。三次元図形データは、ポリゴン・データと、さらにテクスチャを定義するテクスチャ・データとを含む。テクスチャ・データは、テクスチャ・サイズ・データと、組になったパターン・データを含む。各組のパターン・データは、テクスチャを異なる解像度で表わす。パターン・データは、テクスチャ・データの大部分を構成する。画素・深さバッファと参照バッファは、レンダリング・スクリーンの画素に対応する第1のメモリ・セルと第2のメモリ・セルをそれぞれ含む。レンダリング・エンジンは、ポリゴンとテクスチャ・サイズ・データだけを使用して初期ラスタ化操作を実行し、レンダリング・スクリーンのそれぞれの画素のためのテクスチャ識別子、テクスチャ解像度を示す層深さ値、およびテクスチャ座標を生成し、参照バッファに記憶する。レンダリング・エンジンは、また、レンダリング・スクリーンのそれぞれの画素ごとに参照バッファに記憶されたテクスチャ識別子、層深さ値およびテクスチャ座標に応じて、画像をレンダリングするのに必要なパターン・データを識別する。レンダリング・エンジンは、画像をレンダリングするのに必要と識別されたパターン・データを経路を介して獲得する。最終的に、レンダリング・エンジンは、経路を介して獲得したパターン・データを使用して、画像を表わす画像データを生成する。経路は、レンダリング・エンジンとバッファの間のデータ転送速度よりも実質上低いデータ転送速度を有する。
【0015】
レンダリング装置は、さらに、パターン・データをピラミッド形データ構造で記憶するテクスチャ・メモリを含むことがある。ピラミッド形データ構造は、テクスチャを異なる解像度で表わすパターン・データの組をそれぞれ記憶する層を含む。パターン・データの組のうちの1つの組は、テクスチャを最も高い解像度で表わす。
【0016】
画像をレンダリングするのに必要なパターン・データは、経路からパターン・データをロードするか、あるいはより高い解像度でテクスチャを表わす1組のパターン・データのパターン・データからパターン・データを合成することによって得ることができる。
【0017】
層深さ値は、整数部分と少数部分を有する実数でもよい。層深さ値の少数部分が0のとき、レンダリング・エンジンは、層深さ値の整数部分によって示されるパターン・データの組のうちの1組のパターン・データ間の第1の層内補間を実行して、画像データを導き出すテクスチャ色値を生成する。一方、層深さ値の少数部分が0でないとき、レンダリング・エンジンは、第1の層内補間と、複数の組のうちの1組よりも高いレベルの解像度を有する別の組のパターン・データ間の第2の層内補間と、第1と第2の層内補間によって生成された結果の間の層間補間とを実行して、画像データを導き出すテクスチャ色値を生成する。
【0018】
本発明は、また、三次元図形データに応じて画像をレンダリングする方法を提供する。画像は、レンダリング・スクリーンの画素に対応する画像データによって表わされる。三次元図形データは、ポリゴン・データを含み、さらにテクスチャを定義するテクスチャ・データを含む。テクスチャ・データは、テクスチャ・サイズ・データと、組になったパターン・データを含む。各組のパターン・データは、異なる解像度でテクスチャを表わす。パターン・データは、テクスチャ・データの大部分を構成する。この方法において、ポリゴン・データとテクスチャ・サイズ・データが受け取られる。レンダリング・スクリーンの画素のそれぞれについて、初期ラスタ化操作を実行する。初期ラスタ化操作は、ポリゴン・データとテクスチャ・サイズ・データを使用して実行され、テクスチャ識別子、テクスチャ解像度を示す層深さ値およびテクスチャ座標を生成し記憶する。パターン・データ識別操作は、レンダリング・スクリーン画素のそれぞれに関して記憶されたテクスチャ識別子、層深さ値およびテクスチャ座標に応じて実行される。パターン・データ識別操作は、画像をレンダリングするのに必要なパターン・データを識別する。次に、パターン・データ獲得操作を実行する。この操作により、パターン・データ識別操作によって画像をレンダリングするのに必要と認識されたパターン・データが獲得される。次に、最終ラスタ化操作を実行する。ここで、パターン・データ獲得操作によって獲得したパターン・データを使用して、画像を表わす画像データが生成される。
【0019】
本発明は、三次元図形データに応じて画像を生成するための新しい処理装置とレンダリング方法を提供することによってスクリーン上に画像が表示されるまで待たなければならない時間を大幅に短縮する。本発明によるレンダリング装置および方法において、テクスチャを表わすパターン・データは、初期ラスタ化操作が完了するまで得られない。パターン・データは、ローディングによって、あるいはピラミッド形データ構造においてより高い解像度の層のパターン・データから合成することによって得られる。パターン・データを獲得する前に初期ラスタ化操作を実行することは、画像をレンダリングするために、画像を必要な解像度でレンダリングするのに必要なテクスチャの一部分を定義するパターン・データを獲得するだけでよいことを意味する。この方法において、サーバからロードしたり合成したりしなければならないパターン・データ数が少なくなり、それにより待機時間も減少する。
【0020】
本発明によるレンダリング装置は、パターン・データなしに実行される初期のレンダリング操作によって生成される中間結果を保持する参照バッファを含む。これにより、パターン・データの獲得とテクスチャ画素の色値の補間を延期することができる。参照バッファの内容を使用することによって、必要なパターン・データだけがロードされるので、本発明によりパターン・データを効率的に得ることができる。本発明は、また、後で説明するような「最良解像度」と「漸進的解像度」の2つの代替表示方法を提供する。
【0021】
【発明の実施例】
本発明は、インターネットなどのネットワークのようにデータ転送速度が制限された環境で使用するように意図された画像レンダリング装置とその方法に関する。図1は、本発明によるレンダリング装置100のブロック図である。このレンダリング装置は、たとえば、コンピュータ102の中にある。実際の実施例において、レンダリング装置は、コンピュータ内にあるグラフィックス・カード(図示せず)の一部を形成することがある。あるいは、レンダリング装置は、コンピュータに差し込まれるか、あるいはコンピュータのグラフィックス・カードに接続されたハードウェア・アクセサリである。
【0022】
コンピュータ102は、入出力ポート104を介して、ネットワーク106のクライアントとして接続される。入出力ポートは、レンダリング装置とコンピュータの他の要素が接続されたバス108に直接または間接に接続される。ネットワーク、入出力ポートおよびバスは、レンダリング装置が1つまたは複数のテクスチャを定義するテクスチャ・データを含む三次元図形データを受け取る経路を構成する。
【0023】
また、図示したように、バス108には、レンダリング装置100によって生成されたレンダリング・スクリーンの画素の最終色値を表示用にモニタ150に送るビデオ出力ポート116が接続される。
【0024】
また、ネットワーク106には、三次元図形データを集合的に記憶するメモリ112および114を含むサーバ110も接続される。メモリ112は、三次元図形のオブジェクトの面の位置を定義するポリゴン・データを記憶する。メモリ114は、1つまたは複数の面に適用されるテクスチャを定義するテクスチャ・データを記憶する。テクスチャの外観を定義するパターン・データは、テクスチャ・データの大部分を構成する。また、テクスチャ・データは、テクスチャの高さや幅などのデータを含む。
【0025】
さらに追加または代替として、三次元図形データを、コンピュータ102に記憶することもできる。この場合、メモリ112および114と同等な記憶部が、コンピュータ内にあってバス108に直接または間接に接続されたハード・ディスクなどのメモリ(図示せず)内に配置される。たとえば、サーバ110からロードされた三次元画像を、コンピュータのハード・ディスクに記憶することができる。この場合、ハードディスクとバスは、レンダリング装置が1つまたは複数のテクスチャを定義するテクスチャ・データを含む三次元図形データを受け取る経路を構成する。
【0026】
レンダリング装置100において、レンダリング・エンジン120は、バス108に接続される。レンダリング・エンジンは、レンダリングプログラム122を実行し、三次元図形データに応じてレンダリング操作を行う。レンダリング操作により、二次元画像を指定する1組の画素データが生成される。レンダリング・エンジンは、本発明による方法を実行する。レンダリング・エンジンは、マイクロプロセッサ、デジタル信号プロセッサ、1つまたは複数の特定用途向け集積回路または汎用集積回路を使って構成することができ、本明細書に記載した処理の実行を可能にする読取り専用メモリやランダム・アクセス・メモリなどの他の要素を含んでもよい。
【0027】
レンダリング装置100は、さらに、画素・深さバッファ124と参照バッファ126を含む。画素・深さバッファと参照バッファは、直接またはバス108を介してあるいは他の何らかの装置によってレンダリング・エンジン120に接続される。レンダリング・エンジンとバッファの間のデータ転送速度は、三次元図形データを、経路を介して、すなわちネットワーク106またはコンピュータのハード・ドライブから受け取る転送速度よりも実質上大きい。
【0028】
画素・深さバッファ124と参照バッファ126はそれぞれ、マルチバイト記憶セルからそれぞれ構成されることが好ましい。それぞれのセルは、レンダリング・スクリーンの1つの画素に対応することが好ましい。レンダリング・エンジン120によってそれぞれのレンダリング操作が実行される間、画素・深さバッファは、最初に深さバッファとして機能し、次に画素バッファとして機能する。通常、従来のレンダリング装置も、深さバッファと画素バッファを含むが、従来の装置は、隠れ面除去操作を実行するときに同時にバッファを使用するため、単一のバッファを両方の機能に使用することはできない。本発明によるレンダリング装置では、深さバッファと画素バッファを同時に使用する必要がないため、両方のバッファの機能を、物理メモリの単一部分で実行することができる。本発明によるレンダリング装置100は、参照バッファ126を使用して、以下で詳細に説明するように、テクスチャ計算によって生成された中間結果を記憶する。
【0029】
レンダリング装置100は、また、バス108に接続されたテクスチャ・データ・メモリ130を含む。テクスチャ・データ・メモリは、複数のページに分割され、その例を132に示す。1つのテクスチャのテクスチャ・データは、それぞれのページに記憶される。テクスチャ・データ・メモリの各ページは、テクスチャを表わすテクスチャ・データのサブセットを記憶するセクションに分割される。図1に示した例において、ページ132は、最大層深さメモリ133、ピラミッド形パターン・データ記憶機構134、タイル・ロード・リスト136、タイル・ピッチ・アレイ138、およびタイル・ベース・アレイ140を含む。
【0030】
テクスチャを表わすパターン・データは、後で詳細に説明するマルチ解像度ピラミッド形データ構造で、ピラミッド形パターン・データ記憶機構134に記憶される。タイル・ロード・リスト136は、後で説明するように、テクスチャが分割された各タイルごとのエントリを含む。このエントリは、タイルのパターン・データの獲得状況、すなわちタイルのパターン・データを獲得したかどうか、あるいはそのようなパターン・データを獲得する必要があるかどうかを示す。タイル・ピッチ・アレイ138とタイル・ベース・アレイ140はそれぞれ、ピラミッド形データ構造の各層ごとのエントリを含む。タイル・ピッチ・アレイ内のエントリは、層のそれぞれの列のタイルの数を示す。タイル・ベース・アレイ内のエントリは、層の左上のタイルのタイル番号を示す。タイル・ベース・アレイは、タイルの総数を記憶する追加のエントリを含むこともある。テクスチャ・メモリの各ページに記憶されたテクスチャ・データについては、後で詳細に説明する。
【0031】
図2は、各テクスチャを表わすパターン・データを記憶するマルチ解像度ピラミッド形データ構造200の構造を示す。マルチ解像度ピラミッド形データ構造は、商標FlashPixで販売されている従来の二次元図形システムに基づく。この二次元図形システムは、マルチ解像度ピラミッド形データ構造を使用して、写真などの二次元画像を表わすデータを記憶する。本発明によるレンダリング装置および方法では、各テクスチャのパターン・データは、テクスチャをそれぞれ異なる解像度で表わす組になったパターン・データが、いくつかの層に配列されたピラミッド形データ構造で記憶される。これらの層は、上の層から下の層に大きくなるように番号が付けられ、一番上の層が0である。ピラミッド形構造における層の位置は、層の層深さによって表される。最も低い解像度のパターン・データが記憶された最上層は、0の層深さを持つ。図2に示した例で、最高解像度のパターン・データが記憶された層の層深さは4である。しかしながら、ピラミッド形データ構造は、この例で示した数よりも多いかまたは少ない数の層を含むこともできる。
【0032】
ピラミッド形データ構造200の各層のパターン・データは、テクスチャを、その下の層のパターン・データがテクスチャを表わす解像度の2分の1の解像度で表し、その上の層のパターン・データがテクスチャを表わす解像度の2倍で表わす。
【0033】
最も高い解像度でテクスチャを表わすパターン・データは、ピラミッド形データ構造200の最も下の層202を構成する。通常は、最高解像度は、テクスチャのオリジナルの解像度と同じである。しかしながら、オリジナルの解像度がその用途に必要な最大の解像度よりも高い場合は、最高解像度は、オリジナルの解像度よりも小さいことがある。最下層における隣接した4つの画素のパターン・データが結合されて、最下層のすぐ上の層203において1画素のパターン・データを生成する。その結果、層203のパターン・データは、それぞれの方向に最下層パターン・データの2分の1の直線解像度でテクスチャを表す。層203のパターン・データの数は、最下層202のパターン・データの数の4分の1である。前述の結合プロセスは、すぐ下の層のパターン・データから残りの層204〜206の各層のパターン・データを生成するために実行される。
【0034】
ピラミッド形データ構造200の最上層206では、テクスチャは、横方向にa個の画素と縦方向にb個の画素のアレイのパターン・データによって表される。好ましい実施例では、a=b=64である。ピラミッド形データ構造200は、MIPデータ構造などの従来のピラミッド形データ構造と異なることに注意されたい。ピラミッド形データ構造200では、最上層に1つのタイルのパターン・データが記憶される。従来のピラミッド形データ構造では、最上層に1つの画素のパターン・データが記憶される。
【0035】
最上層206よりも下のピラミッド形データ構造200の各層は、それぞれa×bの画素のアレイからなるタイルに分割することができる。そのタイルの例を210で示す。タイルは、パターン・データを獲得する単位である。前述のように、パターン・データは、サーバ110からタイル単位でロードされ、追加または代替としてクライアント・コンピュータ102内にあるメモリ(図示せず)から転送されることもある。ピラミッド形データ構造200の各層は、4D個のタイルに分割され、ここで、Dは層の層深さであり、最上層206が0の層深さである。
【0036】
各層のパターン・データは、通常、テクスチャを表わす画像マップを構成する。しかしながら、たとえば、パターン・データがネットワーク106を介してレンダリング装置に転送されるとき、画像マップ・データは送信時間を短縮するために圧縮されることがある。たとえば、画像マップ・データを圧縮して送信用のパターン・データを生成するためにJPEG圧縮を使用することができる。しかしながら、圧縮されたパターン・データは、ピラミッド形データ構造で記憶される前にビットマップ形式に拡張される。
【0037】
パターン・データは、ピラミッド形データ構造200の層202〜206のそれぞれに記憶される。層202〜206はそれぞれ、整数、すなわち0、1、2、...、nの層深さDを有する。しかしながら、後でより詳細に説明するように、レンダリング・エンジン120が、所与のオブジェクト画素に適用するテクスチャの最適解像度を計算するとき、この計算で生成される層深さは実数であり、すなわち、層深さは、整数部分の他に少数部分を持つことができる。そのような層深さは、ピラミッド形データ構造の物理層と一致しない。この場合、レンダリング・エンジン120は、非整数の層深さを持つ層のパターン・データを計算する。そのようなパターン・データは、層深さDの整数部分と等しい整数の層深さDLを持つ層に記憶されたパターン・データと、DG=DL+1の整数の層深さを持つ層に記憶されたパターン・データとの間の補間によって計算される。たとえば、レンダリング・エンジンは、2と3の層深さを持つ層のパターン・データ間の補間によって2.3の層深さを持つ層のパターン・データを計算する。
【0038】
前述のように、参照バッファ126は、レンダリング・スクリーンの各画素ごとに実行された初期ラスタ化操作の結果を記憶する。この結果は、後で最終ラスタ化操作を実行するときに使用される。参照バッファは、ランダム・アクセス・メモリなどのメモリの一部分で実施することができる。メモリは、レンダリング・スクリーンの画素の1つにそれぞれ対応するセルに区分される。図3Aと図3Bは、初期ラスタ化操作の結果を記憶するために、参照バッファ126のセルに使用される2つの代替データ構造の例を示す。セルに記憶される初期ラスタ化操作の結果は、ダイレクト色データでもテクスチャ・データでもよい。セルに記憶されたデータのタイプは、セルの第1のフィールド301に記憶されたビットの状態で示される。図3Aは、初期ラスタ化操作によってダイレクト色データが生成されたときのセルのデータ構造の例を示す。図3Bは、初期ラスタ化操作がテクスチャ座標と輝度係数を生成するときのセルのデータ構造の例を示す。
【0039】
初期ラスタ化操作において、レンダリング・スクリーンの画素が、テクスチャを適用しないポリゴン内にあるオブジェクト画素から得られるときは、前述のように、レンダリング・スクリーン画素の最終色値は、ポリゴンのダイレクト色にその輝度係数を掛けることによって得られる。この場合、初期ラスタ化操作がダイレクト色データを生成したことを示すために、第1のフィールド301に0が記憶される。掛算によって得た最終色値は、通常、赤色値、緑色値および青色値から構成される。赤色値、緑色値および青色値は、図3Aに示したデータ構造を使用して、画素のセルのフィールド303のR、GおよびBセクションにそれぞれ記憶される。セル300に割り振られたメモリの残りの部分306は、テクスチャを適用するポリゴン内にあるオブジェクト画素からレンダリング・スクリーン画素を得るときに同じサイズのセルを使用することができるように予約され、データ構造は、図3Bに示したものである。
【0040】
レンダリング・スクリーンの画素が、テクスチャを適用するポリゴン内にあるオブジェクト画素から得られるとき、図3Bに示したように、セル300の第1のフィールド301に1が記憶される。セルの残りのフィールドに記憶されるデータは、次の通りである。すなわち、フィールド310は、画素に適用するテクスチャのテクスチャ・データを記憶した図1に示したテクスチャ・メモリ130のページを示すポインタまたはインデックスを記憶する。フィールド312は、図2に示したピラミッド形データ構造の一番下(最高解像度)の層202の画素に関して表されたテクスチャ座標(S,T)を記憶する。テクスチャ座標は、次のように、オブジェクト画素の座標(X、Y)にポリゴンの投影マトリックスとテクスチャ・マッピング・マトリックスまたは関数(s,t)を適用することによって計算される。
S=s(X,Y)
T=t(X,Y)
【0041】
フィールド314は、レンダリング・スクリーンの画素の最終色値を計算する際に使用するパターン・データを得る図2に示したピラミッド・データ構造の層を定義する層深さDを記憶する。層深さDは、次の方程式を使用して計算される。
【0042】
【数1】
ここで、Dmaxは、図2に示したピラミッド形データ構造200の最下層202の層深さである。
【0043】
最後に、フィールド316には画素の輝度係数が記憶される。この例では、フィールドのセクションIR、IBおよびIBにそれぞれ赤、緑および青の輝度係数が記憶される。
【0044】
従来の三次元図形のレンダリングにおいて、テクスチャ座標(S,T)と層深さDは、実数で計算される。そのすぐ後で、計算したパラメータを使って、層内補間と層間補間が行われ、レンダリング・スクリーンの各画素ごとの最終色値が生成される。しかしながら、本発明によるレンダリング装置とその方法において、初期ラスタ化操作の間に、テクスチャ座標(S,T)と層深さDが計算される。初期ラスタ化操作は、パターン・データがまだロードされる前に実行される。最終ラスタ化操作の間に最終色値を計算するときに使用するために、初期ラスタ化操作の結果が参照バッファに記憶される。これは、必要なパターン・データが得られた後だけ実行される。
【0045】
次に、図1、図2、図3、図4Aおよび図4Bを参照して、本発明による方法と本発明によるレンダリング装置の操作について説明する。最初に、テクスチャ・データの少しの部分だけがサーバからロードされることに注意されたい。ほとんどのテクスチャ・データを構成するパターン・データの獲得は、初期ラスタ化操作が完了するまで延期される。次の説明では、三次元図形データがサーバ110に記憶され、ネットワーク106を介してロードされる例を参照する。三次元図形データがコンピュータ102に記憶されるとき、類似した操作が行われる。
【0046】
最初に、図4Aに示したフローチャートを参照して、レンダリング装置の方法と操作の概要を説明する。以下の説明を簡単にするために、テクスチャを適用するレンダリング・スクリーンの画素に適用される処理だけを説明する。処理は、ステップ400から始まる。以下に、図4Aの各ステップを示す。
ステップ400:スタート
ステップ402:最初のローディング操作を実行する
ステップ404:幾何学計算を実行する
ステップ406:初期ラスタ化操作を実行する
ステップ408:パターン・データを獲得しなければならないピラミッド形データ構造のタイルを識別する。
ステップ410:第2回目のローディング操作を実行する
(ステップ408で識別されたタイルのパターン・データだけを獲得する)
ステップ412:レンダリング・スクリーンの各画素に関するテクスチャ色値が計算される
ステップ414:テクスチャ色値に輝度係数を乗じる
ステップ416:画素の最終色値に変換する
【0047】
ステップ402において、最初のローディング操作が実行される。この場合、ポリゴン・データと各テクスチャの幅と高さの値がサーバからロードされる。各テクスチャの幅と高さの値は、テクスチャのテクスチャ・データの少しの部分でしかない。さらに、ポリゴン・データの数は比較的少ない。したがって、このステップの実行は短時間でできる。
【0048】
ステップ404において、幾何学計算が実行される。
【0049】
ステップ406において、初期ラスタ化操作が実行される。初期ラスタ化操作は、テクスチャのパターン・データなしに実行されるという点で従来のラスタ化操作とは異なる。初期ラスタ化操作は、画素・深さバッファ124を深さバッファとして使用する隠れ面除去操作を含む。隠れ面除去操作により、レンダリング・スクリーンの各画素に適用されるテクスチャが識別される。参照バッファ126内の画素のセルには、識別されたテクスチャのテクスチャ・データが記憶されるテクスチャ・メモリ130のページを示すポインタが記憶される。また、この段階では、レンダリング・スクリーンの各画素ごとに、隠れ面除去操作によって識別されたテクスチャの層深さDとテクスチャ座標(S,T)、およびレンダリング・スクリーン画素の輝度係数が計算される。層深さ、テクスチャ座標および輝度係数は、参照バッファ内の画素セルにも記憶される。
【0050】
ステップ408において、参照バッファ126に記憶されたテクスチャ座標と層深さを使って、画像をレンダリングするためにパターン・データを獲得しなければならないピラミッド形データ構造のタイルを識別する。
【0051】
ステップ410で、第2のローディング操作が実行される。ここでは、ステップ408で識別されたタイルのパターン・データだけを獲得する。パターン・データは、サーバからそのデータをロードし、あるいはすぐ下の層すなわち次に高い解像度の層のパターン・データからのデータを合成することによって得られる。通常は、層を構成するタイルの一部だけのパターン・データを獲得する。さらに、より高い解像度の層の必須パターン・データを獲得すれば次に低い解像度の層のパターン・データを合成することができるので、ローディングによってパターン・データを獲得する低い解像度層のタイル部分は、ローディングによってパターン・データを獲得する高い解像度層のタイル部分よりも小さくてもよい。一般に、すべてのパターン・データよりも少ないデータしかロードしないため、このステップは、従来のローディング段階よりも高速に実行される。
【0052】
ステップ412および414において、最終ラスタ化操作が実行される。ステップ412において、ステップ410で獲得したテクスチャ・タイルのパターン・データの補間によって、レンダリング・スクリーンの各画素に関する1組のテクスチャ色値が計算される。
【0053】
ステップ412において、各画素ごとのテクスチャ色値に参照バッファ126から読み込まれた画素の輝度係数を掛けて画素に関して得た最終色値が、画素・深さバッファ124に記憶される。初期ラスタ化操作の間に、輝度係数が計算される。
【0054】
ステップ414において、レンダリング・スクリーンの画素の最終色値が、モニタ150上に表示するのに適した信号に変換される。
【0055】
ステップ416において、実行プログラムは終了する。
【0056】
次に、図1、図2、図3および図4Bを参照して、本発明によるレンダリング装置の方法と操作をさらに詳細に説明する。ステップ450で、実行プログラムが始まる。
【0057】
ステップ451および452において、最初のローディング操作が実行される。ここでは、パターン・データはロードされない。
【0058】
ステップ451において、サーバ110内のメモリ112からポリゴンメッシュ・データがロードされる。ポリゴンメッシュ・データは、ポリゴンの面に適用されるテクスチャを指定するデータを含む。
【0059】
ステップ452において、ポリゴンメッシュ・データによって指定された各テクスチャの幅と高さの値が、サーバ110のメモリ114からロードされる。テクスチャの幅と高さの値は、前述のテクスチャ・データの少しの部分にしかならない。このとき、テクスチャ・データの大部分を構成するパターン・データは、ロードされない。また、このステップにおいて、ポリゴンメッシュ・データによって指定された各テクスチャごとの幅と高さの値に応答して、テクスチャ初期化操作が実行される。この初期化操作において、幅と高さの値は、パターン・データを最終的に獲得したときに図2に示したマルチ解像度ピラミッド形データ構造がテクスチャのパターン・データを記憶するために使用する層数(Dmax+1)を計算するために使用される。また、ピラミッド形データ構造のそれぞれの層の列内のタイル数と、各層の左上のタイルのタイル番号が計算されるかまたはルックアップ・テーブルから読み取られる。
【0060】
Dmaxの値は、テクスチャ・メモリ130のテクスチャのページ132の133に記憶される。また、初期化操作により、前述の層の計算で得られた結果とテクスチャの高さと幅の値を利用して、テクスチャ・メモリのテクスチャのページに、各テクスチャごとのピラミッド形データ構造134、タイル・ロード・リスト136、タイル・ピッチ・アレイ138およびタイル・ベース・アレイ140が設定される。
【0061】
タイル・ロード・リスト136は、ピラミッド形データ構造134内の各タイルごとのエントリを含む。このエントリは、タイルの獲得状況を表わす2ビット・コードを記憶する。タイルのローディング状況は、この開示において、文字N、LおよびEによって表された3つの状態を有する。実際のレンダリング装置でのローディング状況は、前述の2ビット・コードによって表わされる。テクスチャ初期化操作により、各タイルへのエントリが、タイル用のパターン・データがテクスチャ用のピラミッド形データ構造内にないことを示す「N」に設定される。その後、パターン・データを獲得しなければならないタイルを識別する操作により、そのようなタイルのタイル・ローディング・リスト内のエントリが「L」に設定され、これは、前述の第2のローディング操作でそのタイルのパターン・データを獲得しなければならないことを示す。第2のローディング操作によって、パターン・データを獲得しピラミッド形データ構造で記憶してあるタイルのローディング・リストのエントリが「E」に設定され、これは、タイルのパターン・データがピラミッド形データ構造内にあり、画像のレンダリングに使用することができることを示す。
【0062】
タイル・ピッチ・アレイ138とタイル・ベース・アレイ140はそれぞれ、ピラミッド形データ構造134の各層のエントリを含む。タイル・ピッチ・アレイ138のエントリは、層のタイル・ピッチを記憶する。タイル・ピッチは、層の列内のタイルの数である。タイル・ベース・アレイ140内のエントリは、層のタイル・ベースを記憶する。タイル・ベースは、層の左最上部のタイル番号である。
【0063】
画素の寸法が、たとえば512×512画素などの2の累乗の正方形に配列されたテクスチャ画素のパターン・データによってテクスチャが定義されるとき、最上(最も低い解像度)の層206から始まるピラミッド形データ構造200の層のタイル・ピッチの値は、1、4、16、...4Dであり、ここで、Dは、層の層深さであり、最上層の層深さは0である。これと対応するタイル・ベースの値は、次の通りである。
【0064】
【数2】
ここでkは、インデックス。
【0065】
テクスチャが、寸法が2の累乗ではないアレイに配列されたテクスチャ画素のパターン・データによって定義されるとき、タイル・ピッチとタイル・ベースを生成するためにはさらに複雑な計算が必要になる。そのような計算は、必要に応じて、ステップ452で実行される。ステップ452が終了したとき、テクスチャのパターン・データは、まだ獲得されていないことに注意されたい。
【0066】
ステップ453において、従来の幾何学段階の操作が実行される。ここでは、レンダリング・スクリーンへのポリゴンの投影が計算される。
【0067】
ステップ454において、初期ラスタ化操作が実行される。ここでは、ステップ453で計算されたレンダリング・スクリーンへのポリゴンの投影が、オブジェクト画素に変換され、隠れ面除去に使用するために、それぞれのオブジェクト画素に関して深さの計算が行われる。深さの計算は、オブジェクト画素の深さ値を登録するために画素・深さバッファ124を使用することが好ましい。別法として、画素バッファと別の深さバッファを使用することもできる。オブジェクト画素が重なるときは、深さ値の最も小さなオブジェクト画素だけがバッファに登録され、それにより、隠れ面除去が実行される。
【0068】
深さの計算により、レンダリング・スクリーンの各画素に対応するオブジェクト画素が定義される。テクスチャを適用するポリゴン内にあるオブジェクト画素に対応するレンダリング・スクリーンの画素について、参照バッファ126内の画素のセル300のフィールド301が1に設定され、テクスチャ用のテクスチャ・データを記憶するテクスチャ・メモリ130のページのアドレスが、セルのフィールド310に入力される。色をダイレクト色計算で決定するポリゴン内にあるオブジェクト画素に対応するレンダリング・スクリーンの画素の場合は、参照バッファ126内の画素のセル300のフィールド301が0に設定される。
【0069】
参照バッファ126内のレンダリング・スクリーンの画素のセル300のフィールド301に0で示されたように、テクスチャを適用しないポリゴン内にある各オブジェクト画素に対応するレンダリング・スクリーンの画素の場合は、従来のシェーディング計算が実行される。シェーディング計算は、画素に関する1組の色値を生成する。1組の色値における赤色値、緑色値および青色値が、参照バッファ内の画素のセルのフィールド302のR、GおよびBのセクションにそれぞれ記憶される。
【0070】
参照バッファ126内のレンダリング・スクリーン画素のセル300のフィールド301の1で示したように、テクスチャを適用するポリゴン内にある各オブジェクト画素に対応するレンダリング・スクリーン画素の場合は、部分的なシェーディング計算が実行される。部分的なシェーディング計算により、その画素のテクスチャ座標(S,T)、層深さDおよび輝度係数の値が生成される。テクスチャ座標は、フィールド312に記憶され、層深さはフィールド314に記憶され、赤、緑および青の輝度係数は、参照バッファ内の画素のセルのフィールド316のセクションIR、IGおよびIBにそれぞれ記憶される。
【0071】
本発明は、2つの表示モード、すなわち最良解像度表示モードと漸進的解像度表示モードを提供する。最良解像度表示モードは、パターン・データの全ローディング時間を最小にする。漸進的解像度表示モードは、画像を最良解像度表示モードよりも迅速に表示する。しかしながら、漸進的解像度表示モードでは、テクスチャは、最初に低解像度で表示され、その後、各テクスチャが最適解像度で表示されるまで少しずつ高い解像度で表示される。表示モードは、ユーザ(図示せず)が選択することもできるし、三次元図形プログラムで定義することもできる。
【0072】
ステップ455において、最良解像度表示モードが選択されたかどうかを判定するために検査が行われる。検査結果がYESの場合は、実行プログラムはステップ461に進み、最良解像度表示モードの処理が始まる。検査結果がNOの場合は、実行プログラムがステップ471に進み、漸進的解像度表示モードの処理が始まる。次に、最良解像度表示モードの処理について説明し、後で漸進的解像度表示モードの処理について説明する。
【0073】
ステップ461において、図5Aと図5Bを参照して詳細に説明するルーチンが、参照バッファ126内の画素のセル300のフィールド301に1つを有するレンダリング・スクリーンの各画素に関して実行される。このフィールド内の1は、テクスチャを適用するポリゴン内にレンダリング・スクリーン画素に対応するオブジェクト画素があることを示す。このルーチンは、各テクスチャに関して、画像をレンダリングできるようにするために第2のローディング動作で獲得しなければならないパターン・データのテクスチャのピラミッド形データ構造134のタイルを識別する。ステップ461の実行が完了すると、獲得しなければならないパターン・データの各テクスチャのピラミッド形データ構造のすべてのタイルが識別され、テクスチャのタイル・ロード・リスト136内のこれらのタイルへのエントリが、すべて「L」に設定される。
【0074】
ステップ462において、ページ132がテクスチャ・メモリ130内にある各テクスチャに関して、図6を参照して後で詳細に説明するルーチンを実行することによって、第2のローディング操作が実行される。このルーチンは、テクスチャ・データ・メモリ130のテクスチャのページ132に記憶されたタイル・ロード・リスト136を走査し、タイル・ロード・リストのエントリが「L」に設定されたタイルのパターン・データを獲得する。前述のように、各タイルごとのパターン・データは、ローディング、あるいは高い解像度のパターン・データ、すなわちピラミッド形データ構造のすぐ下の層からの合成によって獲得することができる。ステップ462の実行が終了したとき、画像をレンダリングするために必要なパターン・データはすべて、テクスチャ・メモリの各ページにピラミッド形データ構造で記憶され、対応するタイル・ロード・リスト内のこれらのタイルのエントリは、すべて「E」に設定される。
【0075】
ステップ462が完了したとき、タイル・ロード・リスト内のほとんどの数のエントリが「N」に設定されたままでもよいことに注意されたい。そのようなエントリは、そのようなパターン・データが画像をレンダリングするためには必要でないために、対応するタイルのパターン・データを獲得しなかったことを示す。これにより、ステップ462を従来のロード段階よりも迅速に実行することができる。
【0076】
ステップ463において、最終的なレンダリング操作が、参照バッファ126の画素のセル300のフィールド301内に1があるレンダリング・スクリーンの各画素に関して、図7Aを参照して後で詳細に説明するルーチンを実行することによって行われる。このルーチンは、ステップ454で最初に実行された部分的なシェーディング操作を完了するためにトリリニア補間を実行する。この補間により、ステップ462で獲得したパターン・データからの画素に関する1組のテクスチャ色値が計算される。トリリニア補間は、ピラミッド形データ構造の2つの層にあるパターン・データを使って行われる。2つの層は、参照バッファ126の画素のセル300のフィールド314に記憶された実数の層深さを計算するのに使用される。次に、ルーチンは、ステップ454で参照バッファのレンダリング・スクリーン画素のセルのフィールド316に記憶されたそれぞれの輝度係数をテクスチャ色値に掛けて、画素に関する最終色値を生成する。最終色値は、画素バッファの画素の位置に記憶される。好ましい実施例において、画素・深さバッファ124は、画素バッファとして使用される。あるいは、深さバッファと無関係の画素バッファを使用することもできる。
【0077】
ステップ464において、参照バッファ126内の画素のセル300のフィールド301に0を有するレンダリング・スクリーンの各画素に関して、参照バッファの画素のセルのフィールド302に記憶された最終色値が、画素バッファ内の画素の位置に複写される。
【0078】
最後に、ステップ465において、画素バッファ124に記憶された最終色値が、モニタ150に直接または間接に出力される。モニタは、画素バッファからの受け取った最終色値に応じてレンダリング画像を表示する。
【0079】
次に、実行プログラムは、ステップ481に進み、ユーザ(図示せず)が入力値を入力したかどうかを判定するために検査を行う。たとえば、ユーザ入力は、視点を変更する入力値の入力である。これにより、新しいレンダリング操作を実行することが必要になる。検査結果がNOの場合、実行プログラムは、ステップ481に戻る。検査結果がYESの場合、実行プログラムはステップ482に進み、そこでユーザ入力によって影響を受けたパラメータが変更される。次に、実行プログラムは、ステップ453に戻り、新しいレンダリング操作が実行される。新しいレンダリング操作中に、パターン・データをまだ獲得していなかったタイルのパターン・データを獲得しなければならない場合があるが、通常は、先ほど説明したレンダリング操作で獲得したパターン・データの多くを再利用することができる。
【0080】
次に、図4Bを参照して、漸進的解像度表示モードで実行される処理について説明する。ステップ471において、ステップ451でロードしたポリゴン・データによって指定された全テクスチャの最上タイルのパターン・データが、サーバ110からロードされる。各テクスチャの最上タイルのパターン・データは、テクスチャ・メモリ130のテクスチャのページ132においてピラミッド形データ構造134の適切な場所に記憶される。最も上のタイルのパターン・データは、最も低い解像度を有するそれぞれのテクスチャを表わす。次に、プログラムは、高い解像度タイルのパターン・データを獲得したときに、画像を最初に低い解像度のテクスチャを表示し、次に徐々に高い解像度のテクスチャを表示する解像度改善ループを実行する。解像度改善ループは、ステップ472〜477で構成される。
【0081】
ステップ472において、図7Bを参照して後で詳細に説明するルーチンが、参照バッファ126のレンダリングのセル300のフィールド301に1を有するレンダリング・スクリーンの各画素ごとに実行される。このルーチンは、バイリニア補間(bi-linear interpolation)とトリリニア補間を利用して、テクスチャのテクスチャ色値を生成する。テクスチャ色値には、参照バッファ126に記憶された輝度係数が掛けられ、レンダリング・スクリーン画素に関して得られた最終色値は、画素・深さバッファ124に記憶される。画素・深さバッファは、この操作において、画素バッファとして使用される。あるいは、深さバッファと別の画素バッファを使用することもできる。
【0082】
ループの繰り返しにおいて、計算するテクスチャ色値のほとんどは、最適な解像度よりも小さい暫定的な値である。しかしながら、初期の繰り返しにより、最適な解像度を有するいくつかのテクスチャ色値を計算することができる。繰り返し回数が増えるにつれて、テクスチャ色値を最適の解像度で計算するレンダリング・スクリーン画素の数は増える。テクスチャ色値の解像度が高くになるつれて、画像にテクスチャを表示する解像度はさらに高くなる。
【0083】
また、図7Bを参照して後で説明する処理によって、いくつかのタイルのタイル・ロード・リスト・エントリが「L」に設定される。そのようなエントリは、後のルーチンでステップ477を実行したときにパターン・データを獲得しなければならないタイルを示す。これらのパターン・データを獲得すると、ループの次の繰り返しでステップ472を実行するときに生成されるテクスチャ色値の解像度が高くなる。
【0084】
ステップ473において、画素の参照バッファ・セル300のフィールド301に0を有するレンダリング・スクリーンの各画素に関して、画素の参照バッファ・セルのフィールド302に記憶された最終色値が、画素バッファ124内の画素の場所に複写される。
【0085】
ステップ474において、画素バッファ124に記憶されたレンダリング・スクリーンの画素に関する最終色値が、モニタ150に直接または間接に出力される。モニタは、最終色値に応じて画像を表示する。次に、実行プログラムは、ステップ475を介してステップ476に進む。ステップ475については、後で説明する。
【0086】
ステップ476において、ステップ472を実行したときにタイル・ロード・リスト内のエントリが「L」に設定されているかどうかを判定するために、テクスチャ・メモリ130のページ132に記憶されたタイル・ロード・リスト136の検査が実行される。結果がNOの場合は、最良解像度で画像をレンダリングするのに必要なすべてのパターン・データが獲得されたことを示し、前述のように、処理はステップ481に進む。結果がYESの場合、実行プログラムは、ステップ477に進む。
【0087】
ステップ477において、テクスチャ・メモリ130にページ132があるそれぞれのテクスチャに関して、図6を参照して後で詳細に説明するルーチンを実行することによって、第2のローディング操作が行われる。このルーチンは、テクスチャ・データ・メモリ130のテクスチャのページ132に記憶されたタイル・ロード・リスト136を走査し、タイル・ロード・リストのエントリが「L」に設定されたタイルのパターン・データを獲得する。前述のように、各タイルごとのパターン・データは、ロードするか、あるいは次に高い解像度の層すなわちピラミッド形データ構造におけるすぐ下にある層のパターン・データから合成することによって獲得することができる。ステップ477の実行が完了すると、パターン・データを獲得したタイルのタイル・ロード・リスト内のエントリが「E」に設定される。次に、実行プログラムは、ステップ472に戻る。
【0088】
ステップ477が実行されるごとに、以前に獲得したパターン・データよりも高い解像度を有するパターン・データが獲得される。これにより、次にステップ472を実行したときに、よりきめ細やかでかつ高い解像度の画像の最終色値を生成することができる。ステップ472〜477からなるループは、最良解像度表示モードで提供されるのと同じ画像を生成するのに必要なタイルのパターン・データを獲得するまで繰り返される。そのような画像を提供するタイルのパターン・データの獲得が終わると、ステップ476で実行される検査の結果はNOとなる。
【0089】
ステップ472〜477からなるループは、パターン・データ獲得ステップ477を含み、そのため、特に高い解像度パターン・データをロードするときに、実行に長い時間がかかることがある。したがって、ステップ475が、ループに含まれる。このステップにより、ユーザは、解像度改善ループを中断して、新しいパラメータを入力することができる。新しいパラメータは、たとえば視点の変更である。ステップ475において、ユーザ入力を受け取ったかどうかを判定するために検査が行われる。結果がNOの場合は、ユーザ入力を受け取っていないことを示し、実行プログラムは、解像度改善ループの次のステップであるステップ476に進む。結果がYESの場合は、解像度改善ループは実行を止め、実行プログラムはステップ482に進み、新しいユーザ・パラメータを受け取る。次に、実行プログラムはステップ453に戻り、新しいユーザ入力に応答してレンダリングプロセスが繰り返される。
【0090】
図5Aは、画像を最良解像度表示モードでレンダリングできるようにするためにパターン・データを獲得しなけばならないピラミッド形データ構造200のタイルを識別するためにステップ461で実行されるルーチンの詳細を示す。図5Aに示したルーチンは、レンダリング・スクリーンの各画素に関して実行されるが、最初に、画素の参照バッファ・セル300のフィールド301の内容を検査する。フィールドが0を含む場合は、ステップ454で画素の最終色値が計算され、残りのルーチンが実行されないことを示す。したがって、実際には、このルーチンは、テクスチャを適用するポリゴン内にあるオブジェクト画素から得た画素上でのみ完全に実行される。
【0091】
実行プログラムは、ステップ500で始まる。ステップ502において、画素の参照バッファ・セル300のフィールド301に1が記憶されているかどうかを判定するために検査が行われる。フィールド301内の1は、レンダリング・スクリーン画素が、テクスチャを適用するポリゴン内にあるオブジェクト画素に対応することを示す。検査結果がNOのとき、実行プログラムはステップ542に進み、そこで次のレンダリング・スクリーン画素を処理することができるように、画素アドレスが増分される。検査結果がYESのとき、実行プログラムはステップ504に進む。
【0092】
ステップ504において、テクスチャ座標(S,T)と層深さDの値が、参照バッファ126内のレンダリング・スクリーン画素のセル300のフィールド312および314から読み込まれる。読み込まれる数量はすべて、浮動小数点または固定小数点の数量として表わすことができる実数である。
【0093】
ステップ506において、ステップ504で読み込まれたDの値が、テクスチャのDmaxの値よりも大きいかどうかを判定するために検査が実行される。Dmaxの値は、セル300のフィールド310に記憶されたアドレスによって示されたテクスチャ・メモリ130のページ132のセクション133から読み取られる。Dの値がDmaxよりも大きいとき、パターン・データの最大解像度が低すぎて、レンダリングする画像において所望のテクスチャ解像度を提供できないことを示す。この場合、Dは、最大可能解像度すなわちDmaxに設定される。検査結果がYESの場合、実行プログラムはステップ508に進み、そこで、DがDmaxに設定され、次にステップ510に進む。検査結果がNOの場合は、実行プログラムは、ステップ510に直接進む。
【0094】
ステップ510において、ステップ504で読み取られた層深さDが、整数部分DLと少数部分Dfに分けられる。さらに、スケーリング・ファクタSF=Dmax−DLの値が計算される。
【0095】
ステップ512において、層Dmaxのテクスチャ座標(S,T)を2SFで割って、層DLのテクスチャ座標(S,T)Lを獲得する。
【0096】
ステップ514において、層DFのタイル・ピッチとタイル・ベースの値がそれぞれ、タイル・ピッチ・アレイ138とテクスチャ・メモリ130のテクスチャのページ132のタイル・ベース・アレイ140から読み取られ、変数WLとBLに割り当てられる。テクスチャ・メモリ内のテクスチャのページは、参照バッファ126内の画素のセル300のフィールド310に記憶されたアドレスによって示される。
【0097】
ステップ516において、テクスチャ座標(S,T)Lが、整数部分(Si、Ti)Lと少数部分(Sf,Tf)Lに分けられる。
【0098】
ステップ518において、層DLのテクスチャ座標の整数部分(Si,Ti)LがそれぞれTWLとTHLで割られ、商(Sr,Tr)Lが生成される。ここで、TWLとTHLはそれぞれ、層DLの内のタイルの画素での幅と高さである。除算(Sb,Tb)Lの剰余は、ステップ524で実行されるサブルーチンと、ステップ520で識別されるタイルに適用するための局所座標の計算にも使用される。
【0099】
ステップ520において、画像をレンダリングするのに必要なパターン・データが属する層DL内のタイルのタイル番号Ntilが、タイル・ベースBL、その層のタイル・ピッチWL、およびステップ518で計算した商から計算される。タイル番号Ntilは、タイル・ベースBLと商(Sr)Lと、商(Tr)Lとタイル・ピッチWLの積とを加えることによって、すなわち、Ntil=BL+((Tr)L×WL)+(Sr)Lの式から得られる。
【0100】
ステップ522に、テクスチャ・メモリ130のページ132内のタイル・ロード・リスト136のステップ520で識別されたタイルNtilのエントリが、「L」に設定され、画像をレンダリングするためにこのタイルのパターン・データを獲得しなければならないことを示す。テクスチャ・メモリのページは、参照バッファ126内の画素のセル300のフィールド310に記憶されたアドレスによって示される。
【0101】
テクスチャ座標(S,T)Lが、ステップ520で識別されたタイルと1つまたは複数の隣り合ったタイルとの間の境界上の点を定義するとき、隣り合ったタイルのタイル・ロード・リスト内のエントリは、これらのタイルのパターン・データも獲得しなければならないことを示すために「L」に設定される。ステップ524において、図5Bに関して後で詳細に説明するサブルーチンが、ステップ518および516においてそれぞれ得られた剰余(Sb,Tb)Lと少数部分(Sf,Tf)Lを利用して実行される。サブルーチンは、座標(S,T)Lが、ステップ520で識別されたタイルと1つまたは複数の隣接するタイルとの間の境界上の点を定義するかどうかを確認し、必要に応じて、追加のタイルのタイル・ロード・リストのエントリを「L」に設定し、それにより、これらのタイルのパターン・データを獲得する。サブルーチンが終了したら、実行プログラムは、ステップ526に進む。
【0102】
参照バッファ126の画素のセル300のフィールド314に記憶されたDの値が整数の場合は、層DL内のパターン・データを利用した補間により、レンダリング・スクリーン画素のテクスチャ色値を決定することができる。通常は、Dの値が0でない少数部分を有する場合は、トリリニア補間を利用してテクスチャ色値を生成することが好ましい。さらに、トリリニア補間は、次の高い解像度の層DGのパターン・データを必要とする。層DGは、層DLよりも大きな層深さ、すなわちDG=DL+1を有する。図5Aに示したルーチンの残りの部分は、画像をレンダリングするためにパターン・データを獲得しなければならない高い解像度の層DG内のタイルのうちの少なくとも1つを識別する。
【0103】
ステップ526において、ステップ510で得られたDfの値がゼロよりも大きいかどうか、すなわちDの値が整数かどうかを判定するために検査される。検査結果がNOの場合は、実行プログラムはステップ542に進み、そこで、前述のように、レンダリング・スクリーン画素アドレスが増分される。検査結果がYESの場合は、ステップ528〜540が実行され、直線解像度が層DLの解像度の2倍の、層DLのすぐ下の層DGの1つまたは複数のタイルのタイル・ロード・リスト・エントリを「L」に設定する。層間補間で使用するために、次の低い層DGで識別された1つまたは複数のタイルのパターン・データが獲得される。
【0104】
ステップ528において、テクスチャ座標(S,T)Gを2倍して、層DG内のテクスチャ座標(S,T)Lが得られる。
【0105】
ステップ530〜540は、ステップ530〜540で使用した数量とステップ530〜540で計算された数量が層DLではなくで層DGに関係する点以外は、ステップ514〜524と実質上類似している。ステップ538において、層DG内の識別されたタイルNtilのタイル・ロード・リスト136内のエントリが「L」に設定され、画像をレンダリングするためにタイルのパターン・データを獲得しなければならないことを示す。タイル・ロード・リストは、参照バッファ126の画素のセル300のフィールド310に記憶されたアドレスによって示されたテクスチャ・メモリ130のページ132に記憶される。層DGのその他のタイルは、ステップ540で実行されるサブルーチンで選ばれることもある。サブルーチンの完了後に、実行プログラムは、ステップ542に進む。
【0106】
ステップ542において、画素アドレスが増分される。ステップ544において、レンダリング・スクリーン内の画素がすべて処理されたかどうかを判定するために検査が実行される。その結果がYESの場合は、実行プログラムはステップ546に進み、そこで、図4Bに示したメイン・ルーチンに戻る。検査結果がNOの場合、実行プログラムは、ステップ502に戻る。
【0107】
図5Bは、図5Aに示した手順のステップ524で実行されるサブルーチンの詳細を示す。サブルーチンは、テクスチャ座標(S,T)Lが、ステップ520で識別されたタイルと1つまたは複数の隣接したタイルとの間の境界上の点を定義しているかどうかを判定し、定義している場合は、タイル・ロード・リスト内の隣接したタイルのエントリをマークする。ステップ540で実行されるサブルーチンは、類似しているがテクスチャ座標(S,T)Gに適用される。
【0108】
実行プログラムがステップ551で始まる。
【0109】
ステップ553において、テクスチャ座標(S,T)Lが、ステップ520で識別されたタイルの縦の縁上の点を定義しているかどうかを判定するために検査が行われる。そのような点は、識別されたタイルと横方向に隣接したタイルとの境界上にある。ステップ518で生成された剰余(Sb)LがTWL−1と等しいかどうかを判定するために検査が行われ、ステップ516で生成された座標SLの少数部分(Sf)Lが、0よりも大きいかどうかを判定するために検査が実行される。どちらかの検査の結果がNOの場合、実行プログラムは、ステップ561に進む。両方の検査の結果がYESの場合は、座標(S,T)Lによって定義された点が識別されたタイルの縦の縁上にあることを示し、実行プログラムはステップ555に進む。
【0110】
ステップ555において、タイル番号Ntil+1を有するタイルのタイル・ロード・リスト内のエントリが「L」に設定される。その場合、実行プログラムはステップ557に進む。
【0111】
ステップ557において、座標(S,T)Lが、ステップ520で識別されたタイルの角上の点を定義しているかどうかを判定するために検査が行われる。そのような点は、識別されたタイルと縦横両方向の隣接したタイルとの境界上にある。ステップ518で生成された剰余(Tb)LがTHL−1と等しいかどうかを判定するために検査が行われ、ステップ516で生成された座標TLの少数部分(Tf)Lが、0よりも大きいかどうか判定するために検査が実行される。どちらかの検査結果がNOの場合、実行プログラムは、ステップ561に進む。両方の検査結果がYESの場合は、座標(S,T)Lによって定義された点が、識別されたタイルの角上にあることを示し、実行プログラムは、ステップ559に進む。
【0112】
ステップ559において、タイル番号Ntil+WL+1のタイルのタイル・ロード・リスト内のエントリが「L」に設定される。次に、実行プログラムは、ステップ561に進む。
【0113】
ステップ561において、座標(S,T)Lがステップ520で識別されたタイルの横の縁上の点を定義しているかどうかを判定するために検査が実行される。そのような点は、識別されたタイルと縦方向に隣接したタイルとの間の境界上にある。実行される検査は、ステップ557で実行されたものと同じであり、すなわち、ステップ518で生成された剰余(Tb)Lが、THL−1と等しいかどうか判定するために検査が行われ、ステップ516で生成された座標TLの少数部分(Tf)Lが0よりも大きいかどうかを判定するために検査が行われる。どちらかの検査結果がNOの場合、実行プログラムはステップ565に進み、メイン・ルーチンに戻る。両方の検査結果がYESの場合は、座標(S,T)Lによって定義された点が、識別されたタイルの横の縁上にあることを示し、実行プログラムはステップ563に進む。
【0114】
ステップ563において、タイル番号Ntil+WLを有するタイルのタイル・ロード・リスト内のエントリが「L」に設定される。次に、実行プログラムはステップ565に進み、メイン・ルーチンに戻る。
【0115】
図6は、図4Bに示したルーチンのステップ462を実行するために使用することができるルーチンの例の詳細なフローチャートである。このルーチンは、テクスチャ・データ・メモリ130の各ぺージ132に記憶されたタイル・ロード・リスト136が、タイル・ロード・リスト・エントリが「L」に設定されたタイルのパターン・データを獲得するかどうかを検査し、パターン・データが獲得されたタイルのタイル・ロード・リスト・エントリを「E」に設定する。パターン・データは、合成またはローディングによって獲得される。このルーチンは、テクスチャ・データ・メモリ130のぺージ132にテクスチャ・データを記憶するテクスチャのそれぞれに関して実行される。図4Bに示したルーチンのステップ461が、参照バッファ126内の各セルに関して実行された後で、画像をレンダリングするためにパターン・データを獲得しなければならない各タイルごとのタイル・ロード・リスト内のエントリが「L」に設定される。
【0116】
実行プログラムは、ステップ600から始まる。初めに、図2に示したピラミッド形データ構造における層に対応するタイル・ロード・リストの部分が、テクスチャ解像度が最も高い最下層に対応する部分から検査される。次の説明において、検査されるタイル・ロード・リスト部分に対応する層は、現在層と呼ばれる。現在層よりも小さい層深さを有する層は、次に高い層と呼ばれる。現在層よりも大きい層深さを有する層は、次に低い層と呼ばれる。
【0117】
ステップ602において、層深さインデックスdの値が、最も下(最も高い解像度)の層の層深さであるDmaxに設定される。
【0118】
ステップ604において、タイル・インデックスtは、現在層のタイル・ベースの値であるBdに設定される。
【0119】
ステップ606において、タイル・インデックスtを有するタイルのタイル・ロード・リスト(図では、TLLとして略記された)内のエントリが「L」に設定されているかどうかを判定するために検査が行われる。検査結果がNOの場合は、タイルのパターン・データを獲得する必要がないことを示し、実行プログラムはステップ618に進む。検査結果がYESの場合、実行プログラムは、ステップ608に進む。
【0120】
ステップ608において、現在層を示す層深さインデックスdが、図2に示したピラミッド形データ構造200の最下層202の層深さDmaxよりも小さいかどうかを判定するために検査が行われる。最下層に記憶されたパターン・データは、最下層のパターン・データを合成するために利用可能なそれよりも高い解像度パターン・データがないため、合成することができない。したがって、検査結果がNOの場合は、現在層が最下層であることを示し、実行プログラムはステップ610に進み、タイル・インデックスtを有するタイルのパターン・データがロードされ、テクスチャ・メモリ130のテクスチャのページ132のピラミッド形データ構造134内のタイル・インデックスによって示された場所に記憶される。次に、実行プログラムは、後で説明するステップ616に進む。
【0121】
ステップ608の検査結果がYESの場合、実行プログラムはステップ612に進む。YESの検査結果は、現在層が最下層よりも高いことを示し、それにより、現在層内のタイルのパターン・データが、層深さがd+1である、次に低い層すなわち解像度が高い層にあるソース・タイルのパターン・データから合成することができる。パターン・データの合成は、パターン・データのロードよりも速いため、通常、パターン・データの合成が、パターン・データのロードよりも好ましい。
【0122】
ステップ612において、タイル・インデックスtを有するタイルのソース・タイルのタイル・ロード・リスト内のエントリがすべて「E」に設定されているかどうかを判定するために検査が実行される。ソース・タイルは、現在層内のタイルのパターン・データを合成するためにパターン・データを使用することができる次に低い層にあるタイルである。そのような合成は、すべてのソース・タイルのタイル・ロード・リストのエントリに「E」によって示されたように、必要なすべてのソース・タイルのパターン・データがピラミッド形データ構造で存在する場合のみ実行される。次に低い層の4つのソース・タイルのパターン・データは、現在層のほとんどのタイルのパターン・データを合成するために必要とされる。しかしながら、現在層の右側と一番下の境界にあるタイルのパターン・データを合成するためには、2つのソース・タイルのパターン・データだけが必要となることがある。さらに、現在層の一番下の右側の角にあるタイルのパターン・データとして、1つのソース・タイルのパターン・データだけが使用されることもある。
【0123】
ステップ612の検査結果がN0の場合は、次に低い層に、現在層でタイル・インデックスtを有するタイルを合成するためには不十分なパターン・データしかないことを示し、実行プログラムはステップ610に進む。ステップ610において、前述のように、タイル・インデックスtを有するタイルのパターン・データがロードされる。検査結果がYESの場合、実行プログラムはステップ614に進む。
【0124】
ステップ614において、現在層のタイル・インデックスtを有するタイルのパターン・データが、次に低い層のソース・タイルのパターン・データから合成される。合成されたパターン・データは、テクスチャ・メモリ130のテクスチャのページ132のピラミッド形データ構造134内のタイル・インデックスで示された場所に記憶される。次に、実行プログラムは、ステップ616に進む。
【0125】
ステップ616において、タイル・インデックスtを有するタイルのタイル・ロード・リスト内のエントリが「E」に設定され、これは、ステップ614の合成またはステップ610のローディングによって獲得された結果、現在テクスチャのピラミッド形データ構造内にタイルのパターン・データが存在することを示す。
【0126】
ステップ618において、タイル・インデックスが増分される。
【0127】
ステップ620において、現在層のすべてのタイルのタイル・ロード・リストのエントリを検査したかどうかを判定するために検査が実行される。これは、タイル・インデックスの値が、次に低い層のタイル・ベースの値であるBd+1より大きいかどうかを検査することによって行われる。現在層が最も下(最も高い解像度)の層のときは、タイル・ベース・アレイに記憶されたタイルの総数の値が、最下層よりも下の(存在しない)層のタイル・ベースとして使用される。検査結果がNOの場合は、実行プログラムがステップ606に戻り、したがって、現在層内の別のタイルのタイル・ロード・リストのエントリを検査することができる。検査結果がYESの場合は、現在層のすべての可能なパターン・データをすべて獲得したことを示し、実行プログラムはステップ622に進む。
【0128】
ステップ622において、層深さインデックスdが、1だけ減分される。
【0129】
ステップ624において、現在層の層深さdが、最も上(最低の解像度)の層の層深さである0よりも小さいかどうかを判定するために検査が行われる。検査結果がNOの場合、実行プログラムはステップ604に戻り、それにより次に高い層のパターン・データを獲得することができる。検査結果がYESの場合は、タイル・ロード・リストのエントリが「L」に設定されるすべてのタイルのパターン・データが獲得されたことを示し、実行プログラムはステップ626に進み、図4Bに示したルーチンに戻る。
【0130】
図7Aは、最良解像度表示モードにおけるレンダリング・スクリーン画素の最終色値を生成するために、図4Bに示したメイン・ルーチンのステップ463で実行されるルーチンの詳細を示す。このルーチンは、画素の参照バッファ・セル300のフィールド301に1を有するレンダリング・スクリーンの各画素に関して実行される。このフィールドの1は、レンダリング・スクリーン画素が、テクスチャを適用するポリゴン内にあるオブジェクト画素に対応することを示す。各レンダリング・スクリーン画素の最終色値は、ステップ454で計算された輝度係数に、ステップ462で獲得したパターン・データからトリリニア補間によって得たテクスチャ色値を掛けることによって得られる。実行プログラムが、ステップ700で始まる。
【0131】
ステップ702において、このルーチンは、参照バッファ126内の画素のセル300にアクセスして、テクスチャの座標S、Tと層深さDを読み取る。これらのパラメータはすべて実数である。
【0132】
ステップ704において、ステップ702で読み取られたDの値を有する層深さのテクスチャ色値を得る層間補間を実行するために使用されるピラミッド形データ構造の2つの層の層深さが決定される。前述のように、層は、層深さDを一括する。層深さDは、その整数部分DLと少数部分Dfに分けられる。さらに、DLは、1だけ増分され、DG(=DL+1)が得られる。2つの層の高い方の解像度は、層深さがDGの層である。2つの層の低い方の解像度は、層深さがDLの層である。
【0133】
ステップ706において、DGが最大層深さDmaxよりも大きいかどうかを判定するために検査が実行される。検査結果がNOの場合、実行プログラムはステップ710に進む。検査結果がYESの場合は、実行プログラムはステップ708に進み、DLとDGの両方がDmaxに設定され、少数部分Dfがゼロに設定される。次に、実行プログラムはステップ710に進む。
【0134】
ステップ710において、テクスチャ座標(S,T)と層深さDmaxを有する最も下(最も高い解像度)の層の座標のテクスチャ座標(S,T)が、層DL内のテクスチャ座標(S,T)Lに変換される。図5Aのステップ510と512を参照して前に説明したプロセスを利用することができる。テクスチャ座標(S,T)Lによって定義された点の最も近くにある層DL内の画素が識別され、点(S,T)Lからの距離が計算される。次に、点(S,T)Lからの距離によって逆に重み付けされた識別済みテクスチャ画素のテクスチャ色値を使用して、最初の層内補間が実行される。最初の層内補間操作により、テクスチャ座標(S,T)Lにあるテクスチャ画素のテクスチャ色値R1、G1、B1が計算される。
【0135】
ステップ712において、少数部分Dfが0よりも大きいかどうかを判定するために検査が実行される。検査結果がNOの場合は、層間補間が必要ないことを示し、実行プログラムはステップ714に進み、テクスチャ色値R0、G0、B0がそれぞれ、ステップ710でそれぞれ計算されたテクスチャ色値R1、G1、B1の値に設定される。実行プログラムは、後で説明するステップ720に進む。検査結果がYESの場合は、層間補間が必要であることを示し、実行プログラムはステップ716に進む。
【0136】
ステップ716において、テクスチャ座標(S,T)は、層DG内のテクスチャ座標(S,T)Gに変換される。テクスチャ座標(S,T)Gによって定義された点の最も近くにある層DG内の画素が識別され、点(S,T)Gからの距離が計算される。次に、点(S,T)Gからの距離に従って逆に重み付けされた識別済みのテクスチャ画素のテクスチャ色値を使って、第2の層内補間操作が実行される。第2の層内補間操作により、テクスチャ座標(S,T)Gにあるテクスチャ画素のテクスチャ色値R2、G2、B2が計算される。
【0137】
ステップ718において、層間補間操作が実行され、層深さDを有する層の座標(S,T)Dにあるテクスチャ画素のテクスチャ色値が生成される。この補間は、加重係数として、層DLのテクスチャ色値R1、G1、B1、層DGのテクスチャ色値R2、G2、B2、および層深さDの少数部分Dfを使用する。層間補間操作により、テクスチャ色値R0、G0、B0が生成される。
【0138】
ステップ720において、レンダリング・スクリーン画素の輝度係数が、参照バッファ126の画素のセル300のフィールド316から読み取られ、層間補間が必要かどうかによって、ステップ714かまたはステップ718で生成されたテクスチャ色値R0、G0、B0が掛けられる。得られた最終色値は、画素・深さバッファ124のレンダリング・スクリーン画素の場所に記憶される。
【0139】
実行プログラムは、ステップ722に進み、そこからメイン・ルーチンに戻る。
【0140】
図7Bは、漸進的解像度表示モードでレンダリング・スクリーン画素の最終色値を生成するために、図4Bに示したメイン・ルーチンのステップ472で実行されるルーチンの詳細を示す。このルーチンは、参照バッファ126の画素のセル300のフィールド301に1を有するレンダリング・スクリーンの各画素ごとに実行される。このフィールド内の1は、その画素が、テクスチャを適用するポリゴン内にあるオブジェクト画素から得られるたことを示す。最終色値は、ステップ454で計算された輝度係数にテクスチャ色値を掛けることによって得られる。テクスチャ色値は、現在獲得済みのタイルのパターン・データ、すなわち、ステップ472〜477からなる解像度改善ループが実行される前にステップ471で獲得されたパターン・データと、解像度改善ループに続いてステップ471で獲得されたパターン・データとステップ477で獲得されたパターン・データからの補間によって得られる。現在獲得済みのタイルのパターン・データによって提供される解像度が、メイン・ルーチンのステップ454で計算された層深さDに十分でない場合は、解像度改善ループは、必要な解像度を実現するためにパターン・データを必要とするタイルのタイル・ロード・リストのエントリを「L」に設定し、ステップ477を次に実行するときに獲得しなければならないパターン・データを示す。実行プログラムは、ステップ750から始まる。
【0141】
ステップ752、754、756および758は、図7Aを参照して前に説明したステップ702、704、706および708と同じであり、ここでは再び説明しない。
【0142】
ステップ760〜766において、テクスチャのタイル・ロード・リスト内のエントリを検査して、テクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値を補間するために使用できる最も高い解像度の現在獲得済みのタイルを見つける。テクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値の補間に必要な層内のタイルの数は、前に説明したように、テクスチャ座標が、タイル内、2つのタイル間の境界または4つのタイル間の角にある点を定義するかどうかによって、1つ、2つまたは4つでもよい。タイル・ロード・リストの検査は、ピラミッド形データ構造の層DGに対応するタイル・ロード・リストの一部から始まる。層DGのタイル・ロード・リスト・エントリが、テクスチャ座標(S,T)においてテクスチャ画素のテクスチャ色値を補間するために必要な1つまたは複数のタイルのパターン・データが、その層に存在することを示す場合、テクスチャ色値は、これらのタイルのパターン・データから補間される。そうでない場合は、次に高いレベル(次に低い解像度)の層DG−1のタイル・ロード・リストのエントリが検査される。さらに高い層すなわちさらに低い解像度の層のタイル・ロード・リストのエントリが、必要なパターン・データを含む層が見つかるまで検査される。このルーチンが実行される前に最も上のタイルのパターン・データがメイン・ルーチンのステップ471でロードされるため、検査プロセスは、常に有効な結果で終了する。
【0143】
ステップ760において、層深さインデックスdがDGに設定される。ステップ762において、図5Aを参照して前に説明したものと類似のルーチンが実行され、テクスチャ座標(S,T)に対応する現在層内のタイルが識別される。ステップ764において、ステップ762で識別されたすべてのタイルのタイル・ロード・リスト・エントリが、タイルのパターン・データが獲得済みでテクスチャのピラミッド形データ構造に記憶されたことを示す「E」に設定されているかどうかを判定するために検査が行われる。
【0144】
ステップ764の検査結果が、必要なパターン・データが現在層にないことを示すNOの場合は、実行プログラムはステップ766に進み、層インデックスが1だけ減分される。実行プログラムは、ステップ762に戻り、次に高いレベル(次に低い解像度)の層のタイル・ロード・リスト部分が検査される。検査結果がYESの場合は、現在層が、テクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値の補間に必要なパターン・データを含むことを示し、実行プログラムはステップ768に進む。
【0145】
ステップ768において、変数D1は、層インデックスdの現在値に設定される。変数D1の値は、タイル・ロード・リストの検査が終了した層の層深さを示す。
【0146】
ステップ770において、ステップ762で識別した層D1の1つまたは複数のタイルのパターン・データを使用して、層内補間操作が実行される。この補間操作は、図7Aのステップ710を参照して前に説明した方法を使用して実行することができる。この補間操作により、テクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値R1、G1、B1が生成される。
【0147】
D1がDGよりも小さい場合、これは、メイン・ルーチンのステップ454で計算された層深さDに関してテクスチャ色値が不十分な解像度で生成されたことを意味する。必要な解像度を実現するためには、追加のパターン・データを獲得する必要がある。したがって、ステップ772において、D1がDGと等しいかどうかを判定するために検査が実行される。
【0148】
検査結果がNOの場合、実行プログラムはステップ774に進み、そこでテクスチャ色値R0、G0、B0が、ステップ770で計算されたテクスチャ色値R1、G1、B1の値にそれぞれ設定される。実行プログラムはステップ776に進み、そこで、テクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値を補間するのに必要なD1+1の層深さを有する層の1つまたは複数のタイルのタイル・ロード・リスト・エントリが「L」に設定される。この設定は、図4Bを参照して前に説明したメイン・ルーチンのステップ477を次に実行するときに、これらのタイルのパターン・データを獲得しなければならないことを示す。
【0149】
次に、実行プログラムは、後で説明するステップ778に進む。
【0150】
ステップ772で得られた検査結果がYESの場合、実行プログラムは、ステップ780に進む。YESの結果は、D1がDGと等しく、必要な解像度でテクスチャ座標(S,T)にあるテクスチャ画素のテクスチャ色値を補間するのに必要な1つまたは複数のタイルのパターン・データがピラミッド形データ構造内に存在することを示す。
【0151】
ステップ780において、層DL=DG−1の1つまたは複数のタイルのパターン・データを使用して層内補間操作が実行される。この補間操作は、図7Aのステップ710を参照して前に説明した法を使用して実行することができる。この補間操作により、層DL内のテクスチャ座標(S,T)Lにあるテクスチャ画素のテクスチャ色値R2、G2、B2が生成される。
【0152】
ステップ782において、ステップ770で生成された層DGのテクスチャ色値R1、G1、B1と、ステップ780で生成された層DLのテクスチャ色値R2、G2、B2との間で、層Dのテクスチャ座標(S,T)でのテクスチャ画素の層間補間が実行される。この補間は、加重係数として層深さDの少数部分Dfを使用する。層間補間は、テクスチャ色値R0、G0、B0を生成する。
【0153】
ステップ778において、レンダリング・スクリーン画素の輝度係数が、参照バッファ126の画素のセル300のフィールド316から読み取られ、ステップ770またはステップ782で生成されたテクスチャ色値R0、G0、B0が掛けられる。レンダリング・スクリーン画素の得られた最終色値は、画素・深さメモリ124内のレンダリング・スクリーン画素の場所に記憶される。
【0154】
次に、実行プログラムはステップ784に進み、そこからメイン・ルーチンに戻る。
【0155】
本発明は、ピラミッド形データ構造の層内のタイルを、従来の走査順序すなわち左から右、上から下の走査順序で配列した例を参照して説明した。しかしながら、層内のタイルの配列は重要ではなく、様々な配列を使用することができる。異なる配列を使用する場合は、それに従って、層の左上、右側の下の縁、下の右側の角にあるタイルに基準を変更しなければならない。
【00156】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
(実施態様1)
三次元図形データに応じて画像をレンダリングするレンダリング装置であって、
(a)前記レンダリング装置が前記三次元図形データを受け取ることができる経路であって、前記三次元図形データが、ポリゴン・データとさらにテクスチャを定義するテクスチャ・データを含み、前記テクスチャ・データがテクスチャ・サイズ・データおよび組になったパターン・データを含み、各組の前記パターン・データがテクスチャを異なる解像度で表わし、前記パターン・データが前記テクスチャ・データの大部分を構成し、
(b)レンダリング・スクリーンの画素に対応する第1のメモリ・セルを含む画素・深さバッファと、
(c)前記レンダリング・スクリーンの画素に対応する第2のメモリ・セルを含む参照バッファと、
(d)前記ポリゴン・データと前記テクスチャ・サイズ・データだけを使用して初期ラスタ化操作を実行して、前記レンダリング・スクリーンの各画素ごとにテクスチャ識別子、テクスチャ解像度を示す層深さ値およびテクスチャ座標を生成し参照バッファ内に記憶し、
テクスチャ識別子、レンダリング・スクリーン画素ごとに参照バッファに記憶された層深さおよびテクスチャ座標に応じて、前記画像をレンダリングするために必要なパターン・データを識別し、
前記画像をレンダリングするのに必要であると識別された前記パターン・データを前記経路を介して獲得し、
前記バッファとの間のデータ転送速度よりも実質上低いデータ転送速度を有する経路を介して獲得した前記パターン・データを使って前記画像を表す画像データを生成するレンダリング・エンジンと、
を含むことを特徴とするレンダリング装置。
(実施態様2)
前記パターン・データをピラミッド形データ構造で記憶するテクスチャ・メモリをさらに含み、前記ピラミッド形データ構造が、前記テクスチャを異なる解像度で表す前記パターン・データの各組に、記憶する層を含み、前記パターン・データの組のうちの1組は前記テクスチャを最も高い解像度で表わすことを特徴とする実施態様1に記載のレンダリング装置。
(実施態様3)
さらに、前記レンダリング・エンジンが実行する初期ラスタ化操作によって、前記レンダリング・スクリーンのそれぞれの画素の輝度係数が生成され、
さらに、前記輝度係数は、前記参照バッファの前記第2のメモリ・セルのうちの1つに記憶され、前記第2のメモリ・セルのうちの1つは前記レンダリング・スクリーンの前記画素の1つに対応することを特徴とする実施態様2に記載のレンダリング装置。
(実施態様4)
前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、前記装置は、さらに、前記テクスチャのタイル・ロード・リストを含み、前記タイル・ロード・リストは各前記タイルごとのエントリを含み、
前記レンダリング・エンジンが、前記画像をレンダリングするのに必要な前記パターン・データを識別したときに、
前記レンダリング・エンジンは、前記参照バッファからテクスチャ座標を読み取って前記画像をレンダリングするのに必要なパターン・データがある前記タイルの一つを識別し、
前記タイルの一つに関する前記タイル・ロード・リスト内のエントリを、前記画像をレンダリングするために、前記タイルの一つのパターン・データが必要であることを示すロード状態に設定する
ことを特徴とする実施態様2に記載のレンダリング装置。
(実施態様5)
前記レンダリング・エンジンが前記画像をレンダリングするのに必要な前記パターン・データを獲得するときに、
前記レンダリング・エンジンは、前記テクスチャの前記タイル・ロード・リストを検査してロード状態に設定された前記エントリを識別し、
前記タイル・ロード・リスト内のエントリがロード状態に設定されていると識別された各前記タイルの前記パターン・データを獲得し、
前記パターン・データを獲得した各前記タイルのタイル・ロード・リスト内のエントリをロード状態から存在状態に変更し、
存在状態が、前記タイルの一つの前記パターン・データが獲得されたことを示すことを特徴とする実施態様4に記載のレンダリング装置。
(実施態様6)
前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
さらに、前記レンダリング装置は、前記テクスチャのタイル・ロード・リストを含み、前記タイル・ロード・リストは、各前記タイルの1つの前記パターン・データを獲得したことを示すエントリを含み、
前記レンダリング・エンジンは、前記ピラミッド形データ構造における1つの前記層に1つの前記タイルの前記パターン・データを獲得するとき、
前記レンダリング・エンジンは、前記タイル・ロード・リストを検査して、前記層の1つの直下の層にあるソース・タイルの1つのパターン・データが獲得されているかどうかを判定し、
前記ソース・タイルが、前記タイルの一つのパターン・データを合成することができる前記タイルであり、前記ソース・タイルの前記パターン・データから前記タイルの一つの前記パターン・データを合成する
ことを特徴とする実施態様2に記載のレンダリング装置。
(実施態様7)
前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
前記レンダリング・エンジンは、前記ピラミッド形データ構造の最上層を構成するタイルの一つの前記パターン・データを前記経路を介してロードすることによって前記画像をレンダリングするのに必要な前記パターン・データの初期部分を獲得し、前記タイルの一つを前記ピラミッド形データ構造で記憶し、
前記レンダリング・エンジンは、前記ピラミッド形データ構造に現存する前記パターン・データから前記画像データを生成し、より高い解像度で前記画像をレンダリングするためにパターン・データを必要とする前記ピラミッド形データ構造の前記タイルを識別し、前記識別したタイルのパターン・データを獲得し、前記画像データをより高い解像度で再生する
ことを特徴とする実施態様2に記載のレンダリング装置。
(実施態様8)
前記レンダリング・エンジンは、前記画像をより高い解像度でレンダリングするためにパターン・データを必要とする前記タイルを識別し、
前記識別したタイルの前記パターン・データを獲得し、前記画像をより高い解像度で再生するルーチンを、前記画像データがすべて最良解像度で生成されるまで繰り返し実行し、前記画像データの最良解像度が、最高解像度よりも低い前記レンダリング・スクリーンの前記画素のサブセットに対応することを特徴とする実施態様7に記載のレンダリング装置。
(実施態様9)
前記レンダリング・エンジンは、(a)前記経路を介した前記パターン・データのローディングと、(b)前記パターン・データの合成のいずれか一方によって、前記画像をレンダリングするために必要な前記パターン・データを獲得することを特徴とする実施態様1に記載のレンダリング装置。
(実施態様10)
前記層深さ値は、整数部分と少数部分を有する実数であり、
前記層深さ値の少数部分が0のとき、前記レンダリング・エンジンが、前記層深さ値の整数部分によって示された1つの組の前記パターン・データ間の第1の層内補間を実行して、前記画像データを引き出すテクスチャ色値を生成し、
前記層深さ値の少数部分が0でないとき、前記レンダリング・エンジンは、前記第1の層内補間と、前記1つの組よりも高いレベルの解像度を有する別の組のパターン・データ間の第2の層内補間と、前記第1層内補間と前記第2の層内補間によって生成された結果の間の層間補間を実行して、前記画像データを引き出す前記テクスチャ色値を生成することを特徴とする実施態様1に記載のレンダリング装置。
(実施態様11)
三次元図形データに応じて画像をレンダリングする方法であって、
前記画像がレンダリング・スクリーンの画素に対応する画像データによって表わされ、前記三次元図形データが、ポリゴン・データとさらにテクスチャを定義するテクスチャ・データとを含み、前記テクスチャ・データが、テクスチャ・サイズ・データおよび組になったパターン・データとを含み、前記各組のパターン・データが前記テクスチャを異なる解像度で表し、前記パターン・データが前記テクスチャ・データの大部分を構成し、
(a)前記ポリゴン・データと前記テクスチャ・サイズ・データを受け取る段階と、
(b)前記レンダリング・スクリーン前記画素ごとに、前記ポリゴン・データと前記テクスチャ・サイズ・データを使って、テクスチャ識別子、テクスチャ解像度を示す層深さ値およびテクスチャ座標を生成して記憶する初期ラスタ化操作を実行する段階と、
(c)前記レンダリング・スクリーン画素ごとに記憶した前記テクスチャ識別子、前記層深さおよび前記テクスチャ座標に応じてパターン・データ識別操作を実行する段階であって、前記パターン・データ識別操作は前記画像をレンダリングするのに必要な前記パターン・データを識別し、
(d)パターン・データ識別操作によって、前記画像をレンダリングするのに必要であると識別されたパターン・データを獲得するパターン・データ獲得操作を実行する段階と、
(e)前記パターン・データ獲得操作によって獲得された前記パターン・データを使用して前記画像を表す前記画像データを生成する最終ラスタ化操作を実行する段階と、
を含むことを特徴とする画像レンダリング方法。
(実施態様12)
(a)テクスチャ・メモリを提供する段階と、
(b)テクスチャ・メモリに、前記パターン・データ獲得操作によって獲得されたパターン・データをピラミッド形データ構造で記憶する段階と、
を含み、前記ピラミッド形データ構造は、前記テクスチャを異なる解像度で表す前記パターン・データの組がそれぞれ記憶された層を含み、前記パターン・データの組のうちの1組が前記テクスチャを最も高い解像度で表すことを特徴とする実施態様11に記載の画像レンダリング方法。
(実施態様13)
さらに、前記初期ラスタ化操作は、前記レンダリング・スクリーン画素の1つの画素の輝度係数を生成し、
前記輝度係数は、前記レンダリング・スクリーン前記画素のうちの1つの画素の、前記テクスチャ識別子、前記層深さ値および前記テクスチャ座標と共に記憶されることを特徴とする実施態様12に記載の画像レンダリング方法。
(実施態様14)
実施態様12に記載の画像レンダリング方法であって、
(a)前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
(b)該方法は、さらに、前記テクスチャのタイル・ロード・リストを提供する段階とを含み、前記タイル・ロード・リストは各タイルごとのエントリを含み、
(c)前記データ・パターン識別操作が、
テクスチャ座標を読み取って、前記画像をレンダリングするのに必要なパターン・データがある前記タイルの一つを識別する段階と、
前記タイルの一つのタイル・ロード・リスト内のエントリをロード状態に設定する段階とを含み、前記ロード状態は前記タイルの一つの前記パターン・データが前記画像をレンダリングするために必要とすることを示すことを特徴とする画像レンダリング方法。
(実施態様15)
前記パターン・データ獲得操作は、
(a)前記テクスチャの前記タイル・ロード・リストを検査して、ロード状態に設定されたエントリを識別する段階と、
(b)前記タイル・ロード・リスト内のエントリがロード状態に設定されていると識別された前記各タイルの前記パターン・データを獲得する段階と、
(c)前記パターン・データを獲得した前記各タイルのタ前記イル・ロード・リスト内のエントリを、ロード状態から、前記各タイルの前記パターン・データを獲得したことを示す存在状態に変更する段階と、
を含むことを特徴とする実施態様14に記載の画像レンダリング方法。
(実施態様16)
実施態様12に記載の画像レンダリング方法であって、
(a)前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
(b)さらに、該方法は前記テクスチャのタイル・ロード・リストを提供する段階を含み、前記タイル・ロード・リストは各前記タイルのエントリーを含み、前記エントリーは、前記タイルの1つの前記パターン・データが前記ピラミッド形データ構造で存在することを示す状態を有し、
(c)前記パターン・データ獲得操作は前記ピラミッド形データ構造の1層にある1つのタイルの前記パターン・データを獲得するために実行され、
前記タイル・ロード・リストを検査して、前記層の直下にある層にあるソース・タイルの前記パターン・データが前記ピラミッド形データ構造に存在し、前記ソース・タイルが、前記タイルの一つの前記パターン・データを合成することができるタイルであるかどうかを判定する段階と、
前記ソース・タイルの前記パターン・データが前記ピラミッド形データ構造に存在するときに、前記ソース・タイルの前記パターン・データから前記タイルの一つの前記パターン・データを合成する段階と、
を含むことを特徴とする画像レンダリング方法。
(実施態様17)
実施態様12に記載の画像レンダリング方法であって、
(a)前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
(b)前記ピラミッド形データ構造の最上層を構成する前記タイルの一つのパターン・データを受け取って前記ピラミッド形データ構造に記憶し、前記パターン・データ識別動作を実行する前に、前記ピラミッド形データ構造に現存する前記パターン・データから前記画像データを生成する最終ラスタ化操作を実行し、
(c)前記パターン・データ識別操作は、より高い解像度で前記画像をレンダリングするために前記パターン・データが必要な前記ピラミッド形データ構造のタイルを識別し、
(d)さらに、該方法は前記パターン・データ獲得操作の後で、前記最終ラスタ化操作を繰り返して、前記画像データをさらに高い解像度で再生する段階と、
を含むことを特徴とする画像レンダリング方法。
(実施態様18)
前記最終ラスタ化操作、前記パターン・データ識別操作および前記パターン・データ獲得操作を、前記画像データがすべて最良解像度で生成されるまで繰り返し、前記画像データの最良解像度は、最も高い解像度よりも低い前記レンダリング・スクリーンの前記画素のサブセットに対応することを特徴とする実施態様17に記載の画像レンダリング方法。
(実施態様19)
前記パターン・データ獲得操作は、(a)パターン・データのロード、または(b)パターン・データの合成のうちの1つによって、前記画像をレンダリングするのに必要な前記パターン・データを獲得する段階を含むことを特徴とする実施態様11に記載の画像レンダリング方法。
(実施態様20)
実施態様11に記載の画像レンダリング方法であって、
(a)初期ラスタ化操作を実行する段階は、整数部分と少数部分を有する実数として層深さ値を生成し、
(b)最終ラスタ化操作を実行する段階は、さらに、
(b−1)前記層深さ値の少数部分が0のときに、前記層深さ値の整数部分によって識別された1つの組のパターン・データ間の第1の層内補間を実行して、テクスチャ色値から画像データを導き出す段階と、
(b−2)層深さ値の少数部分が0でないときに、前記第1の層内補間を実行して、前記組よりも高いレベルの解像度を有する別の組のパターン・データ間の第2の層内補間操作を実行し、前記第1層内補間と前記第2の層内補間操作によって生成された結果の間で層間補間を実行して、テクスチャ色値から前記画像データを導き出すことを特徴とする画像レンダリング方法。
【0157】
この開示は、本発明の実施例を詳細に説明しているが、本発明が、説明した厳密な実施例に制限されず、併記の特許請求の範囲によって定義された本発明の範囲内で様々な修正を行うことができることを理解されたい。
【図面の簡単な説明】
【図1】本発明によるレンダリング装置を含みレンダリング方法を実行する三次元図形レンダリングシステム構成のブロック図である。
【図2】本発明によるレンダリング装置および方法においてテクスチャのパターン・データを記憶するために使用されるマルチ解像度ピラミッド形データ構造を示す図である。
【図3A】テクスチャ色値を使って画素の色値を直接計算する際、レンダリング・スクリーンの1つ画素に対応する参照バッファのセルのデータ構造を示す図である。
【図3B】テクスチャ色値を使って画素の色値を直接計算する際、レンダリング・スクリーンの1つ画素に対応する参照バッファのセルのデータ構造を示す図である。
【図4A】 本発明による画像レンダリング方法を示す流れ図である。
【図4B】 本発明による画像レンダリング方法をより詳細に示す流れ図である。
【図5A】 画像をレンダリングするためにロードまたは合成することによってパターン・データを獲得しなければならないタイルを示すサブルーチンの流れ図である。
【図5B】 テクスチャ画素がタイルの境界上にあるかどうかを判定し、もし境界上にある場合は、パターン・データを獲得しなければならない追加のタイルを示すサブルーチンの流れ図である。
【図6】 図5Aに示したルーチンによって示されたタイルのパターン・データを獲得するためのサブルーチンの流れ図である。
【図7A】 テクスチャ色値を補間して、最良解像度表示モードでレンダリング・スクリーンの画素の最終色値を生成するためのサブルーチンの流れ図である。
【図7B】 テクスチャ色値を補間して、漸進的解像度表示モードでレンダリング・スクリーンの画素の最終色値を生成するためのサブルーチンの流れ図である。
【符号の説明】
100:レンダリング装置
102:コンピュータ
104:入出力ポート
106:ネットワーク
108:バス
112、114:メモリ
110:サーバ
116:ビデオ出力ポート
120:レンダリング・エンジン
122:レンダリングプログラム
124:画素・深さバッファ
126:参照バッファ
130:テクスチャ・データ・メモリ
132:ページ
133:最大層深さメモリ
134:ピラミッド形パターン・データ記憶機構
136:タイル・ロード・リスト
138:タイル・ピッチ・アレイ
140:タイル・ベース・アレイ
150:モニタ
Claims (18)
- 三次元図形データに応じて画像をレンダリングするレンダリング装置であって、
(a)前記レンダリング装置が前記三次元図形データを受け取ることができる経路であって、前記三次元図形データが、ポリゴン・データとさらにテクスチャを定義するテクスチャ・データを含み、前記テクスチャ・データがテクスチャ・サイズ・データおよび組になったパターン・データを含み、各組の前記パターン・データがテクスチャを異なる解像度で表わし、前記テクスチャ・データは、前記パターン・データから構成され、
(b)レンダリング・スクリーンの画素に対応する第1のメモリ・セルを含む画素・深さバッファと、
(c)前記レンダリング・スクリーンの画素に対応する第2のメモリ・セルを含む参照バッファと、
(d)前記ポリゴン・データと前記テクスチャ・サイズ・データだけを使用して初期ラスタ化操作を実行して、前記レンダリング・スクリーンの各画素にテクスチャ識別子、テクスチャ解像度を示し、整数部分と少数部分とを含む実数の層深さ値およびテクスチャ座標を生成し参照バッファ内に記憶し、テクスチャ識別子、レンダリング・スクリーン画素ごとに参照バッファに記憶された層深さおよびテクスチャ座標に応じて、前記画像をレンダリングするために必要なパターン・データを識別し、前記画像をレンダリングするのに必要であると識別された前記パターン・データを、前記経路を介して獲得し、前記バッファとの間のデータ転送速度よりも低いデータ転送速度を有する経路を介して獲得した前記パターン・データを使って前記画像を表す画像データを生成するレンダリング・エンジンと
を含むレンダリング装置であって、
前記レンダリング・エンジンは、
前記層深さ値の少数部分が0のとき、前記層深さ値の整数部分によって示された1つの組の前記パターン・データ間の第1の層内補間を実行して、前記画像データを引き出すテクスチャ色値を生成し、
前記層深さ値の少数部分が0以外のとき、前記第1の層内補間と、前記1つの組よりも高いレベルの解像度を有する別の組のパターン・データ間の第2の層内補間と、前記第1層内補間と前記第2の層内補間によって生成された結果の間の層間補間を実行して、前記画像データを引き出す前記テクスチャ色値を生成する
ことを特徴とするレンダリング装置。 - 前記パターン・データを、ピラミッド形データ構造で記憶するテクスチャ・メモリ
をさらに含み、
前記ピラミッド形データ構造は、
前記テクスチャを異なる解像度で表す前記パターン・データの各組に、記憶する層
を含み、
前記パターン・データの組のうちの1組は前記テクスチャを最も高い解像度で表わすこと
を特徴とする請求項1に記載のレンダリング装置。 - 前記レンダリング・エンジンは、初期ラスタ化操作を、さらに実行することによって、前記レンダリング・スクリーンのそれぞれの画素の輝度係数を生成し、
前記輝度係数は、前記参照バッファの前記第2のメモリ・セルのうちの1つに、さらに記憶され、
前記第2のメモリ・セルのうちの1つは、前記レンダリング・スクリーンの前記画素の1つに対応すること
を特徴とする請求項2に記載のレンダリング装置。 - 前記パターン・データは、
方形タイルに配列されたテクスチャ画素
に属し、
前記装置は、
前記テクスチャのタイル・ロード・リスト
をさらに含み、
前記タイル・ロード・リストは、
各前記タイルごとのエントリ
を含み、
前記レンダリング・エンジンは、
前記画像をレンダリングするために必要な前記パターン・データを識別したときに、前記参照バッファからテクスチャ座標を読み取って、前記画像をレンダリングするために必要なパターン・データがある前記タイルの一つを識別し、前記タイルの一つに関する前記タイル・ロード・リスト内のエントリを、前記画像をレンダリングするために、前記タイルの一つのパターン・データが必要であることを示すロード状態に設定すること
を特徴とする請求項2に記載のレンダリング装置。 - 前記レンダリング・エンジンは、
前記画像をレンダリングするのに必要な前記パターン・データを獲得するときに、
前記テクスチャの前記タイル・ロード・リストを検査して、ロード状態に設定された前記エントリを識別し、
前記タイル・ロード・リスト内のエントリが、ロード状態に設定されていると識別された各前記タイルの前記パターン・データを獲得し、
前記パターン・データを獲得した各前記タイルのタイル・ロード・リスト内のエントリを、ロード状態から存在状態に変更し、
存在状態が、前記タイルの一つの前記パターン・データが獲得されたことを示すこと
を特徴とする請求項4に記載のレンダリング装置。 - 前記パターン・データは、
方形タイルに配列されたテクスチャ画素
に属し、
さらに、前記レンダリング装置は、
前記テクスチャのタイル・ロード・リスト
を含み、
前記タイル・ロード・リストは、
各前記タイルの1つの前記パターン・データを獲得したことを示すエントリ
を含み、
前記レンダリング・エンジンは、
前記ピラミッド形データ構造における1つの前記層に1つの前記タイルの前記パターン・データを獲得するとき、前記タイル・ロード・リストを検査して、前記層の1つの直下の層にあるタイルであって、前記タイルの一つのパターン・データを合成することができるソース・タイルの1つのパターン・データが獲得されているかどうかを判定し、
前記ソース・タイルの前記パターン・データから、前記タイルの一つの前記パターン・データを合成すること
を特徴とする請求項2に記載のレンダリング装置。 - 前記パターン・データは、
方形タイルに配列されたテクスチャ画素
に属し、
前記レンダリング・エンジンは、
前記ピラミッド形データ構造の最上層を構成するタイルの一つの前記パターン・データを、前記経路を介してロードすることによって前記画像をレンダリングするために必要な前記パターン・データの初期部分を獲得し、
前記タイルの一つを、前記ピラミッド形データ構造で記憶し、
前記ピラミッド形データ構造に現存する前記パターン・データから、前記画像データを生成し、
より高い解像度で前記画像をレンダリングするためにパターン・データを必要とする前記ピラミッド形データ構造の前記タイルを識別し、
前記識別したタイルのパターン・データを獲得し、
前記画像データをより高い解像度で再生する
ことを特徴とする請求項2に記載のレンダリング装置。 - 前記レンダリング・エンジンは、前記画像をより高い解像度でレンダリングするために、パターン・データを必要とする前記タイルを識別し、前記識別したタイルの前記パターン・データを獲得し、前記画像をより高い解像度で再生するルーチンを、最低解像度の前記レンダリング・スクリーンの画素から、最高解像度の前記レンダリング・スクリーンへの順番に、1つの前記レンダリング・スクリーンの画素それぞれに対して、最良解像度の画像データが得られるまで、順次、繰り返して実行すること
を特徴とする請求項7に記載のレンダリング装置。 - 前記レンダリング・エンジンは、
(e)前記経路を介した前記パターン・データのローディングと、
(f)前記パターン・データの合成のいずれか一方によって、前記画像をレンダリングするために必要な前記パターン・データ
を獲得すること
を特徴とする請求項1に記載のレンダリング装置。 - 三次元図形データに応じて画像を、コンピュータによりレンダリングする方法であって、前記画像がレンダリング・スクリーンの画素に対応する画像データによって表わされ、前記三次元図形データが、ポリゴン・データとさらにテクスチャを定義するテクスチャ・データとを含み、前記テクスチャ・データが、テクスチャ・サイズ・データおよび組になったパターン・データとを含み、前記各組のパターン・データが前記テクスチャを異なる解像度で表し、前記テクスチャ・データは、前記パターン・データから構成され、
(a)前記ポリゴン・データと、前記テクスチャ・サイズ・データとを受け取る段階と、
(b)前記レンダリング・スクリーン前記画素ごとに、前記ポリゴン・データと、前記テクスチャ・サイズ・データとを使って、テクスチャ識別子、テクスチャ解像度を示す層深さ値およびテクスチャ座標を生成して記憶する初期ラスタ化操作を実行する段階と、
(c)前記レンダリング・スクリーン画素ごとに記憶した前記テクスチャ識別子、前記層深さおよび前記テクスチャ座標に応じて、前記画像をレンダリングするために必要な前記パターン・データを識別するパターン・データ識別操作を実行する段階と、
(d)パターン・データ識別操作によって、前記画像をレンダリングするために必要であると識別されたパターン・データを獲得するパターン・データ獲得操作を実行する段階と、
(e)前記パターン・データ獲得操作によって獲得された前記パターン・データを使用して、前記画像を表す前記画像データを生成する最終ラスタ化操作を実行する段階と、
(f)初期ラスタ化操作を実行する段階は、整数部分と少数部分を有する実数として層深さ値を生成し、
(g)最終ラスタ化操作を実行する段階は、さらに、
(g−1)前記層深さ値の少数部分が0のときに、前記層深さ値の整数部分によって識別された1つの組のパターン・データ間の第1の層内補間を実行して、テクスチャ色値から画像データを導き出す段階と、
(g−2)層深さ値の少数部分が0でないときに、前記第1の層内補間を実行して、前記組よりも高いレベルの解像度を有する別の組のパターン・データ間の第2の層内補間操作を実行し、前記第1層内補間と前記第2の層内補間操作によって生成された結果の間で層間補間を実行して、テクスチャ色値から前記画像データを導き出すこと
を前記コンピュータに実行させること
を特徴とする画像レンダリング方法。 - (h)テクスチャ・メモリを提供する段階と、
(i)テクスチャ・メモリに、前記パターン・データ獲得操作によって獲得されたパターン・データをピラミッド形データ構造で記憶する段階と
を含み、
前記ピラミッド形データ構造は、
前記テクスチャを異なる解像度で表す前記パターン・データの組がそれぞれ記憶された層
を含み、
前記パターン・データの組のうちの1組が前記テクスチャを最も高い解像度で表すこと
を特徴とする請求項10に記載の画像レンダリング方法。 - (b)前記初期ラスタ化操作は、
前記レンダリング・スクリーン画素の1つの画素の輝度係数を生成し、
前記輝度係数は、前記レンダリング・スクリーン前記画素のうちの1つの画素の前記テクスチャ識別子、前記層深さ値および前記テクスチャ座標とともに記憶されること
を特徴とする請求項11に記載の画像レンダリング方法。 - 前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
前記方法は、
(j)前記テクスチャのタイル・ロード・リストを提供する段階を含み、前記タイル・ロード・リストは各タイルのエントリ
をさらに含み、
(c)前記データ・パターン識別操作は、
テクスチャ座標を読み取って、前記画像をレンダリングするのに必要なパターン・データがある前記タイルの一つを識別する段階と、
前記タイルの一つのタイル・ロード・リスト内のエントリを、前記タイルの一つの前記パターン・データが前記画像をレンダリングするために必要とすることを示すロード状態に設定する段階と
を含む
ことを特徴とする請求項11に記載の画像レンダリング方法。 - (d)前記パターン・データ獲得操作は、
前記テクスチャの前記タイル・ロード・リストを検査して、ロード状態に設定されたエントリを識別する段階と、
前記タイル・ロード・リスト内のエントリがロード状態に設定されていると識別された前記各タイルの前記パターン・データを獲得する段階と、
前記パターン・データを獲得した前記各タイルの前記タイル・ロード・リスト内のエントリを、ロード状態から、前記各タイルの前記パターン・データを獲得したことを示す存在状態に変更する段階と
を含むことを特徴とする請求項13に記載の画像レンダリング方法。 - 前記パターン・データは、方形タイルに配列されたテクスチャ画素に属し、
前記方法は、
(n)前記テクスチャのタイル・ロード・リストを提供する段階を含み、前記タイル・ロード・リストは各前記タイルのエントリ
を含み、
前記エントリは、
前記タイルの1つの前記パターン・データが前記ピラミッド形データ構造で存在することを示す状態
を有し、
(d)前記パターン・データ獲得操作は、
前記ピラミッド形データ構造の1層にある1つのタイルの前記パターン・データを獲得するために実行され、前記タイル・ロード・リストを検査して、前記層の直下にある層にあるソース・タイルの前記パターン・データが前記ピラミッド形データ構造に存在し、前記ソース・タイルが、前記タイルの一つの前記パターン・データを合成することができるタイルであるかどうかを判定する段階と、
前記ソース・タイルの前記パターン・データが前記ピラミッド形データ構造に存在するときに、前記ソース・タイルの前記パターン・データから前記タイルの一つの前記パターン・データを合成する段階と
を含むこと
を特徴とする請求項11に記載の画像レンダリング方法。 - 前記パターン・データは、
方形タイルに配列されたテクスチャ画素
に属し、
前記ピラミッド形データ構造の最上層を構成する前記タイルの一つのパターン・データを受け取って、前記ピラミッド形データ構造に記憶し、前記パターン・データ識別動作を実行する前に、前記ピラミッド形データ構造に現存する前記パターン・データから前記画像データを生成する最終ラスタ化操作を実行し、
(c)前記パターン・データ識別操作は、より高い解像度で前記画像をレンダリングするために前記パターン・データが必要な前記ピラミッド形データ構造のタイルを識別し、
前記方法は、前記パターン・データ獲得操作の後で、前記最終ラスタ化操作をさらに繰り返して、前記画像データをさらに高い解像度で再生する段階
を含むこと
を特徴とする請求項11に記載の画像レンダリング方法。 - (b)前記最終ラスタ化操作、(c)前記パターン・データ識別操作および(d)前記パターン・データ獲得操作を、最低解像度の前記レンダリング・スクリーンの画素から、最高解像度の前記レンダリング・スクリーンへの順番に、1つの前記レンダリング・スクリーンの画素それぞれに対して、最良解像度の画像データが得られるまで、順次、繰り返して実行すること
を特徴とする請求項16に記載の画像レンダリング方法。 - (d)前記パターン・データ獲得操作は、
パターン・データのロード、または
パターン・データの合成のうちの1つによって、前記画像をレンダリングするのに必要な前記パターン・データを獲得する段階
を前記コンピュータに実行させること
を特徴とする請求項10に記載の画像レンダリング方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US126,935 | 1998-07-30 | ||
US09/126,935 US6184888B1 (en) | 1997-10-31 | 1998-07-30 | Method and apparatus for rapidly rendering and image in response to three-dimensional graphics data in a data rate limited environment |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000057370A JP2000057370A (ja) | 2000-02-25 |
JP2000057370A5 JP2000057370A5 (ja) | 2006-11-09 |
JP4448210B2 true JP4448210B2 (ja) | 2010-04-07 |
Family
ID=22427450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21803599A Expired - Lifetime JP4448210B2 (ja) | 1998-07-30 | 1999-07-30 | 3次元画像レンダリング装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4448210B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4502678B2 (ja) * | 2004-03-24 | 2010-07-14 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体、及び画像生成システム |
KR101799978B1 (ko) * | 2011-06-17 | 2017-11-22 | 삼성전자주식회사 | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 |
EP3334143B1 (en) * | 2011-08-31 | 2020-03-11 | Zazzle Inc. | Tiling process for digital image retrieval |
JP5750133B2 (ja) * | 2013-04-01 | 2015-07-15 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置、描画処理システム、および描画処理方法 |
-
1999
- 1999-07-30 JP JP21803599A patent/JP4448210B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000057370A (ja) | 2000-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100516704B1 (ko) | 이미지 랜더링 방법 및 랜더링 장치 | |
JP3678428B2 (ja) | クロマキー、透明性、およびフォグ動作を行う方法および装置 | |
US6545686B1 (en) | Cache memory and method for use in generating computer graphics texture | |
JP4540753B2 (ja) | グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム | |
TWI602148B (zh) | 用於紋理映射至非正交網格的梯度調整 | |
US6493858B2 (en) | Method and system for displaying VLSI layout data | |
US6104415A (en) | Method for accelerating minified textured cache access | |
US5790134A (en) | Hardware architecture for image generation and manipulation | |
US6518974B2 (en) | Pixel engine | |
US6522336B1 (en) | Three-dimensional graphics rendering apparatus and method | |
JP3103118B2 (ja) | テクスチャ合成装置及び方法 | |
US6232981B1 (en) | Method for improving texture locality for pixel quads by diagonal level-of-detail calculation | |
JP4663847B2 (ja) | 多重フェーズレンダリング方法および装置 | |
US20100046846A1 (en) | Image compression and/or decompression | |
JP2002304636A (ja) | 画像生成方法及び装置、画像処理プログラムを記録した記録媒体、画像処理プログラム | |
WO2005101320A1 (ja) | 画像生成装置および画像生成方法 | |
JP2002519769A (ja) | 画素ごとのmipマッピングおよび三線フィルタリングの改良された方法および装置 | |
JPH11250279A (ja) | コンピュ―タ画像形成ジェネレ―ションシステムにおけるシルエット/フットプリント解析を用いた異方性テクスチャマッピング | |
US7012614B2 (en) | Texture roaming via dimension elevation | |
JPH11506846A (ja) | 効率的なディジタル・モデリング及びテクスチャ・マッピングのための方法並びに装置 | |
US6756989B1 (en) | Method, system, and computer program product for filtering a texture applied to a surface of a computer generated object | |
JP2005301414A (ja) | 画像生成装置および画像生成方法 | |
EP1027682B1 (en) | Method and apparatus for rapidly rendering an image in response to three-dimensional graphics data in a data rate limited environment | |
JP4448210B2 (ja) | 3次元画像レンダリング装置及び方法 | |
JP4311877B2 (ja) | 副標本化テクスチャ端縁部のアンチエイリアシング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060728 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060921 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20071102 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071113 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090707 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090925 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20090928 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090930 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20091009 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100112 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100122 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130129 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4448210 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140129 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |