JP4042462B2 - 画像処理装置およびその方法 - Google Patents
画像処理装置およびその方法 Download PDFInfo
- Publication number
- JP4042462B2 JP4042462B2 JP2002122308A JP2002122308A JP4042462B2 JP 4042462 B2 JP4042462 B2 JP 4042462B2 JP 2002122308 A JP2002122308 A JP 2002122308A JP 2002122308 A JP2002122308 A JP 2002122308A JP 4042462 B2 JP4042462 B2 JP 4042462B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- index
- codebook
- entry
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、プリミティブを単位図形の組み合わせによって表現し、スクリーン座標系の描画対象領域内に、ピクセルを発生し、3次元グラフィックス描画を実現する画像処理装置およびその方法に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴン(Polygon)の頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表されるカラー(描画カラー)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィックス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャ(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
そして、3次元コンピュータグラフィックスでは、各ピクセルに対応するカラーを決定するときに、各ピクセルのカラーの値を計算し、この計算したカラーの値を、当該ピクセルに対応するディスプレイバッファ(フレームバッファ)の所定アドレスに書き込むレンダリング(Rendering)処理を行う。
【0009】
レンダリング処理の手法の一つに、ポリゴンレンダリングがある。
この手法では、立体モデル(プリミティブ)の三角形の単位図形(ポリゴン)の組み合わせとして表現しておき、このポリゴンを単位として描画を行うことで、表示画面のカラーを決定する。
【0010】
ポリゴンレンダリングでは、物理座標系における三角形の各頂点についての、座標(x,y,z)と、カラーデータ(R,G,B,α)と、張り合わせのイメージパターンを示すテクスチャデータの同次座標(s,t)および同次項qの値とを入力とし、これらの値を三角形の内部で補間する処理が行われる。
ここで、同次項qは、簡単にいうと、拡大縮小率のようなもので、実際のテクスチャバッファのUV座標系における座標、すなわち、テクスチャ座標データ(u,v)は、同次座標(s,t)を同次項qで除算した「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じたものとなる。
【0011】
また、画像データを描画するにあたっては、必要に応じて、現画像データに含まれる(R,G,B)データと、既にフレームバッファに記憶されている(R,G,B)データとが、現画像データに対応するαデータを示す混合値で混合されるαブレンディング処理が行われる。
さらに、αブレンディング後の画像データをフレームバッファの容量等を考慮して、データを間引くディザ(dither)処理が行われて、ディザ処理後の(R,G,B)データがフレームバッファに書き戻される。
【0012】
換言すれば、αブレンディング処理は、2つの色を線形補間して間に色を付ける処理である。
ディザ処理は、αブレンディング処理を受けたデータに雑音データを加え、その後にデータを間引いて、少ない色数で多くの色に見えるようにするための処理である。
【0013】
【発明が解決しようとする課題】
ところで、3次元グラフィックスに対応した画像処理装置では、通常は、R,G,Bそれぞれ8ビットの合計24ビットでテクスチャ要素を表現するが、それではデータ量が膨らむ。
そのため、3次元グラフィックスに対応した画像処理装置では、グラフィックスメモリにより多くのテクスチャデータを格納するために、インデックスカラーにおけるインデックスと、そのためのカラールックアップテーブル(CLUT)値をグラフィックスメモリに格納しておく。
そして、あらかじめ選んでおいたたとえば256色等の中から一つの色を選んで、そのデータをテクスチャ処理に使うことで、256色あればそれぞれのテクスチャ要素は8ビットで表現できることになる。
これにより、よいコンパクトなテクスチャデータとしてグラフィックスメモリに格納するデータ量を削減している。
【0014】
ところが、最近の画像処理装置は、3次元グラフィックスに対応した機能はもとより、さらにより多くの機能を搭載する傾向にあり、グラフィックスメモリの容量には制約を受けることもある。
したがって、単にCLUTを用いてデータを圧縮するだけでなく、グラフィックスメモリをより効率的に活用する必要が生じてきている。
【0015】
各種機能を効率的に処理し、グラフィックスメモリをより効率的に活用するために、2次的なキャッシュメモリがよく用いられる。
しかしながら、キャッシュメモリの容量は、一般的に必要なデータを選択的に格納できる程度に設定されるため、単にCLUTを用いて圧縮するだけでなく、テクスチャデータ等をさらに効率的に圧縮する必要がある。
【0016】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、テクスチャデータを効率的に圧縮することができ、ひいてはグラフィックスメモリの効率的な活用を実現することができる画像処理装置およびその方法を提供することにある。
【0017】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理装置であって、グラフィックスメモリと、上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割し、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成し、かつ、各コードブックの要素を指したインデックスマップを生成し、生成したコードブックデータおよびインデックスマップデータを上記グラフィックスメモリに格納する処理回路とを有する。
【0018】
本発明では、上記処理回路は、各分割領域で合計nエントリを使い、そのうち、4つの隣接分割領域の境界領域のA部分でaエントリ、2つの隣接分割領域の境界領域の少なくとも2つのB部分でbエントリを使うとすると、A部分をaエントリでエンコードし、生成したaエントリを隣接するB部分のコードブックにコピーし、B部分をbエントリでエンコードし、生成したbエントリを隣接する対象分割領域の残りのC部分のコードブックにコピーし、C部分をnエントリでエンコードする。
【0019】
好適には、各コードブックに対するインデックスは、上記A部分については、各コードブックに対応して付与し、上記B部分については上記A部分からコピーしたエントリを用いてA部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与し、上記C部分については上記B部分からコピーしたエントリを用いてAおよびB部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与する。
【0020】
本発明の第2の観点は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理装置であって、少なくともテクスチャに関するデータを記憶するグラフィックスメモリと、上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割し、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成し、かつ、各コードブックの要素を指したインデックスマップを生成し、生成したコードブックデータおよびインデックスマップデータを上記グラフィックスメモリに格納する第1の処理回路と、上記ブロック処理モード時に、上記テクスチャ座標から領域ID、ブロックID、およびオフセットを算出し、算出したIDデータに応じて必要なコードブックを上記グラフィックスメモリから読み出し、算出した領域ID、ブロックIDに対応するインデックスデータを選択し、コードブックから選択したインデックスに対応するブロックを抽出し、ブロックから1テクセルを切り出す第2の処理回路とを有する。
【0021】
本発明では、上記第2の処理回路は、上記テクスチャ座標から領域ID、ブロックID、およびオフセットを算出するID算出回路と、上記ブロック処理モード時に、上記グラフィックスメモリからインデックスマップデータが読み込まれ、上記ID算出回路によるIDデータに対応するインデックスデータを選択するインデックスキャッシュと、上記グラフィックスメモリから所定領域のコードブックを保持し、上記インデックスキャッシュで選択されたインデックスに対応するブロックを抽出するコードブックバッファと、上記ID算出回路によるIDデータを受けて、上記コードブックバッファに必要なコードブックが読み込まれているか否かの判別を行い、読み込まれていない場合には、コードブック読み込みリクエストを出して上記グラフィックスメモリから必要なコードブックを上記コードブックバッファに読み込ませるコードブック設定回路とを含む。
【0022】
本発明の第3の観点は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理方法であって、上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割する第1のステップと、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成する第2のステップと、各コードブックの要素を指したインデックスマップを生成する第3のステップと、生成したコードブックデータおよびインデックスマップデータをグラフィックスメモリに格納する第4のステップとを有する。
【0023】
本発明の第4の観点は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理方法であって、上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割する第1のステップと、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成する第2のステップと、各コードブックの要素を指したインデックスマップを生成する第3のステップと、生成したコードブックデータおよびインデックスマップデータをグラフィックスメモリに格納する第4のステップと、上記ブロック処理モード時に、テクスチャ座標から領域ID、ブロックID、およびオフセットを算出する第5のステップと、算出したIDデータに応じて必要なコードブックを上記グラフィックスメモリから読み出し、算出した領域ID、ブロックIDに対応するインデックスデータを選択する第6のステップと、コードブックから選択したインデックスに対応するブロックを抽出する第7のステップと、抽出ブロックから1テクセルを切り出す第8のステップとを有する。
【0024】
本発明によれば、たとえば第1の処理回路において、ブロック処理モードの前処理として一つのテクスチャを複数領域に分割してエンコードが行われる。そして、各分割領域に対するコードブックが生成される。このコードブックの生成は、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるようにエンコードされる。
次いで、全てのコードブックが生成された後、対象領域を構成する各ブロックについても最も距離の小さいコードブックエントリが求られて、インデックスマップが生成される。
これら生成されたコードブックデータおよびインデックスマップデータは、メグラフィックスメモリに格納される。
【0025】
次に、ブロック処理モード時には、ID算出回路において、テクスチャ座標から領域ID、ブロックID、およびオフセットが算出され、IDデータがコードブック設定回路およびインデックスキャッシュに出力される。
コードブック設定回路において、必要なコードブックが読み込まれているか否かの判別が行われ、読み込まれていなければ、たとえばコードブック読み込みリクエストが出力されて、グラフィックスメモリから読み出されたコードブックがコードブックバッファに読み込まれる。
そして、インデックスキャッシュにおいて、ID算出回路によるIDデータが示す領域ID、ブロックIDに対応するインデックスデータが選択され、コードブックバッファに出力される。
コードブックバッファにおいて、インデックスに対応するブロックが抽出され、出力回路において、ブロックから1テクセルを切り出して出力される。
【0026】
【発明の実施の形態】
以下、本実施形態においては、パーソナルコンピュータなどに適用される、任意の3次元物体モデルに対する所望の3次元画像をCRT(Cathode Ray Tube)などのディスプレイ上に高速に表示する3次元コンピュータグラフィックスシステムについて説明する。
【0027】
図1は、本発明に係る画像処理装置としての3次元コンピュータグラフィックスシステム10のシステム構成図である。
【0028】
3次元コンピュータグラフィックスシステム10は、立体モデルを単位図形である三角形(ポリゴン)の組み合わせとして表現し、このポリゴンを描画することで表示画面の各画素のカラーを決定し、ディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、3次元コンピュータグラフィックスシステム10では、平面上の位置を表現する(x,y)座標の他に、奥行きを表すz座標を用いて3次元物体を表し、この(x,y,z)の3つの座標で3次元空間の任意の一点を特定する。
【0029】
図1に示すように、3次元コンピュータグラフィックスシステム10は、メインプロセッサ11、メインメモリ12、I/Oインタフェース回路13、およびレンダリング回路14が、メインバス15を介して接続されている。
以下、各構成要素の機能について説明する。
【0030】
メインプロセッサ11は、たとえば、アプリケーションの進行状況などに応じて、メインメモリ12から必要なグラフィックデータを読み出し、このグラフィックデータに対して、座標変換、クリッピング(Clipping)処理、ライティング(Lighting)処理などのジオメトリ(Geometry)処理などを行い、ポリゴンレンダリングデータを生成する。
メインプロセッサ11は、ポリゴンレンダリングデータS11を、メインバス15を介してレンダリング回路14に出力する。
【0031】
I/Oインタフェース回路13は、必要に応じて、外部から動きの制御情報またはポリゴンレンダリングデータなどを入力し、これをメインバス15を介してレンダリング回路14に出力する。
【0032】
レンダリング回路14に入力されるポリゴンレンダリングデータは、ポリゴンの各3頂点の(x,y,z,R,G,B,α,s,t,q,F)のデータを含んでいる。
ここで、(x,y,z)データは、ポリゴンの頂点の3次元座標を示し、(R,G,B)データは、それぞれ当該3次元座標における赤、緑、青の輝度値を示している。
データαは、これから描画するピクセルと、レンダリング回路14のグラフィックスメモリ(ディスプレイバッファ)に既に記憶されているピクセルとのR,G,Bデータのブレンド(混合)係数を示している。
(s,t,q)データのうち、(s,t)は、対応するテクスチャの同次座標を示しており、qは同次項を示している。ここで、「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、実際のテクスチャ座標データ(u,v)が得られる。
レンダリング回路14のグラフィックスメモリ(具体的にはテクスチャバッファ)に記憶されたテクスチャデータへのアクセスは、テクスチャ座標データ(u,v)を用いて行われる。
Fデータは、フォグのα値を示している。
すなわち、ポリゴンレンダリングデータは、三角形の各頂点の物理座標値と、それぞれの頂点のカラーとテクスチャデータである。
【0033】
以下、レンダリング回路14について詳細に説明する。
【0034】
図1に示すように、レンダリング回路14は、線形補間演算のための初期設定演算ブロックとしてのDDA(Digital Differential Analyzer) セットアップ回路141、線形補間処理ブロックとしてのトライアングルDDA回路142、テクスチャエンジン回路143、ベクトル量子化(VQ;Vector Quantization)回路144、メモリインタフェース(I/F)回路144、フィルタ回路145、たとえばDRAMからなるグラフィックスメモリ146、およびCRTコントロール回路147を有している。そして、テクスチャエンジン回路143、VQ回路144、およびメモリインタフェース(I/F)回路145により第1および第2の処理回路が構成される。
【0035】
以下、レンダリング回路14の各ブロックの構成および機能について、図面に関連付けて順を追って説明する。
【0036】
DDAセットアップ回路141は、後段のトライアングルDDA回路142において物理座標系上の三角形の各頂点の値を線形補間して、三角形の内部の各画素(ピクセル)のカラーと奥行き情報(深さ情報)を求めるに先立ち、ポリゴンレンダリングデータS11が示す(z,R,G,B,α,s,t,q,F)データについて、三角形の辺と水平方向の差分などを求めるセットアップ演算を行う。
このセットアップ演算は、具体的には、開始点の値と終点の値と、開始点と終点との距離を用いて、単位長さ移動した場合における、求めようとしている値の変分を算出する。
DDAセットアップ回路141は、算出した変分データを含むプリミティブに関する情報としてのセットアップデータS141をトライアングルDDA回路142に出力する。
【0037】
DDAセットアップ回路141の機能について図2に関連付けてさらに説明する。
上述したように、DDAセットアップ回路141の主な処理は、前段のジオメトリ処理を経て物理座標にまで落ちてきた各頂点における各種情報(カラー、テクスチャ座標)の与えられた三頂点P0(x0,y0)、P1(x1,y1)、P2(x2,y2)により構成される三角形内部で変分を求めて、後段の線形補間処理の基礎デ−タを算出することである。
三角形の描画はひとつひとつのピクセルの描画に集約されるが、そのために描画開始点における最初の値を求める必要がある。
最初の描画点における各種情報は、頂点からその最初の描画点までの水平距離に水平方向の変分を掛けた値と、垂直距離に垂直方向の変分を掛けた値を足し合わせたものとなる。いったん目的の三角形の内部の一つの整数格子上の値が求まれば、対象の三角形内部のその他の格子点における値は変分の整数倍で求めることが可能となる。
【0038】
三角形の各頂点データは、たとえばx,y座標が16ビット、z座標が24ビット、RGBカラー値が各12ビット(=8+4)、s,t,qテクスチャ座標は各32ビット浮動少数値(IEEEフォーマット)等で構成される。
【0039】
なお、このDDAセットアップ回路141は、従来のようにDSP構造ではなく、ASIC手法により実装している。
具体的には、図3に示すように、多段に配置したレジスタ(REG)1411−1〜1413間に複数の演算ユニットを並列に配置した演算ユニット群1412−1〜1412−3を挿入したフルデータパスロジック、換言すれば、同期パイプライン方式の時間並列構造として構成されている。
【0040】
トライアングルDDA回路142は、DDAセットアップ回路141から入力した変分データを含むプリミティブに関する情報としてのセットアップデータS141を基に、三角形内部の各画素における線形補間された(z,R,G,B,α,s,t,q,F)データを算出する。
トライアングルDDA回路142は、各ピクセルの(x,y)データと、当該(x,y)座標における(z,R,G,B,α,s,t,q,F)データとを、DDAデータ(補間データ)S142としてテクスチャエンジン回路143に出力する。
たとえば、トライアングルDDA回路142は、並行して処理を行う矩形内に位置する8(2×4)ピクセル分のDDAデータS142をテクスチャエンジン回路143に出力する。
【0041】
すなわち、トライアングルDDA回路142は、ポリゴンの頂点毎に求められた画像パラメータに基づいてポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間するラスタライズ処理(ラスタライゼーション:Rasterization)を行う。
具体的には、トライアングルDDA回路142は、各種データ(z,テクスチャ座標、カラーなど)をラスタライズする。
【0042】
テクスチャエンジン回路143は、「s/q」および「t/q」の算出処理、テクスチャ座標データ(u,v)の算出処理、グラフィックスメモリ146からの(R,G,B)データの読み出し処理、および混合処理(αブレンディング処理)を順にパイプライン方式で行う。
なお、テクスチャエンジン回路143は、たとえば所定の矩形内に位置する複数(たとえば4あるいは8)ピクセルについての処理を同時に並行して行う。
【0043】
テクスチャエンジン回路143は、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とを行う。
テクスチャエンジン回路143には、たとえば図示しない除算回路が並列処理するピクセル数分だけ(たとえば8個)設けられており、8ピクセルについての除算「s/q」および「t/q」が同時に行われる。また、8ピクセルのうち代表点からの補間演算処理を行うように実装することも可能である。
【0044】
また、テクスチャエンジン回路143は、除算結果である「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、テクスチャ座標データ(u,v)を生成する。
また、テクスチャエンジン回路143は、メモリI/F回路145を介して、グラフィックスメモリ146に、生成したテクスチャ座標データ(u,v)を含む読み出し要求を出力し、メモリI/F回路145を介して、グラフィックスメモリ146に含まれるテクスチャバッファに記憶されているテクスチャデータを読み出すことで、(s,t)データに対応したテクスチャアドレスに記憶された(R,G,B,α)データを得る。
テクスチャエンジン回路143は、読み出した(R,G,B,α)データの(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとを、読み出したαデータが示す割合で混合し(それぞれ掛け合わせるなどして)、ピクセルデータS143を生成する。
テクスチャエンジン回路143は、このピクセルデータをピクセルのカラー値としてVQ回路144に出力する。
【0045】
なお、グラフィックスメモリ146に含まれるテクスチャバッファには、MIPMAP(複数解像度テクスチャ)などの複数の縮小率に対応したテクスチャデータが記憶されている。ここで、何れの縮小率のテクスチャデータを用いるかは、所定のアルゴリズムを用いて、前記三角形単位で決定される。
【0046】
テクスチャエンジン回路143は、フルカラー方式の場合には、テクスチャバッファから読み出された(R,G,B,α)データを直接用いる。
一方、テクスチャエンジン回路143は、インデックスカラー方式の場合には、あらかじめ作成しておいたカラーインデックステーブルのデータを、テクスチャカラールックアップテーブル(CLUT)バッファより内蔵するSRAM等で構成した一時保管バッファに転送しておいて、このカラールックアップテーブルを用いて、テクスチャバッファから読み出したカラーインデックスに対応する(R,G,B)データを得る。
たとえばカラールックアップテーブルがSRAMで構成された場合、カラーインデックスをSRAMのアドレスに入力すると、その出力には実際の(R,G,B)データが出てくるといった使い方となる。
【0047】
ここで、いわゆるテクスチャマッピング処理について、図4および図5に関連付けてさらに説明する。
図4は、テクスチャエンジン回路143におけるテクスチャマッピング処理回路の構成例を示すブロック図であり、図5は、実際のテクスチャマッピング処理をイメージ的に示す図である。
【0048】
このテクスチャマッピング処理回路は、DDA回路1431,1432、テクスチャ座標算出回路(Div)1433、MIPMAPレベル算出回路1434、フィルタ回路1435、第1の合成回路(FUNC)1436、および第2の合成回路(FOG)1437を有している。
【0049】
このテクスチャマッピング処理回路においては、図5(A)に示すように、DDA回路1431,1432において、三角形の内部で線形補間されたテクスチャの同時座標s、t、qを用いて、デカルト座標でのテクスチャの実際のアドレスに変換する(qでの除算)。
さらにMIPMAP等を行う場合は、MIPMAPレベル算出回路1434においてMIPMAPのレベルの算出を行う。そして、図5(B)に示すように、テクスチャ座標算出回路1433においてテクスチャ座標の算出を行う。
また、フィルタ回路1435において、グラフィックスメモリ146に含まれるテクスチャバッファからそれぞれのレベルのテクスチャデータを読み出し、そのまま使うポイントサンプリング(Point Sampling)または、bi-Linea(4近傍)補間、Tri-Linea 補間等を行う。
そこで得られたテクスチャカラーに対して次の処理を行う。すなわち、第1の合成回路1436において、入力された物体カラーとテクスチャカラーを合成し、さらに第2の合成回路1437でそれにフォグカラーを合成して、最終的に描画するピクセルのカラーを決定する。
【0050】
VQ(ベクトル量子化)回路144は、通常の処理モードの場合には、テクスチャエンジン回路143によるピクセルデータS143をメモリI/F回路135に供給し、メモリI/F回路145によりグラフィックスメモリ146から読み出された(R,G,B,α)データ等をテクスチャエンジン回路143に供給する。
【0051】
VQ回路144は、VQ圧縮テクスチャを使うブロック処理モードとしてのVQモードに対応すべく、まず、前処理として、たとえば上位装置側で用意されたテクスチャ用の画像を、処理単位が複数ピクセルのブロック(たとえば2×2、4×4)を一つのベクトルとみなして、後で詳述するようなエンコード処理を行って圧縮し、メモリI/F回路145を介してグラフィックスメモリ146に格納する。
エンコード処理の構成要素としては、ルックアップテーブルに相当するコードブック、およびコードブックの要素を指したブロック毎に設定されるインデックスを含み、VQ回路144は、コードブックおよびインデックスデータを含む圧縮データをメモリI/F回路145を介してグラフィックスメモリ146に格納する。
【0052】
そして、VQ回路144は、キャッシュメモリを含み、VQモード時に、メモリI/F回路145を介してVQ圧縮テクスチャデータを読み出して、以下に詳述するデコード処理を行って、デコード後のテクスチャデータに基づき、グラフィックス処理を行う。
すなわち、(s,t)データに対応したテクスチャアドレスに記憶された(R,G,B,α)データを得、読み出した(R,G,B,α)データの(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとを、読み出したαデータが示す割合で混合し(それぞれ掛け合わせるなどして)、ピクセルデータ(テクセルデータ)S144を生成する。
VQ回路144は、このピクセルデータS144をピクセルのカラー値としてメモリI/F回路回路145に出力する。
【0053】
ここで、まずVQ圧縮テクスチャを使うVQモードに対応したエンコード処理の基本概念および具体的な処理について説明する。
【0054】
画像データのエンコードは、デコード時にコードブックがキャッシュ内に収まっている必要があることから、コードブックの容量が大きいことは好ましくない。
そこで、本実施形態では、基本的には一つのテクスチャを複数領域に分割してエンコードする。これにより、一つの領域当たりのコードブックは小さくできる。
しかし、境界付近でバイリニアフィルタ(4近傍フィルタ)をかけると、最悪で4領域のコードブックが必要となってしまう。
これでは、分割した意味がないことから、境界付近で使用するエントリは隣接領域のコードブックにも持たせるようにエンコードする。
【0055】
次に、具体的なエンコード処理について説明する。
【0056】
図6は、一つのテクスチャを複数領域に分割してエンコードする場合のコードブックの持ち方、およびエンコードの手順を説明するための図である。
図6の例では、一つのテクスチャを3×3の9個の領域DV1〜DV9に分割した場合である。
【0057】
コードブックは、破線で分割した9個の各分割領域DV1〜DV9単位で保持する。
そして、4つの分割領域でコードブックエントリが共有されるA部(右上がりのハッチングを施した部分)RGNA1〜RGNA4、2つの分割領域でコードブックエントリが共有されるB部(左上がりのハッチングを施した部分)RGNB1〜RGNB12および残りのC部(空白の部分)に区分けされている。
【0058】
最小で4ブロックのA部RGNA1で使われているエントリは、隣接した4つの分割領域DV1,DV2,DV4,DV5で共有されている。
A部RGNA2で使われているエントリは、隣接した4つの分割領域DV3,DV3,DV5,DV6で共有されている。
A部RGNA3で使われているエントリは、隣接した4つの分割領域DV4,DV5,DV7,DV8で共有されている。
A部RGNA4で使われているエントリは、隣接した4つの分割領域DV5,DV6,DV8,DV9で共有されている。
【0059】
B部RGNB1で使われているエントリは、隣接した2つの分割領域DV1とDV2で共有されている。
B部RGNB2で使われているエントリは、隣接した2つの分割領域DV2とDV3で共有されている。
B部RGNB3で使われているエントリは、隣接した2つの分割領域DV4とDV5で共有されている。
B部RGNB4で使われているエントリは、隣接した2つの分割領域DV5とDV6で共有されている。
B部RGNB5で使われているエントリは、隣接した2つの分割領域DV7とDV8で共有されている。
B部RGNB6で使われているエントリは、隣接した2つの分割領域DV8とDV9で共有されている。
B部RGNB7で使われているエントリは、隣接した2つの分割領域DV1とDV4で共有されている。
B部RGNB8で使われているエントリは、隣接した2つの分割領域DV2とDV5で共有されている。
B部RGNB9で使われているエントリは、隣接した2つの分割領域DV3とDV6で共有されている。
B部RGNB10で使われているエントリは、隣接した2つの分割領域DV4とDV7で共有されている。
B部RGNB11で使われているエントリは、隣接した2つの分割領域DV5とDV8で共有されている。
B部RGNB12で使われているエントリは、隣接した2つの分割領域DV6とDV9で共有されている。
【0060】
ここで、エンコードに際しては、各分割領域DV1〜DV9で合計nエントリを使い、そのうち、A部分でaエントリ、B部分でbエントリを使うとする。
【0061】
図7は、本実施形態に係るエンコード処理を説明するためのフローチャートである。
【0062】
まず、ステップST1において、A部分をaエントリでエンコード(圧縮)する)。
ステップST2において、生成したaエントリを隣接するB部分のコードブックにコピーする。
次に、ステップST3において、B部分をbエントリでエンコード(圧縮)する。この内訳は、a×(隣接しているA部分の数、図6の例では1〜2)+α(新エントリ)である。
ステップST4において、生成したbエントリを隣接するC部分のコードブックにコピーする。
次に、ステップST5において、C部分をnエントリでエンコード(圧縮)する。この内訳は、b×(隣接しているB部分の数、図6の例では2〜4)−a×(隣接しているA部分の数、図6の例では1〜4)+α(新エントリ)である。
【0063】
なお、各部のエンコード方式として、階層型クラスタリング、再起分割、LBG等、任意の方式を採用可能である。
【0064】
図8は、階層型クラスタリングの処理のフローチャートを示す図である。
ここでは、たとえば一つのブロックを一つのベクトルとみなす。複数ピクセル(たとえば4個)の2×2のブロックでそれぞれRGBαの4要素を持つ場合、16次元のベクトルとなる。
【0065】
本階層型クラスタリングにおいては、コードブックを生成し、インデックスマップを生成する。
なお、インデックスマップとは、各ブロックがコードブックのどのエントリを参照しているかを示すインデックスである。
【0066】
まず、コードブックを生成するに当たって、ステップST11において、要素iを定義済みエントリの数に設定する。
なお、ベクトルの集合の初期値は、対象領域を構成する各ブロック+定義済みのベクトルである。
定義済みベクトルは、変更不可のベクトルで、共有部分用として前のフェーズで定義したベクトルをいう。
【0067】
次に、ステップST12において、ベクトルを一つ減らし、ステップST13で処理要素を一つ進める。
次に、ステップST14において、処理要素iがエントリ数以下であるか否かの判別を行う。
以上の処理を、ステップST14において、処理要素iがエントリ数に達したと判別されるまで、繰り返し行って、上述各分割領域DV1〜DV9に対するコードブックを生成する。
全てのコードブックを生成した後、ステップST15において、対象領域を構成する各ブロックについても最も距離の小さいコードブックエントリを求め、インデックスマップを生成する。
【0068】
なお、ベクトルの距離は、各要素の差の2乗の和の平方根により求まる。
実際には、順番さえ分かっていればよいことから、次式のように平方根は省略して、各ベクトルの距離の大小を比較する。この値の誤差を2乗和という。
【0069】
【数1】
Σ(V1〔i〕−V2〔i〕)2 …(1)
【0070】
本実施形態に係るエンコード処理において、ベクトルを削除していくことによりVQ圧縮処理を行う。
【0071】
図9は、本実施形態に係るエンコード処理においてVQ圧縮処理を行うためにベクトルを削除する手順を説明するためのフローチャートである。
なお、vec〔i〕は置換前のベクトル1の処理要素、vec〔j〕は置換前のベクトル2の処理要素をそれぞれ示している。
【0072】
ステップST21において、処理要素i,jをそれぞれ0に初期化する。
ステップST21において、vec〔i〕を置換前のベクトル1、vec〔j〕を置換前のベクトル2とする。
そして、ステップST23において、ベクトル1およびベクトル2の両方が定義済みベクトルであるか否かの判別を行う。
ステップST23において、両方が定義済みベクトルであると判別した場合には、ステップST24において、要素jがN−1以下であるか否かの判別を行う。
ステップST23において、jがN−1以下であると判別した場合には、ステップST25において処理要素jを一つ進めて、iとjが等しくなるまで(ST26)、ステップST24,ST25の処理を繰り返す。
そして、ステップST26において、iとjが等しくなったと判別した場合には、ステップST22の処理に戻る。
【0073】
一方、ステップST24において、jがN−1以上であると判別した場合には、ステップST27において、要素iがN−1以下であるか否かの判別を行う。
ステップST27において、iがN−1以下であると判別した場合には、ステップST28において処理要素jを一つ進めて、jを0にリセットとして、ステップST22の処理に戻る。
【0074】
ステップST23において、ベクトル1およびベクトル2の両方が定義済みベクトルでないと判別した場合には、ステップST29において、片方が定義済みベクトルであるか否かの判別を行う。
ステップST29において、片方が定義済みベクトルであると判別した場合には、ステップST30において、定義済みでない方のベクトルが置換後のベクトル置換による誤差の2乗和を計算し、ステップST24の処理に移行する。
【0075】
一方、ステップST29において、片方が定義済みベクトルでないと判別した場合には、ステップST31において、ペアの重心ベクトルが置換後のベクトル置換による誤差の2乗和を計算し、ステップST24の処理に移行する。
ここで、重心ベクトルとは入力ベクトルの平均である。ただし、元からあったベクトルでななく、ペアを置き換えたベクトルであった場合、元になったベクトルの個数分重み付けする。
たとえば、RがP,Qの重心ベクトル、SがP,Rの重心ベクトルであるとすると、R,Sは次式のように求められる。
【0076】
【数2】
R=(P+Q)/2
S=(P+2R)/3=(2P+Q)/3
【0077】
そして、ステップST27において、iがN−1以上になったと判別した場合、ステップST32において、置換による誤差の2乗和が最も小さくなるペアの置換を行う。
以上のようにして、ベクトルの削減を行う。
【0078】
次に、具体的なエンコード例を図10〜図14に関連付けて説明する。
この例では、図10に示すように、16×16テクスチャで32ビットカラー、縦横2×2のそれぞれ2つのブロック(分割領域)DV11,DV12,DV13,DV14に分割している場合である。
ここでは、分割領域DV11を例に挙げて説明する。
【0079】
まず、A部については、図11に示すように、元画像IMA1〜IMA4について4エントリのまま圧縮をしない。したがって、コードブックCBに対してそのままインデックスIDX1,2,3,4が付与される。
【0080】
B部については、図12に示すように、分割領域DV11とDV12との隣接領域RGNB11の6つの元画像IMB1〜IMB6について1エントリ追加して6つのコードブックを生成し、それぞれにインデックスIDX1〜6が付与される。
また、分割領域DV11とDV12との隣接領域RGNB11の6つの元画像IMBについて1エントリ追加して、5つのコードブックCBを生成する。生成したコードブックのうち4つは、隣接領域RGNB11の場合と同様のコードブックが生成され、これら4つのコードブックCBに対してはそれぞれにインデックスIDX1〜4が付与され、残りの一つのコードブックCBにインデックスIDX6が付与される。
すなわち、B部については、インデックスIDX1〜4はA部のインデックスと共用し、インデックスIDX5を隣接領域RGNB11用に生成し、インデックスIDX6を隣接領域RGNB12用に生成する。
【0081】
C部については、図13に示すように、9つの元画像IMC1〜IMC9についえ2エントリ追加して、8つのコードブックを生成し、それぞれにインデックスIDX1〜8が付与される。
すなわち、C部については、インデックスIDX1〜4はA部のインデックスと共用し、インデックスIDX5を隣接領域RGNB11と共用し、インデックスIDX6を隣接領域RGNB12と共用し、インデックスIDX7,8をC部用に生成する。
【0082】
以上の処理により分割領域DV11は、16ブロックから8ブロック+インデックスに圧縮される。
インデックスが1バイトであるとすると、256(8×8×4)バイトから144(8×4×4+4×4)バイトに圧縮される。
以上のエンコード、すなわち圧縮の結果、図14(A)に示すようなデータが図14(B)に示すようになる。
なお、この例では、テクスチャが小さいため圧縮率が小さいが、さらに大きなテクスチャであるならば圧縮率がさらに大きくなる。
【0083】
次に、VQ圧縮テクスチャに対するデコード処理について説明する。
このデコード処理に必要なものは、コードブック、インデックスマップ、領域ID、ブロックID、およびブロック内オフセットである。
コードブックに関しては、アクセスパターンに規則性がないため、全て読み込んでおく必要がある。
インデックスマップは、上述したように、各ブロックがコードブックのどのエントリを参照しているかを示すインデックスであり、アクセスパターンは通常のテクスチャとほぼ同様である。ブロック単位になっている分、より再利用性が高い。また、インデックスマップは、キャッシュを使ってアクセスする。このキャッシュは、非圧縮時は通常の処理用キャッシュとして使用することが可能である。
また、本実施形態では、領域ID、ブロックID、およびブロック内オフセットはテクスチャ座標から算出する。
【0084】
次に、VQ回路144におけるVQデコード回路の具体的な構成および機能についてさらに詳細に説明する。
【0085】
図15は、本実施形態に係るVQデコード回路の具体的な構成例を示すブロック図である。
【0086】
本VQデコード回路144Aは、図15に示すように、インタフェース(I/F)回路1441、ID算出回路1442、コードブック設定回路1443、インデックスキャッシュ1444、コードブックバッファ1445、およびテクセル出力回路1446を有している。
【0087】
I/F回路1441は、メモリI/F回路145とのデータの授受、具体的に、メモリI/F回路145を介してグラフィックスメモリ146からデコード処理のためのテクスチャ座標(u,v)をID算出回路1442に供給し、インデックスデータをインデックスキャッシュ1443に供給し、コードブックデータをコードブックバッファ1445に供給し、コードブック設定回路1443のコードブック読み込みリクエスト、あるいはテクセル出力回路1446によるテクセルをメモリI/F回路145に出力する。
【0088】
ID算出回路1442は、I/F回路1441を介してメモリI/F回路145によりグラフィックスメモリ146から読み出されたテクスチャ座標(u,v)、1領域当たりのブロック数、ブロックサイズに基づいて、領域ID、ブロックID、およびブロック内オフセットを算出し、算出した各IDデータS1442をコードブック設定回路1443およびインデックスキャッシュ1444に出力する。
【0089】
図16は、ID算出回路1442の具体的な処理を説明するためのフローチャートである。
図16において、u’,v’はブロックの数、area u,area vは領域ID、block u,block vはブロックID、offset u,offset vはオフセットをそれぞれ示している。
また、演算は全て整数演算であり、%は剰余を示している。
【0090】
ID算出回路1442は、まず、ステップST31において、テクスチャ座標(u,v)、1領域当たりのブロック数(横:aw,縦:ah)、ブロックサイズ(横:bw,縦:bh)を入力する。
【0091】
次に、ステップS32において、テクスチャ座標uを横方向のブロックサイズbwで除算することにより、横方向のブロックの数u’を求める。同様に、テクスチャ座標vを縦方向のブロックサイズbhで除算することにより、縦方向のブロックの数v’を求める。
また、テクスチャ座標uを横方向のブロックサイズbwで除算し、商をu’,余りを横方向のオフセットoffset uとする。同様に、テクスチャ座標vを縦方向のブロックサイズbhで除算し、商をv’,余りを横方向のオフセットoffset vとする。
【0092】
次に、ステップST33において、ステップST32で求めた横方向のブロック数u’を横方向の1領域当たりのブロック数awで除算し、その商として、横方向の領域IDであるarea uを求める。同様に、ステップST32で求めた縦方向のブロック数v’を縦方向の1領域当たりのブロック数ahで除算し、その商として、縦方向の領域IDであるarea vを求める。
また、ステップST32で求めた横方向のブロック数u’を横方向の1領域当たりのブロック数awで除算し、その余りを横方向のブロックIDであるblock uとする。同様に、ステップST32で求めた縦方向のブロック数v’を縦方向の1領域当たりのブロック数ahで除算し、その余りを縦方向のブロックIDであるblock vとする。
【0093】
たとえば、1領域当たりのブロック数aw=ah=128、ブロックサイズbw=bh=2の場合、座標の下位1ビットがオフセット、次の7ビットがブロックID、それより上位のビットが領域IDとなる。
【0094】
なお、1領域当たりのブロック数とブロックサイズが共に2のべき乗の場合、除算や剰余算がビットマスクで済むので、実際には、それに対応した制限を設けることが望ましい。
【0095】
コードブック設定回路1443は、ID算出回路1442による各IDデータS1442を受けて、コードブックバッファ1445に必要なコードブックが読み込まれているか否かの判別を行い、読み込まれていない場合には、コードブック読み込みリクエストCRRQをI/F回路1441を介してメモリI/F回路145に出力する。
【0096】
図17は、コードブック設定回路1443の具体的な処理を説明するためのフローチャートである。
【0097】
コードブック設定回路1443は、ID算出回路1442による各IDデータS1442を受けて、まず、ステップST41において、領域(area u,area v)のコードブックがコードブックバッファ1445に読み込まれているか否かの判別を行う。
ステップST41において、読み込まれていると判別した場合には、コードブック読み込みリクエストCRRQの出力は行わない(何もしない)。
【0098】
一方、ステップST41において、読み込まれていないと判別した場合には、ステップST42において、隣接領域のコードブックが読み込まれているか否かの判別を行う。
ステップST42において、隣接領域のコードブックが読み込まれていると判別した場合には、ステップST43において、ブロック(block u,block v)が領域(area u,area v)と共有されているか否かの判別を行う。
ステップST43において、共有されていると判別した場合には、コードブック読み込みリクエストCRRQの出力は行わない(何もしない)。
【0099】
一方、ステップST42において隣接領域のコードブックが読み込まれていないと判別した場合、あるいはブロック(block u,block v)が領域(area u,area v)と共有されていないと判別した場合には、領域(area u,area v)のコードブックをコードブックバッファ1445に読み込むため、コードブック読み込みリクエストCRRQを出力する。
【0100】
インデックスキャッシュ1444は、インデックスマップを保持しており、ID算出回路1442によるIDデータS1442が示す領域ID、ブロックIDに対応するインデックスデータS1444をコードブックバッファ1445に出力する。
なお、非圧縮テクスチャ処理の場合には、たとえばインデックスキャッシュ1444にテクセルがそのまま入力され、他の回路は素通りする。
【0101】
コードブックバッファ1445は、1領域分のコードブックを保持し、コードブック設定回路1443のコードブック読み出しリクエストCRRQに応答したメモリI/F回路145から転送された1領域分のコードブックで更新される。
コードブックバッファ1445は、インデックスキャッシュ1444によるインデックスデータS1444に対応するコードブックデータS1445をテクセル出力回路1446に出力する。
【0102】
テクセル出力回路1446は、コードブックバッファ1445によるコードブックデータS1445を受けて1ブロック分の出たを取得し、このブロックから1テクセルを抽出して、テクセルデータS1446をI/F回路1441を介してメモリI/F回路145に出力する。
【0103】
図18は、テクセル出力回路1446の具体的な処理を説明するためのフローチャートである。
【0104】
テクセル出力回路1446は、コードブックバッファ1445によるコードブックデータS1445を受けて、まず、ステップST51において、コードブックから1ブロック分のデータを取得する。
次に、ステップST52において、ブロックのオフセット(offset u,offset v)を出力する。
【0105】
以下に、上述した構成を有するVQデコード回路の動作を、図19のフローチャートに関連付けて説明する。
【0106】
まず、ID算出回路1442において、テクスチャ座標(u,v)から領域ID、ブロックID、およびオフセットを算出する(ST61)。
次に、コードブック設定回路1443において、必要なコードブックが読み込まれていなければ、コードブック読み込みリクエストCRRQを出力して、必要なコードブックをコードブックバッファ1445に読み込ませる(ST62)。
そして、インデックスキャッシュ1444において、ID算出回路1442によるIDデータS1442が示す領域ID、ブロックIDに対応するインデックスデータS1444をコードブックバッファ1445に出力する(ST63)。
次に、コードブックバッファ1445において、インデックスに対応するブロックをテクセル出力回路1446に出力し(ST64)、テクセル出力回路1446に出力において、ブロックから1テクセルを切り出して出力する(ST65)。
【0107】
次に、具体的なデコード例を図20に関連付けて説明する。
【0108】
たとえば、テクスチャ座標(7,1)でフィルタリング処理が無い場合、図20(B)に示すようになる。
すなわち、横方向のテクスチャ座標(7)は2進数で表して「0111」となり、これは(0,3,1)となる。
同様に、縦方向のテクスチャ座標(1)は2進数で表して「0001」となり、これは(0,0,1)となる。
そして、最上位1ビットが領域ID(0,0)となる。中間の2ビットがブロックID(3,0)となり、最下位1ビットがオフセット(1,1)となる。
【0109】
また、テクスチャ座標(7.3,7.6)でバイリニアフィルタリング処理を行う場合、図20(C)に示すようになる。
すなわち、(7,7)、(7,8)、(8,7)、(8,8)の4点を補間する。ここで7は2進数で「0111」→(0,3,1)、8は2進数で「1000」→(1,0,0)となる。
この場合、図20(C)中に、T1〜T4で示すような4近傍のテクセルが必要となる。
したがって、4つの分割領域のどれかのコードブックがあれば4テクセルともデコードできる。
【0110】
メモリI/F回路145は、VQ回路144を介してテクスチャエンジン回路143から入力したピクセルデータS143に対応するzデータと、グラフィックスメモリ146に含まれるzバッファに記憶されているzデータとの比較を行い、入力したピクセルデータによって描画される画像が、前回、グラフィックスメモリ146(ディスプレイバッファ)に書き込まれた画像より、手前(視点側)に位置するか否かを判断し、手前に位置する場合には、画像データに対応するzデータでzバッファに記憶されたzデータを更新する。
また、メモリI/F回路145は、(R,G,B)データをグラフィックスメモリ(ディスプレイバッファ)146に書き込む。
【0111】
さらに、メモリI/F回路145は、今から描画しようとしているピクセルにおけるテクスチャアドレスに対応したテクスチャデータを格納しているグラフィックスメモリ146のメモリブロックをそのテクスチャアドレスより算出し、そのメモリブロックにのみ読み出し要求を出すことにより、テクスチャデータを読み出し、VQ回路144に出力する。
この場合、該当するテクスチャデータを保持していないメモリブロックにおいては、テクスチャデータの読み出しのためのアクセスが行われないため、描画により多くのアクセス時間を提供することが可能となっている。
【0112】
メモリI/F回路145は、描画においても同様に、今から描画しようとしているピクセルアドレスに対応するピクセルデータを格納しているグラフィックスメモリ146のメモリブロックに対して、該当アドレスからピクセルデータをモディファイ書き込みをするために読み出し、モディファイ後同じアドレスへ書き戻す。
隠れ面処理を行う場合には、やはり同じように今から描画しようとしているピクセルアドレスに対応する奥行きデータを格納しているメモリブロックに対して、該当アドレスから奥行きデータをモディファイ書き込みするため読み出し、必要ならばモディファイ後同じアドレスへ書き戻す。
【0113】
また、メモリI/F回路145は、テクスチャエンジン回路143あるいはVA回路144からグラフィックスメモリ146に対する、生成されたテクスチャ座標データ(u,v)を含む読み出し要求を受けた場合には、グラフィックスメモリ146に記憶された(R,G,B)データを読み出す。
また、メモリI/F回路145は、CRTコントロール回路147から表示データを読み出す要求を受けた場合には、この要求に応じて、グラフィックスメモリ146(ディスプレイバッファ)から一定の固まり、たとえば8ピクセルあるいは16ピクセル単位で表示データを読み出す。
【0114】
また、メモリI/F回路145は、たとえばVQ回路144からコードブック読み出しリクエストCRRQを受けた場合には、グラフィックスメモリ146から対応する1領域分のコードブックを読み出し、VQ回路144に出力する。
そして、メモリI/F回路145は、たとえばVQモード時には、グラフィックスメモリ146からインデックスマップを読み出し、VQ回路144のインデックスキャッシュ1444に出力する。
【0115】
メモリI/F回路145は、グラフィックスメモリ146へのアクセス(書き込みまたは読み出し)を行うが、書き込み経路と読み出し経路とが別経路として構成されている。
すなわち、書き込みの場合には書き込みアドレスADRWと書き込みデータDTWを書き込み系回路で処理されてグラフィックスメモリ146に書き込み、読み出しの場合には読み出し系回路で処理されてグラフィックスメモリ146から読み出す。
そして、メモリI/F回路145は、所定のインターリーブ方式のアドレッシングに基づいてグラフィックスメモリ146へのアクセスを、たとえば16ピクセル単位で行う。
【0116】
このようなメモリとのデータのやりとりにおいては、それまでの処理を複数並行処理することで、描画性能を向上させることができる。
特に、トライアングルDDA部分とテクスチャエンジン部分を並列実効形式で、同じ回路を設ける(空間並列)か、または、パイプラインを細かく挿入する(時間並列)ことで、複数ピクセルの同時算出を行っている。
グラフィックスメモリ146のメモリブロックは表示領域において隣接した部分は、後述するように異なるメモリブロックとなるように配置してあるので、三角形のような平面を描画する場合には面で同時に処理できることになるため、それぞれのメモリブロックの動作確率は非常に高くなっている。
【0117】
グラフィックスメモリ146は、テクスチャバッファ、ディスプレイバッファ、zバッファおよびテクスチャCLUT(Color Look Up Table) バッファとして機能する。
また、グラフィックスメモリ146は、同一機能を有する複数、たとえば4個のモジュールに分割されている。
【0118】
また、グラフィックスメモリ146には、より多くのテクスチャデータを格納するために、インデックスカラーにおけるインデックスと、そのためのカラールックアップテーブル値が、テクスチャCLUTバッファに格納されている。
インデックスおよびカラールックアップテーブル値は、上述したように、テクスチャ処理に使われる。
すなわち、通常はR,G,Bそれぞれ8ビットの合計24ビットでテクスチャ要素を表現するが、それではデータ量が膨らむため、あらかじめ選んでおいたたとえば256色等の中から一つの色を選んで、そのデータをテクスチャ処理に使う。このことで256色であればそれぞれのテクスチャ要素は8ビットで表現できることになる。インデックスから実際のカラーへの変換テーブルは必要になるが、テクスチャの解像度が高くなるほど、よりコンパクトなテクスチャデータとすることが可能となる。
これにより、テクスチャデータの圧縮が可能となり、内蔵メモリの効率良い利用が可能となる。
【0119】
さらに、グラフィックスメモリ146には、描画と同時並行的に隠れ面処理を行うため、描画しようとしている物体の奥行き情報が格納されている。
なお、表示データと奥行きデータおよびテクスチャデータの格納方法としては、たとえばメモリブロックの所定の位置、たとえば先頭から連続して表示データが格納され、次に奥行きデータが格納され、残りの空いた領域に、テクスチャの種類毎に連続したアドレス空間でテクスチャデータが格納される。
図面に関連付けて概念的に説明すると、図21(A)〜(C)に示すように、いわゆるベースポインタ(BP)で示された位置から図中FBで示す領域に、たとえば24ビット幅で表示データと奥行きデータが格納され、残りの空いた領域である8ビット幅の領域に図中TBで示すようにテクスチャデータが格納される。これらは表示データとテクスチャデータのユニファイドメモリ(Unified Memory)化ということになる。
これにより、テクスチャデータを効率よく格納できることになる。
【0120】
以上のように、DDAセットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、VQ回路144、メモリI/F回路145等における所定を経て、最終的なメモリアクセスがピクセル(Pixel;PictureCell Element) という描画ピクセル単位になる。
【0121】
CRTコントロール回路147は、与えられた水平および垂直同期信号に同期して、図示しないCRTに表示する表示アドレスを発生し、グラフィックスメモリ146に含まれるディスプレイバッファから表示データを読み出す要求をメモリI/F回路145に出力する。
この要求に応じて、メモリI/F回路145は、グラフィックスメモリ146(ディスプレイバッファ)から一定の固まりで表示データを読み出す。
CRTコントロール回路147は、グラフィックスメモリ146から読み出した表示データを記憶するたとえばFIFO回路を内蔵し、一定の時間間隔で、RGBのインデックス値を発生する。
CRTコントロール回路147は、各インデックス値に対応するR,G,Bデータを記憶しており、発生したRGBのインデックス値に対応するデジタル形式のR,G,Bデータを、図示しないD/Aコンバータ(Digital/Analog Converter)に転送し、アナログ形式のR,G,Bデータを生成する。
CRTコントロール回路147は、この生成されたR,G,Bデータを図示しないCRTに出力する。
【0122】
次に、図1の3次元グラフィックスシステムの上記構成による動作を、図22のフローチャートに関連付けて説明する。
【0123】
3次元コンピュータグラフィックスシステム10においては、グラフィックス描画等のデータは、メインプロセッサ11のメインメモリ12、あるいは外部からのグラフィックスデータを受けるI/Oインタフェース回路13からメインバス15を介してレンダリング回路14に与えられる。
なお、必要に応じて、グラフィックス描画等のデータは、メインプロセッサ11等において、座標変換、クリップ処理、ライティング処理等のジオメトリ処理が行われる(ST71〜ST73)。
ジオメトリ処理が終わったグラフィックスデータは、三角形の各3頂点の頂点座標x,y,z、輝度値R,G,B、描画しようとしているピクセルと対応するテクスチャ座標s,t,qとからなるポリゴンレンダリングデータS11となる。
このポリゴンレンダリングデータS11は、レンダリング回路14のDDAセットアップ回路141に順々に転送される。
【0124】
DDAセットアップ回路141においては、ポリゴンレンダリングデータS11に基づいて、三角形の辺と水平方向の差分などを示す変分データが生成される。
具体的には、開始点の値と終点の値、並びに、その間の距離を用いて、単位長さ移動した場合における、求めようとしている値の変化分である変分が算出され、変分データを含むセットアップデータS141としてトライアングルDDA回路142に出力される(ST74)。
【0125】
トライアングルDDA回路142においては、変分データを含むセットアップデータS141を用いて、三角形内部の各ピクセルにおける線形補間された(z,R,G,B,α,s,t,q,F)データが算出される。
そして、この算出された(z,R,G,B,α,s,t,q,F)データと、三角形の各頂点の(x,y)データとが、DDAデータS142として、トライアングルDDA回路142からテクスチャエンジン回路143に出力される。
すなわち、トライアングルDDA142においては、ポリゴンの頂点毎に求められた画像パラメータに基づいてポリゴン内部に含まれるすべてのピクセルの画像パラメータ(z,テクスチャ座標、カラーなど)を補間するラスタライズ処理が行われる(ST75)。
そして、トライアングルDDA回路142において、各種データ(z,テクスチャ座標、カラーなど)がラスタライズされた、DDAデータS142としてテクスチャエンジン回路143に出力される。
【0126】
テクスチャエンジン回路143においては、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とが行われる。そして、除算結果「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEが乗算され、テクスチャ座標データ(u,v)が生成される。
【0127】
次に、テクスチャエンジン回路143からメモリI/F回路145に対して生成されたテクスチャ座標データ(u,v)を含む読み出し要求が出力され、メモリI/F回路145を介して、グラフィックスメモリ146に記憶された(R,G,B,α)データが読み出される。
次に、テクスチャエンジン回路143において、読み出した(R,G,B)データの(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとがαデータが示す割合で掛け合わされ、ピクセルデータとして生成される。
テクスチャマッピング処理後のピクセルデータは、テクスチャエンジン回路143からVQ回路144を介してメモリI/F回路145に出力される(ST76)。
【0128】
そして、メモリI/F回路145において、テクスチャエンジン回路143から入力したピクセルデータに対応するzデータと、zバッファに記憶されているzデータとの比較が行われ、入力したピクセルデータS145によって描画される画像が、前回、ディスプレイバッファに書き込まれた画像より、手前(視点側)に位置するか否かが判断される。
判断の結果、手前に位置する場合には、画像データに対応するzデータでzバッファに記憶されたzデータが更新される。
【0129】
次に、メモリI/F回路145において、(R,G,B)データがグラフィックスメモリ146のディスプレイバッファに書き込まれる。
これら書き込む(更新も含む)べきデータは、書き込み系回路を介し所定のメモリに対して並列的に書き込まれる(ST77)。
【0130】
メモリI/F回路145においては、今から描画しようとしているピクセルにおけるテクスチャアドレスに対応したテクスチャを格納しているグラフィックスメモリ146のメモリブロックがそのテクスチャアドレスにより算出され、そのメモリブロックにのみ読みだし要求が出され、テクスチャデータが読み出される。
この場合、該当するテクスチャデータを保持していないメモリブロックにおいては、テクスチャ読み出しのためのアクセスが行われないため、描画により多くのアクセス時間を提供することが可能となっている。
【0131】
描画においても同様に、今から描画しようとしているピクセルアドレスに対応するピクセルデータを格納しているメモリブロックに対して、該当アドレスからピクセルデータがモディファイ書き込み(Modify Write)を行うために読み出され、モディファイ後、同じアドレスへ書き戻される。
【0132】
隠れ面処理を行う場合には、やはり同じように今から描画しようとしているピクセルアドレスに対応する奥行きデータを格納しているメモリブロックに対して、該当アドレスから奥行きデータがモディファイ書き込み(Modify Write)を行うために読み出され、必要ならばモディファイ後、同じアドレスへ書き戻される。
【0133】
そして、図示しないCRTに画像を表示する場合には、メモリI/F回路145によりCRTコントロール回路147から表示データが読み出される。
そして、CRTコントロール回路147において、与えられた水平垂直同期周波数に同期して、表示アドレスが発生され、メモリI/F回路145へ表示データ転送の要求が出される。
メモリI/F回路145では、その要求に従い、一定のまとまった固まりで、表示データがCRTコントロール回路147に転送される。
CRTコントロール回路147では、図示しないディスプレイ用FIFO等にその表示データが貯えられ、一定の間隔でRGBのインデックス値が生成される。
CRTコントロール回路147においては、内部にRGBのインデックスに対するRGB値が記憶されていて、インデックス値に対するRGB値が図示しないD/Aコンバータへ転送される。
そして、D/Aコンバータでアナログ信号に変換されたRGB信号がCRTへ転送される(ST78)。
【0134】
以上の処理は非圧縮テクスチャ処理の場合であるが、VQ圧縮テクスチャを行うVQモードの場合には、ステップST76,ST77の処理が以下のように行われる。
すなわち、VQモード時には、前処理として一つのテクスチャを複数領域に分割してエンコードが行われる。そして、各分割領域に対するコードブックが生成される。このコードブックの生成は、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるようにエンコードされる。
次いで、全てのコードブックが生成された後、対象領域を構成する各ブロックについても最も距離の小さいコードブックエントリが求られて、インデックスマップが生成される。
これら生成されたコードブックデータおよびインデックスマップデータは、メモリI/F回路145によりグラフィックスメモリ146に格納される。
【0135】
次に、VQモード時には、ID算出回路1442において、テクスチャ座標(u,v)から領域ID、ブロックID、およびオフセットが算出され、IDデータS1442がコードブック設定回路1443およびインデックスキャッシュ1444に出力される。
コードブック設定回路1443において、必要なコードブックが読み込まれているか否かの判別が行われ、読み込まれていなければ、コードブック読み込みリクエストCRRQが出力されて、メモリI/F回路145によるグラフィックスメモリ146から読み出されたコードブックがコードブックバッファ1445に読み込まれる。
そして、インデックスキャッシュ1444において、ID算出回路1442によるIDデータS1442が示す領域ID、ブロックIDに対応するインデックスデータS1444がコードブックバッファ1445に出力される。
コードブックバッファ1445において、インデックスに対応するブロックがテクセル出力回路1446に出力され、テクセル出力回路1446において、ブロックから1テクセルを切り出して出力される。
【0136】
以上説明したように、本実施形態によれば、前処理として一つのテクスチャを複数領域に分割し、各分割領域に対するコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるようにエンコードし、コードブックを生成した後、対象領域を構成する各ブロックについても最も距離の小さいコードブックエントリを求めて、インデックスマップを生成し、コードブックデータおよびインデックスマップデータを、メモリI/F回路145によりグラフィックスメモリ146に格納し、また、VQモード時には、テクスチャ座標(u,v)から領域ID、ブロックID、およびオフセットを算出し、必要なコードブックが読み込まれていなければ、コードブック読み込みリクエストCRRQを出力して必要なコードブックを読み込み、算出した領域ID、ブロックIDに対応するインデックスデータを選択し、コードブックから選択したインデックスに対応するブロックを抽出し、ブロックから1テクセルを切り出すVQ回路144を設けたので、テクスチャデータを効率的に圧縮することができ、かつ、効率的に圧縮されたデータを効率的にデコードすることができ、ひいてはグラフィックスメモリの効率的な活用を実現することができる利点がある。
【0137】
なお、本実施形態では、VQ回路144はテクスチャエンジン回路143と別個のものとして説明したが、VQ回路144をテクスチャエンジン回路143に内蔵することも可能である。
【0138】
また、図1に示す3次元コンピュータグラフィックスシステム10では、ポリゴンレンダリングデータを生成するジオメトリ処理を、メインプロセッサ11で行う場合を例示したが、レンダリング回路14で行う構成にしてもよい。
【0139】
【発明の効果】
以上説明したように、本発明によれば、テクスチャデータを効率的に圧縮することができ、かつ、効率的に圧縮されたデータを効率的にデコードすることができ、ひいてはグラフィックスメモリの効率的な活用を実現することができる利点がある。
【図面の簡単な説明】
【図1】本発明に係る画像処理装置としての3次元コンピュータグラフィックスシステムのシステム構成図である。
【図2】本実施形態に係るDDAセットアップ回路の機能を説明するための図である。
【図3】本実施形態に係るDDAセットアップ回路の構成例を示す図である。
【図4】本実施形態に係るテクスチャエンジン回路におけるテクスチャマッピング処理回路の構成例を示すブロック図である。
【図5】本実施形態に係るテクスチャエンジン回路における実際のテクスチャマッピング処理をイメージ的に示す図である。
【図6】一つのテクスチャを複数領域に分割してエンコードする場合のコードブックの持ち方、およびエンコードの手順を説明するための図である。
【図7】本実施形態に係るエンコード処理を説明するためのフローチャートである。
【図8】階層型クラスタリングの処理のフローチャートを示す図である。
【図9】本実施形態に係るエンコード処理においてVQ圧縮処理を行うためにベクトルを削除する手順を説明するためのフローチャートである。
【図10】具体的なエンコード例を説明するための図である。
【図11】4領域隣接のA部の具体的なエンコード例を説明するための図である。
【図12】2領域隣接のB部の具体的なエンコード例を説明するための図である。
【図13】C部の具体的なエンコード例を説明するための図である。
【図14】エンコード結果を示す図である。
【図15】本実施形態に係るVQデコード回路の具体的な構成例を示すブロック図である。
【図16】図15のID算出回路の具体的な処理を説明するためのフローチャートである。
【図17】図15のコードブック設定回路の具体的な処理を説明するためのフローチャートである。
【図18】図15のテクセル出力回路の具体的な処理を説明するためのフローチャートである。
【図19】本実施形態に係るVQデコード回路の一連の処理手順を説明するためのフローチャートである。
【図20】本実施形態に係るVQデコード回路の具体的なデコード例を説明するための図である。
【図21】本実施形態に係るグラフィックスメモリへの表示データと奥行きデータおよびテクスチャデータの格納方法を概念的に説明するための図である。
【図22】図1の3次元コンピュータグラフィックスシステムの全体の動作を説明するためのフローチャートである。
【符号の説明】
10…3次元コンピュータグラフィックスシステム(画像処理装置)、11…メインプロセッサ、12…メインメモリ、13…I/Oインタフェース回路、14…レンダリング回路、141…DDAセットアップ回路、142…トライアングルDDA回路、143…テクスチャエンジン回路、144…ベクトル量子化(VQ)回路、144A…VQデコード回路、1441…インタフェース(I/F)回路、1442…ID算出回路、1443…コードブック設定回路、1444…インデックスキャッシュ、1445…コードブックバッファ、1446…テクセル出力回路、145…メモリインタフェース(I/F)回路、146…グラフィックスメモリ、147…CRTコントロール回路。
Claims (11)
- 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理装置であって、
グラフィックスメモリと、
上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割し、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成し、かつ、各コードブックの要素を指したインデックスマップを生成し、生成したコードブックデータおよびインデックスマップデータを上記グラフィックスメモリに格納する処理回路と
を有する画像処理装置。 - 上記処理回路は、各分割領域で合計nエントリを使い、そのうち、4つの隣接分割領域の境界領域のA部分でaエントリ、2つの隣接分割領域の境界領域の少なくとも2つのB部分でbエントリを使うとすると、A部分をaエントリでエンコードし、生成したaエントリを隣接するB部分のコードブックにコピーし、B部分をbエントリでエンコードし、生成したbエントリを隣接する対象分割領域の残りのC部分のコードブックにコピーし、C部分をnエントリでエンコードする
請求項1記載の画像処理装置。 - 各コードブックに対するインデックスは、上記A部分については、各コードブックに対応して付与し、上記B部分については上記A部分からコピーしたエントリを用いてA部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与し、上記C部分については上記B部分からコピーしたエントリを用いてAおよびB部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与する
請求項2記載の画像処理装置。 - 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理装置であって、
少なくともテクスチャに関するデータを記憶するグラフィックスメモリと、
上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割し、各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成し、かつ、各コードブックの要素を指したインデックスマップを生成し、生成したコードブックデータおよびインデックスマップデータを上記グラフィックスメモリに格納する第1の処理回路と、
上記ブロック処理モード時に、上記テクスチャ座標から領域ID、ブロックID、およびオフセットを算出し、算出したIDデータに応じて必要なコードブックを上記グラフィックスメモリから読み出し、算出した領域ID、ブロックIDに対応するインデックスデータを選択し、コードブックから選択したインデックスに対応するブロックを抽出し、ブロックから1テクセルを切り出す第2の処理回路と
を有する画像処理装置。 - 上記第2の処理回路は、上記テクスチャ座標から領域ID、ブロックID、およびオフセットを算出するID算出回路と、
上記ブロック処理モード時に、上記グラフィックスメモリからインデックスマップデータが読み込まれ、上記ID算出回路によるIDデータに対応するインデックスデータを選択するインデックスキャッシュと、
上記グラフィックスメモリから所定領域のコードブックを保持し、上記インデックスキャッシュで選択されたインデックスに対応するブロックを抽出するコードブックバッファと、
上記ID算出回路によるIDデータを受けて、上記コードブックバッファに必要なコードブックが読み込まれているか否かの判別を行い、読み込まれていない場合には、コードブック読み込みリクエストを出して上記グラフィックスメモリから必要なコードブックを上記コードブックバッファに読み込ませるコードブック設定回路と
を含む請求項4記載の画像処理装置。 - 上記処理回路は、各分割領域で合計nエントリを使い、そのうち、4つの隣接分割領域の境界領域のA部分でaエントリ、2つの隣接分割領域の境界領域の少なくとも2つのB部分でbエントリを使うとすると、A部分をaエントリでエンコードし、生成したaエントリを隣接するB部分のコードブックにコピーし、B部分をbエントリでエンコードし、生成したbエントリを隣接する対象分割領域の残りのC部分のコードブックにコピーし、C部分をnエントリでエンコードする
請求項4記載の画像処理装置。 - 各コードブックに対するインデックスは、上記A部分については、各コードブックに対応して付与し、上記B部分については上記A部分からコピーしたエントリを用いてA部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与し、上記C部分については上記B部分からコピーしたエントリを用いてAおよびB部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与する
請求項6記載の画像処理装置。 - 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理方法であって、
上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割する第1のステップと、
各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成する第2のステップと、
各コードブックの要素を指したインデックスマップを生成する第3のステップと、
生成したコードブックデータおよびインデックスマップデータをグラフィックスメモリに格納する第4のステップと
を有する画像処理方法。 - 上記第2および第3のステップでは、各分割領域で合計nエントリを使い、そのうち、4つの隣接分割領域の境界領域のA部分でaエントリ、2つの隣接分割領域の境界領域の少なくとも2つのB部分でbエントリを使うとすると、
A部分をaエントリでエンコードし、
生成したaエントリを隣接するB部分のコードブックにコピーし、
B部分をbエントリでエンコードし、
生成したbエントリを隣接する対象分割領域の残りのC部分のコードブックにコピーし、C部分をnエントリでエンコードする
請求項8記載の画像処理方法。 - 各コードブックに対するインデックスは、上記A部分については、各コードブックに対応して付与し、上記B部分については上記A部分からコピーしたエントリを用いてA部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与し、上記C部分については上記B部分からコピーしたエントリを用いてAおよびB部分と共通部分は共通のインデックスを付与するとともに追加したコードブックに対して新たなインデックスを付与する
請求項9記載の画像処理方法。 - 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、複数ピクセルのブロック単位で処理可能なブロック処理モードを有する画像処理方法であって、
上記ブロック処理モードに対応して、一つのブロックを一つのベクトルとしてみなし、複数のブロックをマトリクス状に配列した画像データを複数領域に分割する第1のステップと、
各分割領域に対する複数のコードブックを、分割領域の境界付近で使用するエントリは隣接領域のコードブックにも持たせるように生成する第2のステップと、
各コードブックの要素を指したインデックスマップを生成する第3のステップと、
生成したコードブックデータおよびインデックスマップデータをグラフィックスメモリに格納する第4のステップと、
上記ブロック処理モード時に、テクスチャ座標から領域ID、ブロックID、およびオフセットを算出する第5のステップと、
算出したIDデータに応じて必要なコードブックを上記グラフィックスメモリから読み出し、算出した領域ID、ブロックIDに対応するインデックスデータを選択する第6のステップと、
コードブックから選択したインデックスに対応するブロックを抽出する第7のステップと、
抽出ブロックから1テクセルを切り出す第8のステップと
を有する画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002122308A JP4042462B2 (ja) | 2002-04-24 | 2002-04-24 | 画像処理装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002122308A JP4042462B2 (ja) | 2002-04-24 | 2002-04-24 | 画像処理装置およびその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003317113A JP2003317113A (ja) | 2003-11-07 |
JP4042462B2 true JP4042462B2 (ja) | 2008-02-06 |
Family
ID=29537957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002122308A Expired - Fee Related JP4042462B2 (ja) | 2002-04-24 | 2002-04-24 | 画像処理装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4042462B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11875547B2 (en) | 2018-11-07 | 2024-01-16 | Kabushiki Kaisha Toshiba | Image processing apparatus, image processing method, and storage medium |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100505134B1 (ko) * | 2003-06-10 | 2005-08-02 | 한국과학기술원 | 3차원 컴퓨터 그래픽 시스템의 제산유니트 |
US7737971B2 (en) | 2004-07-01 | 2010-06-15 | Panasonic Corporation | Image drawing device, vertex selecting method, vertex selecting program, and integrated circuit |
JP4968686B2 (ja) * | 2008-01-25 | 2012-07-04 | サミー株式会社 | 画像圧縮装置、画像再生装置、および画像圧縮プログラム |
-
2002
- 2002-04-24 JP JP2002122308A patent/JP4042462B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11875547B2 (en) | 2018-11-07 | 2024-01-16 | Kabushiki Kaisha Toshiba | Image processing apparatus, image processing method, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP2003317113A (ja) | 2003-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6704018B1 (en) | Graphic computing apparatus | |
JP4564718B2 (ja) | 3−dコンピュータ・グラフィックス・レンダリングシステム | |
US8730253B2 (en) | Decomposing cubic Bezier segments for tessellation-free stencil filling | |
JP5307823B2 (ja) | データを圧縮及び解凍する方法及び装置 | |
CN1659595B (zh) | 用于编码纹理信息的方法和设备 | |
US20110310102A1 (en) | Systems and methods for subdividing and storing vertex data | |
EP1267308B1 (en) | Texturing systems for use in three-dimensional imaging systems | |
JP4704348B2 (ja) | 画像生成装置および画像生成方法 | |
US7218317B2 (en) | Mechanism for reducing Z buffer traffic in three-dimensional graphics processing | |
JP2008511074A (ja) | グラフィックスハードウェアにおける幾何学的画像の細分割 | |
JPH08161525A (ja) | 画像情報生成方法及び画像情報処理装置、並びに記録媒体 | |
WO2005101320A1 (ja) | 画像生成装置および画像生成方法 | |
KR20170035154A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
ITMI20080999A1 (it) | Modulo di renderizzazione per grafica a due dimensioni | |
JP4042462B2 (ja) | 画像処理装置およびその方法 | |
CN116261740A (zh) | 基于每个信道压缩纹理数据 | |
JP3687945B2 (ja) | 画像処理装置およびその方法 | |
CN104050619A (zh) | 具有共享边缘的模板然后覆盖路径渲染 | |
JP2005332195A (ja) | テクスチャユニット、画像描画装置、テクセル転送方法 | |
JP3979162B2 (ja) | 画像処理装置およびその方法 | |
JP3747859B2 (ja) | 画像処理装置およびその方法 | |
US7256796B1 (en) | Per-fragment control for writing an output buffer | |
Trapp et al. | Real-time screen-space geometry draping for 3d digital terrain models | |
EP0981107B1 (en) | Image processor and image processing method | |
KR100868396B1 (ko) | 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050311 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071016 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071023 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071105 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101122 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101122 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |