以下、図面を参照し、本発明の実施形態について詳細に説明する。本発明の下記実施形態は、本発明を具体化するためのものであるのみ、本発明の権利範囲を制限したり限定したりするものではない。また、本発明の詳細な説明及び実施形態から、本発明が属する技術分野で当業者が容易に類推することができるものは、本発明の権利範囲に属するものであると解釈される。
図1は、一実施形態によるレンダリング装置の一例を図示した構成図である。図1を参照すれば、レンダリング装置100は、入力アセンブラ110、バーテックスシェーダ120、プリミティブアセンブラ130、ビニング遂行部140、周回回数演算部150、レンダ出力部160及びバッファ170を含む。図1に図示されたレンダリング装置100には、本実施形態と係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよい。
また、図1に図示されたレンダリング装置100は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによっても具現され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現されもする。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。例えば、レンダリング装置100は、グラフィック処理装置(GPU)を意味する。
レンダリング装置100は、経路レンダリングを行う。ここで、経路は、レンダリングの対象を意味する客体を構成する要素であり、エッジ(edge)またはカーブ(curve)を含む。エッジは、互いに異なる2つの頂点(vertex)を連結する線分を意味し、カーブは、複数の頂点を連結する曲線を意味する。ここで、頂点は、経路の開始位置に対応する頂点、または経路の終了位置に対応する頂点を含む。
例えば、客体は、少なくとも1以上の経路が連結されて形成された閉多角形または閉経路を含んでもよい。
レンダリング装置100は、少なくとも1つの経路を示すコマンドを受信し、コマンドを解釈することにより、フレームに含まれたピクセルそれぞれのカラーを決定する。ここで、レンダリング装置100がピクセルのカラーを決定するということは、ピクセルにカラーを表示するか否かということを決定するだけではなく、カラーが表示されるピクセルにいかなるカラーを設定するかということを決定することを含むということは言うまでもない。従って、レンダリング装置100が動作することにより、画面には、客体が出力される。
例えば、フレームに含まれたピクセルのうち、第1ピクセルから第2ピクセルまでのエッジを経路であると仮定すれば、頂点は、フレームにおいて、第1ピクセル及び第2ピクセルそれぞれに対応する地点を意味する。従って、コマンドは、第1ピクセルに対応する第1頂点の座標、第2ピクセルに対応する第2ピクセルの座標、及び第1頂点から第2頂点まで直線を構成せよという内容を含む。従って、コマンドを参照すれば、経路を構成する頂点それぞれの座標に係わる情報だけではなく、経路の方向に係わる情報も把握される。また、コマンドには、それぞれのピクセルに設定されるカラー値に係わる情報も含まれる。
例えば、レンダリング装置100は、タイル基盤経路レンダリング(tile-based path rendering)を行うことができる。ここで、タイル基盤経路レンダリングは、フレームを仮想のタイルに分割し、タイルそれぞれに対して経路レンダリングを行うことを意味する。レンダリング装置100がタイル基盤経路レンダリングを行うことにより、レンダリングに所要する時間及び電力消費が低減される。
入力アセンブラ110は、経路を構成する少なくとも1つの頂点に係わるデータをメモリから読み取り、読み取られたデータをバーテックスシェーダ120に伝送する。バーテックスシェーダ120は、頂点についてユーザが作成したバーテックスシェーディングコード(vertex shading code)を遂行する。ここで、バーテックスシェーディングコードは、前述のコマンドを意味する。言い換えれば、バーテックスシェーダ120は、経路を示すコマンドを解釈する。例えば、GPUのシェーディングコアがバーテックスシェーダ120の機能を遂行することができる。
プリミティブアセンブラ130は、バーテックスシェーダ120を通過した頂点を集めてプリミティブを構成する。ここで、プリミティブは、頂点から構成される経路であり、客体を構成する要素を意味する。一実施形態によるプリミティブは、エッジまたはカーブを含む。
ビニング遂行部140は、タイルビニングを行う。具体的には、ビニング遂行部140は、経路の形状によって、経路を、第1グループまたは第2グループに分類し、第1グループに含まれた経路と、第2グループに含まれた経路とを区分し、タイルビニングを行う。言い換えれば、ビニング遂行部140は、経路がエッジであるか、あるいはカーブであるかということによって区分し、タイルビニングを行う。例えば、ビニング遂行部140は、フレームに含まれたタイルに、経路の識別値を割り当てることができる。例えば、ビニング遂行部140は、タイルをレンダリングするときに処理しなければならないプリミティブ(エッジまたはカーブ)の名称を含んだリストを、それぞれのタイルごとに生成することができる。以下、エッジの名称を含んだリストを「Edge_List」とし、カーブの名称を含んだリストを「Curve_List」とする。
タイルは、フレームに含まれたピクセルのグループを意味する。例えば、フレームに1024*768個のピクセルが含まれており、フレームが4個のタイルに分割されると仮定すれば、1つのタイルには、512*384個のピクセルが含まれる。
経路の識別値は、経路を指すものであり、既定の名称に該当する。例えば、図4Aにおいて、第1経路e0に対応する経路の識別値は、「e0」でもある。しかし、特定経路を意味するものであって、事前に約束された情報であるならば、制限なしに識別値に該当する。図2Aないし図19、及び図29Aないし図30Bを参照し、ビニング遂行部140が、タイルに、経路の識別値を割り当てる例について追って説明する。
また、ビニング遂行部140は、経路の位置及び進行方向に基づいて、タイルそれぞれの初期周回回数(initial winding number)を演算することができる。図20ないし図28Bを参照し、ビニング遂行部140が、経路それぞれの初期周回回数を演算する例について追って説明する。ただし、ビニング遂行部140が初期周回回数を演算しないのであるならば、周回回数演算部150が初期周回回数を演算することもできる。
周回回数演算部150は、経路の位置及び進行方向に基づいて、タイルそれぞれに含まれたピクセルの周回回数を演算することができる。例えば、周回回数演算部150は、ハードウェア、またはシェーディングコアで動作するソフトウェアによって具現される。図31Aないし図35を参照し、周回回数演算部150がピクセルの周回回数を演算する例について追って説明する。
一方、図1には、周回回数演算部150がレンダリング装置100に含まれているように図示されているが、それに限定されるものではない。言い換えれば、周回回数演算部150は、レンダリング装置100と独立した単一装置にもなる。例えば、独立した周回回数演算部(図示せず)は、レンダリング装置100から、経路に含まれた頂点それぞれの座標に係わる情報、及びフレームに含まれたピクセルの座標に係わる情報を受信する。そして、独立した周回回数演算部(図示せず)は、受信された情報を利用して、ピクセルの周回回数を演算し、演算された周回回数をレンダリング装置100に返す。
言い換えれば、ピクセルの周回回数が、レンダリング装置100に含まれたシェーディングコアで演算されるように具現されもし、レンダリング装置100と独立したハードウェアで演算されるように具現されもする。
レンダ出力部160は、ピクセルシェーダが動作することによって生成されたデータ(例えば、ピクセルのカラーに係わる情報)をバッファ170に記録する。言い換えれば、ピクセルシェーダは、フレームに含まれたピクセルそれぞれのカラーを決定し、レンダ出力部160は、ピクセルのカラーに係わる情報をマージしてバッファ170に記録する。
例えば、ピクセルシェーダは、フレームに含まれたピクセルに係わる情報を受信し、ピクセルそれぞれのカラーを決定することができる。言い換えれば、ピクセルシェーダは、ピクセルそれぞれの周回回数に基づいて、ピクセルのシェーディングを行う。ここで、シェーディングは、ピクセルそれぞれにカラーを設定する過程を意味するが、それに限定されるものではない。例えば、シェーディングは、ピクセルそれぞれに明暗を設定する過程にもなり、ピクセルそれぞれに質感を示す過程にもなる。また、ピクセルシェーダは、テクスチャに基づいて、ピクセルのシェーディングを行うことができる。例えば、ピクセルシェーダは、既設定の規則に基づいて、ピクセルのカラーを決定することができる。図36A,B及びCを参照し、ピクセルシェーダがピクセルのカラーを決定する例についておって説明する。
レンダ出力部160は、ピクセルのカラーに係わる情報をバッファ170に記録する。
図2Aは、一実施形態によるビニング遂行部の一例を図示した構成図である。図2Aを参照すれば、ビニング遂行部140は、獲得部141及び割当て部142を含む。獲得部141または割当て部142は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによって具現されもし、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現されもする。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
獲得部141は、客体を構成する少なくとも1つの経路に係わる情報を獲得する。ここで、客体は、レンダリングが行われる対象を意味し、少なくとも1つのエッジまたはカーブで構成される。言い換えれば、獲得部141は、プリミティブアセンブラ130から、経路(エッジまたはカーブ)に係わる情報を獲得する。ここで、経路に係わる情報は、経路の開始地点に該当する頂点の座標、経路の終了地点に該当する頂点の座標、及び経路の進行方向(すなわち、経路が描かれる方向)を含む。
また、獲得部141は、経路の形状によって、経路を、第1グループまたは第2グループに分類する。ここで、第1グループは、エッジが含まれたグループを意味し、第2グループは、カーブが含まれたグループを意味する。例えば、獲得部141は、経路に係わる情報を利用して、経路それぞれが、第1グループに含まれるか、あるいは第2グループに含まれるということを決定することができる。経路に係わる情報には、経路に含まれた頂点の座標、及び経路の進行方向に係わる情報が含まれている。従って、獲得部141は、経路を、第1グループまたは第2グループに分類することができる。以下、図2Bを参照し、獲得部141が経路を分類する一例について説明する。
図2Bは、一実施形態による獲得部が経路を分類する一例を示す図面である。
ビニング遂行部140は、プリミティブアセンブラ130から経路に係わる情報を獲得する。客体が複数の経路によって構成されていると仮定すれば、ビニング遂行部140は、複数の経路に係わる情報を獲得することができる。図2Bを参照すれば、ビニング遂行部140が7個の経路e0,e1,e2,e3,c0,c1,c2に係わる情報を獲得した一例が図示されている。
獲得部141は、それぞれの経路e0,e1,e2,e3,c0,c1,c2を、第1グループ(リストA)または第2グループ(リストB)に分類する。例えば、獲得部141は、エッジ(e0,e1,e2,e3)に係わる情報を組み合わせて第1グループ(リストA)を構成し、カーブ(c0,c1,c2)に係わる情報を組み合わせて第2グループ(リストB)を構成することができる。
獲得部141が経路を分類することにより、ビニング遂行部140は、経路の形態によって、タイルビニングを並列して行うことができる。言い換えれば、ビニング遂行部140は、エッジe0,e1,e2,e3に対するタイルビニングと、カーブc0,c1,c2に対するタイルビニングと並列して行うことができる。
図2A及び図2Bを参照して説明したところによれば、獲得部141が、経路をエッジまたはカーブに分類すると説明したが、それに限定されるものではない。すなわち、プリミティブアセンブラ130が、ビニング遂行部140に、エッジに係わる情報と、カーブに係わる情報とを区分して伝送することもできる。
再び図2Aを参照すれば、割当て部142は、第1グループに含まれた経路と、第2グループに含まれた経路とを区分し、タイルビニングを行う。
一例として、経路が、第1グループに含まれた経路(エッジ)であると仮定すれば、割当て部142は、フレームに含まれたタイルのうち、経路を含むタイルを選択する。そして、割当て部142は、選択されたタイル、及び選択されたタイルそれぞれの一側方向に並んだ少なくとも1つのタイルに、経路の識別値を割り当てる。図3ないし図7を参照し、経路がエッジである場合、獲得部141及び割当て部142が動作する一例について説明する。
他の例として、経路が、第2グループに含まれた経路(カーブ)であると仮定すれば、割当て部142は、フレームに含まれたタイルのうち、経路に対応する外郭三角形を含むタイルを選択する。そして、割当て部142は、選択されたタイル、及び選択されたタイルそれぞれの一側方向に並んだ少なくとも1つのタイルに、経路の識別値を割り当てる。図8及び図9を参照し、経路がカーブである場合、獲得部141及び割当て部142が動作する一例について追って説明する。
図3は、一実施形態によるビニング遂行部が遂行する動作の一例を示したフローチャートである。
310段階において、獲得部141は、客体を構成する経路に係わる情報を獲得する。例えば、獲得部141は、プリミティブアセンブラ130から、エッジに係わる情報、またはカーブに係わる情報を獲得することができる。また、図3には図示されていないが、獲得部141は、経路がエッジであるか、あるいはカーブであるかということにより、経路を、第1グループまたは第2グループに分類することができる。
320段階において、割当て部142は、フレームに含まれたタイルのうち、経路を含むタイルを選択する。言い換えれば、割当て部142は、フレームに含まれたタイルのうち、経路が通過するタイルを選択する。ここで、割当て部142によって選択されたタイルには、経路の開始地点を含むタイル、及び経路の終了地点を含むタイルが含まれる。以下、図4Aないし図5Eを参照し、割当て部142が、フレームに含まれたタイルのうち、経路を含むタイルを選択する一例について説明する。
図4A及び図4Bは、一実施形態による割当て部が、フレームに含まれたタイルのうち、第1経路が通過するタイルを選択する一例について説明するための図面である。
図4Aには、第1経路e0が図示されている。ここで、第1経路e0は、頂点P0から頂点P1まで連結された直線経路である。第1経路e0の左側から、第1経路e0を見ると仮定すれば、第1経路e0は、反時計回り方向に回転する経路であるということが分かる。
図4Bには、フレーム410に含まれたタイルのうち、第1経路e0が通過するタイル420が図示されている。割当て部142は、フレーム410に含まれたタイルのうち、第1経路e0が通過するタイル420を選択する。割当て部142が、フレーム410に含まれたタイルのうち、第1経路e0が通過するタイル420を選択する一例は、図5Aないし図5Eを参照して説明する。
図5Aないし図5Eは、一実施形態による割当て部が、フレームに含まれたタイルのうち、経路が通過するタイルを選択する一例図面である。
割当て部142は、フレームに含まれたタイルの一側面と出合う経路上の少なくとも1つの地点を決定する。ここで、タイルの一側面は、タイルの左側、右側、上側及び下側のうちいずれか一つを意味する。言い換えれば、割当て部142は、フレームに含まれたタイルの一側外郭線と経路とが出合う地点を決定する。
図5Aを参照すれば、頂点P0から頂点P1まで連結された第1経路e0が図示されている。割当て部142は、フレームに含まれたタイルの一側面と出合う経路上の地点を決定する。例えば、タイルの一側面を、右側外郭線510であると仮定すれば、割当て部142は、第1経路e0が右側外郭線510と出合う(又は接触する又は交わる)地点521を決定する。
そして、割当て部142は、決定された地点521を基準に、経路を仮想で分割する。ここで、割当て部142が経路を仮想で分割するということは、経路を実際に分割するのではなく、割当て部142が、フレームに含まれたタイルのうち、経路が通過するタイルを正確に選択するために、経路の中間地点を計算する過程を意味する。
図5Bを参照すれば、割当て部142は、第1経路e0を、第1経路e0の開始頂点P0から、決定された地点521までの第1サブ経路e01と、決定された地点521から、第1経路e0の終了頂点P1までの第2サブ経路e02とに仮想分割する。
そして、割当て部142は、分割された経路を含むタイルを選択する。例えば、割当て部142は、分割された経路を対角線にする四角形を構成し、構成された四角形を含むタイルを選択する。図5Bを参照すれば、割当て部142は、第1サブ経路e01を対角線にする四角形を構成する。そして、割当て部142は、構成された四角形を含むタイル531を選択する。
もしフレームに含まれたタイルの一側面と経路とが複数の地点で出合う場合、割当て部142は、図5A及び図5Bを参照して説明した過程を反復する。
図5Cを参照すれば、割当て部142は、第1経路e0が、右側外郭線510と出合う地点522を決定する。
そして、割当て部142は、決定された地点522を基準に、経路を仮想分割する。図5Dを参照すれば、割当て部142は、第2サブ経路e02を、第2サブ経路e02の開始頂点521から、決定された地点522までの第3サブ経路e03と、決定された地点522から、第2サブ経路e02の終了頂点P1までの第4サブ経路e04とに分割する。
そして、割当て部142は、分割された経路を対角線にする四角形を構成する。そして、割当て部142は、構成された四角形を含むタイルを選択する。図5Dを参照すれば、割当て部142は、第3サブ経路e03を対角線にする四角形を構成する。そして、割当て部142は、構成された四角形を含むタイル532を選択する。
フレームに含まれたタイルの一側面と経路とが出合う地点がそれ以上ない場合、割当て部142は、第1経路e0が分割された残りのサブ経路を対角線にする四角形を構成し、四角形に含まれたタイルを選択する。図5Eを参照すれば、割当て部142は、第4サブ経路e04を対角線にする四角形を構成する。そして、割当て部142は、構成された四角形を含むタイル533を選択する。
最終的に、割当て部142は、選択したタイル531,532,533を組み合わせることにより、フレームに含まれたタイルのうち、第1経路e0が通過するタイル531,532,533を決定することができる。
図5Aないし図5Eを参照して説明したように、割当て部142は、経路を少なくとも1つのサブ経路に分割し、サブ経路を含むタイルを選択することにより、フレームに含まれたタイルのうち、第1経路e0が通過するタイル531,532,533を正確に選択することができる。
再び図3を参照すれば、330段階において、割当て部142は、選択されたタイル、及び選択されたタイルそれぞれの一側方向に並んだ少なくとも1つのタイルに、経路の識別値を割り当てる。言い換えれば、割当て部142は、経路が通過するタイルに、経路の識別値を割り当て、経路が通過するタイルそれぞれの一側方向に並んだタイルにも、経路の識別値を割り当てる。ここで、一側方向は、選択されたタイル(すなわち、経路が通過するタイル)それぞれの位置を中心に、左側方向、右側方向、上側方向、下側方向のうちいずれか一つを意味する。
割当て部142が、タイルに経路の識別値を割り当てるということは、タイルのEdge_ListまたはCurve_Listを生成することを意味する。例えば、割当て部142は、図4に図示されたタイル420別に、タイルに第1経路e0が通過するという情報をEdge_Listとして生成し、それをビニング遂行部140に含まれたメモリ(図示せず)に保存する。例えば、Edge_Listは、それぞれのタイル別に、ビットストリーム形態で保存される。また、割当て部142は、図4に図示されたタイル420の一側方向に並んだタイルに、第1経路e0に係わる情報(例えば、タイル420を通過する第1経路e0の名称)を含むEdge_Listを生成し、それをメモリ(図示せず)に保存する。
図6は、一実施形態による割当て部が、タイルに経路の識別値を割り当てる一規則について説明するための図面である。図6を参照すれば、タイルAは、経路610が通過するタイルを意味し、タイルBは、経路620の開始頂点を含むタイルを意味する。また、タイルCは、経路630の終了頂点を含むタイルを意味する。
割当て部142は、フレームに含まれたタイルのうち、タイルAないしタイルCに該当するタイルを選択する。そして、割当て部142は、タイルAないしタイルCに、経路610,620,630が通過するということを意味するEdge_Listを生成する。また、割当て部142は、タイルAないしタイルCの一側方向に並んだタイルそれぞれに対して、Edge_Listを生成する。
図7は、一実施形態による割当て部が、タイルに経路の識別値を割り当てた一例を示す図面である。図7には、フレーム710に含まれたタイルのうち、第1経路e0を含むタイル720、及びタイル720それぞれの一側方向に並んだタイル730に、第1経路e0の識別値が割り当てられた一例が図示されている。言い換えれば、図7には、タイル720,730それぞれに対して、Edge_Listが生成された一例が図示されている。タイル720,730それぞれのEdge_Listには、第1経路の名称であるe0が含まれる。
図7において、タイル720それぞれの一側方向は、タイル720それぞれの左側方向を意味するように図示されている。しかし、一側方向は、前述の左側方向だけではなく、右側方向、上側方向または下側方向にも該当するということは、前述の通りである。
一実施形態によるビニング遂行部140は、タイル721の一側方向に並んだタイル731、及びタイル722の一側方向に並んだタイル732に対して、Edge_Listを生成する。従って、レンダリング装置100が、経路それぞれを、独立して処理(すなわち、経路を並列して処理)することができるが、レンダリング装置100の動作に所要する時間及びコスト(例えば、電力)が低減される。
一方、客体を構成する経路は、エッジだけでなくカーブも該当する。言い換えれば、獲得部141は、カーブに係わる情報を獲得し、割当て部142は、フレームに含まれたタイルのうち、一部タイルにカーブの識別値を割り当てることができる(すなわち、Curve_Listを生成する)。以下、図8及び図9を参照し、割当て部142が、タイルにカーブの識別値を割り当てる一例について説明する。
図8は、一実施形態による割当て部が、タイルに経路の識別値を割り当てる他の例を示したフローチャートである。図8の2021段階は、図3の310段階が遂行された以後に遂行されることを前提する。
2021段階において、割当て部142は、フレームに含まれたタイルのうち、経路に対応する外郭三角形を含むタイルを選択する。ここで、経路は、カーブを意味し、外郭三角形の内部にカーブが含まれる。
外郭三角形は、3個のエッジに分割される。言い換えれば、外郭三角形は、頂点に対応する頂点を基準に、3個のエッジに分割される。従って、割当て部142は、フレームに含まれたタイルのうち、3個のエッジそれぞれを含むタイルを選択することができる。
2033段階において、割当て部142は、選択されたタイルそれぞれに、経路の識別値を割り当てる。また、2034段階において、割当て部142は、選択されたタイルそれぞれの一側方向に並んだタイルに、経路の識別値を割り当てる(Curve_Listを生成する)。ここで、一側方向は、右側方向を意味するが、それに限定されるものではない。
図9は、一実施形態による割当て部が、タイルにカーブの識別値を割り当てる一例について説明するための図面である。図9を参照すれば、フレーム3010には、経路C0が図示されている。このとき、経路C0は、外郭三角形3020内に含まれる。具体的には、経路C0の開始頂点P0での勾配に対応するエッジe0と、経路C0の終了頂点P2での勾配に対応するエッジe1とが交差する頂点をP1とすれば、外郭三角形3020は、P0、P1及びP2を頂点とする三角形になる。また、外郭三角形3020は、エッジe0、エッジe1及びエッジe2から構成された三角形になる。
割当て部142は、フレーム3010に含まれたタイルのうち、外郭三角形3020を含むタイル3030を選択する。具体的には、割当て部142は、フレーム3010に含まれたタイルのうち、エッジe0を含むタイル、エッジe1を含むタイル、及びエッジe2を含むタイルを選択することができる。このとき、割当て部142がタイル3030を選択する具体的な方法は、図4Aないし図5をE参照して説明した通りである。
割当て部142は、選択されたタイル3030それぞれに、経路の識別値を割り当てる。例えば、割当て部142は、選択されたタイル3030別に、Curve_Listを生成することができる。また、割当て部142は、選択されたタイル3030の一側方向(例えば、右側方向)に並んだタイルそれぞれにも、経路の識別値を割り当てる。
従って、経路がカーブC0である場合、ビニング遂行部140は、カーブC0を取り囲んでいる外郭三角形3020を利用して、タイルビニングを行うことができる。
図2Aないし図9を参照して説明したところによれば、ビニング遂行部140は、客体を構成する経路の種類によって、並列してタイルビニングを行うことができる。言い換えれば、ビニング遂行部140は、経路がエッジであるか、あるいはカーブであるかというにより、Edge_ListとCurve_Listとをそれぞれ生成することができる。そして、追って説明するように、ビニング遂行部140は、経路の種類(エッジまたはカーブ)によって、並列してタイルの初期周回回数を演算することができる。
従って、レンダリング装置100がレンダリングを行うのに所要する時間が短縮されるだけではなく、レンダリング装置100が消費する電力の量も減少する。
図10は、一実施形態によるビニング遂行部の他の例を図示した構成図である。図10を参照すれば、ビニング遂行部140は、獲得部141、割当て部142及び設定部143を含む。設定部143は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによって具現されもし、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現されもする。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
獲得部141及び割当て部142が動作する一例は、図2Aないし図7を参照して説明した通りである。従って、以下では、獲得部141及び割当て部142に係わる具体的な説明を省略する。
設定部143は、経路に含まれた頂点それぞれに対応する座標を利用して、フレームに境界ボックスを設定する。ここで、境界ボックスは、客体の最外郭頂点を利用して設定されたボックスを意味する。言い換えれば、設定部143は、客体が完全に含まれるように境界ボックスを設定する。
割当て部142は、境界ボックス内に含まれたタイルに、経路の識別値を割り当てる。言い換えれば、割当て部142は、フレームに含まれたタイルのうち、境界ボックス内に含まれたタイルについてのみ経路の識別値を割り当てる。
以下、図11ないし図12Bを参照し、設定部143が境界ボックスを設定する一例について具体的に説明する。
図11は、一実施形態によるビニング遂行部が遂行する動作の他の例を示したフローチャートである。図11の910段階ないし920段階は、図3の310段階ないし320段階と同一である。従って、以下では、910段階ないし920段階についての具体的な説明は省略する。
930段階において、設定部143は、経路に含まれた頂点それぞれに対応する座標を利用して、フレームに境界ボックスを設定する。例えば、境界ボックスは、頂点の座標のうち、水平方向成分の最大値、及び垂直方向成分の最大値によって形成された第1座標と、水平方向成分の最小値、及び垂直方向成分の最小値によって形成された第2座標と結ぶ線を対角線にする四角形になる。
940段階において、割当て部142は、境界ボックス内に含まれたタイルに、経路の識別値を割り当てる。ここで、タイルに経路の識別値が割り当てられるということは、タイルに対して、Edge_ListまたはCurve_Listが生成されるということを意味する。言い換えれば、割当て部142は、図7に図示されたタイル720,730のうち、境界ボックス内に含まれたタイルについてのみ、Edge_ListまたはCurve_Listを生成する。
図12A及び図12Bは、一実施形態による設定部が境界ボックスを設定し、割当て部が、経路の識別値を割り当てる一例について説明するための図面である。
図12Aには、フレーム1010内に含まれた三角形の客体1020が図示されている。客体1020は、第1経路e0、第2経路e1及び第3経路e2によって構成されると仮定する。追って説明する周回回数演算部150は、フレーム1010に含まれたピクセルそれぞれに対して周回回数を演算する。従って、フレーム1010全体領域において、客体1020が占める領域が小さい場合、周回回数演算部150が、フレーム1010に含まれた全てのピクセルに対して周回回数を演算するものではないとしても、経路レンダリングを行うことができる。言い換えれば、周回回数演算部150は、客体1020から遠く離れた位置のピクセルに対しては、周回回数を演算せず、客体1020と隣接した位置のピクセルについてのみ周回回数を演算しても、同一結果を算出することができる。従って、フレーム1010に含まれた全てのピクセルに対して周回回数を演算する場合より、速い速度で経路レンダリングが行われる。
設定部143は、経路に含まれた頂点それぞれに対応する座標を利用して、フレーム1010に境界ボックス1030を設定する。例えば、設定部143は、客体1020に含まれた頂点P0の座標(x1,y1)、頂点P1の座標(x2,y2)、及び頂点P2の座標(x3,y3)を利用して、境界ボックス1030を設定することができる。
設定部143は、頂点P0の座標(x1,y1)、頂点P1の座標(x2,y2)、及び頂点P2の座標(x3,y3)のうち、水平方向座標成分の最大値及び最小値、垂直方向座標成分の最大値及び最小値を利用して、フレームに境界ボックスを設定することができる。まず、設定部143は、頂点のx座標成分(x1,x2,x3)のうち、最大値(x3)と最小値(x1)とを選択する。その後、設定部143は、頂点のy座標成分(y1,y2,y3)のうち、最大値(y2)と最小値(y1)とを選択する。その後、設定部143は、x座標成分の最大値と、y座標成分の最大値とによって、第1座標(x3,y2)を形成する。また、設定部143は、x座標成分の最小値と、y座標成分の最小値とによって、第2座標(x1,y1)を設定する。その後、設定部143は、第1座標(x3,y2)と第2座標(x1,y1)とと結ぶ線を対角線にする四角形を、境界ボックス1030として設定する。
図12Bには、境界ボックス1030に含まれたタイルについてのみ第1経路e0の識別値が割り当てられた例が図示されている。図12Bには、図示されていないが、第2経路e1及び第3経路e2の識別値も、境界ボックス1030に含まれたタイルについてのみ割り当てられる。
図7と比較すれば、図12Bには、第1経路e0を含むタイル1040の左側方向に並んだタイルのうち、境界ボックス1030内に含まれないタイル1050には、Edge_Listが生成されていない。言い換えれば、割当て部142は、境界ボックス1030に含まれたタイルについてのみEdge_Listを生成する。
前述のところによれば、設定部143が、経路の識別値が割り当てられなければならない最小のタイルを含む境界ボックスを設定することにより、周回回数演算部150は、最小個数のピクセルについてのみ周回回数を演算することができる。従って、レンダリング装置100は、経路レンダリングをさらに迅速に行うことができる。
図13は、一実施形態によるビニング遂行部のさらに他の例を図示した構成図である。図13を参照すれば、ビニング遂行部140は、獲得部141、割当て部142及び除去部144を含む。除去部144は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによって具現されもし、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現されもする。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
獲得部141及び割当て部142が動作する一例は、図2Aないし図12Bを参照して説明した通りである。従って、以下では、獲得部141及び割当て部142について具体的な説明を省略する。
除去部144は、少なくとも1つの経路を含むタイル間の位置関係によって、識別値が割り当てられたタイルのうち、少なくとも1つのタイルに割り当てられた識別値を除去する。言い換えれば、除去部144は、割当て部142によって、すでに識別値が割り当てられた一部タイルの識別値を除去する。
以下、図14ないし図20を参照し、除去部144がタイルに割り当てられた識別値を除去する一例について説明する。
図14は、一実施形態によるビニング遂行部が遂行する動作のさらに他の例を示したフローチャートである。図14の1210段階ないし1230段階は、図3の310段階ないし330段階と同一である。従って、以下では、1210段階ないし1230段階についての具体的な説明は省略する。
1240段階において、除去部144は、少なくとも1つの経路を含むタイル間の位置関係によって、識別値が割り当てられたタイルのうち、少なくとも1つのタイルに割り当てられた識別値を除去する。例えば、除去部144は、経路が通過するタイルの座標を利用して、識別値が除去されるタイルを決定することができる。
図15は、一実施形態による、フレームに含まれたタイルに経路の識別値が割り当てられた一例が図示された図面である。図15を参照すれば、フレーム1310には、三角形の客体1320が図示されている。ここで、客体1320は、頂点P0から頂点P1までのエッジである第1経路e0、頂点P1から頂点P2までのエッジである第2経路e1、及び頂点P2から頂点P0までのエッジである第3経路e2から構成されると仮定する。
割当て部142は、第1経路e0、第2経路e1及び第3経路e2を含むタイル1330、及びタイル1330の左側に並んだタイル1340,1350に、経路の識別値を割り当てる。言い換えれば、割当て部142は、タイル1340,1350それぞれに対してEdge_Listを生成する。従って、フレーム1310に含まれた一部タイルには、1つの経路に係わる情報が含まれたEdge_Listが生成され、他の一部タイルには、複数の経路に係わる情報が含まれたEdge_Listが生成される。
一方、Edge_Listが生成されたタイル1330、1340,1350のうち一部タイル1350は、不要にEdge_Listが生成されたタイルでもある。レンダリング装置100によって経路レンダリングが行われれば、客体1320内のピクセルについてのみカラーが設定される。言い換えれば、タイル1350に含まれたピクセルについては、カラーが設定されない。従って、割当て部142が、タイル1350に対してEdge_Listを生成したり、周回回数演算部150が、タイル1350に対して周回回数を演算したりすることは不要な作業に該当する。従って、除去部144が、タイル1350に対して生成されたEdge_Listを除去すれば、レンダリング装置100の効率がさらに高くなる。
除去部144は、経路e0,e1,e2を含むタイル1330の座標を利用して、タイル1350に割り当てられた識別値を除去することができる。以下、図16ないし図20を参照し、除去部144が、タイル1350に割り当てられた識別値を除去する例について説明する。
図16は、一実施形態による、除去部がタイルに割り当てられた識別値を除去する一例を示したフローチャートである。図16に図示された1241段階ないし1243段階は、図12の1240段階について具体的に説明するための段階である。従って、図16の1241段階は、図12の1230段階が遂行された後に遂行されることを前提とする。
1241段階において、除去部144は、フレームに含まれたタイルのうち、タイルそれぞれに対応する座標の垂直方向成分が同一であるタイルを選択する。すなわち、除去部144によって選択されたタイルは、垂直方向成分が同一であり、水平方向成分だけ異なるタイルに該当する。例えば、除去部144は、フレームに含まれたタイルのうち、同一行に含まれたタイルを選択することができる。ただし、座標軸が設定される方向に沿って、同一列に含まれたタイルが選択されもする。
一方、タイルの座標は、ビニング遂行部140によって事前に設定されもする。言い換えれば、フレームが、36個のタイルに分割されると仮定すれば、ビニング遂行部140は、所定のタイルを基準に、36個のタイルそれぞれに座標を設定することができる。
1242段階において、除去部144は、選択されたタイルに含まれた少なくとも1つの経路を含むタイルの水平方向成分を比較することにより、最小水平方向成分を獲得する。1241段階において、除去部144が同一行に含まれたタイルを選択したと仮定すれば、除去部144は、同一行に含まれたタイルのうち、経路が含まれたタイルの水平方向成分を検出することができる。そして、除去部144は、検出された水平方向成分を比較することにより、最小水平方向成分を獲得することができる。
以下、図17を参照し、除去部144が最小水平方向成分を獲得する例について具体的に説明する。
図17は、一実施形態による、除去部が最小水平方向成分を獲得する一例について説明するための図面である。図17には、フレーム1510に含まれた客体1520の一例が図示されている。ここで、客体1520は、頂点P0から頂点P1までのエッジである第1経路e0、頂点P1から頂点P2までのエッジである第2経路e1、頂点P2から頂点P3までのエッジである第3経路e2、及び頂点P3から頂点P0までのエッジである第4経路e3から構成されると仮定する。
また、フレーム1510に含まれたタイルそれぞれには、水平方向座標成分及び垂直方向座標成分が事前に設定されていると仮定する。図17に図示されているように、フレーム1510が、6*6個のタイルから構成されており、ビニング遂行部140が、水平方向に0から5まで、垂直方向に0から5までの値を事前に設定したと仮定する。従って、フレーム1510に含まれたタイルには、(0,0)ないし(5,5)の座標が設定される。
また、図17に図示された水平方向と垂直方向は、互いに反対に設定されてもよい。言い換えれば、図17の水平方向が垂直方向に、図17の垂直方向が水平方向に設定されもする。従って、一実施形態による水平方向及び垂直方向は、いずれの方向を基準にするかということによって異なる。
除去部144は、フレーム1510に含まれたタイルのうち、座標の垂直方向成分が同一であるタイルを選択する。まず、除去部144は、垂直方向成分が0であるタイル1530を選択することができる。言い換えれば、除去部144は、タイル(0,0)、タイル(1,0)、タイル(2,0)、タイル(3,0)及びタイル(4,0)を選択することができる。
そして、除去部144は、選択されたタイル1530のうち、経路e0,e1,e2,e3を含むタイルの水平方向成分を比較する。そして、除去部144は、最小水平方向成分を獲得する。最初に、除去部144は、タイル1530のうち、第1経路e0を含むタイル(4,0)を選択し、最小水平方向成分tile_min_xを4に決定する。その後、除去部144は、タイル1530のうち、第2経路e1を含むタイル(1,0)、タイル(2,0)、タイル(3,0)及びタイル(4,0)を利用して、最小水平方向成分x0を更新する。例えば、第2経路e1を含むタイルの水平方向成分において最小値が1であるので、除去部144は、最小水平方向成分x0を、4から1に更新する。その後、除去部144は、タイル1530のうち、第3経路e2を含むタイル(1,0)及びタイル(2,0)を利用して、最小水平方向成分x0を更新する。例えば、第3経路e2を含むタイルの水平方向成分において最小値が1であるので、除去部144は、最小水平方向成分x0を1に維持する。最終的に、除去部144は、タイル1530の最小水平方向成分x0を1に決定する。
前述のところと同一方式で、除去部144は、座標の垂直方向成分が同一であるタイルそれぞれに対して、最小水平方向成分x1,x2,x3,x4,x5を獲得する。図15に図示されたところによれば、最小水平方向成分x1は、2にで決まって、最小水平方向成分(x2)は、3で決まって、最小水平方向成分(x3)は、2で決定され、最小水平方向成分x4は、1に決定され、最小水平方向成分x5は、1に決定される。
再び図16を参照すれば、1243段階において、除去部144は、選択されたタイルのうち、最小水平方向成分より小さい水平方向成分を有するタイルに割り当てられた識別値を除去する。ここで、タイルに割り当てられた識別値が除去されるということは、タイルに対して生成されたEdge_ListまたはCurve_Listが削除されるということを意味する。
以下、図18A及び図18Bを参照し、除去部144が、タイルに割り当てられた識別値を除去する例について具体的に説明する。
図18A及び図18Bは、一実施形態による除去部が、タイルに割り当てられた識別値を除去する一例について説明するための図面である。
図18Aには、フレーム1610に含まれた客体1620の一例が図示されている。ここで、客体1620は、頂点P0から頂点P1までのエッジである第1経路e0、頂点P1から頂点P2までのエッジである第2経路e1、及び頂点P2から頂点P3までのエッジである第3経路e2から構成されると仮定する。また、図18Aには、経路e0,e1,e2を含むタイル1630、及びタイル1630の左側方向に並んだタイル1640,1650に対してEdge_Listが生成された例が図示されている。
除去部144は、座標の垂直方向成分が同一であるタイルのうち、最小水平方向成分より小さい水平方向成分を有するタイルに割り当てられた識別値を除去(すなわち、Edge_Listを除去)する。
再び図17を参照すれば、タイル1530の最小水平方向成分x0が1であるので、除去部144は、1より小さい水平方向成分を有するタイル(0,0)に割り当てられた識別値を除去する。また、垂直方向成分が1であるタイルの最小水平方向成分x1が2であるので、除去部144は、2より小さい水平方向成分を有するタイル(0,1)、タイル(1,1)に割り当てられた識別値を除去する。それと同一方式で、除去部144は、タイル(0,2)、タイル(1,2)、タイル(2,2)、タイル(0,3)、タイル(1,3)、タイル(0,4)及びタイル(0,5)に割り当てられた識別値を除去する。
再び図18Aを参照すれば、除去部144は、図15を参照して説明したところと同一方式で、タイル1650に対して生成されたEdge_Listを除去する。具体的には、フレーム1610の最初の行に含まれたタイルの最小水平方向成分x0が3であるので、除去部144は、タイル(0,0)、タイル(0,1)、タイル(0,2)に生成されたEdge_Listを除去する。また、フレーム1610の2行目に含まれたタイルの最小水平方向成分x1が2であるので、除去部144は、タイル(1,0)、タイル(1,1)に生成されたEdge_Listを除去する。それと同一方式で、除去部144は、タイル(2,0)、タイル(2,1)、タイル(3,0)、タイル(3,1)、タイル(4,0)及びタイル(5,0)に生成されたEdge_Listを除去する。
図18Bには、除去部144がタイルに割り当てられた経路の識別値を除去した結果が図示されている。除去部144が、客体1620のレンダリングに必要ではないタイルに割り当てられた識別値を除去することにより、客体1620のレンダリングに要求される時間及び電力の消耗が低減する。
一方、除去部144が、タイルに割り当てられた識別値を除去する方法は、図16ないし図18Bを参照して説明した方法に限定されるものではない。客体1620の形状によって、除去部144が識別値を除去するタイルが異なる。従って、除去部144は、座標の水平方向成分が同一であるタイルの最小垂直方向成分を決定し、最小垂直方向成分に基づいて、識別値を除去するタイルを決定することができる。
以下、図19及び図20を参照し、除去部144が、タイルに割り当てられた識別値を除去する他の例について説明する。
図19は、一実施形態による、除去部がタイルに割り当てられた識別値を除去する他の例を示したフローチャートである。図19に図示された1244段階ないし1246段階は、図14の1240段階について具体的に説明するための段階である。従って、図14の1230段階が遂行された後、図19の1244段階が遂行されることを前提とする。
また、図19では、図16の1243段階が遂行された後、1244段階が遂行されるように図示されているが、それに限定されるものではない。言い換えれば、図16に図示された段階が遂行されることなしに、図14の1230段階が遂行された後、すぐに図19に図示された1244段階ないし1246段階が遂行されもする。
1244段階において、除去部144は、フレームに含まれたタイルのうち、タイルそれぞれに対応する座標の水平方向成分が同一であるタイルを選択する。すなわち、除去部144によって選択されたタイルは、水平方向成分が同一であり、垂直方向成分だけ異なるタイルに該当する。例えば、除去部144は、フレームに含まれたタイルのうち、同一列に含まれたタイルを選択することができる。ただし、座標軸が設定される方向に沿って、同一行に含まれたタイルが選択されもする。
一方、タイルの座標は、ビニング遂行部140によって事前に設定されもする。言い換えれば、フレームが36個のタイルに分割されると仮定すれば、ビニング遂行部140は、所定のタイルを基準に、36個のタイルそれぞれに座標を設定することができる。
1245段階において、除去部144は、選択されたタイルに含まれた少なくとも1つの経路を含むタイルの垂直方向成分を比較することにより、最小垂直方向成分及び最大垂直方向成分を獲得する。1244段階において、除去部144が、同一列に含まれたタイルを選択したと仮定すれば、除去部144は、同一列に含まれたタイルのうち、経路が含まれたタイルの垂直方向成分を検出することができる。そして、除去部144は、検出された垂直方向成分を比較することにより、最小垂直方向成分及び最大垂直方向成分を獲得することができる。
1246段階において、除去部144は、選択されたタイルのうち、最小垂直方向成分より小さい垂直方向成分を有するタイルに割り当てられた識別値を除去する。また、除去部144は、選択されたタイルのうち、最大垂直方向成分より大きい垂直方向成分を有するタイルに割り当てられた識別値を除去する。ここで、タイルに割り当てられた識別値が除去されるということは、タイルに対して生成されたEdge_ListまたはCurve_Listが削除されるということを意味する。
以下、図20を参照し、除去部144がタイルに割り当てられた識別値を除去する具体的に説明する。
図20は、一実施形態による、除去部がタイルに割り当てられた識別値を除去する他の例について説明するための図面である。図20には、フレーム1810に含まれた客体1820の一例が図示されている。ここで、客体1820は、頂点P0,P1,P2,P3,P4,P5を順に結ぶエッジから構成されると仮定する。また、図20には図示されていないが、フレーム1810に含まれたタイルそれぞれに対して経路の識別値が割り当てられている(すなわち、Edge_Listが生成されている)と仮定する。
また、フレーム1810に含まれたタイルそれぞれには、水平方向座標成分及び垂直方向座標成分が事前に設定されていると仮定する。図20に図示されているように、フレーム1810が、6*6個のタイルから構成されており、ビニング遂行部140が、水平方向に0から5まで、垂直方向に0から5までの値を事前に設定したと仮定する。従って、フレーム1810に含まれたタイルには、(0,0)ないし(5,5)の座標が設定される。
また、図20に図示された水平方向と垂直方向は、互いに反対に設定されてもよい。言い換えれば、図20の水平方向が垂直方向に、図20の垂直方向が水平方向に設定されもする。従って、一実施形態による水平方向及び垂直方向は、いずれの方向を基準にするかということによって異なる。
図16ないし図18Bを参照して説明したところによれば、除去部144は、フレーム1810に含まれたタイルのうち一部タイル1830に割り当てられた識別値を除去することができる。言い換えれば、除去部144は、タイルの座標成分を利用して、最小水平方向成分tile_min_xlistを獲得し、最小水平方向成分を利用して、タイル1830に割り当てられた識別値を除去することができる。
除去部144は、フレーム1810に含まれたタイルのうち、座標の水平方向成分が同一であるタイルを選択する。除去部144は、水平方向成分が1であるタイル1840を選択することができる。言い換えれば、除去部144は、タイル(0,1)、タイル(1,1)、タイル(2,1)、タイル(3,1)及びタイル(4,1)を選択することができる。
そして、除去部144は、選択されたタイル1840において、経路e0,e1,e2,e3を含むタイルの垂直方向成分を比較する。そして、除去部144は、最小垂直方向成分及び最大垂直方向成分を獲得する。例えば、除去部144は、タイル1840の最小垂直方向成分を0に、最大垂直方向成分を5に決定することができる。ここで、除去部144が、最小垂直方向成分及び最大垂直方向成分を獲得する方法は、図17を参照して説明した方法が採用される。
前述のところと同一方式で、除去部144は、座標の垂直方向成分が同一であるタイルそれぞれに対して、最小垂直方向成分及び最大垂直方向成分を獲得する。図20に図示されたところによれば、3列目に対する最小垂直方向成分は、0に、最大垂直方向成分は、4に決定される。また、4列目に対する最小垂直方向成分は、1に、最大垂直方向成分は、4に決定され、5列目に対する最小垂直方向成分は、0に、最大垂直方向成分は、5に決定され、6列目に対する最小垂直方向成分は、4に、最大垂直方向成分は、5に決定される。
除去部144は、座標の水平方向成分が同一であるタイルから、最小垂直方向成分より小さい垂直方向成分を有するタイルに割り当てられた識別値を除去(すなわち、Edge_Listを除去)する。また、除去部144は、座標の水平方向成分が同一であるタイルから、最大垂直方向成分より大きい垂直方向成分を有するタイルに割り当てられた識別値を除去(すなわち、Edge_Listを除去)する。例えば、タイル1850の最小垂直方向成分が1であるので、除去部144は、1より小さい垂直方向成分を有するタイル(0,3)に割り当てられた識別値を除去する。また、タイル1850の最大垂直方向成分が4であるので、除去部144は、4より大きい垂直方向成分を有するタイル(5,3)に割り当てられた識別値を除去する。
前述の方式によれば、除去部144は、タイル(5,2)、タイル(0,3)及びタイル(5,3)に割り当てられた識別値を除去することができる。従って、レンダリング装置100は、客体1820のレンダリングをさらに効率的に行うことができる。
一方、設定部143が、フレームに境界ボックスを設定することができるということは、図10ないし図12Bを参照して説明した通りである。もしフレームに境界ボックスが設定されている場合、除去部144は、境界ボックス内に含まれたタイルについてのみ識別値を除去することもできる。
図21A及び図21Bは、一実施形態による、フレームに境界ボックスが設定された場合、除去部が動作する一例について説明するための図面である。
図21Aを参照すれば、フレーム1910に客体1920が図示されており、客体1920の外郭には、境界ボックス1930が設定されている。設定部143は、客体1920に含まれた頂点P0,P1,P2に対応する座標を利用して、フレーム1910に境界ボックス1930を設定することができる。また、割当て部142は、フレーム1910に含まれたタイルのうち、境界ボックス1930内に含まれたタイルについてのみ経路の識別値を割り当てる。図21Aには、境界ボックス1930内に含まれたタイルに対してEdge_Listが生成された例が図示されている。
除去部144は、識別値が割り当てられたタイルのうち一部タイルに割り当てられた識別値を除去することができる。例えば、除去部144は、図13ないし図20を参照して説明した方法によって、最小水平方向成分tile_min_xlistを獲得し、最小水平方向成分を利用して、不要に割り当てられた識別値を除去する。
図21Bを参照すれば、除去部144が、一部タイルに割り当てられた識別値を除去した結果が図示されている。図21A及び図21Bを比較すれば、除去部144は、タイル1940に割り当てられた識別値を除去することができる。このとき、除去部144が、タイル1940に割り当てられた識別値を除去する具体的な方法は、図13ないし図20を参照して説明した通りである。従って、以下では、具体的な説明を省略する。
図22は、一実施形態による、ビニング遂行部のさらに他の例を図示した構成図である。図22を参照すれば、ビニング遂行部140は、獲得部141、割当て部142及び演算部145を含む。演算部145は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによって具現されもし、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現されもする。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
獲得部141及び割当て部142が動作する一例は、図2Aないし図21Bを参照して説明した通りである。従って、以下では、獲得部141及び割当て部142について具体的な説明を省略する。
演算部145は、経路を含むタイルのうちから選択された第3タイルの一側方向に並んだ少なくとも1つのタイルの初期周回回数(initial winding number)を演算する。ここで、第3タイルは、経路を含むタイルのうち、経路の開始頂点を含む第1タイル、及び経路の終了頂点を含む第2タイルが除かれたタイルを意味する。
タイルに係わる初期周回回数は、そのタイルに、経路の識別値が割り当てられて(タイルのEdge_ListまたはCurve_Listが生成されて)こそ演算される。しかし、一般的には、経路の開始頂点が含まれたタイル721(図7)の一側方向に並んだタイル731(図7)、及び経路の終了頂点が含まれたタイル722(図7)の一側方向に並んだタイル732(図7)については、識別値が割り当てられない。
客体が、複数の経路が組み合わされた閉多角形であり、第1経路と第2経路とが連結されている場合、第1経路の終了頂点は、第2経路の開始頂点になる。すなわち、第1経路の終了頂点を含むタイルと、第2経路の開始頂点を含むタイルは、同一である。従って、一般的には、タイル732(図7)の初期周回回数は、第1経路だけではなく、第2経路に対する処理が終わった後には、演算が可能である。従って、経路それぞれが独立して処理されず、経路の処理において、従属性が生じるという問題が発生する。
一実施形態による割当て部142は、タイル721(図7)の一側方向に並んだタイル731(図7)、及びタイル722(図7)の一側方向に並んだタイル732(図7)についても、経路の識別値を割り当てる。従って、演算部145は、経路それぞれに対して独立してタイルに係わる初期周回回数を演算することができる。すなわち、レンダリング装置100が、経路それぞれを独立して処理(すなわち、経路を並列して処理)することができるが、レンダリング装置100の動作に所要する時間及びコスト(例えば、電力)が低減する。
以下、図23ないし図30Bを参照し、演算部145が、タイルの初期周回回数を演算する一例について説明する。
図23は、一実施形態による、ビニング遂行部が遂行する動作のさらに他の例を示したフローチャートである。図23の2010段階ないし2030段階は、図3の310段階ないし330段階と同一である。従って、以下では、2010段階ないし2030段階についての具体的な説明は省略する。
2040段階において、演算部145は、少なくとも1つの経路を含むタイルのうちから選択された第3タイルの一側方向に並んだタイルの初期周回回数を演算する。例えば、演算部145は、経路が第3タイルを通過する形態に基づいて、第3タイルの一側方向に並んだタイルの初期周回回数を演算することができる。具体的には、演算部145は、経路が第3タイルを通過する方向に基づいて、初期周回回数を演算することができる。
ここで、初期周回回数は、周回回数演算部150がタイルの周回回数を演算するのに利用される初期値を意味する。以下、図24A及び図24Bを参照し、周回回数について詳細に説明する。
図24A及び図24Bは、一実施形態による周回回数について説明するための図面である。
図24A及び図24Bには、フレーム2210に含まれたピクセルのうちいずれか1つのピクセルPに対応する周回回数について説明するための一例が図示されている。図24Aでは、説明の便宜のために、ピクセルPを、一側方向(例えば、右側方向)を見ている人の形状で図示した。
図24Aを参照すれば、ピクセルPの周辺に沿って、経路2230が図示されており、経路2230は、閉経路であるように図示されている。図24Aには、ピクセルPの周回回数が、ピクセルPの右側に存在する経路2230上の頂点2231,2232,2233,2234に基づいて演算されるように図示されているが、必ずしも右側に限定されるものではない。また、以下、ピクセルPの右側は、ピクセルPから右側水平方向に引かれた仮想の半直線2220上の頂点を意味する。
ピクセルPから右側水平方向に仮想の線2220を図示すれば、仮想の半直線2220と経路2230は、総4個の頂点2231,2232,2233,2234で交差する。言い換えれば、経路2230は、4個の頂点2231,2232,2233,2234を含むように描かれる。従って、ピクセルPの周回回数は、4個の頂点2231,2232,2233,2234それぞれでの経路が描かれる方向に基づいて決定される。
具体的には、第1頂点2231において経路2230が描かれる方向は、反時計回り方向(すなわち、経路2230が下から上に描かれる)に該当する。従って、一次的に、ピクセルPの周回回数は、−1になる。そして、第2頂点2232において経路2230が描かれる方向は、時計回り方向(すなわち、経路2230が上から下に描かれる)に該当する。従って、二次的に、ピクセルPの周回回数は、−1+1=0と演算される。そして、第3頂点2233において経路2230が描かれる方向は、反時計回り方向に該当する。従って、三次的にピクセルPの周回回数は、−1+1−1=−1と演算される。そして、第4頂点2234において経路2230が描かれる方向は、反時計回り方向に該当する。従って、最終的に、ピクセルPの周回回数は、−1+1−1−1=−2と演算される。
図24Bを参照すれば、ピクセルPの周辺に沿って5個の経路が位置し、経路は、星状の客体2240を構成する。具体的には、頂点1から頂点2までのエッジe0、頂点2から頂点3までのエッジe1、頂点3から頂点4までのエッジe2、頂点4から頂点5までのエッジe3、及び頂点5から頂点1までのエッジe4が組み合わせされ、星状の客体2240が構成されている。
図24Aを参照して説明したように、図24Bに図示されたピクセルPの周回回数は、ピクセルPの右側水平方向に引いた仮想の線2250と経路とが交差する頂点2261,2262それぞれでの経路が描かれる方向に基づいて演算される。
従って、経路によって区分された領域2271,2272,2273,2274,2275内のピクセルの周回回数は、+1と、領域2276内のピクセルの周回回数は、+2と演算される。また、フレーム2210に含まれたピクセルのうち、前述の領域2271ないし2276に含まれていないピクセル(すなわち、客体2240の内部に含まれていないピクセル)の周回回数は、0と演算される。
図24A及び図24Bを参照して説明したところによれば、ピクセルPの周回回数は、ピクセルPの右側に位置した経路を考慮して演算されるように記載されているが、それに限定されるものではない。言い換えれば、周回回数演算部150は、ピクセルPの位置を中心に、左側、右側、上側及び下側のうちいずれか一つに位置した経路を考慮し、ピクセルPの周回回数を演算することができる。このとき、周回回数演算部150は、ステンシルバッファを利用せずに、ピクセルPの周回回数を演算することができる。
また、一実施形態による周回回数演算部150は、複数のスレッドを利用して周回回数を演算する。単一スレッドは、単一ピクセルの周回回数が演算されるのに利用される。このとき、複数のスレッドは、並列して処理が行われるので、周回回数演算部150は、複数のスレッドを利用して、複数のピクセルそれぞれに対する周回回数を同時に演算することができる。従って、レンダリング装置100は、高速で経路レンダリングを行うことができる。
図25は、一実施形態による、割当て部が、タイルに、経路の識別値を割り当て、演算部が、タイルの初期周回回数を演算する一例を示したフローチャートである。図25に図示された2031段階ないし2042段階は、図23の2030段階及び2040段階について具体的に説明するための段階である。従って、図25の2031段階は、図23の2020段階が遂行された後に遂行されることを前提とする。
2031段階において、割当て部142は、選択されたタイルそれぞれに、経路の識別値を割り当てる。言い換えれば、割当て部142は、経路が通過するタイルそれぞれに、経路の識別値を割り当てる(すなわち、Edge_ListまたはCurve_Listを生成する)。
2032段階において、割当て部142は、選択されたタイルそれぞれの左側方向に並んだタイルに、経路の識別値を割り当てる。言い換えれば、割当て部142は、経路が通過するタイルそれぞれの左側方向に並んだタイルに、経路の識別値を割り当てる。
2041段階において、演算部145は、選択されたタイルのうち、経路の開始頂点が含まれたタイル、及び経路の終了頂点が含まれたタイルを除くことにより、第3タイルを選択する。例えば、経路が,タイルX、タイルY、タイルZ及びタイルWにわたって存在し、前記経路が、タイルXに含まれた頂点P0から、タイルWに含まれた頂点P1までのエッジであると仮定すれば、演算部145は、タイルY及びタイルZを、第3タイルと決定する。
2042段階において、演算部145は、第3タイルの左側方向に並んだタイルの初期周回回数を演算する。前述の例において、演算部145は、タイルYの左側方向に並んだタイル、及びタイルZの左側方向に並んだタイルの周回回数を演算する。一方、演算部145が、第3タイルの左側方向に並んだタイルの初期周回回数を演算すると説明したが、それに限定されるものではない。言い換えれば、演算部145が、フレームに含まれた全てのタイルに対して、同一方向に周回回数を演算するならば、その方向は、いかなる方向でもよい。
演算部145は、経路が第3タイルを通過する方向に沿って、所定の値を加算または減算することにより、第3タイルの左側方向に並んだタイルの初期回数を演算することができる。また、第3タイルには、経路の開始頂点が含まれたタイル、及び経路の終了頂点の含まれたタイルが除かれる。従って、経路が通過するタイル(前述の例において、タイルY及びタイルZ)の左側方向に並んだタイルには、Edge_Listが生成されるだけではなく、初期周回回数も演算される。一方、経路の開始頂点が含まれたタイル(前述の例において、タイルX)の左側方向に並んだタイルには、Edge_Listのみ生成される。また、経路の終了頂点が含まれたタイル(前述の例で、タイルW)の左側方向に並んだタイルにも、Edge_Listのみ生成される。以下、図26を参照し、前述の内容について具体的に説明する。
図26は、割当て部が、タイルに、経路の識別値を割り当て、演算部が、タイルの初期周回回数を演算する一例について説明するための図面である。
演算部145は、経路の進行方向に対応する所定の規則により、タイルの初期周回回数を演算することができる。
一例として、演算部145は、経路がタイルの対向する2本の境界線を時計回り方向に通過する場合、所定の値を加算することにより、初期周回回数を演算し、経路がタイルの対向する2本の境界線を反時計回り方向に通過する場合、所定の値を減算することにより、初期周回回数を演算することができる。
他の例として、演算部145は、経路がタイルの対向する2本の境界線を時計回り方向に通過する場合、所定の値を減算することにより、初期周回回数を演算し、経路がタイルの対向する2本の境界線を反時計回り方向に通過する場合、所定の値を加算することにより、初期周回回数を演算することができる。ここで、所定の値は、1にもなるが、それに制限されるものではない。言い換えれば、所定の値は、経路の進行方向に沿って、既定の数であるならば、制限なしに該当する。
図26を参照すれば、経路2410は、タイルAを上から下に通過する。言い換えれば、経路2410は、タイルAを時計回り方向に通過する。演算部145は、経路2410がタイルAを時計回り方向に通過すると認識し、タイルAの左側に並んだタイルの初期周回回数を+1と決定する。また、割当て部142は、タイルA、及びタイルAの左側に並んだタイルに、経路2410の識別値を割り当てる(Edge_Listを生成)。
一方、経路2420は、タイルBを下から上に通過する。言い換えれば、経路2420は、タイルBを反時計回り方向に通過する。演算部145は、経路2420がタイルBを反時計回り方向に通過すると認識し、タイルBの左側に並んだタイルの初期周回回数を−1と決定する。また、割当て部142は、タイルB、及びタイルBの左側に並んだタイルに、経路2420の識別値を割り当てる。
一方、経路2430,2440は、タイルCを通過しない。具体的には、経路2430は、タイルCに含まれた頂点から始まる経路であり、経路2440は、タイルCに含まれた頂点で終わる経路である。従って、演算部145は、タイルCの左側に並んだタイルに係わる初期周回回数を演算しない。ただし、割当て部142は、タイルC、及びタイルCの左側に並んだタイルに経路2430,2440の識別値を割り当てる。
図26には、タイルA、タイルB及びタイルCに1つの経路だけ含まれていると仮定して説明した。もしタイルA、タイルB及びタイルCに、複数の経路が含まれている場合、演算部145及び割当て部142は、それぞれの経路に対して、個別的に前述の方法を遂行する。例えば、タイルAを時計回り方向に通過する2個の経路が存在するならば、演算部145は、タイルAの左側に並んだタイルの初期周回回数を+2と決定する。また、割当て部142も、タイルA、及びタイルAの左側に並んだタイルに、2個の経路いずれの識別値も割り当てる。
以下、図27Aないし図27Cを参照し、演算部145が、タイルの初期周回回数を演算する例について具体的に説明する。
図27Aないし図27Cは、演算部が、初期周回回数を付与する規則の一例を示す図面である。
図27Aは、経路2511が、タイル2521の対向する2本の境界線を、時計回り方向に(すなわち、上から下に)通過する場合を示し、図27Bは、経路2512が、タイル2522)の対向する2本の境界線を、反時計回り方向に(すなわち、下から上に)通過する場合を示す。図27Cは、経路2513がタイル2523の一境界線に入って出る場合を示す。
図27Aないし図27Cに図示されたタイル2521,2522,2523は、2以上のタイルが結合されたタイルにもなる。例えば、経路が通過するタイルが、水平方向に2以上連続する場合、図27Aないし図27Cに図示された1つのタイル2521,2522,2523と見なされる。
図27Aを参照すれば、経路2511が、タイル2521の対向する2本の境界線を時計回り方向に(すなわち、上から下に)通過する場合、演算部145は、タイル2521の左側に位置する少なくとも1つのタイル2531に+1を、初期周回回数として付与する。すなわち、演算部145は、タイル2521の左側に位置する少なくとも1つのタイル2531の初期周回回数WNinitにおいて1を増加させる。
図27Bを参照すれば、経路2512がタイル2522の対向する2本の境界線を反時計回り方向に(すなわち、下から上に)通過する場合、演算部145は、タイル2522の左側に位置する少なくとも1つのタイル2532に、−1を初期周回回数として付与する。すなわち、演算部145は、タイル2522の左側に位置する少なくとも1つのタイル2532の初期周回回数WNinitにおいて1を減少させる。
図27Cを参照すれば、経路2513がタイル2523の一境界線に入って出て行く場合、演算部145は、タイル2523の左側に位置する少なくとも1つのタイル2533に0を初期周回回数として付与する。すなわち、演算部145は、タイル2523の左側に位置する少なくとも1つのタイル2533の初期周回回数WNinitに何らの演算も行わない。
図27Aないし図27Cは、経路がタイルを時計回り方向に通過する場合、演算部145が+1を初期周回回数として付与(初期周回回数に1を増加)し、反時計回り方向に通過する場合、演算部145が−1を初期周回回数として付与(初期周回回数に1を減少)すると説明したが、それに限定されるものではない。一例として、経路がタイルを時計回り方向に通過する場合、演算部145が−1を初期周回回数として付与し、反時計回り方向に通過する場合、演算部145が+1を初期周回回数として付与することもできる。他の例として、経路がタイルを時計回り方向に通過する場合、演算部145が+0.5を初期周回回数として付与(初期周回回数に0.5を増加)し、反時計回り方向に通過する場合、演算部145が−0.5を初期周回回数として付与(初期周回回数に0.5を減少)することもできる。
一方、客体が複数の経路を含む場合、演算部145は、それぞれの経路に基づいて、タイルの初期周回回数を演算することができる。言い換えれば、演算部145は、複数の経路を順次に考慮し、タイルの初期周回回数を演算することができる。例えば、演算部145が、第1経路e0の位置及び進行方向に基づいて、第1初期周回回数WNinit_1を設定し、その後、演算部145は、第2経路e1の位置及び進行方向に基づいて、第2初期値WNinit_2を設定することができる。
以下、図28Aないし図29Cを参照し、複数の経路それぞれに対して、演算部145がタイルの初期周回回数を演算する一例について説明する。
図28A及び図28Bは、一実施形態による、演算部がフレームに含まれたタイルのうち、第2経路が通過するタイルの一側方向に並んだタイルの第2初期周回回数を演算する一例について説明するための図面である。
図28Aには、第2経路e1が図示されている。第2経路e1は、フレーム2610に、第1経路e0が描かれた以後に描かれる経路であると仮定する。このとき、第1経路e0は、頂点P0から頂点P1まで連結されたエッジであると仮定する。また、第2経路e1は、頂点P1から頂点P2まで連結されたエッジである。従って、第2経路e1は、時計回り方向に進む経路であるということが分かる。
割当て部142は、フレーム2610に含まれたタイルのうち、第2経路e1が通過するタイル2620を選択する。そして、割当て部142は、選択されたタイル2620別にタイルに、第2経路e1が通過するという情報をEdge_Listとして生成し、それをメモリ(図示せず)に保存する。もしEdge_Listがすでに生成されたタイルである場合には、割当て部142は、既生成のEdge_Listに、第2経路e1が通過するという情報を追加して保存する。図28Bに図示されたタイル2620に表示された「e0,e1」または「e1」は、タイル2620それぞれのEdge_Listに含まれた情報を意味する。すなわち、「e0,e1」が表示されたタイルは、第1経路e0が通過するタイルでありながら、第2経路e1が通過するタイルを意味する。また、「e1」が表示されたタイルは、第2経路e1が通過するタイルを意味する。
そして、演算部145は、選択されたタイル2620の一側面に位置するタイル2631それぞれに、第2初期周回回数WNinit_2を付与する。例えば、演算部145は、選択されたタイル2620の左側方向のタイル2631それぞれに、第2初期周回回数WNinit_2を付与することができる。すなわち、第2経路e1が時計回り方向にタイル2620を通過するので、演算部145は、タイル2631それぞれに、+1を第2初期周回回数WNinit_2として付与する。そして、演算部145は、第2初期周回回数WNinit_2を、それぞれのタイル別にメモリ(図示せず)に保存することができる。
演算部145は、第2経路e1の終了頂点P2を含むタイルの左側方向に位置したタイル2632については、第2初期周回回数WNinit_2を付与しない。演算部145は、第2経路e1及び第3経路e2がタイルを通過する形態を考慮し、第2初期周回回数WNinit_2が付与されていないタイル2632に対して、第3初期周回回数WNinit_3を付与する。
一方、第2経路e1の開始頂点P1を含むタイルの左側方向に位置したタイル2633の場合、演算部145は、第1経路e0及び第2経路e1がタイルを通過する形態を考慮し、第2初期周回回数WNinit_2を付与する。以下、図29Aないし図29Cを参照し、演算部145が、タイル2633それぞれに、第2初期周回回数WNinit_2を付与する一例について説明する。
図29Aないし図29Cは、一実施形態による、演算部が2個以上の経路の進行方向を考慮し、初期値を付与する規則の一例を示す図面である。
図29Aは、経路2711が、タイル2721の一境界線から入って出て行く場合を示し、図29Bは、経路2712が、タイル2722の対向する2本の境界線を反時計回り方向に(すなわち、下から上に)通過する場合を示す。図29Cは、経路2713が、タイル2723の対向する2本の境界線を時計回り方向に(すなわち、上から下に)通過する場合を示す。
図29Aないし図29Cに図示された経路2711,2712,2713は、2以上の経路が結合された経路にもなる。例えば、第1経路の終了頂点と、第2経路の開始頂点とが同一である頂点である場合、図27Aないし図27Cに図示された経路2711,2712,2713は、第1経路と第2経路とが連結された1つの経路を意味する。
また、図29Aないし図29Cに図示されたタイル2721,2722,2723は、2以上のタイルが結合されたタイルにもなる。例えば、経路が通過するタイルが、水平方向に2以上連続する場合、図29Aないし図29Cに図示された1つのタイル2721,2722,2723と見なされる。
図29Aを参照すれば、経路2711が、タイル2721の一境界線から入っていて同じ方向に出て行く場合、演算部145は、タイル2721の左側に位置する少なくとも1つのタイル2731に、0を初期周回回数として付与する。
図29Bを参照すれば、経路2712が、タイル2722の対向する2本の境界線を反時計回り方向に(すなわち、下から上に)通過する場合、演算部145は、タイル2722の左側に位置する少なくとも1つのタイル2732に、−1を初期周回回数として付与する。
図29Cを参照すれば、経路2713が、タイル2723の対向する2本の境界線を時計回り方向に(すなわち、上から下に)通過する場合、演算部145は、タイル2723の左側に位置する少なくとも1つのタイル2733に、+1を初期周回回数として付与する。
図29Aないし図29Cは、経路がタイルを時計回り方向に通過する場合、演算部145が+1を初期周回回数として付与し、反時計回り方向に通過する場合、演算部145が−1を初期周回回数として付与すると説明したが、それに限定されるものではない。
一例として、経路がタイルを時計回り方向に通過する場合、演算部145が−1を初期周回回数として付与し、反時計回り方向に通過する場合、演算部145が+1を初期周回回数として付与することもできる。他の例として、経路がタイルを時計回り方向に通過する場合、演算部145が+0.5を初期周回回数として付与し、反時計回り方向に通過する場合、演算部145が−0.5を初期周回回数として付与することもできる。
再び図28Aを参照すれば、第1経路e0と第2経路e1とが連結された経路は、頂点P1を含むタイルの下側面から入り、下側面に出て行く。従って、演算部145は、タイル2633それぞれの第2初期周回回数WNinit_2として0を付与する。
図28Bには、第1初期周回回数WNinit_1及び第2初期周回回数WNinit_2が合算された結果が図示されている。例えば、第1初期周回回数WNinit_1または第2初期周回回数WNinit_2は、メモリ(図示せず)に、それぞれのタイル別にビットストリーム形態で保存される。従って、第1初期周回回数WNinit_1及び第2初期周回回数WNinit_2がいずれも付与されたタイルに対して、演算部145は、第1初期周回回数WNinit_1と第2初期周回回数WNinit_2とを合算することができる。
図28Aを参照して説明したところによれば、図28Bに図示された一部タイル2641は、第1初期周回回数WNinit_1(例えば、−1)のみ有する。また、図28Bに図示された一部タイル2642は、第2初期周回回数WNinit_2(例えば、0または+1)のみ有する。また、図28Bに図示された一部タイル2643は、第1初期周回回数WNinit_1(例えば、−1)及び第2初期周回回数WNinit_2(例えば、+1)をいずれも有する。従って、演算部145は、図28Bに図示された一部タイル2643それぞれに対して、第1初期周回回数WNinit_1と第2初期周回回数WNinit_2とを合算(例えば、−1+1=0)することができる。
図28Bに図示されたタイル2641,2642,2643ごとに表示された「0」、「−1」または「1」は、タイル2641,2642,2643それぞれの第1初期周回回数WNinit_1、第2初期周回回数WNinit_2、または第1初期周回回数WNinit_1と第2初期周回回数WNinit_2とが合算された結果を意味する。
図28Aないし図29Cを参照して説明したように、演算部145が、第2経路e1の位置及び進行方向に基づいて、第2初期周回回数WNinit_2を演算したので、その後、演算部145は、第3経路e2の位置及び進行方向に基づいて、第3初期周回回数WNinit_3を演算することができる。
図30A及び図30Bは、一実施形態による、演算部がフレームに含まれたタイルのうち、第3経路が通過するタイルの一側方向に並んだタイルの第3初期回数を演算する一例について説明するための図面である。
図30Aには、第3経路e2が図示されている。ここで、第3経路e2は、頂点P2から頂点P0まで連結されたエッジである。従って、第3経路e2は、時計回り方向に回転する経路であるということが分かる。
割当て部142は、フレーム2810に含まれたタイルのうち、第2経路e1が通過するタイル2820を選択する。そして、割当て部142は、選択されたタイル2820別にタイルに、第3経路e2が通過するという情報を「Edge_List」として生成し、それをメモリ(図示せず)に保存する。もしEdge_Listがすでに生成されたタイルである場合には、割当て部142は、既生成のEdge_Listに、第3経路e2が通過するという情報を追加して保存する。図30Bに図示されたタイル2820に表示された「e0,e2」、「e1,e2」または「e2」は、タイル2820それぞれのEdge_Listに含まれた情報を意味する。すなわち、「e0,e2」が表示されたタイルは、第1経路e0が通過するタイルでありながら、第3経路e2が通過するタイルを意味する。また、「e1,e2」が表示されたタイルは、第2経路e1が通過するタイルでありながら、第3経路e2が通過するタイルを意味する。また、「e2」が表示されたタイルは、第3経路e2が通過するタイルを意味する。
そして、演算部145は、選択されたタイル2820の一側面に位置するタイル2831それぞれの第3初期周回回数WNinit_3を演算する。例えば、演算部145は、選択されたタイル2820の左側方向のタイル2831それぞれの第3初期周回回数WNinit_3を演算することができる。すなわち、第3経路e2が時計回り方向にタイル2820を通過するので、演算部145は、タイル2831それぞれに、+1を第3初期周回回数WNinit_3として付与する。そして、演算部145は、第3初期周回回数WNinit_3を、それぞれのタイル別にメモリ(図示せず)に保存することができる。
一方、第3経路e2の開始頂点P2を含むタイルの左側方向に位置したタイル2832の場合、演算部145は、第2経路e1及び第3経路e2がタイルを通過する形態を考慮し、第3初期周回回数WNinit_3を付与する。このとき、演算部145が、タイル2832それぞれに、第3初期周回回数WNinit_3を付与する方法は、図29Aないし図29Cを参照して説明した通りである。すなわち、第2経路e1と第3経路e2が結合された単一経路が、タイル2821の対向する2本の境界線を時計回り方向に(すなわち、上から下に)通過するので、演算部145は、タイル2832それぞれに、+1を第3初期周回回数WNinit_3として付与する。そして、演算部145は、第3初期周回回数WNinit_3をそれぞれのタイル別に、メモリ(図示せず)に保存することができる。
また、第3経路e2の終了頂点P0を含むタイルの左側方向に位置したタイル2833の場合、演算部145は、第3経路e2及び第1経路e0がタイルを通過する形態を考慮し、第3初期周回回数WNinit_3を付与する。このとき、演算部145が、タイル2833に第3初期周回回数WNinit_3を付与する方法は、図29Aないし図29Cを参照して説明した通りである。すなわち、第3経路e2と第1経路e0とが結合された単一経路がタ、イル2822の単一面(すなわち、上側面)に入り、同じ方向に出て行くので、演算部145は、タイル2833に、0を第3初期周回回数WNinit_3として付与する。そして、演算部145は、タイル2833の第3初期周回回数WNinit_3をメモリ(図示せず)に保存することができる。
図30Bには、第1初期周回回数WNinit_1、第2初期周回回数WNinit_2及び第3初期周回回数WNinit_3が合算された結果が図示されている。演算部145は、タイルの第1初期周回回数WNinit_1、第2初期周回回数WNinit_2または第3初期周回回数WNinit_3をメモリ(図示せず)に保存することができる。例えば、第1初期周回回数WNinit_1、第2初期周回回数WNinit_2または第3初期周回回数WNinit_3は、メモリ(図示せず)に、それぞれのタイル別にビットストリーム形態で保存される。従って、第1初期周回回数WNinit_1、第2初期周回回数WNinit_2または第3初期周回回数WNinit_3のうち2以上がいずれも付与されたタイルに対して、演算部145は、付与された初期周回回数を合算することができる。
図30Bに図示された一部タイル2841は、第3初期周回回数WNinit_3(例えば、0または+1)のみを有する。また、図30Bに図示された一部タイル2842は、第2初期周回回数WNinit_2(例えば、0または+1)のみを有する。また、図30Bに図示された一部タイル2843は、第1初期周回回数WNinit_1(例えば、−1)及び第3初期周回回数WNinit_3(例えば、+1)をいずれも有する。また、図30Bに図示された一部タイル2844は、第1初期周回回数WNinit_1(例えば、−1)及び第2初期周回回数WNinit_2(例えば、+1)をいずれも有する。
従って、演算部145は、図30Bに図示された一部タイル2843、2844それぞれに対して、初期周回回数を合算(例えば、−1+1=0)することができる。
図30Bに図示されたタイル2841,2842,2843,2844ごとに表示された「0」または「1」は、タイル2841,2842,2843,2844それぞれの第1初期周回回数WNinit_1、第2初期周回回数WNinit_2、第3初期周回回数WNinit_3、または第1初期周回回数WNinit_1ないし第3初期周回回数WNinit_3が合算された値を意味する。
演算部145は、第1初期周回回数WNinit_1ないし第3初期周回回数WNinit_3に基づいて、フレーム2810に含まれたタイルそれぞれに、最終初期周回回数WNinitを設定する。例えば、第1初期周回回数WNinit_1ないし第3初期周回回数WNinit_3のうち一つが付与されたタイルの場合、演算部145は、付与された初期周回回数を、最終的な初期周回回数WNinitに設定する。また、第1初期周回回数WNinit_1ないし第3初期周回回数WNinit_3のうち2以上が付与されたタイルの場合、演算部145は、付与された初期周回回数を合算することにより、最終的な初期周回回数WNinitを設定する。また、第1初期周回回数WNinit_1ないし第3初期周回回数WNinit_3のうちいずれも付与されていないタイルの場合、演算部145は、最終的な初期周回回数WNinitを「0」に設定する。
再び図1を参照すれば、周回回数演算部150は、タイルビニングの結果を利用して、フレームに含まれたピクセルそれぞれの周回回数を演算する。例えば、周回回数演算部150は、それぞれのタイルごとに割り当てられた経路の識別値(例えば、Edge_ListまたはCurve_List)及び初期周回回数を利用して、ピクセルの周回回数を演算することができる。
具体的には、周回回数演算部150は、タイルに対して生成されたEdge_ListまたはCurve_Listを参照することにより、周回回数の演算に必要な経路が何であるかということを確認することができる。そして、周回回数演算部150は、確認された経路の位置及び進行方向に基づいて、ピクセルの周回回数を演算することができる。
一例として、ビニング遂行部140が、タイルの初期周回回数を演算した場合であるならば、周回回数演算部150は、初期周回回数に基づいて、ピクセルの周回回数を演算することができる。他の例として、ビニング遂行部140が、タイルの初期周回回数を演算していない場合であるならば、周回回数演算部150は、タイルの初期周回回数をまず演算し、その後、ピクセルの周回回数を演算することができる。
以下、図31Aないし図35を参照し、周回回数演算部150が、ピクセルの周回回数を演算する例について説明する。
図31Aないし図31Cは、一実施形態による周回回数演算部150が、ピクセルの周回回数を演算する一例について説明するための図面である。
図31Aには、6*6個のタイルから構成されたフレーム3110、及び三角形の客体3120が図示されている。図31Aないし図31Cでは、割当て部142が、経路e0,e1,e2が通過するタイル3130に対してEdge_Listを生成し、演算部145が、フレーム3110に含まれたタイルそれぞれの初期周回回数WNinitを演算したと仮定して説明する。
1つのタイルには、複数個のピクセルが含まれている。従って、ピクセルの周回回数は、1つのタイルに含まれたピクセル間においても互いに異なる。以下、図31B及び図31Cを参照して具体的に説明する。
図31Bには、図31Aに図示された経路e0,e1,e2が通過するタイル3130のうちいずれか1つのタイル3131が図示されている。タイル3131の内部領域は、第1経路e0及び第2経路e1によって2個の領域に区分される。以下では、第1経路e0及び第2経路e1によって取り囲まれた領域を第1領域3141とし、第1領域3141を除いた領域を第2領域3142とする。
周回回数演算部150は、下記数式(1)によって、ピクセルの周回回数WNを演算することができる。
数式(1)で、WNは、ピクセルの周回回数を意味し、WNinitは、ピクセルを含むタイルの初期周回回数を意味する。そして、NCWは、ピクセルの一側面に位置し、時計回り方向に進む(すなわち、上から下に進む)経路に基づいて決定された値を意味する。そして、NCCWは、ピクセルの一側面に位置し、反時計回り方向に進む(すなわち、下から上で進む)経路に基づいて決定された値を意味する。ここで、ピクセルの一側面は、ピクセルの位置を中心に、左側、右側、上側及び下側のうちいずれか一つを意味する。
すなわち、周回回数演算部150は、ピクセルが含まれたタイルの初期周回回数WNinitと、ピクセルの一側面に位置する経路の進行方向とを利用して、ピクセルの周回回数を演算することができる。以下、図32Aないし図33Dを参照し、周回回数演算部150が、前記数式(1)のNCW及びNCCWを決定する一例について説明する。
図32A及び図32Bは、一実施形態による、周回回数演算部がピクセルの周回回数を演算する一例について説明するための図面である。
図32Aには、頂点1、頂点2及び頂点3が含まれた客体3240が図示されている。具体的には、客体3240は、頂点1から頂点2までの第1経路、頂点2から頂点3までの第2経路、及び頂点3から頂点1までの第3経路によって構成される。
周回回数演算部150は、フレームに含まれたピクセルそれぞれの位置を中心に、一側面に経路が位置するか否かということを確認する。ここで、一側面は、ピクセルの位置を中心に、左側、右側、上側及び下側のうちいずれか一つを意味する。以下では、説明の便宜のために、周回回数演算部150がピクセル3210の位置を中心に、右側に経路が位置するか否かということを確認すると仮定して説明する。
周回回数演算部150は、ピクセル3210の右側に位置する経路の進行方向が、時計回り方向であるか、あるいは反時計回り方向であるかということを決定する。例えば、周回回数演算部150が、ピクセル3210の右側に経路が位置すると判断した場合には、周回回数演算部150は、経路の進行方向が、時計回り方向であるか、あるいは反時計回り方向であるかということを決定する。一方、周回回数演算部150が、ピクセル3210の右側に経路が位置しないと判断した場合には、周回回数演算部150は、数式(1)のNCW及びNCCWを0と決定する。
図32Aを参照すれば、周回回数演算部150は、客体3240を構成する3個の経路のうち、ピクセル3210の右側に位置する第2経路の進行方向が、時計回り方向であるか、あるいは反時計回り方向であるかということを決定する。言い換えれば、第1経路と第3経路は、ピクセル3210の右側に位置しないので、周回回数演算部150は、第1経路と第3経路との進行方向を決定せず、第2経路の進行方向のみを決定する。ここで、第2経路は、頂点2から頂点3まで進むので、周回回数演算部150は、第2経路の進行方向が、時計回り方向であると決定する。
その後、周回回数演算部150は、時計回り方向に進む経路の個数により、周回回数演算部150のNCWに既定の値を加算し、反時計回り方向に進む経路の個数により、NCCWに既定の値を加算する。ここで、既定の値は、1にもなるが、それに限定されるものではない。
もし既定の値が1であると仮定すれば、周回回数演算部150は、第2経路の進行方向が時計回り方向であると決定したので、周回回数演算部150は、ピクセル3210のNCWを+1と決定する。
前述の方法のように、周回回数演算部150が、フレームに含まれたピクセルそれぞれに対してNCWを演算する場合、図32Aに図示された客体3240の内部に存在するピクセルのNCWは、いずれも+1に決定され、客体3240の外部に存在するピクセルのNCWは、いずれも0に決定される。
以下では、説明の便宜のために、周回回数演算部150が、ピクセルのNCW及びNCCWを決定するとき、経路の進行方向が時計回り方向である場合、NCWを+1と決定し、経路の進行方向が反時計回り方向である場合、NCCWを+1と決定すると仮定して説明する。
図32Bには、頂点1、頂点2、頂点3及び頂点4で構成された第1客体3250、及び頂点5、頂点6、頂点7及び頂点8で構成された第2客体3260が図示されている。具体的には、第1客体3250は、頂点1から頂点2までの第1経路、頂点2から頂点3までの第2経路、頂点3から頂点4までの第3経路、及び頂点4から頂点1までの第4経路によって構成される。また、第2客体3260は、頂点5から頂点6までの第5経路、頂点6から頂点7までの第6経路、頂点7から頂点8までの第7経路、及び頂点8から頂点5までの第8経路によって構成される。
以下では、周回回数演算部150が、ピクセル3220または3230の位置を中心に、右側に経路が位置するか否かということを確認すると仮定して説明する。
一例として、周回回数演算部150が、ピクセル3220のNCW及びNCCWを決定する方法について説明する。
周回回数演算部150は、ピクセル3220の位置を中心に、右側に経路が存在するか否かということを確認する。具体的には、周回回数演算部150は、ピクセル3220の右側には、第1客体3250に含まれた第3経路が存在すると確認する。
周回回数演算部150は、確認結果に基づいて、第3経路の進行方向が時計回り方向であるか、あるいは反時計回り方向であるかということを決定する。周回回数演算部150は、第3経路の進行方向が時計回り方向であると決定する。従って、周回回数演算部150は、ピクセル3220のNCWを+1と決定する。
他の例において、周回回数演算部150が、ピクセル3230のNCW及びNCCWを決定する方法について説明する。
周回回数演算部150は、ピクセル3230の右側には、第2客体3260に含まれた第6経路と、第1客体3250に含まれた第3経路とが存在すると確認する。その後、周回回数演算部150は、第6経路の進行方向が反時計回り方向であり、第3経路の進行方向が時計回り方向であると決定する。周回回数演算部150は、第6経路の進行方向が反時計回り方向であると決定したので、周回回数演算部150は、ピクセル3230のNCCWを+1と決定する。そして、周回回数演算部150は、第3経路の進行方向が時計回り方向であると決定したので、周回回数演算部150は、ピクセル3230のNCWを+1と決定する。
前述の方法のように、周回回数演算部150がフレームに含まれたピクセルそれぞれに対して、NCW及びNCCWを決定する場合、図32Bに図示された第1客体3250の内部であり、第2客体3260の外部に存在するピクセルのNCWは、いずれも+1に決定され、第2客体3260の内部に存在するピクセルのNCW及びNCCWは、いずれも+1に決定される。
一方、周回回数演算部150が、ピクセルの位置を中心に、左側、右側、上側及び下側のうちいずれかの側面を選択して周回回数を演算しても、その結果は、いずれも同一である。以下、図33Aないし図33Dを参照し、周回回数演算部150が互いに異なる側面を選択し、ピクセルのNCW及びNCCWを決定する一例について説明する。
図33Aないし図33Dは、一実施形態による、周回回数演算部が互いに異なる側面を選択し、ピクセルの周回回数を演算する一例について説明するための図面である。
図33Aないし図33Dには、頂点1ないし頂点5で構成された客体が図示されている。図33Aないし図33Dに図示された客体は、星状の閉多角形であり、いずれも同一である。
図33Aを参照すれば、周回回数演算部150は、ピクセルPの位置を中心に、右側に経路が位置するか否かということを確認する。具体的には、周回回数演算部150は、ピクセルPの右側(例えば、ピクセルPの右側水平方向に引いた仮想の半直線上の位置)には、頂点2から頂点3までの経路と、頂点5から頂点1までの経路とが存在すると確認する。頂点2から頂点3までの経路の進行方向と、頂点5から頂点1までの経路の進行方向は、いずれも時計回り方向であるので、周回回数演算部150は、ピクセルPのNCWを+2と決定する。
図33Bを参照すれば、周回回数演算部150は、ピクセルPの位置を中心に、左側に経路が位置するか否かということを確認する。具体的には、周回回数演算部150は、ピクセルPの左側(例えば、ピクセルPの左側水平方向に引いた仮想の半直線上の位置)には、頂点1から頂点2までの経路と、頂点3から頂点4までの経路とが存在すると確認する。頂点1から頂点2までの経路の進行方向と、頂点3から頂点4までの経路の進行方向は、いずれも時計回り方向であるので、周回回数演算部150は、ピクセルPのNCWを+2と決定する。
図33Cを参照すれば、周回回数演算部150は、ピクセルPの位置を中心に、上側に経路が位置するか否かということを確認する。具体的には、周回回数演算部150は、ピクセルPの上側(例えば、ピクセルPの上側水平方向に引いた仮想の半直線上の位置)には、頂点2から頂点3までの経路と、頂点4から頂点5までの経路とが存在すると確認する。頂点2から頂点3までの経路の進行方向と、頂点4から頂点5までの経路の進行方向は、いずれも時計回り方向であるので、周回回数演算部150は、ピクセルPのNCWを+2と決定する。
図33Dを参照すれば、周回回数演算部150は、ピクセルPの位置を中心に、下側に経路が位置するか否かということを確認する。具体的には、周回回数演算部150は、ピクセルPの下側(例えば、ピクセルPの下側水平方向に引いた仮想の半直線上の位置)には、頂点5から頂点1までの経路と、頂点3から頂点4までの経路とが存在すると確認する。頂点5から頂点1までの経路の進行方向と、頂点3から頂点4までの経路の進行方向は、いずれも時計回り方向であるので、周回回数演算部150は、ピクセルPのNCWを+2と決定する。
前述のところのように、周回回数演算部150が、ピクセルPの位置を中心に、いずれの側面を選択してNCW及びNCCWを決定するとしても、その結果は、いずれも同一である。また、図33Aないし図33Dに図示されているように、経路によって区分された領域のうち同一である領域内に存在するピクセルのNCW及びNCCWは、いずれも同一である。
周回回数演算部150は、ピクセルの位置、及び経路の位置を考慮し、フレームに含まれたピクセルごとにそれぞれ、NCW及びNCCWを決定する一側面を選択することができる。言い換えれば、周回回数演算部150は、ピクセルPの位置を中心に、いずれの側面を選択し、NCW及びNCCWを決定するか、ピクセルPの位置によって、互いに異なるように選択することもできる。すなわち、周回回数演算部150は、ピクセルPの位置を基準に、最も少ない数の経路が存在すると予想される方向に、NCW及びNCCWを決定する一側面を選択することができる。
例えば、ピクセルPが、フレームの中心線を基準に、左側に存在すると仮定すれば、周回回数演算部150がNCW及びNCCWを決定する一側面を、ピクセルPの右側面よりは、左側面を選択してこそ、周回回数演算部150が、さらに少ない数の経路を利用して、ピクセルPのNCW及びNCCWを決定することができる。また、ピクセルPが、フレームの中心線を基準に、右側に存在すると仮定すれば、周回回数演算部150が、NCW及びNCCWを演算する一側面を、ピクセルPの左側面よりは右側面を選択してこそ、周回回数演算部150が、さらに少ない数の経路を利用して、ピクセルPのNCW及びNCCWを決定することができる。
従って、周回回数演算部150は、フレームに含まれたピクセルごとにそれぞれ互いに異なる側面を選択し、NCW及びNCCWを決定することができる。このとき、周回回数演算部150は、フレーム内において、客体を構成する経路がどの位置に分布するかということを判断し、周回回数演算部150は、NCW及びNCCWが決定されるピクセルの位置を中心に、最も少ない経路が存在する方向に、NCW及びNCCWの決定に利用される一側面を選択する。
再び図31Bを参照すれば、周回回数演算部150は、第1領域3141に含まれたピクセル3151の周回回数WNを+1に演算することができる。具体的には、タイル3131の初期周回回数WNinitは、0であり、ピクセル3151の右側面に位置した第2経路e1が時計回り方向に進むので、NCWは、1である。また、ピクセル3151の右側面に反時計回り方向に進む経路がないので、NCCWは、0である。従って、周回回数演算部150は、数式(1)によって、ピクセル3151の周回回数WNを+1に演算することができる。
また、周回回数演算部150は、第2領域3142に含まれたピクセル3152の周回回数WNを0に演算することができる。具体的には、タイル3131の初期周回回数WNinitは、0であり、ピクセル3152の右側面に位置した第1経路e0が反時計回り方向に進むので、NCCWは、1である。また、ピクセル3152の右側面に位置した第2経路e1が時計回り方向に進むので、NCWは1である。従って、周回回数演算部150は、数式(1)によって、ピクセル3152の周回回数WNを0に演算することができる。
また、周回回数演算部150は、第2領域3142に含まれたピクセル3153の周回回数WNを0に演算することができる。具体的には、タイル3131の初期周回回数WNinitは、0であり、ピクセル3153の右側面に位置した経路がないので、NCW及びNCCWは、0である。従って、周回回数演算部150は、数式(1)によって、ピクセル3153の周回回数WNを0に演算することができる。
総合すれば、図31Bに図示された第1領域3141に含まれたピクセルそれぞれの周回回数WNは、いずれも1に演算され、第2領域3142に含まれたピクセルそれぞれの周回回数WNは、いずれも0に演算される。すなわち、同一タイルに含まれたピクセルでも、経路によって区分された領域によって、ピクセルの周回回数WNが互いに異なる。
図31Cには、図31Aに図示された経路e0,e1,e2が通過するタイル3130のうちいずれか1つのタイル3132が図示されている。タイル3132の内部領域は、第1経路e0によって、2個の領域に区分される。以下では、第1経路e0及びタイル3132の境界線によって取り囲まれた領域を第3領域3143とし、第3領域3143を除いた領域を第4領域3144とする。
周回回数演算部150は、第3領域3143に含まれたピクセル3154の周回回数WNを+1に演算することができる。具体的には、タイル3132の初期周回回数WNinitは、1であり、ピクセル3154の右側面に位置した経路がないので、NCW及びNCCWは、0である。従って、周回回数演算部150は、数式(1)によって、ピクセル3154の周回回数WNを0に演算することができる。
また、周回回数演算部150は、第4領域3144に含まれたピクセル3155の周回回数WNを0に演算することができる。具体的には、タイル3132の初期周回回数WNinitは、1であり、ピクセル3155の右側面に位置した第1経路e0が反時計回り方向に進むので、NCCWは、1である。また、ピクセル3151の右側面に時計回り方向に進む経路がないので、NCWは0である。従って、周回回数演算部150は、数式(1)によって、ピクセル3155の周回回数WNを0に演算することができる。
総合すれば、図31Cに図示された第3領域3143に含まれたピクセルそれぞれの周回回数WNは、いずれも1に演算され、第4領域3144に含まれたピクセルそれぞれの周回回数WNは、いずれも0に演算される。
図34A及び図34Bは、一実施形態による、周回回数演算部が経路が通過するタイルに含まれたピクセルの周回回数を演算した結果の例を示す図面である。
図34Aには、三角形の客体3420が図示されており、図34Bには、星状の客体3430が図示されている。
図34A及び図34Bを参照すれば、客体3420を構成する経路が通過するタイル3411に含まれたピクセルの周回回数WNが表示されている。周回回数演算部150が、フレーム3410に含まれた全てのピクセルの周回回数WNを演算する場合、経路が通過しないタイル3412に含まれたピクセルの周回回数WNは、タイル3412それぞれの初期周回回数WNinitと同一になる。従って、周回回数演算部150は、タイル3411に含まれたピクセルの周回回数WNのみを演算し、タイル3412に含まれたピクセルの周回回数WNは、タイル3412それぞれの初期周回回数WNinitと決定することができる。
前述のところによれば、周回回数演算部150は、フレーム3410に含まれた全てのピクセルに対して、周回回数WNを演算しなくてもよい。従って、レンダリング装置100は、迅速な速度で、フレーム3410に含まれた全てのピクセルの周回回数WNを演算することができる。
一方、周回回数演算部150が、タイルの初期周回回数WNinitを演算することもできる。具体的には、ビニング遂行部140の演算部145が、タイルの初期周回回数WNinitを演算しない場合、周回回数演算部150が、タイルの初期周回回数WNinitを演算することもできる。
図35は、一実施形態による、周回回数演算部がタイルの初期周回回数を演算する一例について説明するための図面である。図35を参照すれば、タイル3510の右側に、経路3520が存在する。タイル3510が四角形であると仮定すれば、周回回数演算部150は、タイル3510の4側面のうち、経路3520と最も近い側面3511を選択する。そして、周回回数演算部3510は、側面3511に含まれた2つの頂点T1,T2の位置と、経路3520の位置とを比較する。例えば、2つの頂点T1,T2が、経路3520より左側に存在し、経路3520の進行方向が時計回り方向であると仮定すれば、周回回数演算部150は、タイル3510の初期周回回数WNinitを1と決定する。一方、2つの頂点T1,T2が、経路3520より左側に存在し、経路3520の進行方向が反時計回り方向であると仮定すれば、周回回数演算部150は、タイル3510の初期周回回数WNinitを−1と決定する。もし2つの頂点T1,T2のうちいずれか一つでも経路3520より右側に存在すれば、周回回数演算部150は、タイル3510の初期周回回数WNinitを0と決定する。
図35を参照して説明したように、周回回数演算部150が、タイルの初期周回回数WNinitを演算する場合、ビニング遂行部140において、タイルの初期周回回数WNinitを演算し、それを保存するのに所要するコストが低減する。言い換えれば、タイルの初期周回回数WNinitが保存または更新される過程において、ビニング遂行部140は、少なくとも1回以上、メモリ(図示せず)にデータを保存したり、メモリ(図示せず)からデータを読み取ったりする。従って、周回回数演算部150が、タイルの初期周回回数WNinitを演算する場合、ハードウェアが動作するのに所要する時間またはコストが低減する。
また、周回回数演算部150が、タイルの初期周回回数WNinitを演算する場合、ビニング遂行部140において、周回回数演算部150にタイルの初期周回回数WNinitを伝達するのに所要するコストが低減する。
再び図1を参照すれば、ピクセルシェーダ120は、ピクセルの周回回数WNに基づいて、ピクセルに対応するカラーを決定することができる。
例えば、ピクセルシェーダは、既設定の規則に基づいて、ピクセルそれぞれに対応するカラーを決定することができる。ここで、既設定の規則は、周回回数が0ではない値を有するピクセルにカラー値を割り当てる第1規則、または周回回数が奇数である値を有するピクセルにカラー値を割り当てる第2規則のうちいずれか一つを意味する。以下、図36Aないし図36Cを参照し、ピクセルシェーダ120がピクセルに対応するカラーを決定する一例について説明する。
図36Aないし図36Cは、一実施形態による、ピクセルシェーダ120がフレームに含まれたピクセルそれぞれに対応するカラーを決定する一例について説明するための図面である。
図36Aは、フレーム3610に含まれたピクセルそれぞれの周回回数を図示した図面であり、図36Bは、第1規則によって、ピクセルそれぞれにカラー値が割り当てられた結果を図示した図面である。また、図36Cは、第2規則により、ピクセルそれぞれにカラー値が割り当てられた結果を図示した図面である。
図36Aを参照すれば、領域3611に含まれたピクセルは、それぞれ周回回数が0と演算されており、領域3612に含まれたピクセルは、それぞれ周回回数が+1と演算されており、領域3613に含まれたピクセルは、それぞれ周回回数が+2と演算されている。
一例として、ピクセルシェーダ120は、第1規則に基づいて、ピクセルそれぞれに対応するカラーを決定することができる。ここで、第1規則は、周回回数が0ではない値を有するピクセルにカラー値を割り当てることを意味する。図36Bを参照すれば、ピクセルシェーダ120は、第1規則により、図36Aに図示された領域3612及び領域3613に含まれたピクセルには、カラーを設定し、領域3611に含まれたピクセルには、カラーを設定しないと決定する。
他の例として、ピクセルシェーダ120は、第2規則に基づいて、ピクセルそれぞれに対応するカラーを決定することができる。ここで、第2規則は、周回回数が奇数である値を有するピクセルにカラー値を割り当てることを意味する。ここで、奇数は、ピクセルの周回回数の絶対値が奇数である場合を意味する。例えば、周回回数が+3である場合も奇数と判断され、周回回数が−3である場合も奇数と判断される。また、周回回数が0である場合は、偶数と判断される。図36Cを参照すれば、ピクセルシェーダ120は、第2規則により、図36Aに図示された領域3612に含まれたピクセルには、カラーを設定し、領域3611及び領域3613に含まれたピクセルにはカラーを設定しないと決定する。
そして、ピクセルシェーダ120は、カラーが設定されると決定されたピクセルに、カラー値を割り当てる。
前述のところによれば、レンダリング装置100が、経路それぞれに対して独立してタイルビニングを行うことができるが、レンダリング装置100が動作するのに所要する時間及びコスト(例えば、電力)が低減する。また、レンダリング装置100は、フレームに含まれたタイルに対して不要に割り当てられた経路の識別値を除去することにより、レンダリング装置100の効率がさらに高くなる。
また、レンダリング装置100は、フレームに含まれたピクセルのうち、経路が通過するタイルに含まれたピクセルについてのみ周回回数を演算することにより、レンダリング装置100の演算速度が向上する。また、レンダリング装置100は、ステンシルバッファの使用なしに、ピクセルそれぞれの周回回数を演算することができるが、ステンシルバッファを使用することにより、メモリ入出力が過度に発生する問題と、重複したメモリ入出力が発生する問題とが解消される。
また、レンダリング装置100は、フレームに含まれたピクセルそれぞれに対して並列して周回回数を生成することにより、高速で経路レンダリングを行うことができ、短時間内に高解像度のレンダリングを行うことができる。
一方、前述の方法は、コンピュータで実行されるプログラムでもって作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に、多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM(read only memory)、RAM(random access memory)、USB(universal serial bus)、フロッピー(登録商標)ディスク、ハードディスクなど)、光学的判読媒体(例えば、CD(compact disc)−ROM、DVD(digital versatile disc)など)のような記録媒体を含む。
本実施形態と係わる技術分野で当業者であるならば、前述の記載の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。