JP2005332195A - テクスチャユニット、画像描画装置、テクセル転送方法 - Google Patents
テクスチャユニット、画像描画装置、テクセル転送方法 Download PDFInfo
- Publication number
- JP2005332195A JP2005332195A JP2004149706A JP2004149706A JP2005332195A JP 2005332195 A JP2005332195 A JP 2005332195A JP 2004149706 A JP2004149706 A JP 2004149706A JP 2004149706 A JP2004149706 A JP 2004149706A JP 2005332195 A JP2005332195 A JP 2005332195A
- Authority
- JP
- Japan
- Prior art keywords
- texture
- texel
- unit
- coordinate
- 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 OR CALCULATING; 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
【課題】 シェーダとテクスチャユニット間のデータ通信量を低減する。
【解決手段】 テクスチャユニット40は、三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行する。入力部44は、シェーダユニット20から単一のテクスチャアドレスパラメータを受け取る。座標生成部54は、テクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する。検索部56は、生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を、テクスチャキャッシュ50から、またはメモリインターフェイスを介して外部のテクスチャバッファなどから検索する。出力部46は、検索されたテクセル値をシェーダユニット20に一括して出力する。単一のテクスチャアドレスパラメータ入力から複数のテクセル値を読み出すことができるので、シェーダからテクスチャユニットへの帯域を節約できる。
【選択図】図3
【解決手段】 テクスチャユニット40は、三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行する。入力部44は、シェーダユニット20から単一のテクスチャアドレスパラメータを受け取る。座標生成部54は、テクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する。検索部56は、生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を、テクスチャキャッシュ50から、またはメモリインターフェイスを介して外部のテクスチャバッファなどから検索する。出力部46は、検索されたテクセル値をシェーダユニット20に一括して出力する。単一のテクスチャアドレスパラメータ入力から複数のテクセル値を読み出すことができるので、シェーダからテクスチャユニットへの帯域を節約できる。
【選択図】図3
Description
この発明は画像描画技術に関し、特に、テクスチャをオブジェクト表面に貼り付けるテクスチャマッピング技術に関する。
三次元画像を二次元の画面上に表示させるときに行われる画像処理は、大別して、三次元画像を構成する複数のオブジェクトの頂点座標等に座標変換などを施すジオメトリ処理と、このジオメトリ処理の結果得られるジオメトリデータからピクセル毎の色などを決定して二次元画像を生成するレンダリング処理とからなる。
レンダリング処理では、二次元座標の位置情報と、オブジェクトの表面の色や模様を表すテクスチャとから、ピクセル単位のカラー情報を計算し、その結果をフレームバッファに書き込み、画面に表示する。
三次元画像を高速に描画処理するためには、描画データのアドレス指定を高速に行うことが望ましい。特に、テクスチャマッピングでは、オブジェクト表面に貼り付けるべきテクセルを指定するために、大量のアドレス指定を実行する必要がある。しかし、テクセルがある程度の領域にわたって存在する場合は、隣接するテクセルをひとつひとつ指定すると、シェーダからテクスチャユニットへのデータ量およびインストラクション数が多くなり、シェーダとテクスチャユニット間の帯域が不足して処理効率が低下する場合もある。
本発明はこうした課題に鑑みてなされたものであり、その目的は、シェーダとテクスチャユニット間のデータ通信量を低減する技術を提供することにある。
本発明のある態様では、単一のテクスチャアドレスパラメータに基づいて複数のテクセル座標値を生成し、そのテクセル座標値に対応する複数のテクセル値を一括してテクスチャユニット外部に転送するようにした。
この態様によれば、単一のテクスチャアドレスパラメータの入力に基づいて、複数のテクセル値を読み出すことができるので、シェーダからテクスチャユニットへの帯域を節約でき、処理速度が向上する。また、複数のテクセル値がまとめてシェーダに入力されることになるので、シェーダ側の処理プロセスが簡略化される。ここで、「テクスチャアドレスパラメータ」にはテクスチャ座標値、テクセル座標値、またはLOD値が含まれる。また、「テクセル値」には、一例として、テクセルのRGB値、α値、Z値が含まれるが、それ以外の任意の値であってもよい。
なお、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明のテクスチャユニットによれば、テクスチャユニットとその出力を利用するユニット間でのデータ通信量を低減し、帯域を節約することができる。
図1は、本発明の一実施形態に係る画像描画装置100のハードウェア構成図である。画像描画装置100は、レンダリングプロセッサ150を備え、レンダリングを実行して三次元画像を表示装置120の画面にリアルタイムに表示する。
画像描画装置100は、入出力部130と、ジオメトリプロセッサ140と、レンダリングプロセッサ150と、メインCPU160と、メモリ170と、を備える。これらの各ブロックはバス190を介して接続され、相互にデータの送受信が可能となっている。入出力部130には、CD−ROMやハードディスクドライブなどの記憶装置110と、ディスプレイ等の表示装置120が接続される。入出力部130は、記憶装置110および表示装置120に対するデータの入出力を制御する。
入出力部130は、記憶装置110に格納された画像処理用のデータやプログラムを読み込み、ジオメトリプロセッサ140に提供する。画像処理用のデータは、例えば、オブジェクトについての図形データなどである。入出力部130は、他の装置と通信して、画像処理用のデータ及びプログラムを外部から取得する構成であってもよい。
メインCPU160は、記憶装置110に記録されているアプリケーションプログラムを実行する。プログラムの実行により、メインCPU160は、ユーザからの入力に応じてレンダリングプロセッサ150を制御して、画像の表示を制御する。
また、メインCPU160は、各構成要素間のデータの受け渡し、例えば、ジオメトリプロセッサ140で生成されたジオメトリデータを、メモリ170等をバッファとしてレンダリングプロセッサ150へと転送したり、あるいは、レンダリングプロセッサ150と、記憶装置110、表示装置120などの外部周辺装置との間のデータ転送の同期管理などといった、画像描画装置100の全体を制御する。なお、本実施形態では、ジオメトリプロセッサ140とメインCPU160とを別に設けた例を示すが、これらを一体化し、メインCPU160がジオメトリプロセッサ140の機能を持つようにしてもよい。
メモリ170は、記憶装置110から読み出したオブジェクトの形状データや描画処理プログラムなどを記憶する。各オブジェクトデータには、対応するオブジェクトを構成する複数のポリゴンの頂点データが登録されている。また、メモリ170には、テクスチャマッピングに用いられるテクスチャデータが格納されるテクスチャバッファ72が設けられている。
ジオメトリプロセッサ140は、メインCPU160の制御のもと、メモリ170に格納された図形データに対して、アフィン変換処理、頂点に対する光源処理などのジオメトリ処理を行う。ジオメトリ処理の結果得られるジオメトリデータは、オブジェクトについての頂点座標値、各頂点でのテクスチャ座標値、頂点輝度値などのオブジェクトの属性を表すデータからなる。
レンダリングプロセッサ150は、描画演算ユニット152とメモリインターフェイス(図中では「メモリI/F」と表記する)154とを含む。レンダリングプロセッサ150は、メインCPU160の制御のもと、ジオメトリプロセッサ140で生成されたジオメトリデータを順次読み出し、読み出されたジオメトリデータに対してレンダリング処理を行って描画データを生成する。各ピクセルのRGB値および透過度を表すα値は、フレームバッファ74に格納され、各ピクセルの奥行きを表すZ値は、図示しないZバッファに格納される。
なお、テクスチャバッファ72、フレームバッファ74およびZバッファを、同一のDRAM(Dynamic Random Access Memory)上に設けるようにしてもよい。また、このDRAMがレンダリングプロセッサ150上に設けられていてもよい。
レンダリング処理により生成されフレームバッファに格納された描画データは、入出力部130により読み出されて、表示装置120で表示可能な画像信号に変換され、表示装置120に表示される。
図2は、レンダリングプロセッサ150の詳細な構成を説明する図である。描画演算ユニット152には、ラスタライザ10と、シェーダユニット20と、テクスチャユニット40とが含まれる。ラスタライザ10は、描画オブジェクトのジオメトリデータを受け取る。描画オブジェクトは、一般的には三角形のトライアングルストリップ(triangle strip)データであり、ラスタライザ10は、三次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行う。さらに、ラスタライザ10は、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスター処理を行う。ラスタライザ10により、描画オブジェクトがピクセル展開され、各ピクセルについて、RGB値、α値、Z値を含むピクセル情報が算出される。
ラスタライザ10は、スキャンラインに沿って所定の大きさの矩形のピクセル領域を生成し、シェーダユニット20に与える。描画処理の並列化のために、描画演算ユニット152内に複数のシェーダユニット20が設けられていてもよい。この場合、図示しない分配部が、ラスタライザ10から供給されたピクセル領域の処理を担当するシェーダユニット20を決定し、決定されたシェーダユニット20のキューにピクセル領域データをスタックする。シェーダユニット20は、キューにスタックされたピクセル領域データを順に処理する。
シェーダユニット20は、非同期動作する複数のシェーダ22を有しており、それぞれが担当するピクセルデータを処理することで、ピクセルの描画処理を並列に実行可能となっている。
シェーダユニット20内の各シェーダ22は、ラスタライザ10により算出されたピクセル情報をもとに、フラットシェーディングなどのシェーディング処理を行い、各描画ピクセルのカラー値を決定し、メモリインターフェイス154を介してメモリ170内のフレームバッファ74にそのカラー値を書き込む。さらに、各シェーダ22は、テクスチャユニット40から出力されたテクスチャデータをもとに、ピクセルマッピングされたテクセルのカラー値をフレームバッファ74から読み出されたピクセルのカラー値にブレンドする。続いて、各シェーダ22は、フォギング、アルファブレンディング等の処理を行い、ピクセルのピクセル色、テクセル色、α値、フォグ値が決まると、最終的な描画ピクセルデータをメモリインターフェイス154を介してフレームバッファ74に書き込む。フレームバッファ74に書き込まれた描画データは、入出力部130により読み出され、表示装置120に出力される。なお、各シェーダ22は、メモリ170内の特定の領域のみにアクセス可能に構成されている。
描画演算ユニット152内には、1つのテクスチャユニット40が設けられており、各シェーダ22は、テクスチャデータを指定するためのテクスチャパラメータ(以下、これを「テクスチャアドレスパラメータ」と呼ぶ)を含むテクスチャロード命令をテクスチャユニット40に入力し、テクスチャユニット40からテクスチャマッピング処理後のテクスチャデータの出力を受け取る。
テクスチャユニット40は、シェーダユニット20からテクスチャアドレスパラメータを受け取り、テクスチャデータのアドレスを算出して、テクスチャユニット40内のテクスチャキャッシュを検索する。テクスチャキャッシュにテクスチャデータがキャッシュされていない場合は、メモリインターフェイス154を介してメモリ170内のテクスチャバッファ72を検索する。テクスチャユニット40は、取得したテクスチャデータに対して、バイリニア補間、トライリニア補間などのフィルタ処理を施して、シェーダユニット20に出力する。
なお、図2に示すように、シェーダユニット20とテクスチャユニット40とが別ユニットとされていることの利点は、テクスチャユニットは、描画処理に頻繁に使用される演算を固定回路で構成することで効率を上げる一方、シェーダユニットは基本的な四則演算や論理演算が基本なので、汎用性を持たせたほうが好ましいからである。
図3は、テクスチャユニット40の構成を示す図である。ここに示す各ブロックは機能ブロックとして描かれており、これらの機能ブロックは半導体デバイスなどにより個別に実現することもできるし、ディジタルシグナルプロセッサ(DSP)またはグラフィックプロセッサとコンピュータプログラムとの協働により実現することもできる。
テクスチャユニット40は、シェーダユニット20から出力されたピクセルのテクスチャ座標値を受け取り、テクスチャ座標値をテクセル座標値に変換する。代替的に、テクセル座標値を直接受けとってもよいし、あるいは、テクセルを描画する際の詳細度を示すLOD値を付加的に受け取ってもよい。続いて、テクセル座標値を使用してテクスチャデータのアドレスを算出する。算出されたアドレスをもとにテクセル値を読み出し、ピクセルにマッピングされるテクセルのテクセル色を、バイリニアフィルタなどのフィルタリング処理により求める。
以下、テクスチャユニット40内の各ブロックについて説明する。レジスタ等で構成される設定部42には、テクスチャユニット40の動作を規定する各種設定情報が入力される。テクスチャユニット40は、設定部42の設定情報で指定されるフィルタリングに応じたテクスチャデータを生成する。
入力部44は、複数のシェーダ22からテクスチャロード命令を受け付け、これらの命令をスタックする。テクスチャロード命令には、テクスチャデータを指定するテクスチャパラメータが含まれる。テクスチャパラメータは、テクスチャ座標値、テクセル座標値、LOD(level of detail)値などを含む。
テクスチャ座標値およびテクセル座標値は二次元座標値であり、テクスチャ座標値は(s,t)、テクセル座標値は(u,v)のように記述される。これらの座標系は、設定部42の設定情報により指定することができる。
入力部44にスタックされたテクスチャロード命令は、順に演算部48に読み出されて処理される。
演算部48内の変換部52は、二次元のテクスチャ座標値(s,t)が入力された場合、以下の式にしたがって、テクスチャの各サイズに合わせた二次元のテクセル座標値(u,v)に変換する。
u=s×TexWidth (1)
v=t×TexHeight (2)
ここで、TexWidth、TexHeightは、それぞれ、テクスチャの幅、高さに対応する。
u=s×TexWidth (1)
v=t×TexHeight (2)
ここで、TexWidth、TexHeightは、それぞれ、テクスチャの幅、高さに対応する。
座標生成部54は、テクセル座標値を使用して、テクスチャバッファ内のアドレスを生成する。検索部56は、そのアドレスに従って、テクスチャユニット40内部のテクスチャキャッシュ50にアクセスする。テクスチャキャッシュ50には、入出力部130により記憶装置110から読み出されたテクスチャデータがキャッシュされる。
テクスチャのロード時、テクスチャキャッシュ50にデータを読みに行ったがキャッシュミスした際には、メモリインターフェイス154を介してメモリ170内のテクスチャバッファ72にアクセスする。テクスチャバッファ72にもテクスチャデータが存在していない場合は、入出力部130を介して、記憶装置110にアクセスする。テクスチャバッファ72または記憶装置110のいずれかから読み出されたテクスチャデータは、バス190経由でテクスチャユニット40に与えられる。
演算部48は、設定部42の設定情報に基づいて、テクセル値に対してバイリニア補間などのフィルタリング処理を行い、出力部46に転送する。出力部46にスタックされたデータは、順にシェーダ22に渡される。
テクスチャデータは、各テクセルのカラー値を直接持つのではなく、カラー値に対するインデックスをテクセル値として持つようにしてもよい。これにより、テクスチャデータの効率的な圧縮が可能となる。インデックス値に対応するカラー値の情報は、図示しないルックアップテーブルに格納されている。ここで、ルックアップテーブルとは、カラー情報を記述するエントリをインデックスの番号順に並べたカラーテーブルを格納したものである。
この場合、演算部48は、インデックス形式で与えられたテクセル色を実際のカラー値に変換するために、テクセルのインデックス値を図示しないルックアップテーブル参照部に与える。ルックアップテーブル参照部は、インデックス値をキーとしてルックアップテーブルを参照して、インデックス値に対応するカラー情報を演算部48に出力する。
本実施の形態におけるレンダリングプロセッサ150では、上述のように、テクスチャマッピングを実行するテクスチャユニット40が、複数のシェーダ22を含むシェーダユニット20から独立して存在する。このように、複数のシェーダに対してテクスチャユニットをひとつ設けるようにしたことで、シェーダの計算負荷が軽減されるとともに、テクスチャユニットの稼動効率を上げることができる。したがって、レンダリングプロセッサの全体的な処理効率も向上する。また、テクスチャユニットから出力されるデータをシェーダ側で多様に加工して使用することが可能となる。
しかしながら、このような形態をとると、シェーダユニットとテクスチャユニットの間でデータ通信を高頻度で実行する必要があるので、このデータ通信量を低減することが重要な問題のひとつとなる。
そこで、本発明では、単一のテクスチャアドレスパラメータを指定したテクスチャロード命令に対して、2つまたは4つのテクセル値を一括してシェーダユニットに返すようにして、データ通信量を削減するようにした。
図4は、テクセル値を一括転送するフローチャートである。まず、テクスチャユニット40内の入力部44は、シェーダユニット20から単一のテクスチャアドレスパラメータ、具体的には、二次元のテクスチャ座標値、テクセル座標値、またはLOD値を受け取る(S10)。テクスチャ座標値を受け取った場合には、上記の式にしたがって変換部52によりテクセル座標値に変換される。次に、前記単一のテクスチャアドレスパラメータに基づいて、座標生成部54が複数のテクセル座標値を生成する(S12)。検索部56は、生成された複数のテクセル座標値に対応するテクセル値(例えば、カラー値、α値、Z値)を前記テクスチャキャッシュ50から検索する(S14)。キャッシュミスした場合は、上述のように、テクスチャバッファ72または記憶装置110にアクセスする。そして、検索されたテクセル値を、出力部46を介してシェーダユニット20に出力する(S16)。
このフローチャートにしたがって、以下のような処理を実現することができる。なお、以下に述べる実施例1〜3では、二次元テクスチャを例として説明する。
実施例1.4近傍テクセル一括転送
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、4つのテクセル座標値を生成し、4近傍のテクセルが選択される。ひとつのテクセルがR、G、B、Aの4コンポーネントで構成されている場合、選択されたテクセルのテクセル値のうちR、G、B、Aのいずれかが、4テクセル分一括してシェーダに転送される。
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、4つのテクセル座標値を生成し、4近傍のテクセルが選択される。ひとつのテクセルがR、G、B、Aの4コンポーネントで構成されている場合、選択されたテクセルのテクセル値のうちR、G、B、Aのいずれかが、4テクセル分一括してシェーダに転送される。
座標生成部54は、二次元のテクセル座標値(u,v)を受け取って、以下の4つのテクセル座標値を生成する。
(floor(u-0.5), floor(v-0.5)) (3)
(floor(u-0.5), floor(v-0.5)+1) (4)
(floor(u-0.5)+1, floor(v-0.5)) (5)
(floor(u-0.5)+1, floor(v-0.5)+1) (6)
但し、関数「floor」は、引数に最も近いテクセル中心を求める関数である。
(floor(u-0.5), floor(v-0.5)) (3)
(floor(u-0.5), floor(v-0.5)+1) (4)
(floor(u-0.5)+1, floor(v-0.5)) (5)
(floor(u-0.5)+1, floor(v-0.5)+1) (6)
但し、関数「floor」は、引数に最も近いテクセル中心を求める関数である。
図5を参照して、テクスチャキャッシュ50内でのテクセルのアドレスについて説明する。テクスチャ中のテクセルの指定は、二次元のテクセル座標系で行われる。テクセル座標値(u,v)は、1テクセルの縦、横がそれぞれ「1.0」となる固定小数値である。各テクセルの中心は、図中のグリッドの中間点である、テクセル座標値の小数部が0.5の位置に配置されており、この位置を指定することで、テクスチャキャッシュ50内の実アドレスを求めることができるようになっている。
図5中の黒丸80は、シェーダ22から直接受け取ったか、またはテクスチャ座標値から変換されたテクセル座標値(u,v)を示す。座標生成部54は、このテクセル座標値(u,v)に基づいて、上記(3)〜(6)で示した4つのテクセル座標値を生成する。これら4つの座標値は、図5においてT0〜T3で示す各テクセルの中心座標に相当する。例えば、黒丸80のテクセル座標値が(u,v)=(1.2,1.2)であったとする。座標生成部54は、この値を式(3)に代入して、(floor(1.2-0.5), floor(1.2-0.5))=(floor(0.7), floor(0.7))=(0.5,0.5)のテクセル座標値を生成する。検索部56は、この座標にテクセル中心を有するテクセルT0のアドレスを検索して、テクセル値を取得する。同様にして、座標生成部54は、式(4)から、(floor(1.2-0.5) +1, floor(1.2-0.5))=(floor(0.7)+1, floor(0.7))=(1.5,0.5)のテクセル座標値を生成し、式(5)から、(floor(1.2-0.5), floor(1.2-0.5)+1)=(floor(0.7), floor(0.7)+1)=(0.5,1.5)のテクセル座標値を生成し、式(6)から、(floor(1.2-0.5)+1, floor(1.2-0.5)+1)=(floor(0.7)+1, floor(0.7)+1)=(1.5,1.5)のテクセル座標値を生成する。そして、検索部56は、これらの座標にテクセル中心を有するテクセルT1〜T3のアドレスを検索して、テクセル値を取得する。
4テクセル分のコンポーネントを得るために、従来はテクセルのアドレスを一つずつ指定して、各テクセル値を検索することを4回繰り返していたのに対し、この実施形態によれば、一つのアドレス指定で4テクセル分のテクセル値を一括してシェーダに転送することができる。これにより、シェーダからテクスチャユニットへのアドレス指定を従来の1/4のデータ通信量にすることができる。また、一命令に対して4つのテクセル値が一括して出力されるので、シェーダ側のプログラムの実行回数も省略することができる。このように、ひとつずつテクセルを指定して転送させるよりも、より効率的な処理が可能となる。
実施例2.2近傍テクセル一括転送
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、2つのテクセル座標値を生成する。この実施例では、入力されたテクセル座標値に対し、テクセル座標系において上下いずれの位置のテクセルを選択するかによって、「アップモード」と「ダウンモード」の2つのモードを考えることができる。
この実施例では、ひとつのテクスチャアドレスパラメータの入力に対し、2つのテクセル座標値を生成する。この実施例では、入力されたテクセル座標値に対し、テクセル座標系において上下いずれの位置のテクセルを選択するかによって、「アップモード」と「ダウンモード」の2つのモードを考えることができる。
アップモードでは、座標生成部54は、二次元のテクセル座標値(u,v)を受け取って、以下の2つのテクセル座標値を生成する。
(floor(u-0.5), floor(v-0.5)) (7)
(floor(u-0.5)+1, floor(v-0.5)) (8)
ダウンモードでは、座標生成部54は、二次元のテクセル座標値(u,v)を受け取って、以下の2つのテクセル座標値を生成する。
(floor(u-0.5), floor(v-0.5)+1) (9)
(floor(u-0.5)+1, floor(v-0.5)+1) (10)
(floor(u-0.5), floor(v-0.5)) (7)
(floor(u-0.5)+1, floor(v-0.5)) (8)
ダウンモードでは、座標生成部54は、二次元のテクセル座標値(u,v)を受け取って、以下の2つのテクセル座標値を生成する。
(floor(u-0.5), floor(v-0.5)+1) (9)
(floor(u-0.5)+1, floor(v-0.5)+1) (10)
図6(a)、図6(b)はそれぞれ、テクスチャキャッシュ50内でのテクセルのアドレスを模式的に示しており、テクセルについての説明は図5と同様である。図6(a)はアップモードに対応する。座標生成部54は、黒丸82で示すテクセル座標値(u,v)に基づいて、式(7)、(8)から2つのテクセル座標値(0.5,0.5)、(1.5,0.5)を生成する。検索部56は、これらのテクセル座標値に中心を有する対応する2つのテクセルT0、T1のアドレスを検索し、そのテクセル値を取得する。図6(b)はダウンモードに対応する。座標生成部54は、黒丸84で示すテクセル座標値(u,v)に基づいて、式(9)、(10)から2つのテクセル座標値(0.5,1.5)、(1.5,1.5)を生成する。検索部56は、これらのテクセル座標値に中心を有する対応する2つのテクセルT2、T3のアドレスを検索し、そのテクセル値を取得する。
このことからもわかるように、式(7)、(8)で生成されるテクセル座標値は、4近傍テクセル一括転送の場合の式(3)、(4)で生成されるテクセル座標値と同じであり、式(9)、(10)で生成されるテクセル座標値は、4近傍テクセル一括転送の場合の式(5)、(6)で生成されるテクセル座標値と同じである。したがって、アップモードとダウンモードを連続して実行すれば、入力されたテクセル座標値の近傍4テクセルのテクセル値がテクスチャユニットからシェーダに転送されることになり、4近傍テクセル転送の場合と同一の結果が得られることになる。
この実施例による2近傍テクセル一括転送は、実施例1の4近傍テクセル一括転送に比べるとスループットが1/2に低下する。実施例1の4近傍テクセル一括転送と実施例2の2近傍テクセル一括転送の使い分けは、シェーダユニットとテクスチャユニット間のバス幅といったハードウェア構成や、シェーダにおける処理内容に応じて決定すればよい。この使い分けは、上述の設定部42の設定情報によって決定される。つまり、テクスチャユニットとシェーダユニットの間のバス幅がテクセル値のコンポーネントのビット数と比べて2倍を超える程度しかない場合は、2近傍テクセル一括転送を使用すればよい。
実施例3.2コンポーネントテクセル転送
この実施例は、テクセル値全体のビット数(例えば、64ビット)よりも、テクスチャユニットとシェーダユニットの間のバス幅が小さい(例えば、32ビット)場合にテクセル値全体をデータ転送する際に使用する。
この実施例は、テクセル値全体のビット数(例えば、64ビット)よりも、テクスチャユニットとシェーダユニットの間のバス幅が小さい(例えば、32ビット)場合にテクセル値全体をデータ転送する際に使用する。
例えば、1テクセルのR,G,B,Aがそれぞれ16ビットずつで合計64ビットであり、テクスチャユニットとシェーダユニットの間のバス幅が32ビットであるとき、1テクセルの全テクセル値を2コンポーネントずつシェーダユニットに転送する。テクセルがR,G,B,Aで構成されているとき、RGモードでは、1テクセルの2コンポーネント分であるR値、G値を転送し、BAモードでは、1テクセルの残り2コンポーネント分であるB値、A値を転送する。
なお、この実施例3は、レンダリングプロセッサ150のハードウェア構成に依存して様々な態様をとりうることは言うまでもない。
実施例4.
次に、実施例1〜3において、入力されるテクスチャアドレスパラメータにLOD値が含まれている場合について説明する。図7は、ミップマップテクスチャ200の構成を説明する図である。ミップマップテクスチャは、予めフィルタをかけて縮小したテクスチャを縮小レベル毎に段階的に複数持たせたものである。図7には、一例として、レベル0のテクスチャ202、レベル1のテクスチャ204、レベル2のテクスチャ206、レベル3のテクスチャ208の順で解像度が低くなるミップマップテクスチャの構造が示されている。
次に、実施例1〜3において、入力されるテクスチャアドレスパラメータにLOD値が含まれている場合について説明する。図7は、ミップマップテクスチャ200の構成を説明する図である。ミップマップテクスチャは、予めフィルタをかけて縮小したテクスチャを縮小レベル毎に段階的に複数持たせたものである。図7には、一例として、レベル0のテクスチャ202、レベル1のテクスチャ204、レベル2のテクスチャ206、レベル3のテクスチャ208の順で解像度が低くなるミップマップテクスチャの構造が示されている。
座標生成部54は、LOD値に基づいて、レベル0〜レベル3のテクスチャのうちいずれか一つのテクスチャを選択し、そのテクスチャ内でテクスチャ座標値(s,t)またはテクセル座標値(u,v)に基づいて複数のテクセル座標値を生成し、検索部56はそれらのテクセル座標値に中心を有するテクセルのアドレスを検索する。例えば、実施例1の4近傍テクセル一括転送において、テクセル座標値(u,v)とLOD値からなるテクスチャアドレスパラメータを受け取ったとき、座標生成部54は、以下の4つのテクセル座標値を生成する。
(floor(u'-0.5), floor(v'-0.5)) (11)
(floor(u'-0.5), floor(v'-0.5)+1) (12)
(floor(u'-0.5)+1, floor(v'-0.5)) (13)
(floor(u'-0.5)+1, floor(v'-0.5)+1) (14)
ここで、(u',v')はLOD値に基づいてミップマップレベルを選択した後のテクセル座標値(u,v)を表している。2近傍テクセル一括転送の場合は、式(11)〜(14)のうち任意の2つの座標値を生成するようにすればよい。
(floor(u'-0.5), floor(v'-0.5)) (11)
(floor(u'-0.5), floor(v'-0.5)+1) (12)
(floor(u'-0.5)+1, floor(v'-0.5)) (13)
(floor(u'-0.5)+1, floor(v'-0.5)+1) (14)
ここで、(u',v')はLOD値に基づいてミップマップレベルを選択した後のテクセル座標値(u,v)を表している。2近傍テクセル一括転送の場合は、式(11)〜(14)のうち任意の2つの座標値を生成するようにすればよい。
以上説明したように、本発明による近傍テクセル一括転送によれば、シェーダユニットからテクスチャユニットへのデータ通信量を低減することができ、両ユニット間の帯域を節約できる。この発明は、1コンポーネント分のテクセルを多数転送するとき、例えば、画像処理で複数の値を集計して平均をとる必要があるときや、アルファブレンディングのように、テクスチャ全体のα値を使用して集計をするときなどに、特に有効である。
また、あるシェーダ22のみがアクセス可能とされているメモリ170内の特定の領域に格納されているデータを、テクスチャユニットを経由すれば、他のシェーダに転送することができるという効果も有する。
以上、実施の形態をもとに本発明を説明した。これらの実施形態は例示であり、各構成要素またはプロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
実施の形態では、テクスチャバッファにRGBA値などのテクセル値が格納されているものとして説明したが、テクスチャバッファにZ値やベクトルデータなどのテクスチャに直接関連しないデータを格納させている場合にも、本発明を適用することができる。
一例として、本発明による近傍テクセル一括転送をシャドウマッピングに適用することができる。ここで、「シャドウマッピング」とは、テクスチャのプロジェクションで影情報を生成する手法である。このシャドウマッピングによって、例えば、光源が動いたときにはその光源に照らされた物体の影も正確に表現できるため、画像のリアリティを高めることができる。
以下、本発明を適用したシャドウマッピングの手順を説明する。まず、テクスチャバッファには、光源から見たZ値を格納する。このバッファは「シャドウマップ」と呼ばれる。シェーダは、観測者の視点から見たピクセルを描画する際に、「そのピクセルの光源からの距離」と、「シャドウマップをテクスチャとして参照した値」とを比較することで、光源から見てそのピクセルが影に入っているか否かを判定する。その結果、シャドウマップの値の方が光源からの距離よりも大きい場合、そのピクセルは影の内部にあるものと判定し、シェーダはシェーディングを実行する。存在する光源の数だけ、上記判定とシェーディングが繰り返し実行される。
上記判定の際に、上述した4近傍テクセル一括転送を使用して、「シャドウマップをテクスチャとして参照した値」として4近傍のテクセルのテクセル値を転送する。シェーダは4つのテクセル値の補完値と光源からの距離とを比較し、その結果に基づいてシェーディングを実行する。これにより、描画される影のエイリアシングを軽減することができる。一般に、Zバッファの解像度を増やせば影のエイリアシングを軽減することができるが、メモリ容量が貴重な場合は、計算でエイリアシングを目立たなくするこの方法は有効である。
シャドウマップは光源の数が多くなればなるほどその生成数が増加するため、処理系全体としての負荷はかなり高くなる。しかし、本発明を適用すると、ひとつのアドレス指定で複数のZ値を効率的に集めることができるので、処理負荷を削減することができる。
実施の形態では、4近傍テクセル一括転送および2近傍テクセル一括転送について説明したが、1つのテクスチャロード命令で転送されるのは、2つまたは4つのテクセル値に限られない。例えば、三次元のレイヤテクスチャが準備されている場合には、上記座標変換部はトライリニアサンプリングを実行して、複数のテクスチャレイヤ内のテクセル値を一括して転送するようにしてもよい。
10 ラスタライザ、 20 シェーダユニット、 22 シェーダ、 40 テクスチャユニット、 42 設定部、 44 入力部、 46 出力部、 48 演算部、 50 テクスチャキャッシュ、 52 変換部、 54 座標生成部、 56 検索部、 72 テクスチャバッファ、 74 フレームバッファ、 100 画像描画装置、 110 記憶装置、 120 表示装置、 130 入出力部、 140 ジオメトリプロセッサ、 150 レンダリングプロセッサ、 152 描画演算ユニット、 154 メモリインターフェイス、 160 メインCPU、 170 メモリ、 190 バス。
Claims (10)
- 三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットにおいて、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
テクスチャユニット外部から入力された単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索されたテクセル値をテクスチャユニット外部に出力する出力部と、
を備えることを特徴とするテクスチャユニット。 - 前記入力部がテクスチャアドレスパラメータとしてテクスチャ座標値を受け取ったとき、該テクスチャ座標値をテクセル座標値に変換して前記座標生成部に与える変換部をさらに備えることを特徴とする請求項1に記載のテクスチャユニット。
- 前記座標生成部は、テクセル座標値を受け取ったとき、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位4つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項1または2に記載のテクスチャユニット。
- 前記座標生成部は、テクセル座標値を受け取ったとき、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位2つのテクセルに対応するテクセル座標値を生成することを特徴とする請求項1または2に記載のテクスチャユニット。
- 前記メモリ内には複数のミップマップレベル毎にテクスチャが格納されており、
前記入力部にはLOD値を含むテクスチャアドレスパラメータが入力され、
前記座標生成部が、前記LOD値に対応するミップマップレベルのテクスチャ内で前記テクセル座標値を生成することを特徴とする請求項1ないし4のいずれかに記載のテクスチャユニット。 - 前記検索部により検索されたテクセル値がテクスチャユニットからの出力ビット幅以上のデータ量を有するとき、2回に分けてデータ転送することを特徴とする請求項1ないし5のいずれかに記載のテクスチャユニット。
- 前記テクスチャユニットは設定部をさらに備え、
前記座標生成部は、テクセル座標値を受け取ったとき、前記設定部に格納された値に応じて、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位4つのテクセルに対応するテクセル座標値を生成する処理か、または、テクセル座標系において前記テクセル座標値から各テクセルの中心までの距離が最も近いものから上位2つのテクセルに対応するテクセル座標値を生成する処理のいずれかを実行することを特徴とする請求項1または2に記載のテクスチャユニット。 - 三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットと、テクスチャを受け取って最終的な描画色を決定するシェーダユニットと、を備える画像描画装置において、
前記テクスチャユニットが、
複数のテクセルから構成されるテクスチャが格納されているメモリと、
前記シェーダユニットから単一のテクスチャアドレスパラメータを受け取る入力部と、
前記単一のテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する座標生成部と、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索部と、
検索された前記テクセル値を前記シェーダユニットに出力する出力部と、
を備えることを特徴とする画像描画装置。 - 複数のテクセル値を一括して転送するテクセル転送方法であって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取るステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするテクセル転送方法。 - 三次元空間上のオブジェクトにテクスチャを貼り付けるテクスチャマッピングを実行するテクスチャユニットに対して、複数のテクセル値を一括して転送させる処理を実行させるプログラムであって、
複数のテクセルから構成されるテクスチャをメモリに格納しておく格納ステップと、
単一のテクスチャアドレスパラメータを受け取る受け取りステップと、
受け取ったテクスチャアドレスパラメータに基づいて、複数のテクセル座標値を生成する生成ステップと、
生成された複数のテクセル座標値にそれぞれ対応する複数のテクセル値を前記メモリから検索する検索ステップと、
検索されたテクセル値を一括して転送する転送ステップと、
を含むことを特徴とするプログラム。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004149706A JP2005332195A (ja) | 2004-05-19 | 2004-05-19 | テクスチャユニット、画像描画装置、テクセル転送方法 |
| EP05005992A EP1598784A3 (en) | 2004-05-19 | 2005-03-18 | Texture mapping apparatus and texel transfer method |
| US11/087,075 US7405735B2 (en) | 2004-05-19 | 2005-03-22 | Texture unit, image rendering apparatus and texel transfer method for transferring texels in a batch |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004149706A JP2005332195A (ja) | 2004-05-19 | 2004-05-19 | テクスチャユニット、画像描画装置、テクセル転送方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005332195A true JP2005332195A (ja) | 2005-12-02 |
Family
ID=34934365
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004149706A Pending JP2005332195A (ja) | 2004-05-19 | 2004-05-19 | テクスチャユニット、画像描画装置、テクセル転送方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US7405735B2 (ja) |
| EP (1) | EP1598784A3 (ja) |
| JP (1) | JP2005332195A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008299852A (ja) * | 2007-05-30 | 2008-12-11 | Nvidia Corp | プログラム可能なオフセット位置を用いてテクスチャサンプルを処理するための方法及びシステム |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7730043B1 (en) | 2006-06-29 | 2010-06-01 | Adobe Systems Incorporated | Incremental batch-mode editing of digital media objects |
| US8207978B2 (en) * | 2006-06-29 | 2012-06-26 | Intel Corporation | Simplification of 3D texture address computation based on aligned, non-perspective objects |
| US8154554B1 (en) * | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
| US10157492B1 (en) | 2008-10-02 | 2018-12-18 | Nvidia Corporation | System and method for transferring pre-computed Z-values between GPUS |
| US9324175B2 (en) * | 2009-09-11 | 2016-04-26 | Nvidia Corporation | Memory coherency in graphics command streams and shaders |
| CN105894564B (zh) * | 2016-03-30 | 2020-02-14 | 百度在线网络技术(北京)有限公司 | 路面纹理的生成方法和装置 |
| US10089708B2 (en) * | 2016-04-28 | 2018-10-02 | Qualcomm Incorporated | Constant multiplication with texture unit of graphics processing unit |
| WO2018111014A1 (en) * | 2016-12-14 | 2018-06-21 | Samsung Electronics Co., Ltd. | Method and apparatus for rendering object using mipmap including plurality of textures |
| CN112381918B (zh) * | 2020-12-03 | 2025-01-10 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3071387B2 (ja) | 1994-11-25 | 2000-07-31 | 松下電器産業株式会社 | 補間装置および補間方法、並びに画像生成装置 |
| JP2637931B2 (ja) | 1994-12-01 | 1997-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレイション | テクスチャ・マッピングを行うコンピュータ・システム |
| JP3081774B2 (ja) | 1995-05-24 | 2000-08-28 | シャープ株式会社 | テクスチャーパターンメモリ回路 |
| US6292191B1 (en) * | 1996-12-30 | 2001-09-18 | Cirrus Logic, Inc. | Dynamically selectable MIP map blending for a software graphics engine |
| US6353438B1 (en) * | 1999-02-03 | 2002-03-05 | Artx | Cache organization—direct mapped cache |
| JP2003115056A (ja) | 1999-12-16 | 2003-04-18 | Sega Corp | 画像生成方法及びこれを用いた画像生成装置 |
| US7034828B1 (en) * | 2000-08-23 | 2006-04-25 | Nintendo Co., Ltd. | Recirculating shade tree blender for a graphics system |
| US6762769B2 (en) * | 2002-01-23 | 2004-07-13 | Microsoft Corporation | System and method for real-time texture synthesis using patch-based sampling |
| US6795080B2 (en) * | 2002-01-30 | 2004-09-21 | Sun Microsystems, Inc. | Batch processing of primitives for use with a texture accumulation buffer |
| KR20050093863A (ko) * | 2003-02-13 | 2005-09-23 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 컴퓨터 그래픽 시스템 및 컴퓨터 그래픽 이미지의 랜더링방법 |
| US7012614B2 (en) * | 2003-10-23 | 2006-03-14 | Silicon Graphics, Inc. | Texture roaming via dimension elevation |
-
2004
- 2004-05-19 JP JP2004149706A patent/JP2005332195A/ja active Pending
-
2005
- 2005-03-18 EP EP05005992A patent/EP1598784A3/en not_active Withdrawn
- 2005-03-22 US US11/087,075 patent/US7405735B2/en active Active
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008299852A (ja) * | 2007-05-30 | 2008-12-11 | Nvidia Corp | プログラム可能なオフセット位置を用いてテクスチャサンプルを処理するための方法及びシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| US20050259104A1 (en) | 2005-11-24 |
| EP1598784A3 (en) | 2008-02-27 |
| US7405735B2 (en) | 2008-07-29 |
| EP1598784A2 (en) | 2005-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11113788B2 (en) | Multi-space rendering with configurable transformation parameters | |
| KR100421623B1 (ko) | 영상처리및디스플레이를용이하게하기위한장치 | |
| US10049486B2 (en) | Sparse rasterization | |
| US20110141112A1 (en) | Image processing techniques | |
| JPH09212680A (ja) | 描画装置及び描画方法 | |
| JP2002537612A (ja) | サンプルをサンプル・バッファの中へレンダリングし、記憶されたサンプルに応答して、異なったレートでピクセルを生成するグラフィックス・システム | |
| JP4198087B2 (ja) | 画像生成装置および画像生成方法 | |
| US7027047B2 (en) | 3D graphics rendering engine for processing an invisible fragment and a method therefor | |
| US20050243101A1 (en) | Image generation apparatus and image generation method | |
| US6756989B1 (en) | Method, system, and computer program product for filtering a texture applied to a surface of a computer generated object | |
| JP2002537613A (ja) | スーパサンプリング・サンプル・バッファを有し、表示効果を実現するため選択的フィルタ調節を使用して出力ピクセルを生成するグラフィックス・システム | |
| JP2005332195A (ja) | テクスチャユニット、画像描画装置、テクセル転送方法 | |
| JP2006244426A (ja) | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 | |
| KR20060116916A (ko) | 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법 | |
| JP2000182069A (ja) | 画像処理装置およびその方法 | |
| US20100302259A1 (en) | Drawing data processing method, graphics drawing system and graphics drawing data generation program | |
| US7372461B2 (en) | Image processing apparatus and method of same | |
| US7372466B2 (en) | Image processing apparatus and method of same | |
| US8576219B2 (en) | Linear interpolation of triangles using digital differential analysis | |
| JP4448210B2 (ja) | 3次元画像レンダリング装置及び方法 | |
| JP2000348196A (ja) | 3次元画像生成装置および環境マップの生成方法 | |
| JP3971448B2 (ja) | 描画装置及び描画方法 | |
| US7417639B2 (en) | Drawing device and information processing apparatus | |
| JP2003296748A (ja) | 画像処理装置およびその方法 | |
| JP4419480B2 (ja) | 画像処理装置およびその方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070713 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070724 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080304 |