(57)【要約】  曲線分割部２により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイのピクセル１２に対応する距離情報５を生成する距離情報生成部４と、曲線分割部２により分割された微小線分のエッジ情報をラスタライズするエッジラスタライズ部７とを設け、マッピング部１０がエッジラスタライズ部７によりラスタライズされたエッジ情報８を用いてピクセル１２の内外判定を実施し、その内外判定の判定結果にしたがって、距離情報生成部４により生成された距離情報５をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングする。
2009090726.tif 000002
【特許請求の範囲】
【請求項１】
ベクターデータが表現する曲線の頂点座標と制御点座標をマトリクス変換し、マトリクス変換後の曲線を微小線分に分割する曲線分割手段と、上記曲線分割手段により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイのピクセルに対応する距離情報を生成する距離情報生成手段と、上記曲線分割手段により分割された微小線分のエッジ情報をラスタライズするエッジラスタライズ手段と、上記エッジラスタライズ手段によりラスタライズされたエッジ情報を用いて上記ピクセルの内外判定を実施し、上記内外判定の判定結果にしたがって上記距離情報生成手段により生成された距離情報を上記ピクセルに含まれているコンポーネントのアンチエイリアス強度にマッピングするマッピング手段とを備えた図形描画装置。
【請求項２】
テクスチャデータから色のグラデーション演算とテクスチャ演算を実施して、ピクセルに含まれているコンポーネントのカラー値を算出するカラー値算出手段を設け、マッピング手段がマッピング後のアンチエイリアス強度を用いて、上記カラー値算出手段により算出されたカラー値をアルファブレンドすることを特徴とする請求項１記載の図形描画装置。
【請求項３】
距離情報生成手段により生成された距離情報を濃度情報に変換する情報変換手段を設け、マッピング手段が上記距離情報生成手段により生成された距離情報の代わりに、上記情報変換手段により変換された濃度情報をピクセルに含まれているコンポーネントのアンチエイリアス強度にマッピングすることを特徴とする請求項１記載の図形描画装置。
【請求項４】
距離情報生成手段により生成された距離情報を用いて、ベクターデータをヒンティングするヒンティング手段を設けたことを特徴とする請求項１記載の図形描画装置。
【請求項５】
濃度バッファに対する濃度情報の書き込み発生状況を格納するフラグバッファを設けたことを特徴とする請求項３記載の図形描画装置。
【請求項６】
濃度バッファ及びフラグバッファをダブルバッファで構成することを特徴とする請求項５記載の図形描画装置。
【請求項７】
曲線分割手段が、ベクターデータが表現する曲線の頂点座標と制御点座標をマトリクス変換し、マトリクス変換後の曲線を微小線分に分割する曲線分割ステップと、距離情報生成手段が上記曲線分割手段により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイのピクセルに対応する距離情報を生成する距離情報生成ステップと、エッジラスタライズ手段が上記曲線分割手段により分割された微小線分のエッジ情報をラスタライズするエッジラスタライズステップと、マッピング手段が上記エッジラスタライズ手段によりラスタライズされたエッジ情報を用いて上記ピクセルの内外判定を実施し、上記内外判定の判定結果にしたがって上記距離情報生成手段により生成された距離情報を上記ピクセルに含まれているコンポーネントのアンチエイリアス強度にマッピングするマッピングステップとを備えた図形描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ベクター形式で定義されている２次元オブジェクトを距離フィールドに展開して、アンチエイリアス描画を行う図形描画装置及び図形描画方法に関するものである。
【背景技術】
【０００２】
ベクター形式で定義されている２次元オブジェクトは、ベジエ曲線やスプライン曲線などの数式で与えられるため、ビットマップ画像のように拡大縮小してもジャギーが発生することなく、高品質な図形描画ができるという特徴がある。
例えば、ＴｒｕｅＴｙｐｅのアウトラインフォントや、Ｗ３ＣによるＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）などは、このベクターグラフィックス処理の一形態である。
また、ベクターグラフィックスのローレベルＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）として、ＯｐｅｎＶＧの仕様が策定され、ＯｐｅｎＶＧに対応するグラフィックスライブラリやハードウェアが開発されている。【０００３】
ベクターグラフィックスでは、輪郭部のジャギーを滑らかに表示するために、アンチエイリアス描画が必要である。
アンチエイリアス描画の手法として、ピクセルを複数のサブピクセルに分割して、面積の占有率により輝度値を算出するスーパーサンプリング手法（例えば、特許文献１を参照）や、ピクセルの中心からの距離により輝度値を算出する手法（例えば、特許文献２を参照）などがある。【０００４】
スーパーサンプリングやマルチサンプルの手法では、ピクセルを更に小さなサブピクセルに分割し、それらのサブピクセルの平均値によりピクセルの値を決定する。
例えば、１ピクセルを４×４の１６個に分割し、それぞれの仮想的な１６個のサブピクセルに対して描画を行い、最終的に、それらのサブピクセルの平均値をピクセルの最終値とする。
そのため、この手法では、描画時間がサブピクセルの数に比例して増加することから、リアルタイムな高速描画が困難である。
したがって、高速描画を実現するには、サブピクセルの演算処理を並列に行う必要があり、ハードウェア規模が増加する。【０００５】
さらに、この手法では、輝度値を無段階に表現することができない（今回の場合では、１６階調しか表現することができない）。したがって、正確に描画されるべき輝度値が計算されないため、滑らかな輪郭線を描画することができない。その結果、ジャギーの発生を確実に防止することができず、表示画像が劣化することがある。【０００６】
一方、ピクセルの中心からの距離により輝度値を算出する手法では、ピクセル毎に直線までの距離を算出しなければならない。また、ベクター形式で定義された曲線などのアンチエイリアス描画では、曲線から微小線分に分割した後、多数の微小線分までの距離の中から最短であるものを選択しなくてはならない。
そのため、描画すべきピクセルの中心から分割された全ての微小線分までの距離をあらかじめ算出しておく必要がある。
以下の特許文献２では、直線のアンチエイリアスについてしか述べられていないが、オブジェクトが複雑な曲線である場合、距離算出の演算量が膨大になる。【０００７】
【特許文献１】ＰＣＴ  ＷＯ０３／０９６２７５Ａ２
【特許文献２】特開平６−２７４６４１号公報（段落番号［００１４］、図１）
【０００８】
従来の図形描画装置は以上のように構成されているので、リアルタイムな高速描画を実現するには、サブピクセルの演算処理を並列に行う必要があり、ハードウェア規模が増加する課題があった。また、滑らかな輪郭線を描画することができないため、ジャギーの発生を確実に防止することができず、表示画像が劣化することがある課題があった。【０００９】
この発明は上記のような課題を解決するためになされたもので、表示画像の劣化を招くことなく、正確なアンチエイリアス描画を少ない演算量で実現することができる図形描画装置及び図形描画方法を得ることを目的とする。
【発明の開示】
【００１０】
この発明に係る図形描画装置は、曲線分割手段により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイのピクセルに対応する距離情報を生成する距離情報生成手段と、曲線分割手段により分割された微小線分のエッジ情報をラスタライズするエッジラスタライズ手段とを設け、マッピング手段がエッジラスタライズ手段によりラスタライズされたエッジ情報を用いてピクセルの内外判定を実施し、その内外判定の判定結果にしたがって、距離情報生成手段により生成された距離情報をピクセルに含まれているコンポーネントのアンチエイリアス強度にマッピングするようにしたものである。
【００１１】
このことによって、表示画像の劣化を招くことなく、正確なアンチエイリアス描画を少ない演算量で実現することができる効果がある。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態１による図形描画装置を示す構成図である。
【図２】この発明の実施の形態１による図形描画方法を示すフローチャートである。
【図３】２次のベジエ曲線ＰＣＱを示す説明図である。
【図４】微小線分が直線セルとコーナーセルの組み合わせでラスタライズ処理される様子を示す説明図である。
【図５】直線セルを示す説明図である。
【図６】微小線分のエッジについての内外判定処理を示す説明図である。
【図７】星型のパスデータのエッジについての内外判定処理を示す説明図である。
【図８】直線セルが線幅の１／２とカットオフを加算した幅をもつ２つの長方形に分解されている様子を示す説明図である。
【図９】この発明の実施の形態２による図形描画装置を示す構成図である。
【図１０】カラー値算出部２２の具体的な処理内容を示すフロー図である。
【図１１】放射状型のグラデーションを示す説明図である。
【図１２】この発明の実施の形態３による図形描画装置を示す構成図である。
【図１３】フラグバッファにより高速な処理を可能とする図形描画装置を示す構成図である。
【図１４】自動ヒンティングの処理内容を示すフロー図である。
【発明を実施するための最良の形態】
【００１３】
以下、この発明をより詳細に説明するために、この発明を実施するための最良の形態について、添付の図面に従って説明する。
実施の形態１．
図１はこの発明の実施の形態１による図形描画装置を示す構成図であり、図において、ベクターデータ１は例えばベジエ曲線、スプライン曲線、直線などの任意のパスデータで構成された図形オブジェクト（任意閉曲面、任意ストローク）である。
曲線分割部２はベクターデータ１が表現する曲線（ここでの「曲線」は、いわゆる曲線のほかに、直線を含む概念である）の頂点座標と制御点座標をマトリクス変換し、マトリクス変換後の曲線を微小線分に分割する処理を実施する。なお、曲線分割部２は曲線分割手段を構成している。【００１４】
パラメータ設定部３はベクターデータ１を構成するパスデータに施されるアンチエイリアス強度を指定するアンチエイリアス設定パラメータとして、外部カットオフと内部カットオフを設定する処理を実施する。
距離情報生成部４はパラメータ設定部３により設定されたアンチエイリアス設定パラメータを用いて、曲線分割部２により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズし、ディスプレイの各ピクセル１２に対応する距離情報５（距離情報５は、“−１”から“１”までの範囲の値であり、輪郭線上の値は“０”の値で表現され、負の数はそのピクセルがオブジェクトの外部にあることを示す）を生成する処理を実施する。
距離バッファ６は距離情報生成部４により生成された距離情報５を格納するメモリである。
なお、パラメータ設定部３、距離情報生成部４及び距離バッファ６から距離情報生成手段が構成されている。【００１５】
エッジラスタライズ部７は曲線分割部２により分割された微小線分のエッジ情報をラスタライズし、ラスタライズ後のエッジ情報８をエッジバッファ９に格納する。
エッジバッファ９はエッジラスタライズ部７によりラスタライズされたエッジ情報８を格納するメモリである。
なお、エッジラスタライズ部７及びエッジバッファ９からエッジラスタライズ手段が構成されている。【００１６】
マッピング部１０はエッジバッファ９に格納されているエッジ情報８を用いて、各ピクセル１２の内外判定を実施し、その内外判定の判定結果にしたがって、距離バッファ６に格納されている距離情報５をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングする処理を実施する。
なお、マッピング部１０はマッピング手段を構成している。【００１７】
ピクセル１２は１つ又は複数のコンポーネント１３（例えば、「ＲＧＢ」型の出力デバイスの場合、通常、赤、青及び緑のコンポーネント）を含むことができる。
アンチエイリアシングされたピクセル強度は、イメージの一部として、ＣＲＴやＬＣＤのようなディスプレイ上に描画されることが可能である。【００１８】
図１の例では、図形描画装置の構成要素である曲線分割部２、パラメータ設定部３、距離情報生成部４、エッジラスタライズ部７及びマッピング部１０のそれぞれが専用のハードウェア（例えば、ＭＰＵを実装している半導体回路基板）で構成されているものを想定しているが、図形描画装置がコンピュータで構成される場合、曲線分割部２、パラメータ設定部３、距離情報生成部４、エッジラスタライズ部７及びマッピング部１０の処理内容を記述している図形描画プログラムをコンピュータのメモリに格納し、当該コンピュータのＣＰＵが当該メモリに格納されている図形描画プログラムを実行するようにしてもよい。
図２はこの発明の実施の形態１による図形描画方法を示すフローチャートである。【００１９】
次に動作について説明する。
曲線分割部２は、ベクターデータ１を入力すると、そのベクターデータ１が表現する曲線の頂点座標と制御点座標をマトリクス変換する（ステップＳＴ１）。
これにより、ベクターデータ１を構成するパスデータを拡大、縮小、回転、平行移動するなどの処理を実施することができる。
マトリクスとして、例えば、４×４のマトリクス行列を使用すれば、射影変換も可能となり、３次元的な鳥瞰表示の効果をだすことができる。【００２０】
曲線分割部２は、ベクターデータ１が表現する曲線の頂点座標と制御点座標をマトリクス変換すると、マトリクス変換後の曲線を微小線分に分割する（ステップＳＴ２）。
即ち、曲線分割部２は、マトリクス変換後の曲線を複数の微小線分に近似分割する処理を実施する。
分割数は、曲線の曲率や大きさにより決定されるものであり、視覚的に必要十分な最小の分割数が決定される。【００２１】
例えば、図３に示すような２次のベジエ曲線ＰＣＱの場合、ベジエ曲線は、パラメータｔ（０≦ｔ≦１）を用いて、以下のパラメトリック形式で定義される。ただし、Ｐ（ｘ０，ｙ０）、Ｑ（ｘ２，ｙ２）は頂点座標であり、Ｃ（ｘ１，ｙ１）は制御点座標である。
ｘ（ｔ）＝（１−ｔ）2×ｘ０＋２×（１−ｔ）×ｔ×ｘ１＋ｔ2×ｘ２
ｙ（ｔ）＝（１−ｔ）2×ｙ０＋２×（１−ｔ）×ｔ×ｙ１＋ｔ2×ｙ２
したがって、ベジエ曲線上の中点Ｍ（ｘｍ，ｙｍ）は、以下のようになる。
【数１】
2009090726.tif 000003
また、直線ＰＱの中点Ｈ（ｘｈ，ｙｈ）は、以下のようになる。
【数２】
2009090726.tif 000004
【００２２】
分割数Ｎは、中点Ｍ（ｘｍ，ｙｍ）から中点Ｈ（ｘｈ，ｙｈ）までの距離Ｄを用いて、次のように決定される。
ただし、Ｔは定数であり、Ｔ＝０とすれば、分割数は∞となり、真の曲線処理を行うことに等しい。
【数３】
2009090726.tif 000005
【００２３】
パラメータ設定部３は、ベクターデータ１を構成するパスデータに施されるアンチエイリアス強度を指定するアンチエイリアス設定パラメータとして、外部カットオフと内部カットオフを設定する。
例えば、カットオフ値を大きくすれば、輪郭部のボケを大きくすることができ、カットオフ値を小さくすれば、ボケを小さくすることができる。
カットオフ値を“０”にすれば、アンチエイリアスなしと同等であり、ジャギー付きの輪郭にすることができる。
また、外部カットオフ値を内部カットオフ値より大きくすれば、全体を太らせる効果を出すことができる。一方、外部カットオフ値を内部カットオフ値より小さくすれば、全体を細らせる効果を出すことができる。【００２４】
距離情報生成部４は、曲線分割部２がマトリクス変換後の曲線を微小線分に分割すると、パラメータ設定部３により設定されたアンチエイリアス設定パラメータを用いて、分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイの各ピクセル１２に対応する距離情報５を生成し、その距離情報５を距離バッファ６に格納する（ステップＳＴ３）。
ここで、距離情報５は、“−１”から“１”までの範囲の値であり、輪郭線上の値は“０”の値で表現され、負の数はそのピクセルがオブジェクトの外部にあることを示している。【００２５】
図４は微小線分が直線セルとコーナーセルの組み合わせでラスタライズ処理される様子を示す説明図である。
図４の例では、直線セルは、外部カットオフ側の長方形ＡＢＥＦと内部カットオフ側の長方形ＢＣＤＥから構成されている。
長方形ＡＢＥＦと長方形ＢＣＤＥの幅は、外部カットオフ値と内部カットオフ値を比較して、大きい方が選択される。
微小線分は、真の輪郭線でもあるので、微小線分上の点は、距離値が“０”として表現される。
このステージでは、オブジェクトの内外判定が未解決であるので、カットオフ側頂点の距離値が一律に“−１”とされている。【００２６】
したがって、長方形ＡＢＥＦの各頂点の距離値は“−１，０，０，−１”と定義され、長方形ＢＣＤＥの各頂点の距離値は“０，−１，−１，０”と定義される。
長方形ＡＢＤＥと長方形ＢＣＤＥが決定されたらラスタライズ処理によりピクセル単位に距離情報５（距離値）が生成される。
ラスタライズ処理では、予め、Ｘ方向及びＹ方向について、距離値の増分値を求め、スキャンライン方向へ線形補間処理することにより、高速に距離値を算出することができる。【００２７】
一方、コーナーセルは、外部カットオフ値又は内部カットオフ値を半径とする真円で構成される。
円の中心点における距離値は“０”、円周上の距離値は“−１”として表現される。
ピクセルから中心点までの距離は、下記の式を用いて算出することができるが、ルックアップテーブルを用いた近似計算により高速に算出することができる。
【数４】
2009090726.tif 000006
【００２８】
直線セルとコーナーセルは、お互い重なり合いながら距離バッファ６へラピクセル単位にスタライズされる。
そこで、最も大きな距離値を距離バッファ６に書き込むために、距離情報生成部４が距離値を距離バッファ６に書き込む際、ソースとデスティネーション間で距離値の大小比較を実施し、大きな方（０に近い方）の距離値を書き込むようにする。
このように、ベクターデータ１を構成するパスデータを形状に最適な分割数Ｎで微小線分へ分割し、その微小線分を直線セルとコーナーセルの組み合わせでラスタライズ処理することにより、アンチエイリアス処理に必要な正確な距離情報５を微小線分同士の連結部においても隙間なく高速に生成することができる。【００２９】
エッジラスタライズ部７は、曲線分割部２がマトリクス変換後の曲線を微小線分に分割すると、分割された微小線分のエッジ情報をラスタライズし、ラスタライズ後のエッジ情報８をエッジバッファ９に格納する（ステップＳＴ４）。
エッジ情報８のラスタライズは、例えば、ＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｌｙｚｅｒ：デジタル微分解析器）を用いて、微小線分の始点座標と終点座標から描画すべき座標を算出する。【００３０】
図６及び図７に示すように、エッジが上向きの場合は、エッジバッファ９に格納されているエッジデータ（ラスタライズが実施されている途中のエッジ情報８）に“＋１”の加算処理を実施し、エッジが下向きの場合は、エッジバッファ９に格納されているエッジデータに“−１”の減算処理を実施する。
例えば、同一座標におけるエッジの重なりが１２８回までと定義されている場合には、エッジバッファ９の深さ方向のビット幅として、８ｂｉｔ（２7＝１２８＋符号ビット）が必要である。【００３１】
マッピング部１０は、１個分のパスデータのラスタライズ処理が終了すると、距離バッファ６及びエッジバッファ９から、１ピクセルずつ、距離情報５とエッジ情報８の読み出しを行う。
マッピング部１０は、そのエッジ情報８を用いて、当該ピクセル１２の内外判定を実施し（ステップＳＴ５）、その内外判定の判定結果にしたがって、その距離情報５をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングする（ステップＳＴ６）。【００３２】
ピクセル１２の内外判定処理は、例えば、図６及び図７のように行われる。
図６は図４で示された微小線分のエッジを処理する場合を示し、図７は星型のパスデータのエッジを処理する場合を示している。
内外判定に用いるカウンタは、初期値が“０”であり、エッジバッファ９から読み出された値６０１，７０１がカウンタに対して順次加算される（６０２，７０２を参照）。【００３３】
塗りつぶしのワインディング規則がＮｏｎ−Ｚｅｒｏルール（非ゼロ規則）である場合、カウンタ値が“０”のピクセルは外部であると判断され、カウンタ値が“０”以外のピクセルは内部であると判断される（６０３，７０３を参照）。
一方、ワインディング規則がＥｖｅｎ−Ｏｄｄルール（奇偶規則）である場合、カウンタ値の最下位ビットが“０”のピクセルは外部であると判断され、最下位ビットが“１”のピクセルは内部であると判断される（６０４，７０４を参照）。
１スキャンライン分の処理が終了したら、カウンタは“０”にリセットされる。【００３４】
距離バッファ６から読み出された負の距離値は、内部と判定された領域については、図４（ｃ）に示すように、距離値の符号の反転処理が行われる。
外部カットオフ値と内部カットオフ値が異なる場合は、距離値“−１”から“１”までの範囲をアンチエイリアス強度１１に直接マッピングせず、カットオフ値に対応する有効な距離値の範囲をアンチエイリアス強度１１にマッピングする。
また、勾配直線に対して、例えば、ガンマ補正などにより表示ディスプレイに最適な輝度補正処理を施すようにする（図４（ｄ）を参照）。
このように、エッジバッファ９から読み出されたエッジ情報で内外判定処理を実施し、その内外判定結果に基づいて距離バッファ６から読み出された距離情報５の変換処理を実施することにより、アンチエイリアス強度１１を正確に算出することができる。【００３５】
なお、距離バッファ６及びエッジバッファ９のサイズは、全画面分の距離情報５及びエッジ情報８を格納することができる容量でもよいし、画面の一部の領域を格納することができる容量のどちらでもよい。
領域の一部を格納する場合には、分割された領域に応じて、距離情報生成部４及びエッジラスタライズ部７におけるラスタライズ処理と、マッピング部１０におけるマッピング処理を複数回実行する。
この場合、距離バッファ６及びエッジバッファ９のサイズが小容量で足りるため、高速アクセスが可能なメモリを使用することができるメリットがある。
これは、ＣＰＵで処理する場合は、オンチップキャッシュに収まる容量であるし、専用ハードウェアで処理する場合においても外部メモリを用いることなく、小容量の内蔵メモリのみで処理することができる。【００３６】
また、ベクターデータが任意パスデータで囲まれた閉曲面ではなく、任意パスデータで指定された線幅をもつストロークの場合、塗りつぶしのワインディング規則を含む内外判定処理が不要となる。
図８に示すように、直線セルを線幅の１／２とカットオフを加算した幅をもつ２つの長方形に分解し、距離値をラスタライズする。同様に、コーナーセルも線幅の１／２とカットオフ値を加算した半径をもつ円の距離値をラスタライズする。
その後、ラスタライズされた距離値だけを用いて、アンチエイリアス強度を算出する。したがって、例えば、骨格だけで定義されたストロークフォントを描画する場合は、エッジのラスタライズ処理を行わずにアンチエイリアス描画が可能で、エッジバッファも不要となる。【００３７】
以上で明らかなように、この実施の形態１によれば、曲線分割部２により分割された微小線分を直線セルとコーナーセルの組み合わせでラスタライズして、ディスプレイのピクセル１２に対応する距離情報５を生成する距離情報生成部４と、曲線分割部２により分割された微小線分のエッジ情報をラスタライズするエッジラスタライズ部７とを設け、マッピング部１０がエッジラスタライズ部７によりラスタライズされたエッジ情報８を用いてピクセル１２の内外判定を実施し、その内外判定の判定結果にしたがって、距離情報生成部４により生成された距離情報５をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングするように構成したので、表示画像の劣化を招くことなく、正確なアンチエイリアス描画を少ない演算量で実現することができる効果を奏する。【００３８】
実施の形態２．
図９はこの発明の実施の形態２による図形描画装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
テクスチャ読み出し部２１はテクスチャデータ（２次元オブジェクトに貼り付けるためのイメージデータ）の読み出し処理を実施する。
カラー値算出部２２はテクスチャ読み出し部２１により読み出されたテクスチャデータから色のグラデーション演算とテクスチャ演算を実施して、ピクセル１２に含まれているコンポーネント１３のカラー値２３を算出する処理を実施する。
なお、テクスチャ読み出し部２１及びカラー値算出部２２からカラー値算出手段が構成されている。【００３９】
マッピング部２４は図１のマッピング部１０と同様にして、距離情報５をアンチエイリアス強度にマッピングし、マッピング後のアンチエイリアス強度を用いて、カラー値算出部２２により算出されたカラー値２３をアルファブレンドする。
なお、マッピング部２４はマッピング手段を構成している。【００４０】
この実施の形態２は、上記実施の形態１を拡張して、より汎用なベクターグラフィックスの処理を行う手法を示したものである。
上記実施の形態１と同様にして、１個分のパスデータの距離情報とエッジ情報をラスタライズ処理した後、カラー値算出部２２がテクスチャ読み出し部２１により読み出されたテクスチャデータから色のグラデーション演算とテクスチャ演算を実施して、ピクセル１２に含まれているコンポーネント１３のカラー値２３を算出する。【００４１】
ここで、図１０はカラー値算出部２２の具体的な処理内容を示すフロー図である。
図１０において、１００では、テクスチャデータ１０２からサンプリングデータであるテクスチャカラー１０３を読み出すために必要なアドレス１０１をパスデータのＸ，Ｙ座標から計算する。Ｘ，Ｙ座標の計算にはテクスチャマトリクスの情報も使用される。
１１０ではカラーグラデーション演算を行う。グラデーションとしては、例えば、以下の種類がある。
・フラット型
・線形型
・放射状型【００４２】
フラット型は、単一カラーで塗りつぶす処理である。
線形型は、２点のカラー値が指定された場合、任意の点のカラーを２点からの距離で線形補間するものである。
放射状型は、図１１に示すように、中心点Ｃ（ｃｘ，ｃｙ）のカラー値、注目点Ｆ（ｆｘ，ｆｙ）のカラー値、半径ｒが指定された場合、任意の点Ｐ（ｘ，ｙ）におけるカラー値がＦＱ間の勾配ｄ１／ｄ２で算出される。【００４３】
１２０ではテクスチャデータ１０２から読み出された複数のテクスチャカラー１０３をフィルタ処理する。フィルタとしては、バイリニア、ミップマップ、バイキュービックなどが使用される。
１３０では１１０で算出されたグラデーションカラーと、１２０でフィルタ処理されたテクスチャカラーのブレンディング処理を行う。
ハードウェアで実装する場合、一般的にテクスチャデータ１０２からテクスチャカラー１０３を読み出すまでのレイテンシが大きい。
そのため、距離情報生成部４におけるラスタライズ処理の段階でテクスチャアドレスを算出し、テクスチャメモリに対してプリフェッチをかけることにより、アクセスレイテンシを隠蔽することが可能である。
また、テクスチャキャッシュを実装することにより、レイテンシを短縮することもできる。【００４４】
マッピング部２４は、図１のマッピング部１０と同様にして、距離情報５をアンチエイリアス強度にマッピングすると、マッピング後のアンチエイリアス強度を用いて、カラー値算出部２２により算出されたカラー値２３をアルファブレンドし、その結果を最終カラー２５とする。
このように、ベクターデータ１のアンチエイリアス描画において、任意図形に対してグラデーションカラーの表示とテクスチャイメージの貼り付けが可能となり、高品質なリアリスティックな表現を実現することができる効果を奏する。【００４５】
実施の形態３．
図１２はこの発明の実施の形態３による図形描画装置を示す構成図であり、図において、図９と同一符号は同一または相当部分を示すので説明を省略する。
情報変換部３１は距離情報生成部４により生成された距離情報５を濃度情報３２に変換し、その濃度情報３２を濃度バッファ３３に格納する処理を実施する。
濃度バッファ３３は情報変換部３１により変換された濃度情報３２を格納するメモリである。
なお、情報変換部３１及び濃度バッファ３３から情報変換手段が構成されている。【００４６】
マッピング部３４はエッジバッファ９に格納されているエッジ情報８を用いて、各ピクセル１２の内外判定を実施し、その内外判定の判定結果にしたがって、濃度バッファ３３に格納されている濃度情報３２をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングし、また、マッピング後のアンチエイリアス強度を用いて、カラー値算出部２２により算出されたカラー値２３をアルファブレンドする。
なお、マッピング部３４はマッピング手段を構成している。【００４７】
上記実施の形態１，２では、マッピング部１０，２４が距離バッファ６に格納されている距離情報５をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングするものについて示したが、その距離情報５を濃度情報３２に変換し、その距離情報５の代わりに、その濃度情報３２をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングするようにしてもよい。【００４８】
いかなるスケーリングにおいても、正確なアンチエイリアス描画を行うためには、十分な精度の距離情報５を確保する必要がある。
このため、距離バッファ６のフォーマットとして、固定小数点フォーマット、または、浮動小数点フォーマットのいずれを用いる場合でも、３２ｂｉｔ前後のデータビット長が必要となる。
一方、距離情報５の代わりに、ディスプレイに対応する濃度情報３２を用いれば、少ないデータビット長でも十分な精度を維持することができる。
例えば、ディスプレイの階調が２５６段階であれば、８ｂｉｔのデータビット長で正確なアンチエイリアス描画が可能である。【００４９】
そこで、この実施の形態３では、情報変換部３１が距離情報生成部４により生成された距離情報５を濃度情報３２に変換し、その濃度情報３２を濃度バッファ３３に格納する。
濃度バッファ３３に対する濃度情報３２の書き込み処理は、距離バッファ６と同様に、ソースとデスティネーション間で大小比較して、大きな方の濃度情報を書き込むようにする。【００５０】
マッピング部３４は、図１及び図９のマッピング部１０，２４と同様にして、各ピクセル１２の内外判定を実施すると、その内外判定の判定結果にしたがって、濃度バッファ３３に格納されている濃度情報３２をピクセル１２に含まれているコンポーネント１３のアンチエイリアス強度１１にマッピングする。また、図９のマッピング部２４と同様にして、マッピング後のアンチエイリアス強度を用いて、カラー値算出部２２により算出されたカラー値２３をアルファブレンドする。【００５１】
このように、距離情報５の代わりに濃度情報３２を用いることにより、距離バッファ６よりも、濃度バッファ３３の容量を大幅に抑えることができるようになり、ハードウェア規模や消費電力を小さくすることが可能になる。これにより、特に携帯電話や携帯型情報機器などでは、バッテリーの持続時間を長くすることができる効果を奏する。【００５２】
実施の形態４．
図１３はフラグバッファにより高速な処理を可能とする図形描画装置を示す構成図である。
この実施の形態４では、上記実施の形態３による図形描画装置を具現化して、フラグバッファにより高速な処理を可能とするものである。【００５３】
グリフエンジン５１は、ベクターデータ１を入力すると、そのベクターデータ１を構成するパスデータをマトリクス変換して、曲線を微小線分に分割する。
また、グリフエンジン５１は、分割した微小線分から直線セル、コーナーセル、エッジの頂点データ及びパラメータを算出する。
なお、グリフエンジン５１としては、ＤＳＰ，ＳＩＭＤプロセッサ、シェーダープロセッサ（３次元グラフィックスで使用される頂点シェーダ、ピクセルシェーダ）などのプログラマブルなプロセッサを使用することができる。【００５４】
また、グリフエンジン５１は、ヒンティング手段を構成しており、距離情報を活用することにより、小さい文字サイズでも視認性の良い高品質なフォント描画をするための自動ヒンティングを提供する。
ここで、図１４は自動ヒンティングの処理内容を示すフロー図である。【００５５】
ヒンティングでは、最初に、直線セルとコーナーセルからピクセルのグリッドに揃える処理を行う（１４０を参照）。
次に、距離勾配の方向を用いて、オブジェクトの左及び下のエッジ上のピクセルを検出する（１４１を参照）。
次に、検出したピクセルを濃くし（１４２を参照）、対向するエッジ上のピクセルを薄くすることによって（１４３を参照）、見かけ上のストローク重心を変えずに、左及び下のエッジ上のコントラストを高くする。
さらに、距離勾配を用いて、斜めの文字本体や細いセリフに対するコントラストを良くする。つまり、勾配方向の急激な変化を検出することにより、これらの薄い領域上のピクセルを濃くする（１４４を参照）。
なお、これらは、距離情報を用いて、視覚的なヒントを自動的に提供する一例にすぎない。距離情報は、最適な文字間隔及び一様なストローク重心を提供するためにも使用可能である。【００５６】
直線セルラスタライザ５２及びコーナーセルラスタライザ５３は、バッファＲＡＭ制御部５５を通して、濃度バッファ５６へラスタライズする。
エッジラスタライザ５４は、エッジバッファ５７へラスタライズする。
ラスタライズのピクセル移動順序は、例えば、図５に示すような直線セルの場合、真の輪郭線から左右両方向へ移動し、円の場合、Ｙ方向直径から左右両方向へ移動する。【００５７】
バッファＲＡＭ制御部５５は、濃度バッファ５６、エッジバッファ５７及びフラグバッファ５８のダブルバッファ制御を実施する。
ダブルバッファ方式を採用することにより、各ラスタライザからの描画とトラバースブレンダ６３による読み出しを並列に処理することが可能になる。
これにより、スループットを２倍に向上させることができる。【００５８】
フラグバッファ５８は、濃度バッファ５６への書き込み発生状況を低解像度で格納するためのバッファである。例えば、４×４ピクセルで１ｂｉｔの情報を保持し、この領域のピクセルに書き込みが発生したら、対応するビットを“１”とする。
そして、トラバースブレンダ６３が濃度バッファ５６から濃度情報を読み出すときは、描画された領域の必要なピクセル濃度情報のみを読み出すようにする。
これにより、濃度バッファ５６へ描画されたパスデータの領域を判定し、アンチエイリアス強度を効率良く算出することが可能になる。【００５９】
テクスチャキャッシュ６０は、テクスチャメモリ５９に格納されたテクセルデータをキャッシングし、アクセスレイテンシを低減する。
テクスチャエンジン６１は、テクスチャアドレスを算出して、テクスチャキャッシュ６０からサンプリングデータを読み出してフィルタ処理を行う。【００６０】
グラデーションエンジン６２は、カラーグラデーション演算とテクスチャブレンド処理を行う。
最後に、トラバースブレンダ６３は、濃度バッファ５６、エッジバッファ５７及びフラグバッファ５８からデータを読み出し、内外判定処理結果に基づいて最終カラー値を算出して、その最終カラー値をフレームバッファ６４に書き込む処理を行う。【００６１】
このように、グリフエンジン５１により自動ヒンティングが可能となり、従来必要であったフォントのヒント情報が不要となる。
また、濃度バッファ５６、エッジバッファ５７などをダブルバッファ構成にすることにより、描画と読み出しを並列に処理することが可能になり、スループットを向上させることができる。
さらに、フラグバッファ５８により必要な領域の情報のみを効率良く読み出して、アンチエイリアス強度の算出を高速に処理することが可能になる。
【産業上の利用可能性】
【００６２】
以上のように、この発明に係る図形描画装置は、ベクター形式で定義されている２次元オブジェクトを距離フィールドに展開して、正確なアンチエイリアス描画を少ない演算量で実現するものに適している。
【図１】
2009090726.tif 000007
【図２】
2009090726.tif 000008
【図３】
2009090726.tif 000009
【図４】
2009090726.tif 000010
【図５】
2009090726.tif 000011
【図６】
2009090726.tif 000012
【図７】
2009090726.tif 000013
【図８】
2009090726.tif 000014
【図９】
2009090726.tif 000015
【図１０】
2009090726.tif 000016
【図１１】
2009090726.tif 000017
【図１２】
2009090726.tif 000018
【図１３】
2009090726.tif 000019
【図１４】
2009090726.tif 000020
【国際調査報告】
2009090726.tif 000021
2009090726.tif 000022
2009090726.tif 000023
2009090726.tif 000024