説明

画像処理装置および画像処理プログラム

【課題】トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行えるようにする。
【解決手段】頂点VTで構成されるトライアングルTAをピクセルPXの集まりに変換してから、ピクセルPXの集まりをタイルTLに分割するラスタライザ12と、ピクセルPXの集まりをタイルTLごとに記憶するソーティングバッファ22とを設ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理装置および画像処理プログラムに関し、特に、タイルベースレンダリングを用いたベクトルグラフィックス描画方法に適用して好適なものである。
【背景技術】
【0002】
タイルベースレンダリング方式では、画面全体が複数の矩形領域(タイル)に分割され、それぞれのタイル毎に独立に描画が実行されることで最終画像が生成される。このため、比較的頂点数の少ないアプリケーションにおいては、外部メモリのメモリバンド幅を大幅に低減でき、マルチコア化により容易にピクセル性能のスケーラビリティが得られる手法として認知されている(特許文献1)。
【0003】
具体的には、コマンドリストに対して頂点処理までが実行され、各頂点により構成されるトライアングルがどのタイルに属するかが計算され、その計算結果を元に各頂点が各タイルに振り分けられる。このタイル毎に頂点を振り分ける処理はソーティングと呼ばれる。ソーティング結果はグラフィックプロセッシングユニット外部のソーティングバッファに次々と蓄えられる。すべての描画コマンドに対しソーティングが完了すると、タイル毎のラスタライズおよびピクセル処理に移る。すべてのタイルに対してピクセル処理が完了すると描画完了となる。
【0004】
ここで、タイル内のピクセル数は限られており、例えばタイルサイズが32×32ピクセルの場合、1ピクセル当たり4バイトと仮定すると、各タイルのデータ量は高々4Kバイト程度(32×32×4バイト)である。このため、グラフィックプロセッシングユニット内部に設けられたタイルバッファに各タイルのデータを保持することが可能となり、ピクセル処理におけるフレームバッファへのアクセスの代わりにタイルバッファへのアクセスで済ませることが可能となることから、グラフィックプロセッシングユニット外部のメモリへのアクセス回数を大幅に低減できる。また、各タイル間のピクセル処理に依存性がないため、容易に並列化することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】USP2008/259076A1
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来のタイルベースレンダリング方式では、タイル毎に頂点を振り分けるソーティングが必要になり、タイルがどの頂点に関連するかを示すソーティングリストを作成する必要がある。このため、特に頂点数が多い場合、グラフィックプロセッシングユニット外部のソーティングバッファへのアクセス回数が増大したり、ソーティングバッファ容量が増大したりし、タイルベースレンダリング方式の利点が相殺されるという問題があった。
【0007】
また、通常では、1つの頂点は複数のタイルに属するため、ソーティング後の頂点データはインデックスを使った間接参照の構造をとる。そのため、ソーティングバッファへのアクセスはランダムアクセス性が高く、メモリアクセス効率が低下しやすいという問題もあった。
【0008】
さらに、レンダリングステートの更新をタイル数倍だけ行うことになるので、レンダリングステート更新ペナルティが増大するという問題もあった。
【0009】
本発明の目的は、トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行うことが可能な画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【0010】
本発明の一態様によれば、描画コマンドにより指定される図形を複数のピクセルの集まりに変換した後、前記ピクセルの集まりをタイルに分割する処理を行うラスタライズ処理部と、前記ピクセルの集まりを前記タイルごと且つオブジェクトごとに記憶するソーティングバッファとを備えることを特徴とする画像処理装置を提供する。
【0011】
本発明の一態様によれば、頂点で構成されるトライアングルをピクセルの集まりに変換するステップと、前記ピクセルの集まりをタイルに分割するステップとをコンピュータに実行させることを特徴とする画像処理プログラムを提供する。
【発明の効果】
【0012】
本発明によれば、トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行うことが可能となる。
【図面の簡単な説明】
【0013】
【図1】図1は、本発明の第1実施形態に係る画像処理装置の概略構成を示すブロック図。
【図2】図2は、図1のテッセレータ&頂点処理エンジン11で行われる処理の概要を示す図。
【図3】図3は、図1のラスタライザ12およびカバレージバッファ13で行われる処理の概要を示す図。
【図4】図4は、本発明の第2実施形態に係る画像処理装置の概略構成を示すブロック図。
【図5】図5は、図4の上書き判断部12aおよび描画キャンセル部12bの処理を示す図。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態に係る画像処理装置について図面を参照しながら説明する。
【0015】
(第1実施形態)
図1は、本発明の第1実施形態に係る画像処理装置の概略構成を示すブロック図である。
図1において、この画像処理装置には、グラフィックプロセッシングユニット(GPU)1およびDRAM2が設けられている。そして、グラフィックプロセッシングユニット
1には、テッセレータ&頂点処理エンジン11、ラスタライザ12、カバレージバッファ13、ピクセル処理エンジン14およびタイルバッファ15が設けられている。DRAM2には、コマンドリスト21が記憶されるとともに、ソーティングバッファ22、テクスチャバッファ23およびフレームバッファ24が設けられている。
【0016】
ここで、テッセレータ&頂点処理エンジン11は、コマンドリスト21にて曲線が指定されている場合にその曲線を頂点に変換したり、図形を表現するトライアングルの頂点の座標変換を行ったりすることができる。なお、頂点の座標変換としては、例えば、頂点にて構成される図形の回転、縮小または拡大などに伴う座標変換を挙げることができる。ラスタライザ12は、頂点で構成されるトライアングルをピクセルの集まりに変換してから、ピクセルの集まりをタイルに分割することができる。カバレージバッファ13は、ラスタライザ12にてタイルに分割されるピクセルの集まりを同一オブジェクト内で連続した状態で一括して記憶することができる。なお、オブジェクトとは、描画対象となる任意の閉領域を言う。このオブジェクトには、プリミティブ(部品)を含むことができる。なお、オブジェクトは、1つまたは複数の基本図形(トライアングルなど)に分解されてラスタライズされる。ピクセル処理エンジン14は、ソーティングバッファ22に記憶されたピクセルの集まりをタイルごと且つオグジェクトごとに取得し、ピクセルに属性を付与することができる。タイルバッファ15は、ピクセル処理エンジン14にて属性が付与されたピクセルの情報をタイルごとに記憶することができる。コマンドリスト21は、描画コマンドおよび描画データ(始点、終点、制御点など)を記憶することができる。なお、コマンドリスト21の描画データは、例えば、ベクトル形式などのラスタ形式以外の形式で表現することができる。ソーティングバッファ22は、ラスタライザ12にてタイルごとに分割されたピクセルの集まりをタイルごと且つオブジェクトごとに記憶することができる。テクスチャバッファ23は、ピクセル処理エンジン14にて付与されるピクセルの属性を記憶することができる。なお、ピクセルの属性としては、例えば、色、模様、テクスチャなどを挙げることができる。フレームバッファ24は、コマンドリスト21に従って描画された画像データをラスタ形式で記憶することができる。
【0017】
以下、図1の画像処理装置の動作について図2および図3を参照しながら説明する。
図2は、図1のテッセレータ&頂点処理エンジン11で行われる処理の概要を示す図である。
図2において、コマンドリスト21には、曲線PAを定義するための始点PS、終点PEおよび制御点PC1、PC2などが登録されている。そして、コマンドリスト21内の描画コマンドおよび描画データがテッセレータ&頂点処理エンジン11に入力されると、始点PS、終点PEおよび制御点PC1、PC2などに沿ってストロークSTが生成される。なお、ストロークステージでは、様々の形状の線種を定義することができる。そして、ストロークSTが生成されると、ストロークSTを構成する複数のトライアングルTAに変換され、トライアングルTAを構成する頂点VTの座標変換が行われた後、頂点VTの座標データがラスタライザ2に入力される。なお、コマンドリスト21には、各頂点VTもしくは始点PS、終点PEおよび制御点PC1、PC2等の座標にアクセスするためのポインタを記憶するようにしてもよい。
【0018】
図3は、図1のラスタライザ12およびカバレージバッファ13で行われる処理の概要を示す図である。
図3において、頂点VTのデータがラスタライザ12に入力されると、頂点VTで構成されるトライアングルTAがピクセルPXの集まりに変換された後、タイルTLごとに分割される。例えば、ピクセルPXの集まりを描画する画面を1番目から20番目の20個のタイルTLに分割することができる。なお、タイルTLのサイズは、例えば、8×8ピクセルに設定することができる。そして、タイルTLごとに分割されたピクセルPXの集まりは、タイルTLごとにソーティングバッファ22に記憶される。
【0019】
そして、ピクセル処理エンジン14において、ソーティングバッファ22に記憶されたピクセルPXの集まりがタイルTLごとに取得され、テクスチャバッファ23に記憶されたピクセルPXの属性が付与されながら、タイルバッファ15に記憶される。そして、1個分のタイルTLに含まれるピクセルPXの処理が終了するごとに、タイルバッファ15に記憶された画像データがフレームバッファ24に格納される。
【0020】
ここで、図3に示すように、頂点VTで構成されるトライアングルTAをピクセルPXの集まりに変換してから、タイルTLごとに分割することにより、トライアングルTAを構成する頂点VTをタイルTL毎に振り分けることなく、タイルベースレンダリングを行うことが可能となる。このため、頂点数が多い場合においても、グラフィックプロセッシングユニット1外部のソーティングバッファ22へのアクセス回数が増大したり、ソーティングバッファ22の容量が増大したりするのを抑制することができる。
【0021】
なお、頂点VTで構成されるトライアングルTAをピクセルPXの集まりに変換する場合、ピクセルPXの集まりを同一オブジェクト内で連続した状態でカバレージバッファ13に保持し、同一オブジェクト内に含まれるピクセルPXの集まりへの変換を一括して行うようにしてもよい。この場合、ラスタライザ12は、トライアングルTAを各ピクセルのカバレージ(マスクパターン)に変換し、カバレージバッファ13にてタイルTLごとにカバレージにまとめ、タイルTLごとにソーティングバッファ22の該当タイルTLのエントリに登録することができる。そして、全コマンドに対してソーティングバッファ22へのカバレージの登録が完了したら、ピクセル処理エンジン14は、ソーティングバッファ22から1つずつタイルTLを取り出し、ピクセル処理を順次行うことができる。ここで、カバレージは、アンチエイリアスなしの場合、1ピクセル当たり1ビットが割り当てられ、アンチエイリアスありの場合、サンプリング数に応じたビット数が1ピクセルに割り当てられる。
【0022】
なお、オブジェクトに8個のタイルTLが割り当てられ、タイルTLが64ピクセルで構成されるものとすると、ソーティングバッファ22のサイズは該当オブジェクトに対して1ビット×64ピクセル×8個=512ビットで済ませることができる。
【0023】
また、テッセレータ&頂点処理エンジン11、ラスタライザ12およびピクセル処理エンジン14は、これらのブロックで行われる処理を遂行させる命令が記述されたプログラムをコンピュータに実行させることにより実現することもできる。
【0024】
そして、このプログラムをCD−ROMなどの記憶媒体に記憶しておけば、画像処理装置のコンピュータに記憶媒体を装着し、そのプログラムをコンピュータにインストールすることにより、テッセレータ&頂点処理エンジン11、ラスタライザ12およびピクセル処理エンジン14で行われる処理を実現することができる。
【0025】
また、テッセレータ&頂点処理エンジン11、ラスタライザ12およびピクセル処理エンジン14で行われる処理を遂行させる命令が記述されたプログラムをコンピュータに実行させる場合、スタンドアロン型コンピュータで実行させるようにしてもよく、ネットワークに接続された複数のコンピュータに分散処理させるようにしてもよい。
【0026】
(第2実施形態)
図4は、本発明の第2実施形態に係る画像処理装置の概略構成を示すブロック図である。
図4において、この画像処理装置には、図1のグラフィックプロセッシングユニット1の代わりに、グラフィックプロセッシングユニット1´が設けられ、グラフィックプロセッシングユニット1´には、図1のカバレージバッファ13の代わりにカバレージバッファ13´が設けられている。ここで、カバレージバッファ13´´には上書き判断部12a、描画キャンセル部12bおよび情報圧縮部13aが設けられている。
【0027】
ここで、上書き判断部12aは、今回描画されるオブジェクトにて全てのピクセルPXが上書きされるタイルTLがあるかどうかを判断することができる。描画キャンセル部12bは、今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルについて、それまでに登録されていた他のオブジェクトのピクセル情報を破棄するとともに、そのピクセル情報をソーティングバッファ22に格納するのを省略することができる。情報圧縮部13aは、ピクセルPXにて全体が埋められているかピクセルPXが1つもないタイルTLについては専用のコードを割り当てることでタイルTLの情報を圧縮することができる。
【0028】
図5は、図4の上書き判断部12aおよび描画キャンセル部12bの処理を示す図である。
図5において、コマンドリスト21には、オブジェクトPR1の頂点V11、V12・・・のデータ、オブジェクトPR2の頂点V21、V22・・・のデータおよびオブジェクトPR3の頂点V31、V32・・・のデータがこの順で登録されているものとする。オブジェクトPR1〜PR3のデータは頂点座標とは限らず、例えば曲線の場合は始点・終点・制御点の座標でもよい。なお、グラフィックプロセッシングユニット1´は、コマンドリスト21に複数のオブジェクトPR1〜PR3が登録されている場合、コマンドリスト21に登録されている順序で描画を行うことができ、例えば、最初にオブジェクトPR1はその後に登録されているオブジェクトPR2、PR3にて上書きすることができる。
【0029】
そして、このコマンドリスト21がテッセレータ&頂点処理エンジン11に入力されると、オブジェクトPR1〜PR3の頂点の座標変換が順次行われた後、ラスタライザ12にてオブジェクトPR1〜PR3ごとにピクセルPXの集合が生成される。そして、上書き判断部12aにおいて、ピクセルPXの集合にて該当タイルTLの全ピクセルPXが上書きされるどうかがタイルTL単位に判断され。ここで、上書き判断をラスタライザ12で行う場合はトライアングルTA単位での上書き判断しかできないが、カバレージバッファ13´にて上書き判断を行う場合はカバレージバッファ13´内の情報を利用することでオブジェクトPR1〜PR3単位での判断が可能となり効率が向上する。また、上書き判断の結果は情報圧縮部13aの情報圧縮処理にも利用することができる。
【0030】
ここで、例えば、オブジェクトPR1〜PR3のピクセルの集まりを描画する画面が1番目から20番目の20個のタイルTLに分割されるものとすると、上書き判断部12aにおいて、12番目のタイルTLでは、オブジェクトPR2、PR3にてオブジェクトPR1の全てのピクセルが上書きされると判断される。また、13番目および14番目のタイルTLでは、オブジェクトPR3にてオブジェクトPR1、PR2の全てのピクセルが上書きされると判断される。
【0031】
そして、描画キャンセル部12bにおいて、オブジェクトPR2、PR3にて全てのピクセルが上書きされると判断されたオブジェクトPR1の12番目から14番目のタイルTLでは、そのタイルTLのエントリにそれまでに登録されていたオブジェクトPR1の各情報が破棄されるとともに、そのピクセル情報をソーティングバッファ22に格納する処理が省略される。
【0032】
また、描画キャンセル部12bにおいて、オブジェクトPR3にて全てのピクセルが上書きされると判断されたオブジェクトPR2の13番目および14番目のタイルTLでは、そのタイルTLのエントリにそれまでに登録されていたオブジェクトPR2の各情報が破棄されるとともに、そのピクセル情報をソーティングバッファ22に格納する処理が省略される。
【0033】
そして、ピクセル処理エンジン14において、上書き処理後のオブジェクトPR1〜PR3のピクセルの集まりがタイルTLごとに取得され、テクスチャバッファ23に記憶されたピクセルの属性が付与されながら、タイルバッファ15に記憶される。そして、1個分のタイルTLに含まれるオブジェクトPR1〜PR3のピクセルの処理が終了するごとに、タイルバッファ15に記憶された画像データがフレームバッファ24に格納される。
【0034】
ここで、後に描画されるオブジェクトにて先に描画されるオブジェクトの全てのピクセルが上書きされるタイルTLがある場合、そのタイルTLについては先に描画されたオブジェクトのピクセル処理をキャンセルすることにより、ピクセル処理エンジン14での無駄なピクセル処理の発生を抑えることができ、グラフィックプロセッシングユニット1´の負荷を軽減することができる。
【0035】
また、オブジェクトPR1〜PR3の各ピクセルのカバレージ情報がカバレージバッファ13´に送られると、情報圧縮部13aにおいて、ラスタライザ12にて生成されたピクセルPX群にてタイルTL全体が埋められたかどうかを表すフラグがオブジェクトPR1〜PR3ごと且つタイルTLごとに生成され、そのフラグがソーティングバッファ22に格納される。
【0036】
すなわち、ラスタライザ12にて生成されたピクセルPXで全体が埋められているタイルTLについては‘1’という値がオブジェクトPR1〜PR3ごとにフラグに格納され、それ以外のタイルTXについては‘0’という値がフラグに格納される。ピクセルが一つもないタイルTXに関しては、ソーティングバッファ22への登録自体が行われない。‘1’という値がフラグに格納される場合は、該当タイルTLのエントリにそれまでに登録されていた他のオブジェクトPR1〜PR3の各情報が破棄されるとともに、そのピクセル情報がソーティングバッファ22に格納するのが省略される。
【0037】
例えば、図5の1番目および5番目のタイルTLにはピクセルPXが一つも描画されないので、ソーティングバッファ22へは何も登録されない。図5の13番目および14番目のタイルTLにはオブジェクトPR3のピクセルPXで全体が埋められている。この場合、ソーティングバッファ22にオブジェクトPR3のタイルTLを登録するときに、該当タイルTLのエントリからオブジェクトPR1、PR2の情報が削除されて、オブジェクトPR3のフラグ情報だけがエントリに格納される。
【0038】
これにより、カバレージ情報を圧縮してソーティングバッファ22に格納できるので、外部メモリのメモリバンド幅およびメモリ容量を削減することが可能となる。
【0039】
なお、図4の例では、上書き判断部12aおよび描画スキップ部12bをカバレージバッファ13´に搭載する方法について説明したが、ラスタライザ12に搭載するようにしてもよいし、カバレージバッファ13´とソーティングバッファ22との間に搭載するようにしてもよいし、ラスタライザ12とカバレージバッファ13´との間に搭載するようにしてもよい。
【0040】
また、図4の例では、情報圧縮部13aをカバレージバッファ13´に搭載する方法について説明したが、カバレージバッファ13´とソーティングバッファ22との間に搭載するようにしてもよい。
【0041】
また、上述した第2実施形態では、ピクセルにて全体が埋められているかピクセルが1つもないタイルTLについての情報圧縮方法について説明したが、カバレージ情報を2値画像とみなすことにより、ピクセルにて一部が埋められているタイルTLについても2値画像圧縮技術を適用するようにしてもよい。
【0042】
また、上述した第2実施形態では、図1の第1実施形態に対して上書き判断部12a、描画キャンセル部12bおよび情報圧縮部13aを追加する方法について説明したが、図1の第1実施形態に対して上書き判断部12aおよび描画キャンセル部12bのみを追加するようにしてもよいし、図1の第1実施形態に対して情報圧縮部13aのみを追加するようにしてもよい。
【符号の説明】
【0043】
1、1´ グラフィックプロセッシングユニット、2 DRAM、11 テッセレータ&頂点処理エンジン、12 ラスタライザ、13、13´ カバレージバッファ、14 ピクセル処理エンジン、15 タイルバッファ、21 コマンドリスト、22 ソーティングバッファ、23 テクスチャバッファ、24 フレームバッファ、12a 上書き判断部、12b 描画キャンセル部、13a 情報圧縮部

【特許請求の範囲】
【請求項1】
描画コマンドにより指定される図形を複数のピクセルの集まりに変換した後、前記ピクセルの集まりをタイルに分割する処理を行うラスタライズ処理部と、
前記ピクセルの集まりを前記タイルごと且つオブジェクトごとに記憶するソーティングバッファとを備えることを特徴とする画像処理装置。
【請求項2】
前記ソーティングバッファに記憶されたピクセルの集まりをタイルごとに取得し、前記ピクセルに属性を付与するピクセル処理部と、
前記ピクセル処理部にて属性が付与されたピクセルの情報を前記タイルごとに記憶するタイルバッファとを備えることを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記ラスタライザにてタイルに分割されるピクセルの集まりを同一オブジェクト内で連続した状態で一括して記憶するカバレージバッファをさらに備えることを特徴とする請求項1または2記載の画像処理装置。
【請求項4】
前記カバレージバッファは、
今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルがあるかどうかを判断する上書き判断部と、
今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルについて、それまでに登録されていた他のオブジェクトのピクセル情報を破棄するとともに、前記ピクセル情報を前記ソーティングバッファに格納するのを省略する描画キャンセル部とをさらに備えることを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項5】
前記カバレージバッファは情報圧縮部を備え、
前記情報圧縮部は、前記ピクセルにて全体が埋められているか前記ピクセルが1つもないタイルについては専用のコードを割り当て、前記ソーティングバッファに記憶させることを特徴とする請求項3または4に記載の画像処理装置。
【請求項6】
頂点で構成されるトライアングルをピクセルの集まりに変換するステップと、
前記ピクセルの集まりをタイルに分割するステップとをコンピュータに実行させることを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−128713(P2011−128713A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−284316(P2009−284316)
【出願日】平成21年12月15日(2009.12.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】