(57)【要約】【課題】  直線の描画精度を劣化させることなく、任意の線幅を持つ直線のアンチエイリアス処理を高速化する。【解決手段】  シェーディングモジュールＭＰは、始点座標値Ａおよび濃度変化量Ｃｄに基づいてシェーディング部分にかかる各画素の濃度値Ｃｐｏｓを算出するとともに、シェーディングモジュールＭＮは、始点座標値Ｄおよび濃度変化量Ｃｄに基づいてシェーディング部分にかかる各画素の濃度値Ｃｎｅｇを算出し、減算器Ｇ１にて、これらの濃度値Ｃｐｏｓ、Ｃｎｅｇを減算することにより各画素の濃度値Ｃを算出する。【選択図】      図５
2005228109.tif 000002
【特許請求の範囲】
【請求項１】
直線の両端の座標値に基づいて前記直線の傾きを算出する傾き算出手段と、
前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するシェーディング長算出手段と、
前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出する非シェーディング長算出手段と、
前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出する中央点座標値算出手段と、
前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる端点座標値を算出する端点座標値算出手段と、
前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素の濃度値を算出するシェーディング処理出手段とを備えることを特徴とする直線描画装置。
【請求項２】
前記直線の傾きに基づいて１画素当たりの濃度変化量を算出する濃度変化量算出手段を備え、
前記シェーディング処理手段は、前記濃度変化量に基づいて前記シェーディング部分にかかる各画素の濃度値を算出することを特徴とする請求項１記載の直線描画装置。
【請求項３】
前記シェーディング処理手段は、
前記直線の上側輪郭部が前記スキャンラインと交わる第１の始点座標値に基づいて、前記直線の一方の側のシェーディング部分にかかる各画素の濃度値を算出する第１シェーディングモジュールと、
前記直線の下側輪郭部が前記スキャンラインと交わる第２の始点座標値に基づいて、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値を算出する第２シェーディングモジュールと、
前記第１シェーディングモジュールにより算出された濃度値と前記第２シェーディングモジュールにより算出された濃度値との合成結果に基づいて、前記直線の両側のシェーディング部分にかかる各画素の濃度値を算出する合成手段とを備えることを特徴とする請求項１または２記載の直線描画装置。
【請求項４】
前記シェーディング処理手段は、前記直線の片側にのみシェーディング処理を施すことを特徴とする請求項１または２記載の直線描画装置。
【請求項５】
直線の両端の座標値に基づいて前記直線の傾きを算出するステップと、
前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するステップと、
前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出するステップと、
前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出するステップと、
前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる端点座標値を算出するステップと、
前記直線の傾きに基づいて前記直線のシェーディング部分における１画素当たりの濃度変化量を算出するステップと、
前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素の濃度値を算出するステップとを備えることを特徴とする直線描画方法。
【請求項６】
前記端点座標値を算出するステップは、
前記直線の上側輪郭部が前記スキャンラインと交わる第１の始点座標値を算出するステップと、
前記直線の下側輪郭部が前記スキャンラインと交わる第２の始点座標値を算出するステップとを備え、
前記シェーディング部分にかかる各画素の濃度値を算出するステップは、
前記シェーディング長および前記第１の始点座標値に基づいて、前記直線の一方の側のシェーディング部分にかかる各画素の濃度値を算出するステップと、
前記シェーディング長および前記第２の始点座標値に基づいて、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値を算出するステップと、
前記直線の一方の側のシェーディング部分にかかる各画素の濃度値と、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値との合成結果に基づいて、前記直線の両側のシェーディング部分にかかる各画素の濃度値を算出するステップとを備えることを特徴とする請求項５記載の直線描画方法。
【請求項７】
前記シェーディング部分にかかる各画素の濃度値を算出するステップは、
前記始点座標値の小数部および前記直線の傾きに基づいて、前記始点座標値に対応する画素の濃度値を算出するステップと、
前記始点座標値と前記シェーディング長との加算結果に基づいて、前記シェーディング部分の終点座標値を算出するステップと、
前記終点座標値の小数部および前記直線の傾きに基づいて、前記終点座標値に対応する画素の濃度値を算出するステップと、
前記濃度変化量に基づいて、前記始点座標値に対応する画素と前記終点座標値に対応する画素との間の画素の濃度値を算出するステップとを備えることを特徴とする請求項６記載の直線描画方法。
【請求項８】
前記始点座標値の整数部および前記終点座標値の整数部に基づいて状態識別子を生成するステップと、
前記状態識別子に基づいて、前記始点座標値に対応する画素、前記終点座標値に対応する画素、またはその間の画素の濃度値を切り替えて出力するステップとを備えることを特徴とする請求項７記載の直線描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は直線描画装置および直線描画方法に関し、特に、アンチエイリアス処理された直線の描画方法に適用して好適なものである。
【背景技術】
【０００２】
従来の直線描画方法では、斜めに描画された直線の段差を滑らかにするために、アンチエイリアス処理を施す方法がある。このアンチエイリアス処理では、画素に占める直線の割合に応じて各画素の濃度値を変化させることにより、滑らかな斜線を描画することができる。
また、例えば、特許文献１には、直線の始点と終点を直線座標補間装置に与えることにより座標の補間を行い、直線の輝度を直線輝度補間装置に与えることにより輝度の補間を行い、直線座標補間装置により得られた直線座標と直線輝度補間装置により得られた輝度補間相対座標とを書き込み座標演算装置に与えて直線の両端を成す２つのピクセル座標を算出し、直線輝度補間装置により得られた描画輝度データと、書き込み座標演算装置により得られた描画座標データとに基づいて実際のピクセルを書き込むことにより、滑らかな斜線を高速描画する方法が開示されている。
【０００３】
また、例えば、特許文献２には、画像表示装置に描画する直線のアンチエイリアス処理を行うアンチエイリアスプロセッサにおいて、直線の始点および終点座標から、アンチエイリアス処理を行う範囲の始点および終点座標であるアンチエイリアス始点およびアンチエイリアス終点座標を生成して、シェーディング機能を有する画像記憶素子に出力することにより、アンチエイリアス処理された直線を高速描画する方法が開示されている。
【特許文献１】特開平７−１２１７３１号公報
【特許文献２】特開平１０−３３４２５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示された方法では、高速描画を実現するために、線幅が１画素分で固定され、任意の幅を持つ直線を描画することができないという問題があった。
また、特許文献２に開示された方法では、高速描画を実現するために、計算精度を落としているため、直線の傾きが整数または整数の約数にならないと、完全な直線とならない上、直線を正方形の軌跡としているため、傾きによって直線の幅が変わるという問題があった。
【０００５】
そこで、本発明の目的は、直線の描画精度を劣化させることなく、任意の線幅を持つ直線のアンチエイリアス処理を高速化することが可能な直線描画装置および直線描画方法を提供することである。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明の一態様に係る直線描画装置によれば、直線の両端の座標値に基づいて前記直線の傾きを算出する傾き算出手段と、前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するシェーディング長算出手段と、前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出する非シェーディング長算出手段と、前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出する中央点座標値算出手段と、前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる端点座標値を算出する端点座標値算出手段と、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素の濃度値を算出するシェーディング処理出手段とを備えることを特徴とする。
【０００７】
これにより、オーバーサンプリングを行うことなくシェーディング処理を行うことが可能となるとともに、直線を正円の軌跡として計算を行うことが可能となり、任意の線幅の直線を精度よく描画させることを可能としつつ、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画装置によれば、前記直線の傾きに基づいて１画素当たりの濃度変化量を算出する濃度変化量算出手段を備え、前記シェーディング処理手段は、前記濃度変化量に基づいて前記シェーディング部分にかかる各画素の濃度値を算出することを特徴とする。
【０００８】
これにより、前回算出された画素の濃度値に濃度変化量を累加算することで、今回算出される隣接画素の濃度値を算出することが可能となる。このため、計算精度を落とすことなく、シェーディング部分にかかる各画素の濃度値の算出過程を簡易化することが可能となり、滑らかな直線を高速に描画することができる。
また、本発明の一態様に係る直線描画装置によれば、前記シェーディング処理手段は、前記直線の上側輪郭部が前記スキャンラインと交わる第１の始点座標値に基づいて、前記直線の一方の側のシェーディング部分にかかる各画素の濃度値を算出する第１シェーディングモジュールと、前記直線の下側輪郭部が前記スキャンラインと交わる第２の始点座標値に基づいて、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値を算出する第２シェーディングモジュールと、前記第１シェーディングモジュールにより算出された濃度値と前記第２シェーディングモジュールにより算出された濃度値との合成結果に基づいて、前記直線の両側のシェーディング部分にかかる各画素の濃度値を算出する合成手段とを備えることを特徴とする。
【０００９】
これにより、シェーディングモジュールを複数設けることで、シェーディング処理を並列に行わせることが可能となり、アンチエイリアス処理の煩雑化を抑制しつつ、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画装置によれば、前記シェーディング処理手段は、前記直線の片側にのみシェーディング処理を施すことを特徴とする。
【００１０】
これにより、塗りつぶし図形の外側にのみシェーディング処理を施すことが可能となり、塗りつぶし図形の内側がシェーディング処理されることを防止することができる。このため、塗りつぶし図形の内側に濃度差が発生することを防止することが可能となり、図形の塗りつぶしを均一に行うことを可能としつつ、塗りつぶし図形の輪郭を滑らかにすることができる。
【００１１】
また、本発明の一態様に係る直線描画方法によれば、直線の両端の座標値に基づいて前記直線の傾きを算出するステップと、前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するステップと、前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出するステップと、前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出するステップと、前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる端点座標値を算出するステップと、前記直線の傾きに基づいて前記直線のシェーディング部分における１画素当たりの濃度変化量を算出するステップと、前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素の濃度値を算出するステップとを備えることを特徴とする。
【００１２】
これにより、直線を正円の軌跡として計算を行うことが可能となるとともに、前回算出された画素の濃度値に濃度変化量を加算することで、今回算出される隣接画素の濃度値を算出することが可能となり、線幅に制約を設けることなく、滑らかな直線を高速に描画することができる。
また、本発明の一態様に係る直線描画方法によれば、前記端点座標値を算出するステップは、前記直線の上側輪郭部が前記スキャンラインと交わる第１の始点座標値を算出するステップと、前記直線の下側輪郭部が前記スキャンラインと交わる第２の始点座標値を算出するステップとを備え、前記シェーディング部分にかかる各画素の濃度値を算出するステップは、前記シェーディング長および前記第１の始点座標値に基づいて、前記直線の一方の側のシェーディング部分にかかる各画素の濃度値を算出するステップと、前記シェーディング長および前記第２の始点座標値に基づいて、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値を算出するステップと、前記直線の一方の側のシェーディング部分にかかる各画素の濃度値と、前記直線の他方の側のシェーディング部分にかかる各画素の濃度値との合成結果に基づいて、前記直線の両側のシェーディング部分にかかる各画素の濃度値を算出するステップとを備えることを特徴とする。
【００１３】
これにより、アンチエイリアス処理の煩雑化を抑制しつつ、シェーディング処理を並列に行わせることが可能となり、アンチエイリアス処理のハードウェア化を図ることを可能として、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画方法によれば、前記シェーディング部分にかかる各画素の濃度値を算出するステップは、前記始点座標値の小数部および前記直線の傾きに基づいて、前記始点座標値に対応する画素の濃度値を算出するステップと、前記始点座標値と前記シェーディング長との加算結果に基づいて、前記シェーディング部分の終点座標値を算出するステップと、前記終点座標値の小数部および前記直線の傾きに基づいて、前記終点座標値に対応する画素の濃度値を算出するステップと、前記濃度変化量に基づいて、前記始点座標値に対応する画素と前記終点座標値に対応する画素との間の画素の濃度値を算出するステップとを備えることを特徴とする。
【００１４】
これにより、オーバーサンプリングを行うことなく、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となり、描画精度を劣化させることなく、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画方法によれば、前記始点座標値の整数部および前記終点座標値の整数部に基づいて状態識別子を生成するステップと、前記状態識別子に基づいて、前記始点座標値に対応する画素、前記終点座標値に対応する画素、またはその間の画素の濃度値を切り替えて出力するステップとを備えることを特徴とする。
【００１５】
これにより、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となるとともに、各画素の濃度値を座標値に対応させて出力させることが可能となる。このため、回路規模の増大を抑制しつつ、アンチエイリアス処理のハードウェア化を図ることが可能となり、コストアップを抑制しつつ、アンチエイリアス処理を高速化することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態に係る直線描画装置について図面を参照しながら説明する。
図１は、本発明の一実施形態に係る情報表示装置の概略構成を示すブロック図である。
図１において、情報表示装置には、電力を供給する電源３、電源３を制御する電源コントローラ２、ＣＰＵ１を動作させるプログラムや各種データなどを記憶するメモリ４、ハードディスクなどの外部記憶装置６、外部記憶装置６を制御する外部記憶コントローラ５、ディスプレイ９に表示される描画データを記憶するＶＲＡＭ７、情報を表示するディスプレイ９、ディスプレイ９を制御する表示コントローラ８、グラフィックデータを生成するグラフィックエンジン１０およびこれらの全体的な制御を行うＣＰＵ１が設けられている。
【００１７】
また、グラフィックエンジン１０には、楕円を描画する楕円描画部１１、曲線を描画する曲線描画部１２、文字を描画する文字描画部１３、多角形を描画する多角形描画部１４、直線を描画する直線描画部１５、図形の塗りつぶしを行う塗りつぶし部１６、楕円描画部１１、曲線描画部１２、文字描画部１３、多角形描画部１４、直線描画部１５および塗りつぶし部１６を制御するグラフィックエンジンコントローラ１７が設けられている。
【００１８】
また、直線描画部１５には、シェーディングされる画素の濃度変化量、シェーディング長およびシェーディング部分の端点座標値を算出するパラメータ算出部２１および直線の傾きに基づいてシェーディング処理を行うシェーディング処理部２２が設けられている。
ここで、ＶＲＡＭ７、表示コントローラ８およびグラフィックエンジンコントローラ１７は、バス１８を介して互いに接続されている。また、ＣＰＵ１、電源コントローラ２、メモリ４および外部記憶コントローラ５は、バス１９を介して互いに接続されている。
【００１９】
そして、直線をディスプレイ９に表示する場合、パラメータ算出部２１は、その直線の傾きに基づいて、シェーディングされる画素の濃度変化量、シェーディング長およびシェーディング部分の端点座標値を算出する。そして、シェーディング処理部２２は、パラメータ算出部２１にて算出された濃度変化量、シェーディング長および端点座標値に基づいて、シェーディング部分にかかる各画素の濃度値を算出することができる。
【００２０】
なお、以下の説明では計算を簡略化するために、描画色を１、背景色を０として説明する。また、描画色および背景色が指定されている時は、計算結果として得られる濃度Ｃに対し、以下の（１）式を適用することで、ＦＧＣを描画色、ＢＧＣを背景色とする中間色ｃｏｌを得ることができる。
ｃｏｌ＝（ｃ）ＦＧＣ＋（１−ｃ）ＢＧＣ                          ・・・（１）
図２は、図１の直線描画部１５で描画される直線のパラメータを説明する図である。
【００２１】
図２において、直線Ｌの始点Ｌｓ（Ｓｘ、Ｓｙ）および終点Ｌｅ（Ｅｘ、Ｅｙ）が与えられた場合、以下の（２）式および（３）式を適用することで、ｘ軸方向の増分ｄｘおよびｙ軸方向の増分ｄｙを求める。
ｄｘ＝Ｅｘ−Ｓｘ                                                ・・・（２）
ｄｙ＝Ｅｙ−Ｓｙ                                                ・・・（３）
ただし、Ｓｘ、Ｓｙ、Ｅｘ、Ｅｙはそれぞれ、始点Ｌｓのｘ座標値、始点Ｌｓのｙ座標値、終点Ｌｅのｘ座標値、終点Ｌｅのｙ座標値である。
【００２２】
そして、直線を描画する場合、シェーディング処理部２２は、以下に示すように、ｘ軸方向の増分ｄｘおよびｙ軸方向の増分ｄｙの値によって場合分けすることができる。
（ａ）ｄｘ＜０の場合
直線Ｌの始点Ｌｓと終点Ｌｅとを交換し、以下に説明する方法をそのまま利用することができる。
（ｂ）ｄｘ＜｜ｄｙ｜の場合
ｘ軸とｙ軸とを交換すれば、以下に説明する方法をそのまま利用することができる。以下、ｄｘ≧｜ｄｙ｜とする。
（ｃ）｜ｄｙ｜＝０かつｄｘ＝０の場合
与えられた条件では直線Ｌを形成することができないので、直線Ｌを描画する必要はない。
（ｄ）｜ｄｙ｜＝０かつｄｘ≠０の場合
直線Ｌはｘ軸に平行となる。この場合、描画する直線Ｌの幅Ｗと始点Ｌｓのｙ座標値Ｓｙとから、以下の（４）式および（５）式に従って、直線Ｌの上端のｙ座標値Ｙｔｏｐと下端のｙ座標値Ｙｂｔｍとを求める。
【００２３】
Ｙｔｏｐ＝Ｓｙ＋Ｗ／２                                          ・・・（４）
Ｙｂｔｍ＝Ｓｙ−Ｗ／２                                          ・・・（５）
次に、以下の（６）式および（７）式に従って、直線Ｌの上端の濃度値Ｃｔｏｐと下端の濃度値Ｃｂｔｍとを求める。
Ｃｔｏｐ＝Ｙｔｏｐ−ｆｌｏｏｒ（Ｙｔｏｐ）                      ・・・（６）
Ｃｂｔｍ＝ｃｅｉｌ（Ｙｂｔｍ）−Ｙｂｔｍ                        ・・・（７）
ただし、ｆｌｏｏｒ（Ｙｔｏｐ）は、Ｙｔｏｐを超えない最大の整数値、ｃｅｉｌ（Ｙｂｔｍ）は、Ｙｂｔｍを下回らない最小の整数値である。
【００２４】
次に、ｆｌｏｏｒ（Ｙｂｔｍ）のラインを濃度値Ｃｂｔｍで、ｆｌｏｏｒ（Ｙｔｏｐ）のラインを濃度値Ｃｔｏｐで、ｆｌｏｏｒ（Ｙｂｔｍ）とｆｌｏｏｒ（Ｙｔｏｐ）の間のラインを濃度値１で、長さｄｘだけ描画する。
ただし、ｆｌｏｏｒ（Ｙｂｔｍ）＝ｆｌｏｏｒ（Ｙｔｏｐ）の場合、下端の濃度値Ｃｂｔｍを以下の（８）式に従って求め、ｆｌｏｏｒ（Ｙｂｔｍ）のラインを濃度値Ｃｂｔｍで描画する。
【００２５】
Ｃｂｔｍ＝Ｙｔｏｐ−Ｙｂｔｍ                                    ・・・（８）
（ｅ）ｄｙ≠０の場合
以下の算出過程に基づいて各定数を算出し、直線Ｌのかかる全てのスキャンラインに対して描画を行うことができる。
図３は、アンチエイリアス処理された直線の一例を示す図である。
【００２６】
図３において、図１のシェーディング処理部２２は、直線Ｌの始点Ｌｓ、終点Ｌｅおよび幅Ｗが与えられると、直線Ｌのかかる全てのスキャンラインに対してシェーディング処理を行うことができる。
ここで、直線Ｌの上側輪郭部ＬｕのシェーディングＳｕおよび下側輪郭部ＬｄのシェーディングＳｄを別個に求め、これらのシェーディングＳｕ、Ｓｄを合成することにより、直線Ｌのシェーディング処理を行うことができる。この際、直線Ｌの上側輪郭部ＬｕのシェーディングＳｕを行うシェーディングモジュールと、直線Ｌの上側輪郭部ＬｄのシェーディングＳｄを行うシェーディングモジュールをそれぞれ用意し、これらのシェーディングモジュールを並列動作させることにより、アンチエイリアス処理を高速化することができる。
【００２７】
図４は、アンチエイリアス処理される直線のパラメータを説明する図である。
図４において、図１のパラメータ算出部２１は、（２）式および（３）式からｘ軸方向の増分ｄｘおよびｙ軸方向の増分ｄｙが求まると、以下の（９）式および（１０）式にそれぞれ従って、直線Ｌの傾きｋおよび直線Ｌの長さｈを算出する。
ｋ＝ｄｙ／ｄｘ                                                  ・・・（９）
ｈ＝√（ｄｘ2＋ｄｙ2）                                        ・・・（１０）
なお、直線Ｌの長さｈの算出には、例えば、「Ｊｏｎ  Ｂｒｎｔｌｅｙ．Ｍｏｒｅ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｐｅａｒｌｓ．Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ，１９８８．ｐ．１５６」に記載されているアルゴリズムを用いることができる。
【００２８】
次に、パラメータ算出部２１は、以下の（１１）式に従って、直線Ｌのシェーディング部分とスキャンラインＳＬとが交わる部分のシェーディング長ｓを算出する。なお、シェーディング長ｓは、ｙ軸方向に１画素分だけ移動する間に、ｘ軸方向に移動した距離に等しい。
ｓ＝ｄｘ／ｄｙ                                                ・・・（１１）
次に、パラメータ算出部２１は、以下の（１２）式に従って、直線Ｌの非シェーディング部分とスキャンラインＳＬとが交わる部分の非シェーディング長ｆを算出する。
【００２９】
ｆ＝（ｈ／ｄｙ）Ｗ−ｓ                                          ・・・（１２）
次に、パラメータ算出部２１は、以下の（１３）式に従って、直線Ｌの中央がスキャンラインＳＬと交わる中央点座標値Ｃを算出する。
Ｃ＝Ｓｘ＋（ｄｘ／ｄｙ）（ｙ−Ｓｙ）                            ・・・（１３）
なお、ｙは注目するスキャンラインＳＬのｙ座標値、中央点座標値Ｃは直線Ｌの中央点のｘ座標値を意味する。
【００３０】
次に、パラメータ算出部２１は、以下の（１４）式および（１５）式に従って、直線Ｌの上側輪郭部Ｌｕおよび下側輪郭部ＬｄがスキャンラインＳＬとそれぞれ交わる端点座標値Ａ、Ｄを算出する。
Ａ＝Ｃ−ｓ−ｆ／２                                            ・・・（１４）
Ｄ＝Ａ＋ｓ＋ｆ                                                ・・・（１５）
なお、端点座標値Ａは、各スキャンラインＳＬにかかる上側シェーディング部分の始点のｘ座標値、端点座標値Ｄは、各スキャンラインＳＬにかかる下側シェーディング部分の始点のｘ座標値を意味する。
【００３１】
次に、パラメータ算出部２１は、以下の（１６）式に従って、直線Ｌのシェーディング部分における１画素当たりの濃度変化量Ｃｄを算出する。
Ｃｄ＝ｋ                                                      ・・・（１６）
そして、パラメータ算出部２１にて濃度変化量Ｃｄを算出されると、シェーディング処理部２２は、濃度変化量Ｃｄに基づいてシェーディング部分にかかる各画素の濃度値を算出することができる。
【００３２】
図５は、図１のシェーディング処理部２２の概略構成を示すブロック図である。
図５において、シェーディング処理部２２には、シェーディングモジュールＭＰ、ＭＮ、レジスタＲ８、Ｒ９および減算器Ｇ１が設けられている。そして、パラメータ算出部２１にて算出された濃度変化量Ｃｄ、直線Ｌの傾きｋ、始点座標値Ａ、シェーディング長ｓおよび始点座標値Ｄは、レジスタＲ１〜Ｒ５にそれぞれ格納される。また、レジスタＲ６には、各ラインの描画処理の開始点を指定する座標初期値Ｘ０が格納され、レジスタＲ７には、各ラインの描画処理を開始させるリセット信号Ｒｅｓｅｔが格納される。
【００３３】
そして、シェーディングモジュールＭＰには、濃度変化量Ｃｄ、直線Ｌの傾きｋ、始点座標値Ａ、シェーディング長ｓ、座標初期値Ｘ０およびリセット信号Ｒｅｓｅｔが入力され、シェーディングモジュールＭＰには、濃度変化量Ｃｄ、直線Ｌの傾きｋ、始点座標値Ｄ、シェーディング長ｓ、座標初期値Ｘ０およびリセット信号Ｒｅｓｅｔが入力される。  そして、シェーディングモジュールＭＰは、シェーディング長ｓおよび始点座標値Ａに基づいてシェーディング部分にかかる画素を特定する。そして、濃度変化量Ｃｄに基づいてシェーディング部分にかかる各画素の濃度値Ｃｐｏｓを算出し、その濃度値ＣｐｏｓをレジスタＲ８に格納する。また、シェーディングモジュールＭＮは、シェーディング長ｓおよび始点座標値Ｄに基づいてシェーディング部分にかかる画素を特定する。そして、濃度変化量Ｃｄに基づいてシェーディング部分にかかる各画素の濃度値Ｃｎｅｇを算出し、その濃度値ＣｎｅｇをレジスタＲ９に格納する。
【００３４】
そして、レジスタＲ８、Ｒ９にそれぞれ格納された各画素の濃度値Ｃｐｏｓ、Ｃｎｅｇは減算器Ｇ１に出力される。そして、減算器Ｇ１にて、これらの濃度値Ｃｐｏｓ、Ｃｎｅｇを各画素ごとに減算することにより各画素の濃度値Ｃを算出し、その濃度値ＣをレジスタＲ１０に格納する。また、シェーディングモジュールＭＰは、濃度値Ｃが算出された各画素の座標値Ｘを算出し、その座標値ＸをレジスタＲ１１に格納する。
【００３５】
これにより、濃度変化量Ｃｄを累加算することで、各スキャンラインＳＬにかかる各画素の濃度値Ｃｐｏｓ、Ｃｎｅｇを順次算出することが可能となる。このため、計算精度を落とすことなく、シェーディング部分にかかる各画素の濃度値Ｃｐｏｓ、Ｃｎｅｇの算出過程を簡易化することが可能となり、滑らかな直線を高速に描画することができる。
さらに、シェーディングモジュールＭＰ、ＭＮを複数設けることで、シェーディング処理を並列に行わせることが可能となり、アンチエイリアス処理の煩雑化を抑制しつつ、アンチエイリアス処理を高速化することができる。
【００３６】
図６は、本発明の一実施形態に係るアンチエイリアス処理を説明する図である。
図６において、シェーディングモジュールＭＰでは、始点座標値Ａを起点としてスキャンラインＳＬにかかる各画素の濃度値Ｃｐｏｓが算出される。また、シェーディングモジュールＭＮでは、始点座標値Ｄを起点としてスキャンラインＳＬにかかる各画素の濃度値Ｃｎｅｇが算出される。そして、減算器Ｇ１にて、これらの濃度値Ｃｐｏｓ、Ｃｎｅｇを各画素ごとに減算することにより、アンチエイリアス処理された各画素の濃度値Ｃを算出することができる。
【００３７】
図７は、図２のシェーディングモジュールＭＰ、ＭＮの概略構成を示すブロック図である。
図７において、シェーディングモジュールＭＰ、ＭＮには、定数計算モジュールＭ１、状態遷移モジュールＭ２、濃度値計算モジュールＭ３およびレジスタＲ２１〜Ｒ２８がそれぞれ設けられている。なお、シェーディングモジュールＭＰでは、レジスタＲ３´には、始点座標値Ｐとして始点座標値Ａが格納され、レジスタＲ１０´には、濃度値Ｃとして濃度値Ｃｐｏｓが格納される。また、シェーディングモジュールＭＮでは、レジスタＲ３´には、始点座標値Ｐとして始点座標値Ｄが格納され、レジスタＲ１０´には、濃度値Ｃとして濃度値Ｃｎｅｇが格納される。
【００３８】
そして、定数計算モジュールＭ１には、直線Ｌの傾きｋ、始点座標値Ｐおよびシェーディング長ｓが入力される。そして、定数計算モジュールＭ１は、始点座標値Ｐの整数部に基づいて始点座標整数値Ｐｉを算出し、その始点座標整数値ＰｉをレジスタＲ２１に格納する。また、定数計算モジュールＭ１は、始点座標値Ｐの小数部および傾きｋに基づいて濃度開始値Ｃｔを算出し、その濃度開始値ＣｔをレジスタＲ２２に格納する。また、定数計算モジュールＭ１は、始点座標値Ｐの小数部および傾きｋに基づいて始点濃度値Ｃｓを算出し、その始点濃度値ＣｓをレジスタＲ２３に格納する。また、定数計算モジュールＭ１は、始点座標値Ｐ、シェーディング長ｓおよび傾きｋに基づいて終点濃度値Ｃｅを算出し、その終点濃度値ＣｅをレジスタＲ２４に格納する。また、定数計算モジュールＭ１は、始点座標値Ｐおよびシェーディング長に基づいて終点座標整数値Ｅｉを算出し、その終点座標整数値ＥｉをレジスタＲ２５に格納する。
【００３９】
また、状態遷移モジュールＭ２には、始点座標整数値Ｐｉ、終点座標整数値Ｅｉ、座標初期値Ｘ０およびリセット信号Ｒｅｓｅｔが入力される。また、状態遷移モジュールＭ２には、状態遷移モジュールＭ２から出力される状態識別子Ｓｔａｔおよび座標値Ｘが戻される。そして、状態遷移モジュールＭ２は、始点座標整数値Ｐｉ、終点座標整数値Ｅｉ、座標初期値Ｘ０、リセット信号Ｒｅｓｅｔ、座標値Ｘおよび状態識別子Ｓｔａｔに基づいて状態識別子Ｓｔａｔを更新し、その状態識別子ＳｔａｔをレジスタＲ２６に格納する。また、状態遷移モジュールＭ２は、座標初期値Ｘ０、リセット信号Ｒｅｓｅｔおよび座標値Ｘに基づいて座標値Ｘを更新し、その座標値ＸをレジスタＲ２７に格納する。
【００４０】
また、濃度値計算モジュールＭ３には、濃度変化量Ｃｄ、濃度開始値Ｃｔ、始点濃度値Ｃｓ、終点濃度値Ｃｅおよび状態識別子Ｓｔａｔが入力される。また、濃度値計算モジュールＭ３には、濃度値計算モジュールＭ３から出力されるフィードバック値Ｃｐが戻される。そして、濃度値計算モジュールＭ３は、フィードバック値Ｃｐに濃度変化量Ｃｄを加算することにより、フィードバック値Ｃｐを更新し、そのフィードバック値ＣｐをレジスタＲ２８に格納する。また、濃度値計算モジュールＭ３は、状態識別子Ｓｔａｔに基づいて、濃度値０、濃度値１、始点濃度値Ｃｓ、終点濃度値Ｃｅまたは濃度開始値Ｃｔとフィードバック値Ｃｐとの加算結果のいずれかを選択し、選択された濃度値ＣをレジスタＲ１０´に格納する。
【００４１】
図８は、本発明の一実施形態に係る濃度値の算出方法を説明する図である。
図８において、リセット信号Ｒｅｓｅｔが１となると、図７の状態遷移モジュールＭ２は、状態識別子（ステータス）Ｓｔａｔを“０００”に設定するとともに、座標値Ｘとして座標初期値Ｘ０を出力する。そして、状態識別子Ｓｔａｔが“０００”になると、濃度値計算モジュールＭ３は、濃度値Ｃとして０を出力することにより、座標初期値Ｘ０で特定される画素の濃度値Ｃを０とする。そして、１画素分の濃度値Ｃが出力されると、状態遷移モジュールＭ２は、座標値Ｘを１だけインクリメントし、座標値Ｘが始点座標整数値Ｐｉと一致するかどうか比較する。そして、座標値Ｘが始点座標整数値Ｐｉと一致しない間は、状態識別子Ｓｔａｔとして“０００”を出力する。そして、状態識別子Ｓｔａｔが“０００”の間は、濃度値計算モジュールＭ３は、座標値Ｘで特定される画素の濃度値Ｃとして０を出力する。
【００４２】
そして、例えば、座標値ＸがＸ＋２となった時に座標値Ｘが始点座標整数値Ｐｉと一致したものとすると、状態遷移モジュールＭ２は、状態識別子Ｓｔａｔを“００１”に設定する。そして、状態識別子Ｓｔａｔが“００１”になると、濃度値計算モジュールＭ３は、濃度値Ｃとして始点濃度値Ｃｓを出力することにより、座標値Ｘで特定される画素の濃度値Ｃを始点濃度値Ｃｓとする。なお、始点濃度値Ｃｓは、（Ｐｉ＋１−Ｐ）を底辺とし、斜辺の傾きが直線Ｌの傾きｋで規定される三角形の面積に基づいて算出することができる。
【００４３】
そして、始点座標整数値Ｐｉで特定される画素の濃度値Ｃが出力されると、状態遷移モジュールＭ２は、座標値Ｘを１だけインクリメントし、座標値Ｘが終点座標整数値Ｅｉと一致するかどうか比較する。そして、座標値Ｘが終点座標整数値Ｅｉと一致しない場合、座標値ＸがＸ＋３の時の状態識別子Ｓｔａｔとして“０１０”を出力する。そして、状態識別子Ｓｔａｔが“０１０”になると、濃度値計算モジュールＭ３は、濃度値Ｃとして濃度開始値Ｃｔに濃度変化量Ｃｄを加算した値を出力することにより、座標値Ｘで特定される画素の濃度値Ｃを（Ｃｔ＋Ｃｄ）とする。なお、濃度開始値Ｃｔは、（Ｃｓ−Ｃｓｎｅｇ）の計算を行うことで求めることができる。また、Ｃｓｎｅｇは、（Ｐ−Ｐｉ）を底辺とし、斜辺の傾きが直線Ｌの傾きｋで規定される三角形の面積に基づいて算出することができる。
【００４４】
そして、座標値Ｘが終点座標整数値Ｅｉと一致しない間は、状態遷移モジュールＭ２は、座標値Ｘを１だけインクリメントしながら、状態識別子Ｓｔａｔとして“０１０”を出力し続ける。そして、状態識別子Ｓｔａｔが“０１０”の間は、濃度値計算モジュールＭ３は、前回求めた画素の濃度値Ｃをフィードバック値Ｃｐとして、このフィードバック値Ｃｐに濃度変化量Ｃｄを順次加算することで、座標値Ｘで特定される画素の濃度値Ｃを（Ｃｐ＋Ｃｄ）とする。
【００４５】
そして、例えば、座標値ＸがＸ＋８となった時に座標値Ｘが終点座標整数値Ｅｉと一致したものとすると、状態遷移モジュールＭ２は、状態識別子Ｓｔａｔを“０１１”に設定する。そして、状態識別子Ｓｔａｔが“０１１”になると、濃度値計算モジュールＭ３は、濃度値Ｃとして終点濃度値Ｃｅを出力することにより、座標値Ｘで特定される画素の濃度値Ｃを終点濃度値Ｃｅとする。なお、終点濃度値Ｃｅは、（Ｅ−Ｅｉ＋１）を底辺とし、斜辺の傾きが直線Ｌの傾きｋで規定される三角形の面積に基づいて算出することができる。
【００４６】
そして、終点座標整数値Ｅｉで特定される画素の濃度値Ｃが出力されると、状態遷移モジュールＭ２は、座標値Ｘを１だけインクリメントし、状態識別子Ｓｔａｔとして“１００”を出力する。そして、状態識別子Ｓｔａｔが“１００”の間は、濃度値計算モジュールＭ３は、座標値Ｘで特定される画素の濃度値Ｃとして１を出力する。
これにより、オーバーサンプリングを行うことなく、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となり、描画精度を劣化させることなく、アンチエイリアス処理を高速化することができる。
【００４７】
図９は、図７の定数計算モジュールＭ１の概略構成を示すブロック図である。
図９において、定数計算モジュールＭ１には、整数部小数部分離器Ｇ１１、Ｇ２０、シフト演算器Ｇ１２、Ｇ１８、減算器Ｇ１３、Ｇ１５、Ｇ２３、乗算器Ｇ１４、Ｇ１６、Ｇ１７、Ｇ２１、Ｇ２２、加算器Ｇ１９およびレジスタＲ３１〜Ｒ４５が設けられている。そして、整数部小数部分離器Ｇ１１には始点座標値Ｐが入力され、シフト演算器Ｇ１８には傾きｋが入力され、加算器Ｇ１９には始点座標値Ｐおよびシェーディング長ｓが入力される。
【００４８】
そして、始点座標値Ｐが整数部小数部分離器Ｇ１１に入力されると、整数部小数部分離器Ｇ１１は始点座標値Ｐを整数部Ｐｉと小数部Ｐｆに分離し、始点座標値Ｐの整数部Ｐｉを取り出す。そして、始点座標値Ｐの整数部ＰｉはレジスタＲ３１に格納され、レジスタＲ３１に格納された始点座標値Ｐの整数部Ｐｉは、始点座標整数値ＰｉとしてレジスタＲ２１に格納される。
【００４９】
また、傾きｋがシフト演算器Ｇ１８に入力されると、シフト演算器Ｇ１８にて、傾きｋのシフト演算が行われることにより、傾きｋが１／２倍され、そのシフト演算結果ｋ／２がレジスタＲ３９に格納される。そして、レジスタＲ３９に格納されたシフト演算結果ｋ／２は、乗算器Ｇ１４、Ｇ１７、Ｇ２２に出力される。
また、整数部小数部分離器Ｇ１１は、始点座標値Ｐから分離された小数部ＰｆをレジスタＲ３２に格納する。そして、レジスタＲ３２に格納された始点座標値Ｐの小数部Ｐｆは、シフト演算器Ｇ１２に出力される。そして、シフト演算器Ｇ１２にて、始点座標値Ｐの小数部Ｐｆのシフト演算が行われることにより、始点座標値Ｐの小数部Ｐｆが２倍され、そのシフト演算結果２ＰｆがレジスタＲ３３に格納される。
【００５０】
そして、レジスタＲ３３に格納されたシフト演算結果２Ｐｆは、減算器Ｇ１３に出力される。そして、減算器Ｇ１３にて、シフト演算結果２Ｐｆが１から減算され、その減算結果（１−２Ｐｆ）がレジスタＲ３４に格納される。
そして、レジスタＲ３４に格納された減算結果（１−２Ｐｆ）は、乗算器Ｇ１４に出力される。そして、乗算器Ｇ１４にて、レジスタＲ３４から出力された減算結果（１−２Ｐｆ）とレジスタＲ３９から出力されたシフト演算結果ｋ／２とが乗算され、その乗算結果（（１−２Ｐｆ）＊ｋ／２が）レジスタＲ３５に格納される。そして、レジスタＲ３５に格納された乗算結果（（１−２Ｐｆ）＊ｋ／２）は、濃度開始値ＣｔとしてレジスタＲ２１に格納される。
【００５１】
また、レジスタＲ３２に格納された始点座標値Ｐの小数部Ｐｆは、減算器Ｇ１５に出力される。そして、減算器Ｇ１５にて、始点座標値Ｐの小数部Ｐｆが１から減算され、その減算結果（１−Ｐｆ）がレジスタＲ３６に格納される。
そして、レジスタＲ３６に格納された減算結果（１−Ｐｆ）は、乗算器Ｇ１６に出力される。そして、乗算器Ｇ１６にて、レジスタＲ３６から出力された減算結果（１−Ｐｆ）が自乗され、その乗算結果（１−Ｐｆ）2がレジスタＲ３７に格納される。
【００５２】
そして、レジスタＲ３７に格納された乗算結果（１−２Ｐｆ）2は、乗算器Ｇ１７に出力される。そして、乗算器Ｇ１７にて、レジスタＲ３７から出力された乗算結果（１−２Ｐｆ）2とレジスタＲ３９から出力されたシフト演算結果ｋ／２とが乗算され、その乗算結果（（１−２Ｐｆ）2＊ｋ／２）がレジスタＲ３８に格納される。そして、レジスタＲ３８に格納された乗算結果（（１−２Ｐｆ）2＊ｋ／２）は、始点濃度値ＣｓとしてレジスタＲ２３に格納される。
【００５３】
また、始点座標値Ｐおよびシェーディング長ｓが加算器Ｇ１９に入力されると、加算器Ｇ１９にて、始点座標値Ｐとシェーディング長ｓとが加算され、その加算結果（Ｐ＋ｓ）がレジスタＲ４０に格納される。そして、レジスタＲ４０に格納された加算結果（Ｐ＋ｓ）は整数部小数部分離器Ｇ２０に入力され、整数部小数部分離器Ｇ２０にて、加算結果（Ｐ＋ｓ）が整数部Ｅｉと小数部Ｅｆに分離される。そして、加算結果（Ｐ＋ｓ）から分離された小数部ＥｆはレジスタＲ４１に格納される。
【００５４】
そして、レジスタＲ４１に格納された加算結果（Ｐ＋ｓ）の小数部Ｅｆは、乗算器Ｇ２１に出力される。そして、乗算器Ｇ２１にて、加算結果（Ｐ＋ｓ）の小数部Ｅｆが自乗され、その乗算結果Ｅｆ2がレジスタＲ４２に格納される。
そして、レジスタＲ４２に格納された乗算結果Ｅｆ2は、乗算器Ｇ２２に出力される。そして、乗算器Ｇ２２にて、レジスタＲ４２から出力された乗算結果Ｅｆ2とレジスタＲ３９から出力されたシフト演算結果ｋ／２とが乗算され、その乗算結果（Ｅｆ2＊ｋ／２）がレジスタＲ４３に格納される。
【００５５】
そして、レジスタＲ４３に格納された乗算結果（Ｅｆ2＊ｋ／２）は、減算器Ｇ２３に出力される。そして、減算器Ｇ２３にて、乗算結果（Ｅｆ2＊ｋ／２）が１から減算され、その減算結果（１−（Ｅｆ2＊ｋ／２））がレジスタＲ４４に格納される。そして、レジスタＲ４４に格納された減算結果（１−（Ｅｆ2＊ｋ／２））が終点濃度値ＣｅとしてレジスタＲ２４に格納される。
【００５６】
また、整数部小数部分離器Ｇ２０にて分離された整数部ＥｉはレジスタＲ４５に格納され、レジスタＲ４５に格納された整数部Ｅｉは、終点座標整数値ＥｉとしてレジスタＲ２５に格納される。
これにより、濃度値Ｃの計算に用いられる始点座標整数値Ｐｉ、濃度開始値Ｃｔ、始点濃度値Ｃｓ、終点濃度値Ｃｅおよび終点座標整数値Ｅｉをハードウェアにて算出させることが可能となるとともに、これらの算出処理を並列に行うことが可能となり、アンチエイリアス処理を高速化することができる。
【００５７】
図１０は、図７の状態遷移モジュールＭ２の概略構成を示すブロック図である。
図１０において、状態遷移モジュールＭ２には、下位１ビット分離器Ｇ３１、加算器Ｇ３２、シフト演算器Ｇ３３、論理和演算器Ｇ３４、Ｇ３５およびインクリメント器Ｇ３６、セレクタＨ１〜Ｈ４およびレジスタＲ６１〜Ｒ６８が設けられている。なお、状態識別子Ｓｔａｔは３ビット分の２進数で表現され、レジスタＲ６３、Ｒ６４、Ｒ６７には“０００”が格納され、レジスタＲ６５、Ｒ６６には“００１”が格納されているものとする。
【００５８】
そして、下位１ビット分離器Ｇ３１には状態識別子Ｓｔａｔが入力され、セレクタＨ３には始点座標整数値Ｐｉが入力され、セレクタＨ４には終点座標整数値Ｅｉが入力され、セレクタＨ１にはリセット信号Ｒｅｓｅｔが入力され、セレクタＨ２にはリセット信号Ｒｅｓｅｔおよび座標初期値Ｘ０が入力され、インクリメント器Ｇ３６には座標値Ｘが入力される。また、レジスタＲ６３に格納されている“０００”はセレクタＨ１に入力され、レジスタＲ６４に格納されている“０００”およびレジスタＲ６５に格納されている“００１”はセレクタＨ３に入力され、レジスタＲ６７に格納されている“０００”およびレジスタＲ６６に格納されている“００１”はセレクタＨ４に入力される。
【００５９】
そして、インクリメント器Ｇ３６に座標値Ｘが入力されると、座標値Ｘを１だけインクリメントし、インクリメントされた座標値ＸをセレクタＨ２に出力する。そして、セレクタＨ２は、リセット信号Ｒｅｓｅｔが１の場合、座標値Ｘ´として座標初期値Ｘ０を選択し、その座標値Ｘ´をレジスタＲ６８に格納する。一方、リセット信号Ｒｅｓｅｔが１でない場合、インクリメントされた座標値Ｘ´を座標値Ｘとして選択し、その座標値Ｘ´をレジスタＲ６８に格納する。そして、レジスタＲ６８に格納された座標値Ｘ´はレジスタＲ２７に格納され、座標値Ｘとしてインクリメント器Ｇ３６に戻される。また、レジスタＲ６８に格納された座標値Ｘ´はセレクタＨ３、Ｈ４にも出力される。
【００６０】
一方、下位１ビット分離器Ｇ３１に状態識別子Ｓｔａｔが入力されると、下位１ビット分離器Ｇ３１は、状態識別子Ｓｔａｔの下位１ビットを分離し、状態識別子Ｓｔａｔの下位１ビットをレジスタＲ６２に格納するとともに、状態識別子Ｓｔａｔの上位２ビットをレジスタＲ６１に格納する。
そして、レジスタＲ６２に格納された状態識別子Ｓｔａｔの下位１ビットはシフト演算器Ｇ３３に入力される。そして、シフト演算器Ｇ３３にて、状態識別子Ｓｔａｔの下位１ビットのシフト演算が行われ、そのシフト演算結果が加算器Ｇ３２に出力される。また、レジスタＲ６１に格納された状態識別子Ｓｔａｔの上位２ビットは加算器Ｇ３２に出力される。
【００６１】
そして、状態識別子Ｓｔａｔの下位１ビットのシフト演算結果と、状態識別子Ｓｔａｔの上位２ビットが加算器Ｇ３２に出力されると、これらの値が加算され、この加算結果がセレクタＨ１に出力される。
そして、セレクタＨ１は、リセット信号Ｒｅｓｅｔが１の場合、レジスタＲ６３に格納されている“０００”を選択し、“０００”を論理和演算器Ｇ３４に出力する。一方、リセット信号Ｒｅｓｅｔが１でない場合、加算器Ｇ３２から出力された加算結果を選択し、加算器Ｇ３２から出力された加算結果を論理和演算器Ｇ３４に出力する。
【００６２】
また、セレクタＨ３は、レジスタＲ６８から出力された座標値Ｘ´を始点座標整数値Ｐｉと比較する。そして、座標値Ｘ´が始点座標整数値Ｐｉと一致する場合、レジスタＲ６５に格納されている“００１”を選択し、“００１”を論理和演算器Ｇ３５に出力する。一方、座標値Ｘ´が始点座標整数値Ｐｉと一致しない場合、レジスタＲ６５に格納されている“０００”を選択し、“０００”を論理和演算器Ｇ３５に出力する。
【００６３】
また、セレクタＨ４は、レジスタＲ６８から出力された座標値Ｘ´を終点座標整数値Ｅｉと比較する。そして、座標値Ｘ´が終点座標整数値Ｅｉと一致する場合、レジスタＲ６６に格納されている“００１”を選択し、“００１”を論理和演算器Ｇ３５に出力する。一方、座標値Ｘ´が終点座標整数値Ｅｉと一致しない場合、レジスタＲ６７に格納されている“０００”を選択し、“０００”を論理和演算器Ｇ３５に出力する。
【００６４】
そして、セレクタＨ３にて選択された値と、セレクタＨ４にて選択された値とが論理和演算器Ｇ３５に入力されると、論理和演算器Ｇ３５にて、セレクタＨ３にて選択された値と、セレクタＨ４にて選択された値との論理和演算が行われ、その論理和演算結果が論理和演算器Ｇ３４に出力される。
そして、セレクタＨ１にて選択された値と、論理和演算器Ｇ３４から出力された値とが論理和演算器Ｇ３４に入力されると、論理和演算器Ｇ３４にて、セレクタＨ１にて選択された値と、論理和演算器Ｇ３４から出力された値との論理和演算が行われ、その論理和演算結果が状態識別子Ｓｔａｔ´としてレジスタＲ２６に格納される。そして、レジスタＲ２６に格納された状態識別子Ｓｔａｔ´は、状態識別子Ｓｔａｔとして下位１ビット分離器Ｇ３１に戻される。
【００６５】
これにより、座標値Ｘが始点座標整数値Ｐｉと一致した時に状態識別子Ｓｔａｔを“００１”に遷移させ、座標値Ｘが終点座標整数値Ｅｉと一致した時に状態識別子Ｓｔａｔを“０１１”に遷移させ、座標値Ｘが始点座標整数値Ｐｉと終点座標整数値Ｅｉとの間にある場合、状態識別子Ｓｔａｔを“０１０”として一定に保つことができる。このため、状態識別子Ｓｔａｔに基づいて、始点濃度値Ｃｓ、終点濃度値Ｃｅまたは濃度開始値Ｃｔとフィードバック値Ｃｐとの加算結果のいずれかを選択させることが可能となり、状態遷移モジュールＭ２のハードウェア化を可能として、アンチエイリアス処理を高速化することができる。
【００６６】
図１１は、図７の濃度値計算モジュールＭ３の概略構成を示すブロック図である。
図１１において、濃度値計算モジュールＭ３には、加算器Ｇ４１、下位２ビット目選択器Ｇ４２、セレクタＨ１１、Ｈ１２およびレジスタＲ７１〜Ｒ７３が設けられている。なお、レジスタＲ７１には“０”が格納され、レジスタＲ７２には“１”が格納されているものとする。
【００６７】
そして、加算器Ｇ４１にはフィードバック値Ｃｐおよび濃度変化量Ｃｄが入力され、セレクタＨ１２には濃度開始値Ｃｔが入力され、セレクタＨ１１には始点濃度値Ｃｓおよび終点濃度値Ｃｅが入力され、下位２ビット目選択器Ｇ４２には状態識別子Ｓｔａｔが入力される。また、レジスタＲ７１に格納されている“０”およびレジスタＲ７２に格納されている“１”はセレクタＨ１１に入力される。
【００６８】
そして、加算器Ｇ４１にフィードバック値Ｃｐおよび濃度変化量Ｃｄが入力されると、加算器Ｇ４１にて、フィードバック値Ｃｐと濃度変化量Ｃｄとが加算され、その加算結果がセレクタＨ１１、Ｈ１２に入力される。
また、下位２ビット目選択器Ｇ４２に状態識別子Ｓｔａｔが入力されると、下位２ビット目選択器Ｇ４２にて、状態識別子Ｓｔａｔの下位２ビット目が選択される。そして、下位２ビット目選択器Ｇ４２にて選択された状態識別子Ｓｔａｔの下位２ビット目は、レジスタＲ７３に格納され、レジスタＲ７３に格納された状態識別子Ｓｔａｔの下位２ビット目はセレクタＨ１２に出力される。
【００６９】
そして、状態識別子Ｓｔａｔの下位２ビット目が０の場合、セレクタＨ１２は濃度開始値Ｃｔを選択して、その濃度開始値ＣｔをレジスタＲ２８に格納する。一方、状態識別子Ｓｔａｔの下位２ビット目が１の場合、加算器Ｇ４１から出力された加算結果を選択して、その加算結果をフィードバック値Ｃｐ´としてレジスタＲ２８に格納する。そして、レジスタＲ２８に格納されたフィードバック値Ｃｐ´は、フィードバック値Ｃｐとして加算器Ｇ４１に出力される。
【００７０】
また、セレクタＨ１１に状態識別子Ｓｔａｔが入力されると、セレクタＨ１１は、状態識別子Ｓｔａｔの状態を判断する。そして、状態識別子Ｓｔａｔが“０００”の場合、レジスタＲ７１に格納されている濃度値０がセレクタＨ１１にて選択され、濃度値０が濃度値ＣとしてレジスタＲ１０´に格納される。また、状態識別子Ｓｔａｔが“００１”の場合、レジスタＲ２２に格納されている始点濃度値ＣｓがセレクタＨ１１にて選択され、始点濃度値Ｃｓが濃度値ＣとしてレジスタＲ１０´に格納される。また、状態識別子Ｓｔａｔが“０１０”の場合、加算器Ｇ４１から出力されたフィードバック値Ｃｐと濃度変化量Ｃｄとの加算結果がセレクタＨ１１にて選択され、フィードバック値Ｃｐと濃度変化量Ｃｄとの加算結果が濃度値ＣとしてレジスタＲ１０´に格納される。また、状態識別子Ｓｔａｔが“０１１”の場合、レジスタＲ２３に格納されている終点濃度値ＣｅがセレクタＨ１１にて選択され、終点濃度値Ｃｅが濃度値ＣとしてレジスタＲ１０´に格納される。また、状態識別子Ｓｔａｔが“１００”の場合、レジスタＲ７２に格納されている濃度値１がセレクタＨ１１にて選択され、濃度値１が濃度値ＣとしてレジスタＲ１０´に格納される。
【００７１】
これにより、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となるとともに、各画素の濃度値Ｃを座標値Ｘに対応させて出力させることが可能となる。このため、回路規模の増大を抑制しつつ、アンチエイリアス処理のハードウェア化を図ることが可能となり、コストアップを抑制しつつ、アンチエイリアス処理を高速化することができる。
【００７２】
図１２は、本発明の一実施形態に係る片側シェーディング方法を説明する図である。
図１２において、図２のシェーディングモジュールＭＰ、ＭＮにてシェーディング処理を行わせる場合、状態識別子Ｓｔａｔが“０００”の時に濃度値０を選択させ、状態識別子Ｓｔａｔが“００１”の時に始点濃度値Ｃｓを選択させ、状態識別子Ｓｔａｔが“０１０”の時にフィードバック値Ｃｐと濃度変化量Ｃｄとの加算結果を選択させ、状態識別子Ｓｔａｔが“０１１”の時に終点濃度値Ｃｅを選択させ、状態識別子Ｓｔａｔが“１００”の時に濃度値１を選択させることができる。
【００７３】
一方、シェーディングモジュールＭＰのシェーディング処理を省略する場合、状態識別子Ｓｔａｔが“０００”の時に濃度値０を選択させ、状態識別子Ｓｔａｔが“００１”、“０１０”、“０１１”または“１００”の時に濃度値１を選択させることができる。また、シェーディングモジュールＭＮのシェーディング処理を省略する場合、状態識別子Ｓｔａｔが“０００”、“００１”、“０１０”または“０１１”の時に濃度値０を選択させ、状態識別子Ｓｔａｔが“１００”の時に濃度値１を選択させることができる。
【００７４】
これにより、塗りつぶし図形の外側にのみシェーディング処理を施すことが可能となり、塗りつぶし図形の内側がシェーディング処理されることを防止することができる。このため、塗りつぶし図形の内側に濃度差が発生することを防止することが可能となり、図形の塗りつぶしを均一に行うことを可能としつつ、塗りつぶし図形の輪郭を滑らかにすることができる。
【図面の簡単な説明】
【００７５】
【図１】本発明の一実施形態に係る情報表示装置の概略構成を示すブロック図。
【図２】図１の直線描画部１５で描画される直線のパラメータを説明する図。
【図３】アンチエイリアス処理された直線の一例を示す図
【図４】アンチエイリアス処理される直線のパラメータを説明する図。
【図５】図１のシェーディング処理部２２の概略構成を示すブロック図。
【図６】本発明の一実施形態に係るアンチエイリアス処理を説明する図。
【図７】図５のシェーディングモジュールの概略構成を示すブロック図。
【図８】本発明の一実施形態に係る濃度値の算出方法を説明する図。
【図９】図７の定数計算モジュールＭ１の概略構成を示すブロック図。
【図１０】図７の状態遷移モジュールＭ２の概略構成を示すブロック図。
【図１１】図７の濃度値計算モジュールＭ３の概略構成を示すブロック図。
【図１２】本発明の一実施形態に係る片側シェーディング方法を説明する図。
【符号の説明】
【００７６】
１  ＣＰＵ、２  電源コントローラ、３  電源、４  メモリ、５  外部記憶コントローラ、６  外部記憶装置、７  ＶＲＡＭ、８  表示コントローラ、９  ディスプレイ、１０  グラフィックエンジン、１１  楕円描画部、１２  曲線描画部、１３  文字描画部、１４  多角形描画部、１５  直線描画部、１６  塗りつぶし部、１７  グラフィックエンジンコントローラ、１８、１９  バス、２１  パラメータ算出部、２２  シェーディング処理部、Ｒ１〜Ｒ１１、Ｒ３´、Ｒ１０´、Ｒ２１〜Ｒ２８、Ｒ３１〜Ｒ４５、Ｒ６１〜Ｒ６８、Ｒ７１〜Ｒ７３  レジスタ、ＭＰ、ＭＮ  シェーディングモジュール、Ｇ１、Ｇ１３、Ｇ１５、Ｇ２３  減算器、Ｍ１  定数計算モジュール、Ｍ２  状態遷移モジュール、Ｍ３  濃度値計算モジュール、Ｇ１１、Ｇ２０  整数部小数部分離器、Ｇ１２、Ｇ１８、Ｇ３３  シフト演算器、Ｇ１４、Ｇ１６、Ｇ１７、Ｇ２１、Ｇ２２  乗算器、Ｇ１９、Ｇ３２、Ｇ４１  加算器、Ｇ３１  下位ビット分離器、Ｇ３４、Ｇ３５  論理和演算器、Ｇ３６  インクリメント器、Ｈ１〜Ｈ４、Ｈ１１、Ｈ１２  セレクタ、Ｇ４２  下位２ビット目選択器
【図１】
2005228109.tif 000003
【図２】
2005228109.tif 000004
【図３】
2005228109.tif 000005
【図４】
2005228109.tif 000006
【図５】
2005228109.tif 000007
【図６】
2005228109.tif 000008
【図７】
2005228109.tif 000009
【図８】
2005228109.tif 000010
【図９】
2005228109.tif 000011
【図１０】
2005228109.tif 000012
【図１１】
2005228109.tif 000013
【図１２】
2005228109.tif 000014