JP2006244426A - テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 - Google Patents
テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 Download PDFInfo
- Publication number
- JP2006244426A JP2006244426A JP2005063113A JP2005063113A JP2006244426A JP 2006244426 A JP2006244426 A JP 2006244426A JP 2005063113 A JP2005063113 A JP 2005063113A JP 2005063113 A JP2005063113 A JP 2005063113A JP 2006244426 A JP2006244426 A JP 2006244426A
- Authority
- JP
- Japan
- Prior art keywords
- texture
- dimensional
- parameter
- texel
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
【課題】 テクスチャマッピングの手法により、いろいろなテクスチャが使われるため、資源管理が容易ではない。
【解決手段】 シェーダユニット30の描画演算処理部34は、テクスチャ構造体52を参照するための3次元テクセル座標値(u,v,w)を指定したテクスチャ命令をテクスチャユニット70に対して発行する。テクスチャユニット70のテクスチャ読み出し部76は、シェーダユニット30から3次元テクセル座標値(u,v,w)を受け取り、テクスチャ構造体52の内、第3テクセル座標値wに対応するテクスチャから2次元テクセル座標(u,v)に対応するテクセル値を読み出す。フィルタ74は、レジスタファイル72に設定されたフィルタリングモードにしたがって、テクスチャ読み出し部76により読み出されたテクセル値の補間を行い、補間値をシェーダユニット30の描画演算処理部34に与える。
【選択図】 図2
【解決手段】 シェーダユニット30の描画演算処理部34は、テクスチャ構造体52を参照するための3次元テクセル座標値(u,v,w)を指定したテクスチャ命令をテクスチャユニット70に対して発行する。テクスチャユニット70のテクスチャ読み出し部76は、シェーダユニット30から3次元テクセル座標値(u,v,w)を受け取り、テクスチャ構造体52の内、第3テクセル座標値wに対応するテクスチャから2次元テクセル座標(u,v)に対応するテクセル値を読み出す。フィルタ74は、レジスタファイル72に設定されたフィルタリングモードにしたがって、テクスチャ読み出し部76により読み出されたテクセル値の補間を行い、補間値をシェーダユニット30の描画演算処理部34に与える。
【選択図】 図2
Description
この発明は、描画データを演算処理するテクスチャ処理装置、描画処理装置、およびテクスチャ処理方法に関する。
3次元コンピュータグラフィックスでは、一般的に3次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
テクスチャマッピングに使われるテクスチャは、通常は2次元テクスチャであるが、より質感の高い表現をするために、奥行き方向にもテクスチャをもたせたボリュームテクスチャが使われることがある。ボリュームテクスチャは、描画対象物の断面を描画したり、雲や炎のような3次元構造をもつ描画対象物や半透明の描画対象物にテクスチャをマッピングするために用いられる。
また、周囲の環境をテクスチャとして描画表面に映り込ませる環境マッピングが行われることがある。描画対象物を囲む仮想立方体の各面に環境テクスチャをあらかじめ投影しておき、立方体の各面の環境テクスチャを描画表面に写像するキューブ環境マッピングでは、環境テクスチャは6面のキューブマップの構成になる。
このように、テクスチャマッピングの手法によってテクスチャにはいろいろな種類があり、その手法に特有のテクスチャ演算を専用に実行できるハードウエアを設けると、描画処理装置の回路規模が大きくなり、装置コストが高くなる。また、テクスチャマッピング手法に応じてハードウエアを構成すると、レジスタやメモリなどの資源管理も複雑になる。また、各種テクスチャを利用するために特有のパラメータを設定したり、特有の命令を実行するなど、プログラミングの手間もかかる。
本発明はこうした課題に鑑みてなされたものであり、その目的は、各種テクスチャを統一的に利用することができるリソース管理の面で優れた描画処理技術を提供することにある。また、別の目的は、複数のテクスチャを効率良く切り替えて利用することのできる描画処理技術を提供することにある。
上記課題を解決するために、本発明のある態様のテクスチャ処理装置は、テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を格納するテクスチャ記憶部と、描画対象物の表面に適用されるテクスチャについて前記第3パラメータの指定と前記表面上の2次元パラメータ座標値の指定とを受け、前記テクスチャ構造体の内、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出すテクスチャ読み出し部と、読み出された前記テクセル値を補間して、前記描画対象物の表面に適用されるテクスチャに関する値を算出するフィルタとを含む。前記第3パラメータとして、前記テクスチャ構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記テクスチャ構造体が統一的に参照される。
ここで、テクスチャが描画対象物の表面に適用されるとは、テクスチャのカラー値などが描画面にマッピングされることの他、テクスチャに関する値、たとえば法線ベクトルの値や関数値などが描画面に適用されることも含む趣旨である。
本発明の別の態様は、描画処理装置である。この装置は、テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を格納するテクスチャ構造体を格納するテクスチャ記憶部と、描画対象物の表面に適用されるテクスチャについて前記第3パラメータの指定と前記表面上の2次元パラメータ座標値の指定とを受け、前記テクスチャ構造体の内、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出して、前記描画対象物の表面に適用されるテクスチャに関する補間値を算出するテクスチャ処理部と、前記テクスチャ処理部から出力される前記テクスチャに関する補間値を用いて、前記描画対象物の描画演算処理を行う描画処理部とを含む。前記テクスチャ構造体は、前記描画対象物の存在する空間内に仮想的に設けられた立方体の面に投影された環境テクスチャを面数だけ設けた構造を有する。前記描画処理部は、前記描画対象物の表面の反射ベクトルにもとづいて、前記表面に写像される環境テクスチャの面番号とその面内における2次元パラメータ座標値とを求め、求めた面番号を前記第3パラメータとして2次元パラメータ座標値とともに前記テクスチャ処理部に対して指定し、前記テクスチャ処理部は、前記テクスチャ構造体の内、前記描画処理部により前記第3パラメータとして指定された前記面番号に対応する環境テクスチャから、前記描画処理部により指定された前記2次元パラメータ座標値に対応するテクセル値を読み出し、前記描画対象物の表面に適用されるテクスチャに関する補間値を算出する。
本発明のさらに別の態様は、テクスチャのデータ構造である。このテクスチャのデータ構造は、テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられた構造体を有し、前記2次元パラメータ座標値および前記第3パラメータを指定したテクスチャの読み出し命令により、指定された第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応する前記テクセル値のサンプリングが可能に構成され、前記第3パラメータとして、前記構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記構造体の統一的な参照が可能に構成されてなる。
本発明のさらに別の態様は、テクスチャ処理方法である。この方法は、テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を保持したテクスチャメモリに対して、描画対象物の表面に適用されるテクスチャについて前記第3パラメータと前記表面上の2次元パラメータ座標値を指定したテクスチャの読み出し命令を実行することにより、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値をサンプリングするステップと、サンプリングされた前記テクセル値を補間して、前記描画対象物の表面に適用されるテクスチャに関する値を算出するステップとを含み、前記第3パラメータとして、前記テクスチャ構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記テクスチャ構造体が統一的に参照される。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、テクスチャマッピングの利便性を高めるとともに、テクスチャ処理の効率を向上させることができる。
図1は、実施の形態に係る描画処理装置100の構成図である。描画処理装置100は、3次元モデル情報にもとづいて2次元画面に表示するための描画データを生成するレンダリング処理を行う。
ラスタライザ10は、メモリもしくは他のプロセッサや頂点シェーダなどから描画対象となるプリミティブの頂点データを取得し、描画するスクリーンに対応したピクセル情報に変換する。描画プリミティブは、3次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位であり、頂点単位で表されるデータである。ラスタライザ10は、3次元空間上の描画プリミティブを投影変換により描画平面上の図形に変換するビュー変換を行い、さらに、描画平面上の図形を描画平面の水平方向に沿ってスキャンしながら、1列毎に量子化されたピクセルに変換する。
ラスタライザ10により、描画プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ値、奥行きを示すZ値、テクスチャ属性を参照するためのパラメータ座標であるUV座標値などを含むピクセル情報が算出される。
ラスタライザ10は、1つ以上のピクセルを含む所定サイズのピクセル集合の単位で上記のラスタライズ処理を行い、ラスタライズ処理後のピクセル集合をバッファリングしながら、ピクセル集合の単位でシェーダユニット30に順次供給する。ラスタライザ10からシェーダユニット30に供給されたピクセル集合は、シェーダユニット30においてパイプライン処理される。ピクセル集合は、ラスタライザ10が一度に処理するピクセルをまとめたものであり、ラスタライズ処理の単位であり、また同時に、シェーダユニット30における描画演算処理の単位にもなっている。
シェーダユニット30は、非同期動作する複数のピクセルシェーダを含み、それぞれが担当するピクセル集合を処理することでピクセルの描画処理を並列に実行する。シェーダユニット30は、ラスタライザ10からピクセル集合単位で分配されるピクセル情報をもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャユニット70から得られるテクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、メモリ50にピクセルデータを書き込む。
テクスチャユニット70は、シェーダユニット30において処理されるピクセルにテクスチャデータをマッピングする処理を行う。本実施の形態では、テクスチャユニット70は、複数の2次元テクスチャを設けたテクスチャ構造体(以下、単に「テクスチャ構造体」と呼ぶ)を利用する。テクスチャ構造体に含まれる2次元テクスチャには、テクスチャのカラー値などの属性値が2次元パラメータ座標(u,v)に対応づけてテクセル値として格納される。
なお、テクスチャ構造体に含まれる2次元テクスチャは、特別な場合として、テクセルの位置座標として第1パラメータuだけをもたせた1次元テクスチャであってもよい。2次元テクスチャにおいて、第2パラメータvが常に0であるとして、v方向を無視することで、1次元テクスチャを2次元テクスチャの特殊な場合として扱うことができる。そこで、以下では、特殊な場合として1次元テクスチャも含める趣旨でテクスチャの次元を一般的に2次元として説明する。
テクスチャ構造体に含まれる複数の2次元テクスチャの少なくとも1つからテクセル値を参照するために、テクスチャ構造体に含まれる2次元テクスチャの少なくとも1つを指定するための第3パラメータwが、テクセル位置を指定する2次元パラメータ座標(u,v)における第1パラメータuおよび第2パラメータvとは別に設けられる。
ポリゴン面上のピクセルにマッピングされるテクスチャは、第3パラメータwとポリゴン面上に定義される2次元パラメータ座標(u,v)との組み合わせた3次元パラメータ座標(u,v,w)によって指定される。以下、パラメータ座標をテクセル座標と呼び、第3パラメータwも第3テクセル座標wと呼ぶが、第3テクセル座標wは、基本的に、テクスチャ構造体に含まれる複数の2次元テクスチャの少なくとも1つを指定するために使われる値であり、2次元テクセル座標は、テクスチャの幅と高さに対応するが、第3テクセル座標は、必ずしもテクスチャの奥行きに対応するものではないことに留意する。第3テクセル座標wがどのように意味づけられるかは、テクスチャ構造体に含まれる複数の2次元テクスチャ間の関連性に依存するからである。
テクスチャユニット70は、シェーダユニット30からピクセルにマッピングされるテクスチャ構造体の3次元テクセル座標値(u,v,w)を取得し、テクスチャ構造体の内、第3テクセル座標wに対応する2次元テクスチャから2次元テクセル座標値(u,v)に対応するテクセル値を読み出し、読み出したテクセル値を補間し、シェーダユニット30にその補間値を供給する。
シェーダユニット30は、さらに、メモリ50に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、メモリ50のピクセルデータを更新する。
メモリ50は、シェーダユニット30により生成されたピクセルデータをスクリーン座標で格納するフレームバッファとして機能する領域をもつ。フレームバッファに格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファに記憶されたピクセルデータは、表示装置に出力されて表示される。
図2は、シェーダユニット30およびテクスチャユニット70の構成を示す図である。
シェーダユニット30のレジスタファイル32、テクスチャユニット70のレジスタファイル72にはそれぞれ、テクスチャマッピングを行うために必要なコンフィグレーション情報が設定される。コンフィグレーション情報には、メモリ50に格納されたテクスチャ構造体52を一括して参照するためのベースアドレス、テクスチャマッピングの際のフィルタリングモードなどの各種パラメータが含まれる。
シェーダユニット30の描画演算処理部34は、レジスタファイル32に設定されたコンフィグレーション情報にもとづいて、テクスチャ構造体52からテクスチャを参照するための3次元テクセル座標値(u,v,w)を指定したテクスチャ命令をテクスチャユニット70に対して発行することにより、テクスチャユニット70からピクセルにマッピングされるテクスチャの補間値を取得する。描画演算処理部34は、テクスチャユニット70から取得したテクスチャの補間値をもちいて最終的なピクセルのカラー値を算出し、描画データ54としてメモリ50に書き込む。
テクスチャユニット70のテクスチャ読み出し部76は、シェーダユニット30から3次元テクセル座標値(u,v,w)を受け取る。テクスチャ読み出し部76は、レジスタファイル72に保持されたテクスチャ構造体52のベースアドレスに、第3テクセル座標値wに依存して決まるオフセット値を加算することにより、指定された第3テクセル座標値wに対応するテクスチャの参照アドレスを生成する。テクスチャ読み出し部76は、その参照アドレスで指定されるテクスチャから、レジスタファイル72に設定されたフィルタリングモードのしたがって、2次元テクセル座標(u,v)に対応するテクセル値を読み出す。テクスチャ読み出し部76は、読み出したテクセル値をフィルタ74に与える。
なお、テクスチャ読み出し部76は、メモリ50に格納されたテクスチャ構造体52を直接参照せずに、テクスチャユニット70内に設けられたキャッシュメモリにキャッシュされたテクスチャ構造体52を参照するように構成してもよい。
描画演算処理部34は、3次元テクセル座標値(u,v,w)以外に、描画対象オブジェクトの描画詳細度を示すLOD(level of detail)値をパラメータとして指定したテクスチャ命令を発行することもできる。その場合、テクスチャ読み出し部76は、ミップマップテクスチャの構造をもつテクスチャ構造体52において、LOD値に対応する解像度レベルのミップマップテクスチャを参照する。
フィルタ74は、レジスタファイル72に設定されたフィルタリングモードにしたがって、テクスチャ読み出し部76により読み出されたテクセル値の補間を行い、補間値をシェーダユニット30の描画演算処理部34に与える。
フィルタ74は、多段構成の内挿演算器を用いて、u、v2方向のバイリニア補間結果に対して、さらにw方向またはミップマップの解像度レベルの方向に補間を行うトライリニアサンプリングを実行することができる。また、フィルタ74は、多段構成の内挿演算器を選択的に機能させることにより、トライリニアサンプリング以外に、モノリニアサンプリングやバイリニアサンプリングも実行することができる。
モノリニアサンプリングでは、第3テクセル座標wに対応する2つの近傍テクスチャのそれぞれから、指定テクセル座標(u,v)の最近傍テクセルがサンプリングされ、2つの近傍テクスチャ間で補間される。また、LOD値が指定された場合は、ミップマップの解像度レベルの内、LOD値に対応する2つの近傍解像度レベルのテクスチャのそれぞれから、指定テクセル座標(u,v)の最近傍テクセルがサンプリングされ、2つの近傍解像度レベル間で補間される。
バイリニアサンプリングでは、第3テクセル座標wに対応するテクスチャから指定テクセル座標(u,v)の4近傍テクセルがサンプリングされ、u、vの2方向に補間される。また、LOD値が指定された場合は、ミップマップの解像度レベルの内、LOD値に対応するテクスチャから指定テクセル座標(u,v)の4近傍テクセルがサンプリングされ、u、vの2方向に補間される。
トライリニアサンプリングでは、第3テクセル座標wに対応する2つの近傍テクスチャのそれぞれから、指定テクセル座標(u,v)の4近傍テクセルがサンプリングされ、各テクスチャでu、vの2方向に補間された上で、2つの近傍テクスチャ間でさらに補間される。また、LOD値が指定された場合は、ミップマップの解像度レベルの内、LOD値に対応する2つの近傍解像度レベルのテクスチャのそれぞれから、指定テクセル座標(u,v)の4近傍テクセルがサンプリングされ、各解像度レベルでu、vの2方向に補間された上で、2つの近傍解像度レベル間でさらに補間される。
フィルタ74は、レジスタファイル72に設定されたフィルタリングモードによっていずれかの補間に切り替えて実行する。なお、フィルタ74は、いずれの内挿演算器も機能させずに、指定テクセル座標(u,v)の最近傍テクセルをサンプリングしてそのまま出力するポイントサンプリングも実行することができる。
さらに、フィルタ74は、内挿演算器の差分器、乗算器、および加算器の機能構成を適宜流用して、演算処理に多少の変形を加えることにより、線形補間以外の演算を行うことも可能であり、バイリニア補間やトライリニア補間以外の有用な演算を行うこともできる。これにより、フィルタ74は、後述のテクセル座標(u,v)の偏差分を求める計算や、テクセル座標(u,v)がマッピングされる描画面のLOD値を求める計算を実行することができる。
図3は、図2のメモリ50に格納されたテクスチャ構造体52のデータ構造を説明する図である。テクスチャ構造体52は、既に説明したように、2次元テクスチャを複数設けたものであり、第3パラメータwによりいずれかの2次元テクスチャを指定できるように構成されている。ここでは、複数の2次元テクスチャを格納するデータ構造の一例として、複数の2次元テクスチャが同図の縦方向に配置された構成を説明するが、第3パラメータwによっていずれかの2次元テクスチャをアドレス指定できる構成であれば、複数の2次元テクスチャのメモリ上での配置の形態は問わない。
また、以下では、便宜上、同図のように縦方向に並べて配置された複数の2次元テクスチャの縦方向について述べる場合に、「レイヤ」という言葉を使うが、これは、複数の2次元テクスチャが層状に関連性をもつことを意味するものではなく、単に縦方向の並びの位置を指しているだけである。
さらに、各レイヤの2次元テクスチャは、段階的に解像度を異ならせた一組のミップマップテクスチャの構造をもつことができる。同図の横方向にはミップマップの解像度レベル(以下、単に「ミップレベル」という)が図示されている。
ミップレベル0について、縦方向に見た場合、レイヤ0、レイヤ1、レイヤ2の順に、高さと幅が共通するテクスチャA0、テクスチャA1、テクスチャA2が配置される。ミップレベル1についても、レイヤ0、レイヤ1、レイヤ2の順に、高さと幅が共通するテクスチャB0、テクスチャB1、テクスチャB2が配置される。ミップレベル1のテクスチャB0〜B2の幅と高さはそれぞれ、ミップレベル0のテクスチャA0〜A2の幅と高さの半分である。同様に、ミップレベル2のレイヤ0〜2に配置されるテクスチャC0〜C2の幅と高さはそれぞれ、ミップレベル1のレイヤ0〜2のテクスチャB0〜B2の幅と高さのさらに半分である。
横方向に見た場合、レイヤ0には、ミップレベル0のテクスチャA0、ミップレベル1のテクスチャB0、ミップレベル2のテクスチャC0の順にミップレベルの異なるテクスチャが配置されている。同様に、レイヤ1、レイヤ2にもミップレベルの異なるテクスチャが格納されている。
テクスチャ構造体52のレイヤ数およびミップレベル数は、レジスタファイル72の設定により変更可能である。テクスチャ構造体52にミップマップテクスチャの構造を設けるかどうかもレジスタファイル72の設定により選択することができる。ミップマップテクスチャを用いない場合は、同一サイズの2次元テクスチャが各レイヤに一つずつ設けられた構成となる。図3で言えば、ミップマップテクスチャを用いないテクスチャ構造体52は、ミップレベル0のテクスチャA0、A1、A2だけが存在するデータ構造となる。
また、テクスチャ構造体52に、レイヤの構造を設けるかどうかもレジスタファイル72の設定により選択可能である。レイヤの構造を設けない場合は、複数のミップレベルのテクスチャが1レイヤ分だけ設けられた構成となる。図3で言えば、レイヤ構造を設けないテクスチャ構造体52は、レイヤ0のテクスチャA0、B0、C0だけが存在するデータ構造となる。テクスチャ構造体52には、このようなレイヤが一つでミップレベルが複数のテクスチャも特別な場合として含まれる。さらにレイヤが1つでミップレベルを設けない通常の1枚のテクスチャもテクスチャ構造体52の特別な場合として扱う。
テクスチャ読み出し部76は、メモリ50に格納されたテクスチャ構造体52に対して、レイヤ番号NとミップレベルMを指定することにより、指定したレイヤNに属する指定したミップレベルMのテクスチャを参照する。たとえば、レイヤ2、ミップレベル1を指定すると、レイヤ2に属するミップレベル1のテクスチャB1を参照することができる。テクスチャ読み出し部76は、指定したレイヤおよびミップレベルのテクスチャ内において、2次元テクセル座標(u,v)を指定することで、テクスチャのテクセル値をサンプリングする。
テクセル値は、テクスチャに関する値として、RGB3色のカラー値であってもよく、カラー値のインデックスであってもよい。後者の場合は、カラールックアップテーブルを参照してインデックスが実際のカラー値に変換される。また、テクスチャマッピングの一例としてバンプマッピングを行う場合は、テクスチャに法線ベクトルを格納することになり、その場合、テクセル値は法線ベクトルの値である。また、パラメータにもとづいてプログラムによってテクスチャを生成するプロシージャルテクスチャ(procedural texture)を利用する場合は、テクセル値はパラメータ値や関数値となる。
図4〜図6を参照して、テクスチャ構造体52からのテクセル値のサンプリングのいくつかの例を説明する。
図4は、バイリニアサンプリングを説明する図である。テクスチャ読み出し部76は、第3テクセル座標wに対応するレイヤとして参照レイヤNを求め、また、指定されたLOD値に対応するミップレベルとして参照ミップレベルMを求める。テクスチャ読み出し部76は、参照レイヤNと参照ミップレベルMにより指定されるテクスチャ51aから、テクセル座標値(u,v)で表される点の近傍にある4つのテクセル53aを読み出す。
フィルタ74は、この4近傍のテクセル53aの値をu方向およびv方向に線形補間することにより、テクセル座標値(u,v)に対応する補間値を求める。
図5は、ミップレベル間のトライリニアサンプリングを説明する図である。テクスチャ読み出し部76は、第3テクセル座標wに対応するレイヤとして参照レイヤNを求め、また、指定されたLOD値に対応するミップレベルとして、2つの参照ミップレベルM、M+1を求める。テクスチャ読み出し部76は、参照レイヤNと第1参照ミップレベルMにより指定される第1テクスチャ51aから、テクセル座標値(u,v)で表される点の近傍にある4つのテクセル53aを読み出す。また、テクスチャ読み出し部76は、参照レイヤNと第2参照ミップレベルM+1により指定される第2テクスチャ51aから、テクセル座標値(u,v)で表される点の近傍の4つのテクセル53bを読み出す。
フィルタ74は、第1参照ミップレベルMの4近傍のテクセル53aの値と、第2参照ミップレベルの4近傍のテクセル53bの値を、u、v、ミップレベルの3方向に線形に補間するトライリニア補間を行うことにより、テクセル座標値(u,v)に対応する補間値を算出する。
図6は、レイヤ間のモノリニアサンプリングを説明する図である。テクスチャ読み出し部76は、第3テクセル座標wに対応するレイヤとして、2つの参照レイヤN、N+1を求め、また、指定されたLOD値に対するミップレベルとして参照ミップレベルMを求める。テクスチャ読み出し部76は、第1参照レイヤNとミップレベルMにより指定される第1テクスチャ51cから、テクセル座標値(u,v)で表される点の最近傍にあるテクセル53cを読み出す。また、テクスチャ読み出し部76は、第2参照レイヤN+1とミップレベルMにより指定される第1テクスチャ51dから、テクセル座標値(u,v)で表される点の最近傍にあるテクセル53dを読み出す。
フィルタ74は、第1参照レイヤNのテクセル53cの値と、第2参照レイヤN+1のテクセル53dの値を線形補間することにより、テクセル座標値(u,v,w)に対応する補間値を算出する。
図6において、2つの参照レイヤN、N+1の各々において、テクセル座標値(u,v)で表される点の近傍にある4つのテクセルをサンプリングし、2つの参照レイヤN、N+1間でu、v、wの3方向に線形補間するトライリニア補間を行うこともできる。
図7は、テクスチャユニット70によるテクスチャマッピング処理の手順を説明するフローチャートである。
シェーダユニット30は、テクスチャユニット70に対して、テクスチャ構造体52を参照するためのテクセル座標値(u,v,w)とLOD値を指定する(S10)。ここで、シェーダユニット30から入力されるLOD値は、後述のテクセル座標の偏差分により決まる描画表面上の内部的なLOD値と区別する意味で、外部LOD値と呼ぶ。外部LOD値は、描画対象物のZ値などに応じて決められる。
より具体的には、シェーダユニット30は、外部LOD値と第3テクセル座標値wをパラメータに指定したテクスチャセット命令tsetを発行し、その後、2次元テクセル座標値(u,v)をパラメータに指定したテクスチャロード命令tldを発行する。テクスチャユニット70は、テクスチャロード命令tldの発行を受けて、テクスチャマッピングの動作を開始する。
テクスチャユニット70は、入力されたパラメータのデータ型の変換を行う。シェーダユニット30は、浮動小数点数で演算を行うが、テクスチャユニット70は、テクスチャマッピングのハードウエアを効率良く利用するために、計算を速く実行できる固定小数点数を用いる。そこで、テクスチャユニット70は、入力されたテクセル座標などのパラメータのデータ型を浮動小数点から固定小数点に変換する。
フィルタ74は、テクセル座標(u,v)におけるu方向、v方向の傾きを示す偏差分を次のように算出する(S12)。
縦横2ピクセルの描画領域において、4ピクセル(x,y)、(x+1,y)、(x,y+1)、(x+1,y+1)のそれぞれのテクセル座標が(U0,V0)、(U1,V1)、(U2,V2)、(U3,V3)であるとする。
フィルタ74は、ピクセル座標(x,y)の変化に対するテクセル座標(u,v)の変化量du/dx、du/dy、dv/dx、dv/dyを次式の偏差分により求める。
du/dx=((U1−U0)+(U3−U2))/2
dv/dx=((V1−V0)+(V3−V2))/2
du/dy=((U2−U0)+(U3−U1))/2
dv/dy=((V2−V0)+(V3−V1))/2
du/dx=((U1−U0)+(U3−U2))/2
dv/dx=((V1−V0)+(V3−V2))/2
du/dy=((U2−U0)+(U3−U1))/2
dv/dy=((V2−V0)+(V3−V1))/2
これらの偏差分は、テクセル座標がスクリーンのx方向、y方向に局所的に変化する量を示すものであり、テクスチャがマッピングされる曲面のLOD値を求めるために利用される。
フィルタ74は、テクセル座標(u,v)の偏差分にもとづいて、次のようにテクセル座標(u,v)におけるLOD値を算出する(S14)。
Px=[(du/dx)2+(dv/dx)2]1/2
Py=[(du/dy)2+(dv/dy)2]1/2
LOD=log2(max(Px、Py))
Py=[(du/dy)2+(dv/dy)2]1/2
LOD=log2(max(Px、Py))
このようにして計算されるテクセル座標(u,v)のLOD値を、シェーダユニット30から指定される外部LOD値と区別する意味で内部LOD値と呼ぶ。フィルタ74は、内部LOD値に外部LOD値をオフセットとして加算する。外部LOD値によりオフセットされたLOD値をバイアスLOD値と呼ぶ。
フィルタ74は、バイアスLOD値に応じてそのテクスチャを描画する際のフィルタを選択する(S16)。フィルタには、縮小フィルタと拡大フィルタがあり、バイアスLOD値が所定の値以下の場合、すなわち描画詳細度が所定のレベル以下である場合は、テクスチャの拡大を行う拡大フィルタを選択し、そうでない場合、すなわち描画詳細度が所定のレベルよりも高い場合は、テクスチャの縮小を行う縮小フィルタを選択する。
フィルタ74は、ミップレベルにおける補正処理を行う(S18)。テクスチャユニット70は、まずステップS14で求めたバイアスLOD値によってミップレベルを求める。ミップレベル間の補間を行わない場合は、バイアスLOD値に0.5を加算し、整数値に丸めることによりLOD値に最も近いミップレベルMを求める。ミップレベル間の補間を行う場合は、バイアスLOD値を整数値に丸めた値を第1ミップレベルMとして求め、第1ミップレベルに1を加えた値を第2ミップレベルM+1として求める。これによりバイアスLOD値の近傍の2つのミップレベルが得られる。
次に、フィルタ74は、こうして求めたミップレベルMにもとづいてテクセル座標値(u,v)とテクスチャサイズを補正する。テクセル座標値(u,v)は、ミップレベル0のテクスチャについて指定されたものであるから、ミップレベルMのテクスチャを参照するときは、ミップレベルMのテクスチャサイズに対応した値に補正する必要がある。ミップレベルMに対応した第1、第2テクセル座標値u、vは、元のミップレベル0における第1、第2テクセル座標値u、vをそれぞれ2Mで除算することにより得られる。なお、w方向はミップレベルとは無関係であるから、第3テクセル座標値wは補正されない。
また、フィルタ74は、レジスタファイル72に設定されているミップレベル0のテクスチャサイズをミップレベルMに対応するサイズに補正する。これは元のミップレベル0のテクスチャの高さおよび幅をそれぞれ2Mで除算することにより得られる。
テクスチャ読み出し部76は、テクスチャ構造体52の2次元テクスチャ内でテクセルを指定するテクセル番号を求める(S20)。テクスチャ内に格納されたテクセルを2次元配列とみなしたとき、テクセル番号は、テクスチャ内のテクセルを指定する2次元配列のインデックスである。
テクセル座標値(u,v)は実数値であるが、テクセル番号は、テクセル座標値(u,v)を整数に丸めた添え字(i,j)で表される。テクセル座標(u,v)で示される点の4近傍のテクセルをテクセル番号で指定する場合は、テクセル番号は(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)の4つになる。
テクスチャ構造体52の場合、2次元テクスチャがレイヤ方向とミップレベル方向に複数設けられているため、レイヤ番号を指定する第3インデックスk、ミップレベルを指定する第4インデックスmをさらに追加して、テクセル番号を(i,j,k,m)で表す。たとえば、2つのレイヤN、N+1の間で内挿を行う場合は、テクセル番号を(i,j,N,M)、(i,j,N+1,M)と指定する。また、2つのミップレベルM、M+1の間で内挿を行う場合は、テクセル番号を(i,j,N,M)、(i,j,N,M+1)と指定する。
フィルタ74は、フィルタリングに使用する内挿係数を算出する(S22)。内挿係数は、ミップレベルMに対応するように補正された第1、第2テクセル座標値u、vの小数部で与えられる。u方向の内挿係数αはミップレベルMにおける第1テクセル座標uの値の小数部、v方向の内挿係数βはミップレベルMにおける第2テクセル座標vの値の小数部である。また、w方向の補間、すなわちレイヤ間の内挿を行う場合は、w方向の内挿係数γは、第3テクセル座標値wの値の小数部で与えられる。LOD値に応じた補間、すなわちミップレベル間で内挿を行う場合は、ミップレベル方向の内挿係数δは、バイアスLOD値の小数部で与えられる。
テクスチャ読み出し部76は、テクスチャの参照アドレスを算出する(S24)。テクスチャ読み出し部76は、コンフィグレーション時にレジスタファイル72に設定されたテクスチャ構造体52のベースアドレスに、各レイヤに属する各ミップレベルのテクスチャのサイズをレイヤ番号がN、ミップマップレベルがMになるまで加算していくことで、指定されたレイヤ番号NおよびミップレベルMのテクスチャを参照するためのアドレスを算出する。
テクスチャ読み出し部76は、ステップS24で得たテクスチャの参照アドレスを基準にして、ステップS20で得たテクセル番号で指定されたテクセルをサンプリングする(S26)。ポイントサンプリングの場合は、1つのテクセルがサンプリングされるが、バイリニア補間をする場合は、4近傍テクセルがサンプリングされる。
フィルタ74は、サンプリングされたテクセルをバイリニア補間、トライリニア補間などによりフィルタリングする(S28)。フィルタ74は、フィルタリングにより得られた補間値をシェーダユニット30で扱う浮動小数点にフォーマット変換して出力する(S30)。
上記のテクスチャマッピング処理の手順では説明を省略したが、テクセル座標がテクスチャをサンプルしない位置にあるときのラップモードとして、クランプ処理、リピート処理のいずれかが行われる。テクセルをサンプリングする際、テクスチャ画像のエッジをまたがることがあるため、ラップモードの処理が必要となる。クランプ処理では、テクセル座標を所定の値の範囲にクランプする。リピート処理では、テクセル番号を循環させることで、同じテクスチャが繰り返されるように扱う。
以上で述べた本実施の形態の描画処理装置100が利用するテクスチャ構造体52は、一般的には、3次元テクセル座標(u,v,w)で統一的に参照できるようにした複数の2次元テクスチャの集まりであるが、構成上は、複数の2次元テクスチャ間にいかなる関連性をもたせても、あるいは、何ら関連性をもたせなくてもよく、用途に合わせて自由に利用することができる。
たとえば、テクスチャ構造体52は、いわゆる「レイヤテクスチャ」として利用することができる。レイヤテクスチャは、複数の2次元テクスチャが互いに関連性をもって層をなして形成されたものであり、アプリケーションによってはテクスチャを層状に重ね合わせることを前提とすることもある。この場合、第3テクセル座標wは、レイヤ番号を指定するために用いられる。なお、上記の実施の形態でテクスチャ構造体52を説明する際に用いた「レイヤ」という言葉は、「レイヤテクスチャ」でいうところの狭義の意味でのレイヤを意味するものではなく、単にテクスチャ構造体52内に並べて配置された複数の2次元テクスチャの位置を特定する意味で用いた。
また、テクスチャ構造体52は、いわゆる「ボリュームテクスチャ」として利用することもある。ボリュームテクスチャは、複数の2次元テクスチャの間に奥行き方向の関連性をもたせ、幅と高さの他、奥行きの次元をもつテクスチャとして構成される。この場合、第3テクセル座標wは、奥行き値を指定するために用いられる。ボリュームテクスチャでは、テクスチャ構造体52のレイヤは奥行きに対応するため、レイヤ間の補間が意味をなす。
なお、上記の実施の形態では、テクスチャ構造体52の最大レイヤ数は、ハードウエアの実装によって、8、16、32などに制限されることになるが、テクスチャ構造体52をボリュームテクスチャとして利用する場合、奥行き方向をさらに増やしたいことがある。たとえば、プロシージャルテクスチャを利用する場合、パーリン(Perlin)によるノイズ生成アルゴリズムにより、ノイズテクスチャをいくつも生成し、それらを何層にも重ね合わせることで質感をもたせる。このような3次元構造のテクスチャでは、奥行き方向として、たとえば64レイヤを必要とすることもある。
このような場合、テクスチャ構造体52の各テクスチャのテクセルのコンポーネントをレイヤとして利用することで、レイヤ数を増やすことが可能である。テクスチャの各テクセルは、一般にはRGB値とアルファ値を格納するために4コンポーネントをもつ。このコンポーネントをレイヤに対応づけて、各テクセルを4レイヤの値のセットとして扱うことにすれば、仮にテクスチャ構造体52の最大レイヤ数が16であっても、16×4=64レイヤとして扱うことができる。これにより、ノイズテクスチャとして、64レイヤの多重化が可能になる。
シェーダユニット30は、ノイズテクスチャを生成するために、第3テクセル座標値wとして、0から63までの値を指定したテクスチャ命令を実行することになる。しかし、テクスチャユニット70では、あくまでも16レイヤのテクスチャ構造体52を処理するため、テクスチャ読み出し部76は、第3テクセル座標値wを4で除算した商と余りを求め、商によって0から15までのレイヤ番号を取得し、余りによってコンポーネント番号を取得する。テクスチャ読み出し部76は、取得したレイヤ番号とコンポーネント番号を用いて、指定レイヤのテクスチャ内で指定コンポーネントを参照することで、テクスチャ構造体52から該当するテクセルをサンプリングすることができる。
以上、テクスチャ構造体52を、一般的に、複数の独立した2次元テクスチャの集まりとして説明し、いわゆる「レイヤテクスチャ」や「ボリュームテクスチャ」としても利用できることを説明したが、テクスチャ構造体52は、さらに、キューブ環境マッピング(以下、単にキューブマッピングという)において使用する6面の環境テクスチャを格納するために用いることもできる。以下、テクスチャ構造体52を用いて、本実施の形態の描画処理装置100によりキューブマッピング処理を行う方法を説明する。
図8は、キューブマッピングにおける描画対象物を囲む仮想的な立方体とその面を示す図である。キューブマッピングでは、同図のように、描画対象物の存在するワールド座標空間に定義されたワールド座標系(x,y,z)のxy面、yz面、zx面に対して各面が平行である仮想立方体を想定する。仮想立方体の各面の向きは、ポジティブX、ネガティブX、ポジティブY、ネガティブY、ポジティブZ、ネガティブZの6方向であり、この6方向により仮想立方体の各面を識別する。立方体の各面には描画対象物に写像される環境テクスチャがあらかじめ投影されている。
図9は、図8の仮想立方体の展開図において、テクスチャ座標(S,T)の各軸S、Tの方向とワールド座標(x,y,z)の各軸x、y、zの方向の対応関係を説明する図である。テクスチャ座標(S,T)のS軸、T軸は、同図に示す方向に定義されている。ポジティブX面については、テクスチャ座標のS軸はワールド座標のz軸の負の方向(−z)にあり、テクスチャ座標のT軸はワールド座標のy軸の負の方向(−y)にある。ネガティブX面については、S軸はワールド座標のz軸の正の方向(z)、T軸はワールド座標のy軸の負の方向(−y)にある。
同様に、ポジティブY面のS軸、T軸は、それぞれワールド座標のx軸の正の方向(x)、z軸の正の方向(z)にあり、ネガティブY面のS軸、T軸は、それぞれワールド座標のx軸の正の方向(x)、z軸の負の方向(−z)にある。また、ポジティブZ面のS軸、T軸は、それぞれワールド座標のx軸の正の方向(x)、y軸の負の方向(−y)にあり、ネガティブZ面のS軸、T軸は、それぞれワールド座標のx軸の負の方向(−x)、y軸の負の方向(−y)にある。
キューブマッピングでは、描画表面上の反射ベクトルrを算出し、反射ベクトルrの方向が仮想立方体のいずれの面と交わるかを判定する。反射ベクトルrが交わる仮想立方体の面をターゲット面と呼ぶ。ターゲット面は、反射ベクトルの最大成分(メジャー成分という)が指し示すキューブ面である。
ターゲット面が決まると、反射ベクトルrのメジャー成分とメジャー軸方向が決まる。反射ベクトルrの成分を(vx,vy,vz)とおくと、反射ベクトルrに対するターゲット面がポジティブXであるとき、メジャー軸方向はx軸の正の方向(これを+VXと記す)であり、メジャー成分は反射ベクトルのx成分vxである。ターゲット面がネガティブXであるとき、メジャー軸方向はx軸の負の方向(−VX)、メジャー成分は反射ベクトルのx成分vxである。
同様に、ターゲット面がポジティブYのとき、メジャー軸方向は+VY、メジャー成分はvyであり、ターゲット面がネガティブYのとき、メジャー軸方向は−VY、メジャー成分はvyである。また、ターゲット面がポジティブZのとき、メジャー軸方向は+VZ、メジャー成分はvzであり、ターゲット面がネガティブZのとき、メジャー軸方向は−VZ、メジャー成分はvzである。
反射ベクトルrの終点(vx,vy,vz)をターゲット面上にメジャー軸方向に射影した点は、描画表面に写像されるテクスチャの点であり、その点のテクスチャ座標(Sc,Tc)は、反射ベクトルの成分を用いて表される。ここで、図9で説明したように、各キューブ面でテクスチャ座標のS軸およびT軸は、ワールド座標の対応する軸と方向が正負反対になることもある。たとえば、ターゲット面がポジティブXである場合は、テクスチャ座標のS軸、T軸は、図9で説明したように、それぞれ−z方向、−y方向であったから、ポジティブX面上のテクスチャ座標(Sc,Tc)は、反射ベクトルのz成分とy成分を用いて(−vz,−vy)で与えられる。他のターゲット面の場合も同様にテクスチャ座標を反射ベクトルrの成分を用いて表すことができる。
図10は、ターゲット面、ターゲット面上のテクスチャ座標(Sc,Tc)、およびメジャー成分の対応関係をまとめて示す図である。
メジャー軸方向が+VXの場合、ターゲット面はポジティブX、Scは−vz、Tcは−vy、メジャー成分はvxである。メジャー軸方向が−VXの場合、ターゲット面はネガティブX、Scはvz、Tcは−vy、メジャー成分はvxである。
メジャー軸方向が+VYの場合、ターゲット面はポジティブY、Scはvx、Tcはvz、メジャー成分はvyである。メジャー軸方向が−VYの場合、ターゲット面はネガティブY、Scはvx、Tcは−vz、メジャー成分はvyである。
メジャー軸方向が+VZの場合、ターゲット面はポジティブZ、Scはvx、Tcは−vy、メジャー成分はvzである。メジャー軸方向が−VZの場合、ターゲット面はネガティブZ、Scは−vx、Tcは−vy、メジャー成分はvzである。
図10に示すように、ターゲット面、テクスチャ座標(Sc,Tc)、メジャー成分の対応関係は、メジャー軸方向によって一意に決まるため、キューブマップを指定するには、メジャー軸方向を指定すればよい。
図11(a)〜(d)は、テクスチャ構造体52をキューブマップとして用いる方法を説明する図である。
図11(a)は、キューブマップ用のテクスチャ構造体52のデータ構造を示す図である。テクスチャ構造体52のレイヤ方向はキューブ面に対応づけられ、各レイヤには仮想立方体の各面の環境テクスチャであるキューブマップが2次元テクスチャとして格納される。仮想立方体の6面に対応してテクスチャ構造体52のレイヤ数は6である。レイヤ番号はキューブ面を識別するマップIDに対応している。
マップIDは、メジャー軸方向に対応しており、メジャー軸方向が決まれば、それに対応するマップIDにより各面のキューブマップを選択することができる。マップIDとメジャー軸方向の対応関係については、同図のように、マップID0〜5のそれぞれにメジャー軸+VX、−VX、+VY、−VY、+VZ、−VZが対応づけられる。また、各ミップレベルには解像度の異なるキューブマップが設けられており、ここではミップレベル0〜2の3段階の解像度の例が示されている。
図11(b)は、ミップレベル0の各レイヤのテクスチャと仮想立方体の各面の対応関係を示す図である。図11(a)のマップID0のテクスチャ(マップ0と呼ぶ)は、図11(b)の仮想立方体のポジティブX面の環境テクスチャに対応する。マップID1のテクスチャ(マップ1)は、仮想立方体のネガティブX面の環境テクスチャに対応する。以下、同様にマップ2、マップ3、マップ4、マップ5は、仮想立方体のポジティブY面、ネガティブY面、ポジティブZ面、ネガティブZ面の環境テクスチャにそれぞれ対応する。
図11(c)は、ミップレベル0に比べて解像度が1/2になったミップレベル1の各レイヤのテクスチャと仮想立方体の各面の対応関係を示す図である。図11(d)は、ミップレベル0に比べて解像度が1/4になったミップレベル2の各レイヤのテクスチャと仮想立方体の各面の対応関係を示す図である。レイヤとキューブ面の対応関係は、図11(b)と同じである。
マップIDは、レイヤ番号を指定するときと同様、第3テクセル座標wにより指定することができる。したがって、3次元テクセル座標(u,v,w)とLOD値を指定するテクスチャ命令を用いて、ミップマップを用いたキューブマッピングを行うことができる。
図12は、描画処理装置100によるキューブマッピング処理の手順を説明するフローチャートである。
シェーダユニット30の描画演算処理部34は、描画表面の反射ベクトルrを算出する(S40)。反射ベクトルrは、視線ベクトルeと描画表面の法線ベクトルnを用いて、計算式r=2(n・e)n−eにより求めることができる。
描画演算処理部34は、反射ベクトルrのメジャー成分にもとづいて、マップIDに対応するメジャー軸方向と、ターゲット面におけるテクスチャ座標(Sc,Tc)を算出する(S42)。これは図10で説明した通りである。
描画演算処理部34は、テクスチャ座標(Sc,Tc)をテクセル座標(u,v)に変換する(S44)。テクセル座標(u,v)は、テクスチャの幅、高さをそれぞれwidth、heightとすると、テクスチャ座標(Sc,Tc)をメジャー成分の絶対値|major|で除算して正規化することにより、次式のように求めることができる。
u=(width/2)・(Sc/|major|+1)
v=(height/2)・(Tc/|major|+1)
v=(height/2)・(Tc/|major|+1)
ここで、テクスチャユニット70のレジスタファイル72に設定されたテクスチャの幅と高さの値と一致する値をシェーダユニット30のレジスタファイル32にも設定しておき、描画演算処理部34がレジスタファイル32から参照できるようにする。
描画演算処理部34は、こうして求めた2次元テクセル座標(u,v)と、マップIDを指定する第3テクセル座標wとからなる3次元テクセル座標(u,v,w)をパラメータに指定したテクスチャ命令をテクスチャユニット70に発行する。ミップマップを用いる場合は、テクスチャ命令にさらに外部LOD値をパラメータとして指定する。
より具体的には、描画演算処理部34は、外部LOD値と、マップIDである第3テクセル座標値wとをパラメータに指定したテクスチャセット命令tsetを発行し、その後、2次元テクセル座標値(u,v)をパラメータに指定したテクスチャロード命令tldを発行する。テクスチャユニット70は、テクスチャロード命令tldの発行を受けて、テクスチャマッピングの動作を開始する。
テクスチャユニット70は、描画演算処理部34から指定された3次元テクセル座標(u,v,w)と外部LOD値にもとづいて、テクスチャ構造体52を用いたキューブマッピング処理を行う(S46)。このキューブマッピング処理は、第3テクセル座標wがマップIDを示す以外は、図7のフローチャートで示したテクスチャマッピング処理と同様にして行うことができる。なお、キューブマッピングでは、レイヤ間の補間は意味をなさないため行われない。
以上述べたように、本実施の形態の描画処理装置100によれば、3次元テクセル座標(u,v,w)を指定してテクスチャ構造体52からテクセルをサンプリングして補間することができる。第3テクセル座標wは、一般にはテクスチャ構造体52に含まれる複数の2次元テクスチャの少なくとも1つを指定するために用いられるが、テクスチャ構造体52がレイヤテクスチャとして用いられる場合は、レイヤ番号を指定するために、テクスチャ構造体52がボリュームテクスチャとして用いられる場合は、奥行きに関するパラメータを指定するためにも用いることができる。さらに、テクスチャ構造体52のレイヤをキューブ面に対応づければ、テクスチャ構造体52は、6面のキューブマップを格納したテクスチャとして扱うこともでき、第3テクセル座標としてキューブ面を指定することで、キューブマッピングを行うことができる。
このように、テクスチャ構造体52は、第3テクセル座標wの意味づけ次第で、複数の独立した2次元テクスチャの集まりとして扱うことも、2次元テクスチャが層状に形成されたレイヤテクスチャとして扱うことも、奥行き方向の次元をもつボリュームテクスチャとして扱うことも、6面のキューブマップテクスチャとして扱うこともできるため、テクスチャ構造体52を処理するテクスチャマッピング用の同一のハードウエア構成、同一のインタフェースをレイヤテクスチャ、ボリュームテクスチャ、キューブマップテクスチャのいずれの用途にも兼用して用いることができる。したがって、テクスチャユニット70の回路規模を小さく抑えることができ、テクスチャユニット70内のレジスタやキャッシュ、メモリなどの資源管理も容易になる。また、インタフェースが統一されているため、テクスチャマッピング処理のプログラミングも容易である。
また、テクスチャ構造体52を参照するためのアドレス情報や、テクスチャ構造体52を利用したテクスチャマッピングのフィルタリングモードなどの各種パラメータは、1回のコンフィグレーションによりレジスタファイルに設定することができる。レイヤを切り替えてテクスチャ構造体52内の2次元テクスチャを参照しても、レジスタの設定情報すなわちコンテキストを変更する必要がなく、コンテキスト切り替えのオーバーヘッドなしで、効率良くテクスチャマッピングを行うことができる。また、テクスチャ構造体52では、複数のテクスチャを用いることができるため、高い描画品質を実現することができる。このように、本実施の形態によれば、処理効率を維持しながら、複数のテクスチャを使い分けて描画品質の向上を図ることができる。
また、本実施の形態の描画処理装置100によるキューブマッピング処理では、反射ベクトルを算出し、反射ベクトルからテクセル座標を求める計算をシェーダユニット30の描画演算処理部34において行い、キューブマップを参照してテクセル値をサンプリングして補間する処理はテクスチャユニット70において行う。テクスチャユニット70は、内挿演算器によるテクスチャマッピング専用のハードウエア構成をもつため、テクスチャ演算能力が高い。一方、シェーダユニット30は、プログラムによって複雑な演算処理を実行する能力があり、反射ベクトルの算出のような複雑な演算も高速に実行できる。本実施の形態の描画処理装置100では、キューブマッピング処理の内、高度な演算能力を必要とする処理は、シェーダユニット30で行い、テクスチャ演算に係る処理は、専用のテクスチャユニット70で行うことにより、処理を分担して、描画処理装置100全体の描画処理の効率化が図られている。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
上記の説明では、レイヤ間の補間およびミップレベル間の補間は、2つのレイヤ間、2つのミップレベル間で行われたが、3つ以上のレイヤもしくはミップレベルを用いて補間を行うようにしてもよい。また、サンプリングするテクセルの個数についても、4近傍テクセルに限られない。8近傍テクセルをサンプリングしてそれらのテクセル間で補間をしてもよい。
また、上記の説明では、等方性(isotropic)テクセルサンプリングを説明したが、異方性(anisotropic)フィルタリングを行ってもよい。異方性テクセルサンプリングは、スクリーンのXY面に対してテクセル座標のUV面の傾きが大きい場合に特に有効である。異方性テクセルサンプリングでは、スクリーンのXY面におけるテクセル座標の変化の大きさと方向を求め、その変化の方向に変化の大きさに応じた回数のポイントサンプリング、バイリニアサンプリング、トライリニアサンプリングなどを繰り返すことで描画品質を維持する。
10 ラスタライザ、 30 シェーダユニット、 32 レジスタファイル、 34 描画演算処理部、 50 メモリ、 52 テクスチャ構造体、 54 描画データ、 70 テクスチャユニット、 72 レジスタファイル、 74 フィルタ、 76 テクスチャ読み出し部、 100 描画処理装置。
Claims (11)
- テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を格納するテクスチャ記憶部と、
描画対象物の表面に適用されるテクスチャについて前記第3パラメータの指定と前記表面上の2次元パラメータ座標値の指定とを受け、前記テクスチャ構造体の内、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出すテクスチャ読み出し部と、
読み出された前記テクセル値を補間して、前記描画対象物の表面に適用されるテクスチャに関する値を算出するフィルタとを含み、
前記第3パラメータとして、前記テクスチャ構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記テクスチャ構造体が統一的に参照されることを特徴とするテクスチャ処理装置。 - 前記テクスチャ構造体は、レイヤ単位で規定される2次元テクスチャをレイヤ数だけ設けたレイヤ構造を有し、前記第3パラメータは、前記レイヤを指定する番号であることを特徴とする請求項1に記載のテクスチャ処理装置。
- 前記テクスチャ構造体は、奥行きレベルの異なる2次元テクスチャを奥行き方向に複数並べたボリュームテクスチャの構造を有し、前記第3パラメータは、前記奥行きに関するパラメータであることを特徴とする請求項1に記載のテクスチャ処理装置。
- 前記テクスチャ読み出し部は、前記第3パラメータとして指定された奥行きに関するパラメータに対応する2つの異なる奥行きレベルの2次元テクスチャを選択し、選択された2つの異なる奥行きレベルの2次元テクスチャの各々から、指定された前記2次元パラメータ座標に対応するテクセル値を読み出し、
前記フィルタは、前記2つの異なる奥行きレベルの2次元テクスチャ間で前記テクセル値を補間することにより、前記描画対象物の表面に適用されるテクスチャに関する値を算出することを特徴とする請求項3に記載のテクスチャ処理装置。 - 前記テクスチャ構造体は、前記描画対象物の存在する空間内に仮想的に設けられた立方体の面に投影された環境テクスチャを面数だけ設けた構造を有し、前記第3パラメータは、前記面を指定する番号であることを特徴とする請求項1に記載のテクスチャ処理装置。
- 前記テクスチャ構造体を一括して参照するためのベースアドレスを格納するレジスタをさらに設け、
前記テクスチャ読み出し部は、前記レジスタに格納された前記ベースアドレスに対して、指定された第3パラメータに依存するオフセット値を加算することにより、指定された第3パラメータに対応する前記2次元テクスチャの参照アドレスを生成し、前記参照アドレスを基準にして、指定された2次元パラメータ座標値に対応するテクセル値を読み出すことを特徴とする請求項1から5のいずれかに記載のテクスチャ処理装置。 - 前記テクスチャ構造体に含まれる複数の2次元テクスチャの各々は、段階的に解像度を異ならせた一組のミップマップテクスチャであり、
前記テクスチャ読み出し部は、前記描画対象物の表面に適用されるテクスチャの描画詳細度の指定も受け、指定された第3パラメータに対応する一組のミップマップテクスチャの内、指定された描画詳細度に対応する解像度のミップマップテクスチャを選択し、選択されたミップマップテクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出すことを特徴とする請求項1から6のいずれかに記載のテクスチャ処理装置。 - 前記テクスチャ読み出し部は、指定された第3パラメータに対応する一組のミップマップテクスチャの内、指定された描画詳細度に対応する2つの異なる解像度のミップマップテクスチャを選択し、選択された2つの異なる解像度のミップマップテクスチャの各々から、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出し、
前記フィルタは、前記2つの異なる解像度のミップマップテクスチャ間で前記テクセル値を補間することにより、前記描画対象物の表面に適用されるテクスチャに関する値を算出することを特徴とする請求項7に記載のテクスチャ処理装置。 - テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を格納するテクスチャ構造体を格納するテクスチャ記憶部と、
描画対象物の表面に適用されるテクスチャについて前記第3パラメータの指定と前記表面上の2次元パラメータ座標値の指定とを受け、前記テクスチャ構造体の内、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値を読み出して、前記描画対象物の表面に適用されるテクスチャに関する補間値を算出するテクスチャ処理部と、
前記テクスチャ処理部から出力される前記テクスチャに関する補間値を用いて、前記描画対象物の描画演算処理を行う描画処理部とを含み、
前記テクスチャ構造体は、前記描画対象物の存在する空間内に仮想的に設けられた立方体の面に投影された環境テクスチャを面数だけ設けた構造を有し、
前記描画処理部は、前記描画対象物の表面の反射ベクトルにもとづいて、前記表面に写像される環境テクスチャの面番号とその面内における2次元パラメータ座標値とを求め、求めた面番号を前記第3パラメータとして2次元パラメータ座標値とともに前記テクスチャ処理部に対して指定し、
前記テクスチャ処理部は、前記テクスチャ構造体の内、前記描画処理部により前記第3パラメータとして指定された前記面番号に対応する環境テクスチャから、前記描画処理部により指定された前記2次元パラメータ座標値に対応するテクセル値を読み出し、前記描画対象物の表面に適用されるテクスチャに関する補間値を算出することを特徴とする描画処理装置。 - テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられた構造体を有し、前記2次元パラメータ座標値および前記第3パラメータを指定したテクスチャの読み出し命令により、指定された第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応する前記テクセル値のサンプリングが可能に構成され、前記第3パラメータとして、前記構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記構造体の統一的な参照が可能に構成されたことを特徴とするテクスチャのデータ構造。
- テクスチャに関する値を2次元パラメータ座標に対応づけてテクセル値として格納した2次元テクスチャが複数設けられ、前記複数の2次元テクスチャの少なくとも1つを指定するための第3パラメータが前記2次元パラメータ座標における第1および第2パラメータとは別に設けられたテクスチャ構造体を保持したテクスチャメモリに対して、描画対象物の表面に適用されるテクスチャについて前記第3パラメータと前記表面上の2次元パラメータ座標値を指定したテクスチャの読み出し命令を実行することにより、指定された前記第3パラメータに対応する前記2次元テクスチャから、指定された前記2次元パラメータ座標値に対応するテクセル値をサンプリングするステップと、
サンプリングされた前記テクセル値を補間して、前記描画対象物の表面に適用されるテクスチャに関する値を算出するステップとを含み、
前記第3パラメータとして、前記テクスチャ構造体に含まれる前記複数の2次元テクスチャ間の関連性に応じた値が指定されることにより、異なる種類の前記テクスチャ構造体が統一的に参照されることを特徴とするテクスチャ処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005063113A JP2006244426A (ja) | 2005-03-07 | 2005-03-07 | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
PCT/JP2005/022536 WO2006095481A1 (ja) | 2005-03-07 | 2005-12-08 | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005063113A JP2006244426A (ja) | 2005-03-07 | 2005-03-07 | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006244426A true JP2006244426A (ja) | 2006-09-14 |
Family
ID=36953087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005063113A Pending JP2006244426A (ja) | 2005-03-07 | 2005-03-07 | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2006244426A (ja) |
WO (1) | WO2006095481A1 (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305408A (ja) * | 2007-06-07 | 2008-12-18 | Nvidia Corp | 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 |
JP2009165106A (ja) * | 2007-12-17 | 2009-07-23 | Nvidia Corp | 画像の歪み補正 |
JP2010527077A (ja) * | 2007-05-07 | 2010-08-05 | クゥアルコム・インコーポレイテッド | レンダリング後のグラフィックスオーバーレイ |
US7944453B1 (en) | 2007-06-07 | 2011-05-17 | Nvidia Corporation | Extrapolation texture filtering for nonresident mipmaps |
JP2011524562A (ja) * | 2008-05-30 | 2011-09-01 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 拡大縮小可能で且つ統合化されたコンピュータシステム |
JP2015095259A (ja) * | 2013-11-14 | 2015-05-18 | インテル コーポレイション | グラフィカルテクスチャデータのマルチモードフィルタリングのためのフレキシブルフィルタロジック |
JP2018073388A (ja) * | 2016-11-02 | 2018-05-10 | 三星電子株式会社Samsung Electronics Co.,Ltd. | テクスチャ処理方法及びその装置 |
JP2018101415A (ja) * | 2016-12-20 | 2018-06-28 | 三星電子株式会社Samsung Electronics Co.,Ltd. | キューブマップをテクスチャリングするためのlodを決定する方法、装置、コンピュータプログラム及び記録媒体 |
JP2022536738A (ja) * | 2019-06-10 | 2022-08-18 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112015006360T5 (de) * | 2015-03-25 | 2017-12-07 | Mitsubishi Electric Corporation | Texturmappingvorrichtung, texturmappingverfahren und programm |
CN113643414B (zh) * | 2020-05-11 | 2024-02-06 | 北京达佳互联信息技术有限公司 | 一种三维图像生成方法、装置、电子设备及存储介质 |
CN113658064A (zh) * | 2021-08-03 | 2021-11-16 | 网易(杭州)网络有限公司 | 纹理图像的生成方法、装置和电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9611941D0 (en) * | 1996-06-07 | 1996-08-07 | Philips Electronics Nv | Three-dimensional image texture mapping |
JP3367509B2 (ja) * | 1999-12-16 | 2003-01-14 | 株式会社セガ | 画像生成方法及びこれを用いた画像生成装置 |
JP4856335B2 (ja) * | 2001-09-17 | 2012-01-18 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体、及びゲーム装置 |
JP3589654B2 (ja) * | 2002-03-12 | 2004-11-17 | 独立行政法人理化学研究所 | ボリュームレンダリング方法とそのプログラム |
JP2004164308A (ja) * | 2002-11-13 | 2004-06-10 | Toshiba Denpa Products Kk | コンピュータグラフィックスによる海面表現方法 |
JP2005025254A (ja) * | 2003-06-30 | 2005-01-27 | Toshiba Corp | コンピュータグラフィックス描画装置 |
-
2005
- 2005-03-07 JP JP2005063113A patent/JP2006244426A/ja active Pending
- 2005-12-08 WO PCT/JP2005/022536 patent/WO2006095481A1/ja not_active Application Discontinuation
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010527077A (ja) * | 2007-05-07 | 2010-08-05 | クゥアルコム・インコーポレイテッド | レンダリング後のグラフィックスオーバーレイ |
JP2008305408A (ja) * | 2007-06-07 | 2008-12-18 | Nvidia Corp | 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 |
US7944453B1 (en) | 2007-06-07 | 2011-05-17 | Nvidia Corporation | Extrapolation texture filtering for nonresident mipmaps |
US7948500B2 (en) | 2007-06-07 | 2011-05-24 | Nvidia Corporation | Extrapolation of nonresident mipmap data using resident mipmap data |
JP2009165106A (ja) * | 2007-12-17 | 2009-07-23 | Nvidia Corp | 画像の歪み補正 |
JP2011524562A (ja) * | 2008-05-30 | 2011-09-01 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 拡大縮小可能で且つ統合化されたコンピュータシステム |
JP2015095259A (ja) * | 2013-11-14 | 2015-05-18 | インテル コーポレイション | グラフィカルテクスチャデータのマルチモードフィルタリングのためのフレキシブルフィルタロジック |
US9367948B2 (en) | 2013-11-14 | 2016-06-14 | Intel Corporation | Flexible filter logic for multi-mode filtering of graphical texture data |
JP2018073388A (ja) * | 2016-11-02 | 2018-05-10 | 三星電子株式会社Samsung Electronics Co.,Ltd. | テクスチャ処理方法及びその装置 |
JP2018101415A (ja) * | 2016-12-20 | 2018-06-28 | 三星電子株式会社Samsung Electronics Co.,Ltd. | キューブマップをテクスチャリングするためのlodを決定する方法、装置、コンピュータプログラム及び記録媒体 |
US10593096B2 (en) | 2016-12-20 | 2020-03-17 | Samsung Electronics Co., Ltd. | Graphics processing employing cube map texturing |
JP7096661B2 (ja) | 2016-12-20 | 2022-07-06 | 三星電子株式会社 | キューブマップをテクスチャリングするためのlodを決定する方法、装置、コンピュータプログラム及び記録媒体 |
JP2022536738A (ja) * | 2019-06-10 | 2022-08-18 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ |
JP7227404B2 (ja) | 2019-06-10 | 2023-02-21 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ |
Also Published As
Publication number | Publication date |
---|---|
WO2006095481A1 (ja) | 2006-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006244426A (ja) | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 | |
US10867434B2 (en) | Variable rate shading | |
US10546412B2 (en) | Variable rate shading | |
US7142215B1 (en) | Method and apparatus for processing stencil data using a programmable graphics processor | |
US6518974B2 (en) | Pixel engine | |
US7742060B2 (en) | Sampling methods suited for graphics hardware acceleration | |
US5704024A (en) | Method and an apparatus for generating reflection vectors which can be unnormalized and for using these reflection vectors to index locations on an environment map | |
US8319789B2 (en) | Image generation device and image generation method | |
JP4977712B2 (ja) | ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびにその方法 | |
US7038678B2 (en) | Dependent texture shadow antialiasing | |
JP7096661B2 (ja) | キューブマップをテクスチャリングするためのlodを決定する方法、装置、コンピュータプログラム及び記録媒体 | |
US20050243101A1 (en) | Image generation apparatus and image generation method | |
WO2008013605A1 (en) | Real-time gpu rendering of piecewise algebraic surfaces | |
WO2006048961A1 (ja) | 描画処理装置および描画処理方法 | |
US7405735B2 (en) | Texture unit, image rendering apparatus and texel transfer method for transferring texels in a batch | |
US7027047B2 (en) | 3D graphics rendering engine for processing an invisible fragment and a method therefor | |
US7525553B2 (en) | Computer graphics processor and method for generating a computer graphics image | |
JPH11161819A (ja) | 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体 | |
US20100302259A1 (en) | Drawing data processing method, graphics drawing system and graphics drawing data generation program | |
JP2018032301A (ja) | 画像処理プロセッサにおける画像データ処理方法及びそのプログラム | |
US7385604B1 (en) | Fragment scattering | |
JP4060375B2 (ja) | スポットライト特性形成方法及びこれを用いた画像処理装置 | |
KR101227155B1 (ko) | 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법 | |
JP4692956B2 (ja) | 描画処理装置および描画処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061003 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061128 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061226 |