JP2012079338A - テクスチャマッピング装置 - Google Patents
テクスチャマッピング装置 Download PDFInfo
- Publication number
- JP2012079338A JP2012079338A JP2011277743A JP2011277743A JP2012079338A JP 2012079338 A JP2012079338 A JP 2012079338A JP 2011277743 A JP2011277743 A JP 2011277743A JP 2011277743 A JP2011277743 A JP 2011277743A JP 2012079338 A JP2012079338 A JP 2012079338A
- Authority
- JP
- Japan
- Prior art keywords
- texture
- texel
- polygon
- data
- coordinate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
【課題】 メモリMEMに格納されるテクスチャパターンデータに含まれる無駄なテクセルデータを極力削減して必要なメモリ容量を抑制できるテクスチャマッピング装置を提供する。
【解決手段】 三角形ポリゴンにマッピングされるテクスチャは、ポリゴンにマッピングされる態様でST空間に格納されるのではなく、2つの切片に分割され、かつ、1つの切片が180度回転及び移動されて、ST空間に格納される。このため、テクスチャが格納されない無駄な記憶領域を極力省くことができ、効率良く格納できるので、テクスチャを格納するメモリMEMの容量を小さくできる。
【選択図】 図19
【解決手段】 三角形ポリゴンにマッピングされるテクスチャは、ポリゴンにマッピングされる態様でST空間に格納されるのではなく、2つの切片に分割され、かつ、1つの切片が180度回転及び移動されて、ST空間に格納される。このため、テクスチャが格納されない無駄な記憶領域を極力省くことができ、効率良く格納できるので、テクスチャを格納するメモリMEMの容量を小さくできる。
【選択図】 図19
Description
本発明は、二次元空間に投影された三次元立体の各面の形状を表すための多角形状のグラフィック要素(ポリゴン)およびスクリーンに平行な矩形状のグラフィック要素(スプライト)の任意の組み合わせからなる画像を生成する画像生成装置及びその関連技術に関する。
また、本発明は、スクリーン上の三次元モデルを構成するグラフィック要素(ポリゴン)及び二次元のグラフィック要素(スプライト)にテクスチャをマッピングするテクスチャマッピング装置及びその関連技術に関する。
さらに、本発明は、複数のグラフィック要素からなる、スクリーンに表示される画像を生成する画像生成装置及びその関連技術に関する。
従来より、ポリゴンとスプライトとを混在して表示する技術が存在する。この場合、特許文献1(特開平7−85308号公報)に紹介されているように、2Dシステムと3Dシステムとを独立に用意して、表示のためのビデオ信号に変換する際に、スプライトとポリゴンとを加算合成する。
しかしながら、この方法の場合には、2Dシステムと、3Dシステムとの、それぞれに個別に専用回路と、フレームメモリが必要な上に、ポリゴンとスプライトとを、十分に混合して表現することは困難である。
特許文献1では、この問題を解決するための画像表示方法を開示している。この画像表示方法では、画像表示面に表示する物体を、その物体の各面を構成するポリゴンの描画命令により描画すると共に、物体のポリゴンをテクスチャ記憶領域に記憶されているテクスチャ画像により装飾する。
画像表示面に常に正立する所定の大きさの矩形のポリゴンに、テクスチャ記憶領域上の、上記矩形と同じ大きさの矩形テクスチャ画像を配置する矩形描画命令を設定する。この矩形描画命令によって、画像表示面上の上記矩形の位置及びテクスチャ記憶領域上の矩形テクスチャ画像の位置を指定する。この矩形描画命令により、画像表示面上の任意の位置に、矩形領域の描画を行うことができる。
このように、3Dシステムを利用して、2Dシステムのスプライトと類似する画像(以下、「擬似スプライト」と呼ぶ。)を表示するようにして、ハードウェアを少なくしている。
しかしながら、3Dシステムを利用しているので、テクスチャ記憶領域には、擬似スプライト画像全体、つまり、矩形テクスチャ画像全体を格納しておく必要がある。結局、ポリゴンにせよ、擬似スプライトにせよ、1グラフィック要素にマッピングするテクスチャ画像の全体をテクスチャ記憶領域に格納しなければならない。これは、スクリーンにおける描画対象の水平ラインに含まれるピクセル群を、テクスチャ画像が配置されるテクセル空間に写像すると、3Dシステムの場合、テクセル空間中のあらゆる直線上に写像される可能性があるからである。これに対し、スプライトの場合は、テクセル空間の水平軸に平行な直線上にのみ写像される。
ポリゴンや擬似スプライトといったグラフィック要素ごとにテクスチャ画像全体を格納したのでは、テクスチャ記憶領域の容量は限られているため、同時に描画できるポリゴン及び擬似スプライトの数が少なくなる。同時に描画できるポリゴン及び擬似スプライトの数を多くしたい場合は、メモリ容量を大きくせざるをえず、少ないメモリ容量で、同時に多くのポリゴン及び擬似スプライトの描画を行うのは困難である。
また、3Dシステムを利用しているので、3Dシステムのポリゴンと同じ形状の、擬似スプライトを表示できるに過ぎない。つまり、ポリゴンがn(nは3以上の整数)角形であれば、擬似スプライトもn角形になってしまい、両者の形状を異ならせることはできない。ちなみに、三角形のポリゴン2つで、四角形の擬似スプライトを構成できるが、この場合も、2つの三角形のポリゴンの画像全体を、テクスチャ記憶領域に格納しておく必要があり、必要なメモリ容量が大きくなる。
そこで、本発明は、ハードウェア規模を抑制しながらも、二次元空間に投影された三次元立体の各面の形状を表すための多角形状のグラフィック要素およびスクリーンの枠に平行な矩形状のグラフィック要素の任意の組み合わせからなる画像を生成でき、かつ、メモリ容量の増大を招くことなく、同時に描画できるグラフィック要素の数を多くできる画像生成装置及びその関連技術を提供することを目的とする。
ところで、特許文献2(特開平8−110951号公報)に開示されたテクスチャマッピング装置は、テクスチャマッピング部と、画像メモリとにより構成される。画像メモリは、フレームメモリとテクスチャメモリとから構成され、フレームメモリには、テクスチャマッピングの対象となる3次元画像データが表示平面に対応したフィル座標系で格納され、テクスチャメモリには、マッピングすべきテクスチャデータがテクスチャ座標系で格納される。
一般に、このようなテクスチャメモリには、マッピングされるそのままの態様で、テクスチャが格納される。そして、一般に、テクスチャは、二次元配列としてテクスチャメモリに格納される。このため、マッピングされるそのままの態様で、テクスチャメモリにテクスチャを格納したのでは、マッピングされない無駄なテクセルが発生する場合がある。
特に、三角形にマッピングする三角形のテクスチャでは、二次元配列内のおよそ半分ものテクセルが無駄になってしまう。
そこで、本発明の他の目的は、メモリに格納されるテクスチャパターンデータに含まれる無駄なテクセルデータを極力削減して、必要なメモリ容量を抑制できるテクスチャマッピング装置及びその関連技術を提供することである。
ところで、特許文献2には、上記のようなテクスチャマッピング装置が開示されているが、この特許文献2は、テクスチャメモリの領域管理については特に着目していない。しかし、適切な領域管理をしないと、テクスチャデータ取得のための外部への無駄なアクセスが多くなったり、容量の大きいテクスチャメモリを確保しなければならない事態が発生する。
そこで、本発明のさらに他の目的は、テクスチャデータ取得のための無駄な外部メモリへのアクセスを回避でき、かつ、テクスチャデータを一時的に格納しておくためのハードウェアリソースが過剰に大きくなることを抑制できる画像生成装置及びその関連技術を提供することである。
本発明の第1の観点によれば、画像生成装置は、複数のグラフィック要素からなる、前記スクリーンに表示される画像を生成する画像生成装置であって、前記複数のグラフィックス要素は、二次元空間に投影された三次元立体の各面の形状を表すための多角形状のグラフィック要素および前記スクリーンの枠に平行な矩形状のグラフィック要素の任意の組み合わせからなり、前記多角形状のグラフィック要素を生成するための第1の表示情報を、所定形式のデータに変換する第1のデータ変換手段(バーテックスソータ114に相当)と、前記矩形状のグラフィック要素を生成するための第2の表示情報を、前記所定形式のデータに変換する第2のデータ変換手段(バーテックスエキスパンダ116に相当)と、前記第1のデータ変換手段および前記第2のデータ変換手段から受け取った前記所定形式のデータに基づいて、前記スクリーンに表示される前記画像を生成する画像生成手段(バーテックスソータ114及びバーテックスエキスパンダ116の後段の回路に相当)と、を備える。
この構成によれば、多角形状のグラフィック要素(例えば、ポリゴン)を生成するための第1の表示情報および矩形状のグラフィック要素(例えば、スプライト)を生成するための第2の表示情報を同一形式のデータに変換するので、多角形状のグラフィック要素と矩形状のグラフィック要素とで、画像生成手段の内部機能ブロックを極力共通化することができる。このため、ハードウェア規模の抑制を図ることができる。
また、従来のように3Dシステムだけではなく、スクリーンの枠に平行な矩形状のグラフィック要素の描画を行う2Dシステムをも搭載しているので、矩形状のグラフィック要素を描画する場合は、当該グラフィック要素全体のテクスチャ画像を一括して取得する必要はなく、例えば、スクリーンにおける1ライン単位での画像データの取得が可能である。このため、メモリ容量の増大を招くことなく、同時に描画できるグラフィック要素の数を多くできる。
以上の結果、ハードウェア規模を抑制しながらも、二次元空間に投影された三次元立体の各面の形状を表すための多角形状のグラフィック要素およびスクリーンの枠に平行な矩形状のグラフィック要素の任意の組み合わせからなる画像を生成でき、かつ、メモリ容量の増大を招くことなく、同時に描画できるグラフィック要素の数を多くできる。
上記画像生成装置において、第1の二次元直交座標系は、前記グラフィック要素の前記スクリーンへの表示に用いられる二次元座標系であり、第2の二次元直交座標系は、前記グラフィック要素にマッピングされる画像データが配置される二次元座標系であり、前記所定形式のデータは、複数の頂点フィールドを含み、前記頂点フィールドはそれぞれ、第1フィールドと第2フィールドとを含み、前記第1のデータ変換手段は、前記第1の二次元直交座標系における前記多角形状のグラフィック要素の頂点の座標を前記第1フィールドに格納し、かつ、描画モードに応じた形式で前記多角形状のグラフィック要素の頂点のパラメータを前記第2フィールドに格納し、前記第2のデータ変換手段は、前記第1の二次元直交座標系における前記矩形状のグラフィック要素の頂点の座標を前記第1フィールドに格納し、かつ、前記第1の二次元直交座標系における前記矩形状のグラフィック要素の頂点の座標を前記第2の二次元直交座標系へ写像した座標を前記第2フィールドに格納する。
この構成によれば、第1のデータ変換手段は、所定形式のデータの第2フィールドに、描画モードに応じた形式で頂点のパラメータを格納するので、所定形式のデータの形式の同一性を保持しながらも、3Dシステムにおいて、異なる描画モードでの描画を実現できる。
上記画像生成装置において、前記第2のデータ変換手段は、前記第2の表示情報に含まれる、前記第1の二次元直交座標系における前記矩形状のグラフィック要素の1つの頂点の座標、及び前記グラフィック要素のサイズ情報に基づいて、前記第1の二次元直交座標系における他の3つの頂点の一部または全部の座標を算出し、予め前記第2の表示情報に含まれる頂点の座標と算出された頂点の座標とを前記第1フィールドに格納し、かつ、予め前記第2の表示情報に含まれる頂点の座標と算出された頂点の座標とを前記第2の二次元直交座標系へ写像した座標を生成し、生成された前記第2の二次元直交座標系の座標を前記第2フィールドに格納する。
この構成によれば、他の3つの頂点の一部または全部の座標を計算で求めるので、第2の表示情報に4つの頂点全ての座標を含める必要はなく、第2の表示情報の格納に必要なメモリ容量を抑制できる。
上記画像生成装置において、前記第2のデータ変換手段は、前記第2の表示情報に含まれる、前記第1の二次元直交座標系における前記矩形状のグラフィック要素の1つの頂点の座標、前記グラフィック要素の拡縮率、及び前記グラフィック要素のサイズ情報に基づいて、前記第1の二次元直交座標系における他の3つの頂点の一部または全部の座標を算出し、予め前記第2の表示情報に含まれる頂点の座標と算出された頂点の座標とを前記第1フィールドに格納し、かつ、予め前記第2の表示情報に含まれる頂点の座標と算出された頂点の座標とを前記第2の二次元直交座標系へ写像した座標を生成し、生成された前記第2の二次元直交座標系の座標を前記第2フィールドに格納する。
この構成によれば、他の3つの頂点の一部または全部の座標を計算で求めるので、第2の表示情報に4つの頂点全ての座標を含める必要はなく、第2の表示情報の格納に必要なメモリ容量を抑制できる。また、第2の二次元直交座標系へ写像された座標はグラフィック要素の拡縮率が反映されたものであるため、原画像を拡大または縮小した画像をスクリーンに表示する場合でも、拡大後または縮小後の画像データを予めメモリ上に用意する必要はなく、画像データの格納に必要なメモリ容量を抑制できる。
上記画像生成装置において、前記第1のデータ変換手段は、前記第1の表示情報に含まれる、前記多角形状のグラフィック要素の頂点の前記第1の二次元直交座標系における座標を取得して前記第1フィールドに格納し、前記描画モードがテクスチャマッピングでの描画を示している場合、前記第1のデータ変換手段は、前記第1の表示情報に含まれる、前記多角形状のグラフィック要素の頂点の前記第2の二次元直交座標系における座標を算出するための情報と遠近補正用パラメータとを取得し、前記第2の二次元直交座標系における頂点の座標を算出して、遠近補正を施し、遠近補正後の頂点の座標と前記遠近補正用パラメータとを前記第2フィールドに格納し、前記描画モードがグーローシェーディングでの描画を示している場合、前記第1のデータ変換手段は、前記第1の表示情報に含まれる、前記多角形状のグラフィック要素の頂点のカラーデータを取得し、取得したカラーデータを前記第2フィールドに格納する。
この構成によれば、所定形式のデータの形式の同一性を保持しながらも、3Dシステムにおいて、テクスチャマッピングおよびグーローシェーディングといった2種類の描画モードでの描画を実現できる。
上記画像生成装置において、前記所定形式のデータは、当該データが前記多角形状のグラフィックス要素であるか前記矩形状のグラフィックス要素であるかを示すフラグフィールドをさらに含み、前記第1のデータ変換手段は、前記フラグフィールドに当該データが前記多角形状のグラフィックス要素であることを示す情報を格納し、前記第2のデータ変換手段は、前記フラグフィールドに当該データが前記矩形状のグラフィックス要素であることを示す情報を格納する。
この構成によれば、所定形式のデータの同一性を保持しながらも、所定形式のデータを受け取る画像生成手段は、フラグフィールドを参照することにより、描画対象のグラフィック要素の種類を容易に判別して、グラフィック要素の種類ごとの処理を行うことができる。
この画像生成装置において、前記画像生成手段は、前記第1フィールドに格納された頂点の座標に基づいて、前記スクリーンの描画対象のラインと前記グラフィック要素の辺との2つの交点の座標を算出し、その差分を算出して第1のデータとする交点算出手段(スライサ118に相当)を含み、受け取った前記所定形式のデータに含まれる前記フラグフィールドが、前記多角形状のグラフィック要素であることを示す場合、前記交点算出手段は、前記描画モードに応じて前記第2フィールドに格納された頂点のパラメータに基づいて、前記2つの交点におけるパラメータを算出し、その差分を算出して第2のデータとし、受け取った前記所定形式のデータに含まれる前記フラグフィールドが、前記矩形状のグラフィック要素であることを示す場合、前記交点算出手段は、前記第2フィールドに含まれる前記第2の二次元直交座標系における頂点の座標に基づいて、前記2つの交点におけるパラメータとしての、前記2つの交点の前記第2の二次元直交座標系における座標を算出し、その差分を算出して第2のデータとし、前記交点算出手段は、前記第2のデータを前記第1のデータで除して前記第1の二次元座標系における単位座標当りの当該パラメータの変化量を求める。
この構成によれば、フラグフィールドを参照することにより、グラフィック要素の種類を容易に判別して、その種類に応じた第2のデータの算出を行うことができる。また、第1の二次元座標系における単位座標当りのパラメータの変化量が後段に送出されるので、後段において、上記2つの交点間の各パラメータを線形補間により容易に算出できる。
この画像生成装置において、受け取った前記所定形式のデータに含まれる前記フラグフィールドが前記多角形状グラフィック要素であることを示し、かつ、前記描画モードがテクスチャマッピングでの描画であることを示している場合、前記交点算出手段は、前記第2フィールドに格納されている遠近補正後の頂点の座標と遠近補正用パラメータとに基づいて、前記2つの交点の遠近補正後の頂点の座標と遠近補正用パラメータとを算出し、その差分を算出して前記第2のデータとし、受け取った前記所定形式のデータに含まれる前記フラグフィールドが前記多角形状グラフィック要素であることを示し、かつ、前記描画モードがグーローシェーディングでの描画であることを示している場合、前記交点算出手段は、前記第2フィールドに格納されているカラーデータに基づいて、前記2つの交点のカラーデータを算出し、そのカラーデータの差分を算出して前記第2のデータとする。
この構成によれば、描画モードがテクスチャマッピングでの描画であることを示している場合、後段において、上記2つの交点間の第2の二次元直交座標系における各座標を、遠近補正後の頂点の座標と遠近補正用パラメータの線形補間により容易に算出できる。一方、描画モードがグーローシェーディングでの描画であることを示している場合、後段において、上記2つの交点間の各カラーデータを線形補間により容易に算出できる。
この画像生成装置において、前記画像生成手段は、前記矩形状のグラフィック要素に対して、前記交点算出手段により算出された、前記第1の二次元直交座標系の単位座標値当たりの前記第2の二次元直交座標系の座標の変化量を、前記2つの交点のいずれか一方の前記第2の二次元直交座標系における座標に順次加えていき、前記2つの交点間の前記第1の二次元直交座標系の各座標における前記第2の二次元直交座標系の座標を算出する加算手段(ピクセルステッパ120に相当)をさらに含み、前記加算手段は、前記描画モードがテクスチャマッピングでの描画を示している前記多角形状のグラフィック要素に対して、前記第1の二次元直交座標系の単位座標値当たりの前記第2の二次元直交座標系における遠近補正後の頂点の座標と遠近補正用パラメータの変化量を、前記2つの交点のいずれか一方の前記第2の二次元直交座標系における遠近補正後の頂点の座標と遠近補正用パラメータに順次加えていき、前記2つの交点間の遠近補正後の頂点の座標と遠近補正用パラメータを算出し、前記加算手段は、前記描画モードがグーローシェーディングでの描画を示している前記多角形状のグラフィック要素に対して、前記交点算出手段により算出された、前記第1の二次元直交座標系の単位座標当たりのカラーデータの変化量を、前記2つの交点のいずれか一方のカラーデータに順次加えていき、前記2つの交点間の前記第1の二次元直交座標系の各座標におけるカラーデータを算出する。
このように、矩形状のグラフィック要素に対して、第1の二次元座標系における単位座標当りの第2の二次元直交座標系の座標の変化量に基づいて、第2の二次元直交座標系における上記2つの交点間の各座標を線形補間により容易に算出できる。一方、描画モードがテクスチャマッピングでの描画を示している多角形状のグラフィック要素に対して、第1の二次元座標系における単位座標当りの第2の二次元直交座標系の遠近補正後の頂点の座標と遠近補正用パラメータの変化量に基づいて、上記2つの交点間の遠近補正後の頂点の座標と遠近補正用パラメータを線形補間により容易に算出できる。また、描画モードがグーローシェーディングでの描画を示している多角形状のグラフィック要素に対して、第1の二次元座標系における単位座標当りのカラーデータの変化量に基づいて、上記2つの交点間の各カラーデータを線形補間により容易に算出できる。
上記画像生成装置において、前記画像生成手段は、前記スクリーンを構成するライン単位で、所定のライン順序に従って描画処理を行い、前記第1のデータ変換手段は、複数の前記第1フィールドに含まれる頂点の座標の順が、前記所定のライン順序において頂点が出現する順に一致するように、前記頂点フィールドの内容を入れ替え、前記第2のデータ変換手段は、前記矩形状のグラフィック要素の頂点の座標の順が、前記所定のライン順序において頂点が出現する順に一致するように、前記各頂点フィールドにデータを格納する。
この構成によれば、多角形状のグラフィック要素および矩形状のグラフィック要素のいずれについても、所定形式のデータにおいて、頂点の出現順に並べられているので、後段での描画処理が容易になる。
上記画像生成装置において、前記画像生成手段は、前記所定形式のデータを受け取って、前記第1フィールドに格納された頂点の座標に基づいて、前記スクリーンの描画対象のラインと前記グラフィック要素の辺との2つの交点の座標を算出し、その差分を算出して第1のデータとし、かつ、前記第2フィールドに格納された頂点のパラメータに基づいて、前記2つの交点におけるパラメータを算出し、その差分を算出して第2のデータとし、かつ、前記第2のデータを前記第1のデータで除して前記第1の二次元座標系における単位座標当りの当該パラメータの変化量を求める交点算出手段(スライサ118に相当)を含む。
この構成によれば、第1の二次元座標系における単位座標当りのパラメータの変化量が後段に送出されるので、後段において、上記2つの交点間の各パラメータを線形補間により容易に算出できる。
この画像生成装置において、前記画像生成手段は、前記交点算出手段により算出された、前記第1の二次元直交座標系の単位座標当たりの当該パラメータの変化量を、前記2つの交点のいずれか一方の前記パラメータに順次加えていき、前記2つの交点間の前記第1の二次元直交座標系の各座標におけるパラメータを算出する加算手段(ピクセルステッパ120に相当)をさらに含む。
このように、第1の二次元座標系における単位座標当りのパラメータの変化量に基づいて、上記2つの交点間の各パラメータを線形補間により容易に算出できる。
上記画像生成装置において、所定規則に従って、描画処理における前記多角形状のグラフィック要素および前記矩形状のグラフィック要素の描画優先順位を決定するマージソート手段(マージソータ106に相当)をさらに備え、前記第1の表示情報は、前記描画優先順位が高い順に予め第1の配列に格納され、前記第2の表示情報は、前記描画優先順位が高い順に予め第2の配列に格納され、前記マージソート手段は、前記第1の表示情報と前記第2の表示情報との前記描画優先順位を比較し、前記第1の表示情報の前記描画優先順位が前記第2の表示情報の前記描画優先順位より高い場合、前記マージソート手段は、前記第1の配列から前記第1の表示情報を読み出し、前記第2の表示情報の前記描画優先順位が前記第1の表示情報の前記描画優先順位より高い場合、前記マージソート手段は、前記第2の配列から前記第2の表示情報を読み出し、前記マージソート手段は、前記第1の表示情報を読み出した場合は、当該第1の表示情報を単一のデータ列として出力し、前記第2の表示情報を読み出した場合は、当該第2の表示情報を前記単一のデータ列として出力する。
この構成によれば、第1の表示情報あるいは第2の表示情報の如何に関係なく、全ての表示情報を描画優先順位に基づいて整列した上で、同じ単一のデータ列として出力されるので、多角形状のグラフィック要素と矩形状のグラフィック要素とで、後段の機能ブロックを極力共通化でき、ハードウェア規模の抑制を一層図ることができる。
この画像生成装置において、所定のライン順序に従って行う描画処理において、前記グラフィック要素の複数の頂点の前記第1の二次元直交座標系における座標のうち、前記所定のライン順序において最も早く出現する頂点の座標を出現頂点座標としたときに、前記所定規則は、前記出現頂点座標が前記所定のライン順序において早く出現する前記グラフィック要素の前記描画優先順位が高くなるように定められる。
この構成によれば、出現頂点座標が早く出現するグラフィック要素の描画優先順位が高くなる所定規則にしたがってマージソートを行うので、単一のデータ列として出力される第1の表示情報及び第2の表示情報に対して、出力順に描画処理を行うだけでよい。このため、1フレーム以上の画像を格納するための大容量のバッファ(フレームバッファ等)を実装する必要は必ずしもなく、より容量の小さいバッファ(ラインバッファや、1ラインに満たないピクセルを描画するピクセルバッファ等)を実装した場合であっても、多くの多角形状のグラフィック要素及び矩形状のグラフィック要素を組み合わせた画像の表示が可能になる。
この画像生成装置において、前記マージソート手段は、前記出現頂点座標が同じ値を示している場合、前記第1の表示情報に含まれる表示深度情報と前記第2の表示情報に含まれる表示深度情報と、を比較し、より奥に描画される方の前記グラフィック要素の前記描画優先順位が高いと判断する。
この構成によれば、多角形状のグラフィック要素と矩形状のグラフィック要素とで出現頂点座標が同じ場合、描画対象のラインにおいて、表示深度の順で描画優先順位が決定される。従って、描画対象のラインにおいて、より奥に描画されるグラフィック要素が先に描画される(表示深度順の描画)。このため、半透明合成を適切に行うことができる。
この画像生成装置において、前記マージソート手段は、前記出現頂点座標が、最初に描画するラインより前に位置する場合は、当該出現頂点座標を最初に描画するラインに相当する座標に置き換えて、前記描画優先順位を決定する。
この構成によれば、多角形状のグラフィック要素及び矩形状のグラフィック要素の双方の出現頂点座標が、最初に描画するライン(つまり、スクリーンの先頭ライン)より前に位置する場合は、それらは同一座標とみなされるので、上記のように、表示深度情報に基づいて、より奥に描画される方のグラフィック要素の描画優先順位が高いと判断される。従って、スクリーンの先頭ラインにおいて、グラフィック要素は、表示深度順で描画される。このような先頭ラインでの処理を行わない場合、先頭ラインの描画においては、必ずしも表示深度順での描画が保証されないが、この構成によれば、先頭ラインから表示深度順での描画を行うことが可能となる。表示深度順で描画する効果は上記と同様である。
この画像生成装置において、前記マージソート手段は、インタレース表示が行われる場合、前記出現頂点座標が、奇数フィールドおよび偶数フィールドのうちの表示対象のフィールドで描画されないラインに相当する場合、そのラインの次のラインに相当する座標に当該出現頂点座標を置き換えて扱う。
この構成によれば、インタレース表示が行われる場合において、表示対象のフィールドで描画されないラインに相当する出現頂点座標と、そのラインの次のライン(表示対象のフィールドで描画されるライン)に相当する出現頂点座標と、が同一座標として扱われるので、上記のように、表示深度情報に基づいて、より奥に描画される方のグラフィック要素の描画優先順位が高いと判断される。このため、インタレース表示の場合でも表示深度順での描画処理が保証される。表示深度順で描画する効果は上記と同様である。
本発明の第2の観点によれば、テクスチャマッピング装置は、多角形状のグラフィック要素にテクスチャをマッピングするテクスチャマッピング装置である。前記テクスチャは複数の切片に分割され、前記テクスチャが前記グラフィックス要素にマッピングされる態様で配置される第1の二次元テクセル空間において少なくとも1つの前記切片が回転及び移動されて、前記切片の全てが、前記テクスチャがメモリに格納される態様で配置される第2の二次元テクセル空間に配置される。
そして、このテクスチャマッピング装置は、前記第2の二次元空間に配置される前記切片の全てが格納されている二次元配列から前記複数の切片を読み出す読出手段と、読み出された前記複数の切片を結合する結合手段と、前記複数の切片を結合して得られた前記テクスチャを前記多角形状のグラフィック要素にマッピングするマッピング手段と、を備える。
この構成によれば、テクスチャは、グラフィックス要素にマッピングされる態様でメモリに格納されるのではなく、複数の切片に分割され、かつ、少なくとも1つの切片が回転及び移動されて、メモリに格納される。このため、例えば三角形等、四角形以外のポリゴンにマッピングするテクスチャをメモリに格納する場合においても、テクスチャが格納されない無駄な記憶領域を極力省くことができ、効率良く格納できるので、テクスチャパターンデータを格納するメモリの容量を小さくできる。
つまり、テクスチャパターンデータを構成するテクセルデータのうち、テクスチャが配置される領域のテクセルデータは実体的な内容(カラーを直接的あるいは間接的に示す情報)を含むものであるが、テクスチャが配置されない領域のテクセルデータは、実体的な内容を含まない無駄なものである。この無駄なテクセルデータを極力省くことで、必要なメモリ容量を抑制できる。
ここで言うところのテクスチャパターンデータとは、テクスチャが配置される領域のみのテクセルデータを意味するのではなく、それ以外の領域のテクセルデータを含む。例えば、三角形のテクスチャを含む四角形の領域のテクセルデータである。
このテクスチャマッピング装置において、前記多角形状のグラフィック要素は、三角形状のグラフィック要素であり、前記テクスチャは、三角形状のテクスチャである。
特に三角形のグラフィック要素にマッピングする三角形のテクスチャをそのまま2次元配列に格納すると、配列内のおよそ半分のテクセルデータが無駄になる。三角形のグラフィック要素にマッピングされる三角形のテクスチャを複数に分割して格納することにより、無駄になるテクセルデータを大幅に減らすことができる。
このテクスチャマッピング装置において、前記テクスチャは、2つの前記切片に分割され、そのうちの1つの前記切片が回転及び移動されて、前記2つの切片が前記二次元配列に格納されている。
この構成によれば、三角形のグラフィック要素にマッピングされる三角形のテクスチャを2つに分割して格納することにより、無駄になるテクセルデータを大幅に減らすことができる。
このテクスチャマッピング装置において、前記三角形状のテクスチャは、前記第2の二次元テクセル空間の第1座標軸に平行な辺と前記第1座標軸に直交する第2座標軸に平行な辺とを有する直角三角形状のテクスチャであり、前記直角三角形状のテクスチャは、前記第1座標軸あるいは前記第2座標軸のいずれかに平行な直線によって、前記2つの切片に分割されており、前記1つの切片が180度回転及び移動されて、前記2つの切片が前記二次元配列に格納されている。
この構成によれば、テクスチャは直角三角形状であるため、直角をなす2辺をそれぞれ、第1の二次元テクセル空間の一方座標軸及び他方座標軸に一致させ、かつ、直角の頂点を第1の二次元テクセル空間の原点に設定することにより、第1の二次元テクセル空間における三角形の頂点の座標の指定のために必要なデータ量を少なくできる。
上記テクスチャマッピング装置において、前記テクスチャの前記二次元配列への格納形態として、第1格納形態及び第2格納形態が用意されており、前記テクスチャは、複数のテクセルからなり、前記第1格納形態では、前記第2の二次元テクセル空間の第1座標軸あるいは前記第1座標軸に直交する第2座標軸のいずれかに、平行かつ一次元に並んだ第1の所定数のテクセルを1単位とし、その1単位のテクセルがメモリの1ワードに格納されるように、前記全ての切片が前記二次元配列に格納され、前記第2格納形態では、前記第2の二次元テクセル空間に二次元に並んだ第2の所定数のテクセルを1単位とし、その1単位のテクセルが前記メモリの1ワードに格納されるように、前記全ての切片が前記二次元配列に格納される。
ここで、多角形状のグラフィックス要素(例えば、ポリゴン)を、二次元空間に投影された三次元立体の各面の形状を表すためのものとする。このように、三次元立体を表すためのグラフィック要素であっても、(スプライトと同様の)スクリーンに正立する二次元のグラフィック要素として使用する場合もある。
スクリーンは複数の平行に並んだ水平ラインで構成されるところ、三次元立体を表すためのグラフィック要素を二次元のグラフィック要素として使用する場合は、1水平ラインごとにテクセルデータを取得することにより、テクセルデータを一時格納するためのメモリ容量を削減することができる。
第1の格納形態では、メモリの1ワードに一次元に並んだテクセルデータが格納されるので、1水平ラインごとにテクセルデータを取得する際のメモリへのアクセス回数を減らすことができる。
一方、多角形状のグラフィックス要素によって三次元立体を表す場合は、スクリーンの水平ライン上のピクセルを第1の二次元テクセル空間に写像したとき、必ずしも第1の二次元テクセル空間の水平ライン上に写像されるとは限らない。
このように、ピクセルが第1の二次元テクセル空間の水平ライン上に写像されない場合でも、第2の格納形態ではメモリの1ワードに二次元に並んだテクセルデータが格納されるので、ピクセルが写像された座標に配置されたテクセルデータが、メモリから既に取得したテクセルデータの中に存在する可能性が高く、テクセルデータ取得のためのメモリへのアクセス回数を減らすことができる。
上記テクスチャマッピング装置において、前記テクスチャの繰り替えしマッピングが行われる場合は、前記分割並びに前記回転及び移動なしに、前記テクスチャは前記二次元配列に格納されており、前記読出手段は、前記二次元配列から前記テクスチャを読出し、前記結合手段は、結合処理を行わず、前記マッピング手段は、前記読出手段が読み出した前記テクスチャを前記多角形状のグラフィック要素にマッピングする。
この構成によれば、テクスチャは分割並びに回転及び移動なしに二次元配列に格納されるので、水平方向及び/又は垂直方向にテクスチャが繰り返すようなテクスチャマッピングを行う際の、テクスチャパターンデータのメモリへの格納に好適である。しかも、繰り返しマッピングなので、同じテクスチャパターンデータを使用することができ、メモリ容量の削減が可能となる。
本発明の第3の観点によれば、画像処理装置は、バイリニアフィルタリングを実行する画像処理装置である。テクスチャが複数の切片に分割され、前記テクスチャが多角形状のグラフィック要素にマッピングされる態様で配置される第1の二次元テクセル空間において少なくとも1つの前記切片が180度回転及び移動されて、前記切片の全てが、前記テクスチャがメモリに格納される態様で配置される第2の二次元テクセル空間に配置されており、かつ、前記第2の二次元テクセル空間においてバイリニアフィルタリングで用いるテクセルが前記切片に隣接して配置されるように、前記切片の全てが二次元配列に格納される。
そして、この画像処理装置は、前記グラフィック要素に含まれるピクセルが写像される前記第1の二次元テクセル空間の座標に対応する前記第2の二次元テクセル空間における座標(S,T)を算出する座標算出手段と、写像された前記ピクセルに対応する前記座標(S,T)が、180度回転及び移動なしに前記二次元配列に格納された前記切片に含まれる場合、前記第2の二次元テクセル空間の座標(S,T)、座標(S+1,T)、座標(S,T+1)、及び座標(S+1,T+1)に位置する4つのテクセルを読み出し、写像された前記ピクセルに対応する前記座標(S,T)が、180度回転及び移動して前記二次元配列に格納された前記切片に含まれる場合、前記第2の二次元テクセル空間の座標(S,T)、座標(S−1,T)、座標(S,T−1)、及び座標(S−1,T−1)に位置する4つのテクセルを読み出す読出手段と、前記読出手段が読み出した前記4つのテクセルを用いて、写像された前記ピクセルのバイリニアフィルタリングを実行するバイリニアフィルタリング実行手段と、を備える。
この構成によれば、写像されたピクセルに対応する座標(S,T)が、180度回転及び移動して二次元配列に格納された切片に含まれる場合でも、これを考慮して、4テクセルを取得する。また、分割して格納される切片同士の間には、バイリニアフィルタリングで用いるテクセルが切片に隣接するように格納される。
これらのことから、テクスチャを分割してメモリに格納する場合でも、バイリニアフィルタリング処理を問題なく実現できる。
本発明の第4の観点によれば、画像処理装置は、三角形状のグラフィック要素にテクスチャをマッピングし、前記グラフィックス要素を構成する各ピクセルの描画処理を行う画像処理装置である。ピクセルの描画が行われる二次元直交座標系を第1の座標系とし、前記第1の座標系における座標を(X,Y)で表し、前記テクスチャを構成する各テクセルが前記グラフィックス要素にマッピングされる態様で配置される二次元直交座標系を第2の座標系とし、前記第2の座標系における座標を(U,V)で表し、前記各テクセルがメモリに格納される態様で配置される二次元直交座標系を第3の座標系とし、前記第3の座標系における座標を(S,T)で表し、前記各テクセルのうちで最大のV座標を持つテクセルのV座標に基づいてV座標閾値が定められる。
そして、この画像処理装置は、前記第1の座標系におけるピクセルの座標(X,Y)を前記第2の座標系に写像し、前記ピクセルの座標(U,V)を求める座標算出手段と、前記ピクセルのV座標が前記V座標閾値以下の場合、前記ピクセルの座標(U,V)を前記第3の座標系における前記ピクセルの座標(S,T)とし、前記ピクセルのV座標が前記V座標閾値を超える場合、前記各ピクセルの座標(U,V)を180度回転及び移動して前記第3の座標系における前記ピクセルの座標(S,T)に変換する座標変換手段と、前記各ピクセルの座標(S,T)に基づいてテクセルデータを前記メモリから取得する読出手段と、を備える。
この構成によれば、テクスチャがV座標閾値を境に2分割されて、V座標が大きい方の切片が180度回転及び移動して格納されている場合に、格納先から適切なテクセルデータを読み出すことができる。
この画像処理装置において、前記座標変換手段は、テクスチャの繰り返しマッピングが行われる場合、前記ピクセルのV座標が前記V座標閾値以下か否かにかかわらず、U座標の上位Mビット(Mは1以上の整数)を「0」に置き換えた値を前記ピクセルのS座標とし、V座標の上位Nビット(Nは1以上の整数)を「0」に置き換えた値を前記ピクセルのT座標として、前記第2の座標系における前記各ピクセルの座標(U,V)を前記第3の座標系における前記各ピクセルの座標(S,T)に変換する。
この構成によれば、上位Mビット及び/又は上位Nビットをマスクする(「0」にする)ことにより、同じテクスチャパターンデータを使用して、容易にテクスチャの繰り返しマッピングを実現できる。その結果、メモリ容量の削減が可能となる。
本発明の第5の観点によれば、テクスチャ格納方法は、多角形状のグラフィック要素にマッピングされるテクスチャを複数の切片に分割するステップと、前記テクスチャが前記グラフィック要素にマッピングされる態様で配置される第1の二次元テクセル空間において少なくとも1つの前記切片を回転及び移動して、前記テクスチャがメモリに格納される態様で配置される第2の二次元テクセル空間に配置された全ての前記切片を、前記テクスチャを分割せずに二次元配列に格納した場合に要する記憶容量より少ない記憶容量の記憶領域に格納される二次元配列に格納するステップと、を含む。
本発明の第6の観点によれば、画像生成装置は、複数のグラフィック要素からなる、スクリーンに表示される画像を生成する画像生成装置であって、前記グラフィック要素にマッピングするためのテクスチャデータを外部のメモリから読み出すための要求を行うデータ要求手段と、前記メモリから読み出されたテクスチャデータを一時的に保管するテクスチャバッファ手段と、前記テクスチャバッファ手段の領域を分割し、新たに描画を開始する前記グラフィック要素にマッピングされるテクスチャデータを格納するために当該テクスチャデータのサイズに応じた領域の割り当てと、描画が完了した前記グラフィック要素にマッピングされているテクスチャデータを格納していた領域の解放と、を行うテクスチャバッファ管理手段と、を備える。
この構成によれば、テクスチャデータを毎回外部メモリ(例えば、図1の外部メモリ50に相当)から読み出すのではなく、読み出したテクスチャデータをテクスチャバッファ手段に一時的に保持しておくことにより、テクスチャデータが再利用される場合に、無駄な外部メモリへのアクセスを避けることができる。また、テクスチャバッファ手段を必要とされるサイズに領域分割し、領域の確保と解放とを動的に行うことで、テクスチャバッファ手段の使用効率が高まり、テクスチャバッファ手段のためのハードウェアリソースが過剰に大きくなることを防ぐことができる。
この画像生成装置において、前記複数のグラフィックス要素は、二次元空間に投影された三次元立体の各面の形状を表すための多角形状のグラフィック要素および前記スクリーンの枠に平行な矩形状のグラフィック要素の任意の組み合わせからなり、前記テクスチャバッファ管理手段は、前記矩形状のグラフィック要素にマッピングされるテクスチャデータの格納領域として、当該テクスチャデータの一部分のみが格納可能なサイズを割り当て、前記多角形状のグラフィック要素にマッピングされるテクスチャデータの格納領域として、当該テクスチャデータの全体が格納可能なサイズを割り当てる。
この構成によれば、グラフィック要素の描画が水平ライン単位で順次的に行われる場合、矩形状のグラフィック要素(例えば、スプライト)にマッピングされるテクスチャデータは描画処理の進行に応じてテクスチャデータの水平ライン単位で外部メモリから読み出せばよいため、テクスチャバッファ手段に確保する領域のサイズを抑えることができる。一方、多角形状のグラフィック要素(例えば、ポリゴン)にマッピングされるテクスチャデータは、テクスチャデータ上のどの部分のデータが必要になるかを事前に予測することは難しいため、テクスチャデータ全体を格納可能なサイズの領域をテクスチャバッファ手段に確保する。
この画像生成装置において、前記データ要求手段は、前記矩形状のグラフィック要素にマッピングされるテクスチャデータを要求する際には、描画が進むに従ってマッピングするテクスチャデータを部分単位で要求し、前記多角形状のグラフィック要素にマッピングされるテクスチャデータを要求する際には、マッピングするテクスチャデータの全体を一括して要求する。
上記画像生成装置において、前記テクスチャバッファ管理手段は、前記テクスチャバッファ手段の各領域を管理する複数の構造体インスタンスを用いて前記テクスチャバッファ手段を管理する。
このように、構造体インスタンスを用いてテクスチャバッファ手段の各領域を管理することで、領域の確保・解放のための処理が簡便になる。
この画像生成装置において、前記複数の構造体インスタンスは、管理する領域のサイズに応じて複数のグループに分けられ、前記グループ内の前記構造体インスタンスは、リング状に互いがリンクされている。
この構成によれば、構造体インスタンス、ひいてはテクスチャバッファ手段の各領域の検索を容易に行うことができる。
この画像生成装置は、全ての前記構造体インスタンスを初期値に設定する構造体初期化手段をさらに備える。
このように、全ての構造体インスタンスを初期値に設定することにより、テクスチャバッファ手段の領域のフラグメンテーションを解消できる。フラグメンテーションを解消する手段としては、一般的なガーベージコレクションより小さい回路規模で達成できるだけでなく、処理時間も短い。また、グラフィック要素の描画のための処理であるため、1ビデオフレームまたは1フィールドの描画が完了する毎にテクスチャバッファ手段の全体を初期化するようにすれば、描画処理上全く問題がない。
この画像生成装置は、前記構造体初期化手段が、前記構造体インスタンスを初期値に設定するために前記構造体インスタンスにアクセスする間隔を設定する制御レジスタをさらに備え、前記制御レジスタには、外部からアクセス可能である。
このように、制御レジスタに外部からアクセス可能にして、構造体初期化手段がアクセスする間隔を自由に設定可能とすることで、システム全体のパフォーマンスの低下を引き起こすことなく、初期化処理を実行できる。なお、例えば、構造体配列を共有メモリ上に設ける場合には、構造体初期化手段からのアクセスが時間的に集中して行われると、他の機能ユニットからの共有メモリへのアクセスのレイテンシが大きくなり、システム全体のパフォーマンスを低下させる恐れがある。
上記画像生成装置において、前記テクスチャバッファ手段は、前記画像生成装置および外部の機能ユニットが共有する共有メモリ上に、任意の位置及び/又はサイズで構成可能である。
このように、テクスチャバッファ手段を、共有メモリ上に位置及びサイズとも自由に設定可能とすることで、必要とされるテクスチャバッファ領域が少ない場合には、余剰の領域を他の機能ユニットが用いることが可能になる。
本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、信号のどのビットかを示す必要があるときは、信号名の後に、[a:b]あるいは[a]を付する。[a:b]は、その信号の第a番目のビットから第b番目のビットを意味し、[a]は、その信号の第a番目のビットを意味する。「0b」は2進数を、「0x」は16進数を意味する。数式中、「・」は乗算を意味する。
図1は、本発明の実施の形態によるマルチメディアプロセッサ1の内部構成を示すブロック図である。図1に示すように、このマルチメディアプロセッサは、外部メモリインタフェース3、DMAC(direct memory access controller)4、中央演算処理装置(以下、「CPU」と呼ぶ。)5、CPUローカルRAM7、レンダリングプロセッシングユニット(以下、「RPU」と呼ぶ。)9、カラーパレットRAM11、サウンドプロセシングユニット(以下、「SPU」と呼ぶ。)13、SPUローカルRAM15、ジオメトリエンジン(以下、「GE」と呼ぶ。)17、Yソーティングユニット(以下、「YSU」と呼ぶ。)19、外部インタフェースブロック21、メインRAMアクセスアービタ23、メインRAM25、I/Oバス27、ビデオDAC(digital to analog converter)29、オーディオDACブロック31、及びA/Dコンバータ(以下、「ADC」と呼ぶ。)33を具備する。メインRAM25及び外部メモリ50を区別して説明する必要がないときは、「メモリMEM」と表記する。
CPU5は、メモリMEMに格納されたプログラムを実行して、各種演算やシステム全体の制御を行う。また、CPU5は、DMAC4にプログラム及びデータの転送要求を行うこともできるし、DMAC4を介さずに、外部メモリインタフェース3及び外部バス51を通じて、外部メモリ50から直接プログラムコードをフェッチし、外部メモリ50に直接データアクセスを行うこともできる。
I/Oバス27は、CPU5をバスマスタとするシステム制御用のバスであり、バススレイブである各機能ユニット(外部メモリインタフェース3、DMAC4、RPU9、SPU13、GE17、YSU19、外部インタフェースブロック21、及びADC33)の制御レジスタ及びローカルRAM7,11,15へのアクセスに用いられる。このようにして、これらの機能ユニットは、I/Oバス27を通じて、CPU5により制御される。
CPUローカルRAM7は、CPU5専用のRAMであり、サブルーチンコールや割り込み時におけるデータの退避などを行うためのスタック領域、及びCPU5のみが扱う変数の格納領域等として使用される。
本発明の特徴の1つであるRPU9は、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成する。具体的には、RPU9は、YSU19によるソート済みの、ポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、メインRAM25から読み出し、所定の処理を実行して、スクリーン(表示画面)のスキャンに合わせて水平ラインごとにイメージを生成する。生成されたイメージは、コンポジットビデオ信号波形を示すデータストリームに変換され、ビデオDAC29に出力される。また、RPU9は、DMAC4に対して、ポリゴン及びスプライトのテクスチャパターンデータの取り込みのためのDMA転送要求を行う機能を有する。
テクスチャパターンデータとは、ポリゴンまたはスプライトに貼り付けられる2次元の画素配列データであり、各画素データは、カラーパレットRAM11のエントリを指定するための情報の一部である。以降、テクスチャパターンデータの画素を「テクセル」と呼称し、スクリーンに表示されるイメージを構成する画素を指す「ピクセル」とは区別して使用する。従って、テクスチャパターンデータは、テクセルデータの集合である。
ポリゴン構造体配列は、多角形状のグラフィック要素であるポリゴンのための構造体配列であり、スプライト構造体配列は、スクリーンに平行な矩形のグラフィック要素であるスプライトのための構造体配列である。ポリゴン構造体配列の要素を、「ポリゴン構造体インスタンス」と呼び、スプライト構造体配列の要素を、「スプライト構造体インスタンス」と呼ぶ。ただし、両者を区別して説明する必要がないときは、単に「構造体インスタンス」と呼ぶこともある。
ポリゴン構造体配列に格納された各ポリゴン構造体インスタンスは、ポリゴンごとの表示情報(スクリーンにおける頂点座標、テクスチャマッピングモードでのテクスチャパターンに関する情報及びグーローシェーディングモードでのカラーデータ(RGBのカラーコンポーネント)を含む。)であり、1つのポリゴン構造体インスタンスに1つのポリゴンが対応している。スプライト構造体配列に格納された各スプライト構造体インスタンスは、スプライトごとの表示情報(スクリーンにおける座標及びテクスチャパターンに関する情報を含む。)であり、1つのスプライト構造体インスタンスに1つのスプライトが対応している。
ビデオDAC29は、アナログのビデオ信号を生成するためのデジタル/アナログ変換器である。ビデオDAC29は、RPU9から入力されたデータストリームをアナログのコンポジットビデオ信号に変換し、ビデオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)に出力する。
カラーパレットRAM11は、本実施の形態では512色すなわち512エントリのカラーパレットからなる。RPU9は、テクスチャパターンデータに含まれるテクセルデータをカラーパレットのエントリを指定するインデックスの一部として、カラーパレットRAM11を参照し、テクスチャパターンデータを、カラーデータ(RGBのカラーコンポーネント)に変換する。
SPU13は、PCM(pulse code modulation)波形データ(以下、「ウェーブデータ」と呼ぶ。)、アンプリチュードデータ、及びメインボリュームデータを生成する。具体的には、SPU13は、最大64チャンネル分のウェーブデータを生成して時分割多重化するとともに、最大64チャンネル分のエンベロープデータを生成してチャンネルボリュームデータと乗算し、アンプリチュードデータを時分割多重化する。そして、SPU13は、メインボリュームデータ、時分割多重化されたウェーブデータ、及び時分割多重化されたアンプリチュードデータを、オーディオDACブロック31に出力する。また、SPU13は、DMAC4に対して、ウェーブデータ及びエンベロープデータの取り込みのためのDMA転送要求を行う機能を有する。
オーディオDACブロック31は、SPU13から入力されたウェーブデータ、アンプリチュードデータ、及びメインボリュームデータをそれぞれアナログ信号に変換し、結果をアナログ乗算して、アナログオーディオ信号を生成する。このアナログオーディオ信号は、オーディオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)のオーディオ入力端子(図示せず)に出力される。
SPUローカルRAM15は、SPU13がウェーブ再生及びエンベロープ生成を行う際に用いるパラメータ(例えば、ウェーブデータやエンベロープデータの格納アドレスやピッチ情報など)を格納する。
GE17は、三次元イメージを表示するための幾何演算を実行する。具体的には、GE17は、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)などの演算を実行する。
YSU19は、メインRAM25に格納されているポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、ソートルール1〜4に従ってソートする。この場合、ポリゴン構造体配列とスプライト構造体配列とで、別個にソートが行われる。
以下、YSU19によるソートルール1〜4について説明するが、その前に座標系について説明する。テレビジョンモニタ等のディスプレイ装置(図示せず)への実際の表示に用いられる二次元座標系をスクリーン座標系と呼ぶ。本実施の形態では、スクリーン座標系は、水平方向2048ピクセル×垂直方向1024ピクセルの2次元ピクセル配列から構成される。座標原点は左上にあり、右方向がX軸の正、下方向がY軸の正に相当する。ただし、実際に表示される領域は、スクリーン座標系の全空間ではなく一部の空間である。この表示領域をスクリーンと呼ぶことにする。ソートルール1〜4におけるY座標はスクリーン座標系の値である。
ソートルール1は、最小Y座標が小さい順に、各ポリゴン構造体インスタンスを並べ替えることである。最小Y座標とは、ポリゴンの3頂点のY座標のうち、最も小さいY座標のことである。ソートルール2は、最小Y座標が同じである複数のポリゴンについては、デプス値が大きい順に、各ポリゴン構造体インスタンスを並べることである。
ただし、YSU19は、スクリーンの先頭ラインに表示されるピクセルを持つ複数のポリゴンについては、最小Y座標が異なっている場合でも、それらが同一であるとみなして、ソートルール1ではなく、ソートルール2に従って、各ポリゴン構造体インスタンスの並べ替えを行う。つまり、スクリーンの先頭ラインに表示されるピクセルを持つポリゴンが複数存在する場合は、最小Y座標が同一であるとみなして、デプス値が大きい順に並べ替えられる。これがソートルール3である。
インタレーススキャンの場合でも、ソートルール1〜3が適用される。ただし、奇数フィールドを表示するためのソートでは、奇数ラインに表示されるポリゴンの最小Y座標及び/又はその奇数ラインの1つ前の偶数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行う。ただし、先頭の奇数ラインは除く。なぜなら、その1つ前の偶数ラインが存在しないからである。一方、偶数フィールドを表示するためのソートでは、偶数ラインに表示されるポリゴンの最小Y座標及び/又はその偶数ラインの1つ前の奇数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行う。これがソートルール4である。
スプライトに関するソートルール1〜4は、それぞれポリゴンに関するソートルール1〜4と同様である。ここで、スプライトの最小Y座標は、スプライトの4頂点のY座標のうち、最も小さいY座標である。
外部メモリインタフェース3は、外部バス51を介して、外部メモリ50からのデータの読み出し、及び外部メモリ50へのデータの書き込みを司る。この場合、外部メモリインタフェース3は、図示しないEBI優先順位テーブルに従って、CPU5及びDMAC4からの外部バスアクセス要求要因(外部バス51へのアクセスを要求する要因)を調停して、いずれか1つの外部バスアクセス要求要因を選択する。そして、選択した外部バスアクセス要求要因に対して外部バス51へのアクセスを許可する。EBI優先順位テーブルは、CPU5からの複数種類の外部バスアクセス要求要因及びDMAC4からの外部バスアクセス要求要因の優先順位を定めたテーブルである。
DMAC4は、メインRAM25と、外部バス51に接続された外部メモリ50と、の間でDMA転送を行う。この場合、DMAC4は、図示しないDMA優先順位テーブルに従って、CPU5、RPU9、及びSPU13からのDMA転送要求要因(DMA転送を要求する要因)を調停して、いずれか1つのDMA転送要求要因を選択する。そして、外部メモリインタフェース3に対して、DMA要求を行う。DMA優先順位テーブルは、CPU5、RPU9、及びSPU13からのDMA要求要因の優先順位を定めたテーブルである。
外部インタフェースブロック21は、周辺装置54とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。24チャンネルのI/Oポートの各々は、4チャンネル分のマウスインタフェース機能、4チャンネル分のライトガンインタフェース機能、2チャンネル分の汎用タイマ/カウンタ、1チャンネル分の調歩同期式シリアルインタフェース機能、および1チャンネル分の汎用パラレル/シリアル変換ポート機能のうち1または複数に内部接続されている。
ADC33は、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置52から入力されたアナログ信号をデジタル信号に変換する。例えば、マイク音声等のアナログ入力信号をサンプリングしてデジタルデータに変換する。
メインRAMアクセスアービタ23は、機能ユニット(CPU5、RPU9、GE17、YSU19、DMAC4、及び外部インタフェースブロック21(汎用パラレル/シリアル変換ポート))からのメインRAM25へのアクセス要求を調停して、いずれかの機能ユニットにアクセス許可を出す。
メインRAM25は、CPU5のワーク領域、変数格納領域、および仮想記憶管理領域等として利用される。また、メインRAM25は、CPU5が他の機能ユニットに受け渡すデータの格納領域、RPU9及びSPU13が外部メモリ50からDMAによって取得したデータの格納領域、GE17及びYSU19の入力データ及び出力データの格納領域等としても使用される。
外部バス51は、外部メモリ50にアクセスするためのバスである。CPU5およびDMAC4から、外部メモリインタフェース3を介してアクセスされる。外部バス51のアドレスバスは、30ビットから成り、最大で1Gバイト(=8Gビット)の外部メモリ50を接続することができる。外部バス51のデータバスは、16ビットから成り、8ビット又は16ビットのデータバス幅を持つ外部メモリ50を接続できる。異なるデータバス幅を持つ外部メモリを同時に接続可能であり、アクセスする外部メモリによってデータバス幅を自動的に切り替える機能が備えられる。
図2は、図1のRPU9の内部構成を示すブロック図である。図2に示すように、RPU9は、RPU内メインRAMアクセスアービタ100、ポリゴンプリフェッチャ102、スプライトプリフェッチャ104、マージソータ106、プリフェッチバッファ108、リサイクルバッファ110、デプスコンパレータ112、バーテックスソータ114、バーテックスエキスパンダ116、スライサ118、ピクセルステッパ120、ピクセルディザ122、テクセルマッパ124、テクスチャキャッシュブロック126、バイリニアフィルタ130、カラーブレンダ132、ラインバッファブロック134、ビデオエンコーダ136、ビデオタイミングジェネレータ138、メモリマネージャ140、及びDMACインタフェース142を含む。ラインバッファブロック134は、各々スクリーンの1水平ラインに対応するラインバッファLB1及びLB2を含む。メモリマネージャ140は、MCBイニシャライザ141を含む。なお、図2では、説明の便宜のため、カラーパレットRAM11をRPU9に含めて記載している。
RPU内メインRAMアクセスアービタ100は、ポリゴンプリフェッチャ102、スプライトプリフェッチャ104、及びメモリマネージャ140からメインRAM25へのアクセス要求を調停して、いずれかにアクセス要求の許可を出す。許可されたアクセス要求は、メインRAMアクセスアービタ23に出力され、マルチメディアプロセッサ1内の他の機能ユニットからのアクセス要求との間で調停が行われる。
ポリゴンプリフェッチャ102は、メインRAM25から、YSU19によるソート後の各ポリゴン構造体インスタンスを取り込む。ポリゴンプリフェッチャ102には、YSU19から、パルスPPLが入力される。YSU19は、1つのポリゴン構造体インスタンスのソートが確定するたびに、パルスPPLを出力する。従って、ポリゴンプリフェッチャ102は、ポリゴン構造体配列の全ポリゴン構造体インスタンスのうち、いくつのポリゴン構造体インスタンスのソートが完了したかを知ることができる。
このため、ポリゴンプリフェッチャ102は、全ポリゴン構造体インスタンスのソートの完了を待つことなく、1つのポリゴン構造体インスタンスのソートが確定するたびに、その都度、ポリゴン構造体インスタンスを取得できる。その結果、フレームの表示中に、当該フレームのためのポリゴン構造体インスタンスのソートを行うことができる。また、インタレーススキャンによる表示を行う場合にも、フィールドの表示中に当該フィールドのためのソートを行っても、正しい描画結果が得られる。なお、ポリゴンプリフェッチャ102は、ビデオタイミングジェネレータ138からの垂直走査カウント信号VCから、フレームおよびフィールドの切り替わりを知ることができる。
スプライトプリフェッチャ104は、メインRAM25から、YSU19によるソート後の各スプライト構造体インスタンスを取り込む。スプライトプリフェッチャ104には、YSU19から、パルスSPLが入力される。YSU19は、1つのスプライト構造体インスタンスのソートが確定するたびに、パルスSPLを出力する。従って、スプライトプリフェッチャ104は、スプライト構造体配列の全スプライト構造体インスタンスのうち、いくつのスプライト構造体インスタンスのソートが完了したかを知ることができる。
このため、スプライトプリフェッチャ104は、全スプライト構造体インスタンスのソートの完了を待つことなく、1つのスプライト構造体インスタンスのソートが確定するたびに、その都度、スプライト構造体インスタンスを取得できる。その結果、フレームの表示中に、当該フレームのためのスプライト構造体インスタンスのソートを行うことができる。また、インタレーススキャンによる表示を行う場合にも、フィールドの表示中に当該フィールドのためのソートを行っても、正しい描画結果が得られる。なお、スプライトプリフェッチャ104は、ビデオタイミングジェネレータ138からの垂直走査カウント信号VCから、フレームおよびフィールドの切り替わりを知ることができる。
さて、マージソータ106の説明に移る前に、ポリゴン構造体、テクスチャアトリビュート構造体、およびスプライト構造体の構成を説明する。本実施の形態では、ポリゴンは三角形とする。
図3は、テクスチャマッピングモードのポリゴン構造体の構成を示す図である。図3に示すように、本実施の形態では、このポリゴン構造体は、128ビットで構成されている。このポリゴン構造体のメンバTypeは、ポリゴンの描画モードを示し、テクスチャマッピングモードのポリゴンに対しては「0」が設定される。メンバAy,Ax,By,Bx,Cy及びCxは、それぞれ、ポリゴンの、頂点AのY座標、頂点AのX座標、頂点BのY座標、頂点BのX座標、頂点CのY座標、及び頂点CのX座標を示す。これらのY座標及びX座標は、スクリーン座標系の値である。
メンバBw,Cw,Light及びTsegmentは、それぞれ、ポリゴンの、頂点Bのパースペクティブコレクト用パラメータ(=Az/Bz)、頂点Cのパースペクティブコレクト用パラメータ(=Az/Cz)、明度、及びテクスチャパターンデータの格納位置情報を示す。
メンバTattribute,Map,Filter,Depth及びViewportは、それぞれ、テクスチャアトリビュート構造体のインデックス、テクスチャパターンデータのフォーマット種別、バイリニアフィルタリングあるいはニアレストネイバーのいずれかを示すフィルタリングモード、デプス値、及びシザリングのビューポート指定情報を示す。
バイリニアフィルタリング及びニアレストネイバーについては後述する。デプス値(「表示深度情報」と呼ぶこともある。)は、描画対象のピクセルが重なった場合、どのピクセルを先に描画するかを示す情報であり、その値が大きいほど先に(奥に)描画され、その値が小さいほど後で(手前に)描画される。シザリングは、指定されたビューポートの外側にあるポリゴン及び/又はスプライトを表示しないようにするとともに、ポリゴン及び/又はスプライトのビューポートからはみ出した部分を切り取って表示しないようにする機能である。
以上が、テクスチャマッピングモードのポリゴン構造体の各メンバの内容であり、1つのポリゴン構造体のインスタンス(ポリゴン構造体に代入された値)により1つのポリゴンが定義される。
図4は、テクスチャアトリビュート構造体の構成を示す図である。図4に示すように、本実施の形態では、このテクスチャアトリビュート構造体は、32ビットで構成されている。このテクスチャアトリビュート構造体のメンバWidth,Height,M,N,Bit及びPaletteは、それぞれ、テクスチャの幅(単位:テクセル数)より「1」小さい値、テクスチャの高さ(単位:テクセル数)より「1」小さい値、「Width」の上位からのマスクビット数、「Height」の上位からのマスクビット数、カラーモード(1ピクセル当りのビット数−1)、及びパレットブロックナンバを示す。カラーパレットの512色のエントリは、選択されたカラーモードに応じて複数のブロックに分割されており、メンバPaletteにより、使用するパレットブロックが示される。
テクスチャアトリビュート構造体のインスタンスは、描画ポリゴン毎に1つずつ用意されるものではなく、64個のテクスチャアトリビュート構造体インスタンスが、テクスチャマッピングモードの全ポリゴン構造体インスタンス及び全スプライト構造体インスタンスで共有される。
図5は、グーローシェーディングモードのポリゴン構造体の構成を示す図である。図5に示すように、本実施の形態では、このポリゴン構造体は、128ビットで構成されている。このポリゴン構造体のメンバTypeは、ポリゴンの描画モードを示し、グーローシェーディングモードのポリゴンに対しては「1」が設定される。メンバAy,Ax,By,Bx,Cy及びCxは、それぞれ、ポリゴンの、頂点AのY座標、頂点AのX座標、頂点BのY座標、頂点BのX座標、頂点CのY座標、及び頂点CのX座標を示す。これらのY座標及びX座標は、スクリーン座標系の値である。
メンバAc,Bc,及びCcは、それぞれ、ポリゴンの、頂点Aのカラーデータ(RGB各5ビット)、頂点Bのカラーデータ(RGB各5ビット)、及び頂点Cのカラーデータ(RGB各5ビット)を示す。
メンバDepth,Viewport及びNalphaは、それぞれ、デプス値、シザリングのビューポート指定情報、及びアルファブレンディングで使用する(1−α)を示す。(1−α)は透明度を示し、「000(二進数)」が透明度0%、すなわち完全不透明を表し、「111(二進数)」が透明度87.5%を表す。
以上が、グーローシェーディングモードのポリゴン構造体の各メンバの内容であり、1つのポリゴン構造体のインスタンス(ポリゴン構造体に代入された値)により1つのポリゴンが定義される。
図6(a)は、シザリングディセーブル時のスプライト構造体の構成を示す図、図6(b)は、シザリングイネーブル時のスプライト構造体の構成を示す図である。図6(a)に示すように、本実施の形態では、シザリングディセーブル時のスプライト構造体は、64ビットで構成されている。このスプライト構造体のメンバAx及びAyは、それぞれ、スプライトの左上のX座標及びY座標を示す。これらのY座標及びX座標は、スクリーン座標系の値である。
メンバDepth,Filter及びTattributeは、それぞれ、デプス値、フィルタリングモード(バイリニアフィルタリングあるいはニアレストネイバー)、及びテクスチャアトリビュート構造体のインデックスを示す。メンバZoomX,ZoomY及びTsegmentは、それぞれ、X軸方向のスプライト拡大率(拡縮率)、Y軸方向のスプライト拡大率(拡縮率)、及びテクスチャパターンデータの格納位置情報を示す。
図6(b)に示すように、本実施の形態では、シザリングイネーブル時のスプライト構造体は、64ビットで構成されている。このスプライト構造体のメンバAx及びAyは、それぞれ、スプライトの左上のX座標及びY座標を示す。これらのY座標及びX座標は、スクリーン座標系の値である。
メンバDepth,Scissor,Viewport,Filter及びTattributeは、それぞれ、デプス値、シザリング適用フラグ、シザリングのビューポート指定情報、フィルタリングモード(バイリニアフィルタリングあるいはニアレストネイバー)、及びテクスチャアトリビュート構造体のインデックスを示す。メンバZoomX,ZoomY及びTsegmentは、それぞれ、X軸方向のスプライト拡大率(拡縮率)、Y軸方向のスプライト拡大率(拡縮率)、及びテクスチャパターンデータの格納位置情報を示す。メンバScissorの設定(オン/オフ)を変えることで、スプライトごとにシザリングの適用の有無を制御できる。
シザリングイネーブル時のスプライト構造体においては、シザリングディセーブル時のスプライト構造体に比べ、X座標及びY座標のビット数がそれぞれ1ビット少ない。シザリングイネーブル時にスプライトがスクリーンに配置される際には、後述のバーテックスエキスパンダ116によって、X座標に512ピクセル分のオフセット、Y座標に256ピクセル分のオフセットが加えられる。また、デプス値のビット数も1ビット少ないが、シザリングイネーブル時には、後述のテクセルマッパ124によって、構造体に格納されているデプス値のLSB側に1ビットの「0」が付加され、シザリングディセーブル時と同様に8ビットのデプス値として扱われる。
以上が、シザリングディセーブル時及びシザリングイネーブル時のスプライト構造体の各メンバの内容であり、1つのスプライト構造体のインスタンス(スプライト構造体に代入された値)により1つのスプライトが定義される。スプライトのテクスチャアトリビュート構造体の構成は、図4のポリゴンのテクスチャアトリビュート構造体の構成と同じである。テクスチャアトリビュート構造体のインスタンスは、描画スプライト毎に1つずつ用意されるものではなく、64個のテクスチャアトリビュート構造体インスタンスが、テクスチャマッピングモードの全ポリゴン構造体インスタンス及び全スプライト構造体インスタンスで共有される。
図2に戻って、マージソータ106は、ポリゴンプリフェッチャ102及びスプライトプリフェッチャ104から、それぞれ、ポリゴン構造体インスタンス及びそれに付随するテクスチャアトリビュート構造体インスタンス、並びに、スプライト構造体インスタンス及びそれに付随するテクスチャアトリビュート構造体インスタンスを受け取り、上述したYSU19によるソートルール1〜4と同様の後述のソートルール1〜4(以下、「マージソートルール1〜4」と呼ぶ。)に従って、マージソートを実行し、結果をプリフェッチバッファ108に送出する。ここで、ポリゴン構造体インスタンスの各々、およびスプライト構造体インスタンスの各々は、既にYSU19によって、ソートルール1〜4に基づく描画処理順に並べ替えられていることに注意されたい。以下、マージソータ106の詳細を説明する。
図7は、図2のマージソータ106の入出力信号の説明図である。図7を参照して、ポリゴンプリフェッチャ102は、ポリゴン有効ビットレジスタ60、ポリゴンバッファ62、及びポリゴンアトリビュートバッファ64を含む。スプライトプリフェッチャ104は、スプライト有効ビットレジスタ66、スプライトバッファ68、及びスプライトアトリビュートバッファ70を含む。
ポリゴン有効ビットレジスタ60は、ポリゴン構造体インスタンスの有効(1)/無効(0)を示すポリゴン有効ビット(1ビット)を格納する。ポリゴンバッファ62は、メインRAM25から転送されたポリゴン構造体インスタンス(128ビット)を格納する。ポリゴンアトリビュートバッファ64は、メインRAM25から転送されたポリゴン用のテクスチャアトリビュート構造体インスタンス(32ビット)を格納する。
スプライト有効ビットレジスタ66は、スプライト構造体インスタンスの有効(1)/無効(0)を示すスプライト有効ビット(1ビット)を格納する。スプライトバッファ68は、メインRAM25から転送されたスプライト構造体インスタンス(64ビット)を格納する。スプライトアトリビュートバッファ70は、メインRAM25から転送されたスプライト用のテクスチャアトリビュート構造体インスタンス(32ビット)を格納する。
マージソータ106に対する入出力信号を説明する。ビデオタイミングジェネレータ138から与えられる表示領域上端ライン番号信号LNは、RPU9がポリゴン及び/又はスプライトの描画を開始する水平ライン番号(つまり、スクリーンの先頭ライン番号)を示す。この値LNは、CPU5によってRPU9に設けられた表示領域上端ライン制御レジスタ(図示せず)に設定される。
ビデオタイミングジェネレータ138から与えられるインタレース/ノンインタレース識別信号INIは、RPU9で行われている現在の描画処理が、インタレーススキャン用のものかノンインタレーススキャン用のものかを示す。この値INIは、CPU5によって、RPU9に設けられたRPU制御レジスタ(図示せず)のうちの1ビットに設定される。
ビデオタイミングジェネレータ138から与えられる奇数フィールド/偶数フィールド識別信号OEIは、現在描画処理中のフィールドが、奇数フィールドか偶数フィールドかを示す。
マージソータ106は、プリフェッチバッファ108に、ポリゴン/スプライトデータPSD、テクスチャアトリビュート構造体インスタンスTAI、及びポリゴン/スプライト識別信号PSIを出力する。
ポリゴン/スプライトデータPSD(128ビット)は、ポリゴン構造体インスタンスあるいはスプライト構造体インスタンスのいずれかである。ポリゴン/スプライトデータPSDがスプライト構造体インスタンスである場合は、有効データがLSBから詰められ、上位64ビットは「0」を示す。また、後述するデプス値の比較処理においては、ポリゴン構造体インスタンスのデプス値(12ビット)とスプライト構造体インスタンスのデプス値(8ビット)とは、ビット数が異なるので、スプライト構造体インスタンスのデプス値のLSB側に「0」を連接し、ポリゴン構造体インスタンスのデプス値と同じビット数(12ビット)に揃えられる。但し、この12ビットに揃えられたデプス値は後段に出力されない。
テクスチャアトリビュート構造体インスタンスTAI(32ビット)は、ポリゴン/スプライトデータPSDがポリゴン構造体インスタンスの場合は、当該インスタンスに付随するテクスチャアトリビュート構造体インスタンスであり、ポリゴン/スプライトデータPSDがスプライト構造体インスタンスの場合は、当該インスタンスに付随するテクスチャアトリビュート構造体インスタンスである。ただし、ポリゴン/スプライトデータPSDが、グーローシェーディングモードのポリゴン構造体インスタンスである場合、テクスチャアトリビュート構造体インスタンスは付随しないので、この信号TAIの値は全て「0」を示す。
ポリゴン/スプライト識別信号PSIは、ポリゴン/スプライトデータPSDが、ポリゴン構造体インスタンスなのかスプライト構造体インスタンスなのかを示す信号である。
マージソータ106の動作を説明する。マージソータ106は、先ず、ポリゴン有効ビットレジスタ60に保持されたポリゴン有効ビットおよびスプライト有効ビットレジスタ66に保持されたスプライト有効ビットをチェックする。そして、マージソータ106は、ポリゴン有効ビット及びスプライト有効ビットの双方の値が「0(無効)」の場合は、ポリゴンプリフェッチャ102のバッファ62及び64並びにスプライトプリフェッチャ104のバッファ68及び70からのデータを取得しない。
マージソータ106は、ポリゴン有効ビット及びスプライト有効ビットのどちらか一方の値が「1(有効)」の場合は、「1」を示している方のバッファ62及び64あるいは68及び70からデータを取得し、ポリゴン/スプライトデータPSD及びテクスチャアトリビュート構造体インスタンスTAIとして、プリフェッチバッファ108に出力する。
マージソータ106は、ポリゴン有効ビット及びスプライト有効ビットの双方の値が「1」の場合は、次に説明するマージソートルール1〜4に従って、ポリゴンプリフェッチャ102のバッファ62及び64あるいはスプライトプリフェッチャ104のバッファ68及び70からデータを取得し、ポリゴン/スプライトデータPSD及びテクスチャアトリビュート構造体インスタンスTAIとして、プリフェッチバッファ108に出力する。マージソートルール1〜4の詳細は次の通りである。
まず、ビデオタイミングジェネレータ138から与えられるインタレース/ノンインタレース識別信号INIがノンインタレースを示している場合を説明する。マージソータ106は、ポリゴン構造体インスタンスに含まれる3頂点のY座標(Ay,By,Cy)の内で最も小さい値と、スプライト構造体インスタンスに含まれるY座標(Ay)と、を比較し、描画処理順で先に出現する(つまり、Y座標が小さい方の)ポリゴン構造体インスタンスあるいはスプライト構造体インスタンスを選択する(マージソートルール1:YSU19によるソートルール1に相当)。Y座標はスクリーン座標系の値である。
ただし、双方のY座標が同じ値を示している場合は、マージソータ106は、ポリゴン構造体インスタンスに含まれるデプス値Depthと、スプライト構造体インスタンスに含まれるデプス値Depthと、を比較し、デプス値が大きい方の(つまり、より奥に描画される方の)ポリゴン構造体インスタンスあるいはスプライト構造体インスタンスを選択する(マージソートルール2:YSU19によるソートルール2に相当)。この場合、上記したように、スプライト構造体インスタンスに含まれるデプス値のビット数(8ビット)をポリゴン構造体インスタンスに含まれるデプス値のビット数(12ビット)に揃えた後に比較を行う。
また、Y座標の値が、表示領域上端ライン番号信号LNに相当するY座標より小さい場合は、マージソータ106は、そのY座標の値を表示領域上端ライン番号信号LNに相当するY座標の値に置き換えて(マージソートルール3:YSU19によるソートルール3に相当)、マージソートルール1及び2に従って、マージソートを行う。
次に、インタレース/ノンインタレース識別信号INIがインタレースを示している場合を説明する。マージソータ106は、奇数フィールド/偶数フィールド識別信号OEIから、表示対象となるフィールドを判別し、当該フィールドで描画されない水平ラインに相当するY座標の値は、次の水平ラインに相当するY座標と同じ値として扱い(マージソートルール4:YSU19によるソートルール4に相当)、上記マージソートルール1〜3に従って、マージソートを行う。
図2に戻って、プリフェッチバッファ108は、マージソータ106から、マージソート後の構造体インスタンス(つまり、ポリゴン/スプライトデータPSD及びテクスチャアトリビュート構造体インスタンスTAI)を順次読み込み、読み込んだ順番で構造体インスタンスを出力するFIFO(first−in first−out)構造のバッファである。つまり、プリフェッチバッファ108には、マージソータ106により並べ替えられた順番で構造インスタンスが格納される。そして、格納された構造インスタンスは、対応するポリゴンあるいはスプライトの表示のための描画サイクルにおいて、格納された順番で出力される。なお、プリフェッチバッファ108は、ビデオタイミングジェネレータ138からの垂直走査カウント信号VCから、描画中の水平ラインを知ることができる。つまり、描画サイクルの切り替わりを知ることができる。本実施の形態では、例えば、プリフェッチバッファ108は、物理的にはリサイクルバッファ110とバッファを共有することが可能であり、リサイクルバッファ110のエントリ数を含め、(128ビット+32ビット)×128エントリとする。ちなみに、ポリゴン/スプライト識別信号PSIは、ポリゴン/スプライトデータPSDの第79ビットの空白ビットと置き換えられる。
リサイクルバッファ110は、次の描画サイクルでも使用される(つまり、再利用できる)構造体インスタンス(つまり、ポリゴン/スプライトデータPSD及びテクスチャアトリビュート構造体インスタンスTAI)を格納するFIFO構造のバッファである。従って、リサイクルバッファ110に格納された構造体インスタンスは、次の描画サイクルで使用される。1描画サイクルは、1水平ラインの表示を行うための描画期間である。つまり、1描画サイクルは、ラインバッファLB1あるいはLB2のいずれかに、対応する水平ラインの表示のために必要な全てのデータの描画が行われる期間である。本実施の形態では、例えば、リサイクルバッファ110は、物理的にはプリフェッチバッファ108とバッファを共有することが可能であり、プリフェッチバッファ108のエントリ数を含め、(128ビット+32ビット)×128エントリとする。
デプスコンパレータ112は、プリフェッチバッファ108の先頭の構造体インスタンスに含まれるデプス値と、リサイクルバッファ110の先頭の構造体インスタンスに含まれるデプス値と、を比較して、より大きなデプス値を持つ(つまり、より奥に表示されるべき)構造体インスタンスを選択して、後段に出力する。この場合、デプスコンパレータ112は、選択した構造体インスタンスがポリゴン構造体インスタンスの場合は、バーテックスソータ114へ出力し、スプライト構造体インスタンスの場合は、バーテックスエキスパンダ116に出力する。また、デプスコンパレータ112は、選択した構造体インスタンスをスライサ118に出力する。なお、デプスコンパレータ112は、ビデオタイミングジェネレータ138からの垂直走査カウント信号VCから、描画中の水平ラインを知ることができる。つまり、描画サイクルの切り替わりを知ることができる。
ここで、デプスコンパレータ112により選択された構造体インスタンスが、次の描画サイクルでも使用される(つまり、次の水平ラインの描画にも使用される)場合は、スライサ118により、当該構造体インスタンスがリサイクルバッファ110に出力され書き込まれる。ただし、デプスコンパレータ112により選択された構造体インスタンスが、次の描画サイクルで使用されない(つまり、次の水平ラインの描画には使用されない)場合は、リサイクルバッファ110には書き込まれない。
従って、リサイクルバッファ110には、現ラインの描画に使用される構造体インスタンス、及び次ラインの描画に使用される構造体インスタンスが、現ラインの描画順、及び次ラインの描画順に格納される。
図8は、図2のバーテックスエキスパンダ116の入出力信号の説明図である。デプスコンパレータ112から出力される構造体インスタンスに含まれるポリゴン/スプライトデータPSDのサイズは128ビットであるが、バーテックスエキスパンダ116に入力されるポリゴン/スプライトデータPSDはスプライト構造体インスタンスであるため、128ビットのポリゴン/スプライトデータPSDの下位64ビットのみが入力される。図8を参照して、バーテックスエキスパンダ116は、受け取ったスプライト構造体インスタンスに含まれる、スプライトの左上の頂点座標(Ax,Ay)、Y軸方向の拡大率ZoomY、及びX軸方向の拡大率ZoomX、並びに、当該スプライト構造体インスタンスに付随するテクスチャアトリビュート構造体インスタンスに含まれる、テクスチャパターンの幅より「1」小さい値Width及び高さより「1」小さい値Heightに基づいて、当該スプライトの頂点の座標(スクリーン座標系におけるXY座標およびUV座標系におけるUV座標)を算出し、ポリゴン/スプライト共通データCIとしてスライサ118へ出力する。スクリーン座標系は上述の通りであり、UV座標系は、テクスチャパターンデータを配置する二次元直交座標系である。以下、スプライトの頂点のパラメータ(XYUV座標)算出の詳細を説明する。
図9は、スプライトの頂点パラメータ算出の説明図である。図9(a)には、UV空間におけるスプライトのテクスチャパターンデータ(文字A)が例示される。この図において、1つの小矩形は、1テクセルを示す。そして、テクセルの4頂点のうち、左上角のUV座標が、そのテクセルの位置を示す。
この図に示すように、テクスチャの幅(水平方向のテクセル数)を「Width+1」、テクスチャの高さを「Height+1」とすると、テクスチャの左上,右上,左下の各頂点のUV座標がそれぞれ(0,0)、(Width+1,0)、及び(0,Height+1)となるように、スプライトのテクスチャパターンデータは、UV空間に配置される。ここで、「Width」および「Height」の値は、テクスチャアトリビュート構造体のメンバWidthおよびHeightに格納される値である。すなわち、これらのメンバには、テクスチャの幅、高さより1小さい値が格納される。
図9(b)には、XY空間におけるスプライトの描画例が示される。この図において、1つの小矩形は、ピクセルの集合からなり、図9(a)の1テクセルに対応する。スプライトの左上、右上、及び左下の各頂点は、それぞれ頂点0、頂点1、及び頂点2として扱われる。つまり、各頂点は、描画の際の出現順が早いほうから、頂点0、頂点1、及び頂点2として扱われる。各頂点0〜2のX座標、Y座標、U座標、及びV座標を、X*、Y*、UB*、及びVR*(「*」は、「頂点」に付けた添え字であり、*=0,1,2)とすると、それぞれの値は以下のようにして求められる。
頂点0については次の通りである。
X0=Ax
Y0=Ay
UB0=0
VR0=0
Y0=Ay
UB0=0
VR0=0
ここで、Ax及びAyは、それぞれスプライト構造体インスタンスのメンバ「Ax」及び「Ay」に格納された値である。このように、スプライト構造体インスタンスのメンバ「Ax」及び「Ay」の値が、スプライトの頂点0のX座標及びY座標となる。
頂点1については次の通りである。
X1=Ax+ZoomX・(Width+1)
Y1=Ay
UB1=Width
VR1=0
Y1=Ay
UB1=Width
VR1=0
頂点2については次の通りである。
X2=Ax
Y2=Ay+ZoomY・(Height+1)
UB2=0
VR2=Height
Y2=Ay+ZoomY・(Height+1)
UB2=0
VR2=Height
なお、スプライトの右下の頂点3のXYUV座標は、他の3頂点のXYUV座標から得られるため、ここでは算出されない。
ここで、幅Width及び高さHeightは、それぞれ8ビットであるところ、UB*及びVR*(*=0,1,2)の各パラメータは、符号なしで、整数部10ビット、小数部6ビットの16ビット固定小数点数であるため、バーテックスエキスパンダ116は、演算結果のLSB側に6ビットの「0」、MSB側に1または2ビットの「0」を連接して、16ビット固定小数点数UB*及びVR*とする。
バーテックスエキスパンダ116は、演算結果、つまり、各頂点0〜2のXYUV座標を、ポリゴン/スプライト共通データCIとして、スライサ118に出力する。ただし、ポリゴン/スプライト共通データCIの後述のフィールドWG*(*=0,1,2)は、常に「0x0040」(=1.0)として出力される。後述するが、バーテックスエキスパンダ116が出力するポリゴン/スプライト共通データCIの構造(形式)は、バーテックスソータ114が出力するポリゴン/スプライト共通データCIの構造(形式)と同じである。
図10は、図2のバーテックスソータ114の入出力信号の説明図である。図10を参照して、バーテックスソータ114は、受け取ったポリゴン構造体インスタンス及びそれに付随するテクスチャアトリビュート構造体インスタンスから、ポリゴンの各頂点のパラメータ(XYUV座標、パースペクティブコレクト用パラメータ、及びカラーデータ)を取得及び算出し、各頂点のパラメータをY座標が小さい順に並べ替えて、ポリゴン/スプライト共通データCIとしてスライサ118へ出力する。以下、ポリゴンの頂点のパラメータ算出の詳細を説明する。まず、ポリゴンが、テクスチャマッピングの対象である場合について説明する。
図11は、ポリゴンの頂点パラメータ算出の説明図である。図11(a)には、UV空間におけるポリゴンのテクスチャパターンデータ(文字A)が例示される。この図において、1つの小矩形は、1テクセルを示す。そして、テクセルの4頂点のうち、左上角のUV座標が、そのテクセルの位置を示す。
本実施の形態では、ポリゴンが三角形の例を挙げており、ポリゴンにマッピングされるテクスチャ(この例では四角形)は、1つの頂点がUV座標の(0,0)に、残り2つの頂点がそれぞれU軸上およびV軸上に配置される。従って、テクスチャの幅(水平方向のテクセル数)を「Width+1」、テクスチャの高さを「Height+1」とすると、テクスチャの左上,右上,左下の各頂点のUV座標がそれぞれ(0,0)、(Width+1,0)、及び(0,Height+1)となるように、ポリゴンのテクスチャパターンデータは、UV空間に配置される。
ここで、「Width」および「Height」の値は、テクスチャアトリビュート構造体のメンバWidthおよびHeightに格納される値である。すなわち、これらのメンバには、テクスチャの幅、高さより1小さい値が格納される。なお、テクスチャデータは、メモリMEMに格納される際に、その一部が折り返されて格納される場合があるが、ここでは説明を省略する。
図11(b)には、XY空間におけるポリゴンの描画例が示される。この図において、1つの小矩形は、ピクセルの集合からなり、図11(a)の1テクセルに対応する。同様に、1つの小三角形は、ピクセルの集合からなり、図11(a)の1テクセルに対応する。
ポリゴンの3頂点A,B及びCのXY座標は、それぞれ(Ax,Ay)、(Bx,By)及び(Cx,Cy)で表される。「Ax」、「Ay」、「Bx」、「By」、「Cx」、及び「Cy」は、それぞれポリゴン構造体インスタンスのメンバAx、Ay、Bx、By、Cx、及びCyに格納された値である。このように、ポリゴン構造体インスタンスのメンバAx及びAyの値が、ポリゴンの頂点AのX座標及びY座標、メンバBx及びByの値が、ポリゴンの頂点BのX座標及びY座標、メンバCx及びCyの値が、ポリゴンの頂点CのX座標及びY座標となる。
そして、ポリゴンの頂点Aは、図11(a)のUV座標の(0,0)に関連付けられ、頂点Bは、UV座標の(Width,0)に関連付けられ、頂点Cは、UV座標の(0,Height)に関連付けられる。従って、バーテックスソータ114は、スプライトの場合と同様にして、頂点A、B、及びCのUV座標(Au,Av)、(Bu,Bv)、及び(Cu,Cv)を算出する。
頂点Aについては次の通りである。
Au=0
Av=0
Av=0
頂点Bについては次の通りである。
Bu=Width
Bv=0
Bv=0
頂点Cについては次の通りである。
Cu=0
Cv=Height
Cv=Height
そして、バーテックスソータ114は、頂点A、B、及びCのUV座標(Au,Av)、(Bu,Bv)、及び(Cu,Cv)に、パースペクティブコレクト(遠近補正)を施す。パースペクティブコレクトを施した後の頂点A、B、及びCのUV座標は、(Au・Aw,Av・Aw)、(Bu・Bw,Bv・Bw)、及び(Cu・Cw,Cv・Cw)となる。
ここで、「Width」及び「Height」は、それぞれテクスチャアトリビュート構造体インスタンスのメンバWidth及びHeightに格納された値である。また、「Bw」及び「Cw」は、それぞれポリゴン構造体インスタンスのメンバBw及びCwに格納された値である。後述のように、頂点Aのパースペクティブコレクト用パラメータAwは、常に「1」であるため、「Aw」はポリゴン構造体インスタンスには格納されていない。
次に、バーテックスソータ114は、頂点A,B及びCのパラメータ(XY座標、パースペクティブコレクト後のUV座標、及びパースペクティブコレクト用パラメータ)をY座標が小さい順にソート(並べ替え)する。ソート後の頂点は、Y座標が小さい順に頂点0,1,2として扱われる。図11(b)の例では、頂点Aが頂点1に、頂点Bが頂点0に、頂点Cが頂点2になっている。バーテックスソータ114によるソート処理の詳細を説明する。
図12は、ポリゴンの頂点ソート処理の説明図である。図12には、ソート前の頂点とソート後の頂点との関係が示されている。「A」、「B」、「C」がソート前の頂点に付けられている頂点名であり、「0」、「1」、「2」がソート後の頂点に付けられている頂点名である。また、「Ay」、「By」、及び「Cy」は、それぞれポリゴン構造体インスタンスのメンバAy、By、及びCyに格納されている値であり、ソート前のポリゴンの頂点A、B、及びCのY座標である。
頂点0のY座標Y0≦頂点1のY座標Y1≦頂点2のY座標Y2、であり、これらの関係は固定である。そして、ソート前の頂点A、B、及びCのY座標Ay、By、及びCy間の大小関係に従って、頂点A、B、及びCの各々が、頂点0、1、及び2のいずれかに割り当てられる。例えば、頂点間のY座標がBy≦Ay<Cyである場合、バーテックスソータ114は、頂点0の各パラメータに頂点Bの各パラメータを代入し、頂点1の各パラメータに頂点Aの各パラメータを代入し、頂点2の各パラメータに頂点Cの各パラメータを代入する。
この例を、図11を参照しながら詳細に説明する。この場合、各頂点0〜2のX座標、Y座標、U座標、V座標、及びパースペクティブコレクト用パラメータを、X*、Y*、UB*、VR*、及びWG*(「*」は、「頂点」に付けた添え字であり、*=0,1,2)とすると、それぞれの値は以下のようになる。
頂点0については次の通りである。
X0=Bx
Y0=By
UB0=Bu・Bw
VR0=Bv・Bw
WG0=Bw
Y0=By
UB0=Bu・Bw
VR0=Bv・Bw
WG0=Bw
頂点1については次の通りである。
X1=Ax
Y1=Ay
UB1=Au・Aw
VR1=Av・Aw
WG1=Aw
Y1=Ay
UB1=Au・Aw
VR1=Av・Aw
WG1=Aw
頂点2については次の通りである。
X2=Cx
Y2=Cy
UB2=Cu・Cw
VR2=Cv・Cw
WG2=Cw
Y2=Cy
UB2=Cu・Cw
VR2=Cv・Cw
WG2=Cw
ここで、「Aw」、「Bw」、及び「Cw」の値は、それぞれ符号なしで、整数部2ビット、小数部6ビットの8ビット固定小数点数であるところ、UB*、VR*、及びWG*(*=0,1,2)の各パラメータは、符号なしで、整数部10ビット、小数部6ビットの16ビット固定小数点数であるため、「Aw」、「Bw」、及び「Cw」の値のMSB側に8ビットの「0」が連接される。また、「Au」、「Bu」、「Cu」、「Av」、「Bv」、及び「Cv」の値は、それぞれ符号なしで、整数部8ビット、小数部0ビットであるため、符号なしで、整数部2ビット、小数部6ビットの8ビット固定小数点数の「Aw」、「Bw」、及び「Cw」の値との乗算の結果は、符号なしで、整数部10ビット、小数部6ビットの16ビット固定小数点数となり、特に空白ビットは生じない。
バーテックスソータ114は、演算結果、つまり、各頂点0〜2のパラメータ(XY座標、パースペクティブコレクト後のUV座標、及びパースペクティブコレクト用パラメータ)を、ポリゴン/スプライト共通データCIとして、スライサ118に出力する。後述するが、バーテックスソータ114が出力するポリゴン/スプライト共通データCIの構成(形式)は、バーテックスエキスパンダ116が出力するポリゴン/スプライト共通データCIの構成(形式)と同じである。
次に、ポリゴンがグーローシェーディングの対象である場合を説明する。ポリゴンの3頂点A,B及びCのXY座標は、それぞれ(Ax,Ay)、(Bx,By)及び(Cx,Cy)で表される。「Ax」、「Ay」、「Bx」、「By」、「Cx」、及び「Cy」は、それぞれポリゴン構造体インスタンスのメンバAx、Ay、Bx、By、Cx、及びCyに格納された値である。このように、ポリゴン構造体インスタンスのメンバAx及びAyの値が、ポリゴンの頂点AのX座標及びY座標、メンバBx及びByの値が、ポリゴンの頂点BのX座標及びY座標、メンバCx及びCyの値が、ポリゴンの頂点CのX座標及びY座標となる。
また、ポリゴンの3頂点A,B及びCのカラーデータは、それぞれ(Ar,Ag,Ab)、(Br,Bg,Bb)及び(Cr,Cg,Cb)で表される。(Ar,Ag,Ab)、(Br,Bg,Bb)及び(Cr,Cg,Cb)は、それぞれポリゴン構造体インスタンスのメンバAc、Bc、及びCcに格納された値である。
Ab=Ac[14:10](青成分)、Ag=Ac[9:5](緑成分)、Ar=Ac[4:0](赤成分)、Bb=Bc[14:10](青成分)、Bg=Bc[9:5](緑成分)、Br=Bc[4:0](赤成分)、Cb=Cc[14:10](青成分)、Cg=Cc[9:5](緑成分)、Cr=Cc[4:0](赤成分)、である。
このように、ポリゴン構造体インスタンスのメンバAcの値が、ポリゴンの頂点Aのカラーデータ、メンバBcの値が、ポリゴンの頂点Bのカラーデータ、メンバCcの値が、ポリゴンの頂点Cのカラーデータとなる。
バーテックスソータ114は、図12の表に従って、頂点A,B及びCのパラメータ(XY座標及びカラーデータ)をY座標が小さい順にソート(並べ替え)する。ソート後の頂点は、Y座標が小さい順に頂点0,1,2として扱われる。この点は、テクスチャマッピングモードと同様である。頂点間のY座標がBy≦Ay<Cyである場合(図11(b))を例に挙げて説明する。
各頂点0〜2のX座標、Y座標、B値(青成分)、R値(赤成分)、及びG値(緑成分)を、X*、Y*、UB*、VR*、及びWG*(「*」は、「頂点」に付けた添え字であり、*=0,1,2)とすると、それぞれの値は以下のようになる。
頂点0については次の通りである。
X0=Bx
Y0=By
UB0=Bb
VR0=Br
WG0=Bg
Y0=By
UB0=Bb
VR0=Br
WG0=Bg
頂点1については次の通りである。
X1=Ax
Y1=Ay
UB1=Ab
VR1=Ar
WG1=Ag
Y1=Ay
UB1=Ab
VR1=Ar
WG1=Ag
頂点2については次の通りである。
X2=Cx
Y2=Cy
UB2=Cb
VR2=Cr
WG2=Cg
Y2=Cy
UB2=Cb
VR2=Cr
WG2=Cg
ここで、「UB*」、「VR*」、及び「WG*」(*=0,1,2)の各パラメータは、16ビットの値であるため、各色成分のLSB側に6ビット、MSB側に5ビットの「0」が連接される。
バーテックスソータ114は、演算結果、つまり、各頂点0〜2のパラメータ(XY座標、及びカラーデータ)を、ポリゴン/スプライト共通データCIとして、スライサ118に出力する。次に説明するが、バーテックスソータ114が出力するポリゴン/スプライト共通データCIの構成(形式)は、バーテックスエキスパンダ116が出力するポリゴン/スプライト共通データCIの構成(形式)と同じである。
図13は、ポリゴン/スプライト共通データCIの構成を示す図である。図13を参照して、ポリゴン/スプライト共通データCIは、フィールドF(1ビット),WG*(各16ビット),VR*(各16ビット),UB*(各16ビット),Y*(各10ビット)及びX*(各11ビット)からなる(計208ビット)。*=0,1,2であり、頂点を示す。
フィールドFは、ポリゴン/スプライト共通データCIが、ポリゴンについてのものであるか、スプライトについてのものであるか、を示すフラグフィールドである。従って、バーテックスソータ114は、ポリゴンを示す「1」をフィールドFに格納する。一方、バーテックスエキスパンダ116は、スプライトを示す「0」をフィールドFに格納する。
バーテックスエキスパンダ116から出力されるポリゴン/スプライト共通データCIでは、フィールドVR*,UB*,Y*及びX*は、それぞれ頂点*のV座標、U座標、Y座標、及びX座標である。この場合、フィールドWG*には、「0x0040」(=1.0)が格納される。上述したように、頂点*の出現順は、早いほうから頂点0、頂点1、及び頂点2である。
バーテックスソータ114から出力される、テクスチャマッピングの対象であるポリゴン/スプライト共通データCIでは、フィールドWG*,VR*,UB*,Y*及びX*は、それぞれ頂点*のパースペクティブコレクト用パラメータ、パースペクティブコレクト済みV座標、パースペクティブコレクト済みU座標、Y座標、及びX座標である。
バーテックスソータ114から出力される、グーローシェーディングの対象であるポリゴン/スプライト共通データCIでは、フィールドWG*,VR*,UB*,Y*及びX*は、それぞれ頂点*の緑成分、赤成分、青成分、Y座標、及びX座標である。
図2のスライサ118について説明する。まず、スライサ118による、グーローシェーディングモードのポリゴンに対する処理を説明する。
図14は、図2のスライサ118による、グーローシェーディングモードのポリゴンに対する処理の説明図である。図14を参照して、スライサ118は、与えられたポリゴン/スプライト共通データCIにより定義されるポリゴン(三角形)と、描画対象の水平ラインと、の交点のXY座標(Xs,Ys)及び(Xe,Ye)を求める。ここで、ポリゴンに対しては、描画対象の水平ラインと交わらない辺が存在する側の交点を終端(Xe,Ye)とし、当該辺が存在しない側の交点を始端(Xs,Ys)とする。
そして、スライサ118は、描画Y座標YrがY0≦Yr<Y1の範囲では、頂点0のRGB値(VR0,WG0,UB0)及び頂点2のRGB値(VR2,WG2,UB2)に基づいて、直線補間により、交点始端のRGB値(Rs,Gs,Bs)を算出するとともに、頂点0のRGB値(VR0,WG0,UB0)及び頂点1のRGB値(VR1,WG1,UB1)に基づいて、直線補間により、交点終端のRGB値(Re,Ge,Be)を算出する。また、スライサ118は、描画Y座標YrがY1≦Yr≦Y2の範囲では、頂点0のRGB値(VR0,WG0,UB0)及び頂点2のRGB値(VR2,WG2,UB2)に基づいて、直線補間により、交点始端のRGB値(Rs,Gs,Bs)を算出するとともに、頂点1のRGB値(VR1,WG1,UB1)及び頂点2のRGB値(VR2,WG2,UB2)に基づいて、直線補間により、交点終端のRGB値(Re,Ge,Be)を算出する。
そして、スライサ118は、ΔR、ΔG、ΔB及びΔXgを算出する。ここで、ΔR、ΔG、ΔBは、描画対象の水平ラインにおけるΔXgあたりのR、G、Bそれぞれの変化量であり、ΔXgは、描画対象の水平ラインにおける1ピクセルあたりのX座標の変化量である。ΔXgは、「+1」または「−1」のいずれかとなる。
ΔR=(Re−Rs)/(Xe−Xs)
ΔG=(Ge−Gs)/(Xe−Xs)
ΔB=(Be−Bs)/(Xe−Xs)
ΔXg=(Xe−Xs)/│Xe−Xs│
ΔG=(Ge−Gs)/(Xe−Xs)
ΔB=(Be−Bs)/(Xe−Xs)
ΔXg=(Xe−Xs)/│Xe−Xs│
スライサ118は、デプスコンパレータ112から受け取った構造体インスタンスと共に、算出したXs,Rs,Gs,Bs,Xe,ΔR,ΔG,ΔB及びΔXgを、ピクセルステッパ120へ送出する。また、スライサ118は、バーテックスソータ114から受け取ったポリゴン/スプライト共通データCIが、次の描画サイクルでも使用される場合は、リサイクルバッファ110に、デプスコンパレータ112から受け取った構造体インスタンスを書き込む。なお、ビデオタイミングジェネレータ138からの垂直走査カウント信号VC及びポリゴンの頂点座標から、次の描画サイクルでの使用の有無を知ることができる。
次に、スライサ118による、テクスチャマッピングモードのポリゴンに対する処理を説明する。
図15は、図2のスライサ118による、テクスチャマッピングモードのポリゴンに対する処理の説明図である。図15を参照して、スライサ118は、与えられたポリゴン/スプライト共通データCIにより定義されるポリゴン(三角形)と、描画対象の水平ラインと、の交点座標である始端(Xs,Ys)及び終端(Xe,Ye)を求める。この点は、グーローシェーディングモードのポリゴンに対する処理と同じである。
ここで、パースペクティブコレクト機能について説明する。透視投影変換された三次元イメージを表現するテクスチャマッピングにおいて、スクリーン上の描画ピクセルに対応するテクセルを、ポリゴンの各頂点座標に対応する、UV空間のテクスチャの各頂点座標の単なる線形補完によって求めると、マッピングされたイメージが歪んでしまうことがある。この歪みを解消するのがパースペクティブコレクト機能であり、具体的には、以下のような処理が行われる。
ポリゴンの各頂点A,B,CをUV空間へ写像したときの座標を、(Au,Av),(Bu,Bv),(Cu,Cv)とする。また、各頂点A,B,Cのビュー座標を(Ax,Ay,Az),(Bx,By,Bz),(Cx,Cy,Cz)とする。そして、(Au/Az,Av/Az,1/Az),(Bu/Bz,Bv/Bz,1/Bz),(Cu/Cz,Cv/Cz,1/Cz)の線形補間によって求められた値(u/z,v/z,1/z)のu/zに1/zの逆数を乗じた値uおよびv/zに1/zの逆数を乗じた値v、つまり(u,v)をテクセル座標(U,V)としてテクセルデータを取得することにより、透視投影変換後の正確なテクスチャマッピングを実現する。ここで、ビュー座標とは、ビュー座標系の座標である。ビュー座標系は、XYZの三軸から成る三次元直交座標系であり、視点を原点とし、視線をZ軸の正とする。
本実施の形態では、1/Az,1/Bz,1/Czを頂点毎に設定する代りに、それぞれの値にAzを掛け合わせた値、すなわち、Az/Az(=Aw),Az/Bz(=Bw),Az/Cz(=Cw)をポリゴン構造体に設定する(図3参照)。但し、頂点Aに対するパラメータAwは常に「1」となるため、ポリゴン構造体には設定しない。
従って、本実施の形態では、(Au・Aw,Av・Aw,Aw),(Bu・Bw,Bv・Bw,Bw),(Cu・Cw,Cv・Cw,Cw)の線形補間によって求められた値(u・w,v・w,w)のu・wに1/wを乗じた値uおよびv・wに1/wを乗じた値v、つまり(u,v)をテクセル座標(U,V)としてテクセルデータを取得することにより、透視投影変換後の正確なテクスチャマッピングを実現する。
このことを念頭においた上で、スライサ118は、描画Y座標YrがY0≦Yr<Y1の範囲では、頂点0の(UB0,VR0,WG0)、及び頂点2の(UB2,VR2,WG2)に基づいて、直線補間により、交点始端の(Us,Vs,Ws)を算出するとともに、頂点0の(UB0,VR0,WG0)、及び頂点1の(UB1,VR1,WG1)に基づいて、直線補間により、交点終端の(Ue,Ve,We)を算出する。また、スライサ118は、描画Y座標YrがY1≦Yr≦Y2の範囲では、頂点0の(UB0,VR0,WG0)、及び頂点2の(UB2,VR2,WG2)に基づいて、直線補間により、交点始端の(Us,Vs,Ws)を算出するとともに、頂点1の(UB1,VR1,WG1)、及び頂点2の(UB2,VR2,WG2)に基づいて、直線補間により、交点終端の(Ue,Ve,We)を算出する。
このことを、頂点間のY座標がBy≦Ay<Cyであり、描画Y座標YrがY1≦Yr≦Y2の範囲である場合を例に挙げて説明する。そうすると、スライサ118は、頂点0の(UB0,VR0,WG0)=(Bu・Bw,Bv・Bw,Bw)、及び頂点2の(UB2,VR2,WG2)=(Cu・Cw,Cv・Cw,Cw)に基づいて、直線補間により、交点始端の(Us,Vs,Ws)を算出するとともに、頂点1の(UB1,VR1,WG1)=(Au・Aw,Av・Aw,Aw)、及び頂点2の(UB2,VR2,WG2)=(Cu・Cw,Cv・Cw,Cw)に基づいて、直線補間により、交点終端の(Ue,Ve,We)を算出する。
次に、スライサ118は、ΔU、ΔV、ΔW及びΔXtを算出する。ここで、ΔU、ΔV、ΔWは、描画対象の水平ラインにおけるΔXtあたりのU座標(=u・w)、V座標(=v・w)、パースペクティブコレクト用パラメータW(=w)それぞれの変化量であり、ΔXtは、描画対象の水平ラインにおける1ピクセルあたりのX座標の変化量である。ΔXtは、「+1」または「−1」のいずれかとなる。
ΔU=(Ue−Us)/(Xe−Xs)
ΔV=(Ve−Vs)/(Xe−Xs)
ΔW=(We−Ws)/(Xe−Xs)
ΔXt=(Xe−Xs)/│Xe−Xs│
ΔV=(Ve−Vs)/(Xe−Xs)
ΔW=(We−Ws)/(Xe−Xs)
ΔXt=(Xe−Xs)/│Xe−Xs│
スライサ118は、デプスコンパレータ112から受け取った構造体インスタンスと共に、算出したXs,Us,Vs,Ws,Xe,ΔU,ΔV,ΔW及びΔXtを、ピクセルステッパ120へ送出する。また、スライサ118は、バーテックスソータ114から受け取ったポリゴン/スプライト共通データCIが、次の描画サイクルでも使用される場合は、リサイクルバッファ110に、デプスコンパレータ112から受け取った構造体インスタンスを書き込む。なお、ビデオタイミングジェネレータ138からの垂直走査カウント信号VC及びポリゴンの頂点座標から、次の描画サイクルでの使用の有無を知ることができる。
次に、スライサ118によるスプライトに対する処理を説明する。
図16は、図2のスライサ118による、スプライトに対する処理の説明図である。図16を参照して、スライサ118は、与えられたポリゴン/スプライト共通データCIにより定義されるスプライト(矩形)と、描画対象の水平ラインと、の交点座標(Xs,Ys)及び(Xe,Ye)を求める。ここで、スプライトに対しては、先に描画される側の交点を始端(Xs,Ys)とし、後に描画される側の交点を終端(Xe,Ye)とする。
スプライトの各頂点0,1,2,3をUV空間へ写像したときの座標は、(UB0,VR0),(UB1,VR1),(UB2,VR2),(UB3,VR3)である。ここで、UB3,VR3はスライサ118に入力されないが、それぞれ下記のようにスライサ118内で求められる。
UB3=UB1
VR3=VR2
VR3=VR2
スライサ118は、頂点0の(UB0,VR0)及び頂点2の(UB2,VR2)に基づいて、直線補間により、交点始端のUV座標(Us,Vs)を算出するとともに、頂点1の(UB1,VR1)及び頂点3の(UB3,VR3)に基づいて、直線補間により、交点終端のUV座標(Ue,Ve)を算出する。
そして、スライサ118は、ΔUおよびΔVを算出する。ここで、ΔU、ΔVは、描画対象の水平ラインにおけるΔXsあたりのU座標、V座標それぞれの変化量である。ΔXsは、描画対象の水平ラインにおける1ピクセルあたりのX座標の変化量であるが、常に「1」となるので、算出は行わない。
ΔU=(Ue−Us)/(Xe−Xs)
ΔV=(Ve−Vs)/(Xe−Xs)
ΔXs=(Xe−Xs)/│Xe−Xs│=1
ΔV=(Ve−Vs)/(Xe−Xs)
ΔXs=(Xe−Xs)/│Xe−Xs│=1
スライサ118は、デプスコンパレータ112から受け取った構造体インスタンスと共に、算出したXs,Us,Vs,Xe,ΔU,ΔV及びΔXsを、ピクセルステッパ120へ送出する。また、スライサ118は、バーテックスエキスパンダ116から受け取ったポリゴン/スプライト共通データCIが、次の描画サイクルでも使用される場合は、リサイクルバッファ110に、デプスコンパレータ112から受け取った構造体インスタンスを書き込む。なお、ビデオタイミングジェネレータ138からの垂直走査カウント信号VC及びスプライトの頂点座標から、次の描画サイクルでの使用の有無を知ることができる。
ここで、スライサ118は、ポリゴン/スプライト共通データCIのフィールドFから、ポリゴンおよびスプライトの別を認識でき、ポリゴン構造体インスタンスのメンバTypeから、グーローシェーディング及びテクスチャマッピングの別を認識できる。
図2に戻って、ピクセルステッパ120は、グーローシェーディングモードのポリゴンについては、スライサ118から与えられたパラメータ(Xs,Rs,Gs,Bs,Xe,ΔR,ΔG,ΔB及びΔXg)から、描画対象ピクセルの描画X座標とRGB値を求め、(1−α)値とともにピクセルディザ122に送出する。具体的には、ピクセルステッパ120は、交点の始端(描画開始端)Xsの赤成分Rsに、1ピクセル当たりの赤成分の変化量ΔRを順次加えていき、各ピクセルの赤成分RXを求める。この処理を、交点の終端(描画終了端)Xeに到達するまで行う。緑成分GX及び青成分BXについても同様である。また、交点の始端XsにΔXgを順次加えていき、描画X座標Xrを求める。なお、X=0〜|Xe−Xs|であり、整数である。
RX=ΔXg・ΔR・X+Rs
GX=ΔXg・ΔG・X+Gs
BX=ΔXg・ΔB・X+Bs
Xr=ΔXg・X+Xs
GX=ΔXg・ΔG・X+Gs
BX=ΔXg・ΔB・X+Bs
Xr=ΔXg・X+Xs
ピクセルステッパ120は、求めた各ピクセルのRGB値(RX,GX,BX)、並びに描画X座標Xrを、(1−α)値並びにデプス値(Depth)とともに、ピクセルディザ122に出力する。
また、ピクセルステッパ120は、テクスチャマッピングモードのポリゴンについては、スライサ118から与えられたパラメータ(Xs,Us,Vs,Ws,Xe,ΔU,ΔV,ΔW及びΔXt)から、描画対象ピクセルをUV空間へ写像したときの座標(U,V)を求める。具体的には、ピクセルステッパ120は、交点の始端(描画開始端)Xsのパースペクティブコレクト用パラメータWsに、1ピクセル当たりのパースペクティブコレクト用パラメータの変化量ΔWを順次加えていき、各ピクセルのパースペクティブコレクト用パラメータWXを求める。この処理を、交点の終端(描画終了端)Xeに到達するまで行う。なお、X=0〜|Xe−Xs|であり、整数である。
WX=ΔXt・ΔW・X+Ws
ピクセルステッパ120は、交点の始端(描画開始端)XsのU座標(=u・w)Usに、1ピクセル当たりのU座標の変化量ΔUを順次加えていき、求めた値にWXの逆数を掛け合わせ、各ピクセルのU座標UXを求める。この処理を、交点の終端(描画終了端)Xeに到達するまで行う。V座標(=v・w)VXについても同様である。また、交点の始端XsにΔXtを順次加えていき、描画X座標Xrを求める。なお、X=0〜|Xe−Xs|であり、整数である。
UX=(ΔXt・ΔU・X+Us)・(1/WX)
VX=(ΔXt・ΔV・X+Vs)・(1/WX)
Xr=ΔXt・X+Xs
VX=(ΔXt・ΔV・X+Vs)・(1/WX)
Xr=ΔXt・X+Xs
ピクセルステッパ120は、求めた各ピクセルのUV座標(UX,VX)並びに描画X座標Xrを、スライサ118から受け取った構造体インスタンス(テクスチャマッピングのポリゴン構造体インスタンス及びテクスチャアトリビュート構造体インスタンス)とともにテクセルマッパ124に出力する。
さらに、ピクセルステッパ120は、スプライトについては、スライサ118から与えられたスプライトのパラメータ(Xs,Us,Vs,Xe,ΔU,ΔV及びΔXs)から描画対象ピクセルをUV空間へ写像したときの座標(U,V)を求める。具体的には、ピクセルステッパ120は、交点の始端(描画開始端)XsのU座標Usに、1ピクセル当たりのU座標の変化量ΔUを順次加えていき、各ピクセルのU座標UXを求める。この処理を、交点の終端(描画終了端)Xeに到達するまで行う。V座標VXについても同様である。また、交点の始端XsにΔXs、すなわち「1」を順次加えていき、描画X座標Xrを求める。なお、X=0〜|Xe−Xs|であり、整数である。
UX=ΔXs・ΔU・X+Us
VX=ΔXs・ΔV・X+Vs
Xr=X+Xs
VX=ΔXs・ΔV・X+Vs
Xr=X+Xs
ピクセルステッパ120は、求めた各ピクセルのUV座標(UX,VX)、並びに描画X座標Xrを、スライサ118から受け取った構造体インスタンス(スプライト構造体インスタンス及びテクスチャアトリビュート構造体インスタンス)とともにテクセルマッパ124に出力する。
ピクセルディザ122は、ピクセルステッパ120から与えられたRGB値の小数部にノイズを加え、マッハバンドを目立たなくするディザリングを実行する。なお、ピクセルディザ122は、ディザリング後のピクセルのRGB値を、描画X座標Xr,(1−α)値,及びデプス値とともにカラーブレンダ132に出力する。
テクセルマッパ124は、テクスチャアトリビュート構造体のメンバFilterが「0」を示している場合には座標(UX,VX)の近傍4つのテクセルデータを指し示す4組のワードアドレスWADとビットアドレスBADを、メンバFilterが「1」を示している場合には座標(UX,VX)に最も近い1つのテクセルデータを指し示す1組のワードアドレスWADとビットアドレスBADを算出して出力する。また、メンバFilterが「0」を示している場合には、バイリニアフィルタリングにおける各テクセルの係数部に相当するバイリニアフィルタパラメータBFPを算出して出力する。更に、シザリングイネーブル時のスプライトと、シザリングディセーブル時のスプライトと、ポリゴンと、で互いに異なるデプス値(メンバDepth)の形式を統一して出力する。
テクスチャキャッシュブロック126は、テクセルマッパ124から出力されたワードアドレスWAD、ビットアドレスBAD、構造体インスタンスのメンバTsegmentから、各テクセルのアドレスを算出する。算出されたアドレスが指し示すテクセルデータが既にキャッシュに格納されている場合、格納されているテクセルデータ及びアトリビュート構造体のメンバPaletteから、カラーパレットRAM11のエントリを選択するインデックスを生成し、カラーパレットRAM11に出力する。
一方、当該テクセルデータが、キャッシュに格納されていない場合は、テクスチャキャッシュブロック126は、メモリマネージャ140に対して、テクセルデータの取得指示を出す。メモリマネージャ140は、メインRAM25あるいは外部メモリ50から該当するテクスチャパターンデータを取得して、テクスチャキャッシュブロック126のキャッシュに格納する。また、メモリマネージャ140は、マージソータ106からの指示で、後段で必要になるテクスチャパターンデータを、外部メモリ50から取得して、メインRAM25に格納する。
この際、メモリマネージャ140は、テクスチャマッピングモードのポリゴン用のテクスチャパターンデータについては、1ポリゴンにマッピングされるデータ全体を一括して取得し、メインRAM25に格納するのに対し、スプライト用のテクスチャパターンデータについては、1スプライトにマッピングされるデータをライン単位で取得し、メインRAM25に格納する。これは、描画対象の水平ラインに含まれるピクセル群をUV空間に写像すると、ポリゴンの場合はUV空間中のあらゆる直線上に写像される可能性があるのに対し、スプライトの場合はU軸に平行な直線上にのみ写像されるからである。
本実施の形態では、テクスチャキャッシュブロック126のキャッシュは、64ビット×4エントリとし、ブロック置換アルゴリズムは、LRU(least recently used)とする。
カラーパレットRAM11は、テクスチャキャッシュブロック126から入力されたテクセルデータとメンバPaletteとが連接されたインデックスが示すエントリに含まれるRGB値及び半透明合成のための(1−α)値を、バイリニアフィルタパラメータBFP、デプス値、及び描画X座標Xrとともにバイリニアフィルタ130に出力する。
バイリニアフィルタ130は、バイリニアフィルタリングを実行する。テクスチャマッピングにおいて、最も単純なピクセル描画色の算出方法は、UV空間に写像されたピクセル座標(UX,VX)に最も近いテクセル座標に位置するテクセルのカラーデータを取得し、取得したカラーデータからピクセルの描画色を算出する方法である。この手法を「ニアレストネイバー」と呼ぶ。
但し、隣り合うピクセルをUV空間に写像した際の2点間の距離が1テクセル分の距離より極めて小さい場合、すなわち、スクリーン上でテクスチャが大きく拡大されてマッピングされる場合には、ニアレストネイバーではテクセルの境界が明瞭に表示されてしまうため、粗いモザイク状のテクスチャマッピングとなってしまう。このような問題を解消する手法として、バイリニアフィルタリングを実行する。
図17は、バイリニアフィルタ130によるバイリニアフィルタリングの説明図である。図17に示すように、バイリニアフィルタ130は、UV空間に写像されたピクセル座標(UX,VX)の近傍4テクセルのRGB値及び(1−α)値の加重平均を算出し、ピクセルの描画色を決定する。これにより、テクセルのカラーが滑らかに補完され、マッピング結果におけるテクセルの境界が目立たなくなる。具体的には、バイリニアフィルタリングは次式(バイリニアフィルタリングの式)により実行される。ただし、次式において、「u」はU座標UXの小数部、「v」はV座標VXの小数部、「nu」は(1−u)、「nv」は(1−v)、である。
R=R0・nu・nv+R1・u・nv+R2・nu・v+R3・u・v
G=G0・nu・nv+G1・u・nv+G2・nu・v+G3・u・v
B=B0・nu・nv+B1・u・nv+B2・nu・v+B3・u・v
A=A0・nu・nv+A1・u・nv+A2・nu・v+A3・u・v
G=G0・nu・nv+G1・u・nv+G2・nu・v+G3・u・v
B=B0・nu・nv+B1・u・nv+B2・nu・v+B3・u・v
A=A0・nu・nv+A1・u・nv+A2・nu・v+A3・u・v
ここで、R0,R1,R2及びR3は、それぞれ、上記4テクセルのR値であり、G0,G1,G2及びG3は、それぞれ、上記4テクセルのG値であり、B0,B1,B2及びB3は、それぞれ、上記4テクセルのB値であり、A0,A1,A2及びA3は、それぞれ、上記4テクセルの(1−α)値である。
バイリニアフィルタ130は、算出したピクセルのRGB値(RGB)並びに(1−α)値(A)を、デプス値並びに描画X座標Xrとともに、カラーブレンダ132に出力する。
図2を参照して、カラーブレンダ132の説明の前に、ラインバッファブロック134について説明する。ラインバッファブロック134は、ラインバッファLB1及びLB2を含み、一方のラインバッファが表示用に使用されているときは、他方のラインバッファが描画用に使用され、表示用と描画用とを交互に切り替えて使用するダブルバッファ方式を採用する。表示用に使用されているラインバッファ(LB1,LB2)は、ビデオタイミングジェネレータ138からの水平走査カウント信号HC及び垂直走査カウント信号VCに従って、ピクセルごとのRGB値を、ビデオエンコーダ136に出力する。
カラーブレンダ132は、半透明合成を実行する。具体的には、次の通りである。カラーブレンダ132は、ピクセルディザ122あるいはバイリニアフィルタ130から与えられたピクセルのRGB値及び(1−α)値と、描画対象のラインバッファ(LB1,LB2)の描画対象ピクセル位置(描画X座標Xrが示すピクセル)に格納されているRGB値とを用い、次式により、アルファブレンディングを実行し、結果を同じラインバッファ(LB1,LB2)の描画対象ピクセル位置に書き込む。
Rb=Rf・(1−αr)+Rr
Gb=Gf・(1−αr)+Gr
Bb=Bf・(1−αr)+Br
αb=αf・(1−αr)+αr
Gb=Gf・(1−αr)+Gr
Bb=Bf・(1−αr)+Br
αb=αf・(1−αr)+αr
ここで、「1−αr」は、ピクセルディザ122あるいはバイリニアフィルタ130から与えられた(1−α)値である。「Rr」、「Gr」及び「Br」は、それぞれ、ピクセルディザ122あるいはバイリニアフィルタ130から与えられたRGB値である。「Rf」、「Gf」及び「Bf」は、それぞれ、描画用に使用されているラインバッファ(LB1,LB2)の描画対象ピクセル位置から取得したRGB値である。一般的なアルファブレンディングのアルゴリズムにおいては、上式のRr,Gr,およびBrの項は、それぞれRr・αr、Gr・αr、およびBr・αrとなるが、本実施の形態では、予めRr・αr,Gr・αr,およびBr・αrの計算結果をRr、Gr、およびBrとして用意しておくことにより、演算回路の簡略化を行っている。
ビデオエンコーダ136は、表示用に使用されているラインバッファ(LB1,LB2)から入力されたRGB値と、ビデオタイミングジェネレータ138から入力されたタイミング情報(複合同期信号SYN、複合ブランキング信号BLK、バーストフラグ信号BST、及びライン交番信号LA等)と、を信号VSに対応したコンポジットビデオ信号を表すデータストリームVDに変換する。信号VSは、テレビジョン方式(NTSCやPAL等)を指示する信号である。
ビデオタイミングジェネレータ138は、入力されるクロックを基に、水平走査カウント信号HC及び垂直走査カウント信号VC、並びに、複合同期信号SYN、複合ブランキング信号BLK、バーストフラグ信号BST、及びライン交番信号LA等のタイミング信号を生成する。水平走査カウント信号HCは、システムクロックの1周期毎にカウントアップされ、1水平ラインのスキャンが終了すると、リセットされる。また、垂直走査カウント信号VCは、1/2水平ラインのスキャンが終了するたびにカウントアップされ、1フレームあるいは1フィールドのスキャンが終了すると、垂直走査カウント信号VCはリセットされる。
さて、以上のように、本実施の形態によれば、バーテックスソータ114及びバーテックスエキスパンダ116は、ポリゴン構造体およびスプライト構造体を同一形式のポリゴン/スプライト共通データCIに変換するので、ポリゴンとスプライトとで、RPU9の内部回路を極力共通化することができる。このため、ハードウェア規模の抑制を図ることができる。
また、従来のように3Dシステム(ポリゴンの描画)だけではなく、2Dシステム(スプライトの描画)をも搭載しているので、スプライトを描画する場合は、スプライト全体のテクスチャ画像を一括して取得する必要はなく、例えば、上記のように、スクリーンにおける1ライン単位でのテクセルデータの取得が可能である。このため、メモリ容量の増大を招くことなく、同時に描画できるポリゴン及びスプライトの数を多くできる。
以上の結果、ハードウェア規模を抑制しながらも、二次元空間に投影された三次元立体の各面の形状を表すためのポリゴンおよびスクリーンの枠に平行なスプライトの任意の組み合わせからなる画像を生成でき、かつ、メモリ容量の増大を招くことなく、同時に描画できるポリゴン及びスプライトの数を多くできる。
また、本実施の形態では、バーテックスソータ114は、ポリゴン/スプライト共通データCIのフィールドUB*、VR*、及びWG*(*=0〜2)に、描画モード(テクスチャマッピングあるいはグーローシェーディング)に応じた形式で頂点*のパラメータを格納するので、ポリゴン/スプライト共通データCIの形式の同一性を保持しながらも、3Dシステムにおいて、異なる描画モードでの描画を実現できる。
さらに、本実施の形態では、スプライトの3つの頂点1〜3の座標を計算で求めるので、スプライト構造体に4つの頂点0〜3全ての座標を含める必要はなく、スプライト構造体の格納に必要なメモリ容量を抑制できる。もちろん、スプライトの3つの頂点1〜3の座標のうちの一部を計算で求め、他をスプライト構造体に格納することもできる。また、バーテックスエキスパンダ116が算出するUV空間へ写像された座標は、スプライトの拡縮率ZoomX,ZoomYが反映されたものであるため、原画像を拡大または縮小した画像をスクリーンに表示する場合でも、拡大後または縮小後の画像データを予めメモリMEM上に用意する必要はなく、画像データの格納に必要なメモリ容量を抑制できる。
さらに、本実施の形態では、ポリゴン/スプライト共通データCIの同一性を保持しながらも、ポリゴン/スプライト共通データCIを受け取るスライサ118は、フラグフィールドを参照することにより、描画対象のグラフィック要素の種類(ポリゴンあるいはスプライト)を容易に判別して、グラフィック要素の種類ごとの処理を行うことができる。
さらに、本実施の形態では、ポリゴンおよびスプライトのいずれについても、ポリゴン/スプライト共通データCIにおいて、頂点の出現順に並べられているので、後段での描画処理が容易になる。
さらに、本実施の形態では、スライサ118は、スクリーン座標系における単位X座標当りの頂点パラメータの変化量(ΔR、ΔG、ΔB、ΔXg、ΔU、ΔV、ΔW、ΔXt、ΔXs)をピクセルステッパ120に送出するので、ピクセルステッパ120は、ポリゴンと描画水平ラインとの2つの交点間の各パラメータ(RX、GX、BX、UX、VX、Xr)およびスプライトと描画水平ラインとの交点間の各パラメータ(UX、VX、Xr)を線形補間により容易に算出できる。
さらに、本実施の形態では、マージソータ106は、マージソートルール1〜4に従って、ポリゴン構造体インスタンス及びスプライト構造体インスタンスを描画優先順に整列した上で、同じ単一のデータ列、つまり、ポリゴン/スプライトデータPSDとして出力するので、ポリゴンとスプライトとで、後段の回路を極力共通化でき、ハードウェア規模の抑制を一層図ることができる。
さらに、本実施の形態では、マージソータ106は、ポリゴンの出現頂点座標(3頂点のうち最も小さいY座標)とスプライトの出現頂点座標(4頂点のうち最も小さいY座標)とを比較して、スクリーンに早く出現する方の描画優先順位が高くなるように(マージソートルール1)、マージソートを行う。このため、後段では、ポリゴン/スプライトデータPSDとして出力されるポリゴン構造体インスタンス及びスプライト構造体インスタンスに対して、出力順に描画処理を行うだけでよい。このため、1フレーム以上の画像を格納するための大容量のバッファ(フレームバッファ等)を実装する必要は必ずしもなく、より容量の小さいバッファ(ラインバッファや、1ラインに満たないピクセルを描画するピクセルバッファ等)を実装した場合であっても、多くのポリゴン及びスプライトを組み合わせた画像の表示が可能になる。
また、マージソータ106は、ポリゴンとスプライトとで出現頂点座標が同じ場合、描画対象の水平ラインにおいて、デプス値が大きい順で描画優先順位を決定する(マージソートルール2)。従って、描画対象の水平ラインにおいて、より奥に描画されるポリゴンあるいはスプライトが先に描画される(デプス値の順での描画)。
さらに、マージソータ106は、ポリゴン及びスプライトの双方の出現頂点座標が、最初に描画するライン(つまり、スクリーンの先頭ライン)より前に位置する場合は、それらを同一座標とみなすので(マージソートルール3)、デプス値に基づいて、より奥に描画される方を描画優先順位が高いと判断する。従って、スクリーンの先頭ラインにおいて、ポリゴン及びスプライトは、デプス値の順で描画される。このような先頭ラインでの処理を行わない場合、先頭ラインの描画においては、必ずしもデプス値の順での描画が保証されないが、この構成によれば、先頭ラインからデプス値の順での描画を行うことが可能となる。
さらに、マージソータ106は、インタレース表示が行われる場合において、表示対象のフィールドで描画されない水平ラインに相当する出現頂点座標と、その水平ラインの次の水平ライン(表示対象のフィールドで描画される水平ライン)に相当する出現頂点座標と、を同一座標として扱うので(マージソートルール4)、デプス値に基づいて、より奥に描画される方を描画優先順位が高いと判断する。従って、インタレース表示の場合でもデプス値の順での描画処理が保証される。
以上のように、マージソートルール2〜4により、デプス値の順での描画処理が保証されるので、半透明合成を適切に行うことができる。何故ならば、半透明のグラフィック要素の描画色は、当該グラフィック要素の奥にあるグラフィック要素の描画色に依存するため、グラフィック要素を奥から順に描画する必要があるからである。
さて、次に、テクスチャの繰り返しマッピング、及びテクスチャパターンデータのメモリMEMへの格納方式(フォーマット種別)について説明する。
まず、テクスチャの繰り返しマッピングについて説明する。テクスチャアトリビュート構造体のメンバM及びNのいずれか一方または両方が「1」以上の値を示すとき、テクスチャパターンデータは、UV空間において水平方向及び/又は垂直方向において繰り返されて配置される。従って、XY空間において、ポリゴン及びスプライトには、当該テクスチャが、繰り返しマッピングされる。
以下、これらの点について、具体例を挙げながら説明するが、その前に、ST座標系について説明しておく。ST座標系は、テクスチャを構成する各テクセルが、メモリMEMに格納される態様で配置される二次元直交座標系である。後述のテクスチャパターンデータの分割格納が行われない場合は、(S,T)=(後述するマスク済みのUX,後述するマスク済みのVX)となる。U座標UX及びV座標VXは、ピクセルステッパ120が算出した値である。
一方、UV座標系は上述の通り、テクスチャを構成する各テクセルが、ポリゴンあるいはスプライトにマッピングされる態様で配置される二次元直交座標系である。つまり、UV座標系における座標は、ピクセルステッパ120が算出したU座標UXおよびV座標VXであって、後述のマスク前のU座標UXおよびV座標VXによって定められる。
なお、UV空間及びST空間ともに、テクスチャ(テクセル)が配置される点で、テクセル空間と言うことができる。
図18(a)は、繰り返しマッピングが行われる場合において、ST空間に配置された四角形のテクスチャの例示図、図18(b)は、繰り返しマッピングが行われる場合において、UV空間に配置された、ポリゴンにマッピングされるテクスチャの例示図、図18(c)は、図18(b)のテクスチャが繰り返してマッピングされた、XY空間におけるポリゴンの例示図である。
図18(a)〜図18(c)では、メンバM=4、メンバN=5の場合を例に挙げている。メンバMは、U座標UX(上位8ビットが整数部、下位3ビットが小数部)においてマスクされる上位ビットの数を8ビットで表したものであり、メンバNは、V座標VX(上位8ビットが整数部、下位3ビットが小数部)においてマスクされる上位ビットの数を8ビットで表したものである。
図18(a)には、ST空間におけるポリゴンのテクスチャパターンデータ(文字R)が例示される。この図において、1つの小矩形は、1テクセルを示す。そして、テクセルの4頂点のうち、左上角のST座標が、そのテクセルの位置を示す。
M=4、N=5の場合、U座標UXの上位4ビットとV座標VXの上位5ビットがマスクされて「0」となるため、テクセルデータがメモリMEMに格納される際のST空間は、S=0〜15、T=0〜7の範囲へと縮小される。つまり、S=0〜15、T=0〜7の範囲のみに、テクセルデータが格納される。
このように、U座標UXの上位4ビットとV座標VXの上位5ビットがマスクされ、ST空間が図18(a)のように縮小されると、UV空間においては、図18(b)に示すように、水平16テクセル、垂直8テクセルから構成される四角形のテクスチャが、水平方向および垂直方向に繰り返される。
図18(c)を参照して、この例では、テクスチャアトリビュート構造体のメンバWidth=31、メンバHeight=19の場合である。水平16テクセル、垂直8テクセルのテクスチャが、ポリゴンに繰り返しマッピングされる様子が理解できる。この図において、1つの小矩形は、ピクセルの集合からなり、図18(b)の1テクセルに対応する。また、1つの小三角形は、ピクセルの集合からなり、図18(b)の1テクセルに対応する。
なお、スプライトへ繰り返しマッピングする場合についても、ポリゴンの場合と同様であり、説明を省略する。
次に、テクスチャパターンデータのメモリMEMへの格納方式(フォーマット種別)について説明する。まず、ポリゴンにマッピングされるテクスチャパターンデータについて説明する。
図19(a)は、ポリゴン構造体のメンバMAPが「0」の場合において、ST空間に配置された、ポリゴンにマッピングされるテクスチャの例示図、図19(b)は、ポリゴン構造体のメンバMAPが「1」の場合において、ST空間に配置された、ポリゴンにマッピングされるテクスチャの例示図である。
図19(a)及び図19(b)を参照して、小さい正方形は1テクセルを表し、横長の小さい長方形は1メモリワードに格納されるテクセル列(以下、「テクセルブロック」と呼ぶ。)を表し、横長の大きな長方形(太線の長方形)はテクスチャパターンデータの1ブロックを表す。また、本実施の形態では、1メモリワードを64ビットとする。
これらの図において、テクスチャTXは、直角三角形である。テクスチャTXは、S軸(U軸)に平行な直線により、切片sgf及び切片sfbに分割される。そして、切片sgf(図中左側のハッチング部)は、UV空間におけるそのままの状態でST空間(具体的には二次元配列A)に格納され、切片sgb(図中右側のハッチング部)は、UV空間において180度回転及び移動して、ST空間(具体的には二次元配列A)に格納される。このような方式で、テクスチャパターンデータの1ブロック(太線)がメモリMEMに格納される。このような格納方式を、「テクスチャパターンデータの分割格納」と呼ぶ。
ただし、メンバMapの値とメンバHeightの値とが特定の組み合わせになった場合、及び、上記した繰り返しマッピングが行われる場合には、テクスチャパターンデータの分割格納は行われない。
ここで、テクセルブロックを表す長方形の[]内の数字は、1ブロックのテクスチャパターンデータを上記の二次元配列Aとみなし、各テクセルブロックを二次元配列Aの要素とみなした場合の、配列Aの添え字(インデックス)を示す。二次元配列Aの添え字が小さい要素に格納されたデータから順にメモリMEMに格納される。
図中、テクセルブロックの水平テクセル数は「w」、垂直テクセル数は「h」で示される。水平テクセル数wおよび垂直テクセル数hの値は、メンバMapの値とメンバBitの値により定められる。下記の(表1)は、メンバMap=0の場合におけるメンバBitと水平テクセル数w及び垂直テクセル数h(つまりテクセルブロックのサイズ)との関係を示している。
(表1)から明らかなように、図19(a)は、Map=0、Bit=4の場合のテクスチャパターンデータの分割格納の様子を表している。
下記の(表2)は、メンバMap=1の場合におけるメンバBitと水平テクセル数w及び垂直テクセル数h(つまりテクセルブロックのサイズ)との関係を示している。
(表2)から明らかなように、図19(b)は、Map=1、Bit=4の場合のテクスチャパターンデータの分割格納の様子を表している。
以上のように、テクスチャパターンデータの分割格納が行われる場合、分割されたテクスチャTXの切片sgbが、マッピングには不要な領域のテクセルに置き換えられてメモリMEMに格納されるため、必要なメモリ容量を抑制できる。
次に、スプライトにマッピングされるテクスチャパターンデータの格納方式について説明する。
図20は、ST空間に配置された、スプライトにマッピングされるテクスチャの例示図である。図20を参照して、小さい正方形は1テクセルを表し、横長の小さい長方形はテクセルブロックを表し、横長の大きな長方形(太線の長方形)はテクスチャパターンデータの1ブロックを表す。また、本実施の形態では、1メモリワードを64ビットとする。
この図において、テクスチャTXは、四角形(ハッチング部)である。テクスチャTXは、UV空間におけるそのままの状態でST空間(具体的には二次元配列B)に格納される。このような形態で、テクスチャパターンデータの1ブロック(太線)がメモリMEMに格納される。なお、スプライトにマッピングされるテクスチャパターンデータについては、分割格納は行われない。
ここで、テクセルブロックを表す長方形の[]内の数字は、1ブロックのテクスチャパターンデータを上記の二次元配列Bとみなし、各テクセルブロックを二次元配列Bの要素とみなした場合の、配列Bの添え字(インデックス)を示す。二次元配列Bの添え字が小さい要素に格納されたデータから順にメモリMEMに格納される。
図中、テクセルブロックの水平テクセル数は「w」、垂直テクセル数は「h」で示される。水平テクセル数wおよび垂直テクセル数hの値は、メンバBitの値により定められる。メンバBitと水平テクセル数w及び垂直テクセル数h(つまりテクセルブロックのサイズ)との関係は、(表1)と同じである。
次に、テクセルブロックの詳細を説明する。
図21(a)は、ポリゴン構造体のメンバMAPが「0」の場合におけるST空間上のテクセルブロックの説明図、図21(b)は、ポリゴン構造体のメンバMAPが「1」の場合におけるST空間上のテクセルブロックの説明図、図21(c)は、1メモリワードへのテクセルブロックの格納状態の説明図である。なお、上述のように、スプライトのST空間上のテクセルブロックの構成は、メンバMAPが「0」の場合のポリゴンのそれと同じである。
図21(a)は、メンバMAP=0、メンバBit=4の場合であり、テクセルブロックは、左端のテクセル#0を先頭とし、順次右隣のテクセル#1,#2,…,#11が続けて配置されてなる。
図21(b)は、メンバMAP=1、メンバBit=4の場合であり、テクセルブロックは、左上角のテクセル#0を先頭とし、順次右隣のテクセル#1,#2,#3が続けて配置され、右端に達すると、一行下の左端のテクセル#4から順次右隣のテクセル#5,#6,#7が続けて配置され、再び右端に達すると、一行下の左端のテクセル#8から順次右隣のテクセル#9,#10,#11が続けて配置されてなる。
図21(c)を参照して、メンバBit=4の場合(図21(a)及び図21(b)が該当)、1テクセルのデータは5ビットで構成されるので、テクセル#0は、メモリワードの第0ビットから第4ビットに格納され、以下同様にして、テクセル#1からテクセル#11までが隙間なく格納される。メモリワードの第60ビットから第63ビットは空白ビットであり、テクセルのデータは格納されない。
テクスチャの繰り返しマッピング、及びテクスチャパターンデータのメモリMEMへの格納方式(フォーマット種別)を念頭においた上で、テクセルマッパ124の詳細を説明する。
図22は、図2のテクセルマッパ124の内部構成を示すブロック図である。図中、信号名に付した符号の後に付けられた()内の数字は、その信号のビット数を表している。図22を参照して、テクセルマッパ124は、テクセルアドレス算出部40、デプスフォーマット統一部42、及び遅延生成部44を含む。
テクセルマッパ124は、ピクセルステッパ120から入力されるテクセルU座標UX、テクセルV座標VX、スプライト構造体インスタンス/ポリゴン構造体インスタンス、テクスチャアトリビュート構造体インスタンス、及び描画X座標Xrに基づいて、描画ピクセルにマッピングされるテクセルのメモリMEM上の格納位置(テクスチャパターンデータの先頭からのオフセット)を算出し、テクスチャキャッシュブロック126に出力する。以下に各入力信号について説明する。
入力データ有効ビットIDVは、ピクセルステッパ120からの入力データが有効な値か否かを示す。テクセルU座標UX及びテクセルV座標VXは、描画ピクセルにマッピングされるテクセルのUV座標を示す。テクセルU座標UX及びテクセルV座標VXは、それぞれ、8ビットの整数部と3ビットの小数部とから成り、ピクセルステッパ120が算出したものである。
信号Map及びLightは、それぞれ、ポリゴン構造体のメンバMap及びLightの値である。信号Filter及びTsegmentは、それぞれポリゴン構造体及びスプライト構造体のメンバFilter及びTsegmentの値である。なお、テクセルマッパ124に送出されるポリゴン構造体インスタンスは、全てテクスチャマッピングモードのポリゴンの構造体インスタンスである。信号Width,Height,M,N,Bit及びPaletteは、それぞれ、テクスチャアトリビュート構造体のメンバWidth,Height,M,N,Bit及びPaletteの値である。
信号Spriteは、入力されるデータが、ポリゴンについてのものか、スプライトについてのものかを示す信号であり、ピクセルステッパ120から出力される。シザリングイネーブル信号SENは、シザリング処理がイネーブル/ディセーブルのいずれの状態であるかを示す。この信号SENの値は、CPU5がRPU9内の制御レジスタ(図示せず)に設定する。信号Depthは、ポリゴン構造体及びスプライト構造体のメンバDepthの値である。但し、メンバDepthのビット数は、ポリゴン構造体では12ビット、シザリングディセーブル時のスプライト構造体では8ビット、シザリングイネーブル時のスプライト構造体では7ビットと、それぞれ大きさが異なる。従って、12ビットに満たない値は、MSB側に「0」が連接された形式で入力される。
信号Xrは、ピクセルステッパ120が算出したピクセルの描画X座標であり、スクリーン座標系(2048×1024ピクセル)の水平座標を符号無し整数で示すものである。以下に各出力信号について説明する。
出力データ有効ビットODVは、テクセルマッパ124からの出力データが有効な値か否かを示す。メモリワードアドレスWADは、テクセルデータが格納されているメモリMEMのワードアドレスを示す。この値WADは、テクスチャパターンデータ先頭からのオフセットアドレスである。ここでは、64ビットを1ワードとする形式でアドレスWADが出力される。
ビットアドレスBADは、テクセルデータが格納されているメモリワード内における、テクセルデータのLSBのビット位置を示す。バイリニアフィルタ用パラメータBFPは、テクセルデータの加重平均を算出する際の係数部に相当する。終端フラグEFは、出力されるデータの終端を示す。ピクセルがニアレストネイバーで描画される場合(メンバFilter=1の場合)には、出力データは1テクセル単位となり、バイリニアフィルタリングで描画される場合(メンバFilter=0の場合)には、出力データが4テクセル単位となるので、それぞれの場合で出力データの終端を示す。
信号Depth_Outは、12ビットの統一形式に変換されたデプス(奥行き)値である。信号Filter_Out,Bit_Out,Sprite_Out,Light_Out,Tsegment_Out,Palette_OutおよびX_Outは、それぞれ、入力信号Filter,Bit,Sprite,Light,Tsegment,PaletteおよびXに相当し、入力信号が出力信号としてそのまま後段に出力される。但し、他の出力信号との同期を取るために遅延される。
後で詳細に述べるテクセルアドレス算出部40は、描画ピクセルにマッピングされるテクセルのメモリMEM上の格納位置を算出する。テクセルアドレス算出部40には、入力データ有効ビットIDV、テクセルU座標UX、テクセルV座標VX、信号Map、信号Filter、信号Width、信号Height、信号M、信号N、及び信号Bitが入力される。また、テクセルアドレス算出部40は、入力信号に基づいて、出力データ有効ビットODV、メモリワードアドレスWAD、ビットアドレスBAD、バイリニアフィルタ用パラメータBFP、及び終端フラグEFを算出し、テクスチャキャッシュブロック126に出力する。
デプスフォーマット統一部42は、ピクセルステッパ120から入力される構造体インスタンスが、シザリングディセーブルのスプライト構造体インスタンスである場合、シザリングイネーブルのスプライト構造体インスタンスである場合、ポリゴン構造体インスタンスである場合のそれぞれにおいて、異なる形式となる信号Depthの値を、統一形式に変換し、変換後の値を信号Depth_Outとして出力する。
遅延生成部44は、入力された信号Filter,Bit,Sprite,Light,Tsegment,PaletteおよびXをレジスタ(図示せず)で遅延させ、他の出力信号ODV,WAD,BAD,BFP,EF及びDepth_Outと同期させ、それぞれFilter_Out,Bit_Out,Sprite_Out,Light_Out,Tsegment_Out,Palette_OutおよびX_Outとして出力する。
図23は、図22のテクセルアドレス算出部40の内部構成を示すブロック図である。図中、信号名に付した符号の後に付けられた()内の数字は、その信号のビット数を表している。図23を参照して、テクセルアドレス算出部40は、テクセルカウンタ72、加重平均パラメータ算出部74、バイリニアフィルタリング用UV座標算出部76、マルチプレクサ78、上位ビットマスク部80,82、水平垂直テクセル数算出部84、及びアドレス演算部86を含む。
テクセルカウンタ72は、入力データ有効ビットIDVが「1」を示しているとき(すなわち有効なデータが入力されたとき)、信号Filter=0の場合(すなわち入力されたピクセルがバイリニアフィルタリングモードで描画される場合)には、順次「00」→「01」→「10」→「11」をマルチプレクサ78と加重平均パラメータ算出部74とに送出して、これらから4テクセル分のデータが出力されるように制御する。
ここで、図17に示すように、UV空間に写像されたピクセル座標の近傍4テクセルをそれぞれ、テクセル00、テクセル01、テクセル10、およびテクセル11とする。テクセルカウンタ72が出力する「00」はテクセル00を示し、テクセルカウンタ72が出力する「01」はテクセル01を示し、テクセルカウンタ72が出力する「10」はテクセル10を示し、テクセルカウンタ72が出力する「11」はテクセル11を示す。
一方、テクセルカウンタ72は、入力データ有効ビットIDVが「1」を示しているとき、信号Filter=1の場合(すなわち入力されたピクセルがニアレストネイバーモードで描画される場合)には、「00」をマルチプレクサ78と加重平均パラメータ算出部74とに送出して、これらから1テクセル分のデータが出力されるように制御する。
また、テクセルカウンタ72は、バイリニアフィルタリング用UV座標算出部76及びアドレス演算部86のレジスタ(図示せず)が順次入力値を格納するように制御する。
さらに、テクセルカウンタ72は、信号Filter=0の場合には、4テクセル中の最終テクセルに対応するデータが出力されるタイミングで、終端フラグEFをアサートし、信号Filter=1の場合には、1テクセルに対応するデータが出力されるタイミングで、終端フラグEFをアサートして、1ピクセル分のデータ出力が完了したことを示す。また、テクセルカウンタ72は、有効なデータ出力が行われている間、出力データ有効ビットODVをアサートする。
バイリニアフィルタリング用UV座標算出部76について説明する。テクセルU座標UXの整数部を「U」(図では、UX_Uと表記)、テクセルV座標VXの整数部を「V」(図では、VX_Vと表記)とする。
バイリニアフィルタリング用UV座標算出部76は、テクセル00のU座標整数部及びV座標整数部として、座標(U,V)を、テクセル01のU座標整数部及びV座標整数部として、座標(U+1,V)を、テクセル10のU座標整数部及びV座標整数部として、座標(U,V+1)を、テクセル11のU座標整数部及びV座標整数部として、座標(U+1,V+1)を、マルチプレクサ78に出力する。これは、バイリニアフィルタリング時に必要とされる写像ピクセルの近傍4テクセルのデータを取得するための座標生成を意味する。
マルチプレクサ78は、テクセルカウンタ72からの入力信号が「00」を示すときは、テクセル00のU座標整数部及びV座標整数部(U,V)を選択し、入力信号が「01」を示すときは、テクセル01のU座標整数部及びV座標整数部(U+1,V)を選択し、入力信号が「10」を示すときは、テクセル10のU座標整数部及びV座標整数部(U,V+1)を選択し、入力信号が「11」を示すときは、テクセル11のU座標整数部及びV座標整数部(U+1,V+1)を選択し、U座標整数部及びV座標整数部(UI,VI)として出力する。
ここで、テクセルU座標UXの小数部を「u」(図では、UX_uと表記)とし、テクセルV座標VXの小数部を「v」(図では、VX_vと表記)とし、(1−u)を「nu」とし、(1−v)を「nv」する。また、テクセル00、テクセル01、テクセル10、及びテクセル11のR(赤)成分をそれぞれ、R0、R1、R2、及びR3とし、テクセル00、テクセル01、テクセル10、及びテクセル11のG(緑)成分をそれぞれ、G0、G1、G2、及びG3とし、テクセル00、テクセル01、テクセル10、及びテクセル11のB(青)成分をそれぞれ、B0、B1、B2、及びB3とする。また、テクセル00、テクセル01、テクセル10、及びテクセル11の(1−α)値をそれぞれ、A0、A1、A2、及びA3とする。
そうすると、バイリニアフィルタ130は、上述したバイリニアフィルタリングの式に基づいて、バイリニアフィルタリング後の描画ピクセルの赤成分R、緑成分G、青成分B、及び(1−α)値を求める。
バイリニアフィルタリングの式の各項の係数部nu・nv、u・nv、nu・v、及びu・vを、それぞれテクセル00係数部、テクセル01係数部、テクセル10係数部、及びテクセル11係数部とする。
加重平均パラメータ算出部74は、入力されたテクセルU座標UXの小数部及びテクセルV座標VXの小数部(u,v)に基づいて、テクセル00係数部、テクセル01係数部、テクセル10係数部、及びテクセル11係数部を算出する。そして、テクセルカウンタからの入力信号が「00」のときは、テクセル00係数部を選択し、入力信号が「01」のときは、テクセル01係数部を選択し、入力信号が「10」のときは、テクセル10係数部を選択し、入力信号が「11」のときは、テクセル11係数部を選択し、バイリニアフィルタ用パラメータBFPとして出力する。
上位ビットマスク部80は、信号Mの値に応じて、U座標整数部UIの上位ビットを「0」にマスクして、マスク済みU座標整数部MUIとして出力する。例えば、M=3であれば、U座標整数部UIの上位3ビットを「000」とする。上位ビットマスク部82は、信号Nの値に応じて、V座標整数部VIの上位ビットを「0」にマスクして、マスク済みV座標整数部MVIとして出力する。例えば、N=3であれば、V座標整数部VIの上位3ビットを「000」とする。なお、上位ビットマスク部80は、M=0のときは、マスクはせずに、U座標整数部UIをそのままマスク済みU座標整数部MUIとして出力する。また、上位ビットマスク部82は、N=0のときは、マスクはせずに、V座標整数部VIをそのままマスク済みV座標整数部MVIとして出力する。
水平垂直テクセル数算出部84は、信号Mapと信号Bitとから、テクセルブロック(図19及び図20参照)の水平テクセル数wと垂直テクセル数hを算出する。これらの算出は、前述の(表1)及び(表2)に基づいて行われる。
アドレス演算部86は、テクスチャの繰り返しマッピング(図18参照)とテクスチャパターンデータの分割格納(図19参照)が考慮された形でST空間におけるテクセル座標を算出し、算出されたテクセル座標に基づいてメモリMEM上の格納位置を算出する。詳細は次の通りである。
アドレス演算部86は、先ず、テクスチャパターンデータの分割格納が行われているか否かを判別する。以下の条件1から条件3のいずれか1つでも満たされる場合、テクスチャパターンデータの分割格納は行われていない。
(条件1)入力信号Spriteが「1」を示している場合である。すなわち、入力データがスプライトに関する場合である。
(条件2)入力信号M及びNのいずれか一方、または両方が「1」以上の値を示している場合である。すなわち、テクスチャの繰り返しマッピングが行われる場合である。
(条件3)入力信号Heightの値がテクセルブロックの垂直テクセル数hを超えない場合である。すなわち、テクスチャパターンデータをテクセルブロックに分割した際に、垂直方向のテクセルブロック数が1の場合である。
ここで、マスク済みU座標整数部MUIを「U」、マスク済みV座標整数部MVIを「V」、メモリMEMに格納されている(ST空間における)テクセルの座標を(S,T)とする。そうすると、アドレス演算部86は、テクスチャパターンデータの分割格納が行われている場合は、ST空間におけるテクセルの座標(S,T)を次式により算出する。次式において、演算記号「/」は、商の小数点以下を切り捨てて商を整数で求める除算を意味する。
[信号Map=0の場合]
V>Height/2ならば、
S=(Width/w+1)・w−U−1
T=Height−V
S=(Width/w+1)・w−U−1
T=Height−V
V≦Height/2ならば、
S=U
T=V
S=U
T=V
[信号Map=1の場合]
V/h>Height/2hならば、
S=(Width/w+1)・w−U−1
T=(Height/h+1)・h−V−1
S=(Width/w+1)・w−U−1
T=(Height/h+1)・h−V−1
V/h≦Height/2hならば、
S=U
T=V
S=U
T=V
ここで、「Height/h」は、テクスチャの各テクセルのうちで最大のV座標を持つテクセルのV座標に基づいて定められたV座標閾値の一例である。上記式においては、ピクセルのV座標がV座標閾値以下の場合、ピクセルの座標(U,V)をそのままST座標系におけるピクセルの座標(S,T)とし、ピクセルのV座標がV座標閾値を超える場合、ピクセルの座標(U,V)を180度回転及び移動してST座標系におけるピクセルの座標(S,T)に変換している。従って、テクスチャパターンデータが分割格納されている場合においても、格納先のメモリMEMから適切なテクセルデータを読み出すことができる。
一方、アドレス演算部86は、テクスチャパターンデータの分割格納が行われていない場合は、ST空間におけるテクセルの座標(S,T)を次式により算出する。
S=U
T=V
T=V
アドレス演算部86は、テクセル座標(S,T)から、当該テクセルデータを含むメモリワードのアドレス(メモリワードアドレス)WADと、当該メモリワード内におけるビット位置(ビットアドレス)BADを求める。ここでアドレス演算部86が求めるメモリワードアドレスWADは、最終的なメモリアドレスではなく、テクスチャパターンデータの先頭からのオフセットアドレスであることに注意されたい。最終的なメモリアドレスは、後段のテクスチャキャッシュブロック126にて、メモリワードアドレスWADと信号Tsegmentの値とから求められる。
メモリワードアドレスWAD及びビットアドレスBADは、以下の式から求められる。この式における演算記号「/」は、商の小数点以下を切り捨てて商を整数で求める除算を意味し、演算記号「%」は、商を整数で求める除算における剰余を求めることを意味する。
WAD=(Width/w+1)・(T/h)+(S/w)
BAD=((V%h)・w+S%w)・(Bit+1)
BAD=((V%h)・w+S%w)・(Bit+1)
ここで、ビットアドレスBADが示す値は、テクセルデータのLSBが格納されているメモリワード内のビット位置である。例えば、Bit=6でBAD=25の場合、ビット25からビット31までの7ビットにテクセルデータが格納されていることを示す。
図24は、テクスチャパターンデータの分割格納が行われた場合のバイリニアフィルタリングの説明図である。この図では、メンバFilter=0、メンバMap=1、メンバBit=2、メンバWidth=21、メンバHeight=12のポリゴンのテクスチャパターンデータの例が示される。また、テクセルブロックのサイズは、w=7、h=3である。
この場合、テクスチャパターンデータは、図示のように分割格納(ハッチング部)される。UV空間における180度回転及び移動なしで(つまり、UV空間における配置で)、ST空間に格納されている部分については、UV空間に写像されたピクセルの座標(U,V)に対応するST空間の座標が(S,T)であるとき、座標(S,T)、座標(S+1,T)、座標(S,T+1)、及び座標(S+1,T+1)に位置する4つのテクセルデータが、バイリニアフィルタリング処理で参照される。
一方、分割格納により、UV空間において180度回転及び移動されて、ST空間に格納されている部分については、UV空間に写像されたピクセルの座標(U,V)に対応するST空間の座標が(S,T)であるとき、座標(S,T)、座標(S−1,T)、座標(S,T−1)、及び座標(S−1,T−1)に位置する4つのテクセルデータが参照される。
テクスチャパターンデータの分割格納が行われている場合、2つに分割された三角形の間に余白となるテクセルデータが存在するので、つまり、2つに分割された三角形の間にバイリニアフィルタリング用のテクセルデータを配置できるので、バイリニアフィルタリング処理が行われる際に、UV空間に写像されたピクセルの座標(U,V)に対応するST空間の座標(S,T)近傍のテクセルデータが参照されても、破綻なくピクセル描画処理を行うことができる。
さて、以上のように、本実施の形態では、テクスチャは、ポリゴンにマッピングされる態様でメモリMEMに格納(ST空間に配置)されるのではなく、2つの切片に分割され、かつ、1つの切片が180度回転及び移動されて、メモリMEMに格納(ST空間に配置)される。このため、例えば三角形等、四角形以外のポリゴンにマッピングするテクスチャをメモリMEMに格納する場合においても、テクスチャが格納されない無駄な記憶領域を極力省くことができ、効率良く格納できるので、テクスチャを格納するメモリMEMの容量を小さくできる。
つまり、テクスチャパターンデータを構成するテクセルデータのうち、テクスチャが配置される領域のテクセルデータは実体的な内容(カラーを直接的あるいは間接的に示す情報)を含むものであるが、テクスチャが配置されない領域のテクセルデータは、実体的な内容を含まない無駄なものである。この無駄なテクセルデータを極力省くことで、必要なメモリ容量を抑制できる。
ここで言うところのテクスチャパターンデータとは、テクスチャが配置される領域(図19のブロックのハッチング部に相当)のみのテクセルデータを意味するのではなく、それ以外の領域(図19のブロックのハッチング部以外の部分に相当)のテクセルデータを含む。つまり、テクスチャパターンデータは、三角形のテクスチャを含む四角形の領域のテクセルデータである(図19のブロックに相当)。
特に三角形のポリゴンにマッピングする三角形のテクスチャをそのまま2次元配列に格納すると、配列内のおよそ半分のテクセルデータが無駄になるので、ポリゴンが三角形の場合、分割格納はより好適である。
また、本実施の形態によれば、テクスチャは直角三角形状であるため(図19参照)、直角をなす2辺をそれぞれ、UV空間のU軸及びV軸に一致させ、かつ、直角の頂点をUV空間の原点に設定することにより、UV空間における三角形の頂点の座標の指定のために必要なデータ量を少なくできる。
さらに、本実施の形態では、二次元空間に投影された三次元立体の各面の形状を表すポリゴンを、スクリーンに正立する二次元のスプライトとして使用することもできる。ただし、あくまでもポリゴンをスプライト的に使用するのであって、ポリゴンであることに変わりない。このようにスプライト的に使用するポリゴンを擬似スプライトと呼ぶ。
ポリゴンを擬似スプライトとして使用する場合は、本来のスプライトと同様に、ライン単位でテクセルデータを取得することにより、テクセルデータを一時格納するのに必要なメモリ容量を削減することができる。
このような場合に、メンバMap=0(第1の格納形態)とし(図19(a)参照)、メモリMEMの1ワードに、一次元に並んだテクセルデータからなる1テクセルブロックを格納することで、ライン単位でテクセルデータを取得する際のメモリMEMへのアクセス回数を減らすことができる。
一方、ポリゴンを三次元立体を表すための本来の目的で使用する場合、スクリーンの水平ライン上のピクセルをUV空間に写像したとき、必ずしもUV空間の水平ライン上に写像されるとは限らない。
このように、ピクセルがUV空間の水平ライン上に写像されない場合でも、メンバMap=1(第2の格納形態)とし(図19(b)参照)、メモリMEMの1ワードに、二次元に並んだテクセルデータからなる1テクセルブロックを格納することで、ピクセルが写像されたUV座標に配置されたテクセルデータが、既にテクスチャキャッシュブロック126に格納されているテクセルデータの中に存在する可能性が高く(つまり、キャッシュのヒット率が高い)、テクセルデータ取得のためのメモリMEMへのアクセス回数を減らすことができる。
ここで、ポリゴンを擬似スプライトとして使用すると、次のようなメリットがある。本来のスプライトでは、1つの頂点座標だけをメンバAy,Axで指定し、そのサイズを、メンバHeight,Width,ZoomY,ZoomXで指定することにより(図9参照)、1つのスプライトを定義する。このように、スプライトでは、そのサイズおよび頂点座標の指定に、ある程度制限が加わってくる。これに対して、擬似スプライトはポリゴンであるため、メンバAy,Ax,By,Bx,Cy,Cxで各頂点の座標を任意に指定でき(図3参照)、それ故サイズの指定も任意に行うことができる。
さらに、本実施の形態では、テクスチャの繰り返しマッピングが行われる場合は、テクスチャパターンデータの分割格納は行われない。従って、矩形のテクスチャを水平方向及び/又は垂直方向に繰り返しマッピングを行う際のテクスチャパターンデータのメモリMEMへの格納好適である。しかも、繰り返しマッピングなので、同じテクスチャパターンデータを使用することができ、メモリ容量の削減が可能となる。
さらに、本実施の形態では、バイリニアフィルタリングを行う際は、ピクセルのST空間における座標が、180度回転及び移動してST空間に配置された切片に含まれる場合でも、これを考慮して、4テクセルを取得する(図24参照)。また、分割して格納される切片同士の間には、バイリニアフィルタリングで用いるテクセルが切片に隣接するように格納される(図24参照)。これらのことから、テクスチャパターンデータの分割格納を行う場合でも、バイリニアフィルタリング処理を問題なく実現できる。
さらに、本実施の形態では、U座標整数部UIの上位Mビット及び/又はV座標整数部VIの上位Nビットをマスクする(「0」にする)ことにより、同じテクスチャパターンデータを使用して、異なる水平/垂直テクセル数でのテクスチャの繰り返しマッピングを実現している。同じテクスチャパターンデータを使用するため、メモリ容量の削減が可能となる。
さて、次に、メモリマネージャ140について詳細に説明していく。テクスチャキャッシュブロック126に描画対象のテクセルデータが格納されていない場合、テクスチャキャッシュブロック126は、メモリマネージャ140にテクセルデータを要求する。
そして、メモリマネージャ140は、要求されたテクスチャパターンデータをメインRAM25上のテクスチャバッファから読み出し、テクスチャキャッシュブロック126に出力する。テクスチャバッファは、メインRAM25上に設定されるテクスチャパターンデータのテンポラリ格納領域である。
一方、メモリマネージャ140は、マージソータ106から要求されたテクスチャパターンデータがメインRAM25上のテクスチャバッファに読み込まれていない場合、DMACインタフェース142を介してDMAC4にDMA転送を要求し、外部メモリ50に格納されているテクスチャパターンデータを、新たに取得したテクスチャバッファ領域に読み込む。
この場合、メモリマネージャ140は、マージソータ106から出力されるメンバ「Tsegment」の値とテクスチャパターンデータ全体のサイズ情報とに従って、後述の図30及び図31に示すテクスチャバッファ領域取得処理を実行する。本実施の形態では、テクスチャバッファ領域取得処理の機能をハードワイヤードロジックで達成している。
メモリマネージャ140のMCBイニシャライザ141は、後述するMCB(Memory Control Block)構造体配列の内容を初期化するためのハードウェアである。メモリマネージャ140が管理するテクスチャバッファは、領域の取得と解放とが繰り返される内に断片化(フラグメンテーション)を起こし、大きな領域の確保が難しくなってくる。このフラグメンテーションの発生を回避するため、MCBイニシャライザ141は、MCB構造体配列の内容を初期化し、テクスチャバッファを初期状態に再設定する。
MCB構造体は、テクスチャバッファの管理に用いられる構造体であり、常に128個のインスタンスを持つMCB構造体配列を形成する。MCB構造体配列は、メインRAM25上に配置され、MCB構造体配列の先頭アドレスは、後述のRPU制御レジスタ「MCB Array Base Address」で指し示される。MCB構造体配列は、8個のボスMCB構造体インスタンスと、120個の一般MCB構造体インスタンスと、から構成される。どちらの構造体インスタンスも、64ビット(=8バイト)で構成される。以下では、ボスMCB構造体インスタンスと一般MCB構造体インスタンスとを区別して説明する必要がないときは、単に「MCB構造体インスタンス」と呼ぶ。
図25(a)は、ボスMCB構造体の構成を示す図、図25(b)は、一般MCB構造体の構成を示す図である。図25(a)を参照して、ボスMCB構造体は、メンバ「Bwd」,「Fwd」,「Entry」及び「Tap」を含む。図25(b)を参照して、一般MCB構造体は、メンバ「Bwd」,「Fwd」,「User」,「Size」,「Address」及び「Tag」を含む。
まず、双方に共通するメンバから説明する。メンバ「Bwd」は、ボスMCB構造体インスタンスのチェーン(後述の図33参照)における、後ろ方向のリンクを示す。メンバ「Bwd」には、MCB構造体インスタンスを指し示すインデックス(7ビット)が格納される。メンバ「Fwd」は、ボスMCB構造体インスタンスのチェーンにおける、前方向のリンクを示す。メンバ「Fwd」には、MCB構造体インスタンスを指し示すインデックス(7ビット)が格納される。
次に、ボスMCB構造体に固有のメンバについて説明する。メンバ「Entry」は、当該ボスMCB構造体インスタンスのチェーンに含まれる一般MCB構造体インスタンスの数を示す。メンバ「Tap」には、当該ボスMCB構造体インスタンスのチェーンに含まれる、最も新しく解放された一般MCB構造体インスタンスを指し示すインデックス(7ビット)が格納される。
次に、一般MCB構造体に固有のメンバについて説明する。メンバ「User」は、当該一般MCB構造体インスタンスが管理するテクスチャバッファ領域を共有しているポリゴン構造体インスタンス/スプライト構造体インスタンスの数を示す。但し、複数のスプライト構造体インスタンスがテクスチャバッファ領域を共有することはないため、スプライト構造体インスタンスのテクスチャバッファ領域を管理している場合、この値の最大値は「1」となる。
メンバ「Size」は、当該一般MCB構造体インスタンスが管理するテクスチャバッファ領域のサイズを示す。テクスチャバッファ領域は、8バイト単位で管理され、実際の領域の大きさ(バイト数)は、メンバ「Size」が示す数値に「8」を掛けた値となる。メンバ「Address」は、当該一般MCB構造体インスタンスが管理するテクスチャバッファ領域の先頭アドレスを示す。但し、このメンバに格納されるのは、メインRAM25の物理アドレスの第3ビットから第15ビット(A[15:3]の13ビット)である。メンバ「Tag」は、当該一般MCB構造体インスタンスが管理するテクスチャバッファ領域に格納されているテクスチャパターンデータを指定するメンバ「Tsegment」の値が格納される。メンバ「Tsegment」は、テクスチャマッピングモードのポリゴン構造体、およびスプライト構造体のメンバである(図3及び図6参照)。
図26は、ボスMCB構造体インスタンスが管理するテクスチャバッファ領域のサイズの説明図である。図26に示すように、8個のボスMCB構造体インスタンス[0]〜[7]は、それぞれ異なるサイズのテクスチャバッファ領域を管理する。この図によって、どのサイズのテクスチャバッファ領域が、どのボスMCB構造体インスタンスの管理下となるかが理解できる。
図27は、ボスMCB構造体インスタンス[0]〜[7]の初期値を示す図である。[]内の数字は、ボスMCB構造体インスタンスのインデックスである。図28は、一般MCB構造体インスタンス[8]〜[127]の初期値を示す図である。なお、[]内の数字は、一般MCB構造体インスタンスのインデックスである。
図2のMCBイニシャライザ141は、MCB構造体配列の内容を、図27および図28に記載されている値に初期化する。初期値は、それぞれのMCB構造体インスタンスによって異なる。
図27(a)は、ボスMCB構造体インスタンス[0]〜[6]の初期値を表している。これらのボスMCB構造体インスタンスは、初期状態においては、管理下のテクスチャバッファ領域が全く無く、チェーンを形成する他の一般MCB構造体インスタンスの個数が「0」であるため、メンバ「Bwd」,「Fwd」,及び「Tap」は、いずれも自分自身を指し示すインデックスを格納し、メンバ「Entry」の値は「0」を示す。
図27(b)は、ボスMCB構造体インスタンス[7]の初期値を表す。ボスMCB構造体インスタンス[7]は、初期状態においては、テクスチャバッファとして割り当てられた全領域を管理する。実際には、全領域を一括して管理する一般MCB構造体インスタンス[8]とチェーンを形成している。従って、メンバ「Bwd」,「Fwd」及び「Tap」の値は、いずれも「8」を示し、メンバ「Entry」の値は、「1」を示す。
図28(a)は、一般MCB構造体インスタンス[8]の初期値を表す。一般MCB構造体インスタンス[8]は、初期状態においては、テクスチャバッファの全領域を管理している。したがって、メンバ「Size」は、RPU制御レジスタ「Texture Buffer Size」に設定されているテクスチャバッファの全体サイズを示し、メンバ「Address」は、RPU制御レジスタ「Texture Buffer Base Address」に設定されているテクスチャバッファの先頭アドレスを示す。
但し、テクスチャバッファのサイズは8バイト単位で設定されるため、メンバ「Size」の値に「8」を掛けた値が実際のテクスチャバッファの全体サイズを表す。また、メンバ「Address」の値は、メインRAM25の物理アドレスの第3ビットから第15ビット(A[15:3])の計13ビットのみを表している。
一般MCB構造体インスタンス[8]は、初期状態においては、ボスMCB構造体インスタンス[7]のチェーンに含まれる唯一の一般MCB構造体インスタンスであるため、メンバ「Bwd」及び「Fwd」の値は、ともに「7」を示す。また、初期状態では、一般MCB構造体インスタンス[8]を共有するポリゴン/スプライトは存在しないため、メンバ「User」及び「Tag」の値は、「0」を示す。
図28(b)は、一般MCB構造体インスタンス[9]〜[126]の初期値を表す。一般MCB構造体インスタンス[9]以降の全ての一般MCB構造体インスタンスは、初期状態においては、フリーの一般MCB構造体インスタンスとして設定され、ボスMCB構造体インスタンスのチェーンには組み込まれていない。フリーの一般MCB構造体インスタンスのチェーンは、メンバ「Fwd」が次の一般MCB構造体インスタンスを指し示す形でリンクされており、ボスMCB構造体インスタンスのチェーンのようにリング状の閉じたリンクにはなっていない。したがって、一般MCB構造体インスタンス[9]〜[126]のメンバ「Fwd」には、「自身のインデックス+1」を示す値が設定され、他のメンバ「Bwd」,「User」,「Size」,「Address」および「Tag」には全て「0」が設定される。
図28(c)は、一般MCB構造体インスタンス[127]の初期値を表す。一般MCB構造体インスタンス[127]は、初期状態においては、フリーの一般MCB構造体インスタンスのチェーンの終端として設定され、ボスMCB構造体インスタンスのチェーンには組み込まれていない。したがって、一般MCB構造体インスタンス[127]のメンバ「Fwd」には、「0」が設定され、フリーの一般MCB構造体インスタンスのチェーンの終端であることを示す。他のメンバ「Bwd」,「User」,「Size」,「Address」および「Tag」にも全て「0」が設定される。
図29は、図2のメモリマネージャ140に関するRPU制御レジスタの一覧図である。図29に示す全てのRPU制御レジスタは、RPU9内に設けられる。
図29(a)に示すRPU制御レジスタ「MCB Array Base Address」は、メモリマネージャ140が使用するMCB構造体配列のベースアドレスをメインRAM25の物理アドレスで指定する。このレジスタへの設定については、全16ビットの設定が可能であるが、MCB構造体配列のベースアドレスは、ワードアライン(4バイトアライン)に従って設定される必要がある。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE624」に配置される。
図29(b)に示すRPU制御レジスタ「MCB Resource」は、初期設定時における、フリーの一般MCB構造体インスタンスのチェーンの先頭MCB構造体インスタンスを指し示すインデックスを設定する。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE626」に配置される。
図29(c)に示すRPU制御レジスタ「MCB Initializer Interval」は、MCBイニシャライザ141が行うMCB構造体配列の初期化処理の周期を設定する。この初期化周期は、クロックサイクル単位で設定される。例えば、4クロックサイクルごとに初期化を行うように設定する。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE62D」に配置される。
図29(d)に示すRPU制御レジスタ「MCB Initializer Enable」は、MCBイニシャライザ141の有効/無効を制御する。このレジスタに「1」が設定されると、MCBイニシャライザ141は有効化され、「0」で無効化される。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE62C」に配置される。
図29(e)に示すRPU制御レジスタ「Texture Buffer Size」は、テクスチャバッファの全体サイズを設定する。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE62A」に配置される。
図29(f)に示すRPU制御レジスタ「Texture Buffer Base Address」は、テクスチャバッファの先頭アドレスを設定する。なお、例えば、このレジスタは、I/Oバスアドレス「0xFFFFE628」に配置される。
図30及び図31は、テクスチャバッファ領域取得処理の流れを示すフローチャートである。図30を参照して、メモリマネージャ140は、マージソータ106から出力されるメンバ「Tsegment」の値を入力引数「tag」とし、テクスチャパターンデータ全体のサイズ情報を入力引数「size」として、以下の処理を実行する。
まず、ステップS1にて、メモリマネージャ140は、引数「size」に対応するボスMCB構造体インスタンスを特定し(図26参照)、特定したボスMCB構造体インスタンスのインデックスを変数「boss」に格納する。ステップS2にて、メモリマネージャ140は、変数「boss」が指し示すボスMCB構造体インスタンスのチェーンに、メンバ「Tag」の値が引数「tag」に一致する一般MCB構造体インスタンス(ステップS4〜S6において「検出MCB構造体インスタンス」と呼ぶ。)が存在するか否かをチェックする。そして、存在する場合は、図31のステップS4に進み、存在しない場合は、ステップS7に進む(ステップS3)。
ステップS3で、「Yes」が判断された後、図31のステップS4では、メモリマネージャ140は、ステップS1で特定したボスMCB構造体インスタンスのチェーンから、検出MCB構造体インスタンスを削除する。ステップS5にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「Size」に対応するボスMCB構造体インスタンスと(図26参照)、当該ボスMCB構造体インスタンスのメンバ「Fwd」が現在指し示す一般MCB構造体インスタンスと、の間に検出MCB構造体インスタンスを挿入する。ステップS6にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「User」の値をインクリメントする。以上により、テクスチャバッファ領域の取得が成功した(正常終了)。この場合、メモリマネージャ140は、検出MCB構造体インスタンスを指し示すインデックスを返り値「mcb」とし、テクスチャキャッシュブロック126に出力するとともに、既にテクスチャバッファ領域を取得済みであることを示す「1」を設定した返り値「flag」をテクスチャキャッシュブロック126に出力する。
一方、図30のステップS3で、「No」が判断された後、ステップS7では、メモリマネージャ140は、変数「boss」が指し示すボスMCB構造体インスタンスのチェーンに、メンバ「Size」の値が引数「size」以上であり、かつ、メンバ「User」の値が「0」である一般MCB構造体インスタンス(以降の処理において「検出MCB構造体インスタンス」と呼ぶ。)が存在するか否かをチェックする。そして、存在する場合は、ステップS11に進み、存在しない場合は、ステップS9に進む(ステップS8)。
ステップS8で、「No」が判断された後、ステップS9では、メモリマネージャ140は、変数「boss」をインクリメントする。ステップS10にて、メモリマネージャ140は、変数「boss」=8か否かを判断し、「Yes」の場合はステップS7に戻る。一方、「No」の場合は、テクスチャバッファ領域の取得に失敗したことになり(エラー終了)、メモリマネージャ140は、その旨を示す値を設定した返り値「mcb」をテクスチャキャッシュブロック126に返す。
一方、ステップS8で、「Yes」が判断された後、ステップS11では、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「Size」が引数「size」と等しいか否かを判断する。そして、「No」の場合はステップS12に進み、「Yes」の場合はステップS18に進む。
ステップS11で「No」が判断された後、ステップS12にて、メモリマネージャ140は、RPU制御レジスタ「MCB Resource」が指し示す一般MCB構造体インスタンスのメンバ「Fwd」をチェックする。メンバ「Fwd」=0の場合はステップS17に進み、メンバ「Fwd」が「0」以外の場合はステップS14に進む(ステップS13)。
ステップS13で「No」が判断された後、ステップS14にて、メモリマネージャ140は、RPU制御レジスタ「MCB Resource」が指し示す一般MCB構造体インスタンス(つまり、フリーの一般MCB構造体インスタンス)を取得し、フリーの当該一般MCB構造体インスタンスのメンバ「Fwd」の値を、RPU制御レジスタ「MCB Resource」に設定する。つまり、ステップS14では、引数「size」と一致するメンバ「Size」を持つ検出MCB構造体インスタンスが検出されなかった場合、すなわち、引数「size」より大きな値のメンバ「Size」を持つ検出MCB構造体インスタンスが検出された場合、フリーの一般MCB構造体インスタンスのチェーンから先頭の一般MCB構造体インスタンスを取得する。
ステップS15にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「Address」に引数「size」を加算した値を、フリーの当該一般MCB構造体インスタンスのメンバ「Address」に設定し、検出MCB構造体インスタンスのメンバ「Size」から引数「size」を減算した値を、フリーの当該一般MCB構造体インスタンスのメンバ「Size」に設定する。つまり、ステップS15では、検出MCB構造体インスタンスが管理している領域のうち、引数「size」が示す分の領域を差し引いた領域を分割して、取得したフリーの一般MCB構造体インスタンスに割り当てる。
ステップS16にて、メモリマネージャ140は、フリーの当該一般MCB構造体インスタンスのメンバ「Size」に対応するボスMCB構造体インスタンスを特定し(図26参照)、特定したボスMCB構造体インスタンスと、当該ボスMCB構造体インスタンスのメンバ「Bwd」が現在指し示す一般MCB構造体インスタンスと、の間にフリーの当該一般MCB構造体インスタンスを挿入し、特定したボスMCB構造体インスタンスのメンバ「Entry」の値をインクリメントする。つまり、ステップS16では、フリーの一般MCB構造体インスタンスは、ステップS15で割り当てられた領域のサイズに対応するボスMCB構造体インスタンスのチェーンに、最後尾の一般MCB構造体インスタンスとして新たに組み込まれる。
ステップS16の後、あるいは、ステップS13で「Yes」が判断された後、ステップS17にて、メモリマネージャ140は、メンバ「Size」>引数「size」である検出MCB構造体インスタンスのメンバ「Size」に引数「size」を代入する。つまり、ステップS17では、検出MCB構造体インスタンスのメンバ「Size」は、引数「size」の値に書き換えられる。
ステップS17の後、あるいは、ステップS11で「Yes」と判断された後、ステップS18にて、メモリマネージャ140は、検出MCB構造体インスタンスのボスMCB構造体インスタンスのメンバ「Entry」をデクリメントする。ステップS19にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「Tag」に引数「tag」を代入する。ステップS20にて、メモリマネージャ140は、検出MCB構造体インスタンスをチェーンから削除する。
ステップS21にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「Size」に対応するボスMCB構造体インスタンスを特定し(図26参照)、特定したボスMCB構造体インスタンスと、当該ボスMCB構造体インスタンスのメンバ「Fwd」が現在指し示す一般MCB構造体インスタンスと、の間に検出MCB構造体インスタンスを挿入する。ステップS22にて、メモリマネージャ140は、検出MCB構造体インスタンスのメンバ「User」の値をインクリメントする。
つまり、ステップS18〜S22では、検出MCB構造体インスタンスは、現在リンクされているボスMCB構造体インスタンスのチェーンから削除され、新たなメンバ「Size」に対応するボスMCB構造体インスタンスのチェーンに、最前の一般MCB構造体インスタンスとして新たに組み込まれる。
以上により、テクスチャバッファ領域の取得が成功した(正常終了)。この場合、メモリマネージャ140は、検出MCB構造体インスタンスを指し示すインデックスを返り値「mcb」とし、テクスチャキャッシュブロック126に出力するとともに、新規にテクスチャバッファ領域を取得したことを示す「0」を設定した返り値「flag」をテクスチャキャッシュブロック126に出力する。また、この場合、メモリマネージャは、DMACインタフェース142を介してDMAC4にDMA転送を要求し、新たに確保されたテクスチャバッファ領域に、外部メモリ50からテクスチャパターンデータを一括して転送する。但し、これはポリゴンの場合であり、スプライトの場合は、確保された領域に描画の進行に応じて順次テクスチャパターンデータを転送する。
ここで、ステップS2の補足説明を行う。ステップS2の処理は、ポリゴン用のテクスチャバッファ領域を確保する際にのみ行われ、スプライト用には行われない。従って、スプライト用にテクスチャバッファ領域を確保する際には、ステップS2及びS3はスキップされ、必ずステップS7に進むことになる。
なぜなら、ポリゴン用には、テクスチャパターンデータ全体を格納可能なサイズを確保するため、複数のポリゴンが1つのテクスチャバッファ領域を共有することが可能であるが、スプライト用には、テクスチャパターンデータの4水平ライン分のみ格納可能なサイズを確保するため、複数のスプライトが1つのテクスチャバッファ領域を共有することができないためである。
ステップS3で「Yes」が判断された後の処理の終端では(図31参照)、返り値「flag」の値が「1」を示している。これは、複数のポリゴンが1つのテクスチャバッファ領域を共有している(つまり、既にテクスチャパターンデータがテクスチャバッファ領域に読み込まれている)ため、新たにDMA転送を要求してテクスチャパターンデータを読み込む必要がないことを示している。
次に、ステップS7〜S10の補足説明を行う。ボスMCB構造体インスタンス[0]〜[7]は、テクスチャバッファ領域の大きさごとに分かれており(図26参照)、ボスMCB構造体インスタンスのインデックスが大きくなるにつれ、より大きなサイズのテクスチャバッファ領域を管理している。したがって、ステップS7〜S10を経てステップS7へのループは、必要なテクスチャバッファ領域のサイズに対応するボスMCB構造体インスタンスのチェーンに適当な一般MCB構造体インスタンスが存在しない場合に、よりインデックスの大きなボスMCB構造体インスタンスのチェーンを順次検索することを表している。但し、最終のボスMCB構造体インスタンスであるボスMCB構造体インスタンス[7]のチェーンまで検索しても適当な一般MCB構造体インスタンスを検出できない場合、テクスチャバッファ領域の取得が失敗したとしてエラー終了する。この場合、このテクスチャバッファ領域を要求したポリゴン/スプライトには、描画処理において不当なテクスチャパターンデータがマッピングされてしまう。
さて、メモリマネージャ140は、確保されたテクスチャバッファ領域を使用するポリゴン/スプライトの描画が完了すると、確保していたテクスチャバッファ領域を解放し、他のテクスチャパターンデータの格納のために再利用できるようする。このようなテクスチャバッファ領域解放処理について説明する。
図32は、テクスチャバッファ領域解放処理の流れを示すフローチャートである。テクスチャバッファ領域解放処理にあたって、テクスチャキャッシュブロック126から、描画完了ポリゴン/描画完了スプライトが使用していたテクスチャバッファ領域を管理していた一般MCB構造体インスタンスのインデックスがメモリマネージャ140に出力される。メモリマネージャ140は、このインデックスを入力引数「mcb」として、テクスチャバッファ領域解放処理を実行する。
ステップS31にて、メモリマネージャ140は、引数「mcb」が指し示す一般MCB構造体インスタンス(以降の処理において、「解放MCB構造体インスタンス」と呼ぶ。)のメンバ「User」をデクリメントする。ステップS32にて、メモリマネージャ140は、デクリメント後のメンバ「User」の値が「0」か否かを判断し、「Yes」の場合ステップS33に進み、「No」の場合テクスチャバッファ解放処理を終了する。
つまり、テクスチャバッファ領域が2以上のポリゴンに共有されていた場合、解放MCB構造体インスタンスのメンバ「User」の値が1つ減らされるだけで、実際の解放処理は行われない。1つのポリゴン/スプライトに用いられていたテクスチャバッファ領域(デクリメント前のメンバ「User」=1)が解放されたとき、実際の解放処理が行われる。
ステップS32で「Yes」が判断された後、ステップS33にて、メモリマネージャ140は、解放MCB構造体インスタンスを、解放MCB構造体インスタンスを含むチェーンから削除する。ステップS34にて、メモリマネージャ140は、解放MCB構造体インスタンスのメンバ「Size」に対応するボスMCB構造体インスタンスを特定し(図26参照)、特定したボスMCB構造体インスタンスのメンバ「Tap」が現在指し示す一般MCB構造体インスタンス(以降の処理において、「タップMCB構造体インスタンス」と呼ぶ。)と、タップMCB構造体インスタンスのメンバ「Bwd」が指し示すMCB構造体インスタンスと、の間に解放MCB構造体インスタンスを挿入する。
ステップS35にて、メモリマネージャ140は、解放MCB構造体インスタンスのメンバ「Size」に対応するボスMCB構造体インスタンスのメンバ「Tap」に引数「mcb」を挿入し、かつ、メンバ「Entry」をインクリメントし、テクスチャバッファ解放処理を終了する。
図33は、ボスMCB構造体インスタンスのチェーンの構造と、ボスMCB構造体インスタンスのチェーンに一般MCB構造体インスタンスが新たに挿入される場合の概念と、を示す図である。図33(a)及び図33(b)には、ボスMCB構造体インスタンスBS→一般MCB構造体インスタンス#A→一般MCB構造体インスタンス#B→ボスMCB構造体インスタンスBSというように、閉じたリング状にリンクされているボスMCB構造体インスタンスBSのチェーンに、最前の一般MCB構造体インスタンスとして新たに一般MCB構造体インスタンス#Cを挿入する例が示されている。図33(a)は挿入前、図33(b)は挿入後を示す。
この例では、メモリマネージャ140は、一般MCB構造体インスタンス#Aを指し示していたボスMCB構造体インスタンスBSのメンバ「Fwd」を、一般MCB構造体インスタンス#Cを指し示すように書き換え、ボスMCB構造体インスタンスBSを指し示していた一般MCB構造体インスタンス#Aのメンバ「Bwd」を、一般MCB構造体インスタンス#Cを指し示すように書き換える。また、メモリマネージャ140は、新たにチェーンに挿入される一般MCB構造体インスタンス#Cのメンバ「Fwd」を、一般MCB構造体インスタンス#Aを指し示すように、メンバ「Bwd」を、ボスMCB構造体インスタンスBSを指し示すように書き換える。
逆に、図33(b)に示すボスMCB構造体インスタンスBSのチェーンから、一般MCB構造体インスタンス#Cを削除する場合は、挿入する場合とは逆の処理が行われる。
さて、以上のように、本実施の形態によれば、テクスチャデータを毎回外部メモリ50から読み出すのではなく、読み出したテクスチャデータをメインRAM25上のテクスチャバッファに一時的に保持しておくことにより、テクスチャデータが再利用される場合に、無駄な外部メモリ50へのアクセスを避けることができる。また、メインRAM25上のテクスチャバッファを必要とされるサイズに領域分割し、領域の確保と解放とを動的に行うことで、テクスチャバッファの使用効率が高まり、テクスチャバッファのためのハードウェアリソースが過剰に大きくなることを防ぐことができる。
また、本実施の形態では、グラフィック要素(ポリゴン及びスプライト)の描画が水平ライン単位で順次的に行われるので、スプライトにマッピングされるテクスチャデータは描画処理の進行に応じてテクスチャデータの水平ライン単位で外部メモリ50から読み出せばよいため、テクスチャバッファに確保する領域のサイズを抑えることができる。一方、ポリゴンにマッピングされるテクスチャデータは、テクスチャデータ上のどの部分のデータが必要になるかを事前に予測することは難しいため、テクスチャデータ全体を格納可能なサイズの領域をテクスチャバッファに確保する。
さらに、本実施の形態では、MCB構造体インスタンスを用いてテクスチャバッファの各領域を管理することで、領域の確保・解放のための処理が簡便になる。
さらに、本実施の形態では、複数のボスMCB構造体インスタンスは、管理する領域のサイズに応じて複数のグループに分けられ、グループ内のMCB構造体インスタンスは、リング状に互いがリンクされている(図26及び図33参照)。このため、MCB構造体インスタンス、ひいてはテクスチャバッファの各領域の検索を容易に行うことができる。
さらに、本実施の形態では、MCBイニシャライザ141が、全てのMCB構造体インスタンスを初期値に設定することにより、テクスチャバッファの領域のフラグメンテーションを解消できる。フラグメンテーションを解消する手段としては、一般的なガーベージコレクションより小さい回路規模で達成できるだけでなく、処理時間も短い。また、グラフィック要素(ポリゴン及びスプライト)の描画のための処理であるため、1ビデオフレームまたは1フィールドの描画が完了する毎にテクスチャバッファの全体を初期化するようにすれば、描画処理上全く問題がない。
さらに、本実施の形態では、MCBイニシャライザ141がMCB構造体インスタンスを初期値に設定するためにMCB構造体インスタンスにアクセスする間隔を設定するRPU制御レジスタ「MCB Initializer Interval」を備えている。CPU5がこのRPU制御レジスタにアクセスして、MCBイニシャライザ141がMCB構造体インスタンスにアクセスする間隔を自由に設定することで、システム全体のパフォーマンスの低下を引き起こすことなく、初期化処理を実行できる。なお、MCB構造体配列を共有のメインRAM25上に設ける場合には、MCBイニシャライザ141からのアクセスが時間的に集中して行われると、他の機能ユニットからのメインRAM25へのアクセスのレイテンシが大きくなり、システム全体のパフォーマンスを低下させる恐れがある。
さらに、本実施の形態では、テクスチャバッファは、RPU9や他の機能ユニットが共有するメインRAM25上に、任意の位置及びサイズで構成可能である。このように、テクスチャバッファを、共有のメインRAM25上に位置及びサイズとも自由に設定可能とすることで、必要とされるテクスチャバッファ領域が少ない場合には、余剰の領域を他の機能ユニットが用いることが可能になる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記では、カラーブレンダ132による半透明合成を行っているため、各ラインにおいて、グラフィック要素(ポリゴン、スプライト)は、デプス値が大きいものから先に描画した。しかし、半透明合成を行わない場合は、デプス値が小さいものから描画することが好ましい。なぜなら、デプス値が小さい、より手前に表示されるべきグラフィック要素から先に描画することにより、描画能力や1ラインに描画するグラフィック要素の数が多すぎる等の理由により、仮に、1ラインに描画すべき全てのグラフィック要素の描画が、表示までに間に合わなかった場合でも、デプス値が大きい、より奥に表示されるべきグラフィック要素から先に描画する場合と比較して、表示後の見た目の印象が良くなるからである。また、デプス値が小さいグラフィック要素から描画することにより、より奥に表示されるべきグラフィック要素については、既に描画されたグラフィック要素と重なる部分については、描画が不要であるため、処理の高速化を図ることができるからである。
(2)上記では、描画のため、スクリーンの1ライン分のデータを格納可能なラインバッファLB1,LB2をRPU9内に設けた。ただし、1ライン分より少ないピクセル数分のデータを格納する2つのピクセルバッファをRPU9内に設けることもできる。また、K(Kは2以上の整数)ライン分のデータを格納可能な2つのバッファをRPU9内に設けることもできる。
(3)上記では、RPU9において、ダブルバッファ方式を採用したが、シングルバッファ方式を採用することもできるし、3以上のバッファを使用する方式を採用することもできる。
(4)上記では、YSU19は、1つのポリゴンインスタンスのソートが確定するたびに、パルスPPLを出力したが、所定数のポリゴンインスタンスのソートが確定するたびに、パルスPPLを出力することもできる。パルスSPLについても同様である。
(5)上記では、表示色の指定に、カラーパレットを用いる間接指定方式を採用したが、直接指定方式を採用することもできる。
(6)上記では、スライサ118は、ポリゴン/スプライト共通データCIのフラグフィールドで、入力されたデータがポリゴンを描画するためのものかスプライトを描画するためのものかを判別するが、ポリゴン/スプライト共通データCIと同時に入力される構造体インスタンスの特定ビット(第79ビット)で、この判別を行うこともできる。
(7)上記では、ポリゴンを三角形としたが、形状はこれに限定されない。また、スプライトを四角形としたが、形状はこれに限定されない。さらに、テクスチャの形状を三角形又は四角形としたが、テクスチャの形状もこれに限定されない。
(8)上記では、テクスチャを2分割して格納したが、分割数はこれに限定されない。また、ポリゴンにマッピングするテクスチャを直角三角形としたが、テクスチャの形状はこれに限定されず任意の形状とすることができる。
(9)上記では、メモリマネージャ140によるテクスチャバッファ領域取得処理をハードワイヤードロジックにより達成した。しかし、CPU5によるソフトウェア処理でも達成は可能であり、その場合、上記ロジックが不要、処理に柔軟性を持たせられるという利点がある。ただし、実行時間が遅くなる、CPU5が高速な応答をしなければならないので、プログラミング上の制限が多くなるといった欠点が発生する。ハードワイヤードロジックで達成する場合は、この欠点は発生しない。
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。
Claims (6)
- 多角形状のグラフィック要素にテクスチャをマッピングするテクスチャマッピング装置であって、
前記テクスチャは複数の切片に分割され、前記テクスチャが前記グラフィックス要素にマッピングされる態様で配置される第1の二次元テクセル空間において少なくとも1つの前記切片が回転及び移動されて、前記切片の全てが、前記テクスチャがメモリに格納される態様で配置される第2の二次元テクセル空間に配置され、
前記第2の二次元空間に配置される前記切片の全てが格納されている二次元配列から前記複数の切片を読み出す読出手段と、
読み出された前記複数の切片を結合する結合手段と、
前記複数の切片を結合して得られた前記テクスチャを前記多角形状のグラフィック要素にマッピングするマッピング手段と、を備えるテクスチャマッピング装置。 - 前記多角形状のグラフィック要素は、三角形状のグラフィック要素であり、
前記テクスチャは、三角形状のテクスチャである、請求項1記載のテクスチャマッピング装置。 - 前記テクスチャは、2つの前記切片に分割され、そのうちの1つの前記切片が回転及び移動されて、前記2つの切片が前記二次元配列に格納されている、請求項2記載のテクスチャマッピング装置。
- 前記三角形状のテクスチャは、前記第2の二次元テクセル空間の第1座標軸に平行な辺と前記第1座標軸に直交する第2座標軸に平行な辺とを有する直角三角形状のテクスチャであり、
前記直角三角形状のテクスチャは、前記第1座標軸あるいは前記第2座標軸のいずれかに平行な直線によって、前記2つの切片に分割されており、
前記1つの切片が180度回転及び移動されて、前記2つの切片が前記二次元配列に格納されている、請求項3記載のテクスチャマッピング装置。 - 前記テクスチャの前記二次元配列への格納形態として、第1格納形態及び第2格納形態が用意されており、
前記テクスチャは、複数のテクセルからなり、
前記第1格納形態では、前記第2の二次元テクセル空間の第1座標軸あるいは前記第1座標軸に直交する第2座標軸のいずれかに、平行かつ一次元に並んだ第1の所定数のテクセルを1単位とし、その1単位のテクセルがメモリの1ワードに格納されるように、前記全ての切片が前記二次元配列に格納され、
前記第2格納形態では、前記第2の二次元テクセル空間に二次元に並んだ第2の所定数のテクセルを1単位とし、その1単位のテクセルが前記メモリの1ワードに格納されるように、前記全ての切片が前記二次元配列に格納される、請求項1から4のいずれかに記載のテクスチャマッピング装置。 - 前記テクスチャの繰り替えしマッピングが行われる場合は、前記分割並びに前記回転及び移動なしに、前記テクスチャは前記二次元配列に格納されており、前記読出手段は、前記二次元配列から前記テクスチャを読出し、前記結合手段は、結合処理を行わず、前記マッピング手段は、前記読出手段が読み出した前記テクスチャを前記多角形状のグラフィック要素にマッピングする、請求項1から4のいずれかに記載のテクスチャマッピング装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011277743A JP2012079338A (ja) | 2005-10-03 | 2011-12-19 | テクスチャマッピング装置 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005290090 | 2005-10-03 | ||
JP2005290090 | 2005-10-03 | ||
JP2005298238 | 2005-10-12 | ||
JP2005298238 | 2005-10-12 | ||
JP2005318087 | 2005-11-01 | ||
JP2005318087 | 2005-11-01 | ||
JP2011277743A JP2012079338A (ja) | 2005-10-03 | 2011-12-19 | テクスチャマッピング装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007539843A Division JP5061273B2 (ja) | 2005-10-03 | 2006-09-14 | 画像生成装置、テクスチャマッピング装置、画像処理装置、及びテクスチャ格納方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012079338A true JP2012079338A (ja) | 2012-04-19 |
Family
ID=37942545
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007539843A Expired - Fee Related JP5061273B2 (ja) | 2005-10-03 | 2006-09-14 | 画像生成装置、テクスチャマッピング装置、画像処理装置、及びテクスチャ格納方法 |
JP2011277743A Pending JP2012079338A (ja) | 2005-10-03 | 2011-12-19 | テクスチャマッピング装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007539843A Expired - Fee Related JP5061273B2 (ja) | 2005-10-03 | 2006-09-14 | 画像生成装置、テクスチャマッピング装置、画像処理装置、及びテクスチャ格納方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090278845A1 (ja) |
JP (2) | JP5061273B2 (ja) |
WO (1) | WO2007043293A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017076397A (ja) * | 2015-10-13 | 2017-04-20 | バイオセンス・ウエブスター・(イスラエル)・リミテッドBiosense Webster (Israel), Ltd. | メッシュのボクセル化 |
KR20210110812A (ko) * | 2019-01-31 | 2021-09-09 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 레지던시 맵 디스크립터 |
JP7312040B2 (ja) | 2019-06-28 | 2023-07-20 | Biprogy株式会社 | テクスチャマッピング装置およびテクスチャマッピング用プログラム |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4795264B2 (ja) * | 2007-02-06 | 2011-10-19 | キヤノン株式会社 | 走査変換装置及び走査変換方法 |
US7876329B2 (en) * | 2007-09-10 | 2011-01-25 | Via Technologies, Inc. | Systems and methods for managing texture data in a computer |
US8155479B2 (en) | 2008-03-28 | 2012-04-10 | Intuitive Surgical Operations Inc. | Automated panning and digital zooming for robotic surgical systems |
JP2012203889A (ja) * | 2011-03-28 | 2012-10-22 | Fujitsu Ltd | 画面共有方法、画面共有装置、及びプログラム |
GB2556743B (en) * | 2012-12-21 | 2018-12-05 | Displaylink Uk Ltd | Management of memory for storing display data |
US9600909B2 (en) | 2015-07-20 | 2017-03-21 | Apple Inc. | Processed texel cache |
CN112802172B (zh) * | 2021-02-24 | 2024-03-01 | 网易(杭州)网络有限公司 | 三维模型的纹理映射方法、装置、存储介质及计算机设备 |
CN113139399B (zh) * | 2021-05-13 | 2024-04-12 | 阳光电源股份有限公司 | 一种图像线框识别方法及服务器 |
CN113721969B (zh) * | 2021-09-08 | 2024-02-06 | 广州城市规划技术开发服务部有限公司 | 一种基于多尺度空间矢量数据级联更新方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3578498B2 (ja) * | 1994-12-02 | 2004-10-20 | 株式会社ソニー・コンピュータエンタテインメント | 画像情報処理装置 |
JP3548642B2 (ja) * | 1994-12-02 | 2004-07-28 | 株式会社ソニー・コンピュータエンタテインメント | 画像情報生成装置及び方法、画像情報処理装置及び方法、並びに記録媒体 |
US5757376A (en) * | 1994-12-02 | 1998-05-26 | Sony Corporation | Method of producing image data and associated recording medium |
JPH08315178A (ja) * | 1995-05-22 | 1996-11-29 | Hudson Soft Co Ltd | 画像合成装置 |
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
JP3795580B2 (ja) * | 1996-06-25 | 2006-07-12 | 株式会社ソニー・コンピュータエンタテインメント | 描画装置および描画方法 |
US6281903B1 (en) * | 1998-12-04 | 2001-08-28 | International Business Machines Corporation | Methods and apparatus for embedding 2D image content into 3D models |
US7119819B1 (en) * | 1999-04-06 | 2006-10-10 | Microsoft Corporation | Method and apparatus for supporting two-dimensional windows in a three-dimensional environment |
US6549201B1 (en) * | 1999-11-23 | 2003-04-15 | Center For Advanced Science And Technology Incubation, Ltd. | Method for constructing a 3D polygonal surface from a 2D silhouette by using computer, apparatus thereof and storage medium |
CA2317336A1 (en) * | 2000-09-06 | 2002-03-06 | David Cowperthwaite | Occlusion resolution operators for three-dimensional detail-in-context |
CN1322473C (zh) * | 2001-05-22 | 2007-06-20 | 约福·沙菲 | 在虚拟三维空间中显示可视内容的方法和系统 |
KR20070008707A (ko) * | 2004-05-03 | 2007-01-17 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 그래픽 파이프라인, 그래픽 렌더링 방법, 컴퓨터 및 그래픽디스플레이 디바이스 |
KR100727034B1 (ko) * | 2005-12-09 | 2007-06-12 | 한국전자통신연구원 | 3차원 공간상에서 2차원 인간형 캐릭터의 표현 및애니메이션 방법 |
-
2006
- 2006-09-14 JP JP2007539843A patent/JP5061273B2/ja not_active Expired - Fee Related
- 2006-09-14 US US12/088,935 patent/US20090278845A1/en not_active Abandoned
- 2006-09-14 WO PCT/JP2006/318681 patent/WO2007043293A1/ja active Application Filing
-
2011
- 2011-12-19 JP JP2011277743A patent/JP2012079338A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017076397A (ja) * | 2015-10-13 | 2017-04-20 | バイオセンス・ウエブスター・(イスラエル)・リミテッドBiosense Webster (Israel), Ltd. | メッシュのボクセル化 |
KR20210110812A (ko) * | 2019-01-31 | 2021-09-09 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 레지던시 맵 디스크립터 |
KR102659643B1 (ko) | 2019-01-31 | 2024-04-22 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 레지던시 맵 디스크립터 |
JP7312040B2 (ja) | 2019-06-28 | 2023-07-20 | Biprogy株式会社 | テクスチャマッピング装置およびテクスチャマッピング用プログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2007043293A1 (ja) | 2009-04-16 |
US20090278845A1 (en) | 2009-11-12 |
WO2007043293A1 (ja) | 2007-04-19 |
JP5061273B2 (ja) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5061273B2 (ja) | 画像生成装置、テクスチャマッピング装置、画像処理装置、及びテクスチャ格納方法 | |
JP4725741B2 (ja) | 描画装置及び描画方法 | |
US5586234A (en) | Parallel processing three-dimensional drawing apparatus for simultaneously mapping a plurality of texture patterns | |
US8704830B2 (en) | System and method for path rendering with multiple stencil samples per color sample | |
EP0715277B1 (en) | Method of producing image data, image data processing apparatus, and recording medium | |
EP0850462B1 (en) | Method and system for rendering graphical objects to image chunks and combining image layers into a display image | |
JP4987070B2 (ja) | 画像生成装置及び画像生成方法 | |
WO1996027168A1 (fr) | Processeur de donnees et dispositif d'ombrage | |
KR910009102B1 (ko) | 화상합성 장치 | |
US5771046A (en) | Image processing system and method including perspective transformation of three-dimensional objects utilizing clipping plane positions | |
US7372461B2 (en) | Image processing apparatus and method of same | |
JPH01131976A (ja) | テクスチャマッピング装置およびその方法 | |
JPWO2007052420A1 (ja) | 画像生成装置 | |
WO1998050890A1 (fr) | Procede d'obtention de fonction projecteur et processeur d'images utilisant ce procede | |
JP2007128180A (ja) | 演算処理装置 | |
JPH06309471A (ja) | 3次元グラフィックス描画装置 | |
JP3556517B2 (ja) | 3次元画像処理装置 | |
JP2011159305A (ja) | 描画装置及び描画方法 | |
JPH11272548A (ja) | 記憶回路制御装置およびグラフィック演算装置 | |
JP3358891B2 (ja) | Z値の透視変換処理方法及び画像処理装置 | |
JP3934111B2 (ja) | 描画装置及び描画方法 | |
JPH08297749A (ja) | シェーディング方法およびシェーディング装置 | |
JPH10261110A (ja) | 動画像生成装置 | |
JPH09153142A (ja) | レンダリング装置およびその方法 | |
JPH0668272A (ja) | 疑似3次元画像合成装置 |