JP6895232B2 - 経路ストロークを遂行する方法及びその装置 - Google Patents

経路ストロークを遂行する方法及びその装置 Download PDF

Info

Publication number
JP6895232B2
JP6895232B2 JP2016169474A JP2016169474A JP6895232B2 JP 6895232 B2 JP6895232 B2 JP 6895232B2 JP 2016169474 A JP2016169474 A JP 2016169474A JP 2016169474 A JP2016169474 A JP 2016169474A JP 6895232 B2 JP6895232 B2 JP 6895232B2
Authority
JP
Japan
Prior art keywords
texture
primitive
stroke
gradient
color
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016169474A
Other languages
English (en)
Other versions
JP2017054504A (ja
Inventor
正 ▲じゅん▼ 兪
正 ▲じゅん▼ 兪
サンディープ クリシュナダサン
サンディープ クリシュナダサン
在 敦 李
在 敦 李
禹 相 玉
相 玉 禹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017054504A publication Critical patent/JP2017054504A/ja
Application granted granted Critical
Publication of JP6895232B2 publication Critical patent/JP6895232B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、経路ストロークを遂行する方法及びその装置に関する。
ベクトルグラフィックス(vector graphics)または経路レンダリング(path rendering)を遂行する場合、グラフィック処理装置(GPU:graphics processing unit)の加速性能を向上させるための方法が研究されている。経路レンダリングの場合、入力データが三角形によって構成されず、コマンド(command)と頂点(vertex)との組み合わせによって構成されている。従って、経路レンダリングを行うとき、グラフィック処理装置の加速性能を向上させ難い。
本発明が解決しようとする課題は、経路ストロークを遂行する方法及びその装置を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。
本実施形態がなす技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
一側面による経路ストロークを遂行する方法は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する段階と、前記判断結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する段階と、前記プリミティブの外郭に沿って、前記テクスチャをマッピングする段階と、を含む。「発生いかん」は「発生したか否か」又は「発生の有無」等と言及されてよい。
他の側面によるコンピュータで読み取り可能な記録媒体は、前述の方法をコンピュータで実行させるためのプログラムを記録した記録媒体を含む。
さらに他の側面による経路ストロークを遂行する装置は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記判断結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する生成部と、前記プリミティブの外郭に沿って、前記テクスチャをマッピングするマッピング部と、を含む。
さらに他の側面によるグラフィック処理装置(GPU)と連結された中央処理装置(CPU)は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記グラフィック処理装置からテクスチャを受信し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングし、前記グラフィック処理装置は、前記中央処理装置の要請によって、前記テクスチャを生成する。
さらに他の側面による中央処理装置と連結されたグラフィック処理装置は、経路データを利用して、前記経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断し、前記判断結果に基づいて、テクスチャを生成して、前記プリミティブの外郭に沿って、前記テクスチャをマッピングする。
本発明のストローク装置によれば、既生成のテクスチャを利用して、ストローク作業を遂行することにより、ストローク作業に要求される演算量が減少するだけではなく、短時間内にストローク作業が遂行される。
また、該ストローク装置によれば、エイリアシング発生いかんに基づいて、適応的にテクスチャを生成することにより、ストローク作業とアンチエイリアシング作業とが同時に遂行される。
一実施形態によるストローク装置の一例を示す構成図である。 (A)は一実施形態によるストロークの一例について説明するための図、(B)は一実施形態によるフィル(fill)の一例について説明するための図面である。 一実施形態によるストローク装置が動作する一例を示したフローチャートである。 一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する一例について説明するためのフローチャートである。 一実施形態による、プリミティブの勾配とエイリアシング発生との相関関係について説明するための図面である。 一実施形態による第1テクスチャの一例について説明するための図面である。 一実施形態による第2テクスチャの一例について説明するための図面である。 一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する他の例について説明するためのフローチャートである。 一実施形態による生成部が第2テクスチャを生成する一例について説明するための図面である。 一実施形態による生成部が第3テクスチャを生成する一例について説明するための図面である。 一実施形態による生成部が第4テクスチャを生成する一例について説明するための図面である。 一実施形態によるマッピング部が動作する一例について説明するための図面である。 一実施形態によるマッピング部が動作する他の例について説明するための図面である。 一実施形態によるマッピング部が動作する他の例について説明するための図面である。 一実施形態によるストローク装置の他の例を図示した構成図である。 (A)〜(D)は一実施形態による分割部が動作する一例について説明するための図面である。 一実施形態による経路ストロークを遂行する方法を示すフローチャートである。 一実施形態による経路ストロークを遂行する方法を示すフローチャートである。 一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。 一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。 一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。 一実施形態による経路ストロークを遂行する方法が、中央処理装置またはグラフィック処理装置で具現される例について説明するための図面である。
実施形態で使用される用語は、本発明での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによって異なる。また、特定の場合は、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分において、詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本発明の全般にわたった内容とを基に定義されるのである。
明細書全体において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…モジュール」のような用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
以下、添付した図面を参照し、本発明の実施形態について、本発明が属する技術分野で当業者が容易に実施することができるように詳細に説明する。しかし、本発明は、さまざまに異なる形態に具現され、ここで説明する実施形態に限定されるものではない。
以下、図面を参照し、本発明の実施形態について詳細に説明する。
図1は、一実施形態によるストローク装置の一例を示す構成図である。図1を参照すれば、ストローク装置100は、生成部110及びマッピング部120を含む。図1に図示されたストローク装置100には、本実施形態と係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、レンダリング遂行に必要な他の汎用的な構成要素がさらに含まれてもよい。また、ストローク装置100は、中央処理装置(CPU)、グラフィック処理装置(GPU)またはハードウェアアクセラレータ(HWA:hardware accelerator)によっても具現される。
生成部110は、経路データを利用して、経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する。例えば、生成部110は、経路データを利用して、プリミティブの勾配を演算し、演算された勾配に基づいて、エイリアシングの発生いかんを判断することができる。
該経路は、レンダリングの対象である客体を構成する要素(element)を意味する。言い換えれば、該客体は、少なくとも1以上の経路が連結されて形成された閉多角形(closed polygon)または閉経路(closed path)を含んでもよい。「客体」は、「オブジェクト」又は「対象」等と言及されてもよい。例えば、該経路は、ライン(line)またはカーブ(curve)に該当する。該プリミティブは、レンダリングに利用される要素であり、客体または経路の細部単位を意味する。ある場合には、経路とプリミティブとが同一対象を指してもよい。
ストローク装置100に入力される経路データ(path data)には、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンド(command)が含まれる。ここで、該頂点は、経路の開始位置に対応する頂点経路の終了位置に対応する頂点、またはカーブの場合、中間位置を制御するための制御点(control point)を含んでもよい。
例えば、フレームに含まれたピクセルのうち、第1ピクセルから第2ピクセルまでのラインを経路であると仮定すれば、頂点は、第1ピクセル及び第2ピクセルそれぞれに対応する地点を意味する。従って、経路データは、第1ピクセルに対応する第1頂点の座標、第2ピクセルに対応する第2ピクセルの座標、及び第1頂点から第2頂点までラインを構成せよというコマンドを含んでもよい。
従って、経路データを参照すれば、経路を構成する頂点それぞれの座標に係わる情報だけではなく、経路の位置及び進行方向に係わる情報も把握される。もし経路がラインであると仮定すれば、経路データに基づいて、ラインの勾配に係わる情報も把握される。また、経路データには、それぞれのピクセルに設定されるカラー値に係わる情報も含まれてもよい。
また、ストローク装置100に入力されるストロークデータ(stroke data)には、ストローク幅(width)、ストロークカラー及び背景(background)カラーに係わる情報のうち少なくとも一つが含まれてもよい。ここで、該ストロークは、客体の外郭線に対応するピクセルにカラーを表示する過程を意味する。
該客体は、少なくとも1つの経路、または少なくとも1つのプリミティブから構成されるので、該ストロークは、経路またはプリミティブに対応するピクセルにカラーを表示する過程を意味する。従って、ストローク装置100がストロークデータを受信することにより、ストローク幅に対応するピクセルに、ストロークカラーが表示される。以下、図2を参照し、ストロークについて説明する。
図2は、一実施形態によるストローク及びフィル(fill)の一例について説明するための図面である。図2の(A)には、ストローク装置100が客体210にストロークを遂行した一例が図示されており、図2の(B)には、ストローク装置100が客体220にフィルを遂行した一例が図示されている。
図2の(A)を参照すれば、客体210の外郭線は、単一カラーに表示されている。言い換えれば、客体210が背景と区別されるように、客体210の外郭線に、所定のカラーが表示されている。ストローク装置100は、客体210の外郭線に対応するプリミティブを、ストロークカラーで表示することができる。具体的には、ストローク装置100は、プリミティブに対応するピクセルにストロークカラーを入力することにより、ストロークを遂行することができる。
一方、図2の(B)を参照すれば、客体220の内部領域は、単一カラーに表示されている。このとき、客体220の外郭線は、背景カラーと同一である。言い換えれば、ストローク装置100は、客体220の内部領域に対応するピクセルに、所定のカラーを入力することにより、フィルを遂行することができる。
再び図1を参照すれば、生成部110は、判断結果に基づいて、テクスチャを生成する。ここで、該テクスチャは、ストローク装置100がストロークを遂行するのに利用するイメージを意味する。生成部110がテクスチャを生成することにより、マッピング部120が、所定の領域に含まれたピクセルにテクスチャをマッピングすることができる。
例えば、エイリアシングが発生しないと判断された場合、生成部110は、ストロークカラーを利用して、テクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部110は、ストロークカラー、及びストロークカラーにグラジエント(gradient)効果が適用されたカラー(以下、「グラジエントカラー」とする)を利用して、テクスチャを生成することができる。
言い換えれば、生成部110は、エイリアシングが発生しないプリミティブについては、色変化がないテクスチャを生成し、エイリアシングが発生するプリミティブについては、色変化があるテクスチャを生成する。
マッピング部120は、プリミティブの外郭に沿ってテクスチャをマッピングする。例えば、マッピング部120は、プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、既生成のテクスチャを順次にマッピングする。ここで、所定の領域は、プリミティブに含まれたピクセルを基準にして、テクスチャの幅に対応する幅を有する領域を意味する。
前述のように、エイリアシングが発生するプリミティブについては、色変化があるテクスチャが生成される。そのとき、テクスチャで色変化がある部分は、アンチエイリアシング(anti-aliasing)の効果を得るための部分である。それによって、マッピング部120が、色変化があるテクスチャをマッピングすることにより、ストロークだけではなく、アンチエイリアシングが完了した結果が出力される。言い換えれば、ストローク装置100は、ストローク作業及びアンチエイリアシング作業を同時に行うことができるが、ストローク装置100の動作に要求される演算量が減少するだけではなく、迅速な速度でレンダリングが行われる。
以下、図3を参照し、ストローク装置100が動作する一例について具体的に説明する。
図3は、一実施形態による経路レンダリングを行う方法の一例を示したフローチャートである。図3を参照すれば、経路レンダリングを行う方法は、図1に図示されたストローク装置100において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図1に図示されたストローク装置100について、以上で記述された内容は、図3の経路レンダリングを行う方法にも適用されるということが分かる。
310段階において、生成部110は、経路データを利用して、経路に含まれたプリミティブに基づいたエイリアシングの発生いかんを判断する。例えば、生成部110は、プリミティブの勾配に基づいて、エイリアシングの発生いかんを判断することができる。
320段階において、生成部110は、判断結果に基づいて、経路ストロークの遂行に利用されるテクスチャを生成する。具体的には、生成部110は、エイリアシングの発生いかんによって、ストロークデータに含まれた情報を利用して、テクスチャを生成することができる。一方、生成されたテクスチャは、ストローク装置100のメモリ(図示せず)に保存される。
一例として、エイリアシングが発生しないと判断された場合、生成部110は、ストロークカラーを利用して、テクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部110は、ストロークカラー及びグラジエントカラーを利用して、テクスチャを生成することができる。
他の例として、エイリアシングが発生しないと判断された場合、生成部110は、ストローク幅に対応するテクスチャを生成することができる。一方、エイリアシングが発生すると判断された場合、生成部110は、ストローク幅より長いテクスチャを生成することができる。
以下、図4ないし図6を参照し、生成部110がエイリアシングの発生いかんを判断し、テクスチャを生成する例について説明する。
図4は、一実施形態による生成部がエイリアシングの発生いかんを判断し、テクスチャを生成する一例について説明するためのフローチャートである。410段階において、生成部110は、プリミティブの勾配が、0または無限大値を有するかということを判断する。プリミティブの勾配が、0または無限大値を有するということは、該プリミティブに基づいたエイリアシングが発生しないということを意味する。例えば、プリミティブがラインであると仮定すれば、ラインの勾配が0ということは、ラインが水平方向に描かれたということを意味する。また、ラインの勾配が無限大値を有するということは、ラインが垂直方向に描かれたということを意味する。ここで、水平方向及び垂直方向は、フレーム内において、ラインが描かれた方向を意味する。
それに反して、プリミティブの勾配が、0の値も無限大値も有しないということは、そのプリミティブに基づいたエイリアシングが発生するということを意味する。例えば、プリミティブがラインであると仮定すれば、フレーム上において、ラインが斜線で描かれた場合、そのラインの勾配は、0の値も無限大値も有しないという。
例えば、生成部110は、経路データを参照し、プリミティブの勾配を演算することができる。経路データには、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンドが含まれる。従って、生成部110は、経路データを参照することにより、プリミティブの開始頂点及び終了頂点が何であるかということが分かり、そのプリミティブがラインであるか、あるいはカーブであるかということを確認することができる。また、プリミティブがラインである場合には、生成部110は、そのラインの勾配を演算することもできる。整理すれば、生成部110は、経路データを参照し、プリミティブの勾配が、0または無限大値を有するかということを判断することができる。もしプリミティブの勾配が、0または無限大値を有する場合には、420段階に進み、そうではない場合には、430段階に進む。
以下、図5を参照し、プリミティブの勾配とエイリアシング発生との相関関係について説明する。
図5は、一実施形態による、プリミティブの勾配とエイリアシング発生との相関関係について説明するための図面である。図5には、フレーム510に描かれた客体520の一例が図示されている。フレーム510は、複数のピクセル511から構成される。例えば、1024*768個のピクセルが、マトリックス形態を構成し、フレーム510が構成される。しかし、フレーム510に含まれたピクセルの数は、前述の1024*768個に限定されるものではない。
ストローク装置100が、客体520のレンダリングを行うことにより、プリミティブに対応するピクセルにカラーが設定される。それによって、フレーム510には、レンダリングが行われた客体520の形状が出力される。
以下では、フレーム510の横方向を「水平方向」にし、縦方向を「垂直方向」にして議論する。ただし、水平方向と垂直方向は、相対的な概念であり、フレーム510を見る方向によって、互いに反対になりもする。
客体520を構成するプリミティブのうち一部は、図5のプリミティブ521のように、水平方向または垂直方向に描かれる。従って、フレーム510に含まれた複数のピクセル511のうちプリミティブ521に対応するピクセルにカラーを設定する場合、プリミティブ521の形状は、歪曲されていない状態で、フレーム510に出力される。
フレーム510の水平方向をx軸方向にし、垂直方向をy軸方向にする座標を設定すれば、プリミティブ521の勾配は、0になる。反対に、フレーム510の垂直方向をx軸方向にし、水平方向をy軸方向にする座標を設定すれば、プリミティブ521の勾配は、無限大になる。言い換えれば、プリミティブ521は、ピクセル511が羅列された方向によって形成される。従って、プリミティブ521に対応するピクセルにカラーを設定する場合、プリミティブ521の形状は、歪曲されずに表現される。
整理すれば、プリミティブ521の勾配が0または無限大である場合、プリミティブ521は、フレーム510上に歪曲されずに出力される。従って、プリミティブ521に基づいたエイリアシングは、発生しない。
一方、客体520を構成するプリミティブのうち他の一部は、図5のプリミティブ522のように、斜線に描かれる。前述のように、フレーム510内のピクセル511は、マトリックス形態に配列される。従って、プリミティブ522に対応するピクセルにカラーを設定する場合、プリミティブ522の形状(プリミティブ522の外郭線)は、歪曲された状態で、フレーム510に出力される。
フレーム510の水平方向及び垂直方向を正数にする座標を設定すれば、プリミティブ522の勾配は、0ではなく、無限大値でもない。整理すれば、プリミティブ522の勾配が、0または無限大値ではない場合、プリミティブ522は、フレーム510上に歪曲されて出力される。従って、プリミティブ522に基づいたエイリアシングが発生する。
生成部110は、エイリアシング発生いかんによって、互いに異なるテクスチャを生成する。特に、生成部110は、プリミティブ522のように、エイリアシングが発生すると判断される場合、ストロークカラー及びグラジエントカラーを利用して、テクスチャを生成する。従って、マッピング部120がプリミティブ522を含む領域に、テクスチャをマッピングすることにより、ストローク作業及びアンチエイリアシング作業が同時に行われる。
生成部110で生成されたプリミティブ522に係わるテクスチャは、プリミティブ上に存在する全てのピクセルを開始点にし、プリミティブの直角である方向にストローク幅の1/2に存在する地点を終了点にする直線に、同一テクスチャがマッピングされる。それは、ユーザが定義するストローク幅(stroke width)と経路ストロークカラーとが、同一プリミティブ上では、いずれも同一であるからである。例えば、ユーザが定義するストローク幅が10である場合、ストローク幅が5であるテクスチュアを生成し、プリミティブ上の任意点を開始点にし、プリミティブの直角である双方向に、幅5ほど離れた地点を終了点にする直線上に、テクスチャがマッピングされる。
ユーザが定義する「ユーザ入力ストローク幅」が2Wであるならば、プリミティブの直角である一方向への幅「ストローク幅」は、Wであり、以下で言及するストローク幅Wは、いずれもプリミティブの直角である一方向での幅を意味する。
再び図4を参照すれば、420段階において、生成部110は、ストロークカラーを利用して、第1テクスチャを生成する。例えば、生成部110は、全体領域がストロークカラーに設定された第1テクスチャを生成することができる。
生成部110は、ストロークデータを参照し、ストローク幅を確認する。そして、生成部110は、ストローク幅に対応するピクセルに、ストロークカラーが設定されるように、第1テクスチャを生成する。言い換えれば、第1テクスチャは、第1テクスチャに含まれたピクセルいずれにも、同一カラーが設定されるように生成される。以下、図6を参照し、第1テクスチャの一例について説明する。
図6は、一実施形態による第1テクスチャの一例について説明するための図面である。図6には、第1テクスチャ610の一例が図示されている。生成部110は、ストロークデータから、ストロークカラー及びストローク幅Wに係わる情報を獲得し、ストローク幅Wに対応するピクセルにストロークカラーを設定することにより、第1テクスチャ610を生成することができる。
そのとき、第1テクスチャ610の高さは、単一ピクセルの高さに対応する。言い換えれば、第1テクスチャ610は、ストローク幅Wに対応する長さほど、一列にピクセルが並んだ形態になる。例えば、ストローク幅Wが10であり、ストロークカラーが黒色であると仮定すれば、生成部110は、ピクセルPからピクセルP1まで、10個のピクセルそれぞれが黒色に設定され、その10個のピクセルが一列に羅列された形態に第1テクスチャ610を生成することができる。ここで、ピクセルPは、プリミティブに含まれたピクセルであり、ピクセルP1の外部は、バックグラウンドBGに該当する。
再び図4を参照すれば、430段階において、生成部110は、ストロークカラー及びグラジエントカラーを利用して、第2テクスチャを生成する。例えば、生成部110は、一部領域がストロークカラーに設定され、残りの領域がグラジエントカラーに設定された第2テクスチャを生成することができる。
生成部110は、ストロークデータを参照し、ストローク幅を確認する。そして、生成部110は、ストローク幅に対応するピクセルにストロークカラーが設定されるように、第2テクスチャの一部領域を生成する。また、生成部110は、所定の幅に対応するピクセルにグラジエントカラーが設定されるように、第2テクスチャの他の領域を生成する。言い換えれば、第2テクスチャは、第2テクスチャに含まれたピクセルに、2以上のカラーが設定されるように生成される。以下、図7を参照し、第2テクスチャの一例について説明する。
図7は、一実施形態による第2テクスチャの一例について説明するための図面である。図7には、第2テクスチャ710の一例が図示されている。生成部110は、ストロークデータから、ストロークカラー及びストローク幅Wに係わる情報を獲得する。そして、生成部110は、ストローク幅Wに対応するピクセルにストロークカラーを設定し、アンチエイリアシング幅W_AAに対応するピクセルにグラジエントカラーを設定することにより、第2テクスチャ710を生成することができる。
そのとき、第2テクスチャ710の高さは、単一ピクセルの高さに対応する。言い換えれば、第2テクスチャ710は、ストローク幅W及びアンチエイリアシング幅W_AAに対応する長さほど、一列にピクセルが並んだ形態になる。例えば、ストローク幅Wが10であり、アンチエイリアシング幅W_AAが1であり、ストロークカラーが黒色であり、バックグラウンドカラーが白色であるとと仮定すれば、生成部110は、ピクセルPからピクセルP1まで、10個のピクセルそれぞれを黒色に設定し、ピクセルP1’を、黒色から白色に徐々に変化するグラジエントカラーに設定する。そして、生成部110は、その11個のピクセルが一列に羅列された形態に、第2テクスチャ710を生成することができる。ここで、ピクセルPは、プリミティブに含まれたピクセルであり、ピクセルP1’の外部は、バックグラウンドBGに該当する。
ここで、アンチエイリアシング幅W_AAは、図8及び図9を参照して説明するように、生成部110によって演算される。
図8は、一実施形態による、生成部がエイリアシング発生いかんを判断し、テクスチャを生成する他の例について説明するためのフローチャートである。図8の810段階及び820段階は、図4の410段階及び420段階に対応する。従って、以下では、810段階に係わる具体的な説明は省略する。
830段階において、生成部110は、ストローク幅より長い第2テクスチャを生成する。具体的には、生成部110は、プリミティブの勾配に対応する角度、及びストローク幅に基づいて、第2テクスチャを生成することができる。言い換えれば、生成部110は、プリミティブの勾配に対応する角度、及びストローク幅によって、ストロークカラーが設定される領域(図7のWに対応する領域)の幅、及びグラジエントカラーが設定される領域(図7のW_AAに対応する領域)の幅をそれぞれ演算することができる。以下、図9を参照し、生成部110が、プリミティブの勾配に対応する角度、及びストローク幅に基づいて、第2テクスチャを生成する例について説明する。
図9は、一実施形態による、生成部が第2テクスチャを生成する一例について説明するための図面である。図9には、プリミティブ910の一例、及び第2テクスチャ920の一例が図示されている。生成部110は、プリミティブ910の勾配に対応する角度θ、及びストローク幅Wに基づいて、第1幅L及び第2幅L_AAを演算する。ここで、第1幅Lは、ストロークカラーが設定される領域の幅を意味し、第2幅L_AAは、グラジエントカラーが設定される領域の幅を意味する。
例えば、生成部110は、下記数式(1)に基づいて、第1幅Lを演算することができる。
L=W/cos(90−θ) (1)
前述の数式(1)で、Lは、第1幅を意味し、Wは、ストローク幅を意味し、θは、プリミティブ910の勾配に対応する角度を意味する。また、数式(1)においては角度が「度」(degree)」で表現されているが、ラジアンで表現されてもよい(以下同様)。
また、生成部110は、下記数式(2)に基づいて、第2幅L_AAを演算することができる。
AA=WAA*L/W (2)
前述の数式(2)で、LAAは、第2幅を意味し、WAAは、アンチエイリアシング幅を意味し、Lは、第1幅を意味し、Wは、ストローク幅を意味する。
一般的に、アンチエイリアシング幅WAAは、1に設定される。アンチエイリアシング幅WAAが1であると仮定し、数式(1)を数式(2)に代入すれば、下記数式(3)が導き出される。
AA=WAA*L/W
=WAA/cos(90−θ)
=1/cos(90−θ) (3)
前述の数式(1)ないし数式(3)を参照すれば、プリミティブ910の勾配が小さくなるほど(θが小さくなるほど)、第1幅Lは、長くなり、それに比例し、第2幅L_AAも長くなる。
生成部110は、前述の数式(1)ないし数式(3)によって、第1幅L及び第2幅L_AAを演算することができる。そして、生成部110は、ストロークデータから、ストロークカラーに係わる情報を獲得することができる。従って、生成部110は、第2テクスチャ920を生成することができる。
一方、客体は、互いに異なる経路、または互いに異なるプリミティブの結合から構成される。従って、互いに異なるプリミティブが重なる領域(以下、「重複領域」とする)が発生する。生成部110は、前述の第1テクスチャまたは第2テクスチャ以外に、重複領域にマッピングされる第3テクスチャを生成することができる。また、生成部110は、プリミティブの末端にマッピングされる第4テクスチャを生成することもできる。以下、図10ないし図11を参照し、生成部110が、第3テクスチャまたは第4テクスチャを生成する一例について説明する。
図10は、一実施形態による生成部が、第3テクスチャを生成する一例について説明するための図面である。図10には、互いに異なる4個のプリミティブ1011,1012,1013,1014によって形成された客体1020の一例が図示されている。具体的には、図10の客体1020は、互いに異なる4個のプリミティブ1011,1012,1013,1014が結合され、プリミティブ1011,1012,1013,1014にストローク作業が行われることによって生成された四角形に図示されている。しかし、客体の形状は、四角形に限定されるものではなく、複数のプリミティブが組み合わされることによって、多様な形状の客体が生成される。
プリミティブ1011,1012,1013,1014に、ストローク作業が行われることにより、互いに異なる4個の重複領域1021,1022,1023,1024が発生する。生成部110は、前述の第1テクスチャまたは第2テクスチャ以外に、重複領域1021,1022,1023,1024それぞれにマッピングされる第3テクスチャ1030を生成することができる。
例えば、生成部110は、円状の第3テクスチャ1030を生成することができる。そのとき、第3テクスチャ1030は、第2テクスチャのように、ストロークカラー及びグラジエントカラーの組み合わせによっても生成される。第3テクスチャ1030が円状である場合、第3テクスチャ1030の外郭線は、フレームの水平方向に配列されたピクセル、または垂直方向に配列されたピクセルによってだけでは具現されない。言い換えれば、第3テクスチャ1030が円状である場合、第3テクスチャ1030に対応する形状を有するプリミティブは、そのプリミティブに基づいたエイリアシングが発生する。
従って、生成部110は、第3テクスチャ1030を、ストロークカラー及びグラジエントカラーに基づいて生成する。具体的には、生成部110は、中心点1031を基準に、半径r内に含まれる領域には、ストロークカラーを適用する。ここで、半径rは、ストローク幅Wに該当する。そして、生成部110は、ストロークカラーが適用された領域と隣接した所定の領域に、グラジエントカラーを適用する。ここで、該所定領域は、アンチエイリアシング幅W_AAに基づいて決定される。また、生成された第3テクスチャ1030は、ストローク装置100のメモリ(図示せず)に保存される。
後述するマッピング部120は、第3テクスチャ1030を、重複領域1021,1022,1023,1024それぞれにマッピングする。例えば、マッピング部120は、第3テクスチャ1030の中心点1031の座標(x,y)を、プリミティブ1011とプリミティブ1014とが出合う地点1051に設定し、第3テクスチャ1030の一部分(例えば、第3テクスチャ1030の1/4部分)を重複領域1021にマッピングすることができる。第3テクスチャ1030の一部(例えば、1041)生成のための選択角度は、2つのプリミティブがなす外角(180°−内角)の大きさのようである。例えば、2つのプリミティブ1011,1014の外角が90°であるので、第3テクスチャ1030の一部(90°、すなわち1/4領域)を重複領域1021にマッピングする。それによって、重複領域1021に、第3テクスチャ1030の一部分がマッピングされた結果1041が出力される。
図11は、一実施形態による、生成部が第4テクスチャを生成する一例について説明するための図面である。図11には、プリミティブ1110によって形成された客体1120の一例が図示されている。具体的には、図11の客体1120は、プリミティブ1110に、ストローク作業が行われることによって生成されたラインで図示されている。
プリミティブ1110に、ストローク作業が行われることにより、2個の末端領域1121,1122が発生する。生成部110は、前述の第1テクスチャまたは第2テクスチャ以外に、末端領域1121,1122それぞれにマッピングされる第4テクスチャ1130を生成することができる。
例えば、生成部110は、円状の第4テクスチャ1130を生成することができる。そのとき、第4テクスチャ1130の一例は、図10の第3テクスチャ1030と同一である。従って、生成部110が、第4テクスチャ1130を生成する具体的な過程についての説明は省略する。また、生成された第4テクスチャ1130は、ストローク装置100のメモリ(図示せず)に保存される。
後述するマッピング部120は、第4テクスチャ1130を、末端領域1121,1122それぞれにマッピングする。例えば、マッピング部120は、第4テクスチャ1130の中心点1131の座標(x,y)を、プリミティブ1110の終了点に設定し、第4テクスチャ1130の一部分(例えば、第4テクスチャ1130の1/2部分)を末端領域1121,1122にマッピングすることができる。それによって、重複領域1121に、第4テクスチャ1130の一部分がマッピングされた結果1141が出力される。
再び図3を参照すれば、330段階において、マッピング部120は、プリミティブの外郭に沿ってテクスチャをマッピングする。具体的には、マッピング部120は、プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、テクスチャを順次にマッピングする。
特に、マッピング部120は、プリミティブの勾配に基づいて方向を決定し、決定された方向によって、プリミティブの外郭に沿ってテクスチャをマッピングすることができる。一例として、プリミティブの勾配が、0または無限大値を有する場合、マッピング部120は、プリミティブに垂直である方向に沿ってテクスチャをマッピングすることができる。他の例として、プリミティブの勾配の絶対値が、0より大きくて1より小さい場合、マッピング部120は、フレームの水平方向に沿ってテクスチャをマッピングすることができる。さらに他の例として、プリミティブの勾配の絶対値が1以上である場合、マッピング部120は、フレームの垂直方向に沿ってテクスチャをマッピングすることができる。
以下、図12ないし図13Bを参照し、マッピング部120が、プリミティブの外郭に沿ってテクスチャをマッピングする例について説明する。
図12は、一実施形態による、マッピング部が動作する一例について説明するための図面である。図12には、プリミティブ1210の一例が図示されている。図12において、プリミティブ1210は、ラインであり、プリミティブ1210の勾配は、無限大値(すなわち、プリミティブ1210は、フレームの垂直方向に描かれる)を有すると仮定する。
プリミティブ1210の勾配が、0または無限大値を有する場合、マッピング部120は、プリミティブ1210に垂直である方向に沿って、テクスチャ1220,1230をマッピングすることができる。図12において、プリミティブ1210の勾配は、無限大値を有するので、マッピング部120は、フレームの水平方向に沿って、テクスチャ1220,1230をマッピングすることができる。
マッピング部120は、プリミティブ1210に含まれたピクセル1211,1212,1213,1214,1215それぞれを基準に設定された所定の領域に、テクスチャ1220,1230を順次にマッピングする。または、マッピング部120は、プリミティブ1210上のピクセル1211,1212,1213,1214,1215それぞれの位置を中心に対称となる所定の領域に、同一テクスチャをマッピングする。ここで、該所定領域は、テクスチャ1220,1230の全体幅に対応する領域を意味する。具体的には、第1テクスチャの場合、該所定領域は、ストローク幅Wに対応する領域を意味し、第2テクスチャの場合、該所定領域は、第1幅L及び第2幅L_AAの和に対応する領域を意味する。1つのプリミティブの所定の領域内には、ストローク幅が同じであるので、同一テクスチャを反復してマッピングすることができる。
図12を参照すれば、マッピング部120は、ピクセル1212を基準に、プリミティブ1210に垂直である方向(すなわち、フレームの水平方向)にテクスチャ1220をマッピングする。その後、マッピング部120は、ピクセル1213を基準に、プリミティブ1210に垂直である方向に、テクスチャ1230をマッピングする。そのような方式で、マッピング部120は、ピクセル1214まで順次にテクスチャをマッピングする。そして、マッピング部120は、図11を参照して説明した方式により、プリミティブ1210の両端のピクセル1211,1215に、テクスチャをマッピングする。
図13A及び図13Bは、一実施形態による、マッピング部が動作する他の例について説明するための図面である。
図13A及び図13Bには、プリミティブ1310,1330の一例が図示されている。具体的には、図13Aに図示されたプリミティブ1310の勾配は、その絶対値が0より大きくて1より小さく、図13Bには、プリミティブ1330の勾配は、その絶対値が1以上である。
図13Aを参照すれば、プリミティブ1310の勾配の絶対値が0より大きくて1より小さい場合、マッピング部120は、フレームの垂直方向に沿って、テクスチャをマッピングする。具体的には、マッピング部120は、プリミティブ1310に含まれた両端のピクセルを除いた残りのピクセルそれぞれに対して、フレームの垂直方向に沿ってテクスチャをマッピングする。そして、マッピング部120は、図11を参照して説明した方式により、プリミティブ1310の両端ピクセルに、テクスチャをマッピングする。
図13Bを参照すれば、プリミティブ1330の勾配の絶対値が1以上である場合、マッピング部120は、フレームの水平方向に沿って、テクスチャをマッピングする。具体的には、マッピング部120は、プリミティブ1330に含まれた両端のピクセルを除いた残りのピクセルそれぞれに対して、フレームの水平方向に沿って、テクスチャをマッピングする。そして、マッピング部120は、図11を参照して説明した方式により、プリミティブ1330の両端のピクセルにテクスチャをマッピングする。
前述のところによれば、ストローク装置100は、プリミティブの特性(例えば、プリミティブの勾配)によって、適応的にテクスチャを生成して保存する。そして、ストローク装置100は、処理速度が速いローカルメモリに保存されたテクスチャを、プリミティブ上にマッピングすることにより、短時間内にストローキング作業を行うことができる。また、ストローク装置100は、生成されたテクスチャを、プリミティブ上にマッピングすることにより、ストローキング作業だけではなく、アンチエイリアシング作業を同時に行うことができる。
図14は、一実施形態によるストローク装置の他の例を図示した構成図である。図14を参照すれば、ストローク装置101は、生成部110、マッピング部120だけではなく、分割部130をさらに含む。図14に図示されたストローク装置101には、本実施形態と係わる構成要素だけが図示されている。従って、図14に図示された構成要素以外に、レンダリング遂行に必要な他の汎用的な構成要素がさらに含まれてもよい。
図14に図示されたストローク装置101の生成部110及びマッピング部120の動作は、図1ないし図13Bを参照して説明した通りである。従って、以下では、生成部110及びマッピング部120に係わる具体的な説明は省略する。
分割部130は、カーブに対応する経路を、複数のプリミティブに分割する。例えば、分割部130は、De_Casteljau法則に基づいて、カーブを複数のプリミティブに分割することができる。ここで、分割されたプリミティブそれぞれは、ラインを意味する。
経路には、カーブが含まれてもよいということは、図1を参照して説明した通りである。経路がカーブである場合、分割部130は、カーブを複数のプリミティブに分割し、生成部110は、それぞれのプリミティブに係わるテクスチャを生成する。そのとき、分割部130は、カーブと類似した形状が示されるように、ラインプリミティブを生成することができる。言い換えれば、分割部130によって生成されたラインプリミティブの集合は、カーブと類似した形状を示すことができる。以下、図15を参照し、分割部130が動作する一例について説明する。
図15は、一実施形態による、分割部が動作する一例について説明するための図面である。図15の(A)には、カーブである経路1510の一例が図示されている。経路1510がカーブである場合、経路データには、経路1510の表現に利用される3個の制御点V1,V2,V3に係わる情報が含まれる。言い換えれば、ストローク装置100は、制御点V1,V2,V3を利用して、経路1510を構成することができる。
一方、制御点V1,V2,V3を組み合わせれば、2本のラインが生成される。言い換えれば、制御点V1と制御点V2とを結ぶ第1ライン、及び制御点V2と制御点V3とを結ぶ第2ラインが生成される。図15の(A)に図示されているように、第1ライン及び第2ラインが連結された形状は、経路1510の様子と若干違いが存在する。
図15の(B)には、経路1510が2個のサブ経路1511,1512に分割された一例が図示されている。言い換えれば、図15の(B)には、1つのカーブが2個のカーブに分割された一例が図示されている。例えば、経路1510は、De_Casteljauアルゴリズムに基づいて分割される。
図15の(A)を参照して説明したように、第1サブ経路1511は、3個の制御点V1,V4,V5によって構成され、第2サブ経路1512は、3個の制御点V5,V6,V3によって構成される。従って、サブ経路1511,1512の制御点V1,V4,V5,V6,V3を組み合わせれば、4本のラインが生成される。
図15の(A)及び(B)を比較すれば、図15の(A)に図示された2本のラインが連結された様子より、図15の(B)に図示された4本のラインが連結された様子が、経路1510の様子とさらに類似している。図15の(C)には、経路1510が4個のサブ経路に分割された一例が図示されており、図15の(D)には、経路1510が8個のサブ経路に分割された一例が図示されている。整理すれば、経路1510の分割回数が増えるほど、制御点を利用して生成されたラインが連結された様子が、経路1510の様子と徐々に類似してくる。
分割部130は、経路1510を、複数のサブ経路に分割する。そして、サブ経路それぞれに対応する制御点を組み合わせ、複数のプリミティブ(すなわち、ライン)を構成する。結論として、分割部130は、経路1510を、複数のプリミティブに分割することができる。そのとき、分割部130が経路1510を分割する回数は、ストローク装置101の計算によって決定され、ユーザの入力によって、既決定の回数が変更されもする。
図16及び図17は、一実施形態による、経路ストロークを遂行する方法を示すフローチャートである。
図16及び図17を参照すれば、経路ストロークを遂行する方法は、図1及び図14に図示されたストローク装置100,101において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図1及び図14に図示されたストローク装置100,101について、以上で記述された内容は、図16及び図17の経路ストロークを遂行する方法にも適用されるということが分かる。
図16を参照すれば、1810段階において、生成部110は、外部装置から経路データを受信する。経路データには、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンドが含まれる。また、生成部110は、外部装置からストロークデータを受信することができる。ストロークデータには、ストローク幅、ストロークカラー及び背景カラーに係わる情報のうち少なくとも一つが含まれてもよい。
1820段階において、生成部110は、既生成のテクスチャが存在するか否かということを判断する。例えば、生成部110は、テクスチャユニット(texture unit)にテクスチャが保存されているか否かということを検索することにより、既生成のテクスチャが存在するか否かということを判断することができる。もし既生成のテクスチャが存在する場合には、1830段階に進み、そうではない場合には、1840段階に進む。
1830段階において、生成部110は、テクスチャユニットからテクスチャを読み取る。そして、生成部110は、読み取ったテクスチャをマッピング部120に伝送する。または、生成部110がマッピング部120に、テクスチャを読み取ることを要請することができ、その要請により、マッピング部120がテクスチャユニットからテクスチャを読み取ることもできる。
1840段階において、生成部110は、テクスチャを生成する。例えば、生成部110は、プリミティブに基づいたエイリアシング発生いかんを判断し、判断結果に基づいて、経路ストロークの遂行に利用されるテクスチャを生成することができる。そのとき、生成部110は、経路データを利用してプリミティブの勾配を演算し、演算された勾配に基づいて、エイリアシング発生いかんを判断することができる。そして、生成部110は、エイリアシングが発生するか否かということによって、適応的にテクスチャを生成することができる。生成部110がテクスチャを生成する例は、図6ないし図11を参照して説明した通りである。
1850段階において、生成部110は、生成したテクスチャをテクスチャユニットに保存する。
1860段階ないし1885段階は、プリミティブに含まれたピクセルそれぞれについて遂行される。言い換えれば、マッピング部120は、プリミティブに含まれたピクセルそれぞれについて、1860段階ないし1885段階を遂行することができる。
1860段階において、マッピング部120は、プリミティブの勾配が、0または無限大値であるか否かということを判断する。例えば、マッピング部120は、生成部110が演算したプリミティブの勾配値を利用して、1860段階を遂行することができる。もしプリミティブの勾配が、0または無限大値である場合には、1881段階に進み、そうではない場合には、1870段階に進む。
1870段階において、マッピング部120は、プリミティブの勾配の絶対値が、0より大きくて1より小さいかということを判断する。もしプリミティブの勾配の絶対値が、0より大きくて1より小さい場合には、1883段階に進み、そうではない場合には、1885段階に進む。
1881段階において、マッピング部120は、プリミティブに垂直である方向に沿って、テクスチャをマッピングする。マッピング部120がプリミティブに垂直である方向に沿って、テクスチャをマッピングする一例は、図12を参照して説明した通りである。
1883段階において、マッピング部120は、水平方向に沿って、テクスチャをマッピングする。ここで、水平方向は、フレームの水平方向を意味する。マッピング部120が、水平方向に沿ってテクスチャをマッピングする一例は、図13Bを参照して説明した通りである。
1885段階において、マッピング部120は、垂直方向に沿って、テクスチャをマッピングする。ここで、垂直方向は、フレームの垂直方向を意味する。マッピング部120が、垂直方向に沿ってテクスチャをマッピングする一例は、図13Aを参照して説明した通りである。
図16に図示されたフローチャートと、図17に図示されたフローチャートとを比較すれば、図16では、1840段階において生成されたテクスチャが、テクスチャユニットに保存されるが、図17では、1940段階で生成されたテクスチャが、中央処理装置内のキャッシュ(cache)に保存される(1950段階)という点で区別される。図19に図示された1910段階ないし1985段階のうち、1950段階を除いた残りの段階は、図18に図示された1810段階ないし1885段階と同一である。
図18ないし図21は、一実施形態による、経路ストロークを遂行する方法が、中央処理装置(CPU)またはグラフィック処理装置(GPU)で具現される例について説明するための図面である。
図18ないし図21には、中央処理装置2000及びグラフィック処理装置2100,2300が図示されている。例えば、中央処理装置2000と、グラフィック処理装置2100,2300は、GL(graphics language) API(application programming interface)を通じて通信することができる。特に、図21に図示されたグラフィック処理装置2300は、ストロークユニット2310をさらに含んでいる点で、図18ないし図20に図示されたグラフィック処理装置2100と区別される。一方、図18ないし図21に図示された中央処理装置2000は、ハードウェアアクセラレータ(HWA)によっても具現される。
一般的に、グラフィック処理装置2100に含まれた細部モジュールが動作する例は、以下の通りである。
入力アセンブラ2110は、経路を構成する少なくとも1つの頂点に係わるデータをメモリから読み取り、読み取られたデータをバーテックスシェーダ2120に伝送する。バーテックスシェーダ2120は、頂点についてユーザが作成したバーテックスシェーダ・プログラムを実行する。ここで、バーテックスシェーダ・プログラムは、一次元テクスチャ上の全てのピクセルの座標を生成するプログラムを意味する。座標が生成されたピクセルは、フラグメントシェーダに伝達され、ユーザが定義したフラグメントシェーダ・プログラムの入力として使用される。
フラグメントシェーダ2160は、テクスチャを生成し、生成されたテクスチャをテクスチャユニット2170に保存する。また、フラグメントシェーダ2160は、フレームに含まれたピクセルそれぞれにカラー値を設定する。そのとき、フラグメントシェーダ2160は、テクスチャユニット2170に保存されたテクスチャを利用して、ピクセルそれぞれにカラー値を設定することができる。
レンダ出力部2180は、フラグメントシェーダ2160が動作することによって生成されたデータ(例えば、ピクセルのカラーに係わる情報)をバッファ(図示せず)に記録する。言い換えれば、フラグメントシェーダ2160は、フレームに含まれたピクセルそれぞれのカラーを決定し、レンダ出力部2180は、ピクセルのカラーに係わる情報を合わせ(merge)、バッファ(図示せず)に記録する。
プリミティブアセンブラ2130、テッセレータ2140及びラスタライザ2150が遂行する機能は、既存のグラフィック処理装置が遂行する機能と同一であるので、詳細な説明は省略する。
図18を参照すれば、中央処理装置またはハードウェアアクセラレータ2000は、グラフィック処理装置2100にシェーダプログラムを利用してテクスチャを生成することを要請し、グラフィック処理装置2100は、テクスチャを生成する。言い換えれば、ストローク装置100,101が遂行する作業のうちテクスチャの生成作業は、グラフィック処理装置2100が行い、残りの作業は、中央処理装置またはハードウェアアクセラレータ2000が行う。
具体的には、中央処理装置またはハードウェアアクセラレータ2000は、ローカルメモリ2010に保存された経路データを利用して、プリミティブに基づいたエイリアシング発生いかんを判断する。もし経路がカーブである場合、中央処理装置またはハードウェアアクセラレータ2000は、カーブが分割することによってプリミティブを生成し(3010)、エイリアシング発生いかんを判断することができる。そして、中央処理装置またはハードウェアアクセラレータ2000は、グラフィック処理装置2100にテクスチャを生成することを要請し、グラフィック処理装置2100からテクスチャを受信し、ローカルメモリ2010に保存する(3020)。そのとき、グラフィック処理装置2100のフラグメントシェーダ2160が、テクスチャを生成することができる。
そして、中央処理装置またはハードウェアアクセラレータ2000は、プリミティブの開始頂点及び終了頂点を生成し、開始頂点及び終了頂点に係わる情報を、ローカルメモリ2010に保存する(3030)。そして、中央処理装置またはハードウェアアクセラレータ2000は、ローカルメモリ2010に保存されたテクスチャと、開始頂点及び終了頂点に係わる情報を利用して、テクスチャをマッピングすることにより、ストローク作業を遂行する(3040)。
図18と図19とを比較すれば、図19に図示された中央処理装置またはハードウェアアクセラレータ2000は、テクスチャを直接生成し、生成されたテクスチャをグラフィック処理装置2100に伝送する(3050)という点で、図18に図示された中央処理装置またはハードウェアアクセラレータ2000と区別される。そのとき、グラフィック処理装置2100は、受信したテクスチャをテクスチャユニット2170に保存することができる。
一般的に、テクスチャユニット2170は、キャッシュメモリを含むので、ストローク作業が遂行されることにより、テクスチャが反復的に使用される場合、迅速にテクスチャが読み取られる。
図18と図20とを比較すれば、図22に図示された中央処理装置またはハードウェアアクセラレータ2000は、テクスチャの生成をグラフィック処理装置2100に要請し、生成されたテクスチャを受信しない(3060)という点で、図18に図示された中央処理装置またはハードウェアアクセラレータ2000と区別される。そのとき、グラフィック処理装置2100のフラグメントシェーダ2160がテクスチャを生成し、生成されたテクスチャをテクスチャユニット2170に保存する。
図18と図21とを比較すれば、図21に図示された中央処理装置またはハードウェアアクセラレータ2000は、グラフィック処理装置2300に、ストローク装置100,101が遂行する全ての作業の遂行を要請するという点で、図18に図示された中央処理装置またはハードウェアアクセラレータ2000と区別される。
具体的には、グラフィック処理装置2300は、経路データを利用して、プリミティブに基づいたエイリアシング発生いかんを判断する。もし経路がカーブである場合、グラフィック処理装置2300は、カーブを分割することによってプリミティブを生成し、エイリアシング発生いかんを判断することができる。そして、グラフィック処理装置2300は、経路ストロークの遂行に利用されるテクスチャを生成し、プリミティブの外郭に沿って、テクスチャをマッピングする。そのとき、グラフィック処理装置2300に含まれたストロークユニット2310が、プリミティブの外郭に沿ってテクスチャをマッピングすることができる。
前述のところによれば、ストローク装置100,101は、既生成のテクスチャを利用して、ストローク作業を遂行することにより、ストローク作業に要求される演算量が減少するだけではなく、短時間内にストローク作業が遂行される。
また、ストローク装置100,101は、エイリアシング発生いかんに基づいて、適応的にテクスチャを生成することにより、ストローク作業とアンチエイリアシング作業とが同時に遂行される。
一方、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体にさまざまな手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM(read only memory)、RAM(random access memory)、USB(universal serial bus)、フロッピーディスク、ハードディスクなど)、光学的判読媒体(例えば、CD(compact disc)−ROM、DVD(digital versatile disc)など)のような記録媒体を含む。
また、前述の方法は、コンピュータで読み取り可能な記録媒体に維持されるプログラムのうち少なくとも1つのプログラムに含まれた命令語(instructions)の実行を介して遂行される。前記命令語がコンピュータによって実行される場合、前記少なくとも1つのコンピュータは、前記命令語に該当する機能を遂行することができる。ここで、該命令語は、コンパイラによって作われるような機械語コードだけではなく、インタープリタなどを使用して、コンピュータによって実行される高級言語コードを含んでもよい。本開示において、コンピュータの一例は、プロセッサにもなり、記録媒体の一例は、メモリにもなる。
本実施形態と係わる技術分野で当業者は、前述の記載の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるでしょう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それらとと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
本発明の経路ストロークを遂行する方法及びその装置は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
100,101 ストローク装置
110 1生成部
120 マッピング部
130 分割部

