(57)【要約】【課題】トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行えるようにする。【解決手段】頂点ＶＴで構成されるトライアングルＴＡをピクセルＰＸの集まりに変換してから、ピクセルＰＸの集まりをタイルＴＬに分割するラスタライザ１２と、ピクセルＰＸの集まりをタイルＴＬごとに記憶するソーティングバッファ２２とを設ける。【選択図】      図１
2011128713.tif 000002
【特許請求の範囲】
【請求項１】
描画コマンドにより指定される図形を複数のピクセルの集まりに変換した後、前記ピクセルの集まりをタイルに分割する処理を行うラスタライズ処理部と、
前記ピクセルの集まりを前記タイルごと且つオブジェクトごとに記憶するソーティングバッファとを備えることを特徴とする画像処理装置。
【請求項２】
前記ソーティングバッファに記憶されたピクセルの集まりをタイルごとに取得し、前記ピクセルに属性を付与するピクセル処理部と、
前記ピクセル処理部にて属性が付与されたピクセルの情報を前記タイルごとに記憶するタイルバッファとを備えることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記ラスタライザにてタイルに分割されるピクセルの集まりを同一オブジェクト内で連続した状態で一括して記憶するカバレージバッファをさらに備えることを特徴とする請求項１または２記載の画像処理装置。
【請求項４】
前記カバレージバッファは、
今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルがあるかどうかを判断する上書き判断部と、
今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルについて、それまでに登録されていた他のオブジェクトのピクセル情報を破棄するとともに、前記ピクセル情報を前記ソーティングバッファに格納するのを省略する描画キャンセル部とをさらに備えることを特徴とする請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
前記カバレージバッファは情報圧縮部を備え、
前記情報圧縮部は、前記ピクセルにて全体が埋められているか前記ピクセルが１つもないタイルについては専用のコードを割り当て、前記ソーティングバッファに記憶させることを特徴とする請求項３または４に記載の画像処理装置。
【請求項６】
頂点で構成されるトライアングルをピクセルの集まりに変換するステップと、
前記ピクセルの集まりをタイルに分割するステップとをコンピュータに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置および画像処理プログラムに関し、特に、タイルベースレンダリングを用いたベクトルグラフィックス描画方法に適用して好適なものである。
【背景技術】
【０００２】
タイルベースレンダリング方式では、画面全体が複数の矩形領域（タイル）に分割され、それぞれのタイル毎に独立に描画が実行されることで最終画像が生成される。このため、比較的頂点数の少ないアプリケーションにおいては、外部メモリのメモリバンド幅を大幅に低減でき、マルチコア化により容易にピクセル性能のスケーラビリティが得られる手法として認知されている（特許文献１）。
【０００３】
具体的には、コマンドリストに対して頂点処理までが実行され、各頂点により構成されるトライアングルがどのタイルに属するかが計算され、その計算結果を元に各頂点が各タイルに振り分けられる。このタイル毎に頂点を振り分ける処理はソーティングと呼ばれる。ソーティング結果はグラフィックプロセッシングユニット外部のソーティングバッファに次々と蓄えられる。すべての描画コマンドに対しソーティングが完了すると、タイル毎のラスタライズおよびピクセル処理に移る。すべてのタイルに対してピクセル処理が完了すると描画完了となる。
【０００４】
ここで、タイル内のピクセル数は限られており、例えばタイルサイズが３２×３２ピクセルの場合、１ピクセル当たり４バイトと仮定すると、各タイルのデータ量は高々４Ｋバイト程度（３２×３２×４バイト）である。このため、グラフィックプロセッシングユニット内部に設けられたタイルバッファに各タイルのデータを保持することが可能となり、ピクセル処理におけるフレームバッファへのアクセスの代わりにタイルバッファへのアクセスで済ませることが可能となることから、グラフィックプロセッシングユニット外部のメモリへのアクセス回数を大幅に低減できる。また、各タイル間のピクセル処理に依存性がないため、容易に並列化することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＵＳＰ２００８／２５９０７６Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のタイルベースレンダリング方式では、タイル毎に頂点を振り分けるソーティングが必要になり、タイルがどの頂点に関連するかを示すソーティングリストを作成する必要がある。このため、特に頂点数が多い場合、グラフィックプロセッシングユニット外部のソーティングバッファへのアクセス回数が増大したり、ソーティングバッファ容量が増大したりし、タイルベースレンダリング方式の利点が相殺されるという問題があった。
【０００７】
また、通常では、１つの頂点は複数のタイルに属するため、ソーティング後の頂点データはインデックスを使った間接参照の構造をとる。そのため、ソーティングバッファへのアクセスはランダムアクセス性が高く、メモリアクセス効率が低下しやすいという問題もあった。
【０００８】
さらに、レンダリングステートの更新をタイル数倍だけ行うことになるので、レンダリングステート更新ペナルティが増大するという問題もあった。
【０００９】
本発明の目的は、トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行うことが可能な画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、描画コマンドにより指定される図形を複数のピクセルの集まりに変換した後、前記ピクセルの集まりをタイルに分割する処理を行うラスタライズ処理部と、前記ピクセルの集まりを前記タイルごと且つオブジェクトごとに記憶するソーティングバッファとを備えることを特徴とする画像処理装置を提供する。
【００１１】
本発明の一態様によれば、頂点で構成されるトライアングルをピクセルの集まりに変換するステップと、前記ピクセルの集まりをタイルに分割するステップとをコンピュータに実行させることを特徴とする画像処理プログラムを提供する。
【発明の効果】
【００１２】
本発明によれば、トライアングルを構成する頂点をタイル毎に振り分ける処理を伴うことなく、タイルベースレンダリングを行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の第１実施形態に係る画像処理装置の概略構成を示すブロック図。
【図２】図２は、図１のテッセレータ＆頂点処理エンジン１１で行われる処理の概要を示す図。
【図３】図３は、図１のラスタライザ１２およびカバレージバッファ１３で行われる処理の概要を示す図。
【図４】図４は、本発明の第２実施形態に係る画像処理装置の概略構成を示すブロック図。
【図５】図５は、図４の上書き判断部１２ａおよび描画キャンセル部１２ｂの処理を示す図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態に係る画像処理装置について図面を参照しながら説明する。
【００１５】
（第１実施形態）
図１は、本発明の第１実施形態に係る画像処理装置の概略構成を示すブロック図である。
図１において、この画像処理装置には、グラフィックプロセッシングユニット（ＧＰＵ）１およびＤＲＡＭ２が設けられている。そして、グラフィックプロセッシングユニット
１には、テッセレータ＆頂点処理エンジン１１、ラスタライザ１２、カバレージバッファ１３、ピクセル処理エンジン１４およびタイルバッファ１５が設けられている。ＤＲＡＭ２には、コマンドリスト２１が記憶されるとともに、ソーティングバッファ２２、テクスチャバッファ２３およびフレームバッファ２４が設けられている。
【００１６】
ここで、テッセレータ＆頂点処理エンジン１１は、コマンドリスト２１にて曲線が指定されている場合にその曲線を頂点に変換したり、図形を表現するトライアングルの頂点の座標変換を行ったりすることができる。なお、頂点の座標変換としては、例えば、頂点にて構成される図形の回転、縮小または拡大などに伴う座標変換を挙げることができる。ラスタライザ１２は、頂点で構成されるトライアングルをピクセルの集まりに変換してから、ピクセルの集まりをタイルに分割することができる。カバレージバッファ１３は、ラスタライザ１２にてタイルに分割されるピクセルの集まりを同一オブジェクト内で連続した状態で一括して記憶することができる。なお、オブジェクトとは、描画対象となる任意の閉領域を言う。このオブジェクトには、プリミティブ（部品）を含むことができる。なお、オブジェクトは、１つまたは複数の基本図形（トライアングルなど）に分解されてラスタライズされる。ピクセル処理エンジン１４は、ソーティングバッファ２２に記憶されたピクセルの集まりをタイルごと且つオグジェクトごとに取得し、ピクセルに属性を付与することができる。タイルバッファ１５は、ピクセル処理エンジン１４にて属性が付与されたピクセルの情報をタイルごとに記憶することができる。コマンドリスト２１は、描画コマンドおよび描画データ（始点、終点、制御点など）を記憶することができる。なお、コマンドリスト２１の描画データは、例えば、ベクトル形式などのラスタ形式以外の形式で表現することができる。ソーティングバッファ２２は、ラスタライザ１２にてタイルごとに分割されたピクセルの集まりをタイルごと且つオブジェクトごとに記憶することができる。テクスチャバッファ２３は、ピクセル処理エンジン１４にて付与されるピクセルの属性を記憶することができる。なお、ピクセルの属性としては、例えば、色、模様、テクスチャなどを挙げることができる。フレームバッファ２４は、コマンドリスト２１に従って描画された画像データをラスタ形式で記憶することができる。
【００１７】
以下、図１の画像処理装置の動作について図２および図３を参照しながら説明する。
図２は、図１のテッセレータ＆頂点処理エンジン１１で行われる処理の概要を示す図である。
図２において、コマンドリスト２１には、曲線ＰＡを定義するための始点ＰＳ、終点ＰＥおよび制御点ＰＣ１、ＰＣ２などが登録されている。そして、コマンドリスト２１内の描画コマンドおよび描画データがテッセレータ＆頂点処理エンジン１１に入力されると、始点ＰＳ、終点ＰＥおよび制御点ＰＣ１、ＰＣ２などに沿ってストロークＳＴが生成される。なお、ストロークステージでは、様々の形状の線種を定義することができる。そして、ストロークＳＴが生成されると、ストロークＳＴを構成する複数のトライアングルＴＡに変換され、トライアングルＴＡを構成する頂点ＶＴの座標変換が行われた後、頂点ＶＴの座標データがラスタライザ２に入力される。なお、コマンドリスト２１には、各頂点ＶＴもしくは始点ＰＳ、終点ＰＥおよび制御点ＰＣ１、ＰＣ２等の座標にアクセスするためのポインタを記憶するようにしてもよい。
【００１８】
図３は、図１のラスタライザ１２およびカバレージバッファ１３で行われる処理の概要を示す図である。
図３において、頂点ＶＴのデータがラスタライザ１２に入力されると、頂点ＶＴで構成されるトライアングルＴＡがピクセルＰＸの集まりに変換された後、タイルＴＬごとに分割される。例えば、ピクセルＰＸの集まりを描画する画面を１番目から２０番目の２０個のタイルＴＬに分割することができる。なお、タイルＴＬのサイズは、例えば、８×８ピクセルに設定することができる。そして、タイルＴＬごとに分割されたピクセルＰＸの集まりは、タイルＴＬごとにソーティングバッファ２２に記憶される。
【００１９】
そして、ピクセル処理エンジン１４において、ソーティングバッファ２２に記憶されたピクセルＰＸの集まりがタイルＴＬごとに取得され、テクスチャバッファ２３に記憶されたピクセルＰＸの属性が付与されながら、タイルバッファ１５に記憶される。そして、１個分のタイルＴＬに含まれるピクセルＰＸの処理が終了するごとに、タイルバッファ１５に記憶された画像データがフレームバッファ２４に格納される。
【００２０】
ここで、図３に示すように、頂点ＶＴで構成されるトライアングルＴＡをピクセルＰＸの集まりに変換してから、タイルＴＬごとに分割することにより、トライアングルＴＡを構成する頂点ＶＴをタイルＴＬ毎に振り分けることなく、タイルベースレンダリングを行うことが可能となる。このため、頂点数が多い場合においても、グラフィックプロセッシングユニット１外部のソーティングバッファ２２へのアクセス回数が増大したり、ソーティングバッファ２２の容量が増大したりするのを抑制することができる。
【００２１】
なお、頂点ＶＴで構成されるトライアングルＴＡをピクセルＰＸの集まりに変換する場合、ピクセルＰＸの集まりを同一オブジェクト内で連続した状態でカバレージバッファ１３に保持し、同一オブジェクト内に含まれるピクセルＰＸの集まりへの変換を一括して行うようにしてもよい。この場合、ラスタライザ１２は、トライアングルＴＡを各ピクセルのカバレージ（マスクパターン）に変換し、カバレージバッファ１３にてタイルＴＬごとにカバレージにまとめ、タイルＴＬごとにソーティングバッファ２２の該当タイルＴＬのエントリに登録することができる。そして、全コマンドに対してソーティングバッファ２２へのカバレージの登録が完了したら、ピクセル処理エンジン１４は、ソーティングバッファ２２から１つずつタイルＴＬを取り出し、ピクセル処理を順次行うことができる。ここで、カバレージは、アンチエイリアスなしの場合、１ピクセル当たり１ビットが割り当てられ、アンチエイリアスありの場合、サンプリング数に応じたビット数が１ピクセルに割り当てられる。
【００２２】
なお、オブジェクトに８個のタイルＴＬが割り当てられ、タイルＴＬが６４ピクセルで構成されるものとすると、ソーティングバッファ２２のサイズは該当オブジェクトに対して１ビット×６４ピクセル×８個＝５１２ビットで済ませることができる。
【００２３】
また、テッセレータ＆頂点処理エンジン１１、ラスタライザ１２およびピクセル処理エンジン１４は、これらのブロックで行われる処理を遂行させる命令が記述されたプログラムをコンピュータに実行させることにより実現することもできる。
【００２４】
そして、このプログラムをＣＤ−ＲＯＭなどの記憶媒体に記憶しておけば、画像処理装置のコンピュータに記憶媒体を装着し、そのプログラムをコンピュータにインストールすることにより、テッセレータ＆頂点処理エンジン１１、ラスタライザ１２およびピクセル処理エンジン１４で行われる処理を実現することができる。
【００２５】
また、テッセレータ＆頂点処理エンジン１１、ラスタライザ１２およびピクセル処理エンジン１４で行われる処理を遂行させる命令が記述されたプログラムをコンピュータに実行させる場合、スタンドアロン型コンピュータで実行させるようにしてもよく、ネットワークに接続された複数のコンピュータに分散処理させるようにしてもよい。
【００２６】
（第２実施形態）
図４は、本発明の第２実施形態に係る画像処理装置の概略構成を示すブロック図である。
図４において、この画像処理装置には、図１のグラフィックプロセッシングユニット１の代わりに、グラフィックプロセッシングユニット１´が設けられ、グラフィックプロセッシングユニット１´には、図１のカバレージバッファ１３の代わりにカバレージバッファ１３´が設けられている。ここで、カバレージバッファ１３´´には上書き判断部１２ａ、描画キャンセル部１２ｂおよび情報圧縮部１３ａが設けられている。
【００２７】
ここで、上書き判断部１２ａは、今回描画されるオブジェクトにて全てのピクセルＰＸが上書きされるタイルＴＬがあるかどうかを判断することができる。描画キャンセル部１２ｂは、今回描画されるオブジェクトにて全てのピクセルが上書きされるタイルについて、それまでに登録されていた他のオブジェクトのピクセル情報を破棄するとともに、そのピクセル情報をソーティングバッファ２２に格納するのを省略することができる。情報圧縮部１３ａは、ピクセルＰＸにて全体が埋められているかピクセルＰＸが１つもないタイルＴＬについては専用のコードを割り当てることでタイルＴＬの情報を圧縮することができる。
【００２８】
図５は、図４の上書き判断部１２ａおよび描画キャンセル部１２ｂの処理を示す図である。
図５において、コマンドリスト２１には、オブジェクトＰＲ１の頂点Ｖ１１、Ｖ１２・・・のデータ、オブジェクトＰＲ２の頂点Ｖ２１、Ｖ２２・・・のデータおよびオブジェクトＰＲ３の頂点Ｖ３１、Ｖ３２・・・のデータがこの順で登録されているものとする。オブジェクトＰＲ１〜ＰＲ３のデータは頂点座標とは限らず、例えば曲線の場合は始点・終点・制御点の座標でもよい。なお、グラフィックプロセッシングユニット１´は、コマンドリスト２１に複数のオブジェクトＰＲ１〜ＰＲ３が登録されている場合、コマンドリスト２１に登録されている順序で描画を行うことができ、例えば、最初にオブジェクトＰＲ１はその後に登録されているオブジェクトＰＲ２、ＰＲ３にて上書きすることができる。
【００２９】
そして、このコマンドリスト２１がテッセレータ＆頂点処理エンジン１１に入力されると、オブジェクトＰＲ１〜ＰＲ３の頂点の座標変換が順次行われた後、ラスタライザ１２にてオブジェクトＰＲ１〜ＰＲ３ごとにピクセルＰＸの集合が生成される。そして、上書き判断部１２ａにおいて、ピクセルＰＸの集合にて該当タイルＴＬの全ピクセルＰＸが上書きされるどうかがタイルＴＬ単位に判断され。ここで、上書き判断をラスタライザ１２で行う場合はトライアングルＴＡ単位での上書き判断しかできないが、カバレージバッファ１３´にて上書き判断を行う場合はカバレージバッファ１３´内の情報を利用することでオブジェクトＰＲ１〜ＰＲ３単位での判断が可能となり効率が向上する。また、上書き判断の結果は情報圧縮部１３ａの情報圧縮処理にも利用することができる。
【００３０】
ここで、例えば、オブジェクトＰＲ１〜ＰＲ３のピクセルの集まりを描画する画面が１番目から２０番目の２０個のタイルＴＬに分割されるものとすると、上書き判断部１２ａにおいて、１２番目のタイルＴＬでは、オブジェクトＰＲ２、ＰＲ３にてオブジェクトＰＲ１の全てのピクセルが上書きされると判断される。また、１３番目および１４番目のタイルＴＬでは、オブジェクトＰＲ３にてオブジェクトＰＲ１、ＰＲ２の全てのピクセルが上書きされると判断される。
【００３１】
そして、描画キャンセル部１２ｂにおいて、オブジェクトＰＲ２、ＰＲ３にて全てのピクセルが上書きされると判断されたオブジェクトＰＲ１の１２番目から１４番目のタイルＴＬでは、そのタイルＴＬのエントリにそれまでに登録されていたオブジェクトＰＲ１の各情報が破棄されるとともに、そのピクセル情報をソーティングバッファ２２に格納する処理が省略される。
【００３２】
また、描画キャンセル部１２ｂにおいて、オブジェクトＰＲ３にて全てのピクセルが上書きされると判断されたオブジェクトＰＲ２の１３番目および１４番目のタイルＴＬでは、そのタイルＴＬのエントリにそれまでに登録されていたオブジェクトＰＲ２の各情報が破棄されるとともに、そのピクセル情報をソーティングバッファ２２に格納する処理が省略される。
【００３３】
そして、ピクセル処理エンジン１４において、上書き処理後のオブジェクトＰＲ１〜ＰＲ３のピクセルの集まりがタイルＴＬごとに取得され、テクスチャバッファ２３に記憶されたピクセルの属性が付与されながら、タイルバッファ１５に記憶される。そして、１個分のタイルＴＬに含まれるオブジェクトＰＲ１〜ＰＲ３のピクセルの処理が終了するごとに、タイルバッファ１５に記憶された画像データがフレームバッファ２４に格納される。
【００３４】
ここで、後に描画されるオブジェクトにて先に描画されるオブジェクトの全てのピクセルが上書きされるタイルＴＬがある場合、そのタイルＴＬについては先に描画されたオブジェクトのピクセル処理をキャンセルすることにより、ピクセル処理エンジン１４での無駄なピクセル処理の発生を抑えることができ、グラフィックプロセッシングユニット１´の負荷を軽減することができる。
【００３５】
また、オブジェクトＰＲ１〜ＰＲ３の各ピクセルのカバレージ情報がカバレージバッファ１３´に送られると、情報圧縮部１３ａにおいて、ラスタライザ１２にて生成されたピクセルＰＸ群にてタイルＴＬ全体が埋められたかどうかを表すフラグがオブジェクトＰＲ１〜ＰＲ３ごと且つタイルＴＬごとに生成され、そのフラグがソーティングバッファ２２に格納される。
【００３６】
すなわち、ラスタライザ１２にて生成されたピクセルＰＸで全体が埋められているタイルＴＬについては‘１’という値がオブジェクトＰＲ１〜ＰＲ３ごとにフラグに格納され、それ以外のタイルＴＸについては‘０’という値がフラグに格納される。ピクセルが一つもないタイルＴＸに関しては、ソーティングバッファ２２への登録自体が行われない。‘１’という値がフラグに格納される場合は、該当タイルＴＬのエントリにそれまでに登録されていた他のオブジェクトＰＲ１〜ＰＲ３の各情報が破棄されるとともに、そのピクセル情報がソーティングバッファ２２に格納するのが省略される。
【００３７】
例えば、図５の１番目および５番目のタイルＴＬにはピクセルＰＸが一つも描画されないので、ソーティングバッファ２２へは何も登録されない。図５の１３番目および１４番目のタイルＴＬにはオブジェクトＰＲ３のピクセルＰＸで全体が埋められている。この場合、ソーティングバッファ２２にオブジェクトＰＲ３のタイルＴＬを登録するときに、該当タイルＴＬのエントリからオブジェクトＰＲ１、ＰＲ２の情報が削除されて、オブジェクトＰＲ３のフラグ情報だけがエントリに格納される。
【００３８】
これにより、カバレージ情報を圧縮してソーティングバッファ２２に格納できるので、外部メモリのメモリバンド幅およびメモリ容量を削減することが可能となる。
【００３９】
なお、図４の例では、上書き判断部１２ａおよび描画スキップ部１２ｂをカバレージバッファ１３´に搭載する方法について説明したが、ラスタライザ１２に搭載するようにしてもよいし、カバレージバッファ１３´とソーティングバッファ２２との間に搭載するようにしてもよいし、ラスタライザ１２とカバレージバッファ１３´との間に搭載するようにしてもよい。
【００４０】
また、図４の例では、情報圧縮部１３ａをカバレージバッファ１３´に搭載する方法について説明したが、カバレージバッファ１３´とソーティングバッファ２２との間に搭載するようにしてもよい。
【００４１】
また、上述した第２実施形態では、ピクセルにて全体が埋められているかピクセルが１つもないタイルＴＬについての情報圧縮方法について説明したが、カバレージ情報を２値画像とみなすことにより、ピクセルにて一部が埋められているタイルＴＬについても２値画像圧縮技術を適用するようにしてもよい。
【００４２】
また、上述した第２実施形態では、図１の第１実施形態に対して上書き判断部１２ａ、描画キャンセル部１２ｂおよび情報圧縮部１３ａを追加する方法について説明したが、図１の第１実施形態に対して上書き判断部１２ａおよび描画キャンセル部１２ｂのみを追加するようにしてもよいし、図１の第１実施形態に対して情報圧縮部１３ａのみを追加するようにしてもよい。
【符号の説明】
【００４３】
１、１´  グラフィックプロセッシングユニット、２  ＤＲＡＭ、１１  テッセレータ＆頂点処理エンジン、１２  ラスタライザ、１３、１３´  カバレージバッファ、１４  ピクセル処理エンジン、１５  タイルバッファ、２１  コマンドリスト、２２  ソーティングバッファ、２３  テクスチャバッファ、２４  フレームバッファ、１２ａ  上書き判断部、１２ｂ  描画キャンセル部、１３ａ  情報圧縮部
【図１】
2011128713.tif 000003
【図２】
2011128713.tif 000004
【図３】
2011128713.tif 000005
【図４】
2011128713.tif 000006
【図５】
2011128713.tif 000007