以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
この発明の第1の実施形態に係る画像処理方法及び画像処理装置について、図1を用いて説明する。図1は、本実施形態に係るグラフィックプロセッサのブロック図である。
図示するように、グラフィックプロセッサ1はラスタライザ(rasterizer)2、複数のピクセルシェーダ(pixel shader)3、及びローカルメモリ4を備えている。ピクセルシェーダ3の数は、例えば4個、あるいは8個、16個、32個等でも良く、その数は限定されるものではない。
ラスタライザ2は、入力された図形情報に従ってピクセル(pixel)を生成する。ピクセルとは、所定の図形を描画する際に取り扱われる最小単位の領域のことであり、ピクセルの集合によって図形が描画される。生成されたピクセルはピクセルシェーダ3へ投入される。
ピクセルシェーダ3は、ラスタライザ2から投入されたピクセルにつき演算処理を行い、ローカルメモリ4上に画像を生成する。ピクセルシェーダ3の各々は、データ振り分け部5、複数のピクセル処理部6、及びテクスチャユニット(texture unit)7を備えている。データ振り分け部5はラスタライザ2からピクセルを受け取る。そして、受け取ったピクセルを各ピクセル処理部6へ割り振る。ピクセル処理部6はシェーダエンジン部であり、ピクセルに対してシェーダプログラムを実行する。そして、ピクセル処理部6のそれぞれはSIMD(Single Instruction Multiple Data)動作を行って、複数個のピクセルを同時に処理する。テクスチャユニット7はローカルメモリ4からテクスチャを読み出し、テクスチャマッピング(texture mapping)に必要な処理を行う。テクスチャマッピングとは、ピクセル処理部6で処理されたピクセルにテクスチャを貼り付ける処理のことであり、ピクセル処理部6において行われる。
ローカルメモリ4は、例えばeDRAM(embedded DRAM)であり、ピクセルシェーダ3で描画されたピクセルを記憶する。またテクスチャを記憶する。
次に、本実施形態に係るグラフィックプロセッサ1における図形描画の概念について説明する。図2は、図形を描画すべき二次元空間(XY座標空間)の一部を示す概念図である。なお、図2に示す描画領域は、ローカルメモリ4内においてピクセルを保持するメモリ空間(以下、フレームバッファと呼ぶ)に相当する。
図示するように、フレームバッファは、マトリクス状に配置された複数のブロックBLK0〜BLKn(nは自然数)を含んでいる。図2では(3×3)個のブロックBLK0〜BLK8のみを示しているが、この数は特に限定されるものではない。ピクセルシェーダ3は、ブロックBLK0〜BLKn順にピクセルを生成する。各ブロックはそれぞれ、マトリクス状に配置された例えば(4×4)個のピクセルを含んで形成されている。なお、1つのブロックに含まれるピクセルの個数も特に16個に限定されるものでは無い。実際にはより多くのピクセルが含まれることが通常であり、ここでは説明の簡単化のために16ピクセルの場合について説明する。また、図2において各ピクセルに付記した番号をピクセルIDと呼び、以下ピクセル0〜ピクセル15と呼ぶことにする。
次に、上記フレームバッファに描画される図形に関して説明する。まず図形を描画するにあたって、ラスタライザ2に図形情報が入力される。図形情報は、例えば図形の頂点座標や色情報などである。ここで、例として三角形を描画する場合について説明する。ラスタライザ2に入力された三角形は、描画空間において図2に記載したような位置を占めるとする。すなわち、三角形の3つの頂点座標が、ブロックBLK1におけるピクセル15、ブロックBLK6におけるピクセル3、及びブロックBLK8におけるピクセル4に位置すると仮定する。ラスタライザ2は、描画すべき三角形が占める位置に対応するピクセルを生成する。この様子を示しているのが図3である。生成されたピクセルは、それぞれ予め対応付けられたピクセルシェーダ3に送られる。
そしてピクセルシェーダ3は、自らの担当するピクセルについて描画処理を行う。その結果、図3に示されるような三角形が、複数のピクセルによって描画される。ピクセルシェーダ3によって描画されたピクセルはローカルメモリ4に格納される。
次に、テクスチャに関して図4を用いて説明する。図4はテクスチャの一部を示す概念図である。テクスチャとは、描画されたピクセルに対して貼り付けられる二次元画像のことである。テクスチャをピクセルに貼り付けることにより、物体表面に様々な模様を加えることができる。テクスチャは、図示するようにUV座標に二次元的に配置された複数のテクスチャブロックTBLK0〜TBLKm(mは自然数)を含んでいる。図4では(3×3)個のテクスチャブロックTBLK0〜TBLK8のみを示しているが、この数は特に限定されるものではない。各テクスチャブロックはそれぞれ、マトリクス状に配置された例えば(4×4)個のテクセルを含んで形成されている。テクセルとは、テクスチャにおける最小単位の構成要素のことである。なお、1つのテクスチャブロックに含まれるテクセルの個数も特に16個に限定されるものでは無い。実際にはより多くのテクセルが含まれることが通常であり、ここでは説明の簡単化のために16テクセルの場合について説明する。また、図4において各テクセルに付記した番号をテクセルIDと呼び、以下テクセル0〜テクセル15と呼ぶことにする。
次に、図1におけるテクスチャユニット7の詳細について説明する。テクスチャユニット7は、その内部にキャッシュメモリを有しており、ローカルメモリ4から読み出したテクセルを一時的に保持する。そして、ピクセル処理部6からの要求に応答してテクセルをキャッシュメモリから読み出し、必要に応じてフィルタリング処理を施した後、ピクセル処理部6へ供給する。
図5はテクスチャユニット7のブロック図である。図示するようにテクスチャユニット7は、テクスチャ制御部10、データ取得部11、前記キャッシュメモリ12、及びフィルタリング処理部13を備えている。
テクスチャ制御部10は、ピクセル処理部6からのテクスチャ要求に応答して、データ取得部11を制御する。テクスチャ要求とは、ピクセル処理部6から与えられる、テクセルを読み出す旨の命令であり、この際、ピクセル座標(x、y)及びテクセルの取得モードが、ピクセル処理部6からテクスチャ制御部10に与えられる。なお、取得モードについては後述する。テクスチャ制御部10は、入力されたピクセル座標に相当するテクセルの座標(テクセル座標(u、v))を算出し、このテクセル座標と取得モードをデータ取得部11へ出力すると共に、テクセルの取得をデータ取得部11に命令する。
データ取得部11は、入力されたテクセル座標を基に、4つのテクセルをキャッシュメモリ12から読み出す。より詳しくは、入力されたテクセル座標に応じた4つのテクセルの、キャッシュメモリ12におけるアドレスを計算する。そして算出したアドレスに基づいて、当該4つのテクセルをキャッシュメモリ12から読み出す。
ここで、前述の取得モードについて図4を用いて説明する。取得モードとは、入力されたピクセル座標(テクセル座標)に対して、いずれの位置にある4個のテクセルを読み出すか、を示す情報である。図4では5種類の取得モード(CASE1〜CASE5)について示している。図中において×印が、入力されたピクセル座標に対応するテクセル座標である。まずCASE1について説明する。CASE1の取得モードは、ピクセル座標に対応するテクセル座標に位置するテクセルと、それに対してV座標が同一でU座標が“1”ずつずれた位置にある3つのテクセルを取得するモードである。すなわち図4に示すように、横一列に隣接して並んだ(4×1)個のテクセル11、1、3、5が読み出される。
CASE2の取得モードは、ピクセル座標に対応するテクセル座標に位置するテクセルと、それに対してU座標が同一でV座標が“1”ずつづれた位置にある3つのテクセルを取得するモードである。すなわち図4に示すように、縦一列に隣接して並んだ(1×4)個のテクセル6、7、2、3が読み出される。
CASE3の取得モードは、ピクセル座標に対応するテクセル座標に位置するテクセルを中心に、十字に位置する4つのテクセルを取得するモードである。すなわち図4に示すように、テクセル8に近接して十字を形作る4個のテクセル13、14、10、9が読み出される。
CASE4の取得モードは、ピクセル座標に対応するテクセル座標に位置するテクセルを中心に、×印に位置する4つのテクセルを取得するモードである。すなわち図4に示すように、テクセル12に近接して×印を形作る4個のテクセル3、11、7、15が読み出される。
CASE5の取得モードは、ピクセル座標に対応するテクセル座標に位置するテクセルと、それに対してU座標のみが“1”ずれたテクセル、V座標のみが“1”ずれたテクセル、及びU座標及びV座標が共に“1”ずれたテクセルのを取得するモードである。すなわち図4に示すように、隣接する(2×2)個のテクセル14、15、4、5が読み出される。
以下ではCASE1〜CASE5をそれぞれ、(4×1)モード、(1×4)モード、Crossモード、RC(Rotated cross)モード、及び(2×2)モードと呼ぶことにする。
フィルタリング処理部13は、データ取得部11で読み出された4つのテクセルについてフィルタリング処理を行う。フィルタリング処理の詳細は後述する。
次に図6を用いて、テクスチャユニット7の備えるデータ取得部11の構成について説明する。図6はデータ取得部11のブロック図である。図示するようにデータ取得部11は、制御部20、4つの座標計算部21−0〜21−3、及び4つのテクセル取得部22−0〜22−3を備えている。
制御部20は、テクスチャ制御部10からテクセルの取得命令、ピクセル座標に対応するテクセル座標、及び取得モードを受信する。そして、座標計算部21−0〜21−3に対して、入力されたテクセル座標及び取得モードに応じて、キャッシュメモリ12から読み出すべき4つのテクセルの座標計算を命令する。
座標計算部21−0〜21−3は、それぞれ読み出すべき4つのテクセルに対応して設けられている。そして、各々に対応づけられたテクセルのテクセル座標を計算する。
テクセル取得部22−0〜22−3は、それぞれ座標計算部21−0〜21−3に対応づけて設けられている。そしてテクセル取得部22−0〜22−3はそれぞれ、座標計算部21−0〜21−3で算出されたテクセル座標に基づいて、当該テクセルのキャッシュメモリ12におけるアドレスを計算し、キャッシュメモリ12からテクセルを読み出す。読み出されたテクセルはフィルタリング処理部13へ与えられる。
なお、図6及び上記説明では、座標計算部及びテクセル取得部がそれぞれ4個ずつ設けられている場合について説明した。しかし図6はあくまでデータ取得部11の機能を図示したものであり、勿論、図6の構成を有していても良いが、座標計算部及びテクセル取得部がそれぞれ1個だけ設けられていても良い。つまり、4個のテクセルを読み出すことの出来る構成であれば限定されるものではない。
次に、上記構成のグラフィックプロセッサ1におけるテクスチャユニット7の動作について図7のフローチャートを用いて説明する。
まず、ピクセル処理部6がテクスチャ制御部10に対して、あるピクセルP1のXY座標を入力すると共に、ピクセルP1に対応する4つのテクセルの取得命令を与える(ステップS10)。この際、前述の取得モードも併せてピクセル処理部6からテクスチャ制御部10に入力される。次に、テクスチャ制御部10はピクセルP1に対応するテクセル座標を算出し、算出したテクセル座標及び取得モードと共に、テクセル取得をデータ取得部11に対して命令する(ステップS11)。そしてデータ取得部11は、ピクセルP1に対応するテクセル座標近傍の4つのテクセルを取得モードに応じて選択し、これらのアドレスを計算する(ステップS12)。更にデータ取得部11は、ステップS12で算出したアドレスに基づいて、テクセルをキャッシュメモリ12から読み出す(ステップS12)。そして、データ取得部11で読み出した4つのテクセルについて、フィルタリング処理部13がフィルタリング処理を行い(ステップS14)、その結果がピクセル処理部6へ与えられる。ピクセル処理部6では、ステップS14で得られたテクセル(フィルタリング処理後のテクセル)をピクセルP1に貼り付ける(テクスチャマッピング)。
上記ステップS12の具体例について図8乃至図17を用いて説明する。図8、図10、図12、図14、及び図16はそれぞれ(4×1)モード、(1×4)モード、Crossモード、RCモード、及び(2×2)モードにおいて読み出されるテクセルの位置を示すUV座標であり、図中の×印が入力されたピクセル座標に対応するテクセル座標を示す。また図9、図11、図13、図15、及び図17はそれぞれ(4×1)モード、(1×4)モード、Crossモード、RCモード、及び(2×2)モードにおけるデータ取得部11の一部構成を示すブロック図である。なお以下では説明の簡単化のために、読み出される4つのテクセルはテクセル0〜テクセル3であるものとする。
まず図8及び図9を用いて(4×1)モードの場合について説明する。図8に示すように、(4×1)モードの場合には、ピクセル座標に対応するテクセルがテクセル0であったとする。すると、テクセル0の他に、テクセル0とV座標が同一であり、U座標が“1”ずつずれたテクセル1〜3が読み出される。従ってテクセル0〜3の座標をそれぞれ(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)とすると、座標計算部21−0はテクセル0に関してs0=u、t0=vを計算する。座標計算部21−1はテクセル1に関してs1=u+1、t1=vを計算する。座標計算部21−2はテクセル2に関してs2=u+2、t2=vを計算する。座標計算部21−3はテクセル3に関してs3=u+3、t3=vを計算する。これらの座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)がテクセル取得部22−0〜22−3に与えられ、テクセル取得部22−0〜22−3は与えられた座標に対応するアドレスを計算する。
次に図10及び図11を用いて(1×4)モードの場合について説明する。図10に示すように、(1×4)モードの場合には、ピクセル座標に対応するテクセルがテクセル0であったとする。すると、テクセル0の他に、テクセル0とU座標が同一であり、V座標が“1”ずつずれたテクセル1〜3が読み出される。従って座標計算部21−0はテクセル0に関してs0=u、t0=vを計算する。座標計算部21−1はテクセル1に関してs1=u、t1=v+1を計算する。座標計算部21−2はテクセル2に関してs2=u、t2=v+2を計算する。座標計算部21−3はテクセル3に関してs3=u、t3=v+3を計算する。これらの座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)がテクセル取得部22−0〜22−3に与えられ、テクセル取得部22−0〜22−3は与えられた座標に対応するアドレスを計算する。
次に図12及び図13を用いてCrossモードの場合について説明する。図12に示すように、Crossモードの場合には、ピクセル座標に対応するテクセル座標に対して、U座標が同一でV座標がそれぞれ“−1”及び“+1”ずれたテクセル0、3、及びU座標が同一でV座標が“−1”及び“+1”ずれたテクセル1、4が読み出される。従って座標計算部21−0はテクセル0に関してs0=u、t0=v−1を計算する。座標計算部21−1はテクセル1に関してs1=u−1、t1=vを計算する。座標計算部21−2はテクセル2に関してs2=u+1、t2=vを計算する。座標計算部21−3はテクセル3に関してs3=u、t3=v+1を計算する。これらの座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)がテクセル取得部22−0〜22−3に与えられ、テクセル取得部22−0〜22−3は与えられた座標に対応するアドレスを計算する。
次に図14及び図15を用いてRCモードの場合について説明する。図14に示すように、RCモードの場合には、ピクセル座標に対応するテクセル座標に対して、U座標が“−1”ずれ、且つV座標がそれぞれ“−1”及び“+1”ずれたテクセル0、1、及びU座標が“+1”ずれ、且つV座標が“−1”及び“+1”ずれたテクセル2、3が読み出される。従って座標計算部21−0はテクセル0に関してs0=u−1、t0=v−1を計算する。座標計算部21−1はテクセル1に関してs1=u−1、t1=v+1を計算する。座標計算部21−2はテクセル2に関してs2=u+1、t2=v−1を計算する。座標計算部21−3はテクセル3に関してs3=u+1、t3=v+1を計算する。これらの座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)がテクセル取得部22−0〜22−3に与えられ、テクセル取得部22−0〜22−3は与えられた座標に対応するアドレスを計算する。
次に図16及び図17を用いて(2×2)モードの場合について説明する。図16に示すように、(2×2)モードの場合には、ピクセル座標に対応するテクセルがテクセル0であったとする。すると、テクセル0の他に、テクセル0とV座標が同一でありU座標が“1”ずれたテクセル1、テクセル0とU座標が同一でありV座標が“1”ずれたテクセル2、及びテクセル0に対してU座標及びV座標がそれぞれ“1”ずれたテクセル3が読み出される。従って座標計算部21−0はテクセル0に関してs0=u、t0=vを計算する。座標計算部21−1はテクセル1に関してs1=u、t1=v+1を計算する。座標計算部21−2はテクセル2に関してs2=u+1、t2=vを計算する。座標計算部21−3はテクセル3に関してs3=u+1、t3=v+1を計算する。これらの座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)がテクセル取得部22−0〜22−3に与えられ、テクセル取得部22−0〜22−3は与えられた座標に対応するアドレスを計算する。
次に、フィルタリング処理部13におけるフィルタリング処理(ステップS14)の詳細について図18を用いて説明する。図18はフィルタリング処理のフローチャートである。まず前述のようにデータ取得部11で読み出された4つのテクセルが、フィルタリング処理部13へ入力される(ステップS20)。するとフィルタリング処理部13は、入力された4つのテクセルにつき、ベクトル値を読み出す(ステップS21)。ベクトル値とは、例えば色を表すカラー値(RGB)及び透明度(α)などである。そして、4つのテクセルにつき読み出したベクトル値を加算する(ステップS22)。この加算結果がフィルタリング処理後のテクセルとなり、フィルタリング処理部13は加算結果をピクセル処理部6へ出力する(ステップS23)。
図19はフィルタリング処理の様子を模式的に示す概念図である。図示するように、4つのテクセル0〜3がフィルタリング処理部13へ入力されたとすると、これらのベクトル値を加算した結果がテクセル0’となる。これにより、ピクセルには4つのテクセル0〜3が反映されたテクセル0’が貼り付けられる。
なお、(4×1)モード、(1×4)モード、Crossモード、RCモード、及び(2×2)モードで読み出したテクセル0〜3についてのフィルタリング処理を、それぞれ(4×1)フィルタリング、(1×4)フィルタリング、Crossフィルタリング、RCフィルタリング、及び(2×2)フィルタリングと呼ぶことがある。これらのフィルタリング処理は、全て4つのテクセルを用いたフィルタリング処理である。
図20は、本実施形態を用いた(4×4)フィルタリングの様子を示している。(4×4)フィルタリングとは、ある1つのピクセルに対して(4×4)=16個のテクセルを用いて行うフィルタリング処理のことである。ここでは、(8×8)個のテクセル0〜63を含むテクスチャ画像を(4×4)フィルタリングする場合について説明する。
図示するように、まず上記説明した手法により(1×4)フィルタリングを64個のテクセル0〜63について行う。すなわち、例えばテクセル0についてはテクセル0〜3を読み出して(1×4)フィルタリングを行い、テクセル1についてはテクセル1〜4を読み出して(1×4)フィルタリングを行う。また、テクセル8についてはテクセル8〜11を読み出して(1×4)フィルタリングを行い、テクセル9についてはテクセル9〜122を読み出して(1×4)フィルタリングを行う。
以上のようにして(8×8)個のテクセル0〜63につき(1×4)フィルタリングで得られたフィルタリング結果を、テクセル0’〜テクセル63’と呼ぶ。そして、これらを(8×8)で配置して新たなテクスチャ画像とする。次に、得られた64個のテクセル0’〜63’を含むテクスチャ画像につき、上記説明した手法により(4×1)フィルタリングを行う。すなわち、例えばテクセル0’についてはテクセル0’、8’、16’、24’を読み出して(1×4)フィルタリングを行い、テクセル1’についてはテクセル1’、9’、17’、25’を読み出して(1×4)フィルタリングを行う。また、テクセル8’についてはテクセル8’、16’、24’、32’を読み出して(1×4)フィルタリングを行い、テクセル9’についてはテクセル9’、17’、25’、33’を読み出して(1×4)フィルタリングを行う。
以上のようにして(8×8)個のテクセル0’〜63’につき(4×1)フィルタリングで得られたフィルタリング結果を、テクセル0”〜テクセル63”と呼ぶ。そして、これらを(8×8)で配置して新たなテクスチャ画像とする。このようにして得られた結果が、各テクセルについて(4×4)フィルタリングの施されたテクスチャ画像となる。
図20の具体例について図21乃至図23を用いて説明する。図21はフィルタリング処理を行う前のテクスチャ画像であり、図22は図21の画像につき(4×1)フィルタリングを行って作成したテクスチャ画像であり、図23は図22の画像につき(1×4)フィルタリングを行って作成したテクスチャ画像である。図示するように、(4×1)フィルタリングを行うことにより、テクスチャ画像は横方向にぼけた画像となる。そして、引き続き(1×4)フィルタリングを行うことで、更に縦方向にぼけた画像となる。その結果、図23に示すような(4×4)フィルタリング結果が得られる。
上記のように、この発明の第1の実施形態に係るグラフィックプロセッサであると、下記(1)の効果が得られる。
(1)フィルタリング処理の自由度を向上出来る(その1)。
本実施形態に係るグラフィックプロセッサであると、データ取得部11は複数のテクセルを(2×2)モード以外の様々な取得モードによりキャッシュメモリ12から読み出すことが出来る。従って、必要に応じて取得モードを選択することにより、適切なフィルタリング処理を行うことが出来る。
例えば、テクスチャマッピングを行う従来のグラフィックプロセッサであると、一度に取得できるテクセルは(2×2)個でしかなかった。従って、従来の構成において(4×1)フィルタリングを行う場合には、次のような方法を用いざる得なかった。すなわち、まずピクセル座標に対応するUV座標点をサンプリング点と呼ぶと、サンプリング点を含む(2×2)テクセルを読み出し、更にそれに隣接する(2×2)テクセルを読み出す。そして、サンプリング点とV座標の異なる4つのテクセルを破棄し、同一の4つのテクセルを用いてフィルタリングを行う。つまり、データ取得部11はテクセルの取得を2度行う必要がある。
しかし本実施形態であると、データ取得部11は取得モードに応じてテクセル座標を算出する。従って、(2×2)モード以外でもテクセルを読み出すことが出来る。例えば(4×1)フィルタリングを行う場合には、(4×1)モードでテクセルを読み出すことが出来、データ取得部11がテクセルを取得する回数は1度で済む。このように、テクスチャユニット7における負荷の増大を抑えつつ、フィルタリング処理の自由度を向上出来る。
次に、この発明の第2の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第1の実施形態におけるデータ取得部11が、ピクセル処理部6からの1度のテクセル取得命令により複数回のテクセル取得を行う構成に関するものである。図24は、本実施形態に係るテクスチャユニット7のブロック図である。なおテクスチャユニット7以外の構成は第1の実施形態と同様であるので説明は省略する。
図示するようにテクスチャユニット7は、テクスチャ制御部10、データ取得部11、キャッシュメモリ12、フィルタリング処理部13、カウンタ14、及びデータ保持部15を備えている。
テクスチャ制御部10は、ピクセル処理部6から繰り返し回数を情報として受信する。そして、上記第1の実施形態で説明した機能に加えて、データ取得部11に対するテクセル取得の命令を、上記繰り返し回数だけ繰り返す。また、繰り返す度にアドレスオフセット情報をデータ取得部11へ出力する。アドレスオフセット情報については後述する。
データ取得部11は、入力されたテクセル座標を基に、4つのテクセルをキャッシュメモリ12から読み出す。より具体的には、入力されたテクセル座標に応じた4つのテクセルの、キャッシュメモリ12におけるアドレスを、アドレスオフセット情報を用いて計算する。そして算出したアドレスに基づいて、当該4つのテクセルをキャッシュメモリ12から読み出す。
カウンタ14は、データ取得部11においてテクセルを読み出した回数をカウントする。
キャッシュメモリ12及びフィルタリング処理部13は第1の実施形態で説明した通りである。
データ保持部15は、フィルタリング処理部13におけるフィルタリング処理結果を保持する。
次に、上記構成のグラフィックプロセッサ1におけるテクスチャユニット7の動作について図25のフローチャートを用いて説明する。
まず、ピクセル処理部6がテクスチャ制御部10に対して、あるピクセルP1のXY座標を入力すると共に、ピクセルP1に対応する4つのテクセルを取得する旨の命令を与える(ステップS10)。この際、前述の取得モードだけでなく繰り返し回数も併せてピクセル処理部6からテクスチャ制御部10に入力される。次に、テクスチャ制御部10はピクセルP1に対応するテクセル座標を算出し、算出したテクセル座標及び取得モードと共に、テクセル取得をデータ取得部11に対して命令する(ステップS30)。この際、テクスチャ制御部10は繰り返し回数も併せてデータ取得部11へ与えても良い。更にテクスチャ制御部10は、データ保持部15内のデータをリセットし(ステップS31)、カウンタ14のカウンタ値をリセットする(ステップS32)。
次にデータ取得部11は、ピクセルP1に対応するテクセル座標(サンプリング点)近傍の4つのテクセルを取得モードに応じて選択し、これらのアドレスを計算する(ステップS12)。そしてデータ取得部11は、ステップS12で算出したアドレスに基づいて、テクセルをキャッシュメモリ12から読み出す(ステップS12)。そして、データ取得部11で読み出した4つのテクセルについて、フィルタリング処理部13がフィルタリング処理を行い(ステップS14)、その結果はデータ保持部15内に保持される(ステップS33)。データ保持部15においては、既に保持されているデータに対して、新たに与えられたテクセルを加算する処理が行われる(ステップS34)。但し、データ保持部31のリセット直後である場合には、入力されたテクセルがそのまま保持される。
データ取得部11におけるテクセルの読み出し(ステップS13)が完了すると、データ取得部11から与えられる取得終了情報に応答して、カウンタ14がカウンタ値をカウントアップする(ステップS35)。次にテクスチャ制御部10はカウンタ値を確認し、カウンタ値と繰り返し回数とを比較する(ステップS36)。カウンタ値が繰り返し回数に達していれば(ステップS37、YES)、処理は終了する。達していなければ(ステップS37、NO)、テクスチャ制御部10はアドレスオフセット値と共に再度のテクセル取得をデータ取得部11へ命令する(ステップS38)。なお、繰り返し回数がデータ取得部に与えられる場合には、ステップS36、S37の処理をデータ取得部11が行っても良い。
以後、カウンタ値が繰り返し回数に達するまでステップS12〜S14、S33〜S38の処理を繰り返す。その際、ステップS12におけるアドレス計算には、ステップS38で与えられるアドレスオフセット値が使用される。ステップS12の詳細について図26乃至図28を用いて説明する。図26乃至図28はそれぞれ(4×1)モード時におけるデータ取得部11の一部構成を示すブロック図であり、図26はカウンタ値が“1”の場合、図27はカウンタ値が“2”の場合、図28はカウンタ値が“i(iは自然数)”の場合について示している。なお以下ではサンプリング点のUV座標は(u、v)であるとする。
まずカウンタ値がゼロの場合には、座標計算部21−0〜21−3はそれぞれ第1の実施形態と同様、図9に示した演算を行って、4つのテクセル座標(s0、t0)、(s1、t1)、(s2、t2)、(s3、t3)を算出する。
次にカウンタ値が“1”の場合について図26を用いて説明する。図示するように、制御部20はアドレスオフセット値として“1”を座標計算部21−0〜21−3に与える。すると座標計算部21−0〜21−3はそれぞれ、V軸方向に値を“+1”する。すなわち、カウンタ値がゼロである場合に対して、U座標が同じであり、V座標が“+1”だけずれた4つのテクセル座標を計算する。
次にカウンタ値が“2”の場合について図27を用いて説明する。図示するように、制御部20はアドレスオフセット値として“2”を座標計算部21−0〜21−3に与える。すると座標計算部21−0〜21−3はそれぞれ、V軸方向に値を“+2”する。すなわち、カウンタ値がゼロである場合に対して、U座標が々であり、V座標が“+2”だけずれた4つのテクセル座標を計算する。
次にカウンタ値が“i”の場合について図28を用いて説明する。図28は図26及び図27の例を一般化して示すものである。図示するように、アドレスオフセット値として“i”が与えられると、座標計算部21−0〜21−3はそれぞれV座標を“+i”だけずらす。なおアドレスオフセット値“i”は、上記のようにカウンタ14のカウンタ値と同一でも良いし、例えばカウンタ値を“k”とすると、i=2kなる関係があっても良いし、i=4kなる関係があっても良く、適宜設定可能である。
なお上記では(4×1)モードの場合についてのみ説明したが、(1×4)モードの場合には、U座標に対して“i”を加算すれば良い。
図29及び図30は、本実施形態に係る(4×1)フィルタリングを用いた(4×4)フィルタリングの様子を示している。図29に示すように、ある1つのピクセルに対して(4×4)=16個のテクセル0〜15を用いてフィルタリング処理を行う場合について説明する。この場合、繰り返し回数は“4”である。
図30において、サンプリング点は×印で示した箇所である。まず座標計算部21−0〜21−3は、サンプリング点に対応するテクセル0と、テクセル0にU軸方向に隣接する3つのテクセル1〜3の4つのテクセル0〜3の座標を計算する(ステップS12)。そしてテクセル取得部22−0〜22−3がテクセル0〜3をキャッシュメモリ12から読み出す(ステップS13)。次にフィルタリング処理部13がテクセル0〜3につき(4×1)フィルタリングを行い(ステップS14)、その結果であるテクセル0’がデータ保持部15に保持される(ステップS33)。そしてカウンタ値が“1”となる(ステップS35)。
カウンタ値は繰り返し回数“4”に等しくないので(ステップS36、S37)は、テクスチャ制御部10はアドレスオフセット値として“1”をデータ取得部11に与える(ステップS38)。これにより、座標計算部21−0〜21−3は、サンプリング点に対してV座標が“+1”ずれた位置のテクセル4と、テクセル4にU軸方向に隣接する3つのテクセル5〜7の4つのテクセル4〜7の座標を計算する(ステップS12)。そしてテクセル取得部22−0〜22−3がテクセル4〜7をキャッシュメモリ12から読み出す(ステップS13)。次にフィルタリング処理部13がテクセル4〜7につき(4×1)フィルタリングを行い(ステップS14)、その結果であるテクセル4’がデータ保持部15に保持される(ステップS33)。データ保持部15には既にテクセル0’が保持されているので、データ保持部15においてテクセル0’とテクセル4’とが加算される(ステップS34)。そしてカウンタ値が“2”となる(ステップS35)。
カウンタ値は繰り返し回数“4”に等しくないので(ステップS36、S37)は、テクスチャ制御部10はアドレスオフセット値として“2”をデータ取得部11に与える(ステップS38)。これにより、座標計算部21−0〜21−3は、サンプリング点に対してV座標が“+2”ずれた位置のテクセル8と、テクセル8にU軸方向に隣接する3つのテクセル9〜11の4つのテクセル8〜11の座標を計算する(ステップS12)。そしてテクセル取得部22−0〜22−3がテクセル8〜11をキャッシュメモリ12から読み出す(ステップS13)。次にフィルタリング処理部13がテクセル8〜11につき(4×1)フィルタリングを行い(ステップS14)、その結果であるテクセル8’がデータ保持部15に保持される(ステップS33)。データ保持部15では、更にテクセル8’が加算される(ステップS34)。そしてカウンタ値が“3”となる(ステップS35)。
カウンタ値は繰り返し回数“4”に等しくないので(ステップS36、S37)は、テクスチャ制御部10はアドレスオフセット値として“3”をデータ取得部11に与える(ステップS38)。これにより、座標計算部21−0〜21−3は、サンプリング点に対してV座標が“+3”ずれた位置のテクセル12と、テクセル12にU軸方向に隣接する3つのテクセル13〜15の4つのテクセル12〜15の座標を計算する(ステップS12)。そしてテクセル取得部22−0〜22−3がテクセル12〜15をキャッシュメモリ12から読み出す(ステップS13)。次にフィルタリング処理部13がテクセル12〜15につき(4×1)フィルタリングを行い(ステップS14)、その結果であるテクセル12’がデータ保持部15に保持される(ステップS33)。データ保持部15では、更にテクセル12’が加算される(ステップS34)。この結果、(4×4)フィルタリングが完了する。そしてカウンタ値が“4”となる(ステップS35)。
カウンタ値が繰り返し回数“4”と等しくなるため、テクスチャ制御部10はデータ保持部15の内容をピクセル処理部6へ出力するよう命令する。
図29及び図30の具体例について図31を用いて説明する。図31はフィルタリング処理過程におけるテクスチャ画像である。図示するように、(4×1)フィルタリングを行うことにより、4つのテクセルを含み、且つ横方向にぼけたテクスチャ画像が得られ、これらを加算することによって、更に縦にぼけた1つのテクセルを含むテクスチャ画像が完成する。
上記のように、この発明の第2の実施形態に係るグラフィックプロセッサであると、第1の実施形態で説明した(1)の効果に加えて、下記(2)の効果が得られる。
(2)テクスチャマッピングにおける負荷を軽減出来る。
本実施形態に係るグラフィックプロセッサであると、テクスチャユニット7はピクセル処理部6から繰り返し回数を情報として受け取る。そしてテクスチャユニット7は、繰り返し回数だけ、テクセルの取得処理を繰り返す。例えば、(4×1)モードによるテクセルの取得を4回繰り返した場合、ピクセル処理部6から与えられる1回のテクセル取得命令で(4×4)=16個のテクセルを取得し、(4×4)フィルタリングを行うことが可能である。
この点、従来の構成であると(2×2)個以上のテクセルを読み出す場合、その度にピクセル処理部6がテクセル取得命令をテクスチャユニット7へ与える必要があった。しかし本実施形態ではピクセル処理部6から与えられる1回のテクセル取得命令により、テクスチャユニット7は複数回のテクセル取得処理を実行出来る。従って、テクスチャマッピングを行うグラフィックプロセッサにおいて、ピクセル処理部6の負荷を軽減出来る。
次に、この発明の第3の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第1の実施形態においてデータ取得部11で読み出したテクセルにつき重み付けを行う構成に関するものである。図32は、本実施形態に係るテクスチャユニット7のブロック図である。なおテクスチャユニット7以外の構成は第1の実施形態と同様であるので説明は省略する。
図示するようにテクスチャユニット7は、テクスチャ制御部10、データ取得部11、キャッシュメモリ12、フィルタリング処理部13、フィルタリング係数取得部16、及びフィルタリング係数保持部17を備えている。
テクスチャ制御部10は、ピクセル処理部6から係数情報を受信する。そして、上記第1の実施形態で説明した機能に加えて、フィルタリング係数取得部16に対して係数情報に基づく補間係数の取得を命令する。補間係数については後述する。
データ取得部11及びキャッシュメモリ12の構成及び動作は第1の実施形態で説明したとおりである。
フィルタリング係数保持部17は補間係数を保持する。フィルタリング係数保持部17の構成について図33を用いて説明する。図33はフィルタリング係数保持部17の構成を示す模式図である。図示するように、フィルタリング係数保持部17は複数のエントリ0〜N(Nは自然数)を備えたメモリである。そして、各エントリはそれぞれ4つの補間係数w(n0)〜w(n3)を保持している。但しnはエントリ番号である。補間係数とは、テクセルに対する重み付けの情報である。フィルタリング係数保持部17におけるエントリを、以下では係数エントリと呼ぶことがある。
フィルタリング係数取得部34は、テクスチャ制御部10から与えられる係数情報に従って、フィルタリング係数保持部17のいずれかのエントリに保持されている補間係数を読み出す。図34はフィルタリング係数取得部34のブロック図である。
図示するようにフィルタリング係数取得部34は、制御部30、4つの係数選択部31−0〜31−3、及び4つの係数取得部32−0〜32−3を備えている。
制御部30は、テクスチャ制御部10から補間係数の取得命令、及び係数情報を受信する。そして、係数選択部31−0〜31−3に対して、入力された係数情報に応じてフィルタリング係数保持部17から読み出すべき4つの補間係数の選択を命令する。
係数選択部31−0〜31−3は、テクセル取得部22−0〜22−3で読み出される4つのテクセルに対応して設けられている。そして、各々に対応づけられたテクセルに対して使用すべき補間係数を選択する。
係数取得部32−0〜32−3は、それぞれ係数取得部31−0〜31−3に対応づけて設けられている。係数取得部32−0〜32−3はそれぞれ、係数選択部31−0〜31−3で選択された結果、具体的にはフィルタリング係数保持部17におけるエントリ、に基づいて、フィルタリング係数保持部17から補間係数を読み出す。読み出された補間係数はフィルタリング処理部13へ与えられる。
なお、図34及び上記説明では、係数選択部及び係数取得部がそれぞれ4個ずつ設けられている場合について説明した。しかし図34はあくまでフィルタリング係数取得部34の機能を図示したものであり、勿論、図34の構成を有していても良いが、係数選択部及び係数取得部がそれぞれ1個だけ設けられていても良い。つまり、4個の補間係数を読み出すことの出来る構成であれば限定されるものではない。
フィルタリング処理部13は、データ取得部11で得られたテクセルと、フィルタリング係数取得部16で得られた補間係数とを乗算し、4つのテクセルに関する乗算結果を加算する。図35はフィルタリング処理部13と、データ取得部11及びフィルタリング係数取得部16の一部領域のブロック図である。
図示するようにフィルタリング処理部13は、乗算器40−0〜40−3及び加算器41を備えている。乗算器40−0〜40−3はそれぞれ、テクセル取得部22−0〜22−3で読み出されたテクセルと、係数取得部32−0〜32−3で読み出された補間係数との乗算を行う。加算器41は、乗算器40−0〜40−3における乗算結果を加算して、加算結果をピクセル処理部6へ出力する。
次に、上記構成のグラフィックプロセッサ1におけるテクスチャユニット7の動作について図36のフローチャートを用いて説明する。
まず、ピクセル処理部6がテクスチャ制御部10に対して、あるピクセルP1のXY座標を入力すると共に、ピクセルP1に対応する4つのテクセルの取得命令を与える(ステップS10)。この際、取得モードだけでなく係数情報も併せてピクセル処理部6からテクスチャ制御部10に入力される。次にテクスチャ制御部10は、上記第1の実施形態で説明したステップS11〜S13の処理を行って、4つのテクセルを読み出す。
またテクスチャ制御部10は、ピクセル処理部6から与えられた係数情報をフィルタリング係数取得部16へ与え、フィルタリング係数の取得を命令する(ステップS40)。すると、係数情報に基づいて係数選択部31−0〜31−3が、フィルタリング係数保持部17におけるいずれかの係数エントリを選択する(ステップS41)。次に、係数取得部32−0〜32−3が係数選択部31−0〜31−3で選択された係数エントリから補間係数を読み出す(ステップS42)。
そしてフィルタリング処理部13が、フィルタリング係数取得部16で読み出された4つの補間係数を用いて、データ取得部11で読み出された4つのテクセルにつきフィルタリング処理を行う(ステップS43)。
上記ステップS41の具体例について図37乃至図39を用いて説明する。図37及び図38はそれぞれフィルタリング係数取得部16の一部領域のブロック図であり、図37は係数エントリ=“0”が選択される場合、図38は係数エントリ=“1”が選択される場合について示している。
まず図37に示すように、係数選択部31−0〜31−3は係数エントリENとして“0”を選択する。この際、選択した係数エントリ内に含まれる4つの補間係数のうちのい
ずれの選択も行う。これが係数番号CNで表される。フィルタリング係数保持部17の保持するデータが図33に示す通りであったとすると、図37の場合、係数選択部31−0〜31−3はそれぞれ係数取得部32−0〜32−3に対して、係数エントリ“0”内の補間係数w00〜w03をそれぞれ読み出すように命令する。
図38の場合には、係数選択部31−0〜31−3はそれぞれ係数取得部32−0〜32−3に対して、係数エントリ“1”内の補間係数w00〜w03をそれぞれ読み出すように命令する。
次に図39の例について説明する。図39は図37及び図38の例を一般化して示すものである。図示するように係数選択部31−0〜31−3はそれぞれ、入力される係数情報に基づいて、フィルタリング係数保持部17におけるいずれかの係数エントリEN=“j0”〜“j3”を選択する。また、選択した係数エントリ内において、いずれの補間係数を選択するかを係数番号CN=“k0”〜“k3”により選択する。この際、各係数選択部31−0〜31−3が選択する“j0”〜“j3”は、異なる係数エントリENを選択するものであっても良いし、同一の係数エントリENを選択するものであってもよい。また、各係数選択部31−0〜31−3が選択する“k0”〜“k3”は、異なる係数番号CNを選択するものであってもよいし、同一の係数番号CNを選択するものであっても良い。例えば、係数選択部31−0〜31−3がそれぞれ係数エントリEN=“0”〜“3”を選択し、また同一の係数番号CN=“0”を選択したとする。この場合には、係数取得部32−0〜32−3はそれぞれ、補間係数w00、w10、w20、w30を読み出す。
次に、フィルタリング処理部13におけるフィルタリング処理(ステップS43)の詳細について図40を用いて説明する。図30は本実施形態に係るフィルタリング処理S43のフローチャートである。まずデータ取得部11で読み出された4つのテクセルがフィルタリング処理部13へ入力される(ステップS20)。一例として、テクセル取得部22−0〜22−3がそれぞれテクセル0〜3が読み出した場合を仮定する。更に、フィルタリング係数取得部16で読み出された4つの補間係数がフィルタリング処理部13へ入力される(ステップS50)。一例として、係数取得部32−0〜32−3がそれぞれ補間係数w00、w01、w02、w03を読み出した場合を仮定する。
すると、フィルタリング処理部13における乗算器40−0〜40−3がそれぞれ、テクセル0〜3のベクトル値を読み出す(ステップS21)。引き続き乗算器40−0〜40−3はそれぞれ、テクセル0〜3のベクトル値と、対応する補間係数w00、w01、w02、w03との乗算を行う(ステップS51)。次に、加算器41が乗算器40−0〜40−3における乗算結果を加算する(ステップS52)。この加算結果がフィルタリング処理後のテクセルとなり、加算器41は加算結果をピクセル処理部6へ出力する(ステップS23)。
すなわち、フィルタリング処理部13では次式の計算を行い、その計算結果をピクセル処理部6へ出力する。
V0・w0+V1・w1+V2・w2+V3・w3
但し、V0〜V3はそれぞれテクセル取得部22−0〜22−3で読み出されたテクセルのベクトル値であり、w0〜w3はそれぞれ係数取得部32−0〜32−3で読み出された補間係数である。
上記のように、この発明の第3の実施形態に係るグラフィックプロセッサであると、第1の実施形態で説明した(1)の効果に加えて、下記(3)の効果が得られる。
(3)フィルタリング処理の自由度を向上出来る(その2)。
本実施形態に係るグラフィックプロセッサであると、読み出したテクセルについての重み付けに関する情報(補間係数)をフィルタリング係数保持部17が保持している。そして、データ取得部11において読み出されたテクセルに応じてフィルタリング係数取得部16が補間係数を読み出し、フィルタリング処理部13は読み出された補間係数を用いてフィルタリング処理を行っている。従って、複数のテクセルを用いてフィルタリング処理を行う場合に、複数のテクセルに対して各種の重みを設定することが出来、フィルタリング処理の自由度を向上出来る。
また本実施形態では、フィルタリング係数取得部16がテクスチャユニット7内に設けられている。そのため、フィルタリング係数の取得処理をテクスチャユニット7内で完結させることが可能となり、ピクセル処理部6に対する負荷を増加させることなく高速なフィルタリング処理が可能となる。
次に、この発明の第4の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第2、第3の実施形態を組み合わせたものである。図41は、本実施形態に係るテクスチャユニット7のブロック図である。なおテクスチャユニット7以外の構成は第1の実施形態と同様であるので説明は省略する。
図示するようにテクスチャユニット7は、テクスチャ制御部10、データ取得部11、キャッシュメモリ12、フィルタリング処理部13、カウンタ14、データ保持部15、フィルタリング係数取得部16、及びフィルタリング係数取得部17を備えている。
テクスチャ制御部10は、上記実施形態で説明したUV座標、取得モード、繰り返し回数、及び係数情報をピクセル処理部6から受け取る。そして第2の実施形態で説明したとおり、データ取得部11に対して繰り返し回数だけ、テクセルの取得処理を命令する。またテクスチャ制御部10は、フィルタリング係数取得部16に対して繰り返し回数だけ、補間係数の取得を命令する。
図42は、フィルタリング係数保持部17の構成を示す模式図である。図示するように、フィルタリング係数保持部17は複数のエントリ0〜Nを備えたメモリである。そして各エントリは、それぞれ補間係数テーブル0〜nを保持している。但しnはエントリ番号である。補間係数テーブルについて図43を用いて説明する。図43は補間係数テーブル0の模式図である。図示するように補間係数テーブル0は、複数のエントリ0〜M(これを以下ではテーブル内エントリTENと呼ぶ)を備えており、各エントリは係数番号CN=0〜3に対応した補間係数を保持している。
フィルタリング係数取得部16は、係数情報に基づいていずれかの補間係数テーブルを選択する。更に繰り返し回数iに応じて、選択した補間係数テーブル内の補間係数を選択する。
その他の構成は第1乃至第3の実施形態で説明したとおりである。
次に、上記構成のグラフィックプロセッサ1におけるテクスチャユニット7の動作について図44のフローチャートを用いて説明する。
まず、ピクセル処理部6がテクスチャ制御部10に対して、あるピクセルP1のXY座標を入力すると共に、ピクセルP1に対応する4つのテクセルの取得命令を与える(ステップS10)。この際、取得モード、繰り返し回数、及び係数情報も併せてピクセル処理部6からテクスチャ制御部10に入力される。次に、テクスチャ制御部10はピクセルP1に対応するテクセル座標を算出し、算出したテクセル座標及び取得モードと共に、テクセル取得をデータ取得部11に対して命令する(ステップS30)。この際、テクスチャ制御部10は繰り返し回数も併せてデータ取得部11へ与えても良い。同時にテクスチャ制御部10は、ピクセル処理部6から与えられた係数情報をフィルタリング係数取得部16へ与え、フィルタリング係数の取得を命令する(ステップS40)。更にテクスチャ制御部10は、データ保持部15内のデータをリセットし(ステップS31)、カウンタ14のカウンタ値をリセットする(ステップS32)。
次にデータ取得部11は、ピクセルP1に対応するテクセル座標(サンプリング点)近傍の4つのテクセルを取得モードに応じて選択し、これらのアドレスを計算する(ステップS12)。そしてデータ取得部11は、ステップS12で算出したアドレスに基づいて、テクセルをキャッシュメモリ12から読み出す(ステップS12)。
また係数選択部31−0〜31−3は、係数情報に基づいてフィルタリング係数保持部17におけるいずれかの係数エントリを選択し、更にいずれかのテーブル内エントリを選択する(ステップS60)。次に、係数取得部32−0〜32−3が係数選択部31−0〜31−3で選択されたテーブル内エントリから補間係数を読み出す(ステップS42)。その後、上記第2、第3の実施形態で説明したステップS43、S33〜S38の処理が行われる。すなわち、フィルタリング処理部13が、フィルタリング係数取得部16で読み出された4つの補間係数を用いて、データ取得部11で読み出された4つのテクセルにつきフィルタリング処理を行う(ステップS43)。その結果はデータ保持部15内に保持される(ステップS33)。データ保持部15においては、既に保持されているデータに対して、新たに与えられたテクセルを加算する処理が行われる(ステップS34)。但し、データ保持部31のリセット直後である場合には、入力されたテクセルがそのまま保持される。そして、カウンタ値と繰り返し回数とが比較される(ステップS36)。カウンタ値が繰り返し回数に達していれば(ステップS37、YES)、処理は終了する。達していなければ(ステップS37、NO)、テクスチャ制御部10はアドレスオフセット値と共に再度のテクセル取得をデータ取得部11へ命令する(ステップS38)。この際テクスチャ処理部10は、テーブル内エントリTENを“+1”する旨を新たに係数情報に与える(ステップS61)。
以後、カウンタ値が繰り返し回数に達するまでステップS12、S13、S60、S42、S43、S33〜S38、S61の処理を繰り返す。その際、ステップS12におけるアドレス計算には、ステップS38で与えられるアドレスオフセット値が使用され、ステップS60におけるテーブル内エントリTENの選択には、ステップS61で与えられるテーブル内エントリTENが使用される。
ステップS60の詳細について図45乃至図47を用いて説明する。図45及び図46はそれぞれ係数エントリ=“0”が選択される際のフィルタリング係数取得部16の一部領域のブロック図であり、図45はカウンタ値がゼロ(i=0)の場合、図46はカウンタ値が“1”(i=1)の場合について示している。
まず図45に示すように、係数選択部31−0〜31−3は係数エントリENとして“0”を選択する。また、繰り返し回数に応じてテーブル内エントリTENを選択する。具体的には、例えばカウンタ値に等しい番号のテーブル内エントリTENが選択される。従って、カウンタ値がゼロの場合、係数選択部31−0〜31−3はテーブル内エントリTENとして“0”を選択する。また、係数選択部31−0〜31−3は、それぞれ係数番号CN=0〜3をそれぞれ選択したとする。すると、係数選択部31−0〜31−3はフィルタリング係数保持部17における補間係数テーブル0を選択する。また補間係数テーブル0が図43に示す通りであったとすると、係数選択部31−0〜31−3は、係数取得部32−0〜32−3に対して、それぞれテーブル内エントリTEN=“0”における補間係数w00〜w03を読み出すように命令する。
図46の場合には、カウンタ値が“1”であるので、係数選択部31−0〜31−3は係数取得部32−0〜32−3に対して、それぞれテーブル内エントリTEN=“0”における補間係数w10〜w13を読み出すように命令する。
次に図47の例について説明する。図47は図45及び図46の例を一般化して示すものである。図示するように係数選択部31−0〜31−3は、入力される係数情報に基づいて、フィルタリング係数保持部17におけるいずれかの係数エントリEN=“j”を選択する。すなわち、補間係数テーブル“j”を選択する。また、繰り返し回数iに応じて、選択した補間係数テーブル“j”内のテーブル内エントリTEN=“i”を選択する。また、選択したテーブル内エントリ内において、いずれの補間係数を選択するかを係数番号CN=“k”により選択する。勿論、係数選択部31−0〜31−3は、互いに異なる係数エントリEN=“j0”〜“j3”をそれぞれ選択し、更に異なる係数番号CN=“k0”〜“k3”をそれぞれ選択しても良い。これは上記第3の実施形態で説明した通りである。
上記のように、この発明の第4の実施形態に係るグラフィックプロセッサであると、第1乃至第3の実施形態でそれぞれ説明した(1)乃至(3)の効果が得られる。
次に、この発明の第5の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第4の実施形態で説明したグラフィックプロセッサの第1の応用例に関するものであり、物体に対して光が照射された場合の処理に関する。
例えば図48の模式図に示すように、光源からポリゴンに対して光が照射されているとする。このような場合の画像描画処理は、ポリゴンの各頂点P1〜P3におけるパラメータと、光源に関する係数(これをライティング係数と呼ぶ)との内積計算により行われる。ポリゴンの各頂点P1〜P3におけるパラメータは、例えば25次元であり、(25×1)の行列で表すことが出来る。ライティング係数もP1〜P3と同様の例えば25次元のパラメータであり、(1×25)の行列で表すことが出来る。
そこで、図49の模式図に示すように、各頂点P1〜P3についての(25×1)行列と、ライティング係数についての(1×25)行列との内積を計算して、光に対する描画処理が行われる。図49では頂点P1についてのみ図示しているが、頂点P2、P3についても同様の計算が行われる。
この際、ポリゴンの各頂点P1〜P3のパラメータを拡張し、例えばRGB、αについて25個のパラメータを有する(25×4)行列で表現する場合がある。この場合には、ライティング係数も、少なくとも(4×25)行列に拡張される。すると図50の模式図に示すように、頂点P1〜P3の各々について、(25×4)行列と(4×25)行列との内積を行う必要がある。
この場合において、頂点P1〜P3の各々の(25×4)行列、及びライティング係数となる(4×25)行列を、それぞれテクスチャ及び補間係数として設定する。そして、ピクセル処理部6は、テクセルアドレスとして頂点のパラメータの最初の列であり且つ最初の行に相当するパラメータのアドレスを与え、取得モードを(1×4)モード、繰り返し回数を25回と設定して、テクセル(つまりP1〜P3のパラメータ)の取得をテクスチャユニット7へ命令する。この際、係数情報として与えられるライティング係数を用いてフィルタリング処理を行うように命令する。その後は、上記第4の実施形態で説明した処理を行う。
以下、具体例を用いて説明する。図51は、頂点P1のパラメータをテクスチャとして設定した際の模式図である。図示するように、頂点P1の赤色成分R、緑色成分G、青色成分、及び透明度成分αはそれぞれ、(6×4)行列の24個の成分を有している。赤色成分Rの各成分をR00〜R23、緑色成分Gの各成分をG00〜G23、青色成分Bの各成分をB00〜B23、透明度成分αの各成分をα00〜α23と呼ぶことにする。
図52は、補間係数として設定されたライティング係数について示している。図示するように、6個のエントリ0〜5の各々には、4つのライティング係数が格納される。エントリ0にはライティング係数w00、w01、w02、w03が格納され、エントリ1にはライティング係数w10、w11、w12、w13が格納され、エントリ5にはライティング係数w50、w51、w52、w53が格納される。
するとテクスチャユニット7は、まず赤色成分について、R00を先頭アドレス、繰り返し回数6回として、第4の実施形態で説明した(1×4)フィルタリングを行う。この様子を図53に示す。図示するように、データ取得部11は赤色成分の最初の列R00〜R03を読み出す。またフィルタリング係数取得部16は補間係数w00〜w03を読み出す。そしてフィルタリング処理部13が、(R00×w00+R01×w01+R02×w02+R03×w03)の計算を行う。次に。データ取得部11は赤色成分の2列目であるR04〜R07を読み出す。またフィルタリング係数取得部16は補間係数w10〜w13を読み出す。そしてフィルタリング処理部13が、(R04×w10+R05×w11+R06×w12+R07×w13)の計算を行う。テクスチャユニット7は、以上の計算を、赤色成分Rの(6×4)行列の最後の列(R20〜R23)まで繰り返し、その結果の総和を出力する。
緑色成分G、青色成分B、及び透明度成分αについても同様の計算が行われる。
本実施形態に係るグラフィックプロセッサであると、上記実施形態で説明した(1)乃至(3)の効果に加えて、下記(4)の効果が得られる。
(4)行列計算を高速化出来る。
上記のように、光が照射されている際の物体の表現は行列計算によって行われる。しかし、物体をより豊かに表現しようとすると行列の要素が膨大となり、上記行列計算にかかる負担が非常に大きくなりがちである。
しかし本実施形態に係る構成であると、ポリゴンの頂点に関するパラメータをテクスチャとして設定し、ライティング係数を補間係数として設定し、(1×4)モードでフィルタリング処理を繰り返している。従って、ピクセル処理部6は頂点に関するパラメータの先頭の要素を指定し、且つライティング係数の取得情報と繰り返し回数を与えるだけで、全ての行列演算を行うことが出来る。従って、行列演算を高速化出来る。
なお、上記実施形態では頂点のパラメータとライティング係数との内積を例に説明したが、この場合に限らず(4×L)行列(但しLは自然数)と(L×4)行列との内積計算を行うものであれば全てに適用可能である。勿論、(4×1)モードを使用すれば、(L×4)行列と(4×L)行列との内積計算にも適用出来る。
次に、この発明の第6の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第4の実施形態で説明したグラフィックプロセッサの第2の応用例に関するものであり、テクスチャユニットをデブロッキングフィルタ(Deblocking filter)として使用するものである。
図54はMPEG(Moving Picture Experts Group)画像の模式図である。図示するように、MPEG画像は二次元のXY座標に描画されているものとする。ここでは説明の簡単化のために(12×12)個のピクセルによって描画された画像を仮定する。MPEG等の画像圧縮技術では、画像を例えば(8×8)個のピクセルのブロック、または(4×4)個のピクセルにブロックに分割する。そして、分割して得られた領域毎に、DCT等の圧縮処理を行う。分割して得られた領域を以下ではピクセルブロックMBLKと呼ぶこととし、本実施形態ではピクセルブロックMBLKが(4×4)個のピクセルを含む場合を仮定する。
上記のような圧縮方法であると、異なるピクセルブロック間では、互いのピクセル情報が圧縮スキームに考慮されない。従って、隣接するブロック間(図54において領域AA1、AA2で示した領域)において、ピクセルの輝度につきアーティファクトが生じる場合がある。これは通常ブロックノイズ(block noise)と呼ばれている。本実施形態は、上記第2、第4の実施形態で説明したグラフィックプロセッサにおけるテクスチャユニット7を、ブロックノイズを低減するデブロッキングフィルタとして用いる。
図55は、テクスチャユニット7を用いたブロックノイズ低減処理のフローチャートである。図示するように、まずMPEG画像をテクスチャ画像として設定する(ステップS70)。次に、ピクセルブロックの境界を挟んでU方向で隣接するテクセルについて、(4×1)モードでフィルタリング処理を行う(ステップS71)。この様子を示しているのが図56である。図56はテクスチャの概念図である。図56において、斜線を付したテクセルが、フィルタリング処理を行うべきテクセルである。なお図56ではテクセルブロックTBLK0におけるテクセル6、7、14についてのフィルタリングの様子のみを示している。
図示するように、テクセルブロックTBLK0のテクセル6につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル2、4、6、及びテクセルブロックTBLK1のテクセル12を読み出してフィルタリング処理を行う。また、テクセルブロックTBLK0のテクセル7につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル3、5、7、及びテクセルブロックTBLK1のテクセル13を読み出してフィルタリング処理を行う。更に、テクセルブロックTBLK0のテクセル14につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル10、12、14、及びテクセルブロックTBLK1のテクセル8を読み出してフィルタリング処理を行う。以上のようにして、テクセルブロックTBLK0のテクセル6と同一のU座標を有する12個のテクセルにつき、それぞれ(4×1)フィルタリングを行う。なお、テクセルの取り方はこれに限定されるものでは無く、例えばテクセルブロックTBLK0のテクセル6につきフィルタリング処理を行う場合には、テクセルブロックTBLK0のテクセル4、6、及びテクセルブロックTBLK1のテクセル12、14を読み出しても良い。
次に、テクセルブロックTBLK1のテクセル12とU座標が同一であるテクセルにつき、それぞれ(4×1)モードでのフィルタリング処理を行う。更にテクセルブロックTBLK1のテクセル6とU座標が同一であるテクセルにつき、それぞれ(4×1)モードでのフィルタリング処理を行う。最後に、テクセルブロックTBLK2のテクセル0とU座標が同一であるテクセルにつき、(4×1)モードでのフィルタリング処理を行う。
以上のフィルタリング処理が終了すると、フィルタリング処理結果を新たなテクスチャ画像として設定する(ステップS72)。そして、ピクセルブロックの境界を挟んでV方向で隣接するテクセルについて、(1×4)モードでフィルタリング処理を行う(ステップS73)。この様子を示しているのが図57である。図57はテクスチャの概念図である。図57において、斜線を付したテクセルが、フィルタリング処理を行うべきテクセルである。なお図57ではテクセルブロックTBLK0におけるテクセル9、11、13についてのフィルタリングの様子のみを示している。
図示するように、テクセルブロックTBLK0のテクセル9につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル1、8、9、及びテクセルブロックTBLK3のテクセル12を読み出してフィルタリング処理を行う。また、テクセルブロックTBLK0のテクセル11につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル3、10、11、及びテクセルブロックTBLK3のテクセル14を読み出してフィルタリング処理を行う。更に、テクセルブロックTBLK0のテクセル13につきフィルタリング処理を行う場合には、例えばテクセルブロックTBLK0のテクセル5、12、13、及びテクセルブロックTBLK3のテクセル8を読み出してフィルタリング処理を行う。以上のようにして、テクセルブロックTBLK0のテクセル9と同一のV座標を有する12個のテクセルにつき、それぞれ(4×1)フィルタリングを行う。なお、テクセルの取り方はこれに限定されるものでは無く、例えばテクセルブロックTBLK0のテクセル9につきフィルタリング処理を行う場合には、テクセルブロックTBLK0のテクセル8、9、及びテクセルブロックTBLK3のテクセル12、13を読み出しても良い。
次に、テクセルブロックTBLK3のテクセル12とV座標が同一であるテクセルにつき、それぞれ(1×4)モードでのフィルタリング処理を行う。更にテクセルブロックTBLK3のテクセル5とV座標が同一であるテクセルにつき、それぞれ(1×4)モードでのフィルタリング処理を行う。最後に、テクセルブロック6のテクセル0とV座標が同一であるテクセルにつき、それぞれ(1×4)モードでのフィルタリング処理を行う。
以上の処理の結果、ブロックノイズが低減されたMPEG画像が得られる。
上記のように、本実施形態に係るグラフィックプロセッサであると、上記実施形態で説明した(1)乃至(3)の効果に加えて、下記(5)の効果が得られる。
(5)ブロックノイズの低減処理を、ハードウェアの増加を招くことなく高速に行うことが出来る。
ブロックノイズを低減するための手法として、デブロッキングフィルタ等がH.264等の圧縮コーデックで規定されている。しかし、特別なハードウェアを有しない汎用のCPUによって処理を行う場合、その処理量は大きく、デコード時における総演算量の50%程度を占めることもある。そこで、ブロックノイズを低減するために新たなハードウェアを設ける方法が考え得るが、この場合にはグラフィックプロセッサのサイズ及びコストが増大するという問題があった。
しかし本実施形態に係るグラフィックプロセッサであると、テクスチャユニット7をデブロッキングフィルタとして用いている。従って、ピクセル処理部6におけるブロックノイズ低減処理の負荷を軽減し、高速に処理を行うことが出来る。また、テクスチャユニット7を流用することで、ハードウェアの増加も防ぐことが出来る。
次に、この発明の第7の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第1乃至第4の実施形態に係るグラフィックプロセッサの第3の応用例に関するものであり、被写界深度効果に適用したものである。コンピュータグラフィックスにおける被写界深度効果とは、現実のカメラにおいてピントがずれて映像がぼける現象をシミュレートすることを言う。被写界深度効果をコンピュータグラフィックス画像に与えることで、奥行き感のあるシーンを表現することが出来る。
図58は被写界深度効果についての処理のフローチャートである。図示するように、まずピクセル処理部6が画像を描画する(ステップS80)。この際、テクスチャユニット7からテクスチャを読み出してテクスチャマッピングを行うが、用いられるテクスチャは上記実施形態で説明したぼかし処理を行わないテクスチャである。またステップS80における画像描画により、各ピクセルについての奥行き値を得る(ステップS81)。奥行き値とは、その画像における物体の位置を示すものであり、奥行き値が大きいということは、その物体が画像の奥、換言すれば遠い位置にあることを示す。
次にステップS80で描画した画像をテクスチャ画像として設定し、数種類の繰り返し回数を用いてフィルタリング処理を行う(ステップS82)。これにより、ぼかし度合いの異なる複数の画像を得ることができる(ステップS83)。図59は、テクスチャ画像とその精細度とを示す概念図である。図示するように、フィルタリングを行わない画像50と、例えば繰り返し回数i=0、2、4、8でフィルタリング処理を行った画像51〜54を用意する、複数枚のテクスチャ画像を用意する。当然ながら、繰り返し回数が多いほど、得られる画像はぼけたものとなる。
次にピクセル処理部6は、各ピクセルの奥行き値に応じて、適切な画像50〜54のいずれかのピクセルをフレームバッファに貼り付けることにより画像を描画する(ステップS84)。勿論、奥行き値の大きい画像であるほど、ぼけたテクスチャ画像が選択される。ステップS60の処理の模式図を図60に示す。図示するように、ピクセル処理部6はまず奥行き値55から、ピクセルAに対応する位置の奥行き値を読み出す。そして、読み出した奥行き値に適切な画像50〜54のいずれかのピクセルAを読み出す。そして、フレームバッファ56において、ピクセルAと同一の場所に位置するピクセルA’に、読み出したピクセルAを貼り付ける。
図61は、ピクセル処理部6がフレームバッファ56に貼り付けるべきピクセルを生成する際の様子を示している。図示するように、ピクセルAの奥行き値が、画像の最前面よりも少し奥にある場合には、フィルタリングを行っていない画像50と、ぼけた画像51とを用いて線形補間を行う。そしてその結果を、フレームバッファ56へ貼り付けるべきピクセルAとする。またピクセルAよりも更に奥行き値の大きいピクセルBの場合には、ぼけた画像51と更にぼけた画像52とを用いて線形補間を行い、フレームバッファ56に貼り付けるべきピクセルBを生成する。
上記のように、本実施形態に係るグラフィックプロセッサであると、上記実施形態で説明した(1)乃至(3)の効果に加えて、下記(6)の効果が得られる。
(6)被写界深度効果をコンピュータグラフィックス画像に容易に与えることが出来る。
本実施形態であると、精細度の異なる画像を複数用意し、奥行き値に応じて画像を選択している。この際、精細度の異なる画像を作成する際には、フィルタリング時における繰り返し回数を変化させるだけで良く、その他の特殊な処理は不要である。従って、非常に容易に被写界深度効果を得ることが出来る。
次に、この発明の第8の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第1乃至第4の実施形態に係るグラフィックプロセッサの第4の応用例に関するものであり、ソフトシャドウ(Soft Shadow)効果を得るためのものである。ソフトシャドウ効果とは、影の輪郭のぼかすことを言う。現実の世界においては、太陽などの非常に明るく且つ指向性のある光源以外による影の多くは、はっきりとした輪郭を持たない。従って、ソフトシャドウ効果を用いることにより、コンピュータグラフィックス画像のリアリティを増すことが出来る。特に間接照明などを用いたシーンに有効である。
図62は、本実施形態に係るソフトシャドウ効果のフローチャートである。まず、ピクセル処理部6が画像を描画し、必要に応じてテクスチャマッピングを行う(ステップS90)。描画された画像を図63に示す。この時点において、画像内の影の輪郭ははっきりとしている。次に、影のみをとりだし、テクスチャ画像に設定する(ステップS91)。そして、テクスチャ画像に設定した影についてフィルタリング処理を行う(ステップS92)。フィルタリング処理の具体的な手法は上記実施形態で説明したとおりである。但し、影全体についてフィルタリング処理を行う必要は無く、影の輪郭部分のみについて行えば十分である。この処理の様子を示しているのが図64である。図示するように、輪郭のぼけた影の画像が得られる。最後に、ステップS92で得られた影を元の画像(図63)の影に置き換える(ステップS93)と、図65に示すように、影の輪郭がぼけて、よりリアリティのある画像が得られる。
このように、上記実施形態はソフトシャドウ効果に用いることも出来る。
次に、この発明の第9の実施形態に係る画像処理方法及び画像処理装置について説明する。本実施形態は、上記第1乃至第4の実施形態に係るグラフィックプロセッサの第5の応用例に関するものであり、テクセルの取得方法に関するものである。
本実施形態に係るグラフィックプロセッサは、新たにテクセル取得パラメータEを有している。パラメータEは、取得モードと共にピクセル処理部6からテクスチャユニット7に与えられる。座標計算部21−0〜21−3では取得モード、UV座標、及びパラメータEを用いて計算を行う。以下、パラメータEについて説明する。パラメータEとは、取得する4つのテクセルの間隔を示す情報である。
図66は(4×1)モードにおいてE=0、1、2の場合に読み出されるテクセルの位置関係を示している。図中における×印がサンプリング点であり、斜線を付した四角形が読み出されるテクセルを示している。図示するように、E=0の場合には読み出されるテクセルの間隔はゼロである。E=1であると、テクセルはU軸方向に1つとばしで読み出される。またE=2の場合には、テクセルはU軸方向に2つとばしで読み出される。すなわち、座標計算部21−0〜21−3は、隣接するテクセルにパラメータEの値を加算してU座標を計算する。具体的には、座標計算部21−0は図9で説明した通り
(s0=u、t0=v)
であるが、座標計算部21−1は
(s1=s0+E、t1=v)
を計算する。また座標計算部21−2は、
(s2=s1+E、s2=v)
を計算する。また座標計算部21−3は、
(s3=s2+E、s3=v)
を計算する。
図67は(1×4)モードにおいてE=0、1、2の場合に読み出されるテクセルの位置関係を示している。座標計算部21−0は
(s0=u、t0=v)
を計算する。座標計算部21−1は
(s1=u、t1=t0+E)
を計算する。また座標計算部21−2は、
(s2=u、s2=t1+E)
を計算する。また座標計算部21−3は、
(s3=u、s3=t2+E)
を計算する。
図68はクロスモードにおいてE=0、1、2の場合に読み出されるテクセルの位置関係を示している。図示するようにクロスモードであると、読み出されるテクセルの位置はパラメータEだけU軸及びV軸の両方に変化する。座標計算部21−0は
(s0=u、t0=v−1−E)
を計算する。座標計算部21−1は
(s1=u−1−E、t1=v)
を計算する。また座標計算部21−2は、
(s2=u+1+E、s2=v)
を計算する。また座標計算部21−3は、
(s3=u、s3=v+1+E)
を計算する。
図69はRCモードにおいてE=0、1、2の場合に読み出されるテクセルの位置関係を示している。座標計算部21−0は
(s0=u−1−E、t0=v−1−E)
を計算する。座標計算部21−1は
(s1=u−1−E、t1=v+1+E)
を計算する。また座標計算部21−2は、
(s2=u+1+E、s2=v−1−E)
を計算する。また座標計算部21−3は、
(s3=u+1+E、s3=v+1+E)
を計算する。
以上のように、パラメータEを用いることにより、テクセルの読み出し方法に様々なバリエーションを与えることが可能である。
上記のように、この発明の第1乃至第9の実施形態に係るグラフィックプロセッサであると、ピクセル処理部6がテクスチャユニット7に対してテクセルの取得モードを情報として与えている。そしてテクスチャユニット7は、取得モードに応じて(2×2)以外のパターンでテクセルを取得する。従って、テクセルのフィルタリング処理の自由度が飛躍的に向上する。また、ピクセル処理部6から繰り返し回数の指示を受け、その回数だけテクセル取得処理を繰り返すことで、テクセル取得に関するピクセル処理部6の負荷を軽減出来る。更に、補間係数を用いることにより、より豊かな画像表現が可能となる。
なお上記実施形態では、例えば図8に示すように、(4×1)モードの場合には、サンプリング点に相当するテクセルと、サンプリング点からU軸の正方向に隣り合う3つのテクセルが読み出される場合について説明した。また(1×4)モードの場合には、サンプリング点に相当するテクセルと、サンプリング点からV軸の正方向に隣り合う3つのテクセルが読み出される場合について説明した。しかし、読み出される4つのテクセルの位置は上記の場合に限定されるものではなく、サンプリング点を基準にして適宜自由に設定出来る。図70はUV座標であり、(1×4)モードにおいて読み出される4つのテクセルとサンプリング点との関係を示している。図中において×印がサンプリング点である。
CASE1は上記実施形態で説明した場合である。CASE2は、V座標がサンプリング点に対して“−1”となる位置を基準に正方向に4つのテクセルを取得する場合を示している。CASE3は、V座標がサンプリング点に対して“−2”となる位置を基準に正方向に4つのテクセルを取得する場合を示している。CASE4は、V座標がサンプリング点に対して“−3”となる位置を基準に正方向に4つのテクセルを取得する場合を示している。CASE5は、V座標がサンプリング点に対して“+1”となる位置を基準に正方向に4つのテクセルを取得する場合を示している。この場合、サンプリング点に相当するテクセルは読み出されない。(4×1)モードの場合も同様である。
またデータ取得部11の制御部20は、座標計算時に使用するオフセットテーブルを有していても良い。図71はオフセットテーブルの概念図である。オフセットテーブルとは、座標計算部21−0〜21−3が座標を計算する際に、サンプリング点に対応するUV座標(u、v)に対して加算すべき値Δs0〜Δs3、Δt0〜Δt3を保持するテーブルである。つまり座標計算部21−0〜21−3は、制御部20におけるオフセットテーブル内の値を読み出し、それぞれ次の計算を行う。
(s0、t0)=(u+Δs0、v+Δt0)
(s1、t1)=(u+Δs1、v+Δt1)
(s2、t2)=(u+Δs2、v+Δt2)
(s3、t3)=(u+Δs3、v+Δt3)
図71において、iは繰り返し回数(カウンタ値)であり、h、gは定数または所定の関数等である。一例として(1×4)モードの場合について説明する。オフセットテーブルは、(1×4)モードにおいては、Δs0=(i×g)、Δt0=(0+h)、Δs1=(i×g)、Δt1=(1+h)、Δs2=(i×g)、Δt2=(2+h)、Δs3=(i×g)、Δt3=(3+h)である。h=0の場合が図70におけるCASE1に相当する。h=−1、−2、−3の場合が、図70におけるそれぞれCASE2〜CASE4に相当する。またh=1の場合が図70におけるCASE5に相当する。また、g=1の場合には、テクセルの取得を繰り返す度にU座標が“+1”されるが、g=2とすれば“+2”とされ、1列間隔でテクセルが読み出される。(4×1)モードの場合も同様である。なおCrossモード及びRCモードの場合にも、繰り返し回数iの情報が与えられていても良い。
また上記実施形態では、テクセルの取得を繰り返す際に、(4×1)モードではV軸の正方向に向かって繰り返し、(1×4)モードではU軸方向に向かって繰り返す場合について説明したが、この場合に限定されるものでもない。図72はUV座標であり、4つのテクセルの取得処理を繰り返す様子を示している。図示するように、処理を繰り返す度にU座標とV座標の両方が変化しても良い。この場合、ピクセル処理部6からテクスチャユニット7に対して、処理を進めるベクトル情報(Δt/Δs)が与えられれば良い。このベクトル情報に基づいて、制御部20は図71に示すオフセットテーブルを更新することが出来る。
更に第3、第4の実施形態において、補間係数を使用するか否かは自由に選択することも可能である。図73は、第3、第4の実施形態の変形例に係るフィルタリング処理部13のブロック図である。図示するようにフィルタリング処理部13は、図35で説明した構成においてスイッチ42−0〜42−3を更に備えている。そして補間係数を使用する場合には、スイッチ42−0〜42−3は、テクセル取得部22−0〜22−3で取得されたテクセルを乗算器40−0〜40−3へ入力する。使用しない場合には、乗算器40−0〜40−3に入力することなく、直接加算器41へ入力する。図74は上記場合の処理のフローチャートである。図示するように、ステップS42で補間係数を取得した後、補間係数を使用するか否かを判定する(ステップS100)。使用する場合(ステップS100、YES)にはステップS43に進む。使用しない場合(ステップS100、NO)にはステップS14の処理を行って、ステップS33に進む。
また、補間係数を使用するか否かを処理の始めに判定し、使用しない場合には補間係数の取得を行わないことも可能である。図75はこのような場合のフローチャートである。図示するようにステップS30の後に、上記ステップS100の処理を行う。そして使用する場合(ステップS100、YES)にはステップS40に進み、第4の実施形態で説明した処理を行う。使用しない場合(ステップS100、NO)には、ステップS40を省いてステップS31に進み、第2の実施形態で説明した処理を行う。
更に、上記実施形態では1度に読み出すテクセルの個数は4つである場合について説明したが、例えば4つ未満、または5つ以上であっても良い。この場合、例えば図33に示す補間係数テーブルは、テクセルと同一の数の補間係数を保持する。
また、上記第1乃至第9の実施形態に係るグラフィックプロセッサは、例えばゲーム機、ホームサーバー、テレビ、または携帯情報端末などに搭載することが出来る。図76は上記第1乃至第9の実施形態に係るグラフィックプロセッサを備えたデジタルテレビの備えるデジタルボードのブロック図である。デジタルボードは、画像・音声などの通信情報を制御するためのものである。図示するように、デジタルボード1000は、フロントエンド部1100、画像描画プロセッサシステム1200、デジタル入力部1300、A/Dコンバータ1400、1800、ゴーストリダクション部1500、三次元YC分離部1600、カラーデコーダ1700、LAN処理LSI1900、LAN端子2000、ブリッジメディアコントローラ2100、カードスロット2200、フラッシュメモリ2300、及び大容量メモリ(例えばDRAM)2400を備えている。フロントエンド部1100は、デジタルチューナーモジュール1110、1120、OFDM(Orthogonal Frequency Division Multiplex)復調部1130、QPSK(Quadrature Phase Shift Keying)復調部1140を備えている。
画像描画プロセッサシステム1200は、送受信回路1210、MPEG2デコーダ1220、グラフィックエンジン1230、デジタルフォーマットコンバータ1240、及びプロセッサ1250を備えている。そして、例えばグラフィックエンジン1230が、上記第1乃至第9の実施形態で説明したグラフィックプロセッサに対応する。
上記構成において、地上デジタル放送波、BSデジタル放送波、及び110°CSデジタル放送波は、フロントエンド部1100で復調される。また地上アナログ放送波及びDVD/VTR信号は、3次元YC分離部1600及びカラーデコーダ1700でデコードされる。これらの信号は、画像描画プロセッサシステム1200に入力され、送受信回路1210で、映像・音声・データに分離される。そして、映像に関しては、MPEG2デコーダ1220を介してグラフィックエンジン1230に映像情報が入力される。するとグラフィックエンジン1230は、上記実施形態で説明したようにして図形を描画する。
図77は、上記第1乃至第9の実施形態に係るグラフィックプロセッサを備えた録画再生機器のブロック図である。図示するように、録画再生機器3000はヘッドアンプ3100、モータードライバ3200、メモリ3300、画像情報制御回路3400、ユーザI/F用CPU3500、フラッシュメモリ3600、ディスプレイ3700、ビデオ出力部3800、及びオーディオ出力部3900を備えている。
画像情報制御回路3400は、メモリインターフェース3410、デジタル信号プロセッサ3420、プロセッサ3430、映像処理用プロセッサ3450、及びオーディオ処理用プロセッサ3440を備えている。そして、例えば映像処理用プロセッサ3450及びデジタル信号プロセッサ3420が、上記第1乃至第9の実施形態で説明したグラフィックプロセッサに対応する。
上記構成において、ヘッドアンプ3100で読み出された映像データが画像情報制御回路3400に入力される。そして、デジタル信号処理プロセッサ3420から映像情報用プロセッサ3450に図形情報が入力される。すると映像情報用プロセッサ3450は、上記実施形態で説明したようにして図形を描画する。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
1…グラフィックプロセッサ、2…ラスタライザ、3…ピクセルシェーダ、4…ローカルメモリ、5…データ振り分け部、6…ピクセル処理部、7…テクスチャユニット、10…テクスチャ制御部、11…データ取得部、12…キャッシュメモリ、13…フィルタリング処理部、14…カウンタ、15…データ保持部、16…フィルタリング係数取得部、17…フィルタリング係数保持部、20、30…制御部、21−0〜21−3…座標計算部、22−0〜22−3…テクセル取得部、31−0〜31−3…係数選択部、32−0〜32−3…係数取得部、40−0〜40−3…乗算器、41…加算器、42−0〜42−3…スイッチ、50〜54…画像、55…奥行き値、56…フレームバッファ