(57)【要約】【課題】少ないハードウェア規模で効率よく図形描画処理を実行することのできる図形描画装置を得る。【解決手段】ＳＩＭＤプロセッサ１０１は、３Ｄグラフィックスのジオメトリ処理とベクターグラフィックスのエッジ交点算出処理を行い、これらの処理結果を共通のＳＰ出力バッファ１０４〜１０７に出力する。ピクセルシェーダ１１２は、３Ｄグラフィックス及びベクターグラフィックスにおけるピクセルシェーダ処理を行う。フラグメント処理部１１４は、３Ｄグラフィックスではデプスバッファ、ベクターグラフィックスではマスクバッファとして用いる第１の補助バッファ１１６と、３Ｄグラフィックスではステンシルバッファ、ベクターグラフィックスではシザーバッファとして用いる第２の補助バッファ１１７と、共通に用いるカラーバッファ１１５を用いて、フラグメント処理を行う。【選択図】図１
2008299642.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄグラフィックスのジオメトリ処理とベクターグラフィックスのエッジ交点算出処理を行うプロセッサと、
前記エッジ交点算出処理結果であるスキャンライン情報からピクセルへの展開を行うスキャンライン展開部と、
３Ｄグラフィックス及びベクターグラフィックスにおけるピクセルシェーダ処理を行うピクセルシェーダと、
３Ｄグラフィックスではデプスバッファとして用い、ベクターグラフィックスではマスクバッファとして用いる第１の補助バッファと、
３Ｄグラフィックスではステンシルバッファとして用い、ベクターグラフィックスではシザーバッファとして用いる第２の補助バッファと、
３Ｄグラフィックス及びベクターグラフィックスで共通に用いるカラーバッファと、
前記第１の補助バッファ、前記第２の補助バッファ及び前記カラーバッファを用い、前記ピクセルシェーダから出力されたデータに対して、３Ｄグラフィックス及びベクターグラフィックスにおけるフラグメント処理を行うフラグメント処理部とを備えた図形描画装置。
【請求項２】
プロセッサに入力する３Ｄグラフィックスのジオメトリ処理を行うための入力データとベクターグラフィックスのエッジ交点算出処理に行うための入力データのいずれか一方を保持する入力バッファと、前記プロセッサから出力された３Ｄグラフィックスとベクターグラフィックスのいずれかの処理結果の出力データを保持する出力バッファとを備えると共に、
前記プロセッサは、実行するベクターグラフィックスと３Ｄグラフィックスの処理に応じて対応するプログラムを実行することを特徴とする請求項１記載の図形描画装置。
【請求項３】
ベクターグラフィックスのエッジ交点算出処理をアンチエイリアス処理に用い、プロセッサは複数のサブスキャンラインのエッジ交点を並列に算出することを特徴とする請求項１または請求項２記載の図形描画装置。
【請求項４】
プロセッサをＳＩＭＤプロセッサとして当該ＳＩＭＤプロセッサを複数用意し、
これら複数のＳＩＭＤプロセッサで複数のサブスキャンラインのエッジ交点算出処理を並列に処理することを特徴とする請求項３記載の図形描画装置。
【請求項５】
プロセッサをＳＩＭＤプロセッサとして、当該ＳＩＭＤプロセッサのＳＩＭＤ数を増加させることによりエッジ交点算出処理を並列に行うサブスキャンラインの数を増加させることを特徴とする請求項３記載の図形描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、数式で定義されたベクター図形を描画する分野において、ベクターグラフィックス描画と３Ｄグラフィックス描画を同時に実現させる図形描画装置に関するものである。
【背景技術】
【０００２】
ベクターグラフィックスは、入力データがベジエ曲線などの数式で与えられその輪郭線を微小な線分に分割して多角形描画が行われる。そのためビットマップ画像のように拡大縮小してもジャギーが発生することなく高品質な図形描画ができるという特徴がある。そして２Ｄベクターグラフィックス処理用のプログラミングインタフェースとしてＯｐｅｎＶＧが使用されてきている。このＯｐｅｎＶＧは、規格標準化団体であるKhronos Groupにより仕様策定されたグラフィックスＡＰＩで、曲線などで定義されたパスやストロークの塗りつぶし処理、マトリクス変換処理、クリッピングやマスク処理、イメージを貼り付けるパターンペイント処理、アンチエイリアス処理、ブレンド処理、ディザ処理などの様々な機能が定義されている。一般にベクターグラフィックスでは数式で定義された輪郭曲線を多角形へ変換または分割して描画を行うために、専用ハードウェアやソフトウェアで実装されることが多い（例えば、特許文献１参照）。
【０００３】
【特許文献１】国際公開第０３／０９６２７５号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ベクターグラフィックスでは数式で定義された輪郭曲線などがピクセルに分解される。そして分解されたピクセルはアンチエイリアス処理された後、マスク情報などを元にフレームバッファへ書き込まれる。一方、３Ｄグラフィックスではポリゴンで定義されたデータが座標変換された後ピクセルへ分解される。ピクセルはデプスバッファなどを使用して前後判定を行いながらピクセルの書き込みが行われる。このように、ベクターグラフィックスと３Ｄグラフィックスでは処理内容が異なるために、ハードウェアで実装する場合は異なるハードウェアになってしまう。
【０００５】
ベクターグラフィックス、３Ｄグラフィックス共にそれぞれをハードウェア実装したときのハードウェア規模は一般に大きい。そのため、ベクターグラフィックスと３Ｄグラフィックスの両方をハードウェアで実装すると非常に大きなゲート規模となってしまう。これは特に組み込み向け用途などで、ハードウェア規模を小さく抑える必要がある分野では大きな問題となり、ゲート規模増加により消費電力も増加してしまうといった問題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、ベクターグラフィックスと３Ｄグラフィックスのハードウェアを共用することにより、少ないハードウェア規模で効率よく図形描画処理を実行することのできる図形描画装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る図形描画装置は、３Ｄグラフィックスのジオメトリ処理とベクターグラフィックスのエッジ交点算出処理を行うプロセッサと、エッジ交点算出処理結果であるスキャンライン情報からピクセルへの展開を行うスキャンライン展開部と、３Ｄグラフィックス及びベクターグラフィックスにおけるピクセルシェーダ処理を行うピクセルシェーダと、３Ｄグラフィックスではデプスバッファとして用い、ベクターグラフィックスではマスクバッファとして用いる第１の補助バッファと、３Ｄグラフィックスではステンシルバッファとして用い、ベクターグラフィックスではシザーバッファとして用いる第２の補助バッファと、３Ｄグラフィックス及びベクターグラフィックスで共通に用いるカラーバッファと、第１の補助バッファ、第２の補助バッファ及びカラーバッファを用い、ピクセルシェーダから出力されたデータに対して、３Ｄグラフィックス及びベクターグラフィックスにおけるフラグメント処理を行うフラグメント処理部とを備えたものである。
【発明の効果】
【０００８】
この発明の図形描画装置は、プロセッサとその入出力バッファをベクターグラフィックスと３Ｄグラフィックスで共用し、更に描画関連バッファをベクターグラフィックスと３Ｄグラフィックスで別の用途で使用するようにしたので、少ないハードウェア規模で効率よく図形描画処理を実行することができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、この発明の実施の形態１による図形描画装置を示す構成図である。
図において、図形描画装置は、ＳＰ入力バッファ１００、ＳＩＭＤプロセッサ１０１、ＳＰプログラムメモリ１０２、ＶＧ(Vector Graphics)シーケンス制御部１０３、ＳＰ出力バッファ１０４〜１０７、ＶＧスキャンライン展開部１０８、３Ｄセットアップ１０９、３Ｄラスタライザ１１０、テクスチャフェッチ部１１１、ピクセルシェーダ１１２、ピクセルシェーダプログラムメモリ１１３、フラグメント処理部１１４、カラーバッファ１１５、第１の補助バッファ１１６、第２の補助バッファ１１７を備えている。
【００１０】
ＳＰ入力バッファ１００は、ＳＩＭＤプロセッサ１０１への入力データを保持するためのバッファであり、ベクターグラフィックスを処理する場合にはＶＧ輪郭情報１００ａが、また、３Ｄグラフィックスを処理する場合には物体を構成するモデルデータや光の情報といった３Ｄモデルデータ１００ｂが予め格納される。ＳＩＭＤプロセッサ１０１は、４−ＳＩＭＤを構成するプロセッサであり、ＰＵ０、ＰＵ１、ＰＵ２、ＰＵ３の演算コアから構成される。ＳＰプログラムメモリ１０２は、ＳＩＭＤプロセッサ１０１が実行するプログラムを格納するためのメモリであり、ベクターグラフィックス処理用としてＶＧ輪郭情報から輪郭座標を算出すためのプログラムや、ＯｐｅｎＶＧのマトリクス処理を行うプログラムといったＶＧ用プログラム１０２ａが格納される。また、ＳＰプログラムメモリ１０２には、３Ｄグラフィックス処理用として、幾何学演算処理やライティング処理を行うためのプログラム（頂点シェーダプログラム相当）といった３Ｄ用プログラム１０２ｂが格納される。尚、ＳＩＭＤプロセッサ１０１は、３Ｄグラフィックスで一般に使用される頂点シェーダのような演算プロセッサであっても構わない。
【００１１】
ＶＧシーケンス制御部１０３は、ＳＩＭＤプロセッサ１０１を制御してベクターグラフィックス処理を行うためのプログラマブルロジックコントローラである。ＳＰ出力バッファ１０４〜１０７は、ＳＩＭＤプロセッサ１０１におけるそれぞれの演算コアで演算された結果を一時保存するためのバッファであり、それぞれベクターグラフィックス用のＶＧエッジデータ１０４ａ〜１０７ａ、３Ｄ頂点データ１０４ｂ〜１０７ｂが格納されるようになっている。ＶＧスキャンライン展開部１０８は、ベクターグラフィックス処理に用いられる機能部であり、ＳＰ出力バッファ１０４〜１０７にある輪郭線のエッジリストを読み出して、スキャンライン情報からピクセルへ展開するよう構成されている。３Ｄセットアップ１０９は、ＳＰ出力バッファ１０４〜１０７にある３Ｄ頂点データ１０４ｂ〜１０７ｂから、ビューポート変換、クリップ処理、そしてラスタライズに必要な増分パラメータの計算を行う機能部である。３Ｄラスタライザ１１０は、３Ｄセットアップ１０９から出力された増分パラメータからポリゴンの中に含まれるピクセル値を算出する機能部である。テクスチャフェッチ部１１１は、ＶＧスキャンライン展開部１０８及び３Ｄラスタライザ１１０から出力されたテクスチャ座標に基づいて、テクセルデータを求め、これをピクセルシェーダ１１２に出力する機能部である。
【００１２】
ピクセルシェーダ１１２は、ピクセル演算処理を行うための４−ＳＩＭＤプロセッサであり、ピクセルシェーダプログラムメモリ１１３に格納されたプログラムにより実行されるものである。ピクセルシェーダプログラムメモリ１１３は、ベクターグラフィックス処理と３Ｄグラフィックス処理ではそれぞれ異なるピクセルシェーダプログラム（ＶＧ用プログラム１１３ａ，３Ｄ用プログラム１１３ｂ）が格納されている。
【００１３】
フラグメント処理部１１４は、ベクターグラフィックス処理を行う場合は、ピクセルのブレンディング処理とアルファブレンディング処理を行うと共に、シザークリップ処理を行う機能を有している。また、フラグメント処理部１１４は、３Ｄグラフィックス処理を行う場合は、デプステストとステンシルテストを行い、ピクセル値をカラーバッファ１１５に書き込む処理を行う。カラーバッファ１１５は、ピクセル毎の色情報を格納するためのバッファである。第１の補助バッファ１１６は、ベクターグラフィックス処理のためのＶＧマスクアルファ１１６ａと３Ｄグラフィックス処理のための３Ｄデプス情報１１６ｂを格納し、第２の補助バッファ１１７は、ベクターグラフィックス処理のためのＶＧシザー情報１１７ａと３Ｄグラフィックス処理のための３Ｄステンシル情報１１７ｂを格納するバッファである。
【００１４】
次に、実施の形態１の図形描画装置による実施の形態１を説明する。
描画処理に先立ち、ＳＰ入力バッファ１００にはベクターグラフィックスを処理する場合にはＶＧ輪郭情報１００ａが、３Ｄグラフィックスを処理する場合には３Ｄモデルデータ１００ｂが予め格納されているものとする。
ＳＩＭＤプロセッサ１０１は、ＳＰプログラムメモリ１０２からプログラムを読み出しながら実行する。ベクターグラフィックス処理の場合、曲線などの輪郭情報は微小な線分（エッジ）に分割され、そのエッジの両端の座標をｖ０（ｘ０，ｙ０）、ｖ１（ｘ１，ｙ１）、スキャンラインのＹ座標をｙとすると、スキャンラインとエッジの交点座標ｘｓ（ｙ）は以下の式で求めることができる。但し、ｙ０＝ｙ１のときは交点座標の算出は行わない。
【数１】
2008299642.tif 000003
【００１５】
また、曲線を微小な線分に分解せずに、直接２次のベジエ曲線からスキャンラインとの交点座標を以下のように算出することもできる。ベジエ曲線はパラメータｔ（０≦ｔ≦１）を用いて以下のパラメトリック形式で定義される。
ｘ（ｔ）＝（１−ｔ）2＊ｘ０＋２＊（１−ｔ）＊ｔ＊ｘ１＋ｔ2＊ｘ２    （１）
ｙ（ｔ）＝（１−ｔ）2＊ｙ０＋２＊（１−ｔ）＊ｔ＊ｙ１＋ｔ2＊ｙ２    （２）
【００１６】
（１），（２）式をｔについて整理して方程式を解くと、
【数２】
2008299642.tif 000004
ここで、
ａ＝ｙ０−２＊ｙ１＋ｙ２（定数）
ｂ＝２＊（ｙ１−ｙ０）  （定数）
ｃ＝ｙ０−ｙ
【００１７】
このように、スキャンラインのＹ座標ｙが一意に決まれば、（３）式によりパラメータｔの値が求まり（判別式ｂ2−４＊ａ＊ｃ≧０の場合）、それを（１）式に代入すれば、ベジエ曲線とスキャンラインとの交点座標ｘを算出することができる。尚、これらの交点算出やその他のＯｐｅｎＶＧ用マトリクス処理などは、通常、プログラムを記述することにより実行されるが、高速化とプログラム領域を削減するためにＳＩＭＤプロセッサの演算器とレジスタを直接ＶＧシーケンス制御部１０３によって制御することにより、プログラムを介さずにハードワイヤードにより処理しても構わない。
【００１８】
ＳＩＭＤプロセッサ１０１は、ＳＰプログラムメモリ１０２におけるＶＧ用プログラム１０２ａまたは３Ｄ用プログラム１０２ｂを実行後、演算結果をＳＰ出力バッファ１０４〜１０７へ出力する。ベクターグラフィックス処理の場合には輪郭線とスキャンラインの交点座標ｘのリスト（４個分）が並列に書き込まれる。３Ｄグラフィックス処理の場合には、幾何学演算処理された以下のようなポリゴンの頂点データが書き込まれる。各データは４成分から構成されるので、各成分がＳＰ出力バッファ１０４〜１０７へ並列に書き込まれる。
【００１９】
Ｐｏｓｉｔｉｏｎ      （ｘ，ｙ，ｚ，ｗ）
Ｆｒｏｎｔ  Ｃｏｌｏｒ    （ｒ，ｇ，ｂ，ａ）
Ｂａｃｋ  Ｃｏｌｏｒ    （ｒ，ｇ，ｂ，ａ）
Ｆｏｇ      （−，−，−，ｆ）
Ｔｅｘｔｕｒｅ（ｎ）    （ｓ，ｔ，ｒ，ｑ）
【００２０】
ＶＧスキャンライン展開部１０８は、ＳＰ出力バッファ１０４〜１０７にある輪郭線のエッジリストを読み出して、スキャンライン情報からピクセルへ展開する。即ち、描画すべきピクセルのｘ，ｙ座標とアンチエイリアスのためのカバレッジ情報を算出する。
３Ｄセットアップ１０９は、ＳＰ出力バッファ１０４〜１０７にある頂点データからビューポート変換、クリップ処理、そしてラスタライズに必要な増分パラメータの計算を行う。増分パラメータとしてはラスタライズに必要なエッジファンクションのパラメータや各属性の平面の方程式の係数Ａ，Ｂ，Ｃなどがある。
【００２１】
３Ｄラスタライザ１１０は、３Ｄセットアップ１０９から出力された増分パラメータからポリゴンの中に含まれるピクセル値を算出する。一般的には、ポリゴンの中に含まれるピクセルを特定するためにエッジファンクションなどを利用してｘ，ｙ座標を求める。次に各属性の平面の方程式の係数Ａ，Ｂ，Ｃを用いてカラーやフォグの値を計算する。テクスチャ座標のようにパースペクティブコレクションを施すためには除算処理も必要となる。
【数３】
2008299642.tif 000005
【００２２】
テクスチャフェッチ部１１１は、ＶＧスキャンライン展開部１０８、３Ｄラスタライザ１１０から出力されたテクスチャ座標をアドレスとしてテクスチャメモリ（図示せず）をアクセスし、テクセルデータを読み出す。読み出されたテクセルデータはバイリニア、トライリニアなどのフィルタ処理が施された後、ピクセルシェーダ１１２へ出力される。
ピクセルシェーダ１１２は、ベクターグラフィックス処理か、３Ｄグラフィックス処理かに応じて、ピクセルシェーダプログラムメモリ１１３のＶＧ用プログラム１１３ａか３Ｄ用プログラム１１３ｂを用いてそれぞれの処理に対応したピクセル演算処理を行う。ピクセルシェーダ１１２における各種の演算処理は、ＶＧスキャンライン展開部１０８、３Ｄラスタライザ１１０から出力されるピクセル情報（カラー、フォグ、テクスチャ座標）と、テクスチャフェッチ部１１１から出力されるテクセルデータを使用して行われる。
【００２３】
フラグメント処理部１１４は、ベクターグラフィックス処理を行う場合、カラーバッファ１１５からデスティネーションカラーを読み出して、ピクセルのブレンディング処理を行う。その後、カバレッジと第１の補助バッファ１１６から読み出されたマスクアルファ値（ＶＧマスクアルファ１１６ａ）を乗算し、アンチエイリアスのためのアルファブレンディング処理を行う。マスクアルファ（Ｍａｓｋｉｎｇ）はＯｐｅｎＶＧで定義されている機能である。この機能はマスクアルファ値をテクスチャメモリに格納して、マルチテクスチャとして処理することによっても等価な処理を行うことが可能である。またフラグメント処理部１１４は、第２の補助バッファ１１７からシザー情報（ＶＧシザー情報１１７ａ）を読み出すことにより、シザークリップ処理も行う。シザー情報はピクセル当たり１ｂｉｔのデータで描画すべき矩形エリアが予め設定されているものとする。このシザークリップもＯｐｅｎＶＧで定義された機能である。そして描画すべきピクセルであれば、最終カラー値がカラーバッファ１１５へ書き込まれる。
【００２４】
一方、フラグメント処理部１１４が３Ｄグラフィックス処理を行う場合、第１の補助バッファ１１６からデプス情報（３Ｄデプス情報１１６ｂ）を読み出してデプステストを行うと共に、第２の補助バッファ１１７からはステンシル情報（３Ｄステンシル情報１１７ｂ）を読み出してステンシルテストを行う。そして、両方のテストにパスしたら、ピクセル値をカラーバッファ１１５へ書き込むと同時に第１の補助バッファ１１６及び第２の補助バッファ１１７のデプス情報とステンシル情報の更新を行う。これらの機能はＯｐｅｎＧＬで定義された機能である。
【００２５】
このように、ＳＩＭＤプロセッサとその入出力バッファをベクターグラフィックスと３Ｄグラフィックスで共用し、更に描画関連バッファをベクターグラフィックスと３Ｄグラフィックスで別の用途で使用することにより、ラスタライザを除くほとんどのハードウェアを共通で使用することが可能となる。そして無駄なハードウェアを実装することなくハードウェア規模を削減でき、アイドル状態になる演算器も少なくなるので消費電力を低減できる。
【００２６】
以上のように、実施の形態１の図形描画装置によれば、３Ｄグラフィックスのジオメトリ処理とベクターグラフィックスのエッジ交点算出処理を行うプロセッサと、エッジ交点算出処理結果であるスキャンライン情報からピクセルへの展開を行うスキャンライン展開部と、３Ｄグラフィックス及びベクターグラフィックスにおけるピクセルシェーダ処理を行うピクセルシェーダと、３Ｄグラフィックスではデプスバッファとして用い、ベクターグラフィックスではマスクバッファとして用いる第１の補助バッファと、３Ｄグラフィックスではステンシルバッファとして用い、ベクターグラフィックスではシザーバッファとして用いる第２の補助バッファと、３Ｄグラフィックス及びベクターグラフィックスで共通に用いるカラーバッファと、第１の補助バッファ、第２の補助バッファ及びカラーバッファを用い、ピクセルシェーダから出力されたデータに対して、３Ｄグラフィックス及びベクターグラフィックスにおけるフラグメント処理を行うフラグメント処理部とを備えたので、少ないハードウェア規模で効率よく図形描画処理を実行することができる。
【００２７】
また、実施の形態１の図形描画装置によれば、プロセッサに入力する３Ｄグラフィックスのジオメトリ処理を行うための入力データとベクターグラフィックスのエッジ交点算出処理に行うための入力データのいずれか一方を保持する入力バッファと、プロセッサから出力された３Ｄグラフィックスとベクターグラフィックスのいずれかの処理結果の出力データを保持する出力バッファとを備えると共に、プロセッサは、実行するベクターグラフィックスと３Ｄグラフィックスの処理に応じて対応するプログラムを実行するようにしたので、更にハードウェア規模を削減することができ、より消費電力を低減することができる。
【００２８】
実施の形態２．
図２は図１におけるＳＩＭＤプロセッサ１０１のベクターグラフィックスでの動作をより具体的に説明するためのものである。
ベクターグラフィックスでは、アンチエイリアスのカバレッジを算出するために、１個のスキャンラインを複数のサブスキャンラインに分割して処理を行う。図２では４個のサブスキャンラインｙ０，ｙ１，ｙ２，ｙ３に分割している。ＳＩＭＤプロセッサ１０１は４−ＳＩＭＤ構成であるので、演算コアＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３にサブスキャンラインｙ０，ｙ１，ｙ２，ｙ３を割り当てて並列に処理を行う。そして、ＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３は、自身に割り当てられたサブスキャンラインと全輪郭線とのＸ座標交点を順次求め、ＳＰ出力バッファ１０４，１０５，１０６，１０７へ書き込んでいく。図２の例においては、ＰＵ０はエッジ０の交点ｘ００、エッジ１の交点ｘ０１、エッジ２の交点ｘ０２、エッジ３の交点ｘ０３を算出し、各エッジのＵＰ／ＤＯＷＮ情報と共にＳＰ出力バッファ１０４へ書き込んでいく。同様に、ＰＵ１，ＰＵ２，ＰＵ３も各交点Ｘ座標とＵＰ／ＤＯＷＮ情報をＳＰ出力バッファ１０５，１０６，１０７へ書き込む。
【００２９】
次に、ＶＧスキャンライン展開部１０８は、このＳＰ出力バッファ１０４，１０５，１０６，１０７に書き込まれた情報を読み出して輪郭線で囲まれた領域のピクセルのカバレッジ（アンチエイリアス処理を行うためのピクセル占有率）を求め、ピクセルを生成していく。このカバレッジを求めるためにＶＧスキャンライン展開部１０８はマスク情報生成用スキャンラインカウンタ（図示せず）を備え、これを用いて処理を行う。スキャンラインカウンタは、１スキャンライン分のカウンタ群で構成され、ピクセル毎にエッジとの交差回数をカウントする。カウンタはスキャンラインと交差するエッジのＵＰ／ＤＯＷＮ情報に基づいてインクリメント／デクリメントした合計値である。このスキャンラインカウンタを用いることにより、複雑な図形でもＸ座標のソーティングをすることなく高速なピクセル生成が可能である。
【００３０】
このように、ＳＩＭＤプロセッサの各演算コアがサブスキャンラインの交点Ｘ座標とＵＰ／ＤＯＷＮ情報算出を並列に行うことにより、ベクターグラフィックスのピクセル生成に必要なデータ作成を効率よく実行できる。
【００３１】
以上のように、実施の形態２の図形描画装置によれば、ベクターグラフィックスのエッジ交点算出処理をアンチエイリアス処理に用い、プロセッサは複数のサブスキャンラインのエッジ交点を並列に算出するようにしたので、アンチエイリアス処理におけるピクセル生成に必要なデータ作成を効率よく実行することができる。
【００３２】
実施の形態３．
図３は、図２におけるＳＩＭＤプロセッサの動作をフローチャートとして示した図である。
描画すべきオブジェクト（１パス分）のＹ座標の最小値をＹｍｉｎ、Ｙ座標の最大値をＹｍａｘとする。先ず、ステップＳＴ３０１でカレントスキャンラインＹをＹｍｉｎに設定し、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３の値を設定する（ｙ０＝Ｙ，ｙ１＝Ｙ＋０．２５，ｙ２＝Ｙ＋０．５，ｙ３＝Ｙ＋０．７５）。次に、ステップＳＴ３０２でＳＰ入力バッファ１００から輪郭データ（エッジ）を読み出し、ステップＳＴ３０３でそのエッジとサブスキャンラインｙ０，ｙ１，ｙ２，ｙ３の交点Ｘ座標の計算を、ＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３を用いて並列に行う。算出した交点Ｘ座標はステップＳＴ３０４において、ＰＵ０はＳＰ出力バッファ１０４へ、ＰＵ１はＳＰ出力バッファ１０５へ、ＰＵ２はＳＰ出力バッファ１０６へ、ＰＵ３はＳＰ出力バッファ１０７へ同時に書き込む。
【００３３】
次に、ステップＳＴ３０５で１個のオブジェクトから線分に分割された全てのエッジ（またはベジエで定義された曲線）を処理したかの判定を行い、まだ処理されていないエッジが残っていれば、ステップＳＴ３０２に戻り、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３とその処理されていないエッジとの交点Ｘ座標の算出を繰り返す。そして、ステップＳＴ３０５の判定で全エッジの処理が完了したら、ステップＳＴ３０６においてＶＧスキャンライン展開部１０８の起動を行う。この起動によりＶＧスキャンライン展開部１０８は１スキャンライン分のピクセル生成を行う。ピクセル生成が終了したら、ステップＳＴ３０７においてカレントスキャンラインを１進め、サブピクセルスキャンラインｙ０，ｙ１，ｙ２，ｙ３の更新も行う。ステップＳＴ３０８でカレントスキャンラインＹがＹｍａｘを超えたかを比較し、超えていれば処理を終了する。超えていなければ、ステップＳＴ３１０においてＳＰ入力バッファ１００のリードポインタをリセットし、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３と全エッジの交点Ｘ座標の算出を同様にして行う。
【００３４】
以上のように、実施の形態３の図形描画装置では、１スキャンライン毎に全エッジと交差するサブスキャンラインの交点Ｘ座標の算出と、スキャンラインのピクセル生成を交互に行うことにより、ベクターグラフィックスの塗りつぶし処理を行うことができる。尚、説明を簡単にするために、交点Ｘ座標の算出とスキャンラインのピクセル生成を順番に行うこととしたが、パイプライン処理によりこれら２つの処理は並列に実行することも可能である。但し、パイプライン処理を行うためにはＳＰ出力バッファをダブルバッファ構成などにする必要がある。
【００３５】
実施の形態４．
図４は図２におけるＳＩＭＤプロセッサの動作をフローチャートとして示した図である。
描画すべきオブジェクト（１パス分）のＹ座標の最小値をＹｍｉｎ、Ｙ座標の最大値をＹｍａｘとする。先ず、ステップＳＴ４０１でカレントスキャンラインＹをＹｍｉｎに設定し、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３の値を設定する（ｙ０＝Ｙ，ｙ１＝Ｙ＋０．２５，ｙ２＝Ｙ＋０．５，ｙ３＝Ｙ＋０．７５）。次に、ステップＳＴ４０２でＳＰ入力バッファ１００から輪郭データ（エッジ）を読み出し、ステップＳＴ４０３でそのエッジとサブスキャンラインｙ０，ｙ１，ｙ２，ｙ３の交点Ｘ座標の計算をＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３を用いて並列に行う。算出した交点Ｘ座標はステップＳＴ４０４において、ＰＵ０はＳＰ出力バッファ１０４へ、ＰＵ１はＳＰ出力バッファ１０５へ、ＰＵ２はＳＰ出力バッファ１０６へ、ＰＵ３はＳＰ出力バッファ１０７へ同時に書き込む。このとき実施の形態３の場合とは異なり、カレントスキャンラインだけではなく次のスキャンラインの交点Ｘ座標も順次書き込みを行うので、Ｙ座標とのペアでエッジリストを作成する。つまり、ＳＰ出力バッファには１オブジェクトと交差する全エッジの交点Ｘ座標が格納されるので、実施の形態３よりも大きな領域が必要となる。
【００３６】
次に、ステップＳＴ４０５で１個のオブジェクトから線分に分割された全てのエッジ（またはベジエで定義された曲線）を処理したかの判定を行い、まだ処理されていないエッジが残っていれば、ステップＳＴ４０２に戻り、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３とその処理されていないエッジとの交点Ｘ座標の算出を繰り返す。そして、ステップＳＴ４０５の判定で全エッジの処理が完了したら、ステップＳＴ４０６においてカレントスキャンラインを１進め、サブピクセルスキャンラインｙ０，ｙ１，ｙ２，ｙ３の更新を行う。ステップＳＴ４０７でカレントスキャンラインＹがＹｍａｘを超えたかを比較し、超えていれば、１個のオブジェクトと交差する全てのサブスキャンラインの交点算出が終了したことになるので、ステップＳＴ４０８においてＶＧスキャンライン展開部１０８の起動を行う。ＶＧスキャンライン展開部１０８は、実施の形態３の場合とは異なり、ＳＰ出力バッファ１０４〜１０７に格納されている１個のオブジェクトと交差する全てのサブスキャンラインの交点Ｘ座標を読み出して、ピクセルを生成していく。
【００３７】
ステップＳＴ４０７において、カレントスキャンラインＹがＹｍａｘを超えていなければ、ステップＳＴ４１０においてＳＰ入力バッファ１００のリードポインタをリセットし、ステップＳＴ４０２に戻り、サブスキャンラインと全エッジの交点Ｘ座標の算出を同様にして行う。
【００３８】
以上のように、実施の形態４の図形描画装置によれば、１個のオブジェクトと交差する全サブスキャンラインエッジの交点Ｘ座標の算出と、ピクセル生成を行うことにより、ベクターグラフィックスの塗りつぶし処理を高速に行うことができる。
【００３９】
実施の形態５．
図５は、図１におけるＳＩＭＤプロセッサ１０１が２並列の場合（ＳＩＭＤプロセッサ１０１ａとＳＩＭＤプロセッサ１０１ｂで構成）のベクターグラフィックスでの動作をより具体的に説明するためのものである。
ベクターグラフィックスではアンチエイリアスのカバレッジを算出するために、１個のスキャンラインを複数のサブスキャンラインに分割して処理を行う。図５では８個のサブスキャンラインｙ０，ｙ１，ｙ２，ｙ３，ｙ４，ｙ５，ｙ６，ｙ７に分割したものである。
ＳＩＭＤプロセッサは一般に４−ＳＩＭＤ構成であるので、ＳＩＭＤプロセッサ１０１ａの演算コアＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３に、サブスキャンラインｙ０，ｙ１，ｙ２，ｙ３を割り当てて並列に処理を行う。そして、もう一方のＳＩＭＤプロセッサ１０１ｂの演算コアＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３に、サブスキャンラインｙ４，ｙ５，ｙ６，ｙ７を割り当てる。各演算コアは自身に割り当てられたサブスキャンラインと全輪郭線とのＸ座標交点を順次求め、ＳＰ出力バッファ１０４〜１０７へ書き込んでいく。図５の例においては、ＳＩＭＤプロセッサ１０１ａのＰＵ０はエッジ０の交点ｘ００、エッジ１の交点ｘ０１、エッジ２の交点ｘ０２、エッジ３の交点ｘ０３を算出し、各エッジのＵＰ／ＤＯＷＮ情報と共にＳＰ出力バッファ１０４へ書き込んでいく。同様にＰＵ１，ＰＵ２，ＰＵ３、そしてＳＩＭＤプロセッサ１０１ｂのＰＵ０，ＰＵ１，ＰＵ２，ＰＵ３も各交点Ｘ座標とＵＰ／ＤＯＷＮ情報をＳＰ出力バッファへ書き込む。
【００４０】
次に、ＶＧスキャンライン展開部１０８は、ＳＰ出力バッファ１０４〜１０７に書き込まれた情報を元に、輪郭線で囲まれた領域のピクセルのカバレッジを求めピクセルを生成していく。カバレッジを求めるために図示しないマスク情報生成用スキャンラインカウンタを用いる。スキャンラインカウンタは、１スキャンライン分のカウンタ群でピクセル毎にエッジとの交差回数をカウントする。カウンタはスキャンラインと交差するエッジのＵＰ／ＤＯＷＮ情報に基づいてインクリメント／デクリメントした合計値である。このスキャンラインカウンタを用いることにより、複雑な図形でもＸ座標のソーティングをすることなく高速なピクセル生成が可能である。
【００４１】
このように、複数のＳＩＭＤプロセッサを用いてサブスキャンラインの交点Ｘ座標とＵＰ／ＤＯＷＮ情報算出を並列に行うことにより、ベクターグラフィックスのピクセル生成に必要なデータ作成を効率よく実行できる。
【００４２】
尚、上記実施の形態では、複数のＳＩＭＤプロセッサを用いて複数のスキャンラインの処理に割り当てるよう構成したが、ＳＩＭＤプロセッサ１０１のＳＩＭＤ数を増やすことにより複数のスキャンラインを同時に並列処理するよう構成してもよい。
【００４３】
以上のように、実施の形態５の図形描画装置によれば、プロセッサをＳＩＭＤプロセッサとしてＳＩＭＤプロセッサを複数用意し、これら複数のＳＩＭＤプロセッサで複数のサブスキャンラインのエッジ交点算出処理を並列に処理するようにしたので、カバレッジの算出精度を向上させ、アンチエイリアスの品質を向上させることができる。
【００４４】
また、実施の形態５の図形描画装置によれば、プロセッサをＳＩＭＤプロセッサとして、ＳＩＭＤプロセッサのＳＩＭＤ数を増加させることによりエッジ交点算出処理を並列に行うサブスキャンラインの数を増加させるようにしたので、カバレッジの算出精度を向上させ、アンチエイリアスの品質を向上させることができる。
【図面の簡単な説明】
【００４５】
【図１】この発明の実施の形態１による図形描画装置を示す構成図である。
【図２】この発明の実施の形態２による図形描画装置のＳＩＭＤプロセッサのベクターグラフィックスでの動作を示す説明図である。
【図３】この発明の実施の形態３による図形描画装置のベクターグラフィックスでの動作を示すフローチャートである。
【図４】この発明の実施の形態４による図形描画装置のベクターグラフィックスでの動作を示すフローチャートである。
【図５】この発明の実施の形態５による図形描画装置のＳＩＭＤプロセッサのベクターグラフィックスでの動作を示す説明図である。
【符号の説明】
【００４６】
１００  ＳＰ入力バッファ、１００ａ  ＶＧ輪郭情報、１００ｂ  ３Ｄモデルデータ、１０１，１０１ａ，１０１ｂ  ＳＩＭＤプロセッサ、１０２  ＳＰプログラムメモリ、１０２ａ，１１３ａ  ＶＧ用プログラム、１０２ｂ，１１３ｂ  ３Ｄ用プログラム、１０３  ＶＧシーケンス制御部、１０４〜１０７  ＳＰ出力バッファ、１０４ａ〜１０７ａ  ＶＧエッジデータ、１０４ｂ〜１０７ｂ  ３Ｄ頂点データ、１０８  ＶＧスキャンライン展開部、１０９  ３Ｄセットアップ、１１０  ３Ｄラスタライザ、１１１  テクスチャフェッチ部、１１２  ピクセルシェーダ、１１３  ピクセルシェーダプログラムメモリ、１１４  フラグメント処理部、１１５  カラーバッファ、１１６  第１の補助バッファ、１１６ａ  ＶＧマスクアルファ、１１６ｂ  ３Ｄデプス情報、１１７  第２の補助バッファ、１１７ａ  ＶＧシザー情報、１１７ｂ  ３Ｄステンシル情報。
【図１】
2008299642.tif 000006
【図２】
2008299642.tif 000007
【図３】
2008299642.tif 000008
【図４】
2008299642.tif 000009
【図５】
2008299642.tif 000010