Claims (31)

  1. 経路ストロークを遂行する方法において、
    経路データを利用して、経路に含まれたプリミティブに基づいて、エイリアシングが発生するか否かを判断する段階と、
    前記判断の結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する段階と、
    前記プリミティブの外郭に沿って、前記テクスチャをマッピングする段階と、を含み、少なくとも2つの経路のプリミティブの交点を中心として、ストローク幅に等しい半径の内側に含まれる半径領域にはストロークカラーが適用され、アンチエイリアシング幅で前記半径領域に隣接する隣接領域にはグラジエントカラーが適用されている、方法。
  2. 前記判断する段階は、
    前記経路データを利用して演算された前記プリミティブの勾配に基づいて、前記エイリアシングが発生するか否かを判断することを特徴とする請求項1に記載の方法。
  3. 前記判断する段階は、
    前記プリミティブの勾配が、0または無限大値を有する場合には、前記エイリアシングが発生しないと判断し、前記プリミティブの勾配が、0でも無限大値でもない場合には、前記エイリアシングが発生すると判断することを特徴とする請求項2に記載の方法。
  4. 前記生成する段階は、
    前記エイリアシングが発生しない場合には、ストロークカラーを利用して、第1テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストロークカラー、及び前記ストロークカラーにグラジエント効果が適用されたカラーを利用して、第2テクスチャを生成することを特徴とする請求項1ないし3のうち何れか1項に記載の方法。
  5. 前記生成する段階は、
    前記エイリアシングが発生しない場合には、ストローク幅に対応する第1テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストローク幅より長い第2テクスチャを生成することを特徴とする請求項1ないし3のうち何れか1項に記載の方法。
  6. 前記第2テクスチャは、
    前記プリミティブの勾配に対応する角度及び前記ストローク幅に基づいて生成されることを特徴とする請求項5に記載の方法。
  7. 前記生成する段階は、
    前記ストローク幅に対応する部分には、ストロークカラーを表示し、前記第2テクスチャの幅から前記ストローク幅が除かれた部分には、前記ストロークカラーにグラジエント効果が適用されたカラーを表示することにより、前記第2テクスチャを生成することを特徴とする請求項5に記載の方法。
  8. 前記マッピングする段階は、
    前記プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、前記テクスチャを順次にマッピングすることを特徴とする請求項1ないし7のうち何れか1項に記載の方法。
  9. 前記所定の領域は、
    前記プリミティブに含まれたピクセルを基準にして、前記テクスチャの幅に対応する幅を有する領域を含むことを特徴とする請求項8に記載の方法。
  10. 前記マッピングする段階は、
    前記プリミティブの勾配に基づいて決定された方向によって、前記テクスチャをマッピングすることを特徴とする請求項1ないし7のうち何れか1項に記載の方法。
  11. 前記マッピングする段階は、
    前記プリミティブの勾配が、0または無限大値を有する場合には、前記プリミティブに垂直である方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配の絶対値が0より大きくて1より小さい場合には、水平方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配が、0でも無限大値でもなく、前記プリミティブの勾配の絶対値が1以上である場合には、垂直方向に沿って、前記テクスチャをマッピングすることを特徴とする請求項10に記載の方法。
  12. カーブに対応する前記経路を、複数のプリミティブに分割する段階をさらに含み、
    前記判断する段階は、前記複数のプリミティブそれぞれに基づいて、エイリアシングが発生するか否かを判断することを特徴とする請求項1に記載の方法。
  13. 前記分割する段階は、
    De_Casteljau法則に基づいて、前記カーブに対応する経路を、前記複数のプリミティブに分割することを特徴とする請求項12に記載の方法。
  14. 請求項1ないし13のうちいずれか1項に記載の方法をコンピュータに実行させるコンピュータプログラム。
  15. 経路ストロークを遂行する装置において、
    経路データを利用して、経路に含まれたプリミティブに基づいて、エイリアシングが発生するか否かを判断し、前記判断の結果に基づいて、前記経路ストロークの遂行に利用されるテクスチャを生成する生成部と、
    前記プリミティブの外郭に沿って、前記テクスチャをマッピングするマッピング部と、
    を含み、少なくとも2つの経路のプリミティブの交点を中心として、ストローク幅に等しい半径の内側に含まれる半径領域にはストロークカラーが適用され、アンチエイリアシング幅で前記半径領域に隣接する隣接領域にはグラジエントカラーが適用されている、装置。
  16. 前記生成部は、
    前記経路データを利用して演算された前記プリミティブの勾配に基づいて、前記エイリアシングが発生するか否かを判断することを特徴とする請求項15に記載の装置。
  17. 前記生成部は、
    前記プリミティブの勾配が、0または無限大値を有する場合には、前記エイリアシングが発生しないと判断し、前記プリミティブの勾配が、0でも無限大値でもない場合には、前記エイリアシングが発生すると判断することを特徴とする請求項16に記載の装置。
  18. 前記生成部は、
    前記エイリアシングが発生しない場合には、ストロークカラーを利用して、第1テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストロークカラー及び前記ストロークカラーにグラジエント効果が適用されたカラーを利用して、第2テクスチャを生成することを特徴とする請求項15ないし17のうち何れか1項に記載の装置。
  19. 前記生成部は、
    前記エイリアシングが発生しない場合には、ストローク幅に対応する第1テクスチャを生成し、前記エイリアシングが発生する場合には、前記ストローク幅より長い第2テクスチャを生成することを特徴とする請求項15ないし17のうち何れか1項に記載の装置。
  20. 前記第2テクスチャは、
    前記プリミティブの勾配に対応する角度及び前記ストローク幅に基づいて生成されることを特徴とする請求項19に記載の装置。
  21. 前記生成部は
    前記ストローク幅に対応する部分には、ストロークカラーを表示し、前記第2テクスチャの幅から、前記ストローク幅が除かれた部分には、前記ストロークカラーにグラジエント効果が適用されたカラーを表示することにより、前記第2テクスチャを生成することを特徴とする請求項19に記載の装置。
  22. 前記マッピング部は、
    前記プリミティブに含まれたピクセルそれぞれを基準に設定された所定の領域に、前記テクスチャを順次にマッピングすることを特徴とする請求項15ないし21のうち何れか1項に記載の装置。
  23. 前記所定の領域は、
    前記プリミティブに含まれたピクセルを基準にして、前記テクスチャの幅に対応する幅を有する領域を含むことを特徴とする請求項22に記載の装置。
  24. 前記マッピング部は、
    前記プリミティブの勾配に基づいて決定された方向によって、前記テクスチャをマッピングすることを特徴とする請求項15ないし21のうち何れか1項に記載の装置。
  25. 前記マッピング部は、
    前記プリミティブの勾配が、0または無限大値を有する場合には、前記プリミティブに垂直である方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配の絶対値が0より大きくて1より小さい場合には、水平方向に沿って、前記テクスチャをマッピングし、前記プリミティブの勾配が、0でも無限大値でもなく、前記プリミティブの勾配の絶対値が1以上である場合には、垂直方向に沿って、前記テクスチャをマッピングすることを特徴とする請求項24に記載の装置。
  26. カーブに対応する前記経路を、複数のプリミティブに分割する分割部をさらに含み、
    前記テクスチャを生成する生成部は、前記複数のプリミティブそれぞれに基づいて、エイリアシングが発生するか否かを判断することを特徴とする請求項15ないし25のうち何れか1項に記載の装置。
  27. 前記分割部は、
    De_Casteljau法則に基づいて、前記カーブに対応する経路を、前記複数のプリミティブに分割することを特徴とする請求項26に記載の装置。
  28. グラフィック処理装置と連結された中央処理装置において、
    経路データを利用して、経路に含まれたプリミティブに基づいてエイリアシングが発生するか否かを判断し、前記グラフィック処理装置からテクスチャを受信し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングし、
    前記グラフィック処理装置は、前記中央処理装置の要請によって、前記テクスチャを生成し、
    少なくとも2つの経路のプリミティブの交点を中心として、ストローク幅に等しい半径の内側に含まれる半径領域にはストロークカラーが適用され、アンチエイリアシング幅で前記半径領域に隣接する隣接領域にはグラジエントカラーが適用されている、中央処理装置。
  29. 前記テクスチャは、前記中央処理装置に保存されることを特徴とする請求項28に記載の中央処理装置。
  30. 前記テクスチャは、前記グラフィック処理装置に保存されることを特徴とする請求項28に記載の中央処理装置。
  31. 中央処理装置と連結されたグラフィック処理装置において、
    経路データを利用して、経路に含まれたプリミティブに基づいてエイリアシングが発生するか否かを判断し、前記判断の結果に基づいて、テクスチャを生成し、前記プリミティブの外郭に沿って、前記テクスチャをマッピングし、
    少なくとも2つの経路のプリミティブの交点を中心として、ストローク幅に等しい半径の内側に含まれる半径領域にはストロークカラーが適用され、アンチエイリアシング幅で前記半径領域に隣接する隣接領域にはグラジエントカラーが適用されている、グラフィック処理装置。
JP2016169474A 2015-09-11 2016-08-31 経路ストロークを遂行する方法及びその装置 Active JP6895232B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2015-0129090 2015-09-11
KR1020150129090A KR102443697B1 (ko) 2015-09-11 2015-09-11 경로 스트로크를 수행하는 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2017054504A JP2017054504A (ja) 2017-03-16
JP6895232B2 true JP6895232B2 (ja) 2021-06-30

Family

ID=56943331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016169474A Active JP6895232B2 (ja) 2015-09-11 2016-08-31 経路ストロークを遂行する方法及びその装置

Country Status (5)

Country Link
US (1) US10885681B2 (ja)
EP (1) EP3142074B1 (ja)
JP (1) JP6895232B2 (ja)
KR (1) KR102443697B1 (ja)
CN (1) CN106530379B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
US10482577B2 (en) * 2016-07-27 2019-11-19 Adobe Inc. Dynamic spread anti-aliasing
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
JP6847885B2 (ja) * 2018-03-20 2021-03-24 株式会社東芝 情報処理装置、情報処理方法及びプログラム
CN110766771B (zh) * 2019-10-18 2023-07-28 天津津航计算技术研究所 一种基于fpga的字符描边方法
CN113052939B (zh) * 2019-12-10 2024-03-08 辉达公司 对路径描边的补丁区段、顶端和连接统一编码

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408598A (en) 1991-05-23 1995-04-18 International Business Machines Corporation Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold
WO1997005576A1 (en) * 1995-07-26 1997-02-13 Silicon Engines, Inc. Method and apparatus for span and subspan sorting rendering system
JP2002073001A (ja) 2000-09-05 2002-03-12 Matsushita Electric Ind Co Ltd 四角形描画方法および装置
US6784884B1 (en) 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US7057615B2 (en) * 2001-06-28 2006-06-06 Microsoft Corporation Method and system for representing and displaying digital ink
JP4301037B2 (ja) * 2004-03-02 2009-07-22 セイコーエプソン株式会社 直線描画装置、直線描画方法および直線描画プログラム
US20060082593A1 (en) * 2004-10-19 2006-04-20 Microsoft Corporation Method for hardware accelerated anti-aliasing in 3D
US7564459B2 (en) 2005-10-31 2009-07-21 Microsoft Corporation Resolution-independent curve rendering using programmable graphics hardware
JP4693660B2 (ja) 2006-03-10 2011-06-01 株式会社東芝 描画装置、描画方法及び描画プログラム
US20070268304A1 (en) 2006-05-22 2007-11-22 Microsoft Corporation Gradient Brush and Stroke
US20070279429A1 (en) 2006-06-02 2007-12-06 Leonhard Ganzer System and method for rendering graphics
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8159499B2 (en) 2007-08-02 2012-04-17 Disney Enterprises, Inc. Rendering of shadows with hand-painted appearance
CN101911123B (zh) 2008-01-15 2012-09-26 三菱电机株式会社 图形描绘装置以及图形描绘方法
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8306328B2 (en) 2009-01-26 2012-11-06 Mitsubishi Electric Research Laboratories Method for converting outline characters to stylized stroke characters
KR101028699B1 (ko) 2009-05-12 2011-04-14 중앙대학교 산학협력단 회화적 렌더링 장치 및 방법
US9818210B2 (en) 2009-07-10 2017-11-14 Adobe Systems Incorporated Pixel-aligned drawing to avoid anti-aliasing
JP4941568B2 (ja) * 2010-02-22 2012-05-30 カシオ計算機株式会社 画像処理装置及びプログラム
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
US8982143B2 (en) * 2010-06-14 2015-03-17 Nintendo Co., Ltd. Method and apparatus for constructing virtual sloped landscapes in computer graphics and animation
US9508185B2 (en) * 2011-05-02 2016-11-29 Sony Interactive Entertainment Inc. Texturing in graphics hardware
US9098938B2 (en) * 2011-11-10 2015-08-04 The Directv Group, Inc. System and method for drawing anti-aliased lines in any direction
KR101980200B1 (ko) 2012-07-12 2019-05-20 삼성전자주식회사 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
US9619853B2 (en) 2012-08-09 2017-04-11 Qualcomm Incorporated GPU-accelerated path rendering
US20140184633A1 (en) 2012-12-31 2014-07-03 Nvidia Corporation Conservative bounding region rasterization
KR101451001B1 (ko) 2013-02-19 2014-10-15 주식회사 엘지유플러스 무선 단말기에 통신 서비스를 제공하기 위한 통신 서비스 제공 시스템 및 그 제어방법과, 무선 랜 접속 장치 및 그 제어방법
CN103400404A (zh) * 2013-07-31 2013-11-20 北京华易互动科技有限公司 一种高效渲染位图运动轨迹的方法
US9779534B2 (en) * 2013-08-28 2017-10-03 Qualcomm Incorporated Prefixed summed length in graphics processing
US20150178961A1 (en) 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for angular subdivision of quadratic bezier curves
KR102219294B1 (ko) 2014-02-13 2021-02-23 삼성전자 주식회사 커브 렌더링 방법 및 장치
KR102238651B1 (ko) 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering

Also Published As

Publication number Publication date
KR20170031479A (ko) 2017-03-21
US20170076470A1 (en) 2017-03-16
KR102443697B1 (ko) 2022-09-15
EP3142074B1 (en) 2021-12-22
JP2017054504A (ja) 2017-03-16
CN106530379B (zh) 2022-08-09
US10885681B2 (en) 2021-01-05
CN106530379A (zh) 2017-03-22
EP3142074A1 (en) 2017-03-15

Similar Documents

Publication Publication Date Title
JP6895232B2 (ja) 経路ストロークを遂行する方法及びその装置
US9589386B2 (en) System and method for display of a repeating texture stored in a texture atlas
US20140043342A1 (en) Extending dx11 gpu for programmable vector graphics
JP2006106705A (ja) アウトラインフォントのレンダリング
CN102096907B (zh) 图像处理技术
JP2017010559A (ja) グラフィックスパイプラインを遂行する方法及びその装置
US20030117589A1 (en) Image processor, components thereof, and rendering method
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
TWI614720B (zh) 具有保守邊界之五維柵格化技術
KR100833842B1 (ko) 3차원 그래픽 엔진에서의 픽셀 래스터라이제이션 처리방법및 그의장치
JP2015210816A (ja) 経路レンダリングを行う方法及びその装置
KR20180060198A (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US20170098294A1 (en) Method and apparatus for executing graphics pipeline
JP6936689B2 (ja) カーブレンダリング方法
US9898838B2 (en) Graphics processing apparatus and method for determining level of detail (LOD) for texturing in graphics pipeline
KR100723421B1 (ko) 포인트 보간에 의한 렌더링 방법, 포인트 보간에 의한 렌더링 장치 및 기록매체
KR101517465B1 (ko) 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
JP2018032301A (ja) 画像処理プロセッサにおける画像データ処理方法及びそのプログラム
KR101227155B1 (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
US20160321835A1 (en) Image processing device, image processing method, and display device
JP3872056B2 (ja) 描画方法
JP5738442B2 (ja) 地図描画装置、ナビゲーション装置および地図描画方法
KR101654865B1 (ko) 스트로크 기반의 이미지 렌더링 장치, 방법 및 컴퓨터 프로그램
WO2013114560A1 (ja) 地図データ作成装置、地図データ作成方法および記憶媒体
JP5661134B2 (ja) 画像処理装置及び画像処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190828

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210607

R150 Certificate of patent or registration of utility model

Ref document number: 6895232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250