(57)【要約】【課題】  シェーダとテクスチャユニット間のデータ通信量を低減する。【解決手段】  テクスチャユニット４０は、三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行する。入力部４４は、シェーダユニット２０から単一のテクスチャアドレスパラメータを受け取る。座標生成部５４は、テクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する。検索部５６は、生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を、テクスチャキャッシュ５０から、またはメモリインターフェイスを介して外部のテクスチャバッファなどから検索する。出力部４６は、検索されたテクセル値をシェーダユニット２０に一括して出力する。単一のテクスチャアドレスパラメータ入力から複数のテクセル値を読み出すことができるので、シェーダからテクスチャユニットへの帯域を節約できる。【選択図】図３
2005332195.tif 000002
【特許請求の範囲】
【請求項１】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットにおいて、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
テクスチャユニット外部から入力された単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索されたテクセル値をテクスチャユニット外部に出力する出力部と、
を備えることを特徴とするテクスチャユニット。
【請求項２】
前記入力部がテクスチャアドレスパラメータとしてテクスチャ座標値を受け取ったとき、該テクスチャ座標値をテクセル座標値に変換して前記座標生成部に与える変換部をさらに備えることを特徴とする請求項１に記載のテクスチャユニット。
【請求項３】
前記座標生成部は、テクセル座標値を受け取ったとき、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位４つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項４】
前記座標生成部は、テクセル座標値を受け取ったとき、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位２つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項５】
前記メモリ内には複数のミップマップレベル毎にテクスチャが格納されており、
前記入力部にはＬＯＤ値を含むテクスチャアドレスパラメータが入力され、
前記座標生成部が、前記ＬＯＤ値に対応するミップマップレベルのテクスチャ内で前記テクセル座標値を生成することを特徴とする請求項１ないし４のいずれかに記載のテクスチャユニット。
【請求項６】
前記検索部により検索されたテクセル値がテクスチャユニットからの出力ビット幅以上のデータ量を有するとき、２回に分けてデータ転送することを特徴とする請求項１ないし５のいずれかに記載のテクスチャユニット。
【請求項７】
前記テクスチャユニットは設定部をさらに備え、
前記座標生成部は、テクセル座標値を受け取ったとき、前記設定部に格納された値に応じて、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位４つのテクセルに対応するテクセル座標値を生成する処理か、または、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位２つのテクセルに対応するテクセル座標値を生成する処理のいずれかを実行することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項８】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットと、テクスチャを受け取って最終的な描画色を決定するシェーダユニットと、を備える画像描画装置において、
前記テクスチャユニットが、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
前記シェーダユニットから単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索された前記テクセル値を前記シェーダユニットに出力する出力部と、
を備えることを特徴とする画像描画装置。
【請求項９】
複数のテクセル値を一括して転送するテクセル転送方法であって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取るステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするテクセル転送方法。
【請求項１０】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットに対して、複数のテクセル値を一括して転送させる処理を実行させるプログラムであって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取る受け取りステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像描画技術に関し、特に、テクスチャをオブジェクト表面に貼り付けるテクスチャマッピング技術に関する。
【背景技術】
【０００２】
三次元画像を二次元の画面上に表示させるときに行われる画像処理は、大別して、三次元画像を構成する複数のオブジェクトの頂点座標等に座標変換などを施すジオメトリ処理と、このジオメトリ処理の結果得られるジオメトリデータからピクセル毎の色などを決定して二次元画像を生成するレンダリング処理とからなる。
【０００３】
レンダリング処理では、二次元座標の位置情報と、オブジェクトの表面の色や模様を表すテクスチャとから、ピクセル単位のカラー情報を計算し、その結果をフレームバッファに書き込み、画面に表示する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
三次元画像を高速に描画処理するためには、描画データのアドレス指定を高速に行うことが望ましい。特に、テクスチャマッピングでは、オブジェクト表面に貼り付けるべきテクセルを指定するために、大量のアドレス指定を実行する必要がある。しかし、テクセルがある程度の領域にわたって存在する場合は、隣接するテクセルをひとつひとつ指定すると、シェーダからテクスチャユニットへのデータ量およびインストラクション数が多くなり、シェーダとテクスチャユニット間の帯域が不足して処理効率が低下する場合もある。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、シェーダとテクスチャユニット間のデータ通信量を低減する技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様では、単一のテクスチャアドレスパラメータに基づいて複数のテクセル座標値を生成し、そのテクセル座標値に対応する複数のテクセル値を一括してテクスチャユニット外部に転送するようにした。
【０００７】
この態様によれば、単一のテクスチャアドレスパラメータの入力に基づいて、複数のテクセル値を読み出すことができるので、シェーダからテクスチャユニットへの帯域を節約でき、処理速度が向上する。また、複数のテクセル値がまとめてシェーダに入力されることになるので、シェーダ側の処理プロセスが簡略化される。ここで、「テクスチャアドレスパラメータ」にはテクスチャ座標値、テクセル座標値、またはＬＯＤ値が含まれる。また、「テクセル値」には、一例として、テクセルのＲＧＢ値、α値、Ｚ値が含まれるが、それ以外の任意の値であってもよい。
【０００８】
なお、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明のテクスチャユニットによれば、テクスチャユニットとその出力を利用するユニット間でのデータ通信量を低減し、帯域を節約することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の一実施形態に係る画像描画装置１００のハードウェア構成図である。画像描画装置１００は、レンダリングプロセッサ１５０を備え、レンダリングを実行して三次元画像を表示装置１２０の画面にリアルタイムに表示する。
【００１１】
画像描画装置１００は、入出力部１３０と、ジオメトリプロセッサ１４０と、レンダリングプロセッサ１５０と、メインＣＰＵ１６０と、メモリ１７０と、を備える。これらの各ブロックはバス１９０を介して接続され、相互にデータの送受信が可能となっている。入出力部１３０には、ＣＤ−ＲＯＭやハードディスクドライブなどの記憶装置１１０と、ディスプレイ等の表示装置１２０が接続される。入出力部１３０は、記憶装置１１０および表示装置１２０に対するデータの入出力を制御する。
【００１２】
入出力部１３０は、記憶装置１１０に格納された画像処理用のデータやプログラムを読み込み、ジオメトリプロセッサ１４０に提供する。画像処理用のデータは、例えば、オブジェクトについての図形データなどである。入出力部１３０は、他の装置と通信して、画像処理用のデータ及びプログラムを外部から取得する構成であってもよい。
【００１３】
メインＣＰＵ１６０は、記憶装置１１０に記録されているアプリケーションプログラムを実行する。プログラムの実行により、メインＣＰＵ１６０は、ユーザからの入力に応じてレンダリングプロセッサ１５０を制御して、画像の表示を制御する。
【００１４】
また、メインＣＰＵ１６０は、各構成要素間のデータの受け渡し、例えば、ジオメトリプロセッサ１４０で生成されたジオメトリデータを、メモリ１７０等をバッファとしてレンダリングプロセッサ１５０へと転送したり、あるいは、レンダリングプロセッサ１５０と、記憶装置１１０、表示装置１２０などの外部周辺装置との間のデータ転送の同期管理などといった、画像描画装置１００の全体を制御する。なお、本実施形態では、ジオメトリプロセッサ１４０とメインＣＰＵ１６０とを別に設けた例を示すが、これらを一体化し、メインＣＰＵ１６０がジオメトリプロセッサ１４０の機能を持つようにしてもよい。
【００１５】
メモリ１７０は、記憶装置１１０から読み出したオブジェクトの形状データや描画処理プログラムなどを記憶する。各オブジェクトデータには、対応するオブジェクトを構成する複数のポリゴンの頂点データが登録されている。また、メモリ１７０には、テクスチャマッピングに用いられるテクスチャデータが格納されるテクスチャバッファ７２が設けられている。
【００１６】
ジオメトリプロセッサ１４０は、メインＣＰＵ１６０の制御のもと、メモリ１７０に格納された図形データに対して、アフィン変換処理、頂点に対する光源処理などのジオメトリ処理を行う。ジオメトリ処理の結果得られるジオメトリデータは、オブジェクトについての頂点座標値、各頂点でのテクスチャ座標値、頂点輝度値などのオブジェクトの属性を表すデータからなる。
【００１７】
レンダリングプロセッサ１５０は、描画演算ユニット１５２とメモリインターフェイス（図中では「メモリＩ／Ｆ」と表記する）１５４とを含む。レンダリングプロセッサ１５０は、メインＣＰＵ１６０の制御のもと、ジオメトリプロセッサ１４０で生成されたジオメトリデータを順次読み出し、読み出されたジオメトリデータに対してレンダリング処理を行って描画データを生成する。各ピクセルのＲＧＢ値および透過度を表すα値は、フレームバッファ７４に格納され、各ピクセルの奥行きを表すＺ値は、図示しないＺバッファに格納される。
【００１８】
なお、テクスチャバッファ７２、フレームバッファ７４およびＺバッファを、同一のＤＲＡＭ（Dynamic Random Access Memory）上に設けるようにしてもよい。また、このＤＲＡＭがレンダリングプロセッサ１５０上に設けられていてもよい。
【００１９】
レンダリング処理により生成されフレームバッファに格納された描画データは、入出力部１３０により読み出されて、表示装置１２０で表示可能な画像信号に変換され、表示装置１２０に表示される。
【００２０】
図２は、レンダリングプロセッサ１５０の詳細な構成を説明する図である。描画演算ユニット１５２には、ラスタライザ１０と、シェーダユニット２０と、テクスチャユニット４０とが含まれる。ラスタライザ１０は、描画オブジェクトのジオメトリデータを受け取る。描画オブジェクトは、一般的には三角形のトライアングルストリップ（triangle strip)データであり、ラスタライザ１０は、三次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行う。さらに、ラスタライザ１０は、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスター処理を行う。ラスタライザ１０により、描画オブジェクトがピクセル展開され、各ピクセルについて、ＲＧＢ値、α値、Ｚ値を含むピクセル情報が算出される。
【００２１】
ラスタライザ１０は、スキャンラインに沿って所定の大きさの矩形のピクセル領域を生成し、シェーダユニット２０に与える。描画処理の並列化のために、描画演算ユニット１５２内に複数のシェーダユニット２０が設けられていてもよい。この場合、図示しない分配部が、ラスタライザ１０から供給されたピクセル領域の処理を担当するシェーダユニット２０を決定し、決定されたシェーダユニット２０のキューにピクセル領域データをスタックする。シェーダユニット２０は、キューにスタックされたピクセル領域データを順に処理する。
【００２２】
シェーダユニット２０は、非同期動作する複数のシェーダ２２を有しており、それぞれが担当するピクセルデータを処理することで、ピクセルの描画処理を並列に実行可能となっている。
【００２３】
シェーダユニット２０内の各シェーダ２２は、ラスタライザ１０により算出されたピクセル情報をもとに、フラットシェーディングなどのシェーディング処理を行い、各描画ピクセルのカラー値を決定し、メモリインターフェイス１５４を介してメモリ１７０内のフレームバッファ７４にそのカラー値を書き込む。さらに、各シェーダ２２は、テクスチャユニット４０から出力されたテクスチャデータをもとに、ピクセルマッピングされたテクセルのカラー値をフレームバッファ７４から読み出されたピクセルのカラー値にブレンドする。続いて、各シェーダ２２は、フォギング、アルファブレンディング等の処理を行い、ピクセルのピクセル色、テクセル色、α値、フォグ値が決まると、最終的な描画ピクセルデータをメモリインターフェイス１５４を介してフレームバッファ７４に書き込む。フレームバッファ７４に書き込まれた描画データは、入出力部１３０により読み出され、表示装置１２０に出力される。なお、各シェーダ２２は、メモリ１７０内の特定の領域のみにアクセス可能に構成されている。
【００２４】
描画演算ユニット１５２内には、１つのテクスチャユニット４０が設けられており、各シェーダ２２は、テクスチャデータを指定するためのテクスチャパラメータ（以下、これを「テクスチャアドレスパラメータ」と呼ぶ）を含むテクスチャロード命令をテクスチャユニット４０に入力し、テクスチャユニット４０からテクスチャマッピング処理後のテクスチャデータの出力を受け取る。
【００２５】
テクスチャユニット４０は、シェーダユニット２０からテクスチャアドレスパラメータを受け取り、テクスチャデータのアドレスを算出して、テクスチャユニット４０内のテクスチャキャッシュを検索する。テクスチャキャッシュにテクスチャデータがキャッシュされていない場合は、メモリインターフェイス１５４を介してメモリ１７０内のテクスチャバッファ７２を検索する。テクスチャユニット４０は、取得したテクスチャデータに対して、バイリニア補間、トライリニア補間などのフィルタ処理を施して、シェーダユニット２０に出力する。
【００２６】
なお、図２に示すように、シェーダユニット２０とテクスチャユニット４０とが別ユニットとされていることの利点は、テクスチャユニットは、描画処理に頻繁に使用される演算を固定回路で構成することで効率を上げる一方、シェーダユニットは基本的な四則演算や論理演算が基本なので、汎用性を持たせたほうが好ましいからである。
【００２７】
図３は、テクスチャユニット４０の構成を示す図である。ここに示す各ブロックは機能ブロックとして描かれており、これらの機能ブロックは半導体デバイスなどにより個別に実現することもできるし、ディジタルシグナルプロセッサ（ＤＳＰ）またはグラフィックプロセッサとコンピュータプログラムとの協働により実現することもできる。
【００２８】
テクスチャユニット４０は、シェーダユニット２０から出力されたピクセルのテクスチャ座標値を受け取り、テクスチャ座標値をテクセル座標値に変換する。代替的に、テクセル座標値を直接受けとってもよいし、あるいは、テクセルを描画する際の詳細度を示すＬＯＤ値を付加的に受け取ってもよい。続いて、テクセル座標値を使用してテクスチャデータのアドレスを算出する。算出されたアドレスをもとにテクセル値を読み出し、ピクセルにマッピングされるテクセルのテクセル色を、バイリニアフィルタなどのフィルタリング処理により求める。
【００２９】
以下、テクスチャユニット４０内の各ブロックについて説明する。レジスタ等で構成される設定部４２には、テクスチャユニット４０の動作を規定する各種設定情報が入力される。テクスチャユニット４０は、設定部４２の設定情報で指定されるフィルタリングに応じたテクスチャデータを生成する。
【００３０】
入力部４４は、複数のシェーダ２２からテクスチャロード命令を受け付け、これらの命令をスタックする。テクスチャロード命令には、テクスチャデータを指定するテクスチャパラメータが含まれる。テクスチャパラメータは、テクスチャ座標値、テクセル座標値、ＬＯＤ（level of detail）値などを含む。
【００３１】
テクスチャ座標値およびテクセル座標値は二次元座標値であり、テクスチャ座標値は（ｓ，ｔ）、テクセル座標値は（ｕ，ｖ）のように記述される。これらの座標系は、設定部４２の設定情報により指定することができる。
【００３２】
入力部４４にスタックされたテクスチャロード命令は、順に演算部４８に読み出されて処理される。
【００３３】
演算部４８内の変換部５２は、二次元のテクスチャ座標値（ｓ，ｔ）が入力された場合、以下の式にしたがって、テクスチャの各サイズに合わせた二次元のテクセル座標値（ｕ，ｖ）に変換する。
ｕ＝ｓ×TexWidth              （１）
ｖ＝ｔ×TexHeight              （２）
ここで、TexWidth、TexHeightは、それぞれ、テクスチャの幅、高さに対応する。
【００３４】
座標生成部５４は、テクセル座標値を使用して、テクスチャバッファ内のアドレスを生成する。検索部５６は、そのアドレスに従って、テクスチャユニット４０内部のテクスチャキャッシュ５０にアクセスする。テクスチャキャッシュ５０には、入出力部１３０により記憶装置１１０から読み出されたテクスチャデータがキャッシュされる。
【００３５】
テクスチャのロード時、テクスチャキャッシュ５０にデータを読みに行ったがキャッシュミスした際には、メモリインターフェイス１５４を介してメモリ１７０内のテクスチャバッファ７２にアクセスする。テクスチャバッファ７２にもテクスチャデータが存在していない場合は、入出力部１３０を介して、記憶装置１１０にアクセスする。テクスチャバッファ７２または記憶装置１１０のいずれかから読み出されたテクスチャデータは、バス１９０経由でテクスチャユニット４０に与えられる。
【００３６】
演算部４８は、設定部４２の設定情報に基づいて、テクセル値に対してバイリニア補間などのフィルタリング処理を行い、出力部４６に転送する。出力部４６にスタックされたデータは、順にシェーダ２２に渡される。
【００３７】
テクスチャデータは、各テクセルのカラー値を直接持つのではなく、カラー値に対するインデックスをテクセル値として持つようにしてもよい。これにより、テクスチャデータの効率的な圧縮が可能となる。インデックス値に対応するカラー値の情報は、図示しないルックアップテーブルに格納されている。ここで、ルックアップテーブルとは、カラー情報を記述するエントリをインデックスの番号順に並べたカラーテーブルを格納したものである。
【００３８】
この場合、演算部４８は、インデックス形式で与えられたテクセル色を実際のカラー値に変換するために、テクセルのインデックス値を図示しないルックアップテーブル参照部に与える。ルックアップテーブル参照部は、インデックス値をキーとしてルックアップテーブルを参照して、インデックス値に対応するカラー情報を演算部４８に出力する。
【００３９】
本実施の形態におけるレンダリングプロセッサ１５０では、上述のように、テクスチャマッピングを実行するテクスチャユニット４０が、複数のシェーダ２２を含むシェーダユニット２０から独立して存在する。このように、複数のシェーダに対してテクスチャユニットをひとつ設けるようにしたことで、シェーダの計算負荷が軽減されるとともに、テクスチャユニットの稼動効率を上げることができる。したがって、レンダリングプロセッサの全体的な処理効率も向上する。また、テクスチャユニットから出力されるデータをシェーダ側で多様に加工して使用することが可能となる。
【００４０】
しかしながら、このような形態をとると、シェーダユニットとテクスチャユニットの間でデータ通信を高頻度で実行する必要があるので、このデータ通信量を低減することが重要な問題のひとつとなる。
【００４１】
そこで、本発明では、単一のテクスチャアドレスパラメータを指定したテクスチャロード命令に対して、２つまたは４つのテクセル値を一括してシェーダユニットに返すようにして、データ通信量を削減するようにした。
【００４２】
図４は、テクセル値を一括転送するフローチャートである。まず、テクスチャユニット４０内の入力部４４は、シェーダユニット２０から単一のテクスチャアドレスパラメータ、具体的には、二次元のテクスチャ座標値、テクセル座標値、またはＬＯＤ値を受け取る（Ｓ１０）。テクスチャ座標値を受け取った場合には、上記の式にしたがって変換部５２によりテクセル座標値に変換される。次に、前記単一のテクスチャアドレスパラメータに基づいて、座標生成部５４が複数のテクセル座標値を生成する（Ｓ１２）。検索部５６は、生成された複数のテクセル座標値に対応するテクセル値（例えば、カラー値、α値、Ｚ値）を前記テクスチャキャッシュ５０から検索する（Ｓ１４）。キャッシュミスした場合は、上述のように、テクスチャバッファ７２または記憶装置１１０にアクセスする。そして、検索されたテクセル値を、出力部４６を介してシェーダユニット２０に出力する（Ｓ１６）。
【００４３】
このフローチャートにしたがって、以下のような処理を実現することができる。なお、以下に述べる実施例１〜３では、二次元テクスチャを例として説明する。
【００４４】
実施例１．４近傍テクセル一括転送
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、４つのテクセル座標値を生成し、４近傍のテクセルが選択される。ひとつのテクセルがＲ、Ｇ、Ｂ、Ａの４コンポーネントで構成されている場合、選択されたテクセルのテクセル値のうちＲ、Ｇ、Ｂ、Ａのいずれかが、４テクセル分一括してシェーダに転送される。
【００４５】
座標生成部５４は、二次元のテクセル座標値（ｕ，ｖ）を受け取って、以下の４つのテクセル座標値を生成する。
（floor(u-0.5), floor(v-0.5)）          （３）
（floor(u-0.5), floor(v-0.5)+1）        （４）
（floor(u-0.5)+1, floor(v-0.5)）        （５）
（floor(u-0.5)+1, floor(v-0.5)+1）      （６）
但し、関数「floor」は、引数に最も近いテクセル中心を求める関数である。
【００４６】
図５を参照して、テクスチャキャッシュ５０内でのテクセルのアドレスについて説明する。テクスチャ中のテクセルの指定は、二次元のテクセル座標系で行われる。テクセル座標値（ｕ，ｖ）は、１テクセルの縦、横がそれぞれ「１．０」となる固定小数値である。各テクセルの中心は、図中のグリッドの中間点である、テクセル座標値の小数部が０．５の位置に配置されており、この位置を指定することで、テクスチャキャッシュ５０内の実アドレスを求めることができるようになっている。
【００４７】
図５中の黒丸８０は、シェーダ２２から直接受け取ったか、またはテクスチャ座標値から変換されたテクセル座標値（ｕ，ｖ）を示す。座標生成部５４は、このテクセル座標値（ｕ，ｖ）に基づいて、上記（３）〜（６）で示した４つのテクセル座標値を生成する。これら４つの座標値は、図５においてＴ０〜Ｔ３で示す各テクセルの中心座標に相当する。例えば、黒丸８０のテクセル座標値が（ｕ，ｖ）＝（１．２，１．２）であったとする。座標生成部５４は、この値を式（３）に代入して、（floor(1.2-0.5), floor(1.2-0.5)）＝（floor(0.7), floor(0.7)）＝（0.5，0.5）のテクセル座標値を生成する。検索部５６は、この座標にテクセル中心を有するテクセルＴ０のアドレスを検索して、テクセル値を取得する。同様にして、座標生成部５４は、式（４）から、（floor(1.2-0.5) +1, floor(1.2-0.5)）＝（floor(0.7)+1, floor(0.7)）＝（1.5，0.5）のテクセル座標値を生成し、式（５）から、（floor(1.2-0.5), floor(1.2-0.5)+1）＝（floor(0.7), floor(0.7)+1）＝（0.5，1.5）のテクセル座標値を生成し、式（６）から、（floor(1.2-0.5)+1, floor(1.2-0.5)+1）＝（floor(0.7)+1, floor(0.7)+1）＝（1.5，1.5）のテクセル座標値を生成する。そして、検索部５６は、これらの座標にテクセル中心を有するテクセルＴ１〜Ｔ３のアドレスを検索して、テクセル値を取得する。
【００４８】
４テクセル分のコンポーネントを得るために、従来はテクセルのアドレスを一つずつ指定して、各テクセル値を検索することを４回繰り返していたのに対し、この実施形態によれば、一つのアドレス指定で４テクセル分のテクセル値を一括してシェーダに転送することができる。これにより、シェーダからテクスチャユニットへのアドレス指定を従来の１／４のデータ通信量にすることができる。また、一命令に対して４つのテクセル値が一括して出力されるので、シェーダ側のプログラムの実行回数も省略することができる。このように、ひとつずつテクセルを指定して転送させるよりも、より効率的な処理が可能となる。
【００４９】
実施例２．２近傍テクセル一括転送
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、２つのテクセル座標値を生成する。この実施例では、入力されたテクセル座標値に対し、テクセル座標系において上下いずれの位置のテクセルを選択するかによって、「アップモード」と「ダウンモード」の２つのモードを考えることができる。
【００５０】
アップモードでは、座標生成部５４は、二次元のテクセル座標値（ｕ，ｖ）を受け取って、以下の２つのテクセル座標値を生成する。
（floor(u-0.5), floor(v-0.5)）        （７）
（floor(u-0.5)+1, floor(v-0.5)）      （８）
ダウンモードでは、座標生成部５４は、二次元のテクセル座標値（ｕ，ｖ）を受け取って、以下の２つのテクセル座標値を生成する。
（floor(u-0.5), floor(v-0.5)+1）      （９）
（floor(u-0.5)+1, floor(v-0.5)+1）    （１０）
【００５１】
図６（ａ）、図６（ｂ）はそれぞれ、テクスチャキャッシュ５０内でのテクセルのアドレスを模式的に示しており、テクセルについての説明は図５と同様である。図６（ａ）はアップモードに対応する。座標生成部５４は、黒丸８２で示すテクセル座標値（ｕ，ｖ）に基づいて、式（７）、（８）から２つのテクセル座標値（0.5，0.5）、（1.5，0.5）を生成する。検索部５６は、これらのテクセル座標値に中心を有する対応する２つのテクセルＴ０、Ｔ１のアドレスを検索し、そのテクセル値を取得する。図６（ｂ）はダウンモードに対応する。座標生成部５４は、黒丸８４で示すテクセル座標値（ｕ，ｖ）に基づいて、式（９）、（１０）から２つのテクセル座標値（0.5，1.5）、（1.5，1.5）を生成する。検索部５６は、これらのテクセル座標値に中心を有する対応する２つのテクセルＴ２、Ｔ３のアドレスを検索し、そのテクセル値を取得する。
【００５２】
このことからもわかるように、式（７）、（８）で生成されるテクセル座標値は、４近傍テクセル一括転送の場合の式（３）、（４）で生成されるテクセル座標値と同じであり、式（９）、（１０）で生成されるテクセル座標値は、４近傍テクセル一括転送の場合の式（５）、（６）で生成されるテクセル座標値と同じである。したがって、アップモードとダウンモードを連続して実行すれば、入力されたテクセル座標値の近傍４テクセルのテクセル値がテクスチャユニットからシェーダに転送されることになり、４近傍テクセル転送の場合と同一の結果が得られることになる。
【００５３】
この実施例による２近傍テクセル一括転送は、実施例１の４近傍テクセル一括転送に比べるとスループットが１／２に低下する。実施例１の４近傍テクセル一括転送と実施例２の２近傍テクセル一括転送の使い分けは、シェーダユニットとテクスチャユニット間のバス幅といったハードウェア構成や、シェーダにおける処理内容に応じて決定すればよい。この使い分けは、上述の設定部４２の設定情報によって決定される。つまり、テクスチャユニットとシェーダユニットの間のバス幅がテクセル値のコンポーネントのビット数と比べて２倍を超える程度しかない場合は、２近傍テクセル一括転送を使用すればよい。
【００５４】
実施例３．２コンポーネントテクセル転送
この実施例は、テクセル値全体のビット数（例えば、６４ビット）よりも、テクスチャユニットとシェーダユニットの間のバス幅が小さい（例えば、３２ビット）場合にテクセル値全体をデータ転送する際に使用する。
【００５５】
例えば、１テクセルのＲ，Ｇ，Ｂ，Ａがそれぞれ１６ビットずつで合計６４ビットであり、テクスチャユニットとシェーダユニットの間のバス幅が３２ビットであるとき、１テクセルの全テクセル値を２コンポーネントずつシェーダユニットに転送する。テクセルがＲ，Ｇ，Ｂ，Ａで構成されているとき、ＲＧモードでは、１テクセルの２コンポーネント分であるＲ値、Ｇ値を転送し、ＢＡモードでは、１テクセルの残り２コンポーネント分であるＢ値、Ａ値を転送する。
【００５６】
なお、この実施例３は、レンダリングプロセッサ１５０のハードウェア構成に依存して様々な態様をとりうることは言うまでもない。
【００５７】
実施例４．
次に、実施例１〜３において、入力されるテクスチャアドレスパラメータにＬＯＤ値が含まれている場合について説明する。図７は、ミップマップテクスチャ２００の構成を説明する図である。ミップマップテクスチャは、予めフィルタをかけて縮小したテクスチャを縮小レベル毎に段階的に複数持たせたものである。図７には、一例として、レベル０のテクスチャ２０２、レベル１のテクスチャ２０４、レベル２のテクスチャ２０６、レベル３のテクスチャ２０８の順で解像度が低くなるミップマップテクスチャの構造が示されている。
【００５８】
座標生成部５４は、ＬＯＤ値に基づいて、レベル０〜レベル３のテクスチャのうちいずれか一つのテクスチャを選択し、そのテクスチャ内でテクスチャ座標値（ｓ，ｔ）またはテクセル座標値（ｕ，ｖ）に基づいて複数のテクセル座標値を生成し、検索部５６はそれらのテクセル座標値に中心を有するテクセルのアドレスを検索する。例えば、実施例１の４近傍テクセル一括転送において、テクセル座標値（ｕ，ｖ）とＬＯＤ値からなるテクスチャアドレスパラメータを受け取ったとき、座標生成部５４は、以下の４つのテクセル座標値を生成する。
（floor(u'-0.5), floor(v'-0.5)）          （１１）
（floor(u'-0.5), floor(v'-0.5)+1）        （１２）
（floor(u'-0.5)+1, floor(v'-0.5)）        （１３）
（floor(u'-0.5)+1, floor(v'-0.5)+1）      （１４）
ここで、（ｕ'，ｖ'）はＬＯＤ値に基づいてミップマップレベルを選択した後のテクセル座標値（ｕ，ｖ）を表している。２近傍テクセル一括転送の場合は、式（１１）〜（１４）のうち任意の２つの座標値を生成するようにすればよい。
【００５９】
以上説明したように、本発明による近傍テクセル一括転送によれば、シェーダユニットからテクスチャユニットへのデータ通信量を低減することができ、両ユニット間の帯域を節約できる。この発明は、１コンポーネント分のテクセルを多数転送するとき、例えば、画像処理で複数の値を集計して平均をとる必要があるときや、アルファブレンディングのように、テクスチャ全体のα値を使用して集計をするときなどに、特に有効である。
【００６０】
また、あるシェーダ２２のみがアクセス可能とされているメモリ１７０内の特定の領域に格納されているデータを、テクスチャユニットを経由すれば、他のシェーダに転送することができるという効果も有する。
【００６１】
以上、実施の形態をもとに本発明を説明した。これらの実施形態は例示であり、各構成要素またはプロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
【００６２】
実施の形態では、テクスチャバッファにＲＧＢＡ値などのテクセル値が格納されているものとして説明したが、テクスチャバッファにＺ値やベクトルデータなどのテクスチャに直接関連しないデータを格納させている場合にも、本発明を適用することができる。
【００６３】
一例として、本発明による近傍テクセル一括転送をシャドウマッピングに適用することができる。ここで、「シャドウマッピング」とは、テクスチャのプロジェクションで影情報を生成する手法である。このシャドウマッピングによって、例えば、光源が動いたときにはその光源に照らされた物体の影も正確に表現できるため、画像のリアリティを高めることができる。
【００６４】
以下、本発明を適用したシャドウマッピングの手順を説明する。まず、テクスチャバッファには、光源から見たＺ値を格納する。このバッファは「シャドウマップ」と呼ばれる。シェーダは、観測者の視点から見たピクセルを描画する際に、「そのピクセルの光源からの距離」と、「シャドウマップをテクスチャとして参照した値」とを比較することで、光源から見てそのピクセルが影に入っているか否かを判定する。その結果、シャドウマップの値の方が光源からの距離よりも大きい場合、そのピクセルは影の内部にあるものと判定し、シェーダはシェーディングを実行する。存在する光源の数だけ、上記判定とシェーディングが繰り返し実行される。
【００６５】
上記判定の際に、上述した４近傍テクセル一括転送を使用して、「シャドウマップをテクスチャとして参照した値」として４近傍のテクセルのテクセル値を転送する。シェーダは４つのテクセル値の補完値と光源からの距離とを比較し、その結果に基づいてシェーディングを実行する。これにより、描画される影のエイリアシングを軽減することができる。一般に、Ｚバッファの解像度を増やせば影のエイリアシングを軽減することができるが、メモリ容量が貴重な場合は、計算でエイリアシングを目立たなくするこの方法は有効である。
【００６６】
シャドウマップは光源の数が多くなればなるほどその生成数が増加するため、処理系全体としての負荷はかなり高くなる。しかし、本発明を適用すると、ひとつのアドレス指定で複数のＺ値を効率的に集めることができるので、処理負荷を削減することができる。
【００６７】
実施の形態では、４近傍テクセル一括転送および２近傍テクセル一括転送について説明したが、１つのテクスチャロード命令で転送されるのは、２つまたは４つのテクセル値に限られない。例えば、三次元のレイヤテクスチャが準備されている場合には、上記座標変換部はトライリニアサンプリングを実行して、複数のテクスチャレイヤ内のテクセル値を一括して転送するようにしてもよい。
【図面の簡単な説明】
【００６８】
【図１】画像描画装置のハードウェア構成図である。
【図２】レンダリングプロセッサの構成を示す図である。
【図３】テクスチャユニットの構成を示す図である。
【図４】近傍テクセル一括転送のフローチャートである。
【図５】４近傍テクセル一括転送のアドレス指定方法を説明する図である。
【図６】（ａ）は２近傍テクセル一括転送のアップモード時のアドレス指定方法を説明する図であり、（ｂ）は２近傍テクセル一括転送のダウンモード時のアドレス指定方法を説明する図である。
【図７】ミップマップテクスチャの構成を説明する図である。
【符号の説明】
【００６９】
１０  ラスタライザ、  ２０  シェーダユニット、  ２２  シェーダ、  ４０  テクスチャユニット、  ４２  設定部、  ４４  入力部、  ４６  出力部、  ４８  演算部、  ５０  テクスチャキャッシュ、  ５２  変換部、  ５４  座標生成部、  ５６  検索部、  ７２  テクスチャバッファ、  ７４  フレームバッファ、  １００  画像描画装置、  １１０  記憶装置、  １２０  表示装置、  １３０  入出力部、  １４０  ジオメトリプロセッサ、  １５０  レンダリングプロセッサ、  １５２  描画演算ユニット、  １５４  メモリインターフェイス、  １６０  メインＣＰＵ、  １７０  メモリ、  １９０  バス。
【図１】
2005332195.tif 000003
【図２】
2005332195.tif 000004
【図３】
2005332195.tif 000005
【図４】
2005332195.tif 000006
【図５】
2005332195.tif 000007
【図６】
2005332195.tif 000008
【図７】
2005332195.tif 000009
【手続補正書】
【提出日】平成17年2月18日(2005.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットにおいて、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
テクスチャユニット外部から入力された単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索されたテクセル値をテクスチャユニット外部に出力する出力部と、
を備えることを特徴とするテクスチャユニット。
【請求項２】
前記入力部がテクスチャアドレスパラメータとしてテクスチャ座標値を受け取ったとき、該テクスチャ座標値をテクセル座標値に変換して前記座標生成部に与える変換部をさらに備えることを特徴とする請求項１に記載のテクスチャユニット。
【請求項３】
前記座標生成部は、前記テクスチャアドレスパラメータからひとつのテクセル座標値を生成し、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位４つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項４】
前記座標生成部は、前記テクスチャアドレスパラメータからひとつのテクセル座標値を生成し、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位２つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項５】
前記メモリ内には複数のミップマップレベル毎にテクスチャが格納されており、
前記入力部にはＬＯＤ値を含むテクスチャアドレスパラメータが入力され、
前記座標生成部が、前記ＬＯＤ値に対応するミップマップレベルのテクスチャ内で前記テクセル座標値を生成することを特徴とする請求項１ないし４のいずれかに記載のテクスチャユニット。
【請求項６】
前記検索部により検索されたテクセル値がテクスチャユニットからの出力ビット幅以上のデータ量を有するとき、２回に分けてデータ転送することを特徴とする請求項１ないし５のいずれかに記載のテクスチャユニット。
【請求項７】
前記テクスチャユニットは設定部をさらに備え、
前記座標生成部は、前記テクスチャアドレスパラメータからひとつのテクセル座標値を生成し、前記設定部に格納された値に応じて、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位４つのテクセルに対応するテクセル座標値を生成する処理か、または、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位２つのテクセルに対応するテクセル座標値を生成する処理のいずれかを実行することを特徴とする請求項１または２に記載のテクスチャユニット。
【請求項８】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットと、テクスチャを受け取って最終的な描画色を決定するシェーダユニットと、を備える画像描画装置において、
前記テクスチャユニットが、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
前記シェーダユニットから単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索された前記テクセル値を前記シェーダユニットに出力する出力部と、
を備えることを特徴とする画像描画装置。
【請求項９】
複数のテクセル値を一括して転送するテクセル転送方法であって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取るステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするテクセル転送方法。
【請求項１０】
三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットに対して、複数のテクセル値を一括して転送させる処理を実行させるプログラムであって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取る受け取りステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするプログラム。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2005332195.tif 000010