(57)【要約】【課題】  描画プリミティブのピクセルにサブピクセル情報をもたせると、データ量が増えるため、実装負担が大きい。【解決手段】  セットアップ処理部１４は、プリミティブ入力部１２から与えられる描画プリミティブのストリームをデジタル微分解析器（ＤＤＡ）により処理するために各種パラメータのセットアップを行う。ＤＤＡ１６は、セットアップ処理部１４から供給される描画プリミティブをＤＤＡ処理して、ピクセルデータに変換する。ＤＤＡ１６は、スキャンラインに沿って矩形ピクセル集合単位でＤＤＡ処理を行い、描画プリミティブのピクセルデータを矩形ピクセル集合単位で出力する。圧縮符号化部１８は、矩形ピクセル集合に含まれる各ピクセルのサブピクセル情報をランレングス符号化により圧縮符号化し、ＦＩＦＯバッファ２０に出力する。【選択図】  図２
2006221418.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行い、前記描画対象プリミティブをサブピクセルに関する情報を含むピクセルデータに変換するピクセル化処理部と、
前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部とを含むことを特徴とする描画処理装置。
【請求項２】
少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記描画対象プリミティブのピクセルデータを生成するラスタライザと、
前記描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で前記ラスタライザから受け取り、前記描画対象プリミティブに対する描画演算処理を行うシェーダとを含み、
前記ラスタライザは、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部を含み、
前記シェーダは、前記ラスタライザから前記矩形のピクセル集合単位で受け取った前記描画対象プリミティブのピクセルデータに対して、圧縮符号化された前記サブピクセルに関する情報を伸張する伸張部を含むことを特徴とする描画処理装置。
【請求項３】
前記ラスタライザによりラスタライズ処理された前記描画対象プリミティブのピクセルデータを一時的に保持し、保持された前記ピクセルデータを前記シェーダに転送するバッファをさらに含み、
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルに関する情報を前記バッファの転送バス幅以下のサイズに圧縮符号化することを特徴とする請求項２に記載の描画処理装置。
【請求項４】
前記サブピクセルに関する情報は、前記描画対象プリミティブをサブピクセル単位で内外判定した結果を二値表現したデータであることを特徴とする請求項１から３のいずれかに記載の描画処理装置。
【請求項５】
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルのデータ配列において同一値の連続数を表すランレングス符号を生成することにより、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を圧縮符号化することを特徴とする請求項４に記載の描画処理装置。
【請求項６】
ラスタライズ処理される前記描画対象プリミティブは描画面において凸領域であり、
前記圧縮符号化部は、前記矩形のピクセル集合内の前記サブピクセルのデータ配列の各行または各列において最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を生成することにより、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で圧縮符号化することを特徴とする請求項４に記載の描画処理装置。
【請求項７】
少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化することを特徴とする描画データ圧縮方法。
【請求項８】
少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行うステップと、
前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとを含むことを特徴とする描画データ圧縮方法。
【請求項９】
描画対象プリミティブの描画データのデータ構造であって、
当該描画データは、少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報が、同一データの連続数にもとづくランレングス符号化により圧縮符号化されてなることを特徴とする描画データ構造。
【請求項１０】
少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で受け取るステップと、
前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１１】
少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎にサブピクセルに関する情報がランレングス圧縮された描画データを受け取るステップと、
前記矩形のピクセル集合内の前記サブピクセルのデータ配列の行または列毎に、最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を取得して、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で復号するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は描画データを演算処理する描画処理装置、および描画データ圧縮方法に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスでは、一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
表示装置の画面はビットマップでピクセルの色を表示するため、解像度の限界によって斜めの線が階段状に見えたり、１ピクセルよりも細い線が消えるなど、不自然な描画結果になることがある。これは「エイリアス」もしくは「ジャギー」と呼ばれる現象である。コンピュータグラフィックスの描画品質を向上させるために、このジャギーを軽減するアンチエイリアシングが行われる。
【０００４】
アンチエイリアシングの一つの方法として、オーバーサンプリングもしくはスーパーサンプリングと呼ばれる方法がある。この方法は、１つのピクセルをさらに細かいサブピクセル単位に分割して、いったん解像度を高くして描画データを生成しておき、実際に表示装置に画像を出力する際には、１ピクセルの情報に縮小し、元の解像度でピクセルデータを表示装置に出力する。最終的に１ピクセルのデータに変換する際に、サブピクセル単位のカラー値の平均を取るなどの処理を行う。たとえば、１ピクセルを縦横４個、合計１６個のピクセルの集まりであると仮定し、仮想的に縦横４倍に解像度を上げてサブピクセル単位で描画しておき、実際に表示する際は、縦横１／４に縮小し、合計１６個の仮想的なサブピクセルのカラー値の平均値をもって、元の１ピクセルのカラー値とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のオーバーサンプリング法では、ピクセルを仮想的に複数のサブピクセルの集まりであると仮定して、そのサブピクセル集合分の描画処理演算を行うことになるため、演算処理量がサブピクセル数に比例して増えることになり、描画処理に時間がかかる。また、描画処理演算で扱うデータ量もサブピクセル数に比例して増えるため、必要なメモリ量が増大する。このように、アンチエイリアシングを行って描画品質を高めようとすると、ピクセル情報を増やすことになり、演算量、メモリ量の両面においてハードウエアの負担が大きくなるという問題を生じていた。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、演算処理量やメモリ消費量面で効率が良く、描画品質の高い描画処理技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の描画処理装置は、少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行い、前記描画対象プリミティブをサブピクセルに関する情報を含むピクセルデータに変換するピクセル化処理部と、前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部とを含む。
【０００８】
この態様によると、ピクセルにサブピクセルに関する情報をもたせ、サブピクセル単位で描画対象プリミティブの内外判定を行うことにより、演算処理量とメモリ消費量を抑えて、描画品質を向上させることができる。また、矩形のピクセル集合内のサブピクセルに関する情報を圧縮することにより、データ量が小さくなるため、必要なメモリ量をさらに抑えることができる。
【０００９】
本発明の別の態様もまた、描画処理装置である。この装置は、少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記描画対象プリミティブのピクセルデータを生成するラスタライザと、前記描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で前記ラスタライザから受け取り、前記描画対象プリミティブに対する描画演算処理を行うシェーダとを含む。前記ラスタライザは、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する圧縮符号化部を含む。前記シェーダは、前記ラスタライザから前記矩形のピクセル集合単位で受け取った前記描画対象プリミティブのピクセルデータに対して、圧縮符号化された前記サブピクセルに関する情報を伸張する伸張部を含む。
【００１０】
この態様によると、矩形のピクセル集合内のサブピクセルに関する情報が圧縮されることにより、ラスタライザからシェーダへ供給される矩形のピクセル集合のデータ量を抑えることができ、データ転送に必要なバッファ容量を抑えるとともに、データ転送時間を短縮できる。
【００１１】
本発明のさらに別の態様は、描画データ圧縮方法である。この方法は、少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画対象プリミティブをラスタライズ処理し、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化する。
【００１２】
本発明のさらに別の態様もまた、描画データ圧縮方法である。この方法は、少なくとも１つのピクセルを含む矩形のピクセル集合単位で描画領域を走査して、サブピクセル単位で描画対象プリミティブの内外判定を行うステップと、前記矩形のピクセル集合毎に、前記サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとを含む。
【００１３】
本発明のさらに別の態様は、描画データ構造である。この描画データ構造は、描画対象プリミティブの描画データのデータ構造であって、当該描画データは、少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報が、同一データの連続数にもとづくランレングス符号化により圧縮符号化されてなる。
【００１４】
本発明のさらに別の態様は、プログラムである。このプログラムは、少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された描画対象プリミティブのピクセルデータを前記矩形のピクセル集合単位で受け取るステップと、前記矩形のピクセル集合毎に、サブピクセルに関する情報を同一データの連続数にもとづくランレングス符号化により圧縮符号化するステップとをコンピュータに実行させる。
【００１５】
本発明のさらに別の態様もまた、プログラムである。このプログラムは、少なくとも１つのピクセルを含む矩形のピクセル集合単位でラスタライズ処理された前記描画対象プリミティブのピクセルデータを含み、前記矩形のピクセル集合毎に、サブピクセルに関する情報がランレングス圧縮された描画データを受け取るステップと、前記矩形のピクセル集合内の前記サブピクセルのデータ配列の行または列毎に、最初に有意の値が現れる開始位置と、当該行または列において有意の値がその開始位置から連続する個数とを表すランレングス符号を取得して、前記矩形のピクセル集合内の前記サブピクセルのデータ配列を行単位または列単位で復号するステップとをコンピュータに実行させる。
【００１６】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１７】
本発明によれば、描画対象物のピクセル情報を効率よく圧縮することができる。また、演算量、メモリ量の面で有利に描画処理を進めることができる。
【発明を実施するための最良の形態】
【００１８】
図１は、実施の形態に係る描画処理装置１００の構成図である。描画処理装置１００は、３次元モデル情報にもとづいて２次元画面に表示するための描画データを生成するレンダリング処理を行う。
【００１９】
ラスタライザ１０は、メモリもしくは他のプロセッサや頂点シェーダなどから描画対象となるプリミティブの頂点データを取得し、描画するスクリーンに対応したピクセル情報に変換する。描画プリミティブは、３次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位であり、頂点単位で表されるデータである。ラスタライザ１０は、３次元空間上の描画プリミティブを投影変換により描画平面上の図形に変換するビュー変換を行い、さらに、描画平面上の図形を描画平面の水平方向に沿ってスキャンしながら、１列毎に量子化されたピクセルに変換する。
【００２０】
ラスタライザ１０により、描画プリミティブがピクセル展開され、各ピクセルについて、ＲＧＢ３原色で表されるカラー値、透明度を示すアルファ（α）値、奥行きを示すＺ値、テクスチャ属性を参照するためのパラメータ座標であるＵＶ座標値などを含むピクセル情報が算出される。
【００２１】
ラスタライザ１０は、矩形ピクセル集合の単位で上記のラスタライズ処理を行い、ラスタライズ処理後の矩形ピクセル集合をバッファリングしながら、矩形ピクセル集合の単位でシェーダ３０に順次供給する。ラスタライザ１０からシェーダ３０に供給された矩形ピクセル集合は、シェーダ３０においてパイプライン処理される。このように、矩形ピクセル集合は、ラスタライザ１０が一度に処理するピクセルをまとめたものであり、ラスタライズ処理の単位であり、また同時に、シェーダ３０における描画演算処理の単位にもなっている。
【００２２】
ここで、矩形ピクセル集合は、描画平面上で所定の大きさをもつ矩形のピクセル領域であり、その領域内には１つ以上のピクセルが含まれる。また、後述のように、各ピクセルは、１つのピクセルを仮想的にさらに細かく分割した複数のサブピクセルを含む。
【００２３】
シェーダ３０は、ラスタライザ１０により算出されたピクセル情報をもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャユニット７０から得られるテクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、フレームバッファ５０にピクセルデータを書き込む。
【００２４】
テクスチャユニット７０は、シェーダ３０において処理されるピクセルにテクスチャデータをマッピングする処理を行う。ポリゴン面上のピクセルにマッピングされるテクスチャの位置は２次元パラメータ座標であるＵＶ座標系で表される。テクスチャユニット７０は、シェーダ３０からピクセルにマッピングされるテクスチャのＵＶ座標値を取得し、ＵＶ座標値を参照アドレスに変換した後、テクスチャから参照アドレスに対応するカラー値を取得して、シェーダ３０に供給する。
【００２５】
シェーダ３０は、さらに、フレームバッファ５０に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、フレームバッファ５０のピクセルデータを更新する。
【００２６】
フレームバッファ５０は、シェーダ３０により生成されたピクセルデータをスクリーン座標で格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファ５０に記憶されたピクセルデータは、表示装置に出力されて表示される。
【００２７】
図２は、ラスタライザ１０の構成図である。プリミティブ入力部１２は、頂点シェーダなどから受け取った描画プリミティブの頂点座標とパラメータを含むストリームを生成し、セットアップ処理部１４に与える。セットアップ処理部１４は、描画プリミティブのストリームをデジタル微分解析器（Digital Differential Analyzer；ＤＤＡ）により処理するための各種パラメータのセットアップを行う。具体的には、描画プリミティブの描画平面への投影像の外接矩形とシザリングの境界領域の共通領域で定義されるバウンディングボックスの設定や、エッジ係数などＤＤＡ処理の各種パラメータの設定を行う。
【００２８】
セットアップ処理部１４は、セットアップ後の描画プリミティブデータをＤＤＡ１６に供給する。ＤＤＡ１６は、セットアップ処理部１４から供給される描画プリミティブを、セットアップ処理部１４により設定された各種パラメータにもとづいてＤＤＡ処理して、ピクセルデータに変換する。ＤＤＡ１６は、スキャンラインに沿って矩形ピクセル集合単位でこのピクセル化処理を行い、描画プリミティブのピクセルデータを矩形ピクセル集合単位で出力し、圧縮符号化部１８に供給する。
【００２９】
一般に、ＤＤＡ１６に入力される描画プリミティブの表面積が大きいほど、その描画プリミティブをピクセル化したときのピクセル数が増え、多数の矩形ピクセル集合が生成されることになる。また、描画プリミティブが視点から近い位置にあって、描画プリミティブを高い詳細度レベルで描画する必要がある場合にも、描画プリミティブから生成されるピクセル数は増え、多数の矩形ピクセル集合が生成される。
【００３０】
セットアップ処理部１４においては、頂点データで描画プリミティブが表されているため、データ量は少ないが、ＤＤＡ１６によりピクセル化処理した後は、ピクセル数が増大し、データ量が増え、またそのデータ量はピクセル化処理が終わるまで判明しない。したがって、ラスタライザ１０からシェーダ３０に描画プリミティブのピクセルデータを供給する際、通常、ラスタライザ１０においていったん描画プリミティブのピクセルデータをいったんバッファに蓄積してからシェーダ３０に供給する。このバッファにはハードウエア設計上、容量の制限があるため、これから述べる圧縮符号化処理によりピクセルデータを圧縮することが必要なメモリ容量を抑え、実装面積を小さく抑える上で重要になる。
【００３１】
圧縮符号化部１８は、ＤＤＡ１６から供給される描画プリミティブのピクセルデータを矩形ピクセル集合単位で圧縮符号化し、ＦＩＦＯバッファ２０に出力する。圧縮符号化部１８は、矩形ピクセル集合に含まれる各ピクセルのサブピクセル情報をランレングス符号化により圧縮符号化する。ＦＩＦＯバッファ２０に保持された矩形ピクセル集合はバッファに到着した順に出力されてシェーダ３０に供給される。
【００３２】
図３は、シェーダ３０の構成図である。伸張部３２は、ラスタライザ１０のＦＩＦＯバッファ２０から矩形ピクセル集合単位で出力される描画プリミティブのピクセルデータを受け取る。伸張部３２が受け取る矩形ピクセル集合は、ラスタライザ１０の圧縮符号化部１８においてランレングス符号化によりサブピクセル情報が圧縮されている。伸張部３２は、ランレングス符号化された矩形ピクセル集合のサブピクセル情報を復号し、伸張する。これにより、圧縮符号化部１８により圧縮符号化される前の矩形ピクセル集合が得られる。伸張部３２は、復元された矩形ピクセル集合を分配部３４に与える。
【００３３】
分配部３４は、伸張部３２により復元された矩形ピクセル集合をシェーダクラスタ３６に分配する。シェーダクラスタ３６は、並列動作する複数のレンダリングパイプラインを含み、それぞれが担当するピクセルデータを処理することで分配部３４により分配された矩形ピクセル集合の描画演算処理を並列に実行する。シェーダクラスタ３６は、描画演算処理の結果をフレームバッファ５０に出力する。
【００３４】
図４（ａ）、（ｂ）は、ラスタライザ１０によるラスタライズ処理の単位である矩形ピクセル集合２００を説明する図である。図４（ａ）は、描画平面上のピクセルの配列に対して定義される矩形ピクセル集合２００を示したものである。図４（ａ）において、ピクセルは丸で表されており、矩形ピクセル集合２００は、ここでは一例として、縦横４ピクセル、合計１６ピクセルを含む正方形のピクセル領域である。
【００３５】
図４（ｂ）は、図４（ａ）の矩形ピクセル集合２００に含まれるピクセル２１０、２２０を拡大した図である。ピクセル２１０、２２０は、その内部を仮想的にさらに細かく分割した複数のサブピクセルを含む。ここでは、一例として、各ピクセル２１０、２２０は、縦横４個、合計１６個のサブピクセルを含む。各ピクセルに含まれる複数のサブピクセルをサブピクセルマスクと呼ぶ。
【００３６】
図４（ａ）、（ｂ）の例では、矩形ピクセル集合２００には１６個のピクセルが含まれ、各ピクセルには１６個のサブピクセルが含まれるから、矩形ピクセル集合２００には全体として、合計２５６個のサブピクセルが含まれることになる。
【００３７】
ＤＤＡ１６は、矩形ピクセル集合２００単位で描画平面上に投影された描画プリミティブを走査し、ピクセルデータに変換する。その際、ＤＤＡ１６は、通常の処理モードでは、ピクセル単位で矩形ピクセル集合２００内の各ピクセルが描画プリミティブの内側にあるか外側にあるかを判定するが、サブピクセルマスクを用いる処理モードでは、サブピクセル単位で描画プリミティブの内外判定を行う。サブピクセルマスクを用いる処理モードの場合、サブピクセル単位での内外判定とピクセル単位での内外判定の両方を行ってもよい。
【００３８】
ＤＤＡ１６は、サブピクセル単位で内外判定を行った場合、各サブピクセルに内外判定に係る判定値をもたせる。サブピクセルが描画プリミティブの内側にあれば、そのサブピクセルに有意の値をもたせる。たとえば、サブピクセルが描画プリミティブの内側であれば１、外側であれば０の２値の内外判定値をもたせる。したがってサブピクセルには１ビットの情報をもたせれば足りる。２５６個のサブピクセルを含む矩形ピクセル集合２００の場合、矩形ピクセル集合２００内の１６個のピクセルについてＲＧＢ値やアルファ値などのピクセルデータをもつとともに、それ以外に２５６ビットのサブピクセル情報をもつことになる。矩形ピクセル集合２００のサブピクセル情報は、各要素がバイナリ値である２次元配列の形でもつ。
【００３９】
図５（ａ）〜（ｃ）は、描画平面上に投影された描画プリミティブと矩形ピクセル集合２００の関係を説明する図である。図５（ａ）は、描画平面上に投影された三角形の描画プリミティブ３００に対して、ラスタライズ処理において描画領域をスキャンするときの矩形ピクセル集合２００ａ、２００ｂ、２００ｃを示したものである。描画プリミティブの内部は斜線で示されている。矩形ピクセル集合２００ａ、２００ｂ、２００ｃに含まれる描画プリミティブ３００の内部領域は、それぞれの矩形ピクセル集合２００ａ、２００ｂ、２００ｃ内で１つの凸領域となっており、途中で切れ目がない。
【００４０】
図５（ｂ）は、描画平面上に投影された正方形の描画プリミティブ３１０に対して、矩形ピクセル集合２００ｄを示したものである。図５（ｃ）は、描画平面上に投影された線分の描画プリミティブ３２０に対して、矩形ピクセル集合２００ｅを示したものである。いずれの場合でも、矩形ピクセル集合２００ｄ、２００ｅに含まれる描画プリミティブ３１０、３２０の内部領域は、それぞれの矩形ピクセル集合２００ｄ、２００ｅ内で１つの途中で切れ目のない凸領域となっている。
【００４１】
このように、矩形ピクセル集合２００ａ〜２００ｅに含まれる描画プリミティブ３００、３１０、３２０の内部領域が、２つの領域に分かれていたり、不連続な切れ目がないのは、描画プリミティブの描画平面への投影像３００、３１０、３２０がいずれも凸多角形であるからである。ここで、ある多角形が凸多角形であるとは、その多角形の任意の２点を結ぶ線分上の任意の点がその多角形に常に含まれることをいう。より一般的に言えば、描画プリミティブが凸領域であれば、矩形ピクセル集合内の描画プリミティブの描画領域も当然に凸領域となり、必ず１つの連続した途中で切れ目のない領域となる。ラスタライザ１０の圧縮符号化部１８による矩形ピクセル集合のサブピクセル情報の圧縮符号化は、この性質に着目して行われる。
【００４２】
図６（ａ）、（ｂ）は、矩形ピクセル集合２００に含まれるサブピクセル情報のランレングス符号化を説明する図である。
【００４３】
図６（ａ）において、矩形ピクセル集合２００は、縦横４ピクセル、合計１６ピクセルを含み、各ピクセルは正方格子で表されている。さらに、各ピクセルは、縦横４サブピクセル、合計１６サブピクセルを含み、各サブピクセルは小さい丸で表されている。サブピクセルの配列は、１６行×１６列の２次元配列であり、行番号、列番号をそれぞれ０〜ｆの１６進数で示している。
【００４４】
斜線を付したサブピクセルは、ＤＤＡ１６により描画プリミティブの内側にあると判定されたサブピクセルである。図５（ａ）〜（ｃ）で説明したように、描画プリミティブは凸多角形であるため、描画プリミティブの内部にあると判定されたサブピクセルは、矩形ピクセル集合２００内で連続しており、途中に切れ目がない。すなわち、矩形ピクセル集合２００の各行で、ビット値が１であるサブピクセルは連続しており、途中にビット値が０であるサブピクセルを挟むことはない。
【００４５】
たとえば、矩形ピクセル集合２００の行２のサブピクセルのビット列を考えると、ビット値が１であるサブピクセルは、列３から開始し列５まで続き、列５において終了し、その後はビット値が１であるサブピクセルは存在しない。したがって、行２のサブピクセルのビット列の情報は、ビット値が１のサブピクセルの開始点を示す値「３」と、ビット値が１のサブピクセルが連続する長さ「３」によって一意に表すことができる。
【００４６】
同様に、矩形ピクセル集合２００の行３のサブピクセルのビット列については、ビット値が１のサブピクセルは、列４から開始し列ａまで続き、その後はビット値１のサブピクセルは存在しない。したがって、行３のサブピクセルのビット列の情報は、ビット値が１のサブピクセルの開始位置を示す値「４」と、ビット値が１のサブピクセルが連続する長さ「７」によって一意に表すことができる。
【００４７】
このように、矩形ピクセル集合２００の各行のサブピクセルのビット列は、ビット値１が連続する部分列に着目して、ビット値１の「開始点」と「長さ」によって一意に表すことができる。圧縮符号化部１８は、この「開始点」と「長さ」をランレングス符号として用いて、矩形ピクセル集合２００の各行のサブピクセルのビット列を符号化する。
【００４８】
図６（ｂ）は、図６（ａ）の矩形ピクセル集合２００の各行のサブピクセルのビット列を「開始点」と「長さ」でランレングス符号化したデータを示す。矩形ピクセル集合２００の行０から行ｆまでのランレングス符号を上から順に示している。ビット値が１のサブピクセルの各行における開始位置と長さはともに、１６進数で０からｆまでの値をとるため、いずれも４ビットの情報で表すことができる。なお、同図では、１６進数であることを示す「０ｘ」を頭につけて開始点と長さの値を１６進数で表記している。
【００４９】
矩形ピクセル集合２００の行０には、ビット値が１のサブピクセルは存在しないから、長さは０ｘ０である。この場合、開始点の値はドントケア（don't care）であり、たとえば０ｘ０にしておけばよい。行１のランレングス符号は行０と同じである。行２のランレングス符号は「長さ０ｘ３、開始点０ｘ３」、行３のランレングス符号は「長さ０ｘ７、開始点０ｘ４」、行３のランレングス符号は「長さ０ｘｃ、開始点０ｘ４」である。このようにして、行０から行３までの４行のランレングス符号によって、第１行の４ピクセルに含まれるサブピクセル情報の符号化データが得られる。
【００５０】
以下、同様に、第２行の４ピクセルについても、同様に、行４のランレングス符号は「長さ０ｘｃ、開始点０ｘ４」、行５のランレングス符号は「長さ０ｘｂ、開始点０ｘ５」、行６のランレングス符号は「長さ０ｘｂ、開始点０ｘ５」、行７のランレングス符号は「長さ０ｘａ、開始点０ｘ６」と符号化される。第３行の４ピクセル、第４行の４ピクセルについても同様である。このようにして、矩形ピクセル集合２００全体で各行のサブピクセル情報が同図に示すような「長さ」と「開始点」のランレングス符号に変換される。
【００５１】
矩形ピクセル集合２００の各行のサブピクセル情報は、長さ４ビット、開始点４ビットの合計８ビットの符号に符号化され、これが１６行あるため、矩形ピクセル集合２００全体のサブピクセル情報は、合計８ビット×１６＝１２８ビットの符号データに符号化される。これは、矩形ピクセル集合２００が元々１６ビット×１６＝２５６ビットのサブピクセル情報を持っていたことと比べると、データ量が１／２に圧縮されていることになり、優れた圧縮率が得られている。この圧縮率は、描画平面に投影された描画プリミティブが凸多角形、より一般的には凸領域であれば、いつでも得られるものである。
【００５２】
したがって、ＦＩＦＯバッファ２０は、矩形ピクセル集合２００が縦横１６サブピクセル、合計２５６サブピクセルを含む場合、１２８ビットに圧縮された矩形ピクセル集合２００のサブピクセル情報を順次ＦＩＦＯ順で保持する容量を確保すればよいことになり、サブピクセル情報を転送するためのバス幅は１２８ビットで済む。２５６ビットの矩形ピクセル集合２００のサブピクセル情報をそのままＦＩＦＯバッファ２０に保持しようとした場合、２５６ビットのバス幅が必要となり、配線などのハードウエアの実装負担が大きくなるが、本実施の形態のランレングス符号化によれば、ＦＩＦＯバッファ２０の転送バス幅を半分にして、実装面積を半分に減らすことができる。
【００５３】
なお、上記の説明では、矩形ピクセル集合２００の行毎にランレングス符号化を行ったが、列方向にビット列を考えても性質は全く同じであるから、列毎にランレングス符号化を行ってもよいことはいうまでもない。
【００５４】
また、上記の説明では、「開始点」と「長さ」にもとづいてランレングス符号化を行ったが、ビット値が１であるサブピクセルが連続する部分列において、その部分列「開始点」と「終了点」の２つの値によっても、各行のサブピクセルのビット列を一意に表すことができるから、「開始点」と「終了点」にもとづいてランレングス符号化を行ってもよい。「開始点」と「終了点」の差により「長さ」が得られるから、「開始点」と「終了点」をランレングス符号とすることと、「開始点」と「長さ」をランレングス符号とすることとは等価であり、実質的な違いはない。
【００５５】
このようにしてサブピクセル情報がランレングス符号化された矩形ピクセル集合２００はＦＩＦＯバッファ２０に一時的に保持され、先着順にシェーダ３０に投入される。シェーダ３０において、伸張部３２が、矩形ピクセル集合２００の各行の「開始点」と「長さ」からなる符号にもとづいて、行毎に元のサブピクセル情報のビット列を復元する。これにより、元の２５６ビットのサブピクセル情報を含む矩形ピクセル集合２００が得られる。
【００５６】
図７は、描画処理装置１００による描画処理手順を説明するフローチャートである。
【００５７】
ラスタライザ１０のプリミティブ入力部１２が描画プリミティブの入力を受け取り、セットアップ処理部１４が描画プリミティブのセットアップ処理を行う（Ｓ１０）。ＤＤＡ１６は、描画面に投影された描画プリミティブの描画領域を矩形ピクセル集合単位で走査し（Ｓ１２）、各ピクセル内ではサブピクセル単位で描画プリミティブの内外判定を行う（Ｓ１４）。
【００５８】
圧縮符号化部１８は、ＤＤＡ１６により生成された矩形ピクセル集合に含まれるサブピクセル情報をランレングス符号化により圧縮符号化する（Ｓ１６）。サブピクセル集合が圧縮符号化された矩形ピクセル集合は、ＦＩＦＯバッファ２０に順次書き込まれる。
【００５９】
セットアップ処理部１４に定められたバウンディングボックス内において、ＤＤＡ１６が次に走査すべき領域がある場合（Ｓ１８のＮ）、処理手順はステップＳ１２に戻り、ＤＤＡ１６が矩形ピクセル集合単位での走査を継続し、サブピクセル単位の内外判定Ｓ１４、サブピクセル情報の圧縮符号化Ｓ１６を行う。
【００６０】
ＤＤＡ１６が、セットアップ処理部１４に定められたバウンディングボックス内において、矩形ピクセル集合単位での描画領域の走査を完了すると（Ｓ１８のＹ）、描画プリミティブのピクセル化処理は終了し、ＦＩＦＯバッファ２０にバッファリングされた矩形ピクセル集合がバッファリングされた順に読み出されて、シェーダ３０に転送される（Ｓ２０）。ここで、ＦＩＦＯバッファ２０は、描画プリミティブのラスタライズ処理が完了する前から、バッファリングされた描画プリミティブの矩形ピクセル集合をシェーダ３０に順次転送してよい。
【００６１】
シェーダ３０の伸張部３２は、ＦＩＦＯバッファ２０から転送された矩形ピクセル集合のサブピクセル情報をランレングス復号により伸張する（Ｓ２２）。分配部３４は、サブピクセル情報が復元した矩形ピクセル集合をシェーダクラスタ３６に分配し、シェーダクラスタ３６は、矩形ピクセル集合に対して描画演算処理を行う（Ｓ２４）。
【００６２】
上記の説明では、ＤＤＡ１６が１つの矩形ピクセル集合を生成するたびに、圧縮符号化部１８がその矩形ピクセル集合内のサブピクセル情報をランレングス符号化したが、ＤＤＡ１６が描画プリミティブ全体のラスタライズ処理を完了し、その描画プリミティブのすべての矩形ピクセル集合を生成した後で、圧縮符号化部１８がすべての矩形ピクセル集合を１つずつランレングス符号化してもよい。
【００６３】
以上述べたように、本実施の形態によれば、ピクセルを仮想的に複数のサブピクセルに分割したサブピクセルマスクを利用し、描画対象物の内外判定に係る１ビットの判定値をサブピクセルにもたせている。このサブピクセル情報をアンチエイリアシングなどの処理に利用して、描画品質の向上に役立てることができる。サブピクセル情報は１ビットの値しかもたないため、単純に解像度を上げて描画するオーバーサンプリング法に比べて、演算量が少なく、必要なメモリ量が少なくて済む。
【００６４】
さらに、本実施の形態によれば、描画処理の単位である矩形ピクセル集合内のサブピクセル情報をランレングス符号化により圧縮するため、サブピクセル情報の格納に必要なメモリ量をさらに減らすことができる。また、これにより、ラスタライザ１０からシェーダ３０へ矩形ピクセル集合を供給する際に、矩形ピクセル集合をバッファリングするために必要なＦＩＦＯバッファ２０の容量を抑えることができ、レジスタや配線等の実装コストを抑えることができる。また、矩形ピクセル集合のサブピクセル情報を圧縮したことにより、ラスタライザ１０からシェーダ３０へ矩形ピクセル集合を転送する際のデータ量を削減することができるため、処理速度が向上する。
【００６５】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【００６６】
上記の説明では、矩形ピクセル集合内に複数のピクセルがある場合を説明したが、特別な場合として、矩形ピクセル集合内に１つだけのピクセルが含まれ、そのピクセルが複数のサブピクセルに分割されている場合にも、同様にランレングス符号化によりサブピクセル情報を圧縮することができる。たとえば、矩形ピクセル集合に含まれるただ１つのピクセルが縦横１６サブピクセル、合計２５６サブピクセルに分割されている場合は、上記の実施の形態で説明した例と全く同様に考えることができる。
【００６７】
１ピクセルの大きさよりも小さいポリゴンを設定し、より滑らかな曲面を表現する「マイクロポリゴン」と呼ばれる手法が、高画質の３次元コンピュータグラフィックスで利用されることがある。マイクロポリゴンでは、ピクセルよりも小さいサイズに分割された描画プリミティブが用いられる。このような場合には、１ピクセルを多数のサブピクセルに分割したサブピクセルマスクを使用することがあり、１ピクセルを上記の説明における「矩形ピクセル集合」とみなし、その１ピクセル内のサブピクセル情報を同様の方法でランレングス符号化により圧縮することが考えられる。
【００６８】
また、マイクロポリゴンのように、非常に小さいポリゴンを描画プリミティブとして用いる場合、矩形ピクセル集合内に、複数の描画プリミティブが存在する場合も想定される。たとえば、矩形ピクセル集合内に、２つのマイクロポリゴンの先端部分が存在する場合などである。この場合、矩形ピクセル集合に含まれる描画領域は、途中で切れ目のない１つの領域とならず、２つの領域ができるため、上記の実施の形態で説明した、「開始点」と「長さ」にもとづくランレングス符号化は適用できない。しかしながら、このような場合でも、一般的な意味でのランレングス符号化、すなわちサブピクセルの２次元データ配列を始めから順に観察した場合に、０が連続する数または１が連続する個数をカウントして、その個数を順に並べるランレングス符号化によって、サブピクセル情報を圧縮することができる。
【００６９】
このように矩形ピクセル集合内に複数の描画プリミティブが存在する場合に対処するために、矩形ピクセル集合内に複数の描画プリミティブがあるかどうかを判定する判定部をラスタライザ１０の圧縮符号化部１８の前段に設けてもよい。判定部はその判定結果を圧縮符号化部１８に提供し、圧縮符号化部１８は、矩形ピクセル集合内に複数の描画プリミティブが存在する場合は、同一値の連続数にもとづく一般的な意味でのランレングス符号化を行い、矩形ピクセル集合内に１つの描画プリミティブしか存在しない場合は、「開始点」と「長さ」にもとづくランレングス符号化を行うように切り替えてもよい。
【００７０】
また、判定部により矩形ピクセル集合内に複数の描画プリミティブが存在するかどうかを事前に判定しなくても、圧縮符号化部１８は、矩形ピクセル集合の各行において１の値をもつビット列に切れ目があるかどうかを判定することにより、矩形ピクセル集合内に複数の描画プリミティブが存在することを間接的に判断することができる。したがって、判定部を設けることなく、圧縮符号化部１８が矩形ピクセル集合の各行のビット列の値を読み込む過程で、同一値の連続数にもとづく一般的なランレングス符号化を行うか、「開始点」と「長さ」にもとづくランレングス符号化を行うかを判定して切り替えてもよい。
【００７１】
上記の説明では、ピクセルを仮想的に複数のサブピクセルに分割したサブピクセルマスクにおいて、各サブピクセルに描画プリミティブの内外判定値の情報をもたせたが、サブピクセルにもたせる情報はこれ以外の情報であってもかまわない。サブピクセルにもたせる情報の種類には関係なく、本発明の圧縮符号化を適用することができるからである。また、上記の説明では、各サブピクセルには１ビットの情報をもたせたが、２ビット以上の情報をもたせてもよい。その場合は、ランレングス符号化において、サブピクセルの値が０、１の２値ではなく、３つ以上の値をとるようになるため、同一値が連続する個数以外にその連続する値をランレングス符号に含めて符号化を行うことになる。
【図面の簡単な説明】
【００７２】
【図１】実施の形態に係る描画処理装置の構成図である。
【図２】図１のラスタライザの構成図である。
【図３】図１のシェーダの構成図である。
【図４】図２のラスタライザによるラスタライズ処理の単位である矩形ピクセル集合を説明する図である。
【図５】描画平面上に投影された描画プリミティブと矩形ピクセル集合の関係を説明する図である。
【図６】矩形ピクセル集合に含まれるサブピクセル情報のランレングス符号化を説明する図である。
【図７】実施の形態に係る描画処理装置による描画処理手順を説明するフローチャートである。
【符号の説明】
【００７３】
１０  ラスタライザ、  １２  プリミティブ入力部、  １４  セットアップ処理部、  １６  ＤＤＡ、  １８  圧縮符号化部、  ２０  ＦＩＦＯバッファ、  ３０  シェーダ、  ３２  伸張部、  ３４  分配部、  ３６  シェーダクラスタ、  ５０  フレームバッファ、  ７０  テクスチャユニット、  １００  描画処理装置、  ２００  矩形ピクセル集合。
【図１】
2006221418.tif 000003
【図２】
2006221418.tif 000004
【図３】
2006221418.tif 000005
【図４】
2006221418.tif 000006
【図５】
2006221418.tif 000007
【図６】
2006221418.tif 000008
【図７】
2006221418.tif 000009