JP5423231B2 - グラフィックラスタライゼーションにおける三角形トラバース方法及び装置 - Google Patents

グラフィックラスタライゼーションにおける三角形トラバース方法及び装置 Download PDF

Info

Publication number
JP5423231B2
JP5423231B2 JP2009188003A JP2009188003A JP5423231B2 JP 5423231 B2 JP5423231 B2 JP 5423231B2 JP 2009188003 A JP2009188003 A JP 2009188003A JP 2009188003 A JP2009188003 A JP 2009188003A JP 5423231 B2 JP5423231 B2 JP 5423231B2
Authority
JP
Japan
Prior art keywords
triangle
traverse
pixel
traversing
start pixel
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.)
Expired - Fee Related
Application number
JP2009188003A
Other languages
English (en)
Other versions
JP2010055611A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2010055611A publication Critical patent/JP2010055611A/ja
Application granted granted Critical
Publication of JP5423231B2 publication Critical patent/JP5423231B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Description

本発明は、一般に、イメージを表示する方法及び装置に関する。特に、本発明は、グラフィックラスタライゼーションにおける三角形トラバース方法及び装置に関する。
グラフィックラスタライゼーションは、ラスターグラフィックディスプレイへ伝達するために幾何学的要素(線、三角形、ポリゴン等)を画素に変換する手順である。三角形は、その有用な性質(常に凸であり、常に単平面に属し、複雑な2次元要素の作成が容易)のため、グラフィックラスタライゼーションにおいて最も重要な要素である。「三角形トラバース」は、三角形の内部にある全ての画素を検出する手順である。
エッジ関数は、ハードウェアにおいて三角形をラスタライズする基礎となる。「エッジ関数」は、三角形の3本のエッジの3本の線の関数であり、三角形の3個の頂点により形成される。三角形内の画素は、この画素の座標における3個のエッジ関数値が全て正または全て負となるという特性を持つ。そのため、エッジ関数は画素が三角形の内部にあるか否かを決定するための有用なツールである。
エッジ関数に基づく、多くの三角形トラバース方法が提案されている。例えば、バウンディングボックストラバース、バックトラックトラバース及びジグザグトラバースなどである。
上記のトラバースアルゴリズムは、全て走査線に基づいたトラバース方法である。これらの基本的なアイデアは、三角形のバウンディングボックスを作成し、何らかの順序に従ってそのバウンディングボックスを走査することにある。
一つの側面において、グラフィックラスタライゼーションにおける三角形トラバース方法が提供される。この方法は、三角形をカバーするピクセルからなる最小矩形であるバウンディングボックスを生成し、そのバウンディングボックスに基づいて三角形をトラバースするためのトラバース開始画素を選択し、トラバース開始画素と三角形間の位置関係に基づいてトラバース方向を選択し、そのトラバース方向においてトラバース開始画素から三角形をトラバースすることを含む。三角形をトラバースすることは、トラバース開始画素とトラバース方向に対する三角形のエッジ関数の傾きに基づいて、次の走査開始画素を計算することを含む。
他の側面において、グラフィックラスタライゼーションにおける三角形トラバース装置が提供される。この装置は、三角形の頂点座標を受け取り、その頂点座標を用いることにより三角形のエッジ関数の係数を計算し、三角形のバウンディングボックスを生成し、かつトラバース開始画素及びトラバース方向を選択するセットアップブロックと、エッジ関数の係数、トラバース開始画素及びトラバース方向に基づいて三角形をトラバースするトラバースブロックとを有する。またトラバースブロックは、トラバース開始画素とトラバース方向に対する三角形のエッジ関数の傾きに基づいて、次の走査開始画素を計算する。
ここに開示される方法及び装置は、トラバースにおいてできる限り三角形の外側の画素にアクセスしないことにより、非常に高速かつ効率的な三角形トラバースを実行できる。
三角形を描写するシステムのブロック図である。 一つの実施形態による三角形トラバース方法の概略を示すフローチャートである。 図1に示したシステムのセットアップブロック104及びトラバースブロック105の詳細を示す図である。 三角形のバウンディングボックスの一例を示す図である。 三角形のバウンディングボックスを生成する方法を示すフローチャートである。 四つの異なるケースのうちの一つにおいてそれぞれ選択されるトラバース開始画素を示す図である。 トラバース方向を選択する方法を示すフローチャートである。 二つの異なるケースのうちの一つにおいてそれぞれ選択されるトラバース方向を示す図である。 三角形の完全なトラバースを示す一例の図である。 次の走査行/列における走査開始画素の計算方法を示すフローチャートである。
好ましい実施形態についての以下の記述において、説明目的のため、多数の具体的なディテールが本発明を深く理解するために記述されている。しかしながら、これらの具体的なディテールなしに本発明を実施してもよいことは、当業者にとって明らかであろう。
三角形トラバース方法の効率は、主として、三角形の外側にある画素にアクセスする冗長なコストに依存する。そのため、この実施形態の目的は、極力三角形の外側の画素にアクセスしないようにすることにある。
図1は、三角形を描写するシステムのブロック図である。このシステムは、頂点メモリ101と、変換ブロック102と、投影ブロック103と、セットアップブロック104と、トラバースブロック105と、フレームバッファ106と、ディスプレイ107とを有する。
まず、頂点情報(物体座標)が頂点メモリ101から変換ブロック102へ読み出される。そして変換ブロック102は、頂点座標を変換し、投影ブロック103が変換された頂点座標をデバイス座標に投影する。セットアップブロック104及びトラバースブロック105は、デバイス座標を使用して、どの画素が三角形の内部にあるかを計算し、それらの画素のパラメータ(例えば、色/テクスチャ)を計算する。そしてそのパラメータはフレームバッファ106に書き込まれる。ディスプレイ107は、フレームバッファ106に書き込まれた内容に基づいて表示する。
図2は、一つの実施形態による三角形トラバース方法の概略を示すフローチャートである。この三角形トラバース方法は、バウンディングボックスを生成し(ステップS201)、トラバース開始画素を選択し(ステップS202)、トラバース方向を選択し(ステップS203)、そして三角形をトラバースする(ステップS204)。
以下、三角形トラバース処理方法及び装置を詳しく記述する。
図3は、図1に示したシステムのセットアップブロック104及びトラバースブロック105の詳細を示す図である。セットアップブロック104は、エッジ関数計算ブロック301と、バウンディングボックス生成ブロック302と、トラバース開始画素及びトラバース方向選択ブロック303とを有する。またトラバースブロック105は、開始画素登録ブロック304と、走査ブロック305と、次開始画素計算ブロック306と、描画判定ブロック307と、パラメータ計算ブロック308とを有する。
セットアップブロック104のエッジ関数計算ブロック301は、投影ブロック103から三角形の3個の頂点の座標V0(x0,y0)、V1(x1,y1)及びV2(x2,y2)を受け取る。i=0,1,2に対して、(xi,yi)は浮動小数点値である。また、3個の頂点V0、V1及びV2は、三角形において時計回りに選択される。3個の頂点の座標に基づいて、エッジ関数計算ブロック301は、三角形の3本のエッジのエッジ関数を計算する。
セットアップブロック104のバウンディングボックス生成ブロック302は、投影ブロック103から三角形の3個の頂点の座標を受け取り、その頂点座標を用いて三角形のバウンディングボックスを生成する。三角形のバウンディングボックスは、その三角形をカバーする画素からなる最小矩形であり、その矩形の4個のコーナーにおける画素の座標(xmin,ymin)、(xmin,ymax)、(xmax,ymin)及び(xmax,ymax)により表される。
図4は、三角形のバウンディングボックスの一例を示す図である。以下、三角形のバウンディングボックスを生成する処理について、図4に示した例を参照しつつ説明する。三角形201の3個の頂点は、それぞれ、(x0,y0)、(x1,y1)及び(x2,y2)である。3個の頂点の座標から、以下の中間値が得られる。
ここで関数min()及びmax()は、3個の変数の最小値及び最大値を計算するために使用される。fxmin、fxmax、fymin及びfymaxの全ては、浮動小数点値である。
画素203は座標の整数値に配置されるので、上記の中間値は、以下の操作により整数値に変換される。
ここでceil(float a)関数は、a以上の最小整数を返す関数である。例えば、ceil(1.5)=2である。またfloor(float a)関数は、a以下の最大整数を返す関数である。例えば、floor(1.5)=1である。
三角形の1個以上の頂点は、表示面(図4では図示せず)の外側に存在する可能性があるため、クリップ操作が必要となる。表示面の範囲がクリップウインドウ[clipxmin,clipxmax]、[clipymin,clipymax]により定義されるとすると、クリップ操作は以下のようになる。
if(xmin < clipxmin) xmin = clipxmin;
if(ymin < clipymin) ymin = clipymin;
if(xmax > clipxmax) xmax = clipxmax;
if(ymax > clipymax) ymax = clipymax;
クリップ操作は三角形のバウンディングボックスの4個のコーナーにおける画素の座標、すなわち、(xmin,ymin)、(xmin,ymax)、(xmax,ymin)及び(xmax,ymax)を与え、それらはバウンディングボックスを定義する。
エッジ関数計算ブロック301により計算された三角形のエッジ関数とバウンディングボックス生成ブロック302により生成された三角形のバウンディングボックスに基づいて、セットアップブロック104のトラバース開始画素及びトラバース方向選択ブロック303はトラバース開始画素及びトラバース方向を決定する。
特に、図5に示した処理によれば、トラバース開始画素及びトラバース方向選択ブロック303は、バウンディングボックス生成ブロック302から受け取ったfxmin、fxmax、fymin及びfymaxを用いることにより、バウンディングボックス生成ブロック302において計算された4個のコーナーにおける画素(xmin,ymin)、(xmin,ymax)、(xmax,ymin)及び(xmax,ymax)からトラバース開始画素を選択する。トラバース開始画素は、三角形のバウンディングボックスの4個のコーナーにおける画素(xmin,ymin)、(xmin,ymax)、(xmax,ymin)及び(xmax,ymax)(すなわち、左上、左下、右上、右下)のうちの一つであり、三角形の3個の頂点の座標関係に依存する。その選択を示すコードは以下の通りである。
if((x0 == fxmin && y0 == fymin) || (x1 == fxmin && y1 == fymin) || (x2 == fxmin && y2 == fymin)) startpos = topleft(ステップS501及びS502);
else if((x0 == fxmax && y0 == fymin) || (x1 == fxmax && y1 == fymin) || (x2 == fxmax && y2 == fymin)) startpos = topright (ステップS503及びS504);
else if((x0 == fxmin && y0 == fymax) || (x1 == fxmin && y1 == fymax) || (x2 == fxmin && y2 == fymax)) startpos = bottomleft (ステップS505及びS506);
else if((x0 == fxmax && y0 == fymax) || (x1 == fxmax && y1 == fymax) || (x2 == fxmax && y2 == fymax)) startpos = bottomright (ステップS507及びS508);
なお、上記のコードにおいて、変数startposはトラバース開始画素の位置を表す。また、topleft、topright、bottomleft、bottomrightは、それぞれ、バウンディングボックスの左上、右上、左下、右下のコーナーを表す。
図6は、四つの異なるケースのうちの一つにおいてそれぞれ選択されるトラバース開始画素を示す図である。図6(a)、(b)、(c)及び(d)は、それぞれ、図5におけるステップS502、S504、S506及びS508に対応する。
図5は、所定の順序、すなわち、左上、右上、左下、右下の順序でトラバース開始画素を選択しているが、他の順序に従ってトラバース開始画素を選択してもよい。また、図6は、三角形のただ1個の頂点のみがバウンディングボックスの1個のコーナーの画素に含まれる例として三角形を示した。しかし、三角形の2個以上の頂点がその三角形のバウンディングボックスのコーナーの画素に含まれてもよい。
図示されたように、クリップ操作の前に、バウンディングボックスのコーナーの一つにおける画素に含まれる三角形の頂点が少なくとも一つ存在する。バウンディングボックスがクリップ操作の対象でない場合、トラバース開始画素は、バウンディングボックスの4個のコーナーにある画素のうち、三角形の頂点が含まれる画素の何れかである。バウンディングボックスがクリップ操作の対象となる場合、トラバース開始画素は、クリップ操作の前においてトラバース開始画素が存在するコーナーに対応するコーナーにある画素の一つである。
また、トラバース開始画素及びトラバース方向選択ブロック303は、エッジ関数計算ブロック301から受け取ったエッジ関数の係数と、バウンディングボックスの4個のコーナーにある画素(xmin,ymin)、(xmin,ymax)、(xmax,ymin)及び(xmax,ymax)に基づいて、トラバース方向を選択する。二つのトラバース方向が考えられる。すなわち、水平方向(行)と垂直方向(列)である。トラバース開始画素から三角形の内部に存在する画素が水平ラインにある場合、トラバース方向を水平とし、そうでなければ、トラバース方向を垂直とする。
三角形に対するトラバース開始画素の位置に基づいて、トラバース開始画素から三角形の内部に存在する画素が水平ラインにあるか否かを決定できる。三角形に対するトラバース開始画素の位置は、トラバース開始画素における三角形の3個のエッジ関数の値から得られる。画素が三角形の外側にある場合、この画素における3個のエッジ関数の値を用いて、この画素が三角形の左/右/上/下の何れにあるか否かを決定できる。
以下の4個の式を用いて、画素p(x,y)と三角形の位置関係を決定する。
(1) InLeftTriangle(x,y)
{ if((e0(x,y) < 0 && a0 >= 0) || (e1(x,y) < 0 && a1 >= 0) || (e2(x,y) < 0 && a2 >= 0))
return true; //(三角形の左側にある)
else return false; //(三角形の左側にない)

(2) InRightTriangle(x,y)
{ if((e0(x,y) < 0 && a0 <= 0) || (e1(x,y) < 0 && a1 <= 0) || (e2(x,y) < 0 && a2 <= 0))
return true; //(三角形の右側にある)
else return false; //(三角形の右側にない)

(3) InTopTriangle(x,y)
{ if((e0(x,y) < 0 && b0 <= 0) || (e1(x,y) < 0 && b1 <= 0) || (e2(x,y) < 0 && b2 <= 0))
return true; //(三角形の上方にある)
else return false; //(三角形の上方にない)

(4) InBottomTriangle(x,y)
{ if((e0(x,y) < 0 && b0 >= 0) || (e1(x,y) < 0 && b1 >= 0) || (e2(x,y) < 0 && b2 >= 0))
return true; //(三角形の下方にある)
else return false; //(三角形の下方にない)
図7は、トラバース方向を選択する方法を示すフローチャートである。互いに異なるトラバース開始画素に対して、この方法はバウンディングボックスの4個のコーナーにある画素に基づいてトラバース方向を選択する。図7に示したステップS701、S705、S709及びS713は、トラバース開始画素の四つの異なるケースを表す。四つのブランチS702−S704、S706−S708、S710−S712及びS714−S716は、それぞれ、上記の四つの異なるケースに対応し、トラバース方向を得る決定をなす。
図8(a)及び(b)は、図7に示した処理により得られた二つの異なるトラバース方向の例を示す図である。図8(a)は、図7に示したステップS701、S702及びS704による水平なトラバース方向を示し、一方、図8(b)は、図7に示したステップS701−S730による垂直なトラバース方向を示す。
トラバース開始画素がチェックされてトラバース方向を選択した、図7に示した順序と、図8に示した実例は、全て例示である。図7に示した順序と異なる順序、及び図8に示した例と異なる例とすることも可能である。
この時点で、セットアップブロック104は、エッジ関数、トラバース開始画素及びトラバース方向を算出している。トラバースブロック105は、セットアップブロック104により準備された情報に基づいて三角形をトラバースする。
トラバースブロック105の開始画素登録ブロック304は、先ず、セットアップブロック104のトラバース開始画素及びトラバース方向選択ブロック303からトラバース開始画素を受け取り、そのトラバース開始画素を現在の走査開始画素として登録する。走査ブロック305は開始画素登録ブロック304から現在の走査開始画素を受け取り、セットアップブロック104のトラバース開始画素及びトラバース方向選択ブロック303からトラバース方向を受け取る。そして走査ブロック305は、そのトラバース方向において現在の走査開始画素から三角形の現在の行/列を走査する。そのトラバースにおいて、各行/列の走査開始画素を、極力三角形の外側の画素にアクセスしないよう、適応的に調節して、トラバース速度を向上する。
走査において、走査ブロック305は、走査された画素を描画判定ブロック307へ送る。描画判定ブロック307は、画素が三角形の内部にあるか否かを決定する。その画素の座標における三角形の3個のエッジ関数の値全てが正である場合、その画素は三角形の内部にあると決定できる。描画判定ブロック307は、走査ブロック305から受け取った現在の行/列において三角形の内部にある最初の画素を、次開始画素計算ブロック306へ送る。現在の行/列に三角形の内部にある画素が存在しない場合、トラバースを終了し、トラバースを終了させることを示す命令を走査ブロック305へ送る。
また、描画判定ブロック307は、走査ブロック305から受け取った各画素p(x,y)に対して、現在の行/列の走査を終了するか否かを決定する。描画判定ブロック307が現在の行/列の走査を終了しないと決定した場合、描画判定ブロック307は画素p(x,y)をパラメータ計算ブロック308へ送る。描画判定ブロック307が現在の行/列の走査を終了すると決定した場合、描画判定ブロック307は、現在の行/列の走査を終了させることを示す命令を走査ブロック305へ送る。
画素p(x,y)が以下の条件の一つを満たす場合、描画判定ブロック307は現在の行/列の走査を終了すると決定する。
I (startpos == topleft || startpos == bottomleft) && (direction == horizontal) && (InRightTriangle(x,y) == True);
II (startpos == topright || startpos == bottomright) && (direction == horizontal) && (InLeftTriangle(x,y) == True);
III (startpos == topleft || startpos == topright) && (direction == vertical) && (InBottomTriangle(x,y) == True);
IV (startpos == bottomleft || startpos == bottomright) && (direction == vertical) && (InTopTriangle(x,y) == True)
なお、変数startposは、トラバース開始画素の位置を表す。また、topleft、topright、bottomleft、bottomrightは、それぞれ、バウンディングボックスの左上、右上、左下、右下のコーナーを表す。また変数directionは、トラバース方向を表し、horizontal及びverticalは、それぞれ、水平及び垂直を表す。
描画判定ブロック307から画素を受け取る度に、次開始画素計算ブロック306は次の行/列の走査開始画素を計算する。次の行/列の走査開始画素は、エッジ関数の係数に基づいて適応的に決定される。すなわち、現在の行/列において三角形の内部となる最初の画素と、次の行/列において三角形の内部となる最初の画素との距離を計算することにより、次の行/列の走査開始画素が得られる。
図9は、次の走査画素の選択方法及びこの実施形態によるトラバース方法を簡潔に図示する、三角形の完全なトラバースを示す一例の図である。図9において、トラバース開始画素は左上の画素であり、トラバース方向は水平方向である。またトラバース開始画素は、第1の走査行における走査開始画素でもある。現在の行において三角形の内部となる最初の画素の座標を(xc,yc)とし、前の行において三角形の内部となる最初の画素の座標を(xp,yp)とすると、次の行における走査開始画素(xn,yn)は、以下のように計算される。
同様に、三角形及び異なるトラバース方向に対して、異なる位置における走査開始画素の組み合わせに関しても、次の行/列における走査開始画素を、エッジ関数の係数を用いることにより適応的に選択できる。
図10は、次の行/列における走査開始画素の計算方法を示すフローチャートである。図示した四つのブランチS1001−S1007、S1008−S1014、S1015−S1021及びS1022−S1027を使用して、走査開始画素とトラバース方向の四つの異なる組み合わせに対して、それぞれ、次の行/列における走査開始画素を計算する。
図示したように、トラバース方向が水平であれば、deltaxはxcとxp間の距離である。xc=xpであれば、deltax=0となる。そうでなければ、deltax=|xc-xp|-1となる。deltayの値は、トラバース開始画素がバウンディングボックスの上端の行にあるか下端の行にあるかに因る。トラバース開始画素が上端の行にあれば、deltay=1である。そうでなければ、deltay=-1である。
トラバース方向が垂直であれば、deltayはycとyp間の距離である。yc=ypであれば、deltay=0となる。そうでなければ、deltay=|yc-yp|-1となる。deltaxの値は、トラバース開始画素がバウンディングボックスの左端の列にあるか右端の列にあるかに因る。トラバース開始画素が左端の列にあれば、deltax=1である。そうでなければ、deltax=-1である。
図10に示した四つのブランチの順序は単なる例示にすぎない。他の順序とすることも可能である。
上記の方法によれば、次開始画素計算ブロック306は、次の行/列における走査開始画素を計算し、その走査開始画素を開始画素登録ブロック304へ送る。開始画素登録ブロック304は、次開始画素計算ブロック306から受け取ったその走査開始画素を現在の走査開始画素として登録する。
描画判定ブロック307から現在の行/列の終了を示す命令を受け取ると、走査ブロック305は、開始画素登録ブロック304から以前に登録された現在の走査開始画素を取り出し、次の行/列の走査を開始する。
この走査処理は、トラバース処理が終わるまで繰り返される。
描画判定ブロック307から受け取った各画素p(x,y)について、パラメータ計算ブロック308は、色、テクスチャといったその画素のパラメータを計算し、算出されたパラメータ及び画素をフレームバッファ106へ送る。
これまで、好ましい実施形態について述べてきた。本発明を特定の実施形態において説明してきたが、本発明は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせにおいて実行でき、また本発明は、システム、サブシステム及びそのパーツまたはサブパーツに適用できる。ソフトウェアで実行される場合、この実施形態の各ブロックは、実質的に、プロセッサ上で実行されることにより、所要のタスクを達成するコードセグメントとなる。また、ハードウェアで実行される場合、この実施形態のブロックのそれぞれは、そのブロックの機能を実現する演算回路またはメモリ回路を有する。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)
グラフィックラスタライゼーションにおける三角形トラバース方法であって、
三角形をカバーする画素からなる最小矩形であるバウンディングボックスを生成し、
前記バウンディングボックスに基づいて前記三角形をトラバースするためのトラバース開始画素を選択し、
前記トラバース開始画素と前記三角形の位置関係に基づいてトラバース方向を選択し、
前記トラバース方向において前記トラバース開始画素から前記三角形をトラバースする、ことを含み、
前記三角形をトラバースすることは、前記トラバース開始画素及び前記トラバース方向に対する前記三角形のエッジ関数の傾きに沿って現在の走査開始画素から次の走査開始画素を計算することを含む、
三角形トラバース方法。
(付記2)
前記バウンディングボックスがクリップ操作の対象でない場合、前記トラバース開始画素は、前記バウンディングボックスの4個のコーナーの画素のうち、前記三角形の頂点が含まれるコーナーの画素の一つであり、
前記バウンディングボックスがクリップ操作の対象である場合、前記トラバース開始画素は、前記クリップ操作が行われる前において、前記三角形の頂点が含まれる前記バウンディングボックスのコーナーの一つに対応する、前記バウンディングボックスの4個のコーナーの画素のうちの一つのコーナーの画素である、付記1に記載の三角形トラバース方法。
(付記3)
前記トラバース方向を選択することは、水平方向または垂直方向のうち、前記トラバース開始画素から前記三角形の内部にある画素の方向を、前記トラバース方向とする、付記1に記載の三角形トラバース方法。
(付記4)
前記三角形をトラバースすることは、前記傾きを求めるために前記トラバース方向において現在の行または列における前記三角形の内部にある最初の画素を検出することを含む、付記1に記載の三角形トラバース方法。
(付記5)
前記三角形をトラバースすることは、現在の行において前記三角形の内部にある前記最初の画素と前に走査された行において前記三角形の内部にある前記最初の画素との距離、または、現在の列において前記三角形の内部にある前記最初の画素と前に走査された列において前記三角形の内部にある前記最初の画素との距離を用いて前記傾きを求めることにより、前記次の走査開始画素を導出する、付記4に記載の三角形トラバース方法。
(付記6)
前記三角形をトラバースすることは、現在の行または列の走査を終了するか否かを決定することをさらに含み、現在の行または列における現在の画素が前記三角形の外側にあり、かつ前記トラバース方向に沿って前の画素が前記三角形の内部にある場合に、現在の行または列の走査を終了する、付記1に記載の三角形トラバース方法。
(付記7)
前記三角形をトラバースすることは、前記トラバース方向において前記三角形の内部にある画素が存在しない場合に前記三角形のトラバースを終了することを含む、付記1に記載の三角形トラバース方法。
(付記8)
グラフィックラスタライゼーションにおける三角形トラバース装置であって、
三角形をカバーする画素からなる最小矩形であるバウンディングボックスを生成するバウンディングボックス生成ブロックと、
前記バウンディングボックスに基づいて前記三角形をトラバースするためのトラバース開始画素を選択するトラバース開始画素選択ブロックと、
前記トラバース開始画素と前記三角形の位置関係に基づいてトラバース方向を選択するトラバース方向選択ブロックと、
前記トラバース方向において前記トラバース開始画素から前記三角形をトラバースするトラバースブロックと、を有し、
前記トラバースブロックは、前記トラバース開始画素及び前記トラバース方向に対する前記三角形のエッジ関数の傾きに沿って現在の走査開始画素から次の走査開始画素を計算する手段を有する、
三角形トラバース装置。
(付記9)
前記バウンディングボックスがクリップ操作の対象でない場合、前記トラバース開始画素は、前記バウンディングボックスの4個のコーナーの画素のうち、前記三角形の頂点が含まれるコーナーの画素の一つであり、
前記バウンディングボックスがクリップ操作の対象である場合、前記トラバース開始画素は、前記クリップ操作が行われる前において、前記三角形の頂点が含まれる前記バウンディングボックスのコーナーの一つに対応する、前記バウンディングボックスの4個のコーナーの画素のうちの一つのコーナーの画素である、付記8に記載の三角形トラバース装置。
(付記10)
前記トラバース方向選択ブロックは、水平方向または垂直方向のうち、前記トラバース開始画素から前記三角形の内部にある画素の方向を、前記トラバース方向とする、付記8に記載の三角形トラバース装置。
(付記11)
前記トラバースブロックは、前記傾きを求めるために前記トラバース方向において現在の行または列における前記三角形の内部にある最初の画素を検出する手段を有する、付記8に記載の三角形トラバース装置。
(付記12)
前記トラバースブロックは、現在の行において前記三角形の内部にある前記最初の画素と前に走査された行において前記三角形の内部にある前記最初の画素との距離、または、現在の列において前記三角形の内部にある前記最初の画素と前に走査された列において前記三角形の内部にある前記最初の画素との距離を用いて前記傾きを求めることにより、前記次の走査開始画素を導出する、付記11に記載の三角形トラバース装置。
(付記13)
前記トラバースブロックは、現在の行または列の走査を終了するか否かを決定する手段を有し、現在の行または列における現在の画素が前記三角形の外側にあり、かつ前記トラバース方向に沿って前の画素が前記三角形の内部にある場合に、現在の行または列の走査を終了する、付記8に記載の三角形トラバース装置。
(付記14)
前記トラバースブロックは、前記トラバース方向において前記三角形の内部にある画素が存在しない場合に前記三角形のトラバースを終了する手段をさらに有する、付記8に記載の三角形トラバース装置。
101 頂点メモリ
102 変換ブロック
103 投影ブロック
104 セットアップブロック
105 トラバースブロック
106 フレームバッファ
107 ディスプレイ
301 エッジ関数計算ブロック
302 バウンディングボックス生成ブロック
303 トラバース開始画素及びトラバース方向選択ブロック
304 開始画素登録ブロック
305 走査ブロック
306 次開始画素計算ブロック
307 描画判定ブロック
308 パラメータ計算ブロック

Claims (7)

  1. グラフィックラスタライゼーションにおける三角形トラバース方法であって、
    プロセッサが、三角形をカバーする画素からなる最小矩形であるバウンディングボックスを生成し、
    前記プロセッサが、前記バウンディングボックスに基づいて前記三角形をトラバースするためのトラバース開始画素を選択し、
    前記プロセッサが、前記トラバース開始画素と前記三角形の位置関係に基づいてトラバース方向を選択し、
    前記プロセッサが、前記トラバース方向において前記トラバース開始画素から前記三角形をトラバースする、ことを含み、
    前記三角形をトラバースすることは、前記トラバース開始画素及び前記トラバース方向に対する前記三角形のエッジ関数の傾きに沿って現在の走査開始画素から次の走査開始画素を計算することを含む、
    三角形トラバース方法。
  2. 前記三角形をトラバースすることは、前記傾きを求めるために前記トラバース方向において現在の行または列における前記三角形の内部にある最初の画素を検出することを含む、請求項1に記載の三角形トラバース方法。
  3. 前記三角形をトラバースすることは、現在の行において前記三角形の内部にある前記最初の画素と前に走査された行において前記三角形の内部にある前記最初の画素との距離、または、現在の列において前記三角形の内部にある前記最初の画素と前に走査された列において前記三角形の内部にある前記最初の画素との距離を用いて前記傾きを求めることにより、前記次の走査開始画素を導出する、請求項2に記載の三角形トラバース方法。
  4. 前記三角形をトラバースすることは、現在の行または列の走査を終了するか否かを決定することをさらに含み、現在の行または列における現在の画素が前記三角形の外側にあり、かつ前記トラバース方向に沿って前の画素が前記三角形の内部にある場合に、現在の行または列の走査を終了する、請求項1〜3の何れか一項に記載の三角形トラバース方法。
  5. 前記トラバース方向を選択することは、水平方向または垂直方向のうち、前記トラバース開始画素から前記三角形の内部にある画素の方向を、前記トラバース方向とする、請求項1〜4の何れか一項に記載の三角形トラバース方法。
  6. 前記三角形をトラバースすることは、前記トラバース方向において前記三角形の内部にある画素が存在しない場合に前記三角形のトラバースを終了することを含む、請求項1〜5の何れか一項に記載の三角形トラバース方法。
  7. グラフィックラスタライゼーションにおける三角形トラバース装置であって、
    三角形をカバーする画素からなる最小矩形であるバウンディングボックスを生成するバウンディングボックス生成ブロックと、
    前記バウンディングボックスに基づいて前記三角形をトラバースするためのトラバース開始画素を選択するトラバース開始画素選択ブロックと、
    前記トラバース開始画素と前記三角形の位置関係に基づいてトラバース方向を選択するトラバース方向選択ブロックと、
    前記トラバース方向において前記トラバース開始画素から前記三角形をトラバースするトラバースブロックと、を有し、
    前記トラバースブロックは、前記トラバース開始画素及び前記トラバース方向に対する前記三角形のエッジ関数の傾きに沿って現在の走査開始画素から次の走査開始画素を計算する手段を有する、
    三角形トラバース装置。
JP2009188003A 2008-08-29 2009-08-14 グラフィックラスタライゼーションにおける三角形トラバース方法及び装置 Expired - Fee Related JP5423231B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN200810146771.6 2008-08-29
CN2008101467716A CN101661741B (zh) 2008-08-29 2008-08-29 图形光栅扫描中的三角形遍历方法和装置

Publications (2)

Publication Number Publication Date
JP2010055611A JP2010055611A (ja) 2010-03-11
JP5423231B2 true JP5423231B2 (ja) 2014-02-19

Family

ID=41789715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009188003A Expired - Fee Related JP5423231B2 (ja) 2008-08-29 2009-08-14 グラフィックラスタライゼーションにおける三角形トラバース方法及び装置

Country Status (3)

Country Link
US (1) US20100066744A1 (ja)
JP (1) JP5423231B2 (ja)
CN (1) CN101661741B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8422782B1 (en) * 2010-09-30 2013-04-16 A9.Com, Inc. Contour detection and image classification
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
WO2014185900A1 (en) * 2013-05-15 2014-11-20 Intel Corporation Variable rasterization order for motion blur and depth of field
US10217272B2 (en) * 2014-11-06 2019-02-26 Intel Corporation Zero-coverage rasterization culling
KR101671180B1 (ko) 2014-12-30 2016-11-02 한국에너지기술연구원 중온 산소 선택성 흡착제 및 이의 제조방법
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
CN106371780B (zh) * 2015-07-22 2019-08-13 龙芯中科技术有限公司 矢量图形处理方法和装置
US9959643B2 (en) 2015-10-29 2018-05-01 Intel Corporation Variable rasterization order for motion blur and depth of field
US20190035049A1 (en) * 2017-07-31 2019-01-31 Qualcomm Incorporated Dithered variable rate shading
CN109346028B (zh) * 2018-11-14 2021-03-23 西安翔腾微电子科技有限公司 一种基于tlm的三角形光栅化扫描结构
CN109584334B (zh) * 2018-11-14 2023-04-07 西安翔腾微电子科技有限公司 一种基于uml的三角形光栅化扫描结构及光栅化扫描方法
CN111337939A (zh) * 2018-12-19 2020-06-26 上海蔚来汽车有限公司 一种矩形物体外边框的估计方法及装置
CN109741433B (zh) * 2019-01-08 2023-05-05 西安邮电大学 一种基于Tile的三角形多向并行扫描方法及结构
CN116078703B (zh) * 2023-04-10 2023-07-07 浙江工业大学 一种航空用导管弯曲精度自动补偿方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064679A (ja) * 1992-06-24 1994-01-14 Toshiba Corp イメージ処理装置
US6285376B1 (en) * 1994-09-28 2001-09-04 Samsung Electronics Co., Ltd. Triangle traversing method and a rasterizer adopting the same
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
JP2000298729A (ja) * 1999-04-13 2000-10-24 Matsushita Electric Ind Co Ltd 二次元画像生成装置
US6504542B1 (en) * 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
US6636218B1 (en) * 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
US6714196B2 (en) * 2000-08-18 2004-03-30 Hewlett-Packard Development Company L.P Method and apparatus for tiled polygon traversal
US7081903B2 (en) * 2001-12-12 2006-07-25 Hewlett-Packard Development Company, L.P. Efficient movement of fragment stamp
CN1257436C (zh) * 2002-12-16 2006-05-24 中国科学院电工研究所 图形发生器
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
US7800631B2 (en) * 2003-03-18 2010-09-21 Qualcomm Incorporated Triangle rendering using direct evaluation
JP4064339B2 (ja) * 2003-12-19 2008-03-19 株式会社東芝 描画処理装置、描画処理方法および描画処理プログラム
US7551174B2 (en) * 2003-12-23 2009-06-23 Via Technologies, Inc. Method and apparatus for triangle rasterization with clipping and wire-frame mode support
JP4199159B2 (ja) * 2004-06-09 2008-12-17 株式会社東芝 描画処理装置、描画処理方法、及び描画処理プログラム
JP4327105B2 (ja) * 2005-01-25 2009-09-09 株式会社ソニー・コンピュータエンタテインメント 描画方法、画像生成装置、および電子情報機器
JP4693660B2 (ja) * 2006-03-10 2011-06-01 株式会社東芝 描画装置、描画方法及び描画プログラム

Also Published As

Publication number Publication date
US20100066744A1 (en) 2010-03-18
CN101661741A (zh) 2010-03-03
JP2010055611A (ja) 2010-03-11
CN101661741B (zh) 2012-02-22

Similar Documents

Publication Publication Date Title
JP5423231B2 (ja) グラフィックラスタライゼーションにおける三角形トラバース方法及び装置
CN107256557B (zh) 一种误差可控的细分曲面图像矢量化方法
US7414636B2 (en) Rendering apparatus, rendering processing method and computer program product
JP4160261B2 (ja) 画素ごとのmipマッピングおよび三線フィルタリングの改良された方法および装置
CN105830126A (zh) 激光扫描数据的图像渲染
US6421063B1 (en) Pixel zoom system and method for a computer graphics system
CN100399358C (zh) 图像处理装置及其方法
KR100745768B1 (ko) 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템
RU2469400C1 (ru) Способ преобразования растрового изображения в метафайл
KR100453530B1 (ko) 2차원 폴리곤데이터를 3차원 폴리곤데이터로 변환하여 묘화하는 3차원 그래픽 묘화장치 및 그 방법
KR102018699B1 (ko) 타일 비닝 장치 및 방법
CN111311720B (zh) 一种纹理图像的处理方法和装置
WO2003102875A1 (fr) Dispositif de trace d&#39;un polygone triangulaire et procede de trace d&#39;un polygone triangulaire
KR100453529B1 (ko) 제트 좌표값에 의거하여 알파값을 제어하는 3차원그래픽스 묘화장치 및 그 방법
Hormann et al. A quadrilateral rendering primitive
JPH09259290A (ja) 描画方法
JP2003132353A (ja) 中心線生成プログラム
JP5151946B2 (ja) 描画装置
US20220113261A1 (en) Information processing apparatus, information processing method, and storage medium
JP3703073B2 (ja) 図形表示装置及びその方法
CN111223142A (zh) 一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法
KR20050046775A (ko) 풋프린트의 분석 및 수정 방법
US7170528B1 (en) Fast glyph rendering for vector based fonts
JP3872056B2 (ja) 描画方法
CN102542527B (zh) 一种变换图像形状的方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130927

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: 20131029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees