(58)【調査した分野】(Int.Cl.,DB名)
グラフィックのLOD値によって決定される第1ミップマップと第2ミップマップとが、テクスチャフィルタリングに関与する程度を示すLOD加重値に基づいて、前記第1ミップマップに係わる演算を行う第1演算器と、前記第2ミップマップに係わる演算を行う第2演算器と、を決定する制御部と、
前記第1演算器及び前記第2演算器を利用して、テクスチャフィルタリングを行うテクスチャフィルタと、を含み、
前記第1演算器によって行われる演算の精度は、前記第2演算器によって行われる演算の精度と異なるテクスチャ処理装置。
前記LOD加重値により、前記第1ミップマップに係わる演算に利用される加重値と、前記第2ミップマップに係わる演算に利用される加重値とが変わることを特徴とする請求項1に記載のテクスチャ処理装置。
前記LOD加重値の属する区間が、前記LOD加重値の最大値または最小値を含む区間であるならば、前記第1演算器及び前記第2演算器のうちいずれか一つは、前記第1ミップマップと前記第2ミップマップとのうち、前記テクスチャフィルタリングに関与する程度が小さいミップマップに含まれたテクセル値を出力することを特徴とする請求項3に記載のテクスチャ処理装置。
前記第1ミップマップと前記第2ミップマップとが前記テクスチャフィルタリングに関与する程度の差が増大するほど、前記第1演算器の演算の精度と、前記第2演算器の演算の精度との差が増大することを特徴とする請求項1ないし7のうち何れか一項に記載のテクスチャ処理装置。
グラフィックのLOD 値によって決定される第1ミップマップと第2ミップマップとが、テクスチャフィルタリングに関与する程度を示すLOD加重値に基づいて、前記第1ミップマップに係わる演算を行う第1演算器と、前記第2ミップマップに係わる演算を行う第2演算器と、を決定する段階と、
前記第1演算器及び前記第2演算器を利用して、テクスチャフィルタリングを行う段階と、を含み、
前記第1演算器によって行われる演算の精度は、前記第2演算器によって行われる演算の精度と異なるテクスチャ処理方法。
前記LOD加重値により、前記第1ミップマップに係わる演算に利用される加重値と、前記第2ミップマップに係わる演算に利用される加重値とが変わることを特徴とする請求項11に記載のテクスチャ処理方法。
前記制御部は、前記第1ミップマップと前記第2ミップマップとが、前記テクスチャフィルタリング動作に関与する程度を示すLOD加重値を決定するように構成されたことを特徴とする請求項18に記載のテクスチャ処理装置。
前記制御部は、前記第1ミップマップと前記第2ミップマップとが、前記テクスチャフィルタリング動作に関与する程度を示すLOD加重値を決定するように構成されたことを特徴とする請求項17に記載のテクスチャ処理装置。
【発明を実施するための形態】
【0011】
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り現在汎用される一般的な用語を選択したが、それは、当技術分野の当業者の意図、判例、あるいは新たな技術の出現などによっても異なる。また、特定の場合、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単なる用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
【0012】
該実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接的に連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、該実施形態に記載された「…部」、「…モジュール」の用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
【0013】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むと解釈されるものではなく、そのうちの一部構成要素または一部段階は、含まれなくともよく、またはさらなる構成要素またはさらなる段階をさらに含んでもよいと解釈されなければならない。
【0014】
下記実施形態に係わる説明は、権利範囲を制限すると解釈されるものではなく、当該技術分野の当業者が容易に類推することができるところは、該実施形態の権利範囲に属するものであると解釈されなければならないのである。以下、添付された図面を参考しながら、ただ例示のための実施形態について詳細に説明する。
【0015】
図1は、一実施形態によるグラフィック処理装置を示した図面である。
図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、関連技術分野で当業者であるならば、理解することができるであろう。
【0016】
図1を参照すれば、グラフィック処理装置100は、ラスタライザ(rasterizor)110、シェーダコア(shader-core)120、テクスチャ処理装置(texture processing unit)130、ピクセル処理装置(pixel processing unit)140、タイルバッファ(tile buffer)150などを含んでもよい。グラフィック処理装置100は、バス(bus)170を介して、外部のメモリ(memory)160とデータを送受信することができる。
【0017】
図1に図示されたグラフィック処理装置100は、三次元グラフィックスを処理する装置であり、タイルに基づいたレンダリング(TBR:tile-based rendering)方式を使用することができる。言い替えれば、グラフィック処理装置100は、1つのフレームに該当する三次元グラフィックスを生成するために、一定サイズに分割された複数個のタイルを、ラスタライザ110、シェーダコア120、ピクセル処理装置140を通過させ、処理結果をタイルバッファ150に保存することができる。グラフィック処理装置100は、フレームを構成する全てのタイルに対して、ラスタライザ110、シェーダコア120及びピクセル処理装置140で構成されるチャネルを複数個利用して、並列処理することができる。グラフィック処理装置100は、1つのフレームに該当する複数個のタイルが処理されれば、タイルバッファ150に保存された処理結果を、メモリ160のフレームバッファ(図示せず)に伝送することができる。
【0018】
ラスタライザ110は、幾何変換過程を経て、バーテックスシェーダ(vertex shader)から生成されたプリミティブ(primitive)に対して、ラスタ化(rasterization)を行うことができる。
【0019】
シェーダコア120は、ラスタライザ110からラスタ化されたプリミティブを伝達され、ピクセルシェーディングを行うことができる。シェーダコア120は、ラスタ化を経て生成されたプリミティブのフラグメントを含むタイルに対して、タイルを構成する全てのピクセルの色相を決定するピクセルシェーディングを行うことができる。シェーダコア120は、ピクセルシェーディング過程において、立体的であって臨場感ある三次元グラフィックスを生成するために、テクスチャを利用して生成されたピクセル値を使用することができる。
【0020】
シェーダコア120は、ピクセルシェーダ(pixel shader)を含んでもよい。また、シェーダコア120は、バーテックスシェーダをさらに含んだ形態でもあり、バーテックスシェーダとピクセルシェーダとが統合された形態の統合シェーダでもある。シェーダコア120がバーテックスシェーダの機能を遂行することができる場合、オブジェクトを示すプリミティブを生成し、ラスタライザ110に伝達することができる。
【0021】
シェーダコア120が、所望するピクセルに対応するピクセル値の伝達をテクスチャ処理装置130に要請すれば、テクスチャ処理装置130は、あらかじめ準備したテクスチャを処理して生成されたピクセル値を伝達する。テクスチャは、テクスチャ処理装置130の内部または外部の所定空間、またはグラフィック処理装置100外部のメモリ160に保存されている。テクスチャ処理装置130は、シェーダコア120で要請したピクセル値生成に利用されるテクスチャが、テクスチャ処理装置130内部の所定空間にない場合、テクスチャ処理装置130外部の空間、またはメモリ160から、テクスチャを持ってきて使用することができる。
【0022】
ピクセル処理装置140は、1つのタイル内のような位置に対応するピクセルに対して、深さテストのような過程を経て、最終的に表示されるピクセル値を決定し、1つのタイルに該当する全ピクセル値を決定することができる。
【0023】
タイルバッファ150は、ピクセル処理装置140から伝達された1つのタイルに該当する全ピクセル値を保存することができる。1つのフレームを構成する全タイルに対するグラフィック処理過程が完了すれば、タイルバッファ150に保存された処理結果が、メモリ160のフレームバッファに伝達される。
【0024】
図2は、グラフィック処理装置が三次元グラフィックスを処理する過程について説明する図面である。
【0025】
三次元グラフィックスを処理する過程は、大きく見て、幾何変換、ラスタ化、ピクセルシェーディングの3段階に分けることができ、以下、
図2を参照し、さらに細部的な過程について説明する。具体的には、
図2は、段階11ないし段階18を介して、三次元グラフィックスを処理する過程を示す。
【0026】
段階11は、バーテックス(vertices)を生成する段階である。該バーテックスは、三次元グラフィックスに含まれた客体(object)を示すために生成される。
【0027】
段階12は、生成されたバーテックスをシェーディング(shading)する段階である。バーテックスシェーダ(vertex shader)は、段階11で生成されたバーテックスの位置を指定することにより、バーテックスに対するシェーディングを行うことができる。
【0028】
段階13は、プリミティブ(primitive)を生成(generationg)する段階である。該プリミティブは、1以上のバーテックスを利用して形成される点、線、多角形(polygon)などを意味する。例えば、該プリミティブは、3個のバーテックスが連結された三角形でもある。
【0029】
段階14は、プリミティブをラスタ化(rasterization)する段階である。プリミティブのラスタ化は、プリミティブをフラグメント(fragments)に分割することを意味する。フラグメントは、プリミティブに対するグラフィック処理を行うための基本単位でもある。該プリミティブは、バーテックス(vertex)に係わる情報のみを含むので、ラスタライジングを介して、バーテックスとバーテックスとの間にフラグメントが生成されることにより、三次元グラフィック処理が行われる。
【0030】
段階15は、ピクセルをシェーディングする段階である。ラスタ化によって生成された、プリミティブを構成するフラグメントは、ピクセルにもなる。当該分野において、フラグメント及びピクセルという用語は、場合によっては混用されて使用される。例えば、ピクセルシェーダ(pixel shader)は、フラグメントシェーダとも呼称される。一般的には、プリミティブを構成するグラフィック処理の基本単位をフラグメントと呼び、その後、ピクセルシェーディングからグラフィック処理を行う基本単位をピクセルと称する。ピクセルシェーディングによって、ピクセルの値、属性など(例えば、ピクセルの色)が決定される。
【0031】
段階16は、ピクセルの色を決定するためのテクスチャリング(texturing)段階である。該テクスチャリングは、あらかじめ準備されたイメージであるテクスチャを利用して、ピクセルの色を決定する過程である。このとき、多様な色相とパターンとの様子を表現するために、それぞれのピクセルの色相を計算して決定することは、グラフィック処理に必要なデータ演算量と、グラフィック処理時間とを増大させるので、グラフィック処理装置は、あらかじめ準備されたテクスチャを利用して、ピクセルの色相を決定することができる。
【0032】
段階17は、テスト及びミキシング(testing and mixing)段階である。深さテスト(depth test、カーリング(curling)、クリッピング(clipping)などを介して、最終的に表示されるピクセル値が決定される。
【0033】
段階18は、段階11ないし段階17を介して生成されたフレームをフレームバッファ(frame buffer)に保存し、フレームバッファに保存されたフレームを、ディスプレイ装置を介して表示する段階である。
【0034】
図2で説明された三次元グラフィックスを処理する過程は、概括的なものであり、さらに細部的な過程については、当該技術分野の当業者に自明である。
【0035】
図3は、テクスチャマッピングについて説明するための図面である。
図3を参照すれば、ラスタライジングによって、スクリーン空間上のピクセル301が生成された場合、テクスチャ処理装置は、ピクセル301にマッピングされるテクスチャ302を決定することができる。このとき、テクスチャ302は、三次元客体表面の色相、質感及びパターンなどに係わる情報を有するイメージと定義され、テクスチャ空間上のテクセル(texel)単位で構成される。
【0036】
一方、客体の大きさは、スクリーン空間上で連続的に変わるために、全てのピクセル301に対応するテクスチャ302をあらかじめ準備し難い。従って、テクスチャ処理装置は、1つのテクスチャ、または複数のテクスチャを利用した補間(interpolation)作業を介して、ピクセル301の値を推定するテクスチャフィルタリングを行うことができる。以下、図面では、テクスチャフィルタリングを行うときに利用されるミップマップについて説明する。
【0037】
図4は、ミップマップについて説明するための図面である。
【0038】
該テクスチャ処理装置は、スクリーン空間上で変化する客体の大きさに適応的に対応するように、あらかじめ準備されたテクスチャを利用することができる。このとき、基本テクスチャと、それを縮小させたテクスチャとからなるビットマップイメージの集合をミップマップ(mipmap)という。
【0039】
このとき、他レベルのミップマップは、解像度が異なる。
図4を参照すれば、レベル0ミップマップ410は、テクスチャのうち解像度が最も高いテクスチャであり、基本テクスチャを意味する。レベル0ミップマップ410を表現するために、8×8テクセルが必要である。また、基本テクスチャの大きさより1/4縮小されたミップマップは、レベル1ミップマップである。レベル1ミップマップ411を表現するために、4×4テクセルが必要である。また、基本テクスチャの大きさより1/16縮小されたミップマップは、レベル2ミップマップ412でもある。レベル2ミップマップ412を表現するために、2×2テクセルが必要である。
【0040】
一方、視点(view point)とピクセル間距離とが変わることにより、ピクセルにマッピングされるテクスチャが異なる。例えば、道路のタイルをスクリーン空間に表示するとき、視点で近いタイルに対応するピクセルにマッピングされるテクスチャは、解像度が高いレベル0ミップマップ410でもある。また、視点から遠く離れた道路のタイルに対応するピクセルにマッピングされるテクスチャは、解像度が低いレベル2ミップマップ412でもある。すなわち、複数のミップマップを利用する場合、遠い距離にある客体は、低い解像度で表現されるために、グラフィック処理装置は、三次元グラフィックを自然に表現することができる。併せて、異なるテクスチャがマッピングされたピクセルの境界面でテクスチャフィルタリングが行われれば、三次元グラフィックの品質が向上する。
【0041】
このとき、スクリーン空間上のピクセルにマッピングさせるテクスチャは、グラフィックのLOD(level of detail)に基づいて決定される。ここで、該LODは、三次元グラフィックイメージを表現する精度(precision)を段階化したものを意味する。テクスチャ処理装置は、ピクセル情報を受信した後、グラフィックのLOD値を決定し、決定されたLOD値によってテクスチャフィルタリングを行うとき、必要なミップマップを決定することができる。例えば、テクスチャ処理装置は、2×2ピクセルで構成されたクワッド(quad)単位で、グラフィックのLOD値を計算することができるが、LOD値を計算するとき、必要なピクセルの数は、それに制限されなるものではない。
【0042】
一方、テクスチャ処理装置は、1つのミップマップ、または複数のミップマップを利用して、テクスチャフィルタリングを行うことができる。例えば、テクスチャ処理装置は、ポイントフィルタリング(point filtering)、二重線形フィルタリング(bilinear filtering)及び三重線形フィルタリング(trilinear filtering)を行うことができるが、テクスチャ処理装置が行うことができるテクスチャフィルタリング種類は、それらに制限されなるものではない。具体的なテクスチャフィルタリング方式については、以下、
図5A及び
図5Bを参照して説明する。
【0043】
図5Aは、一実施形態による、1つのミップマップを利用するテクスチャフィルタリング方式について説明するための図面である。
【0044】
テクスチャ処理装置は、1つのミップマップを利用して、ポイントフィルタリング及び二重線形フィルタリングを行うことができる。このうち、ポイントフィルタリングは、テクスチャ座標上ピクセルと最も近いテクセル値を結果値として出力することができる。すなわち、ポイントフィルタリングを行うとき、必要なテクセル値は、1である。
【0045】
図5Aを参照すれば、ピクセルPの周辺に位置した第1テクセルT1ないし第4テクセルT4のうち第1テクセルT1がピクセルPと最も近いために、ピクセルPのポイントフィルタリング結果は、第1テクセルT1になる。
【0046】
一方、二重線形フィルタリングは、テクスチャ座標上、ピクセルと近い4個のテクセル値と、2つの加重値とを利用して、ピクセル値を計算するテクスチャフィルタリング方式である。すなわち、二重線形フィルタリングは、必要なテクセルの数が4個である。
【0047】
図5Aを参照すれば、加重値U、加重値V、第1テクセルT1ないし第4テクセルT4値を利用して、ピクセルP値を計算することができる。このとき、二重線形フィルタリングBiLERPは、数式(1)を介して計算される。
【0048】
【数1】
数式(1)において、W
u、W
vは、それぞれ加重値U、加重値Vであり、それぞれ0と1との間の値でもある。T1ないしT4は、それぞれT1値ないしT4値である。また、関数LERPは、線形補間(linear interpolation)であり、数式(2)によって定義される。
【0049】
【数2】
数式(2)を参照すれば、線形補間は、2つの座標値の直線距離により、2つの座標値間の任意の座標を線形的に計算する方法である。すなわち、二重線形フィルタリングは、1ミップマップに含まれた2つのテクセル対に対して線形補間を行い、線形補間の結果に基づいて、さらに線形補間を行うテクスチャフィルタリング方式である。
【0050】
図5Bは、一実施形態による、2つのミップマップを利用するテクスチャフィルタリング方式について説明するための図面である。
【0051】
テクスチャ処理装置は、2つのミップマップを利用して、三重線形フィルタリングを行うことができる。三重線形フィルタリング2つのミップマップにおいて、それぞれ二重線形フィルタリングを行った結果と、LOD加重値とを利用して、ピクセル値を計算するテクスチャフィルタリング方式である。すなわち、三重線形フィルタリングを行うとき、必要なテクセルの数は8個である。ここで、LOD加重値は、グラフィックLOD値により、決定された2つのミップマップが、テクスチャフィルタリングに関与する程度を意味する値でもある。
【0052】
図5Bを参照すれば、第1ミップマップ510と第2ミップマップ520との間にピクセルPが位置するとき、テクスチャ処理装置は、数式(3)に基づいて、三重線形フィルタリングTriLERPを行うことができる。
【0053】
【数3】
BiLERP
1とBiLERP
2は、それぞれ第1ミップマップ510及び第2ミップマップ520に対する二重線形フィルタリング結果であり、W
LODは、LOD加重値を意味する。このとき、LOD加重値は、0から1までの値を有することができる。
【0054】
図5Bを参照すれば、第1ミップマップ510がテクスチャフィルタリングに関与する程度が、第2ミップマップ520がテクスチャフィルタリングに関与する程度よりさらに大きければ、ピクセルPは、0.5より大きいLOD加重値を有することができる。
【0055】
以下、図面では、説明の便宜のために、第2ミップマップ520がテクスチャフィルタリングに関与する程度が増大すれば、LOD加重値はますます低下し、第1ミップマップ510がテクスチャフィルタリングに関与する程度が増大すれば、LOD加重値は、ますます増大すると仮定したが、本実施形態は、それに制限されなるものではない。
【0056】
一方、以下、図面では、説明の便宜のために、三重線形フィルタリングを前提に記述されるが、それに制限されなるものではない。
【0057】
図6は、テクスチャフィルタリング方式によって必要な演算量について説明するための図面である。
図6を参照すれば、ポイントフィルタリングの場合、テクスチャ座標上のピクセルと最も近い1つのテクセル値を出力するために、線形補間を行わない。
【0058】
一方、二重線形フィルタリングの場合、1ミップマップに対する二重線形補間を行う。このとき、数式(1)を参照すれば、該二重線形補間は、3回線形補間を含む。従って、テクスチャ処理装置は、線形補間を3回行い、二重線形フィルタリングの結果値を獲得することができる。
【0059】
数式(3)を参照すれば、三重線形フィルタリングの場合、2つのミップマップに対する二重線形補間を含み、二重線形補間結果に基づいた線形補間を含む。従って、テクスチャ処理装置は、線形補間を7回行い、三重線形フィルタリングの結果値を獲得することができる。
【0060】
すなわち、テクスチャ処理装置の三重線形フィルタリングの演算量が減少すれば、他のテクスチャフィルタリングの演算量が減少するときより、全体フィルタリング演算量がさらに大幅に減少する。
【0061】
図7は、一実施形態による、LOD加重値に基づいて、第1演算器及び第2演算器を決定する方法について説明するための図面である。
【0062】
テクスチャ処理装置は、LOD加重値に基づいて、第1ミップマップ510に係わる演算を行う第1演算器と、第2ミップマップ520に係わる演算を行う第2演算器と、を決定し、第1演算器と第2演算器とを利用して、テクスチャフィルタリングを行うことができる。具体的には、テクスチャ処理装置は、第1ミップマップ510と第2ミップマップ520とがテクスチャフィルタリングに関与する程度により、演算精度が異なる演算器のうち第1演算器及び第2演算器を決定することにより、三重線形フィルタリングの演算量を減少させることができる。
【0063】
ここで、該精度は、所定変数を表現するために必要なビット数で示すことができる。例えば、OpenGLにおいて色相値は、RGBA形式に保存され、色相値の各構成要素(Red、Green、Blue、Alpha)は、それぞれ8ビット整数型(integer type)で表現される。かような場合、テクセルの精度は8ビットでもある。
【0064】
一方、第1演算器と第2演算器は、複数の線形補間を行うために乗算器を含んでもよい。数式(1)及び数式(2)を参照すれば、該乗算器は、テクセル値と加重値U,Vとを入力され、乗算演算を行うことができる。このとき、乗算器の入力変数の精度により、演算器の面積と、演算器が行う演算量とが異なる。例えば、入力変数の精度がそれぞれ8ビットである乗算器の面積は、入力変数の精度が、それぞれ4ビットである乗算器の面積より4倍大きく、行う演算量が4倍多い。併せて、演算器が遂行する演算量が増加すれれば、演算器の電力消費量も増加する。
【0065】
一方、演算器によって行われる演算の精度は、演算に利用される加重値のビット数で示すことができる。例えば、ミップマップに係わる演算に利用される加重値U及び加重値Vの精度が4ビットであるならば、演算の精度は、4ビットと表現することができる。言い替えれば、演算の精度が4ビットであるということは、演算器の乗算器に入力される加重値の精度が4ビットであるということを意味する。
【0066】
図5Bを参照すれば、第1ミップマップ510がテクスチャフィルタリングに関与する程度が、第2ミップマップ520がテクスチャフィルタリングに関与する程度より大きければ、LOD加重値が0.5より大きい。かような場合、
図7のテクスチャ処理装置は、LOD加重値が増加すれば、第2演算器の演算の精度よりさらに高い演算の精度を有する演算器を第1演算器と決定することができる。
【0067】
また、テクスチャ処理装置は、第1ミップマップ510がテクスチャフィルタリングに関与する程度が増加するほど、演算の精度が高い演算器を第1演算器と決定することができる。
【0068】
また、第1ミップマップ510と第2ミップマップ520とがテクスチャフィルタリングに関与する程度の差が増加するほど、第1演算器の演算の精度と、第2演算器の演算の精度との差が増加する。
【0069】
一方、複数のミップマップを利用するテクスチャフィルタリング方式には、三重線形フィルタリングだけではなく、非等方性フィルタリング(anisotropic filtering)が含まれてもよい。以下、図面では、説明の便宜のために、三重線形フィルタリングを前提として記述されたが、三重線形フィルタリング以外に、複数のミップマップを利用して、テクスチャフィルタリングを行う方法にも適用されるということは、関連技術分野で当業者であるならば、理解することができるであろう。
【0070】
図8は、他の一実施形態による、LOD加重値に基づいて、第1演算器及び第2演算器を決定する方法について説明するための図面である。
【0071】
テクスチャ処理装置は、LOD加重値の範囲を複数の区間に分割し、LOD加重値が属する区間によって、第1演算器と第2演算器とを決定することができる。また、テクスチャ処理装置は、演算の精度が異なる演算器を含んでもよい。
【0072】
図8を参照すれば、テクスチャ処理装置は、演算の精度がそれぞれ8ビットと4ビットとである、2個の演算器を利用して、テクスチャフィルタリングを行うことができる。具体的には、テクスチャ処理装置は、LOD加重値が0.5より大きい場合、演算の精度が8ビットである演算器を第1演算器と決定し、演算の精度が4ビットである演算器を第2演算器と決定することができる。言い替えれば、LOD加重値が0.5より大きい場合、第1ミップマップ510に係わる演算に利用される加重値U及び加重値Vの精度は、8ビットであり、第2ミップマップ520に係わる演算に利用される加重値U及び加重値Vの精度は、4ビットでもある。
【0073】
反対に、LOD加重値が0.5より小さい場合、テクスチャ処理装置は、演算の精度が8ビットである演算器を第2演算器と決定し、演算の精度が4ビットである演算器を第1演算器と決定することができる。
【0074】
図9は、一実施形態による、テクスチャ処理装置の構成を示したブロック図である。
図9を参照すれば、テクスチャ処理装置900は、制御部910及びテクスチャフィルタ920を含んでもよい。
図9に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、関連技術分野で当業者であるならば、理解することができるであろう。少なくとも一実施形態によれば、制御部910及びテクスチャフィルタ920は、それぞれの回路でもあり、コントローラ回路910及びテクスチャフィルタ回路920とも称される。
【0075】
制御部910は、外部からテクスチャを受信し、テクスチャ処理装置900を制御するために必要な演算を行うことができる。制御部910は、テクスチャフィルタ920を制御し、テクスチャ処理装置900の全般的な制御を担当することができる。
【0076】
また、制御部910は、グラフィックのLOD値によって決定される第1ミップマップ510と、第2ミップマップ520とがテクスチャフィルタリングに関与する程度を示すLOD加重値に基づいて、第1ミップマップ510に係わる演算を行う第1演算器と、第2ミップマップ520に係わる演算を行う第2演算器と、を決定することができる。このとき、第1演算器によって行われる演算の精度は、第2演算器によって行われる演算の精度と異なる。
【0077】
例えば、本開示の少なくとも一実施形態によれば、制御部910は、イメージのピクセル情報を受信し、イメージのLOD値を決定し、第1ミップマップ510が関与する程度を示すLOD加重値を決定することができ、決定されたLOD加重値に基づいて、第2ミップマップ520を決定することができる。
【0078】
また、本開示の少なくとも一実施形態によれば、テクスチャフィルタ回路920は、複数の異なる精度をそれぞれ有する複数の演算器を含んでもよい。また、制御部910は、イメージのLOD値を決定し、LOD値に基づいてLOD加重値を決定し、第1精度を有する第1演算器、及び第2精度を有する第2演算器を選択するように構成される。制御部910は、第1ミップマップに対する第1計算を行うように第1演算器を制御し、第2ミップマップに対して第2計算を行うように第2演算器を制御する。制御部910によって選択された第1演算器及び第2演算器は、テクスチャフィルタ回路920に含まれた複数の演算器のうち選択された演算器でもあり、選択された第1演算器及び第2演算器の第1精度及び第2精度は、互いに異なる。
【0079】
また、LOD加重値により、第1ミップマップ510に係わる演算に利用される加重値と、第2ミップマップ520に係わる演算に利用される加重値とが変わる。
【0080】
また、制御部910は、LOD加重値の範囲を複数の区間に分割し、LOD加重値が属する区間によって、第1演算器と第2演算器とを決定することができる。
【0081】
また、制御部910は、テクスチャフィルタ920に含まれる演算器の演算精度による組み合わせ数に基づいて、LOD加重値の範囲を分割することができる。
【0082】
また、制御部910は、第1ミップマップ510がテクスチャフィルタリングに関与する程度が増大するほど、演算の精度が高い演算器を第1演算器と決定することができる。
【0083】
また、制御部910は、第1ミップマップ510が第2ミップマップ520よりテクスチャフィルタリングに関与する程度が増大すれば、第2演算器の演算の精度よりさらに高い演算の精度を有する演算器を第1演算器と決定することができる。
【0084】
一方、第1ミップマップ510と第2ミップマップ520とがテクスチャフィルタリングに関与する程度の差が増大するほど、第1演算器の演算の精度と、第2演算器の演算の精度との差が増大する。
【0085】
一方、第1演算器と第2演算器との面積は、演算の精度に比例する。
【0086】
また、テクスチャフィルタ920は、第1演算器及び第2演算器を利用して、テクスチャフィルタリングを行うことができる。
【0087】
また、LOD加重値が属する区間が、LOD加重値の最大値または最小値を含む区間であるならば、第1演算器及び第2演算器のうちいずれか一つは、第1ミップマップ510と第2ミップマップ520とのうち、テクスチャフィルタリングに関与する程度が小さいミップマップに含まれたテクセル値を出力することができる。
【0088】
また、制御部910は、LOD加重値に基づいて、第1ミップマップ510に係わる演算の精度と、第2ミップマップ520に係わる演算の精度と、を決定することができ、テクスチャフィルタ920は、決定された演算の精度に基づいて、第1演算器の演算の精度と、第2演算器の演算の精度とを変更することができる。本開示の少なくとも一実施形態によれば、テクスチャフィルタ920は、少なくとも一部が互いに異なる精度を有する複数の演算器(例えば、演算器回路)を含み、制御部910は、LOD加重値に基づいて、複数の演算器のうち一演算器を選択することができる。
【0089】
図10は、一実施形態による、グラフィック処理装置の構成を示したブロック図である。
図10を参照すれば、テクスチャ処理装置1010は、制御部1011、テクスチャフィルタ1012及びテクスチャキャッシュ1013を含んでもよい。テクスチャ処理装置1010は、シェーダコア1020から要請されたテクスチャを処理し、シェーダコア1020に伝送することができる。テクスチャ処理装置1010は、シェーダコア1020が処理するピクセルに対応するテクスチャ座標を含むテクスチャ要請を受信することができる。例えば、ピクセルは、クワッド単位でテクスチャ要請に含まれる。一方、テクスチャ処理装置1010は、テクスチャキャッシュ1013に保存されていないテクスチャを、メモリ1030から持ってくることができる。
【0090】
本開示の一実施形態によれば、テクスチャ処理装置1010は、
図9のテクスチャ処理装置900の一実施形態でもある。制御部1011及びテクスチャフィルタ1012は、
図9の制御部910及びテクスチャフィルタ920と対応するので、詳細な説明は省略する。
【0091】
テクスチャキャッシュ1013は、テクスチャを保存することができる。テクスチャキャッシュ1013は、テクスチャ処理装置1010とメモリ1030とのデータ伝送によるグラフィック処理遅延時間を最小化させるために、メモリ1030から受信した一部テクスチャを保存することができる。
【0092】
テクスチャキャッシュ1013は、テクスチャ処理装置1010と別途のモジュールでもっても存在することもできる。例えば、テクスチャキャッシュ1013を別途のモジュールで具現し、テクスチャ処理装置1010とメモリ1030との間に位置させることもできる。
【0093】
図11は、他の一実施形態による、LOD加重値に基づいて、第1演算器及び第2演算器を決定する方法について説明するための図面である。
【0094】
テクスチャ処理装置900に含まれた演算器の数が増加すれば、テクスチャ処理装置900は、LOD加重値によって、第1演算器及び第2演算器をさらに精巧に選択することができるが、テクスチャ処理装置900の面積が増大する。
【0095】
図11を参照すれば、テクスチャ処理装置900は、演算の精度がそれぞれ9ビットないし1ビットである9個の演算器を利用して、テクスチャフィルタリングを行うことができる。例えば、LOD加重値が0.15である場合、テクスチャ処理装置900は、演算の精度が2ビットである演算器を、第1演算器と決定し、演算の精度が8ビットである演算器を、第2演算器と決定することができる。また、LOD加重値が0.95である場合、テクスチャ処理装置900は、演算の精度が9ビットである演算器を、第1演算器と決定し、演算の精度が1ビットである演算器を、第2演算器と決定することができる。
【0096】
図11によるテクスチャ処理装置900は、
図8によるテクスチャ処理装置900に比べ、さらに多くの演算器を含むために、LOD加重値によって、第1演算器及び第2演算器をさらに精巧に決定することができる。しかし、
図8によるテクスチャ処理装置900に比べ、テクスチャ処理装置900の面積が増大する。
【0097】
図12A及び
図12Bは、一実施形態による、LOD加重値が、LOD加重値の最大値または最小値が含まれた区間に属するとき、第1演算器及び第2演算器を決定する方法について説明するための図面である。
【0098】
テクスチャ処理装置900は、LOD加重値により、テクスチャフィルタリング方式を変更することができる。具体的には、LOD加重値が属する区間がLOD加重値の最大値または最小値を含む区間であるならば、第1演算器と第2演算器とのうちいずれか一つは、ポイントフィルタリングを行うことができる。言い替えれば、第1演算器と第2演算器とのうちいずれか一つは、第1ミップマップ510と第2ミップマップ520とのうち、テクスチャフィルタリングに関与する程度が小さいミップマップに含まれたテクセル値を出力することができる。
【0099】
図12Aを参照すれば、テクスチャ処理装置900は、演算の精度がそれぞれ8ビット、4ビット及び0ビットである3個の演算器を含んでもよい。このとき、LOD加重値が0.1より小さい場合、テクスチャ処理装置900は、演算の精度が0ビットである演算器を第1演算器と決定することができる。演算の精度が0ビットであることは、二重線形フィルタリングを行うとき、利用される加重値U,Vの精度が0ビットであることを意味する。言い替えれば、演算の精度が0ビットである演算器は、二重線形フィルタリングの代わりに、ポイントフィルタリングを行う演算器を意味する。
【0100】
従って、テクスチャ処理装置900は、LOD加重値が0.1より小さい場合、第1ミップマップ510については、ポイントフィルタリングを行い、第2ミップマップ520については、演算の精度が8ビットである第2演算器を利用して、二重線形フィルタリングを行うことができる。また、LOD加重値が0.9より大きい場合、テクスチャ処理装置900は、第2ミップマップ520については、ポイントフィルタリングを行い、第1ミップマップ510については、演算の精度が8ビットである第1演算器を利用して、二重線形フィルタリングを行うことができる。
【0101】
一方、テクスチャ処理装置900は、ポイントフィルタリングを行う演算器を別途に追加せず、演算の精度が4ビットである演算器を利用して、ポイントフィルタリングを行うことができる。
【0102】
図12Aによるテクスチャ処理装置900は、1ミップマップに対して、二重線形フィルタリングの代わりに、ポイントフィルタリングを行うために、
図8によるテクスチャ処理装置900に比べ、演算量が減少する。また、テクスチャ処理装置900が、演算の精度が4ビットである演算器を利用して、ポイントフィルタリングを行うならば、
図8によるテクスチャ処理装置900と面積は同一であるが、演算量が減少する。
【0103】
一方、
図12Bによるテクスチャ処理装置900は、
図12Aによるテクスチャ処理装置900のように、LOD加重値によって、ミップマップに対する演算を変更しながら、第1演算器及び第2演算器をさらに精巧に選択することができる。
【0104】
図12Bを参照すれば、テクスチャ処理装置900は、演算の精度がそれぞれ8ビット、6ビット、4ビット、2ビット及び0ビットである5個の演算器を利用して、テクスチャフィルタリングを行うことができる。例えば、LOD加重値が0.25である場合、テクスチャ処理装置900は、演算の精度が4ビットである演算器を第1演算器と決定し、演算の精度が8ビットである演算器を第2演算器と決定することができる。また、LOD加重値が0.95である場合、テクスチャ処理装置900は、演算の精度が8ビットである演算器を第1演算器と決定し、演算の精度が0ビットである演算器を第2演算器と決定することができる。かような場合、テクスチャ処理装置900は、第2ミップマップに対して、二重線形フィルタリングの代わりに、ポイントフィルタリングを行うことができる。一方、テクスチャ処理装置900は、ポイントフィルタリングを行う演算器を別途に追加せず、他の演算器を利用して、ポイントフィルタリングを行うことができる。
【0105】
図12Bによるテクスチャ処理装置900は、
図12Aによるテクスチャ処理装置900に比べ、演算の精度が異なる2つの演算器をさらに含むために、LOD加重値によって第1演算器及び第2演算器をさらに精巧に選択することができる。しかし、
図12Aによるテクスチャ処理装置900に比べ、テクスチャ処理装置900の面積が増大する。
【0106】
一方、
図12A及び
図12Bでは、第1ミップマップに対して、ポイントフィルタリングを行うと決定する第1臨界値を0.1と仮定し、第2ミップマップに対してポイントフィルタリングを行うと決定する第2臨界値を0.9と仮定したが、それは、説明の便宜のためのものであり、第1臨界値及び第2臨界値は、それらに制限されなるものではない。
【0107】
図13は、一実施形態による、テクスチャフィルタリングの演算量変化について説明するための図面である。
図13は、演算の精度が8ビットである2つの演算器を利用した三重線形フィルタリングの最終演算量が100%であるとき、演算器構成が変わることにより、最終演算量が減少する比率を図示したものである。一方、OpenGLのRGBA形式による場合、各構成要素(Red、Green、Blue、Alpha)は、それぞれ8ビット整数型で表現される。従って、演算量比較のために、テクスチャフィルタリングに利用されるテクセルの精度は、8ビットであり、2つの演算器のうち一つは、演算の精度が8ビットであるということが前提となる。
【0108】
図13を参照すれば、演算器構成の「a×b」において、aとbは、それぞれテクセルの精度と、演算の精度とを意味する。また、「A+B」において、AとBは、それぞれ演算器精度を意味する。言い替えれば、
図13は、2つの演算器を利用するテクスチャ処理装置であることが前提となっているので、「a×b+c×d」で表示される。例えば、演算器構成が「8×8+8×6」である場合、各演算器の演算の精度は、それぞれ8ビット、6ビットである。
【0109】
一方、演算器構成が「8×8及び8×4」であるならば、LOD加重値によって、第1演算器及び第2演算器を異ならせてテクスチャフィルタリングを行う最終演算量が78.5%でもある。従って、演算の精度がいずれも8ビットである2つの演算器を利用するときより、21.5%演算量が減少する。
【0110】
また、演算器構成が「8×8及び8×0」であるならば、LOD加重値によって、第1演算器及び第2演算器を異ならせてテクスチャフィルタリングを行う最終演算量が57.1%でもある。本開示の少なくとも一実施形態によれば、最終演算量は、テクスチャ処理動作(例えば、テクスチャフィルタリング動作)を完了するために、テクスチャ処理装置900によって行われる総計算量を示す。
【0111】
図13を参照すれば、テクスチャ処理装置900に含まれた1つの演算器によって行われる演算の精度が低下すれば、最終演算量が減少する。また、最終演算量が減少すれば、電力消費量も減少する。併せて、演算器面積は、演算の精度に比例するので、テクスチャ処理装置900は、演算の精度によって、面積が小さい演算器を含んでもよい。
【0112】
また、テクスチャ処理装置900は、演算の精度が同一である2つの演算器の一部のみを使用する方式で、既存ハードウェアを利用して具現されもする。
【0113】
一方、最終演算量が減少すれば、テクスチャフィルタリングの正確度が低下する。すなわち、演算器構成に含まれる演算器の演算の精度が低下すれば、誤謬回数が増加する。
図13を参照すれば、誤謬最大値は、OpenGL ES 3.2適合性テストを行ったとき、変数の最小値または最大値を外れる誤謬回数を意味する。一方、RGBA形式の各構成要素が8ビットである場合、誤謬回数が8回以下であるとい、OpenGL ES 3.2適合性テストを通過することができる。
【0114】
従って、最終演算量の比率と誤謬最大値とを考慮すれば、演算の精度が4ビットである演算器を含む演算器構成1310が、OpenGL ES 3.2適合性テスト基準を満足しながら、演算量が最小である演算器構成であると判断される。一方、テクスチャ処理装置900の演算器構成は、要求される品質に基づいて決定される。例えば、テクスチャ処理装置900には、最終演算量をさらに減らすことができる演算器構成が適用され、誤謬回数をさらに減らすことができる演算器構成が適用されもする。
【0115】
図14は、一実施形態によるテクスチャ処理方法を図示したフローチャートである。
【0116】
段階1410において、制御部910は、グラフィックのLOD値によって決定される第1ミップマップ510と第2ミップマップ520とがテクスチャフィルタリングに関与する程度を示すLOD加重値に基づいて、第1ミップマップ510に係わる演算を行う第1演算器と、第2ミップマップ520に係わる演算を行う第2演算器と、を決定することができる。このとき、第1演算器によって行われる演算の精度は、第2演算器によって行われる演算の精度と異なる。
【0117】
また、LOD加重値により、第1ミップマップ510に係わる演算に利用される加重値と、第2ミップマップ520に係わる演算に利用される加重値とが変わる。
【0118】
また、制御部910は、LOD加重値の範囲を複数の区間に分割し、LOD加重値が属する区間によって、第1演算器と第2演算器とを決定することができる。
【0119】
また、制御部910は、テクスチャフィルタ920に含まれる演算器の演算精度による組み合わせ数に基づいて、LOD加重値の範囲を分割することができる。
【0120】
また、制御部910は、第1ミップマップ510がテクスチャフィルタリングに関与する程度が増大するほど、演算の精度が高い演算器を第1演算器と決定することができる。
【0121】
また、制御部910は、第1ミップマップ510が第2ミップマップ520よりテクスチャフィルタリングに関与する程度が増大すれば、第2演算器の演算の精度よりさらに高い演算の精度を有する演算器を第1演算器と決定することができる。
【0122】
一方、第1ミップマップ510と第2ミップマップ520とがテクスチャフィルタリングに関与する程度の差が増大するほど、第1演算器の演算の精度と、第2演算器の演算の精度との差が増大する。
【0123】
段階1420において、テクスチャフィルタ920は、第1演算器と前記第2演算器とを利用して、テクスチャフィルタリングを行うことができる。
【0124】
また、LOD加重値が属する区間が、LOD加重値の最大値または最小値を含む区間であるならば、第1演算器と第2演算器とのうちいずれか一つは、第1ミップマップ510と第2ミップマップ520とのうち、テクスチャフィルタリングに関与する程度が小さいミップマップに含まれたテクセル値を出力することができる。
【0125】
また、制御部910は、LOD加重値に基づいて、第1ミップマップ510に係わる演算の精度と、第2ミップマップ520に係わる演算の精度と、を決定することができ、テクスチャフィルタ920は、決定された演算の精度に基づいて、第1演算器の演算の精度と、第2演算器の演算の精度とを変更することができる。
【0126】
図15は、一実施形態によるテクスチャ処理方法を図示した詳細フローチャートである。
図15は、
図12によるテクスチャ処理装置900がテクスチャを処理する方法について詳細に説明するための図面であり、テクスチャ処理装置900の演算器構成によって、テクスチャフィルタリングを行う方法が変わるということは、当該技術分野の通常の技術者であるならば、理解することができるであろう。
【0127】
段階1510において、制御部910は、クワッド情報を受信することができる。このとき、クワッドは、テクスチャをマッピングさせるピクセルの単位であり、2×2ピクセルの集合で示すことができる。また、該クワッド情報は、テクスチャ要請に含まれ、シェーダコア1020からも受信される。
【0128】
段階1520において、制御部910は、クワッド情報に基づいて、LOD加重値を計算し、テクスチャフィルタリングに利用される第1ミップマップ510及び第2ミップマップ520を決定することができる。
【0129】
段階1530において、制御部910は、LOD加重値が0.1より小さいか否かということを判断することができる。もしLOD加重値が0.1より小さければ、段階1540が遂行され、そうではなければ、段階1550が遂行される。
【0130】
段階1540において、テクスチャ処理装置900は、演算の精度が8ビットである演算器でもって、第2ミップマップ520に対して二重線形フィルタリングを行い、第1ミップマップ510に対して、ポイントフィルタリングを行うことができる。すなわち、LOD加重値が0.1より小さければ、テクスチャ処理装置900は、演算量を減らすために、テクスチャフィルタリングに関与する程度が相対的に大きい第2ミップマップ520に対してのみ二重線形フィルタリングを行い、第1ミップマップ510については、ポイントフィルタリングを行うことができる。
【0131】
段階1550において、制御部910は、LOD加重値が0.9より大きいか否かということを判断することができる。もしLOD加重値が0.9より大きければ、段階1560が遂行され、そうではなければ、段階1570が遂行される。
【0132】
段階1560において、テクスチャ処理装置900は、演算の精度が8ビットである演算器でもって、第1ミップマップ510に対して二重線形フィルタリングを行い、第2ミップマップ520に対してポイントフィルタリングを行うことができる。すなわち、LOD加重値が0.9より大きければ、テクスチャ処理装置900は、演算量を減らすために、テクスチャフィルタリングに関与する程度が相対的に大きい第1ミップマップ510に対してのみ二重線形フィルタリングを行い、第2ミップマップ520については、ポイントフィルタリングを行うことができる。
【0133】
段階1570において、制御部910は、LOD加重値によって、第1演算器及び第2演算器を決定することができる。第1演算器は、第1ミップマップ510に係わる演算を行う演算器を意味し、第2演算器は、第2ミップマップ520に係わる演算を行う演算器を意味する。このとき、第1演算器によって行われる演算の精度と、第2演算器によって行われる演算の精度とが異なる。また、第1ミップマップ510に係わる演算に利用される加重値の精度と、第2ミップマップ520に係わる演算に利用される加重値の精度とが異なる。各加重値の精度が異なれば、加重値を表現するビット数が異なるために、加重値が変わる。
【0134】
例えば、LOD加重値が0.5より大きい場合、演算の精度が8ビットである演算器が第1演算器と決定され、演算の精度が4ビットである演算器が第2演算器と決定される。
【0135】
段階1580において、テクスチャフィルタ920は、第1演算器及び第2演算器を利用して、第1ミップマップ510と第2ミップマップ520とに対する二重線形フィルタリングを行うことができる。
【0136】
段階1590において、テクスチャフィルタ920は、第1ミップマップ510と第2ミップマップ520とに対するフィルタリング結果と、LOD加重値とを利用して、三重線形フィルタリングを行うことができる。
【0137】
本実施形態は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態でも具現される。コンピュータ可読媒体は、コンピュータによってアクセスされる任意の可用媒体でもあり、揮発性媒体及び不揮発性媒体、分離型媒体及び非分離型媒体をいずれも含む。また、コンピュータ可読媒体は、コンピュータ記録媒体及び通信媒体をいずれも含んでもよい。該コンピュータ記録媒体は、コンピュータ可読命令語、データ構造、プログラムモジュール、またはその他データのような情報保存のための任意の方法または技術によって具現された揮発性及び不揮発性、分離型及び非分離型の媒体をいずれも含む。該通信媒体は、典型的には、コンピュータ可読命令語、データ構造、プログラムモジュール、またはその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
【0138】
本実施形態の範囲は、前述の説明よりは、特許請求の範囲によって示され、特許請求の範囲の意味、範囲及びその均等概念から導き出される全ての変更、または変形された形態が含まれると解釈されなければならない。