説明

描画処理装置および描画データ圧縮方法

【課題】 描画プリミティブのピクセルにサブピクセル情報をもたせると、データ量が増えるため、実装負担が大きい。
【解決手段】 セットアップ処理部14は、プリミティブ入力部12から与えられる描画プリミティブのストリームをデジタル微分解析器(DDA)により処理するために各種パラメータのセットアップを行う。DDA16は、セットアップ処理部14から供給される描画プリミティブをDDA処理して、ピクセルデータに変換する。DDA16は、スキャンラインに沿って矩形ピクセル集合単位でDDA処理を行い、描画プリミティブのピクセルデータを矩形ピクセル集合単位で出力する。圧縮符号化部18は、矩形ピクセル集合に含まれる各ピクセルのサブピクセル情報をランレングス符号化により圧縮符号化し、FIFOバッファ20に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は描画データを演算処理する描画処理装置、および描画データ圧縮方法に関する。
【背景技術】
【0002】
3次元コンピュータグラフィックスでは、一般的に3次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【0003】
表示装置の画面はビットマップでピクセルの色を表示するため、解像度の限界によって斜めの線が階段状に見えたり、1ピクセルよりも細い線が消えるなど、不自然な描画結果になることがある。これは「エイリアス」もしくは「ジャギー」と呼ばれる現象である。コンピュータグラフィックスの描画品質を向上させるために、このジャギーを軽減するアンチエイリアシングが行われる。
【0004】
アンチエイリアシングの一つの方法として、オーバーサンプリングもしくはスーパーサンプリングと呼ばれる方法がある。この方法は、1つのピクセルをさらに細かいサブピクセル単位に分割して、いったん解像度を高くして描画データを生成しておき、実際に表示装置に画像を出力する際には、1ピクセルの情報に縮小し、元の解像度でピクセルデータを表示装置に出力する。最終的に1ピクセルのデータに変換する際に、サブピクセル単位のカラー値の平均を取るなどの処理を行う。たとえば、1ピクセルを縦横4個、合計16個のピクセルの集まりであると仮定し、仮想的に縦横4倍に解像度を上げてサブピクセル単位で描画しておき、実際に表示する際は、縦横1/4に縮小し、合計16個の仮想的なサブピクセルのカラー値の平均値をもって、元の1ピクセルのカラー値とする。
【発明の開示】
【発明が解決しようとする課題】
【0005】
上述のオーバーサンプリング法では、ピクセルを仮想的に複数のサブピクセルの集まりであると仮定して、そのサブピクセル集合分の描画処理演算を行うことになるため、演算処理量がサブピクセル数に比例して増えることになり、描画処理に時間がかかる。また、描画処理演算で扱うデータ量もサブピクセル数に比例して増えるため、必要なメモリ量が増大する。このように、アンチエイリアシングを行って描画品質を高めようとすると、ピクセル情報を増やすことになり、演算量、メモリ量の両面においてハードウエアの負担が大きくなるという問題を生じていた。
【0006】
本発明はこうした課題に鑑みてなされたものであり、その目的は、演算処理量やメモリ消費量面で効率が良く、描画品質の高い描画処理技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様の描画処理装置は、少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行い、前記描画対象プリミティブをサブピクセルに関する情報を含むピクセルデータに変換するピクセル化処理部と、前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部とを含む。
【0008】
この態様によると、ピクセルにサブピクセルに関する情報をもたせ、サブピクセル単位で描画対象プリミティブの内外判定を行うことにより、演算処理量とメモリ消費量を抑えて、描画品質を向上させることができる。また、矩形のピクセル集合内のサブピクセルに関する情報を圧縮することにより、データ量が小さくなるため、必要なメモリ量をさらに抑えることができる。
【0009】
本発明の別の態様もまた、描画処理装置である。この装置は、少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記描画対象プリミティブのピクセルデータを生成するラスタライザと、前記描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で前記ラスタライザから受け取り、前記描画対象プリミティブに対する描画演算処理を行うシェーダとを含む。前記ラスタライザは、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部を含む。前記シェーダは、前記ラスタライザから前記矩形のピクセル集合単位で受け取った前記描画対象プリミティブのピクセルデータに対して、圧縮符号化された前記サブピクセルに関する情報を伸張する伸張部を含む。
【0010】
この態様によると、矩形のピクセル集合内のサブピクセルに関する情報が圧縮されることにより、ラスタライザからシェーダへ供給される矩形のピクセル集合のデータ量を抑えることができ、データ転送に必要なバッファ容量を抑えるとともに、データ転送時間を短縮できる。
【0011】
本発明のさらに別の態様は、描画データ圧縮方法である。この方法は、少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する。
【0012】
本発明のさらに別の態様もまた、描画データ圧縮方法である。この方法は、少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行うステップと、前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとを含む。
【0013】
本発明のさらに別の態様は、描画データ構造である。この描画データ構造は、描画対象プリミティブの描画データのデータ構造であって、当該描画データは、少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報が、同一データの連続数にもとづくランレングス符号化により圧縮符号化されてなる。
【0014】
本発明のさらに別の態様は、プログラムである。このプログラムは、少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で受け取るステップと、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとをコンピュータに実行させる。
【0015】
本発明のさらに別の態様もまた、プログラムである。このプログラムは、少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報がランレングス圧縮された描画データを受け取るステップと、前記矩形のピクセル集合内の前記サブピクセルのデータ配列の行または列毎に、最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を取得して、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で復号するステップとをコンピュータに実行させる。
【0016】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0017】
本発明によれば、描画対象物のピクセル情報を効率よく圧縮することができる。また、演算量、メモリ量の面で有利に描画処理を進めることができる。
【発明を実施するための最良の形態】
【0018】
図1は、実施の形態に係る描画処理装置100の構成図である。描画処理装置100は、3次元モデル情報にもとづいて2次元画面に表示するための描画データを生成するレンダリング処理を行う。
【0019】
ラスタライザ10は、メモリもしくは他のプロセッサや頂点シェーダなどから描画対象となるプリミティブの頂点データを取得し、描画するスクリーンに対応したピクセル情報に変換する。描画プリミティブは、3次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位であり、頂点単位で表されるデータである。ラスタライザ10は、3次元空間上の描画プリミティブを投影変換により描画平面上の図形に変換するビュー変換を行い、さらに、描画平面上の図形を描画平面の水平方向に沿ってスキャンしながら、1列毎に量子化されたピクセルに変換する。
【0020】
ラスタライザ10により、描画プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ(α)値、奥行きを示すZ値、テクスチャ属性を参照するためのパラメータ座標であるUV座標値などを含むピクセル情報が算出される。
【0021】
ラスタライザ10は、矩形ピクセル集合の単位で上記のラスタライズ処理を行い、ラスタライズ処理後の矩形ピクセル集合をバッファリングしながら、矩形ピクセル集合の単位でシェーダ30に順次供給する。ラスタライザ10からシェーダ30に供給された矩形ピクセル集合は、シェーダ30においてパイプライン処理される。このように、矩形ピクセル集合は、ラスタライザ10が一度に処理するピクセルをまとめたものであり、ラスタライズ処理の単位であり、また同時に、シェーダ30における描画演算処理の単位にもなっている。
【0022】
ここで、矩形ピクセル集合は、描画平面上で所定の大きさをもつ矩形のピクセル領域であり、その領域内には1つ以上のピクセルが含まれる。また、後述のように、各ピクセルは、1つのピクセルを仮想的にさらに細かく分割した複数のサブピクセルを含む。
【0023】
シェーダ30は、ラスタライザ10により算出されたピクセル情報をもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャユニット70から得られるテクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、フレームバッファ50にピクセルデータを書き込む。
【0024】
テクスチャユニット70は、シェーダ30において処理されるピクセルにテクスチャデータをマッピングする処理を行う。ポリゴン面上のピクセルにマッピングされるテクスチャの位置は2次元パラメータ座標であるUV座標系で表される。テクスチャユニット70は、シェーダ30からピクセルにマッピングされるテクスチャのUV座標値を取得し、UV座標値を参照アドレスに変換した後、テクスチャから参照アドレスに対応するカラー値を取得して、シェーダ30に供給する。
【0025】
シェーダ30は、さらに、フレームバッファ50に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、フレームバッファ50のピクセルデータを更新する。
【0026】
フレームバッファ50は、シェーダ30により生成されたピクセルデータをスクリーン座標で格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファ50に記憶されたピクセルデータは、表示装置に出力されて表示される。
【0027】
図2は、ラスタライザ10の構成図である。プリミティブ入力部12は、頂点シェーダなどから受け取った描画プリミティブの頂点座標とパラメータを含むストリームを生成し、セットアップ処理部14に与える。セットアップ処理部14は、描画プリミティブのストリームをデジタル微分解析器(Digital Differential Analyzer;DDA)により処理するための各種パラメータのセットアップを行う。具体的には、描画プリミティブの描画平面への投影像の外接矩形とシザリングの境界領域の共通領域で定義されるバウンディングボックスの設定や、エッジ係数などDDA処理の各種パラメータの設定を行う。
【0028】
セットアップ処理部14は、セットアップ後の描画プリミティブデータをDDA16に供給する。DDA16は、セットアップ処理部14から供給される描画プリミティブを、セットアップ処理部14により設定された各種パラメータにもとづいてDDA処理して、ピクセルデータに変換する。DDA16は、スキャンラインに沿って矩形ピクセル集合単位でこのピクセル化処理を行い、描画プリミティブのピクセルデータを矩形ピクセル集合単位で出力し、圧縮符号化部18に供給する。
【0029】
一般に、DDA16に入力される描画プリミティブの表面積が大きいほど、その描画プリミティブをピクセル化したときのピクセル数が増え、多数の矩形ピクセル集合が生成されることになる。また、描画プリミティブが視点から近い位置にあって、描画プリミティブを高い詳細度レベルで描画する必要がある場合にも、描画プリミティブから生成されるピクセル数は増え、多数の矩形ピクセル集合が生成される。
【0030】
セットアップ処理部14においては、頂点データで描画プリミティブが表されているため、データ量は少ないが、DDA16によりピクセル化処理した後は、ピクセル数が増大し、データ量が増え、またそのデータ量はピクセル化処理が終わるまで判明しない。したがって、ラスタライザ10からシェーダ30に描画プリミティブのピクセルデータを供給する際、通常、ラスタライザ10においていったん描画プリミティブのピクセルデータをいったんバッファに蓄積してからシェーダ30に供給する。このバッファにはハードウエア設計上、容量の制限があるため、これから述べる圧縮符号化処理によりピクセルデータを圧縮することが必要なメモリ容量を抑え、実装面積を小さく抑える上で重要になる。
【0031】
圧縮符号化部18は、DDA16から供給される描画プリミティブのピクセルデータを矩形ピクセル集合単位で圧縮符号化し、FIFOバッファ20に出力する。圧縮符号化部18は、矩形ピクセル集合に含まれる各ピクセルのサブピクセル情報をランレングス符号化により圧縮符号化する。FIFOバッファ20に保持された矩形ピクセル集合はバッファに到着した順に出力されてシェーダ30に供給される。
【0032】
図3は、シェーダ30の構成図である。伸張部32は、ラスタライザ10のFIFOバッファ20から矩形ピクセル集合単位で出力される描画プリミティブのピクセルデータを受け取る。伸張部32が受け取る矩形ピクセル集合は、ラスタライザ10の圧縮符号化部18においてランレングス符号化によりサブピクセル情報が圧縮されている。伸張部32は、ランレングス符号化された矩形ピクセル集合のサブピクセル情報を復号し、伸張する。これにより、圧縮符号化部18により圧縮符号化される前の矩形ピクセル集合が得られる。伸張部32は、復元された矩形ピクセル集合を分配部34に与える。
【0033】
分配部34は、伸張部32により復元された矩形ピクセル集合をシェーダクラスタ36に分配する。シェーダクラスタ36は、並列動作する複数のレンダリングパイプラインを含み、それぞれが担当するピクセルデータを処理することで分配部34により分配された矩形ピクセル集合の描画演算処理を並列に実行する。シェーダクラスタ36は、描画演算処理の結果をフレームバッファ50に出力する。
【0034】
図4(a)、(b)は、ラスタライザ10によるラスタライズ処理の単位である矩形ピクセル集合200を説明する図である。図4(a)は、描画平面上のピクセルの配列に対して定義される矩形ピクセル集合200を示したものである。図4(a)において、ピクセルは丸で表されており、矩形ピクセル集合200は、ここでは一例として、縦横4ピクセル、合計16ピクセルを含む正方形のピクセル領域である。
【0035】
図4(b)は、図4(a)の矩形ピクセル集合200に含まれるピクセル210、220を拡大した図である。ピクセル210、220は、その内部を仮想的にさらに細かく分割した複数のサブピクセルを含む。ここでは、一例として、各ピクセル210、220は、縦横4個、合計16個のサブピクセルを含む。各ピクセルに含まれる複数のサブピクセルをサブピクセルマスクと呼ぶ。
【0036】
図4(a)、(b)の例では、矩形ピクセル集合200には16個のピクセルが含まれ、各ピクセルには16個のサブピクセルが含まれるから、矩形ピクセル集合200には全体として、合計256個のサブピクセルが含まれることになる。
【0037】
DDA16は、矩形ピクセル集合200単位で描画平面上に投影された描画プリミティブを走査し、ピクセルデータに変換する。その際、DDA16は、通常の処理モードでは、ピクセル単位で矩形ピクセル集合200内の各ピクセルが描画プリミティブの内側にあるか外側にあるかを判定するが、サブピクセルマスクを用いる処理モードでは、サブピクセル単位で描画プリミティブの内外判定を行う。サブピクセルマスクを用いる処理モードの場合、サブピクセル単位での内外判定とピクセル単位での内外判定の両方を行ってもよい。
【0038】
DDA16は、サブピクセル単位で内外判定を行った場合、各サブピクセルに内外判定に係る判定値をもたせる。サブピクセルが描画プリミティブの内側にあれば、そのサブピクセルに有意の値をもたせる。たとえば、サブピクセルが描画プリミティブの内側であれば1、外側であれば0の2値の内外判定値をもたせる。したがってサブピクセルには1ビットの情報をもたせれば足りる。256個のサブピクセルを含む矩形ピクセル集合200の場合、矩形ピクセル集合200内の16個のピクセルについてRGB値やアルファ値などのピクセルデータをもつとともに、それ以外に256ビットのサブピクセル情報をもつことになる。矩形ピクセル集合200のサブピクセル情報は、各要素がバイナリ値である2次元配列の形でもつ。
【0039】
図5(a)〜(c)は、描画平面上に投影された描画プリミティブと矩形ピクセル集合200の関係を説明する図である。図5(a)は、描画平面上に投影された三角形の描画プリミティブ300に対して、ラスタライズ処理において描画領域をスキャンするときの矩形ピクセル集合200a、200b、200cを示したものである。描画プリミティブの内部は斜線で示されている。矩形ピクセル集合200a、200b、200cに含まれる描画プリミティブ300の内部領域は、それぞれの矩形ピクセル集合200a、200b、200c内で1つの凸領域となっており、途中で切れ目がない。
【0040】
図5(b)は、描画平面上に投影された正方形の描画プリミティブ310に対して、矩形ピクセル集合200dを示したものである。図5(c)は、描画平面上に投影された線分の描画プリミティブ320に対して、矩形ピクセル集合200eを示したものである。いずれの場合でも、矩形ピクセル集合200d、200eに含まれる描画プリミティブ310、320の内部領域は、それぞれの矩形ピクセル集合200d、200e内で1つの途中で切れ目のない凸領域となっている。
【0041】
このように、矩形ピクセル集合200a〜200eに含まれる描画プリミティブ300、310、320の内部領域が、2つの領域に分かれていたり、不連続な切れ目がないのは、描画プリミティブの描画平面への投影像300、310、320がいずれも凸多角形であるからである。ここで、ある多角形が凸多角形であるとは、その多角形の任意の2点を結ぶ線分上の任意の点がその多角形に常に含まれることをいう。より一般的に言えば、描画プリミティブが凸領域であれば、矩形ピクセル集合内の描画プリミティブの描画領域も当然に凸領域となり、必ず1つの連続した途中で切れ目のない領域となる。ラスタライザ10の圧縮符号化部18による矩形ピクセル集合のサブピクセル情報の圧縮符号化は、この性質に着目して行われる。
【0042】
図6(a)、(b)は、矩形ピクセル集合200に含まれるサブピクセル情報のランレングス符号化を説明する図である。
【0043】
図6(a)において、矩形ピクセル集合200は、縦横4ピクセル、合計16ピクセルを含み、各ピクセルは正方格子で表されている。さらに、各ピクセルは、縦横4サブピクセル、合計16サブピクセルを含み、各サブピクセルは小さい丸で表されている。サブピクセルの配列は、16行×16列の2次元配列であり、行番号、列番号をそれぞれ0〜fの16進数で示している。
【0044】
斜線を付したサブピクセルは、DDA16により描画プリミティブの内側にあると判定されたサブピクセルである。図5(a)〜(c)で説明したように、描画プリミティブは凸多角形であるため、描画プリミティブの内部にあると判定されたサブピクセルは、矩形ピクセル集合200内で連続しており、途中に切れ目がない。すなわち、矩形ピクセル集合200の各行で、ビット値が1であるサブピクセルは連続しており、途中にビット値が0であるサブピクセルを挟むことはない。
【0045】
たとえば、矩形ピクセル集合200の行2のサブピクセルのビット列を考えると、ビット値が1であるサブピクセルは、列3から開始し列5まで続き、列5において終了し、その後はビット値が1であるサブピクセルは存在しない。したがって、行2のサブピクセルのビット列の情報は、ビット値が1のサブピクセルの開始点を示す値「3」と、ビット値が1のサブピクセルが連続する長さ「3」によって一意に表すことができる。
【0046】
同様に、矩形ピクセル集合200の行3のサブピクセルのビット列については、ビット値が1のサブピクセルは、列4から開始し列aまで続き、その後はビット値1のサブピクセルは存在しない。したがって、行3のサブピクセルのビット列の情報は、ビット値が1のサブピクセルの開始位置を示す値「4」と、ビット値が1のサブピクセルが連続する長さ「7」によって一意に表すことができる。
【0047】
このように、矩形ピクセル集合200の各行のサブピクセルのビット列は、ビット値1が連続する部分列に着目して、ビット値1の「開始点」と「長さ」によって一意に表すことができる。圧縮符号化部18は、この「開始点」と「長さ」をランレングス符号として用いて、矩形ピクセル集合200の各行のサブピクセルのビット列を符号化する。
【0048】
図6(b)は、図6(a)の矩形ピクセル集合200の各行のサブピクセルのビット列を「開始点」と「長さ」でランレングス符号化したデータを示す。矩形ピクセル集合200の行0から行fまでのランレングス符号を上から順に示している。ビット値が1のサブピクセルの各行における開始位置と長さはともに、16進数で0からfまでの値をとるため、いずれも4ビットの情報で表すことができる。なお、同図では、16進数であることを示す「0x」を頭につけて開始点と長さの値を16進数で表記している。
【0049】
矩形ピクセル集合200の行0には、ビット値が1のサブピクセルは存在しないから、長さは0x0である。この場合、開始点の値はドントケア(don't care)であり、たとえば0x0にしておけばよい。行1のランレングス符号は行0と同じである。行2のランレングス符号は「長さ0x3、開始点0x3」、行3のランレングス符号は「長さ0x7、開始点0x4」、行3のランレングス符号は「長さ0xc、開始点0x4」である。このようにして、行0から行3までの4行のランレングス符号によって、第1行の4ピクセルに含まれるサブピクセル情報の符号化データが得られる。
【0050】
以下、同様に、第2行の4ピクセルについても、同様に、行4のランレングス符号は「長さ0xc、開始点0x4」、行5のランレングス符号は「長さ0xb、開始点0x5」、行6のランレングス符号は「長さ0xb、開始点0x5」、行7のランレングス符号は「長さ0xa、開始点0x6」と符号化される。第3行の4ピクセル、第4行の4ピクセルについても同様である。このようにして、矩形ピクセル集合200全体で各行のサブピクセル情報が同図に示すような「長さ」と「開始点」のランレングス符号に変換される。
【0051】
矩形ピクセル集合200の各行のサブピクセル情報は、長さ4ビット、開始点4ビットの合計8ビットの符号に符号化され、これが16行あるため、矩形ピクセル集合200全体のサブピクセル情報は、合計8ビット×16=128ビットの符号データに符号化される。これは、矩形ピクセル集合200が元々16ビット×16=256ビットのサブピクセル情報を持っていたことと比べると、データ量が1/2に圧縮されていることになり、優れた圧縮率が得られている。この圧縮率は、描画平面に投影された描画プリミティブが凸多角形、より一般的には凸領域であれば、いつでも得られるものである。
【0052】
したがって、FIFOバッファ20は、矩形ピクセル集合200が縦横16サブピクセル、合計256サブピクセルを含む場合、128ビットに圧縮された矩形ピクセル集合200のサブピクセル情報を順次FIFO順で保持する容量を確保すればよいことになり、サブピクセル情報を転送するためのバス幅は128ビットで済む。256ビットの矩形ピクセル集合200のサブピクセル情報をそのままFIFOバッファ20に保持しようとした場合、256ビットのバス幅が必要となり、配線などのハードウエアの実装負担が大きくなるが、本実施の形態のランレングス符号化によれば、FIFOバッファ20の転送バス幅を半分にして、実装面積を半分に減らすことができる。
【0053】
なお、上記の説明では、矩形ピクセル集合200の行毎にランレングス符号化を行ったが、列方向にビット列を考えても性質は全く同じであるから、列毎にランレングス符号化を行ってもよいことはいうまでもない。
【0054】
また、上記の説明では、「開始点」と「長さ」にもとづいてランレングス符号化を行ったが、ビット値が1であるサブピクセルが連続する部分列において、その部分列「開始点」と「終了点」の2つの値によっても、各行のサブピクセルのビット列を一意に表すことができるから、「開始点」と「終了点」にもとづいてランレングス符号化を行ってもよい。「開始点」と「終了点」の差により「長さ」が得られるから、「開始点」と「終了点」をランレングス符号とすることと、「開始点」と「長さ」をランレングス符号とすることとは等価であり、実質的な違いはない。
【0055】
このようにしてサブピクセル情報がランレングス符号化された矩形ピクセル集合200はFIFOバッファ20に一時的に保持され、先着順にシェーダ30に投入される。シェーダ30において、伸張部32が、矩形ピクセル集合200の各行の「開始点」と「長さ」からなる符号にもとづいて、行毎に元のサブピクセル情報のビット列を復元する。これにより、元の256ビットのサブピクセル情報を含む矩形ピクセル集合200が得られる。
【0056】
図7は、描画処理装置100による描画処理手順を説明するフローチャートである。
【0057】
ラスタライザ10のプリミティブ入力部12が描画プリミティブの入力を受け取り、セットアップ処理部14が描画プリミティブのセットアップ処理を行う(S10)。DDA16は、描画面に投影された描画プリミティブの描画領域を矩形ピクセル集合単位で走査し(S12)、各ピクセル内ではサブピクセル単位で描画プリミティブの内外判定を行う(S14)。
【0058】
圧縮符号化部18は、DDA16により生成された矩形ピクセル集合に含まれるサブピクセル情報をランレングス符号化により圧縮符号化する(S16)。サブピクセル集合が圧縮符号化された矩形ピクセル集合は、FIFOバッファ20に順次書き込まれる。
【0059】
セットアップ処理部14に定められたバウンディングボックス内において、DDA16が次に走査すべき領域がある場合(S18のN)、処理手順はステップS12に戻り、DDA16が矩形ピクセル集合単位での走査を継続し、サブピクセル単位の内外判定S14、サブピクセル情報の圧縮符号化S16を行う。
【0060】
DDA16が、セットアップ処理部14に定められたバウンディングボックス内において、矩形ピクセル集合単位での描画領域の走査を完了すると(S18のY)、描画プリミティブのピクセル化処理は終了し、FIFOバッファ20にバッファリングされた矩形ピクセル集合がバッファリングされた順に読み出されて、シェーダ30に転送される(S20)。ここで、FIFOバッファ20は、描画プリミティブのラスタライズ処理が完了する前から、バッファリングされた描画プリミティブの矩形ピクセル集合をシェーダ30に順次転送してよい。
【0061】
シェーダ30の伸張部32は、FIFOバッファ20から転送された矩形ピクセル集合のサブピクセル情報をランレングス復号により伸張する(S22)。分配部34は、サブピクセル情報が復元した矩形ピクセル集合をシェーダクラスタ36に分配し、シェーダクラスタ36は、矩形ピクセル集合に対して描画演算処理を行う(S24)。
【0062】
上記の説明では、DDA16が1つの矩形ピクセル集合を生成するたびに、圧縮符号化部18がその矩形ピクセル集合内のサブピクセル情報をランレングス符号化したが、DDA16が描画プリミティブ全体のラスタライズ処理を完了し、その描画プリミティブのすべての矩形ピクセル集合を生成した後で、圧縮符号化部18がすべての矩形ピクセル集合を1つずつランレングス符号化してもよい。
【0063】
以上述べたように、本実施の形態によれば、ピクセルを仮想的に複数のサブピクセルに分割したサブピクセルマスクを利用し、描画対象物の内外判定に係る1ビットの判定値をサブピクセルにもたせている。このサブピクセル情報をアンチエイリアシングなどの処理に利用して、描画品質の向上に役立てることができる。サブピクセル情報は1ビットの値しかもたないため、単純に解像度を上げて描画するオーバーサンプリング法に比べて、演算量が少なく、必要なメモリ量が少なくて済む。
【0064】
さらに、本実施の形態によれば、描画処理の単位である矩形ピクセル集合内のサブピクセル情報をランレングス符号化により圧縮するため、サブピクセル情報の格納に必要なメモリ量をさらに減らすことができる。また、これにより、ラスタライザ10からシェーダ30へ矩形ピクセル集合を供給する際に、矩形ピクセル集合をバッファリングするために必要なFIFOバッファ20の容量を抑えることができ、レジスタや配線等の実装コストを抑えることができる。また、矩形ピクセル集合のサブピクセル情報を圧縮したことにより、ラスタライザ10からシェーダ30へ矩形ピクセル集合を転送する際のデータ量を削減することができるため、処理速度が向上する。
【0065】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【0066】
上記の説明では、矩形ピクセル集合内に複数のピクセルがある場合を説明したが、特別な場合として、矩形ピクセル集合内に1つだけのピクセルが含まれ、そのピクセルが複数のサブピクセルに分割されている場合にも、同様にランレングス符号化によりサブピクセル情報を圧縮することができる。たとえば、矩形ピクセル集合に含まれるただ1つのピクセルが縦横16サブピクセル、合計256サブピクセルに分割されている場合は、上記の実施の形態で説明した例と全く同様に考えることができる。
【0067】
1ピクセルの大きさよりも小さいポリゴンを設定し、より滑らかな曲面を表現する「マイクロポリゴン」と呼ばれる手法が、高画質の3次元コンピュータグラフィックスで利用されることがある。マイクロポリゴンでは、ピクセルよりも小さいサイズに分割された描画プリミティブが用いられる。このような場合には、1ピクセルを多数のサブピクセルに分割したサブピクセルマスクを使用することがあり、1ピクセルを上記の説明における「矩形ピクセル集合」とみなし、その1ピクセル内のサブピクセル情報を同様の方法でランレングス符号化により圧縮することが考えられる。
【0068】
また、マイクロポリゴンのように、非常に小さいポリゴンを描画プリミティブとして用いる場合、矩形ピクセル集合内に、複数の描画プリミティブが存在する場合も想定される。たとえば、矩形ピクセル集合内に、2つのマイクロポリゴンの先端部分が存在する場合などである。この場合、矩形ピクセル集合に含まれる描画領域は、途中で切れ目のない1つの領域とならず、2つの領域ができるため、上記の実施の形態で説明した、「開始点」と「長さ」にもとづくランレングス符号化は適用できない。しかしながら、このような場合でも、一般的な意味でのランレングス符号化、すなわちサブピクセルの2次元データ配列を始めから順に観察した場合に、0が連続する数または1が連続する個数をカウントして、その個数を順に並べるランレングス符号化によって、サブピクセル情報を圧縮することができる。
【0069】
このように矩形ピクセル集合内に複数の描画プリミティブが存在する場合に対処するために、矩形ピクセル集合内に複数の描画プリミティブがあるかどうかを判定する判定部をラスタライザ10の圧縮符号化部18の前段に設けてもよい。判定部はその判定結果を圧縮符号化部18に提供し、圧縮符号化部18は、矩形ピクセル集合内に複数の描画プリミティブが存在する場合は、同一値の連続数にもとづく一般的な意味でのランレングス符号化を行い、矩形ピクセル集合内に1つの描画プリミティブしか存在しない場合は、「開始点」と「長さ」にもとづくランレングス符号化を行うように切り替えてもよい。
【0070】
また、判定部により矩形ピクセル集合内に複数の描画プリミティブが存在するかどうかを事前に判定しなくても、圧縮符号化部18は、矩形ピクセル集合の各行において1の値をもつビット列に切れ目があるかどうかを判定することにより、矩形ピクセル集合内に複数の描画プリミティブが存在することを間接的に判断することができる。したがって、判定部を設けることなく、圧縮符号化部18が矩形ピクセル集合の各行のビット列の値を読み込む過程で、同一値の連続数にもとづく一般的なランレングス符号化を行うか、「開始点」と「長さ」にもとづくランレングス符号化を行うかを判定して切り替えてもよい。
【0071】
上記の説明では、ピクセルを仮想的に複数のサブピクセルに分割したサブピクセルマスクにおいて、各サブピクセルに描画プリミティブの内外判定値の情報をもたせたが、サブピクセルにもたせる情報はこれ以外の情報であってもかまわない。サブピクセルにもたせる情報の種類には関係なく、本発明の圧縮符号化を適用することができるからである。また、上記の説明では、各サブピクセルには1ビットの情報をもたせたが、2ビット以上の情報をもたせてもよい。その場合は、ランレングス符号化において、サブピクセルの値が0、1の2値ではなく、3つ以上の値をとるようになるため、同一値が連続する個数以外にその連続する値をランレングス符号に含めて符号化を行うことになる。
【図面の簡単な説明】
【0072】
【図1】実施の形態に係る描画処理装置の構成図である。
【図2】図1のラスタライザの構成図である。
【図3】図1のシェーダの構成図である。
【図4】図2のラスタライザによるラスタライズ処理の単位である矩形ピクセル集合を説明する図である。
【図5】描画平面上に投影された描画プリミティブと矩形ピクセル集合の関係を説明する図である。
【図6】矩形ピクセル集合に含まれるサブピクセル情報のランレングス符号化を説明する図である。
【図7】実施の形態に係る描画処理装置による描画処理手順を説明するフローチャートである。
【符号の説明】
【0073】
10 ラスタライザ、 12 プリミティブ入力部、 14 セットアップ処理部、 16 DDA、 18 圧縮符号化部、 20 FIFOバッファ、 30 シェーダ、 32 伸張部、 34 分配部、 36 シェーダクラスタ、 50 フレームバッファ、 70 テクスチャユニット、 100 描画処理装置、 200 矩形ピクセル集合。

【特許請求の範囲】
【請求項1】
少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行い、前記描画対象プリミティブをサブピクセルに関する情報を含むピクセルデータに変換するピクセル化処理部と、
前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部とを含むことを特徴とする描画処理装置。
【請求項2】
少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記描画対象プリミティブのピクセルデータを生成するラスタライザと、
前記描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で前記ラスタライザから受け取り、前記描画対象プリミティブに対する描画演算処理を行うシェーダとを含み、
前記ラスタライザは、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部を含み、
前記シェーダは、前記ラスタライザから前記矩形のピクセル集合単位で受け取った前記描画対象プリミティブのピクセルデータに対して、圧縮符号化された前記サブピクセルに関する情報を伸張する伸張部を含むことを特徴とする描画処理装置。
【請求項3】
前記ラスタライザによりラスタライズ処理された前記描画対象プリミティブのピクセルデータを一時的に保持し、保持された前記ピクセルデータを前記シェーダに転送するバッファをさらに含み、
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルに関する情報を前記バッファの転送バス幅以下のサイズに圧縮符号化することを特徴とする請求項2に記載の描画処理装置。
【請求項4】
前記サブピクセルに関する情報は、前記描画対象プリミティブをサブピクセル単位で内外判定した結果を二値表現したデータであることを特徴とする請求項1から3のいずれかに記載の描画処理装置。
【請求項5】
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルのデータ配列において同一値の連続数を表すランレングス符号を生成することにより、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を圧縮符号化することを特徴とする請求項4に記載の描画処理装置。
【請求項6】
ラスタライズ処理される前記描画対象プリミティブは描画面において凸領域であり、
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルのデータ配列の各行または各列において最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を生成することにより、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で圧縮符号化することを特徴とする請求項4に記載の描画処理装置。
【請求項7】
少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化することを特徴とする描画データ圧縮方法。
【請求項8】
少なくとも1つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行うステップと、
前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとを含むことを特徴とする描画データ圧縮方法。
【請求項9】
描画対象プリミティブの描画データのデータ構造であって、
当該描画データは、少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報が、同一データの連続数にもとづくランレングス符号化により圧縮符号化されてなることを特徴とする描画データ構造。
【請求項10】
少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で受け取るステップと、
前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項11】
少なくとも1つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎にサブピクセルに関する情報がランレングス圧縮された描画データを受け取るステップと、
前記矩形のピクセル集合内の前記サブピクセルのデータ配列の行または列毎に、最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を取得して、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で復号するステップとをコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−221418(P2006−221418A)
【公開日】平成18年8月24日(2006.8.24)
【国際特許分類】
【出願番号】特願2005−34309(P2005−34309)
【出願日】平成17年2月10日(2005.2.10)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】