(57)【要約】【課題】  経路ストロークを遂行する方法及びその装置を提供する。【解決手段】経路レンダリングを行う方法によれば、エイリアシングが発生するか否かによってテクスチャを生成し、プリミティブの外郭に沿ってテクスチャをマッピングする。【選択図】      図１
2017054504.tif 000002
【特許請求の範囲】
【請求項１】
経路ストロークを遂行する方法において、
経路データを利用して、経路に含まれたプリミティブに基づいて、エイリアシングが発生するか否かを判断する段階と、
前記判断の結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する段階と、
前記プリミティブの外郭に沿って、前記テクスチャをマッピングする段階と、を含む方法。
【請求項２】
前記判断する段階は、
前記経路データを利用して演算された前記プリミティブの勾配に基づいて、前記エイリアシングが発生するか否かを判断することを特徴とする請求項１に記載の方法。
【請求項３】
前記判断する段階は、
前記プリミティブの勾配が、０または無限大値を有する場合には、前記エイリアシングが発生しないと判断し、前記プリミティブの勾配が、０でも無限大値でもない場合には、前記エイリアシングが発生すると判断することを特徴とする請求項２に記載の方法。
【請求項４】
前記生成する段階は、
前記エイリアシングが発生しない場合には、ストロークカラーを利用して、第１テクスチャを生成し、前記エイリアシングが発生する場合に、は前記ストロークカラー、及び前記ストロークカラーにグラジエント効果が適用されたカラーを利用して、第２テクスチャを生成することを特徴とする請求項１ないし３のうち何れか１項に記載の方法。
【請求項５】
前記生成する段階は、
前記エイリアシングが発生しない場合には、ストローク幅に対応する第１テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストローク幅より長い第２テクスチャを生成することを特徴とする請求項１ないし３のうち何れか１項に記載の方法。
【請求項６】
前記第２テクスチャは、
前記プリミティブの勾配に対応する角度及び前記ストローク幅に基づいて生成されることを特徴とする請求項５に記載の方法。
【請求項７】
前記生成する段階は、
前記ストローク幅に対応する部分には、ストロークカラーを表示し、前記第２テクスチャの幅から前記ストローク幅が除かれた部分には、前記ストロークカラーにグラジエント効果が適用されたカラーを表示することにより、前記第２テクスチャを生成することを特徴とする請求項５に記載の方法。
【請求項８】
前記マッピングする段階は、
前記プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、前記テクスチャを順次にマッピングすることを特徴とする請求項１ないし７のうち何れか１項に記載の方法。
【請求項９】
前記所定の領域は、
前記プリミティブに含まれたピクセルを基準にして、前記テクスチャの幅に対応する幅を有する領域を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記マッピングする段階は、
前記プリミティブの勾配に基づいて決定された方向によって、前記テクスチャをマッピングすることを特徴とする請求項１ないし７のうち何れか１項に記載の方法。
【請求項１１】
前記マッピングする段階は、
前記プリミティブの勾配が、０または無限大値を有する場合には、前記プリミティブに垂直である方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配の絶対値が０より大きくて１より小さい場合には、水平方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配が、０でも無限大値でもなく、前記プリミティブの勾配の絶対値が１以上である場合には、垂直方向に沿って、前記テクスチャをマッピングすることを特徴とする請求項１０に記載の方法。
【請求項１２】
カーブに対応する前記経路を、複数のプリミティブに分割する段階をさらに含み、
前記判断する段階は、前記複数のプリミティブそれぞれに基づいて、エイリアシングが発生するか否かを判断することを特徴とする請求項１に記載の方法。
【請求項１３】
前記分割する段階は、
De_Casteljau法則に基づいて、前記カーブに対応する経路を、前記複数のプリミティブに分割することを特徴とする請求項１２に記載の方法。
【請求項１４】
請求項１ないし１３のうちいずれか１項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【請求項１５】
経路ストロークを遂行する装置において、
経路データを利用して、経路に含まれたプリミティブに基づいて、エイリアシングが発生するか否かを判断し、前記判断の結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する生成部と、
前記プリミティブの外郭に沿って、前記テクスチャをマッピングするマッピング部と、を含む装置。
【請求項１６】
前記生成部は、
前記経路データを利用して演算された前記プリミティブの勾配に基づいて、前記エイリアシングが発生するか否かを判断することを特徴とする請求項１５に記載の装置。
【請求項１７】
前記生成部は、
前記プリミティブの勾配が、０または無限大値を有する場合には、前記エイリアシングが発生しないと判断し、前記プリミティブの勾配が、０でも無限大値でもない場合には、前記エイリアシングが発生すると判断することを特徴とする請求項１６に記載の装置。
【請求項１８】
前記生成部は、
前記エイリアシングが発生しない場合には、ストロークカラーを利用して、第１テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストロークカラー及び前記ストロークカラーにグラジエント効果が適用されたカラーを利用して、第２テクスチャを生成することを特徴とする請求項１５ないし１７のうち何れか１項に記載の装置。
【請求項１９】
前記生成部は、
前記エイリアシングが発生しない場合には、ストローク幅に対応する第１テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストローク幅より長い第２テクスチャを生成することを特徴とする請求項１５ないし１７のうち何れか１項に記載の装置。
【請求項２０】
前記第２テクスチャは、
前記プリミティブの勾配に対応する角度及び前記ストローク幅に基づいて生成されることを特徴とする請求項１９に記載の装置。
【請求項２１】
前記生成部は
前記ストローク幅に対応する部分には、ストロークカラーを表示し、前記第２テクスチャの幅から、前記ストローク幅が除かれた部分には、前記ストロークカラーにグラジエント効果が適用されたカラーを表示することにより、前記第２テクスチャを生成することを特徴とする請求項１９に記載の装置。
【請求項２２】
前記マッピング部は、
前記プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、前記テクスチャを順次にマッピングすることを特徴とする請求項１５ないし２１のうち何れか１項に記載の装置。
【請求項２３】
前記所定の領域は、
前記プリミティブに含まれたピクセルを基準にして、前記テクスチャの幅に対応する幅を有する領域を含むことを特徴とする請求項２２に記載の装置。
【請求項２４】
前記マッピング部は、
前記プリミティブの勾配に基づいて決定された方向によって、前記テクスチャをマッピングすることを特徴とする請求項１５ないし２１のうち何れか１項に記載の装置。
【請求項２５】
前記マッピング部は、
前記プリミティブの勾配が、０または無限大値を有する場合には、前記プリミティブに垂直である方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配の絶対値が０より大きくて１より小さい場合には、水平方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配が、０でも無限大値でもなく、前記プリミティブの勾配の絶対値が１以上である場合には、垂直方向に沿って、前記テクスチャをマッピングすることを特徴とする請求項２４に記載の装置。
【請求項２６】
カーブに対応する前記経路を、複数のプリミティブに分割する分割部をさらに含み、
前記テクスチャを生成する生成部は、前記複数のプリミティブそれぞれに基づいて、エイリアシングが発生するか否かを判断することを特徴とする請求項１５ないし２５のうち何れか１項に記載の装置。
【請求項２７】
前記分割部は、
De_Casteljau法則に基づいて、前記カーブに対応する経路を、前記複数のプリミティブに分割することを特徴とする請求項２６に記載の装置。
【請求項２８】
グラフィック処理装置と連結された中央処理装置において、
経路データを利用して、経路に含まれたプリミティブに基づいてエイリアシングが発生するか否かを判断し、前記グラフィック処理装置からテクスチャを受信し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングし、
前記グラフィック処理装置は、前記中央処理装置の要請によって、前記テクスチャを生成する中央処理装置。
【請求項２９】
前記テクスチャは、前記中央処理装置に保存されることを特徴とする請求項２８に記載の中央処理装置。
【請求項３０】
前記テクスチャは、前記グラフィック処理装置に保存されることを特徴とする請求項２８に記載の中央処理装置。
【請求項３１】
中央処理装置と連結されたグラフィック処理装置において、
経路データを利用して、経路に含まれたプリミティブに基づいてエイリアシングが発生するか否かを判断し、前記判断の結果に基づいて、テクスチャを生成し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングするグラフィック処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路ストロークを遂行する方法及びその装置に関する。
【背景技術】
【０００２】
ベクトルグラフィックス（vector  graphics）または経路レンダリング（path  rendering）を遂行する場合、グラフィック処理装置（ＧＰＵ：graphics  processing  unit）の加速性能を向上させるための方法が研究されている。経路レンダリングの場合、入力データが三角形によって構成されず、コマンド（command）と頂点（vertex）との組み合わせによって構成されている。従って、経路レンダリングを行うとき、グラフィック処理装置の加速性能を向上させ難い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、経路ストロークを遂行する方法及びその装置を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。
【０００４】
本実施形態がなす技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
【課題を解決するための手段】
【０００５】
一側面による経路ストロークを遂行する方法は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する段階と、前記判断結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する段階と、前記プリミティブの外郭に沿って、前記テクスチャをマッピングする段階と、を含む。「発生いかん」は「発生したか否か」又は「発生の有無」等と言及されてよい。
【０００６】
他の側面によるコンピュータで読み取り可能な記録媒体は、前述の方法をコンピュータで実行させるためのプログラムを記録した記録媒体を含む。
【０００７】
さらに他の側面による経路ストロークを遂行する装置は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記判断結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する生成部と、前記プリミティブの外郭に沿って、前記テクスチャをマッピングするマッピング部と、を含む。
【０００８】
さらに他の側面によるグラフィック処理装置（ＧＰＵ）と連結された中央処理装置（ＣＰＵ）は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記グラフィック処理装置からテクスチャを受信し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングし、前記グラフィック処理装置は、前記中央処理装置の要請によって、前記テクスチャを生成する。
【０００９】
さらに他の側面による中央処理装置と連結されたグラフィック処理装置は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記判断結果に基づいて、テクスチャを生成して、前記プリミティブの外郭に沿って、前記テクスチャをマッピングする。
【発明の効果】
【００１０】
本発明のストローク装置によれば、既生成のテクスチャを利用して、ストローク作業を遂行することにより、ストローク作業に要求される演算量が減少するだけではなく、短時間内にストローク作業が遂行される。
【００１１】
また、該ストローク装置によれば、エイリアシング発生いかんに基づいて、適応的にテクスチャを生成することにより、ストローク作業とアンチエイリアシング作業とが同時に遂行される。
【図面の簡単な説明】
【００１２】
【図１】一実施形態によるストローク装置の一例を示す構成図である。
【図２】（Ａ）は一実施形態によるストロークの一例について説明するための図、（Ｂ）は一実施形態によるフィル（fill）の一例について説明するための図面である。
【図３】一実施形態によるストローク装置が動作する一例を示したフローチャートである。
【図４】一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する一例について説明するためのフローチャートである。
【図５】一実施形態による、プリミティブの勾配とエイリアシング発生との相関関係について説明するための図面である。
【図６】一実施形態による第１テクスチャの一例について説明するための図面である。
【図７】一実施形態による第２テクスチャの一例について説明するための図面である。
【図８】一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する他の例について説明するためのフローチャートである。
【図９】一実施形態による生成部が第２テクスチャを生成する一例について説明するための図面である。
【図１０】一実施形態による生成部が第３テクスチャを生成する一例について説明するための図面である。
【図１１】一実施形態による生成部が第４テクスチャを生成する一例について説明するための図面である。
【図１２】一実施形態によるマッピング部が動作する一例について説明するための図面である。
【図１３Ａ】一実施形態によるマッピング部が動作する他の例について説明するための図面である。
【図１３Ｂ】一実施形態によるマッピング部が動作する他の例について説明するための図面である。
【図１４】一実施形態によるストローク装置の他の例を図示した構成図である。
【図１５】（Ａ）〜（Ｄ）は一実施形態による分割部が動作する一例について説明するための図面である。
【図１６】一実施形態による経路ストロークを遂行する方法を示すフローチャートである。
【図１７】一実施形態による経路ストロークを遂行する方法を示すフローチャートである。
【図１８】一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。
【図１９】一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。
【図２０】一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。
【図２１】一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。
【発明を実施するための形態】
【００１３】
実施形態で使用される用語は、本発明での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによって異なる。また、特定の場合は、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分において、詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本発明の全般にわたった内容とを基に定義されるのである。
【００１４】
明細書全体において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…モジュール」のような用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
【００１５】
以下、添付した図面を参照し、本発明の実施形態について、本発明が属する技術分野で当業者が容易に実施することができるように詳細に説明する。しかし、本発明は、さまざまに異なる形態に具現され、ここで説明する実施形態に限定されるものではない。
【００１６】
以下、図面を参照し、本発明の実施形態について詳細に説明する。
【００１７】
図１は、一実施形態によるストローク装置の一例を示す構成図である。図１を参照すれば、ストローク装置１００は、生成部１１０及びマッピング部１２０を含む。図１に図示されたストローク装置１００には、本実施形態と係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、レンダリング遂行に必要な他の汎用的な構成要素がさらに含まれてもよい。また、ストローク装置１００は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）またはハードウェアアクセラレータ（ＨＷＡ：hardware  accelerator）によっても具現される。
【００１８】
生成部１１０は、経路データを利用して、経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する。例えば、生成部１１０は、経路データを利用して、プリミティブの勾配を演算し、演算された勾配に基づいて、エイリアシングの発生いかんを判断することができる。
【００１９】
該経路は、レンダリングの対象である客体を構成する要素（element）を意味する。言い換えれば、該客体は、少なくとも１以上の経路が連結されて形成された閉多角形（closed  polygon）または閉経路（closed  path）を含んでもよい。「客体」は、「オブジェクト」又は「対象」等と言及されてもよい。例えば、該経路は、ライン（line）またはカーブ（curve）に該当する。該プリミティブは、レンダリングに利用される要素であり、客体または経路の細部単位を意味する。ある場合には、経路とプリミティブとが同一対象を指してもよい。
【００２０】
ストローク装置１００に入力される経路データ（path  data）には、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンド（command）が含まれる。ここで、該頂点は、経路の開始位置に対応する頂点経路の終了位置に対応する頂点、またはカーブの場合、中間位置を制御するための制御点（control  point）を含んでもよい。
【００２１】
例えば、フレームに含まれたピクセルのうち、第１ピクセルから第２ピクセルまでのラインを経路であると仮定すれば、頂点は、第１ピクセル及び第２ピクセルそれぞれに対応する地点を意味する。従って、経路データは、第１ピクセルに対応する第１頂点の座標、第２ピクセルに対応する第２ピクセルの座標、及び第１頂点から第２頂点までラインを構成せよというコマンドを含んでもよい。
【００２２】
従って、経路データを参照すれば、経路を構成する頂点それぞれの座標に係わる情報だけではなく、経路の位置及び進行方向に係わる情報も把握される。もし経路がラインであると仮定すれば、経路データに基づいて、ラインの勾配に係わる情報も把握される。また、経路データには、それぞれのピクセルに設定されるカラー値に係わる情報も含まれてもよい。
【００２３】
また、ストローク装置１００に入力されるストロークデータ（stroke  data）には、ストローク幅（width）、ストロークカラー及び背景（background）カラーに係わる情報のうち少なくとも一つが含まれてもよい。ここで、該ストロークは、客体の外郭線に対応するピクセルにカラーを表示する過程を意味する。
【００２４】
該客体は、少なくとも１つの経路、または少なくとも１つのプリミティブから構成されるので、該ストロークは、経路またはプリミティブに対応するピクセルにカラーを表示する過程を意味する。従って、ストローク装置１００がストロークデータを受信することにより、ストローク幅に対応するピクセルに、ストロークカラーが表示される。以下、図２を参照し、ストロークについて説明する。
【００２５】
図２は、一実施形態によるストローク及びフィル（fill）の一例について説明するための図面である。図２の（Ａ）には、ストローク装置１００が客体２１０にストロークを遂行した一例が図示されており、図２の（Ｂ）には、ストローク装置１００が客体２２０にフィルを遂行した一例が図示されている。
【００２６】
図２の（Ａ）を参照すれば、客体２１０の外郭線は、単一カラーに表示されている。言い換えれば、客体２１０が背景と区別されるように、客体２１０の外郭線に、所定のカラーが表示されている。ストローク装置１００は、客体２１０の外郭線に対応するプリミティブを、ストロークカラーで表示することができる。具体的には、ストローク装置１００は、プリミティブに対応するピクセルにストロークカラーを入力することにより、ストロークを遂行することができる。
【００２７】
一方、図２の（Ｂ）を参照すれば、客体２２０の内部領域は、単一カラーに表示されている。このとき、客体２２０の外郭線は、背景カラーと同一である。言い換えれば、ストローク装置１００は、客体２２０の内部領域に対応するピクセルに、所定のカラーを入力することにより、フィルを遂行することができる。
【００２８】
再び図１を参照すれば、生成部１１０は、判断結果に基づいて、テクスチャを生成する。ここで、該テクスチャは、ストローク装置１００がストロークを遂行するのに利用するイメージを意味する。生成部１１０がテクスチャを生成することにより、マッピング部１２０が、所定の領域に含まれたピクセルにテクスチャをマッピングすることができる。
【００２９】
例えば、エイリアシングが発生しないと判断された場合、生成部１１０は、ストロークカラーを利用して、テクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部１１０は、ストロークカラー、及びストロークカラーにグラジエント（gradient）効果が適用されたカラー（以下、「グラジエントカラー」とする）を利用して、テクスチャを生成することができる。
【００３０】
言い換えれば、生成部１１０は、エイリアシングが発生しないプリミティブについては、色変化がないテクスチャを生成し、エイリアシングが発生するプリミティブについては、色変化があるテクスチャを生成する。
【００３１】
マッピング部１２０は、プリミティブの外郭に沿ってテクスチャをマッピングする。例えば、マッピング部１２０は、プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、既生成のテクスチャを順次にマッピングする。ここで、所定の領域は、プリミティブに含まれたピクセルを基準にして、テクスチャの幅に対応する幅を有する領域を意味する。
【００３２】
前述のように、エイリアシングが発生するプリミティブについては、色変化があるテクスチャが生成される。そのとき、テクスチャで色変化がある部分は、アンチエイリアシング（anti-aliasing）の効果を得るための部分である。それによって、マッピング部１２０が、色変化があるテクスチャをマッピングすることにより、ストロークだけではなく、アンチエイリアシングが完了した結果が出力される。言い換えれば、ストローク装置１００は、ストローク作業及びアンチエイリアシング作業を同時に行うことができるが、ストローク装置１００の動作に要求される演算量が減少するだけではなく、迅速な速度でレンダリングが行われる。
【００３３】
以下、図３を参照し、ストローク装置１００が動作する一例について具体的に説明する。
【００３４】
図３は、一実施形態による経路レンダリングを行う方法の一例を示したフローチャートである。図３を参照すれば、経路レンダリングを行う方法は、図１に図示されたストローク装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示されたストローク装置１００について、以上で記述された内容は、図３の経路レンダリングを行う方法にも適用されるということが分かる。
【００３５】
３１０段階において、生成部１１０は、経路データを利用して、経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する。例えば、生成部１１０は、プリミティブの勾配に基づいて、エイリアシングの発生いかんを判断することができる。
【００３６】
３２０段階において、生成部１１０は、判断結果に基づいて、経路ストロークの遂行に利用されるテクスチャを生成する。具体的には、生成部１１０は、エイリアシングの発生いかんによって、ストロークデータに含まれた情報を利用して、テクスチャを生成することができる。一方、生成されたテクスチャは、ストローク装置１００のメモリ（図示せず）に保存される。
【００３７】
一例として、エイリアシングが発生しないと判断された場合、生成部１１０は、ストロークカラーを利用して、テクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部１１０は、ストロークカラー及びグラジエントカラーを利用して、テクスチャを生成することができる。
【００３８】
他の例として、エイリアシングが発生しないと判断された場合、生成部１１０は、ストローク幅に対応するテクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部１１０は、ストローク幅より長いテクスチャを生成することができる。
【００３９】
以下、図４ないし図６を参照し、生成部１１０がエイリアシングの発生いかんを判断し、テクスチャを生成する例について説明する。
【００４０】
図４は、一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する一例について説明するためのフローチャートである。４１０段階において、生成部１１０は、プリミティブの勾配が、０または無限大値を有するかということを判断する。プリミティブの勾配が、０または無限大値を有するということは、該プリミティブに基づいたエイリアシングが発生しないということを意味する。例えば、プリミティブがラインであると仮定すれば、ラインの勾配が０ということは、ラインが水平方向に描かれたということを意味する。また、ラインの勾配が無限大値を有するということは、ラインが垂直方向に描かれたということを意味する。ここで、水平方向及び垂直方向は、フレーム内において、ラインが描かれた方向を意味する。
【００４１】
それに反して、プリミティブの勾配が、０の値も無限大値も有しないということは、そのプリミティブに基づいたエイリアシングが発生するということを意味する。例えば、プリミティブがラインであると仮定すれば、フレーム上において、ラインが斜線で描かれた場合、そのラインの勾配は、０の値も無限大値も有しないという。
【００４２】
例えば、生成部１１０は、経路データを参照し、プリミティブの勾配を演算することができる。経路データには、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンドが含まれる。従って、生成部１１０は、経路データを参照することにより、プリミティブの開始頂点及び終了頂点が何であるかということが分かり、そのプリミティブがラインであるか、あるいはカーブであるかということを確認することができる。また、プリミティブがラインである場合には、生成部１１０は、そのラインの勾配を演算することもできる。整理すれば、生成部１１０は、経路データを参照し、プリミティブの勾配が、０または無限大値を有するかということを判断することができる。もしプリミティブの勾配が、０または無限大値を有する場合には、４２０段階に進み、そうではない場合には、４３０段階に進む。
【００４３】
以下、図５を参照し、プリミティブの勾配とエイリアシング発生との相関関係について説明する。
【００４４】
図５は、一実施形態による、プリミティブの勾配とエイリアシング発生との相関関係について説明するための図面である。図５には、フレーム５１０に描かれた客体５２０の一例が図示されている。フレーム５１０は、複数のピクセル５１１から構成される。例えば、１０２４＊７６８個のピクセルが、マトリックス形態を構成し、フレーム５１０が構成される。しかし、フレーム５１０に含まれたピクセルの数は、前述の１０２４＊７６８個に限定されるものではない。
【００４５】
ストローク装置１００が、客体５２０のレンダリングを行うことにより、プリミティブに対応するピクセルにカラーが設定される。それによって、フレーム５１０には、レンダリングが行われた客体５２０の形状が出力される。
【００４６】
以下では、フレーム５１０の横方向を「水平方向」にし、縦方向を「垂直方向」にして議論する。ただし、水平方向と垂直方向は、相対的な概念であり、フレーム５１０を見る方向によって、互いに反対になりもする。
【００４７】
客体５２０を構成するプリミティブのうち一部は、図５のプリミティブ５２１のように、水平方向または垂直方向に描かれる。従って、フレーム５１０に含まれた複数のピクセル５１１のうちプリミティブ５２１に対応するピクセルにカラーを設定する場合、プリミティブ５２１の形状は、歪曲されていない状態で、フレーム５１０に出力される。
【００４８】
フレーム５１０の水平方向をｘ軸方向にし、垂直方向をｙ軸方向にする座標を設定すれば、プリミティブ５２１の勾配は、０になる。反対に、フレーム５１０の垂直方向をｘ軸方向にし、水平方向をｙ軸方向にする座標を設定すれば、プリミティブ５２１の勾配は、無限大になる。言い換えれば、プリミティブ５２１は、ピクセル５１１が羅列された方向によって形成される。従って、プリミティブ５２１に対応するピクセルにカラーを設定する場合、プリミティブ５２１の形状は、歪曲されずに表現される。
【００４９】
整理すれば、プリミティブ５２１の勾配が０または無限大である場合、プリミティブ５２１は、フレーム５１０上に歪曲されずに出力される。従って、プリミティブ５２１に基づいたエイリアシングは、発生しない。
【００５０】
一方、客体５２０を構成するプリミティブのうち他の一部は、図５のプリミティブ５２２のように、斜線に描かれる。前述のように、フレーム５１０内のピクセル５１１は、マトリックス形態に配列される。従って、プリミティブ５２２に対応するピクセルにカラーを設定する場合、プリミティブ５２２の形状（プリミティブ５２２の外郭線）は、歪曲された状態で、フレーム５１０に出力される。
【００５１】
フレーム５１０の水平方向及び垂直方向を正数にする座標を設定すれば、プリミティブ５２２の勾配は、０ではなく、無限大値でもない。整理すれば、プリミティブ５２２の勾配が、０または無限大値ではない場合、プリミティブ５２２は、フレーム５１０上に歪曲されて出力される。従って、プリミティブ５２２に基づいたエイリアシングが発生する。
【００５２】
生成部１１０は、エイリアシング発生いかんによって、互いに異なるテクスチャを生成する。特に、生成部１１０は、プリミティブ５２２のように、エイリアシングが発生すると判断される場合、ストロークカラー及びグラジエントカラーを利用して、テクスチャを生成する。従って、マッピング部１２０がプリミティブ５２２を含む領域に、テクスチャをマッピングすることにより、ストローク作業及びアンチエイリアシング作業が同時に行われる。
【００５３】
生成部１１０で生成されたプリミティブ５２２に係わるテクスチャは、プリミティブ上に存在する全てのピクセルを開始点にし、プリミティブの直角である方向にストローク幅の１／２に存在する地点を終了点にする直線に、同一テクスチャがマッピングされる。それは、ユーザが定義するストローク幅（stroke  width）と経路ストロークカラーとが、同一プリミティブ上では、いずれも同一であるからである。例えば、ユーザが定義するストローク幅が１０である場合、ストローク幅が５であるテクスチュアを生成し、プリミティブ上の任意点を開始点にし、プリミティブの直角である双方向に、幅５ほど離れた地点を終了点にする直線上に、テクスチャがマッピングされる。
【００５４】
ユーザが定義する「ユーザ入力ストローク幅」が２Ｗであるならば、プリミティブの直角である一方向への幅「ストローク幅」は、Ｗであり、以下で言及するストローク幅Ｗは、いずれもプリミティブの直角である一方向での幅を意味する。
【００５５】
再び図４を参照すれば、４２０段階において、生成部１１０は、ストロークカラーを利用して、第１テクスチャを生成する。例えば、生成部１１０は、全体領域がストロークカラーに設定された第１テクスチャを生成することができる。
【００５６】
生成部１１０は、ストロークデータを参照し、ストローク幅を確認する。そして、生成部１１０は、ストローク幅に対応するピクセルに、ストロークカラーが設定されるように、第１テクスチャを生成する。言い換えれば、第１テクスチャは、第１テクスチャに含まれたピクセルいずれにも、同一カラーが設定されるように生成される。以下、図６を参照し、第１テクスチャの一例について説明する。
【００５７】
図６は、一実施形態による第１テクスチャの一例について説明するための図面である。図６には、第１テクスチャ６１０の一例が図示されている。生成部１１０は、ストロークデータから、ストロークカラー及びストローク幅Ｗに係わる情報を獲得し、ストローク幅Ｗに対応するピクセルにストロークカラーを設定することにより、第１テクスチャ６１０を生成することができる。
【００５８】
そのとき、第１テクスチャ６１０の高さは、単一ピクセルの高さに対応する。言い換えれば、第１テクスチャ６１０は、ストローク幅Ｗに対応する長さほど、一列にピクセルが並んだ形態になる。例えば、ストローク幅Ｗが１０であり、ストロークカラーが黒色であると仮定すれば、生成部１１０は、ピクセルＰからピクセルＰ１まで、１０個のピクセルそれぞれが黒色に設定され、その１０個のピクセルが一列に羅列された形態に第１テクスチャ６１０を生成することができる。ここで、ピクセルＰは、プリミティブに含まれたピクセルであり、ピクセルＰ１の外部は、バックグラウンドＢＧに該当する。
【００５９】
再び図４を参照すれば、４３０段階において、生成部１１０は、ストロークカラー及びグラジエントカラーを利用して、第２テクスチャを生成する。例えば、生成部１１０は、一部領域がストロークカラーに設定され、残りの領域がグラジエントカラーに設定された第２テクスチャを生成することができる。
【００６０】
生成部１１０は、ストロークデータを参照し、ストローク幅を確認する。そして、生成部１１０は、ストローク幅に対応するピクセルにストロークカラーが設定されるように、第２テクスチャの一部領域を生成する。また、生成部１１０は、所定の幅に対応するピクセルにグラジエントカラーが設定されるように、第２テクスチャの他の領域を生成する。言い換えれば、第２テクスチャは、第２テクスチャに含まれたピクセルに、２以上のカラーが設定されるように生成される。以下、図７を参照し、第２テクスチャの一例について説明する。
【００６１】
図７は、一実施形態による第２テクスチャの一例について説明するための図面である。図７には、第２テクスチャ７１０の一例が図示されている。生成部１１０は、ストロークデータから、ストロークカラー及びストローク幅Ｗに係わる情報を獲得する。そして、生成部１１０は、ストローク幅Ｗに対応するピクセルにストロークカラーを設定し、アンチエイリアシング幅Ｗ＿ＡＡに対応するピクセルにグラジエントカラーを設定することにより、第２テクスチャ７１０を生成することができる。
【００６２】
そのとき、第２テクスチャ７１０の高さは、単一ピクセルの高さに対応する。言い換えれば、第２テクスチャ７１０は、ストローク幅Ｗ及びアンチエイリアシング幅Ｗ＿ＡＡに対応する長さほど、一列にピクセルが並んだ形態になる。例えば、ストローク幅Ｗが１０であり、アンチエイリアシング幅Ｗ＿ＡＡが１であり、ストロークカラーが黒色であり、バックグラウンドカラーが白色であるとと仮定すれば、生成部１１０は、ピクセルＰからピクセルＰ１まで、１０個のピクセルそれぞれを黒色に設定し、ピクセルＰ１’を、黒色から白色に徐々に変化するグラジエントカラーに設定する。そして、生成部１１０は、その１１個のピクセルが一列に羅列された形態に、第２テクスチャ７１０を生成することができる。ここで、ピクセルＰは、プリミティブに含まれたピクセルであり、ピクセルＰ１’の外部は、バックグラウンドＢＧに該当する。
【００６３】
ここで、アンチエイリアシング幅Ｗ＿ＡＡは、図８及び図９を参照して説明するように、生成部１１０によって演算される。
【００６４】
図８は、一実施形態による、生成部がエイリアシング発生いかんを判断し、テクスチャを生成する他の例について説明するためのフローチャートである。図８の８１０段階及び８２０段階は、図４の４１０段階及び４２０段階に対応する。従って、以下では、８１０段階に係わる具体的な説明は省略する。
【００６５】
８３０段階において、生成部１１０は、ストローク幅より長い第２テクスチャを生成する。具体的には、生成部１１０は、プリミティブの勾配に対応する角度、及びストローク幅に基づいて、第２テクスチャを生成することができる。言い換えれば、生成部１１０は、プリミティブの勾配に対応する角度、及びストローク幅によって、ストロークカラーが設定される領域（図７のＷに対応する領域）の幅、及びグラジエントカラーが設定される領域（図７のＷ＿ＡＡに対応する領域）の幅をそれぞれ演算することができる。以下、図９を参照し、生成部１１０が、プリミティブの勾配に対応する角度、及びストローク幅に基づいて、第２テクスチャを生成する例について説明する。
【００６６】
図９は、一実施形態による、生成部が第２テクスチャを生成する一例について説明するための図面である。図９には、プリミティブ９１０の一例、及び第２テクスチャ９２０の一例が図示されている。生成部１１０は、プリミティブ９１０の勾配に対応する角度θ、及びストローク幅Ｗに基づいて、第１幅Ｌ及び第２幅Ｌ＿ＡＡを演算する。ここで、第１幅Ｌは、ストロークカラーが設定される領域の幅を意味し、第２幅Ｌ＿ＡＡは、グラジエントカラーが設定される領域の幅を意味する。
【００６７】
例えば、生成部１１０は、下記数式（１）に基づいて、第１幅Ｌを演算することができる。
【００６８】
Ｌ＝Ｗ／ｃｏｓ（９０−θ）      （１）
前述の数式（１）で、Ｌは、第１幅を意味し、Ｗは、ストローク幅を意味し、θは、プリミティブ９１０の勾配に対応する角度を意味する。また、数式（１）においては角度が「度」（degree）」で表現されているが、ラジアンで表現されてもよい（以下同様）。
【００６９】
また、生成部１１０は、下記数式（２）に基づいて、第２幅Ｌ＿ＡＡを演算することができる。
【００７０】
ＬＡＡ＝ＷＡＡ＊Ｌ／Ｗ        （２）
前述の数式（２）で、ＬＡＡは、第２幅を意味し、ＷＡＡは、アンチエイリアシング幅を意味し、Ｌは、第１幅を意味し、Ｗは、ストローク幅を意味する。
【００７１】
一般的に、アンチエイリアシング幅ＷＡＡは、１に設定される。アンチエイリアシング幅ＷＡＡが１であると仮定し、数式（１）を数式（２）に代入すれば、下記数式（３）が導き出される。
【００７２】
ＬＡＡ＝ＷＡＡ＊Ｌ／Ｗ
＝ＷＡＡ／ｃｏｓ（９０−θ）
＝１／ｃｏｓ（９０−θ）              （３）
前述の数式（１）ないし数式（３）を参照すれば、プリミティブ９１０の勾配が小さくなるほど（θが小さくなるほど）、第１幅Ｌは、長くなり、それに比例し、第２幅Ｌ＿ＡＡも長くなる。
【００７３】
生成部１１０は、前述の数式（１）ないし数式（３）によって、第１幅Ｌ及び第２幅Ｌ＿ＡＡを演算することができる。そして、生成部１１０は、ストロークデータから、ストロークカラーに係わる情報を獲得することができる。従って、生成部１１０は、第２テクスチャ９２０を生成することができる。
【００７４】
一方、客体は、互いに異なる経路、または互いに異なるプリミティブの結合から構成される。従って、互いに異なるプリミティブが重なる領域（以下、「重複領域」とする）が発生する。生成部１１０は、前述の第１テクスチャまたは第２テクスチャ以外に、重複領域にマッピングされる第３テクスチャを生成することができる。また、生成部１１０は、プリミティブの末端にマッピングされる第４テクスチャを生成することもできる。以下、図１０ないし図１１を参照し、生成部１１０が、第３テクスチャまたは第４テクスチャを生成する一例について説明する。
【００７５】
図１０は、一実施形態による生成部が、第３テクスチャを生成する一例について説明するための図面である。図１０には、互いに異なる４個のプリミティブ１０１１，１０１２，１０１３，１０１４によって形成された客体１０２０の一例が図示されている。具体的には、図１０の客体１０２０は、互いに異なる４個のプリミティブ１０１１，１０１２，１０１３，１０１４が結合され、プリミティブ１０１１，１０１２，１０１３，１０１４にストローク作業が行われることによって生成された四角形に図示されている。しかし、客体の形状は、四角形に限定されるものではなく、複数のプリミティブが組み合わされることによって、多様な形状の客体が生成される。
【００７６】
プリミティブ１０１１，１０１２，１０１３，１０１４に、ストローク作業が行われることにより、互いに異なる４個の重複領域１０２１，１０２２，１０２３，１０２４が発生する。生成部１１０は、前述の第１テクスチャまたは第２テクスチャ以外に、重複領域１０２１，１０２２，１０２３，１０２４それぞれにマッピングされる第３テクスチャ１０３０を生成することができる。
【００７７】
例えば、生成部１１０は、円状の第３テクスチャ１０３０を生成することができる。そのとき、第３テクスチャ１０３０は、第２テクスチャのように、ストロークカラー及びグラジエントカラーの組み合わせによっても生成される。第３テクスチャ１０３０が円状である場合、第３テクスチャ１０３０の外郭線は、フレームの水平方向に配列されたピクセル、または垂直方向に配列されたピクセルによってだけでは具現されない。言い換えれば、第３テクスチャ１０３０が円状である場合、第３テクスチャ１０３０に対応する形状を有するプリミティブは、そのプリミティブに基づいたエイリアシングが発生する。
【００７８】
従って、生成部１１０は、第３テクスチャ１０３０を、ストロークカラー及びグラジエントカラーに基づいて生成する。具体的には、生成部１１０は、中心点１０３１を基準に、半径ｒ内に含まれる領域には、ストロークカラーを適用する。ここで、半径ｒは、ストローク幅Ｗに該当する。そして、生成部１１０は、ストロークカラーが適用された領域と隣接した所定の領域に、グラジエントカラーを適用する。ここで、該所定領域は、アンチエイリアシング幅Ｗ＿ＡＡに基づいて決定される。また、生成された第３テクスチャ１０３０は、ストローク装置１００のメモリ（図示せず）に保存される。
【００７９】
後述するマッピング部１２０は、第３テクスチャ１０３０を、重複領域１０２１，１０２２，１０２３，１０２４それぞれにマッピングする。例えば、マッピング部１２０は、第３テクスチャ１０３０の中心点１０３１の座標（ｘ，ｙ）を、プリミティブ１０１１とプリミティブ１０１４とが出合う地点１０５１に設定し、第３テクスチャ１０３０の一部分（例えば、第３テクスチャ１０３０の１／４部分）を重複領域１０２１にマッピングすることができる。第３テクスチャ１０３０の一部（例えば、１０４１）生成のための選択角度は、２つのプリミティブがなす外角（１８０°−内角）の大きさのようである。例えば、２つのプリミティブ１０１１，１０１４の外角が９０°であるので、第３テクスチャ１０３０の一部（９０°、すなわち１／４領域）を重複領域１０２１にマッピングする。それによって、重複領域１０２１に、第３テクスチャ１０３０の一部分がマッピングされた結果１０４１が出力される。
【００８０】
図１１は、一実施形態による、生成部が第４テクスチャを生成する一例について説明するための図面である。図１１には、プリミティブ１１１０によって形成された客体１１２０の一例が図示されている。具体的には、図１１の客体１１２０は、プリミティブ１１１０に、ストローク作業が行われることによって生成されたラインで図示されている。
【００８１】
プリミティブ１１１０に、ストローク作業が行われることにより、２個の末端領域１１２１，１１２２が発生する。生成部１１０は、前述の第１テクスチャまたは第２テクスチャ以外に、末端領域１１２１，１１２２それぞれにマッピングされる第４テクスチャ１１３０を生成することができる。
【００８２】
例えば、生成部１１０は、円状の第４テクスチャ１１３０を生成することができる。そのとき、第４テクスチャ１１３０の一例は、図１０の第３テクスチャ１０３０と同一である。従って、生成部１１０が、第４テクスチャ１１３０を生成する具体的な過程についての説明は省略する。また、生成された第４テクスチャ１１３０は、ストローク装置１００のメモリ（図示せず）に保存される。
【００８３】
後述するマッピング部１２０は、第４テクスチャ１１３０を、末端領域１１２１，１１２２それぞれにマッピングする。例えば、マッピング部１２０は、第４テクスチャ１１３０の中心点１１３１の座標（ｘ，ｙ）を、プリミティブ１１１０の終了点に設定し、第４テクスチャ１１３０の一部分（例えば、第４テクスチャ１１３０の１／２部分）を末端領域１１２１，１１２２にマッピングすることができる。それによって、重複領域１１２１に、第４テクスチャ１１３０の一部分がマッピングされた結果１１４１が出力される。
【００８４】
再び図３を参照すれば、３３０段階において、マッピング部１２０は、プリミティブの外郭に沿ってテクスチャをマッピングする。具体的には、マッピング部１２０は、プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、テクスチャを順次にマッピングする。
【００８５】
特に、マッピング部１２０は、プリミティブの勾配に基づいて方向を決定し、決定された方向によって、プリミティブの外郭に沿ってテクスチャをマッピングすることができる。一例として、プリミティブの勾配が、０または無限大値を有する場合、マッピング部１２０は、プリミティブに垂直である方向に沿ってテクスチャをマッピングすることができる。他の例として、プリミティブの勾配の絶対値が、０より大きくて１より小さい場合、マッピング部１２０は、フレームの水平方向に沿ってテクスチャをマッピングすることができる。さらに他の例として、プリミティブの勾配の絶対値が１以上である場合、マッピング部１２０は、フレームの垂直方向に沿ってテクスチャをマッピングすることができる。
【００８６】
以下、図１２ないし図１３Ｂを参照し、マッピング部１２０が、プリミティブの外郭に沿ってテクスチャをマッピングする例について説明する。
【００８７】
図１２は、一実施形態による、マッピング部が動作する一例について説明するための図面である。図１２には、プリミティブ１２１０の一例が図示されている。図１２において、プリミティブ１２１０は、ラインであり、プリミティブ１２１０の勾配は、無限大値（すなわち、プリミティブ１２１０は、フレームの垂直方向に描かれる）を有すると仮定する。
【００８８】
プリミティブ１２１０の勾配が、０または無限大値を有する場合、マッピング部１２０は、プリミティブ１２１０に垂直である方向に沿って、テクスチャ１２２０，１２３０をマッピングすることができる。図１２において、プリミティブ１２１０の勾配は、無限大値を有するので、マッピング部１２０は、フレームの水平方向に沿って、テクスチャ１２２０，１２３０をマッピングすることができる。
【００８９】
マッピング部１２０は、プリミティブ１２１０に含まれたピクセル１２１１，１２１２，１２１３，１２１４，１２１５それぞれを基準に設定された所定の領域に、テクスチャ１２２０，１２３０を順次にマッピングする。または、マッピング部１２０は、プリミティブ１２１０上のピクセル１２１１，１２１２，１２１３，１２１４，１２１５それぞれの位置を中心に対称となる所定の領域に、同一テクスチャをマッピングする。ここで、該所定領域は、テクスチャ１２２０，１２３０の全体幅に対応する領域を意味する。具体的には、第１テクスチャの場合、該所定領域は、ストローク幅Ｗに対応する領域を意味し、第２テクスチャの場合、該所定領域は、第１幅Ｌ及び第２幅Ｌ＿ＡＡの和に対応する領域を意味する。１つのプリミティブの所定の領域内には、ストローク幅が同じであるので、同一テクスチャを反復してマッピングすることができる。
【００９０】
図１２を参照すれば、マッピング部１２０は、ピクセル１２１２を基準に、プリミティブ１２１０に垂直である方向（すなわち、フレームの水平方向）にテクスチャ１２２０をマッピングする。その後、マッピング部１２０は、ピクセル１２１３を基準に、プリミティブ１２１０に垂直である方向に、テクスチャ１２３０をマッピングする。そのような方式で、マッピング部１２０は、ピクセル１２１４まで順次にテクスチャをマッピングする。そして、マッピング部１２０は、図１１を参照して説明した方式により、プリミティブ１２１０の両端のピクセル１２１１，１２１５に、テクスチャをマッピングする。
【００９１】
図１３Ａ及び図１３Ｂは、一実施形態による、マッピング部が動作する他の例について説明するための図面である。
【００９２】
図１３Ａ及び図１３Ｂには、プリミティブ１３１０，１３３０の一例が図示されている。具体的には、図１３Ａに図示されたプリミティブ１３１０の勾配は、その絶対値が０より大きくて１より小さく、図１３Ｂには、プリミティブ１３３０の勾配は、その絶対値が１以上である。
【００９３】
図１３Ａを参照すれば、プリミティブ１３１０の勾配の絶対値が０より大きくて１より小さい場合、マッピング部１２０は、フレームの垂直方向に沿って、テクスチャをマッピングする。具体的には、マッピング部１２０は、プリミティブ１３１０に含まれた両端のピクセルを除いた残りのピクセルそれぞれに対して、フレームの垂直方向に沿ってテクスチャをマッピングする。そして、マッピング部１２０は、図１１を参照して説明した方式により、プリミティブ１３１０の両端ピクセルに、テクスチャをマッピングする。
【００９４】
図１３Ｂを参照すれば、プリミティブ１３３０の勾配の絶対値が１以上である場合、マッピング部１２０は、フレームの水平方向に沿って、テクスチャをマッピングする。具体的には、マッピング部１２０は、プリミティブ１３３０に含まれた両端のピクセルを除いた残りのピクセルそれぞれに対して、フレームの水平方向に沿って、テクスチャをマッピングする。そして、マッピング部１２０は、図１１を参照して説明した方式により、プリミティブ１３３０の両端のピクセルにテクスチャをマッピングする。
【００９５】
前述のところによれば、ストローク装置１００は、プリミティブの特性（例えば、プリミティブの勾配）によって、適応的にテクスチャを生成して保存する。そして、ストローク装置１００は、処理速度が速いローカルメモリに保存されたテクスチャを、プリミティブ上にマッピングすることにより、短時間内にストローキング作業を行うことができる。また、ストローク装置１００は、生成されたテクスチャを、プリミティブ上にマッピングすることにより、ストローキング作業だけではなく、アンチエイリアシング作業を同時に行うことができる。
【００９６】
図１４は、一実施形態によるストローク装置の他の例を図示した構成図である。図１４を参照すれば、ストローク装置１０１は、生成部１１０、マッピング部１２０だけではなく、分割部１３０をさらに含む。図１４に図示されたストローク装置１０１には、本実施形態と係わる構成要素だけが図示されている。従って、図１４に図示された構成要素以外に、レンダリング遂行に必要な他の汎用的な構成要素がさらに含まれてもよい。
【００９７】
図１４に図示されたストローク装置１０１の生成部１１０及びマッピング部１２０の動作は、図１ないし図１３Ｂを参照して説明した通りである。従って、以下では、生成部１１０及びマッピング部１２０に係わる具体的な説明は省略する。
【００９８】
分割部１３０は、カーブに対応する経路を、複数のプリミティブに分割する。例えば、分割部１３０は、De_Casteljau法則に基づいて、カーブを複数のプリミティブに分割することができる。ここで、分割されたプリミティブそれぞれは、ラインを意味する。
【００９９】
経路には、カーブが含まれてもよいということは、図１を参照して説明した通りである。経路がカーブである場合、分割部１３０は、カーブを複数のプリミティブに分割し、生成部１１０は、それぞれのプリミティブに係わるテクスチャを生成する。そのとき、分割部１３０は、カーブと類似した形状が示されるように、ラインプリミティブを生成することができる。言い換えれば、分割部１３０によって生成されたラインプリミティブの集合は、カーブと類似した形状を示すことができる。以下、図１５を参照し、分割部１３０が動作する一例について説明する。
【０１００】
図１５は、一実施形態による、分割部が動作する一例について説明するための図面である。図１５の（Ａ）には、カーブである経路１５１０の一例が図示されている。経路１５１０がカーブである場合、経路データには、経路１５１０の表現に利用される３個の制御点Ｖ１，Ｖ２，Ｖ３に係わる情報が含まれる。言い換えれば、ストローク装置１００は、制御点Ｖ１，Ｖ２，Ｖ３を利用して、経路１５１０を構成することができる。
【０１０１】
一方、制御点Ｖ１，Ｖ２，Ｖ３を組み合わせれば、２本のラインが生成される。言い換えれば、制御点Ｖ１と制御点Ｖ２とを結ぶ第１ライン、及び制御点Ｖ２と制御点Ｖ３とを結ぶ第２ラインが生成される。図１５の（Ａ）に図示されているように、第１ライン及び第２ラインが連結された形状は、経路１５１０の様子と若干違いが存在する。
【０１０２】
図１５の（Ｂ）には、経路１５１０が２個のサブ経路１５１１，１５１２に分割された一例が図示されている。言い換えれば、図１５の（Ｂ）には、１つのカーブが２個のカーブに分割された一例が図示されている。例えば、経路１５１０は、De_Casteljauアルゴリズムに基づいて分割される。
【０１０３】
図１５の（Ａ）を参照して説明したように、第１サブ経路１５１１は、３個の制御点Ｖ１，Ｖ４，Ｖ５によって構成され、第２サブ経路１５１２は、３個の制御点Ｖ５，Ｖ６，Ｖ３によって構成される。従って、サブ経路１５１１，１５１２の制御点Ｖ１，Ｖ４，Ｖ５，Ｖ６，Ｖ３を組み合わせれば、４本のラインが生成される。
【０１０４】
図１５の（Ａ）及び（Ｂ）を比較すれば、図１５の（Ａ）に図示された２本のラインが連結された様子より、図１５の（Ｂ）に図示された４本のラインが連結された様子が、経路１５１０の様子とさらに類似している。図１５の（Ｃ）には、経路１５１０が４個のサブ経路に分割された一例が図示されており、図１５の（Ｄ）には、経路１５１０が８個のサブ経路に分割された一例が図示されている。整理すれば、経路１５１０の分割回数が増えるほど、制御点を利用して生成されたラインが連結された様子が、経路１５１０の様子と徐々に類似してくる。
【０１０５】
分割部１３０は、経路１５１０を、複数のサブ経路に分割する。そして、サブ経路それぞれに対応する制御点を組み合わせ、複数のプリミティブ（すなわち、ライン）を構成する。結論として、分割部１３０は、経路１５１０を、複数のプリミティブに分割することができる。そのとき、分割部１３０が経路１５１０を分割する回数は、ストローク装置１０１の計算によって決定され、ユーザの入力によって、既決定の回数が変更されもする。
【０１０６】
図１６及び図１７は、一実施形態による、経路ストロークを遂行する方法を示すフローチャートである。
【０１０７】
図１６及び図１７を参照すれば、経路ストロークを遂行する方法は、図１及び図１４に図示されたストローク装置１００，１０１において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１及び図１４に図示されたストローク装置１００，１０１について、以上で記述された内容は、図１６及び図１７の経路ストロークを遂行する方法にも適用されるということが分かる。
【０１０８】
図１６を参照すれば、１８１０段階において、生成部１１０は、外部装置から経路データを受信する。経路データには、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンドが含まれる。また、生成部１１０は、外部装置からストロークデータを受信することができる。ストロークデータには、ストローク幅、ストロークカラー及び背景カラーに係わる情報のうち少なくとも一つが含まれてもよい。
【０１０９】
１８２０段階において、生成部１１０は、既生成のテクスチャが存在するか否かということを判断する。例えば、生成部１１０は、テクスチャユニット（texture  unit）にテクスチャが保存されているか否かということを検索することにより、既生成のテクスチャが存在するか否かということを判断することができる。もし既生成のテクスチャが存在する場合には、１８３０段階に進み、そうではない場合には、１８４０段階に進む。
【０１１０】
１８３０段階において、生成部１１０は、テクスチャユニットからテクスチャを読み取る。そして、生成部１１０は、読み取ったテクスチャをマッピング部１２０に伝送する。または、生成部１１０がマッピング部１２０に、テクスチャを読み取ることを要請することができ、その要請により、マッピング部１２０がテクスチャユニットからテクスチャを読み取ることもできる。
【０１１１】
１８４０段階において、生成部１１０は、テクスチャを生成する。例えば、生成部１１０は、プリミティブに基づいたエイリアシング発生いかんを判断し、判断結果に基づいて、経路ストロークの遂行に利用されるテクスチャを生成することができる。そのとき、生成部１１０は、経路データを利用してプリミティブの勾配を演算し、演算された勾配に基づいて、エイリアシング発生いかんを判断することができる。そして、生成部１１０は、エイリアシングが発生するか否かということによって、適応的にテクスチャを生成することができる。生成部１１０がテクスチャを生成する例は、図６ないし図１１を参照して説明した通りである。
【０１１２】
１８５０段階において、生成部１１０は、生成したテクスチャをテクスチャユニットに保存する。
【０１１３】
１８６０段階ないし１８８５段階は、プリミティブに含まれたピクセルそれぞれについて遂行される。言い換えれば、マッピング部１２０は、プリミティブに含まれたピクセルそれぞれについて、１８６０段階ないし１８８５段階を遂行することができる。
【０１１４】
１８６０段階において、マッピング部１２０は、プリミティブの勾配が、０または無限大値であるか否かということを判断する。例えば、マッピング部１２０は、生成部１１０が演算したプリミティブの勾配値を利用して、１８６０段階を遂行することができる。もしプリミティブの勾配が、０または無限大値である場合には、１８８１段階に進み、そうではない場合には、１８７０段階に進む。
【０１１５】
１８７０段階において、マッピング部１２０は、プリミティブの勾配の絶対値が、０より大きくて１より小さいかということを判断する。もしプリミティブの勾配の絶対値が、０より大きくて１より小さい場合には、１８８３段階に進み、そうではない場合には、１８８５段階に進む。
【０１１６】
１８８１段階において、マッピング部１２０は、プリミティブに垂直である方向に沿って、テクスチャをマッピングする。マッピング部１２０がプリミティブに垂直である方向に沿って、テクスチャをマッピングする一例は、図１２を参照して説明した通りである。
【０１１７】
１８８３段階において、マッピング部１２０は、水平方向に沿って、テクスチャをマッピングする。ここで、水平方向は、フレームの水平方向を意味する。マッピング部１２０が、水平方向に沿ってテクスチャをマッピングする一例は、図１３Ｂを参照して説明した通りである。
【０１１８】
１８８５段階において、マッピング部１２０は、垂直方向に沿って、テクスチャをマッピングする。ここで、垂直方向は、フレームの垂直方向を意味する。マッピング部１２０が、垂直方向に沿ってテクスチャをマッピングする一例は、図１３Ａを参照して説明した通りである。
【０１１９】
図１６に図示されたフローチャートと、図１７に図示されたフローチャートとを比較すれば、図１６では、１８４０段階において生成されたテクスチャが、テクスチャユニットに保存されるが、図１７では、１９４０段階で生成されたテクスチャが、中央処理装置内のキャッシュ（cache）に保存される（１９５０段階）という点で区別される。図１９に図示された１９１０段階ないし１９８５段階のうち、１９５０段階を除いた残りの段階は、図１８に図示された１８１０段階ないし１８８５段階と同一である。
【０１２０】
図１８ないし図２１は、一実施形態による、経路ストロークを遂行する方法が、中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）で具現される例について説明するための図面である。
【０１２１】
図１８ないし図２１には、中央処理装置２０００及びグラフィック処理装置２１００，２３００が図示されている。例えば、中央処理装置２０００と、グラフィック処理装置２１００，２３００は、ＧＬ（graphics  language）  ＡＰＩ（application  programming  interface）を通じて通信することができる。特に、図２１に図示されたグラフィック処理装置２３００は、ストロークユニット２３１０をさらに含んでいる点で、図１８ないし図２０に図示されたグラフィック処理装置２１００と区別される。一方、図１８ないし図２１に図示された中央処理装置２０００は、ハードウェアアクセラレータ（ＨＷＡ）によっても具現される。
【０１２２】
一般的に、グラフィック処理装置２１００に含まれた細部モジュールが動作する例は、以下の通りである。
【０１２３】
入力アセンブラ２１１０は、経路を構成する少なくとも１つの頂点に係わるデータをメモリから読み取り、読み取られたデータをバーテックスシェーダ２１２０に伝送する。バーテックスシェーダ２１２０は、頂点についてユーザが作成したバーテックスシェーダ・プログラムを実行する。ここで、バーテックスシェーダ・プログラムは、一次元テクスチャ上の全てのピクセルの座標を生成するプログラムを意味する。座標が生成されたピクセルは、フラグメントシェーダに伝達され、ユーザが定義したフラグメントシェーダ・プログラムの入力として使用される。
【０１２４】
フラグメントシェーダ２１６０は、テクスチャを生成し、生成されたテクスチャをテクスチャユニット２１７０に保存する。また、フラグメントシェーダ２１６０は、フレームに含まれたピクセルそれぞれにカラー値を設定する。そのとき、フラグメントシェーダ２１６０は、テクスチャユニット２１７０に保存されたテクスチャを利用して、ピクセルそれぞれにカラー値を設定することができる。
【０１２５】
レンダ出力部２１８０は、フラグメントシェーダ２１６０が動作することによって生成されたデータ（例えば、ピクセルのカラーに係わる情報）をバッファ（図示せず）に記録する。言い換えれば、フラグメントシェーダ２１６０は、フレームに含まれたピクセルそれぞれのカラーを決定し、レンダ出力部２１８０は、ピクセルのカラーに係わる情報を合わせ（merge）、バッファ（図示せず）に記録する。
【０１２６】
プリミティブアセンブラ２１３０、テッセレータ２１４０及びラスタライザ２１５０が遂行する機能は、既存のグラフィック処理装置が遂行する機能と同一であるので、詳細な説明は省略する。
【０１２７】
図１８を参照すれば、中央処理装置またはハードウェアアクセラレータ２０００は、グラフィック処理装置２１００にシェーダプログラムを利用してテクスチャを生成することを要請し、グラフィック処理装置２１００は、テクスチャを生成する。言い換えれば、ストローク装置１００，１０１が遂行する作業のうちテクスチャの生成作業は、グラフィック処理装置２１００が行い、残りの作業は、中央処理装置またはハードウェアアクセラレータ２０００が行う。
【０１２８】
具体的には、中央処理装置またはハードウェアアクセラレータ２０００は、ローカルメモリ２０１０に保存された経路データを利用して、プリミティブに基づいたエイリアシング発生いかんを判断する。もし経路がカーブである場合、中央処理装置またはハードウェアアクセラレータ２０００は、カーブが分割することによってプリミティブを生成し（３０１０）、エイリアシング発生いかんを判断することができる。そして、中央処理装置またはハードウェアアクセラレータ２０００は、グラフィック処理装置２１００にテクスチャを生成することを要請し、グラフィック処理装置２１００からテクスチャを受信し、ローカルメモリ２０１０に保存する（３０２０）。そのとき、グラフィック処理装置２１００のフラグメントシェーダ２１６０が、テクスチャを生成することができる。
【０１２９】
そして、中央処理装置またはハードウェアアクセラレータ２０００は、プリミティブの開始頂点及び終了頂点を生成し、開始頂点及び終了頂点に係わる情報を、ローカルメモリ２０１０に保存する（３０３０）。そして、中央処理装置またはハードウェアアクセラレータ２０００は、ローカルメモリ２０１０に保存されたテクスチャと、開始頂点及び終了頂点に係わる情報を利用して、テクスチャをマッピングすることにより、ストローク作業を遂行する（３０４０）。
【０１３０】
図１８と図１９とを比較すれば、図１９に図示された中央処理装置またはハードウェアアクセラレータ２０００は、テクスチャを直接生成し、生成されたテクスチャをグラフィック処理装置２１００に伝送する（３０５０）という点で、図１８に図示された中央処理装置またはハードウェアアクセラレータ２０００と区別される。そのとき、グラフィック処理装置２１００は、受信したテクスチャをテクスチャユニット２１７０に保存することができる。
【０１３１】
一般的に、テクスチャユニット２１７０は、キャッシュメモリを含むので、ストローク作業が遂行されることにより、テクスチャが反復的に使用される場合、迅速にテクスチャが読み取られる。
【０１３２】
図１８と図２０とを比較すれば、図２２に図示された中央処理装置またはハードウェアアクセラレータ２０００は、テクスチャの生成をグラフィック処理装置２１００に要請し、生成されたテクスチャを受信しない（３０６０）という点で、図１８に図示された中央処理装置またはハードウェアアクセラレータ２０００と区別される。そのとき、グラフィック処理装置２１００のフラグメントシェーダ２１６０がテクスチャを生成し、生成されたテクスチャをテクスチャユニット２１７０に保存する。
【０１３３】
図１８と図２１とを比較すれば、図２１に図示された中央処理装置またはハードウェアアクセラレータ２０００は、グラフィック処理装置２３００に、ストローク装置１００，１０１が遂行する全ての作業の遂行を要請するという点で、図１８に図示された中央処理装置またはハードウェアアクセラレータ２０００と区別される。
【０１３４】
具体的には、グラフィック処理装置２３００は、経路データを利用して、プリミティブに基づいたエイリアシング発生いかんを判断する。もし経路がカーブである場合、グラフィック処理装置２３００は、カーブを分割することによってプリミティブを生成し、エイリアシング発生いかんを判断することができる。そして、グラフィック処理装置２３００は、経路ストロークの遂行に利用されるテクスチャを生成し、プリミティブの外郭に沿って、テクスチャをマッピングする。そのとき、グラフィック処理装置２３００に含まれたストロークユニット２３１０が、プリミティブの外郭に沿ってテクスチャをマッピングすることができる。
【０１３５】
前述のところによれば、ストローク装置１００，１０１は、既生成のテクスチャを利用して、ストローク作業を遂行することにより、ストローク作業に要求される演算量が減少するだけではなく、短時間内にストローク作業が遂行される。
【０１３６】
また、ストローク装置１００，１０１は、エイリアシング発生いかんに基づいて、適応的にテクスチャを生成することにより、ストローク作業とアンチエイリアシング作業とが同時に遂行される。
【０１３７】
一方、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体にさまざまな手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（read  only  memory）、ＲＡＭ（random  access  memory）、ＵＳＢ（universal  serial  bus）、フロッピーディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【０１３８】
また、前述の方法は、コンピュータで読み取り可能な記録媒体に維持されるプログラムのうち少なくとも１つのプログラムに含まれた命令語（instructions）の実行を介して遂行される。前記命令語がコンピュータによって実行される場合、前記少なくとも１つのコンピュータは、前記命令語に該当する機能を遂行することができる。ここで、該命令語は、コンパイラによって作われるような機械語コードだけではなく、インタープリタなどを使用して、コンピュータによって実行される高級言語コードを含んでもよい。本開示において、コンピュータの一例は、プロセッサにもなり、記録媒体の一例は、メモリにもなる。
【０１３９】
本実施形態と係わる技術分野で当業者は、前述の記載の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるでしょう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それらとと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１４０】
本発明の経路ストロークを遂行する方法及びその装置は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１４１】
１００，１０１  ストローク装置
１１０  １生成部
１２０  マッピング部
１３０  分割部
【図２】
2017054504.tif 000003
【図１５】
2017054504.tif 000004
【図１】
2017054504.tif 000005
【図３】
2017054504.tif 000006
【図４】
2017054504.tif 000007
【図５】
2017054504.tif 000008
【図６】
2017054504.tif 000009
【図７】
2017054504.tif 000010
【図８】
2017054504.tif 000011
【図９】
2017054504.tif 000012
【図１０】
2017054504.tif 000013
【図１１】
2017054504.tif 000014
【図１２】
2017054504.tif 000015
【図１３Ａ】
2017054504.tif 000016
【図１３Ｂ】
2017054504.tif 000017
【図１４】
2017054504.tif 000018
【図１６】
2017054504.tif 000019
【図１７】
2017054504.tif 000020
【図１８】
2017054504.tif 000021
【図１９】
2017054504.tif 000022
【図２０】
2017054504.tif 000023
【図２１】
2017054504.tif 000024