画像描画装置
【課題】コストを抑えながら効率的にラスタライズ処理を行う画像描画装置を提供する。
【解決手段】ブロック単位に、当該ブロックに描画されるプリミティブの頂点のプリミティブパラメータを第1のメモリから読み出し、ブロック内の各画素について、前面に描画されるプリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、ブロック単位に、プリミティブの描画命令の入力順に、対象プリミティブのプリミティブパラメータを第1のメモリから読み出すと共に、プリミティブ番号メモリに対象プリミティブの識別情報を有する画素について画素データを生成し書き込む画素データ生成部とを有し、描画プリミティブ識別情報生成部は、前記識別情報の生成中に、ブロックに描画され入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、画素データ生成部は、先頭識別情報のプリミティブから入力順に、プリミティブパラメータを読み出す。
【解決手段】ブロック単位に、当該ブロックに描画されるプリミティブの頂点のプリミティブパラメータを第1のメモリから読み出し、ブロック内の各画素について、前面に描画されるプリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、ブロック単位に、プリミティブの描画命令の入力順に、対象プリミティブのプリミティブパラメータを第1のメモリから読み出すと共に、プリミティブ番号メモリに対象プリミティブの識別情報を有する画素について画素データを生成し書き込む画素データ生成部とを有し、描画プリミティブ識別情報生成部は、前記識別情報の生成中に、ブロックに描画され入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、画素データ生成部は、先頭識別情報のプリミティブから入力順に、プリミティブパラメータを読み出す。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像描画装置に関する。
【背景技術】
【0002】
3次元グラフィックス等の画像描画装置では、描画対象の画像を複数のプリミティブ(例えば、三角形など多角形のポリゴン)の集合とみなし、プリミティブ毎に描画処理を行う。また、画像の描画処理では、タイリングアーキテクチャと呼ばれる方法が知られる(例えば、特許文献1)。
【0003】
タイリングアーキテクチャによると、画像描画装置は、フレームを所定のサイズ(例えば、8×8画素)に分割したタイル毎に、タイル内に画素を有するプリミティブについてラスタライズ処理を行う。タイルのサイズは小さいため、画像描画装置は、SRAM等の高速の内部メモリにおいてタイル単位にラスタライズ処理を行うことによって、タイル内の各画素の画素データを生成する。そして、画像描画装置は、内部メモリに生成された画素データを低速の外部メモリに書き出す。SRAMは、外部メモリに比べてアクセスが高速であるため、タイリングアーキテクチャによると、メモリのアクセスが効率化されラスタライズ処理が高速になる。
【0004】
具体的に、画像描画装置は、ラスタライズ処理として、タイル単位に、深度テスト及びプリミティブの描画処理を行う。ラスタライズ処理は、タイル毎に、描画命令の入力順に、描画対象のプリミティブの頂点パラメータ及び設定情報を有するシーンデータに基づいて行われる。頂点パラメータは、例えば、プリミティブの各頂点の座標情報や深度情報、色情報等を有し、設定情報は、例えば、プリミティブの透過設定等を有する。
【0005】
シーンデータは容量が大きいことから、一般的に、外部メモリに格納される。また、シーンデータにおける各プリミティブの設定情報は、描画命令の入力順が先のプリミティブの設定情報との差分情報として保持される。画像描画装置は、対象のプリミティブの設定情報を取得するとき、既に読み出した入力順が先のプリミティブの設定情報に、新たに読み出した対象のプリミティブの設定情報を加える。このため、プリミティブの設定情報は、プリミティブの描画命令の入力順に従って読み出される必要がある。
【0006】
具体的に、ラスタライズ処理におけるタイル単位の深度テスト及びプリミティブの描画処理は、次のように行われる。画像描画装置は、深度テストとして、対象タイルの各画素について、シーンデータから一部読み出した深度情報を含む頂点パラメータに基づいて、前面に描画されるプリミティブか否かを判別する。このとき、画像描画装置は、対象タイルの各画素について、前面に描画されるプリミティブを示す識別情報を生成し、内部メモリのプリミティブ番号メモリに格納する。
【0007】
続いて、画像描画装置は、プリミティブの描画処理として、プリミティブ番号メモリから読み出した識別情報に基づいて、識別番号の示すプリミティブの頂点パラメータ及び設定情報をシーンデータから読み出して画素データを生成する。プリミティブの頂点パラメータ及び設定情報は外部メモリに格納されているため、読み出し処理は必要最小限に抑えられることが望ましい。ただし、前述したとおり、設定情報は入力順に基づいて差分の情報として保持されているため、画像描画装置は、プリミティブの頂点パラメータ及び設定情報を描画命令の入力順に従って読み出す必要がある。
【0008】
そこで、画像描画装置は、次のようにプリミティブの描画処理を行う。まず、画像描画装置は、入力順が初め(0番目)のプリミティブを示す識別情報によってプリミティブ番号メモリを検索する。0番目のプリミティブを示す識別情報が検出された場合、画像描画装置は、シーンデータから0番目のプリミティブの頂点パラメータ及び設定情報を読み出し、対応する画素の画素データを生成する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平5−135147号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述したプリミティブの描画処理において、対象タイルに0番目のプリミティブが描画されない場合、プリミティブ番号メモリには0番目のプリミティブを示す識別情報が格納されていない。そのため、0番目のプリミティブを示す識別情報によるプリミティブ番号メモリの検索処理は、無駄な処理となってしまう。
【0011】
このように、プリミティブの描画処理におけるプリミティブ番号メモリの検索処理において、非効率な検索処理が発生することがあり、描画性能の低下要因となっていた。一方、プリミティブ番号メモリの検索処理を並列化することにより、描画性能を向上させる方法がある。しかし、並列化の度合いによっては画像描画装置の回路規模が大きくなり、コストが高くなる。
【0012】
そこで、本発明では、コストを抑えながら効率的にラスタライズ処理を行う画像描画装置を提供する。
【課題を解決するための手段】
【0013】
第1の側面は、フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す。
【発明の効果】
【0014】
第1の側面によれば、コストを抑えながら効率的にラスタライズ処理を行う。
【図面の簡単な説明】
【0015】
【図1】本実施の形態例における画像描画装置の構成の一例を示す図である。
【図2】GPUのブロック図の一例を表す図である。
【図3】プリミティブの頂点パラメータの一例を示す図である。
【図4】フレームが分割されたブロックの一例を表す図である。
【図5】レンダリング処理部、ラスタライズ処理部のブロック図例を表す図である。
【図6】第1の実施の形態例における描画対象プリミティブの一例を表す図である。
【図7】レンダリング処理部の処理の流れを表すフローチャート図である。
【図8】図6の具体例に基づくソート前後のシーンデータの一例を表す図である。
【図9】プリミティブ処理を説明するフローチャート図である。
【図10】第1の実施の形態例の深度テストを説明するフローチャート図である。
【図11】第1の実施の形態例における深度テスト処理部のハードウェア構成例図である。
【図12】深度メモリ、プリミティブ番号メモリ、レジスタのデフォルト値を表す図である。
【図13】プリミティブP2の深度テスト後の各メモリを表す図である。
【図14】プリミティブP4の深度テスト後の各メモリを表す図である。
【図15】プリミティブP5の深度テスト後の各メモリを表す図である。
【図16】第1の実施の形態例の描画処理を説明するフローチャート図である。
【図17】第1の実施の形態例における描画処理部のハードウェア構成例図である。
【図18】検索プリミティブ番号PN=2の時の描画処理を説明する図である。
【図19】検索プリミティブ番号PN=2の時の描画処理を説明する第2図である。
【図20】検索プリミティブ番号PN=2、4の時の描画処理を説明する図である。
【図21】検索プリミティブ番号PN=4、5の時の描画処理を説明する図である。
【図22】第2の実施の形態例の深度テストの処理を表すフローチャート図である。
【図23】第2の実施の形態例における深度テスト処理部のハードウェア構成例図である。
【図24】第2の実施の形態例の描画処理を説明するフローチャート図である。
【図25】第2の実施の形態例における描画処理部のハードウェア構成例図である。
【図26】レジスタに識別番号2を有する区分領域の描画処理を説明する図である。
【図27】レジスタに識別番号4、5を有する区分領域の描画処理を説明する図である。
【発明を実施するための形態】
【0016】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0017】
図1は、本実施の形態例における画像描画装置の構成の一例を示す図である。同図において、画像描画装置は、例えば、CPU(Central Processing Unit)101、GPU(Graphics Processing Unit)100、外部メモリ102を有する。外部メモリ102は、例えば、DRAM(Dynamic Random Access Memory)で構成され、フレームバッファ等が格納される。同図において、アプリケーション(図示せず)からGPU100に対して、複数のプリミティブから構成される立体オブジェクトの3次元データと描画命令が渡される。GPU100は、3次元データに基づいて、立体オブジェクトを所定の視点で視たときの2次元画像の画素データを生成し、フレームバッファに書き込む。
【0018】
図2は、GPU100のブロック図の一例を表す図である。GPU100は、コマンド解釈部10、ジオメトリ処理部11、レンダリング処理部12を有する。同図において、例えば、GPU100のコマンド解釈部10は、外部メモリ102から描画命令リストを読み込み、描画命令を解釈する。一般に、立体オブジェクトは多数のプリミティブの集合体として表現される。ジオメトリ処理部11は、描画命令に基づいて、表示画面上の2次元座標であるプリミティブの頂点パラメータ及び設定情報を生成し、レンダリング処理部12に渡す。
【0019】
図3は、ジオメトリ処理部11が生成するプリミティブPmの頂点パラメータの一例を示す図である。プリミティブPmの頂点パラメータは、表示画面DIS上の各頂点pk1〜pk3の各座標(x1,y1)、(x2,y2)、(x3,y3)と各頂点座標における画像パラメータであるRGB各色の階調値(以下、色値)rgb1〜rgb3、及び、奥行き方向の距離(以下、深度値)z1〜z3を有する。同図の例では、画像パラメータとして色値と深度値を例示しているが、画像パラメータは、さらに、テクスチャ表示のためのテクスチャ座標値等を含んでいてもよい。また、設定情報は、例えば、プリミティブの透過設定や、プリミティブを描画するか否かの等の設定を有する(図示せず)。
【0020】
図2に戻り、続いて、レンダリング処理部12は、頂点パラメータ及び設定情報に基づいて、プリミティブの頂点パラメータで画定される領域内の各画素について、色値を有する画素データを生成する。本実施の形態例において、レンダリング処理部12は、フレームを例えば「8画素×8画素」に分割したタイル(以下、ブロック)単位に、X、Y方向に走査して当該ブロックに含まれるプリミティブを画定する画素の画素データを生成する。
【0021】
図4は、フレームFBが分割されたブロックの一例を表す図である。同図のフレームFBは、8画素×8画素サイズの12コ(縦3×横4)のブロックに分割されている。なお、ブロックは、同図のような正方形に限定されるものではなく、長方形や他の多角形等であってもよい。また、本実施の形態例では、左下のブロックb0から右隣のブロックb1に、順に描画処理が行われる。ただし、この例に限定されるものではなく、複数のブロックはいずれの順番で描画処理が行われてもよい。続いて、レンダリング処理部12、ラスタライズ処理部24について、より詳細な構成を説明する。
【0022】
図5の上図は、レンダリング処理部12のブロック図の一例を表す図である。レンダリング処理部12は、セットアップ部21、タイリング処理部22、ソート処理部23、ラスタライズ処理部24を有する。セットアップ部21は、ジオメトリ処理部11から受け取ったプリミティブの頂点パラメータを、必要に応じて後続の処理のために加工する。続くタイリング処理部22は、頂点パラメータに基づいて各プリミティブがどのブロックに含まれるのかを判定する。この結果、プリミティブ毎に、頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有するシーンデータが生成される。シーンデータは容量が大きいため、例えば外部メモリ102に格納される。
【0023】
続いて、ソート処理部23は、シーンデータをソートし、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータと設定情報とを有するシーンデータを生成する。そして、ラスタライズ処理部24は、シーンデータに基づいて、ブロック単位にラスタライズ処理を行う。
【0024】
図5の下図は、ラスタライズ処理部24のブロック図の一例を表す図である。プリミティブパラメータ読み出し部41は、外部メモリ102から処理対象ブロックに描画されるプリミティブの座標情報及び深度情報を含む頂点パラメータを読み出す。そして、深度テスト処理部42は、頂点パラメータに基づいて深度テストを行う。詳細は後述するが、このとき、深度テスト処理部42は、処理対象ブロックの各画素について、描画対象のプリミティブを示す識別番号を生成してプリミティブ番号メモリPMに書き込む。プリミティブ番号メモリPMは、多くのメモリ容量を必要としないため、例えばSRAM等の高速の内部メモリに保持される。
【0025】
続いて、プリミティブ番号メモリ検索部43は、プリミティブ番号メモリPMから描画対象のプリミティブを示す識別番号を検索することにより、対象プリミティブが描画される画素を検出する。そして、プリミティブ描画処理部45は、プリミティブパラメータ読み出し部44によって読み出された対象プリミティブの頂点パラメータ及び設定情報に基づいて、検出した画素の画素データを生成する。
【0026】
[第1の実施の形態例]
続いて、第1の実施の形態例について、フローチャート図と具体例とに基づいて、詳細に説明する。
【0027】
図6は、第1の実施の形態例における描画対象のプリミティブP0〜P5の一例を具体例として表す図である。この具体例では、6つのプリミティブP0〜P5がフレームに、一部重複して描画される。また、この例において、プリミティブの描画命令はプリミティブP0〜P5の順に入力される。同図において、ブロックb0〜b11は、点線で囲まれた8×8画素の各領域を示す。なお、本実施の形態例において、画像描画装置は、フレームの左下のブロックt0から右上のブロックt11に順に処理を行う。
【0028】
図7は、本実施の形態例における画像描画装置のレンダリング処理部12(図2、図5)の処理の流れを表すフローチャート図である。前述したとおり、まず、レンダリング処理部12のセットアップ処理部21は、ジオメトリ処理部11からプリミティブの頂点パラメータ及び設定情報を順次受け取り、必要に応じて、後続のタイリング処理部22及びラスタライズ処理部24等で処理し易い状態に加工する(S11)。また、セットアップ処理部21は、描画命令の入力順に、プリミティブに識別番号を付加する。例えば、図6の具体例では、プリミティブP0「0」、プリミティブP1「1」、プリミティブP2「2」、プリミティブP3「3」、プリミティブP4「4」、プリミティブP5「5」のように、識別番号が付加される。
【0029】
次に、レンダリング処理部12のタイリング処理部22は、各プリミティブが描画される画素が、フレーム内のいずれのブロックb0〜b11に含まれるのかを演算によって判定する(S12)。また、タイリング処理部22は、プリミティブ毎に、頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有するシーンデータを生成し、外部メモリ102に格納する(S13、S14)。ただし、プリミティブの頂点パラメータはデータ容量が大きいため、本実施の形態例における頂点パラメータは、シーンデータとは別の外部メモリ102内のプリミティブデータバッファに格納される。この場合、シーンデータには、各プリミティブの頂点パラメータのプリミティブデータバッファにおけるアドレス情報が格納される。
【0030】
続いて、レンダリング処理部12のソート処理部23は、外部メモリ102から読み出したシーンデータをブロック単位にソートする(S15、S16)。ソート後のシーンデータは、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータ及び設定情報を有する。前述したとおり、本実施の形態例におけるシーンデータには、プリミティブデータバッファにおける各プリミティブの頂点パラメータの格納アドレスが格納される。このため、ソート対象のデータ容量が抑えられ、ソート処理の速度が向上する。
【0031】
図8は、図6の具体例に基づくソート前後のシーンデータSD1、SD2の一例を表す図である。同図の上部のシーンデータSD1はソート前のシーンデータの一例である。ソート前のシーンデータSD1は、フレームへ描画されるプリミティブ毎に、描画命令の入力順(P0〜P5)に頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有する。また、設定情報は、描画命令の入力順が先のプリミティブの設定情報の総計との差分情報として保持される。
【0032】
具体的に、ソート前のシーンデータSD1は、例えば、NO.4のプリミティブP4について、プリミティブデータバッファPDBにおけるプリミティブP4の頂点パラメータの格納アドレスと、プリミティブP0〜P3の設定情報の総計との差分の設定情報と、プリミティブP4が描画されるブロックの情報b4、b8、b9とを有する。
【0033】
図8のシーンデータSD2は、ソート後のシーンデータの一例である。ソート後のシーンデータSD2は、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータ及び設定情報を、描画命令の入力順に有する。ソート後のシーンデータSD2についても同様に、設定情報は、描画命令の入力順が先のプリミティブの設定情報の総計との差分情報として保持される。ここで、ソート後のブロックb8のシーンデータSDxを例示して具体的に説明する。
【0034】
図6の具体例において、ブロックb8には、プリミティブP2、P4、P5が描画され、描画命令の入力順はプリミティブP2、P4、P5である。そのため、シーンデータSDxは、まず、プリミティブP0〜P2の設定情報と、プリミティブデータバッファPDBにおけるプリミティブP2の頂点パラメータの格納アドレスを有する。そして、シーンデータSDxは、次に入力順の早いプリミティブP4について、プリミティブP3〜P4の設定情報と、プリミティブデータバッファPDBにおけるプリミティブP4の頂点パラメータの格納アドレスを有する。プリミティブP5についても同様である。
【0035】
そのため、画像描画装置は、プリミティブP4の設定情報を取得する時、プリミティブP0〜P3の設定情報を合計した情報に、差分の情報であるプリミティブP4の設定情報を追加する。このように、画像描画装置は、描画命令の入力順に従って、プリミティブの頂点パラメータおよび設定情報を読み出す必要がある。
【0036】
図7のフローチャート図に戻り、シーンデータのソート後、レンダリング処理部12のラスタライズ処理部24は、ブロック単位に、処理対象ブロックに描画される各プリミティブについて、描画命令の入力順にプリミティブ処理(S18)と描画処理(S19)とを行う。まず、プリミティブ処理(S18)について、図9のフローチャート図に基づいて説明する。
【0037】
図9は、プリミティブ処理を説明するフローチャート図である。ラスタライズ処理部24は、プリミティブ処理として、処理対象ブロックの各画素について、前面に描画されるプリミティブを示す識別番号を生成し、プリミティブ番号メモリPMに書き込む。
【0038】
まず、ラスタライズ処理部24は、処理対象ブロックに描画されるプリミティブリストを外部メモリ102のシーンデータから読み出す(S21)。続いて、ラスタライズ処理部24は、処理対象ブロックに描画される全プリミティブについて、描画命令の入力順に処理S22、S23を行う。処理S22として、ラスタライズ処理部24は、処理対象のプリミティブ(対象プリミティブ)の頂点パラメータのうち座標情報と深度情報とを外部メモリ102から読み出す。そして、ラスタライズ処理部24は、処理対象ブロック内の対象プリミティブが描画される各画素について深度テストを行う(S23)。次に、深度テスト(S23)について、図10のフローチャート図に基づいて説明する。
【0039】
図10は、深度テストを説明するフローチャート図である。本実施の形態例では、深度値がより小さい程、より前面に位置することを示す。そこで、初め、デフォルトの深度メモリZBは、値の大きな深度値を画素毎に有する。そして、ラスタライズ処理部24は、対象プリミティブが描画される画素のうち、ある画素(注目画素)の深度値Dmを、深度メモリZBから読み出す(S31)。続いて、ラスタライズ処理部24は、対象プリミティブの頂点の座標情報と深度値とに基づいて、注目画素の深度値Dを演算して取得し(S32)、深度値Dmと比較する(S33)。
【0040】
注目画素の深度値Dが深度値Dmより小さい場合(S33のYES)、ラスタライズ処理部24は、深度メモリZBの注目画素に対応するアドレスに深度値Dを書き込む(S34)。続いて、ラスタライズ処理部24は、プリミティブ番号メモリPMの注目画素に対応に対応するアドレスに、対象プリミティブを示す識別番号を書き込む(S35)。そして、本実施の形態例におけるラスタライズ処理部24は、処理対象ブロックのプリミティブ番号メモリPMへの最初の書き込みである場合(S35のYES)、その識別番号をレジスタR1に保持しておく(S36)。従って、処理対象ブロックのプリミティブ番号メモリPMへの2回目以降の書き込みの場合は(S35のNO)、レジスタR1は更新されない。
【0041】
一方、注目画素の深度値Dが深度値Dmより大きい場合(S33のNO)、対象プリミティブは、注目画素の前面に描画されるプリミティブではないことを意味する。そのため、ラスタライズ処理部24は、深度メモリZB及びプリミティブ番号メモリPMへの書き込みを行わず、次の注目画素について深度テストを行う(S31〜S37)。
【0042】
処理対象ブロック内の対象プリミティブが描画される全画素について深度テストが行われると、プリミティブ番号メモリPMには、処理対象ブロックの各画素について、最前面に描画されるプリミティブの識別番号が格納される。また、レジスタR1には、プリミティブ番号メモリPMに初めに書き込まれた識別番号、即ち、処理対象ブロックに描画されるプリミティブであって最も入力順の早いプリミティブを示す識別番号が保持される。
【0043】
図11は、本実施の形態例の深度テスト処理部42におけるハードウェアの構成例を表す図である。本実施の形態例における深度テスト処理部42は、深度計算部51、メモリアドレス変換部52、54、深度テスト部53、書き込み判定部55、プリミティブ番号メモリPM、深度メモリZB、レジスタR1、タイミング調整用レジスタt1〜t5を有する。タイミング調整用レジスタt1〜t5は、処理タイミングを合わせるために設けられる。深度計算部51は、注目画素の深度値Dを頂点パラメータに基づいて計算して取得すると共に、注目画素の座標情報(x,y)をメモリアドレス変換部52に、座標情報(x,y)及び深度値Dをタイミング調整用レジスタt1に渡す。メモリアドレス変換部52は、座標情報(x,y)を深度メモリZBのアドレスに変換して深度メモリZBから注目画素の深度値Dmを読み出し、深度テスト部53に渡す。
【0044】
そして、深度テスト部53は、深度値Dと深度メモリZBから読み出した深度値Dmとを比較する。深度値Dが深度値Dmよりも小さい場合、深度テスト部53は、タイミング調整用レジスタt3から出力された注目画素の座標情報(x,y)をメモリアドレス変換部54に出力する。深度テスト部53は、タイミング調整用レジスタt4に深度値Dを、タイミング調整用レジスタt5に対象のプリミティブの識別番号を出力する。そして、深度値Dが注目画素に対応する深度メモリZBのアドレスに書き込まれると共に、識別番号がメモリアドレス変換部54から出力された注目画素に対応するプリミティブ番号メモリPMのアドレスに書き込まれる。また、書き込み判定部55は、プリミティブ番号メモリPMへの初回の書き込みである場合、レジスタR1に識別番号を書き込む。
【0045】
なお、本実施の形態例において、深度テストは、区分領域が有するM個(本実施の形態例では、4個)の各画素について並列に行われる。そのため、プリミティブ番号メモリPMは、対応する画素が処理される並列ユニットに対応してM個に分割される。ここで、深度テスト処理を、図6の具体例に基づいて説明する。ここでは、ブロックb0〜b11のうち、ブロックb8を処理対象ブロックとして例示して説明する。まず、処理対象ブロックの深度テスト時における各メモリの初期値について説明する。
【0046】
図12は、深度テストにおける深度メモリZB、プリミティブ番号メモリPM、レジスタR1、R2がそれぞれデフォルト値として保持する値を表す図である。なお、同図のレジスタR2(R20〜R2f)は、第2の実施の形態例で使用されるレジスタであり、第2の実施の形態例において後述する。初め、深度メモリZBの各画素に対応するアドレスには、デフォルト値として最大の深度値「1.0」が格納される。また、初め、プリミティブ番号メモリPMの各画素に対応するアドレス及び、レジスタR1には、デフォルト値としてフレームに描画されるプリミティブ総数(Max値)である「6」が格納される。ブロックb8に描画されるプリミティブP2、P4、P5の描画命令の入力順はP2、P4、P5である。そのため、ラスタライズ処理部24は、まず、プリミティブP2について深度テストを行う。
【0047】
図13は、ブロックb8におけるプリミティブP2の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。この例において、プリミティブP2が描画されるある画素g1を注目画素として処理を説明する。ラスタライズ処理部24は、注目画素g1の深度値Dm「1.0(デフォルト値)」を深度メモリZBから読み出す(図10のS31)。続いて、ラスタライズ処理部24は、プリミティブP2の頂点の座標情報と深度値とに基づいて、注目画素g1の深度値0.1を算出して取得する(S32)。
【0048】
注目画素の深度値D「0.1」は、深度メモリZBから読み出したデフォルトの深度値Dm「1.0」より小さい(S33のYES)。従って、ラスタライズ処理部24は、深度メモリZBの注目画素に対応するアドレスに深度値0.1を書き込むと共に(S34)、プリミティブ番号メモリPMの注目画素に対応するアドレスに、プリミティブP2を示す識別番号「2」を書き込む(S35)。そして、この場合、プリミティブ番号メモリPMにおける最初の書き込みであるため(S36のYES)、ラスタライズ処理部24は、レジスタR1に識別番号「2」を保持させる(S37)。
【0049】
ラスタライズ処理部24は、ブロックb8におけるプリミティブP2が描画される他の画素についても同様に深度値を比較し(S33)、その結果に応じて深度メモリZB及びプリミティブ番号メモリPMを更新する(S34、S35)。また、この時、プリミティブ番号メモリPMの最初の書き込みではないことから(S36のNO)、ラスタライズ処理部24は、レジスタR1を更新しない。この結果、図13のように、プリミティブP2が描画される画素に対応する深度メモリZBのアドレスには0.1が、プリミティブ番号メモリPMのアドレスには識別番号「2」が書き込まれる。プリミティブP2の深度テストが終わると、ラスタライズ処理部24は、次に入力順の早いプリミティブP4について、同様に深度テストを行う。
【0050】
図14は、ブロックb8におけるプリミティブP4の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。プリミティブP4の各頂点の座標情報と深度値とに基づいて取得されるプリミティブP4が描画される画素の深度値は0.3または0.4であり、深度メモリZBに書き込まれるプリミティブP2の深度値0.1より大きい(S33のNO)。これは、プリミティブP4が、プリミティブP2より背面に位置することを示す。従って、プリミティブP4が描画される画素であって、プリミティブP2が描画されない画素に対応する深度メモリZBのアドレスに深度値0.3または0.4が書き込まれ(S34)、当該画素に対応するプリミティブ番号メモリPMのアドレスにプリミティブP4を示す識別番号「4」が書き込まれる(S35)。また、レジスタR1は識別番号「2」を保持したままである(S36のNO)。プリミティブP2の深度テストが終わると、ラスタライズ処理部24は、次に入力順の早いプリミティブP5について、同様に深度テストを行う。
【0051】
図15は、ブロックb8におけるプリミティブP5の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。プリミティブP5の各頂点の座標情報と深度値とに基づいて取得される深度値は0.9であり、プリミティブP2、P4の深度値より大きい。これは、プリミティブP5は、プリミティブP2及びP4の背面に位置することを示す。従って、プリミティブP2及びP4が描画されず、プリミティブP5が描画される画素に対応する深度メモリZBのアドレスに深度値0.9が書き込まれ(S34)、当該画素に対応するプリミティブ番号メモリPMのアドレスにプリミティブP5を示す識別番号「5」が書き込まれる(S35)。また、レジスタR1は識別番号「2」を保持したままである(S36のNO)。
【0052】
このように、ラスタライズ処理部24は、全プリミティブ処理(図9、図7のS18)として、処理対象ブロックに描画される全プリミティブについて描画命令の入力順に深度テスト(図10)を行う。この結果、プリミティブ番号メモリPMには、処理対象ブロックの各画素について前面に描画されるプリミティブを示す識別番号が格納される。また、レジスタR1に、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブを示す識別番号が保持される。全プリミティブ処理の後、ラスタライズ処理部24は、処理対象ブロックの描画処理を行う(図7のS19)。
【0053】
図16は、プリミティブの描画処理を説明するフローチャート図である。本実施の形態例におけるラスタライズ処理部24は、処理対象ブロックをさらに分割したN個の区分領域毎に完了フラグfl0〜flfを有する。また、本実施の形態例におけるラスタライズ処理部24は、区分領域が有するM個の各画素の処理を並列に行う。
【0054】
初め、ラスタライズ処理部24は、検索プリミティブ番号PNに、図10の深度テストでレジスタR1に保持させた識別番号をセットする(S41)。これにより、入力順は初め(0番目)のプリミティブではなく、処理対象ブロックに描画されるプリミティブであって入力順の最も早いプリミティブから、プリミティブ番号メモリPMの検索処理が行われる。また、ラスタライズ処理部24は、N個の区分領域n0〜nfにそれぞれ対応する完了フラグfl0〜flfに初期値0をセットしておく(S42)。続いて、ラスタライズ処理部24は、次回候補の検索プリミティブ番号(次回検索プリミティブ番号nPN)に、初期値としてフレームに描画されプリミティブの総数(Max値)をセットする(S43)。
【0055】
続いて、ラスタライズ処理部24は、区分領域毎に順次、処理S44〜S55を行う。まず、ラスタライズ処理部24は、注目画素の座標情報(x,y)に基づいて、注目画素が属する区分領域(注目区分領域)の番号(以下、領域番号ar)を取得する(S44)。そして、注目区分領域の完了フラグflが0か否かを判定する(S45)。完了フラグflが1である場合(S45のNO)、注目区分領域内の全ての画素の画素データが生成済みであることを意味する。その場合、ラスタライズ処理部24は、注目区分領域内の処理を終了し、次の注目区分領域について処理S44から処理を続行する。
【0056】
一方、完了フラグflが0の場合(S45のYES)、注目区分領域は、画素データが未生成の画素を有することを示す。そこで、ラスタライズ処理部24は完了フラグflに1をセットしておき(S46)、注目区分領域の有するM個の各画素(以下、各注目画素)について、処理S47〜S55を並列に行う。
【0057】
まず、ラスタライズ処理部24は、各注目画素について、注目画素に対応するプリミティブ番号メモリPMが有する識別番号(PM[mn][ar])が、処理S41でセットされた検索プリミティブ番号PNと一致するか否かを判定する(S47)。一致する場合(S47のYES)、注目画素に検索プリミティブ番号PNの示すプリミティブが描画されることを意味する。そこで、ラスタライズ処理部24は、検索プリミティブ番号PNが示すプリミティブの頂点パラメータ及び設定情報を外部メモリ102から読み出す(S48)。なお、検索プリミティブ番号PNの頂点パラメータ及び設定情報が既に読み出し済みである場合、新たな読み出し処理は行われない。そして、ラスタライズ処理部24は、注目画素の座標情報を取得し(S49)、頂点パラメータに基づいて注目画素の画素データを取得して(S50)、内部メモリに格納する(S51)。
【0058】
一方、一致しない場合(S47のNO)、注目画素に描画されるプリミティブが検索プリミティブ番号PNの示すプリミティブではないことを意味する。そこで、ラスタライズ処理部24は、検索プリミティブ番号PNが、プリミティブ番号メモリPMが有する注目画素の識別番号(PM[mn][ar])より小さいか否かを判定する(S52)。検索プリミティブ番号PNが識別番号以上の場合(S52のNO)、注目画素に描画されるプリミティブは、検索プリミティブ番号PNの示すプリミティブよりも入力順が先であり、画素データの生成が終了していることを意味する。そのため、ラスタライズ処理部24は、処理S53〜S55を行わない。
【0059】
一方、検索プリミティブ番号PNが識別番号より小さい場合(S52のYES)、注目画素に描画されるプリミティブは、検索プリミティブ番号PNの示すプリミティブよりも入力順が後であり、画素データの未生成であることを意味する。そこで、ラスタライズ処理部24は、注目区分領域の完了フラグflを、画素データが未生成であることを示す0で更新する(S53)。続いて、ラスタライズ処理部24は、次回検索プリミティブ番号nPNが識別番号(PM[mn][ar])より大きいか否かを判定する(S54)。
【0060】
次回検索プリミティブ番号nPNが識別番号以下の場合(S54のNO)、次回検索プリミティブ番号nPNの示すプリミティブは、注目画素に描画されるプリミティブと入力順が同じか先であることを意味する。この場合、次回検索プリミティブ番号nPNには、次に入力順の早いプリミティブを示す識別番号が既に保持されているため、ラスタライズ処理部24は次回検索プリミティブ番号nPNを更新しない。一方、次回検索プリミティブ番号nPNが識別番号より大きい場合(S54のYES)、次回検索プリミティブ番号nPNの示すプリミティブは、注目画素に描画されるプリミティブよりも入力順が後であることを意味する。そこで、ラスタライズ処理部24は、次回検索プリミティブ番号nPNを識別番号で更新する(S55)。
【0061】
処理対象ブロック内の全ての区分領域について、検索プリミティブ番号PNが維持されたまま、処理S44〜S55が行われると、プリミティブ番号メモリPMに検索プリミティブ番号PNと同一の識別番号を有する全ての画素が検出され(検索処理)、当該画素の画素データが生成される。そして、次回検索プリミティブ番号nPNには、処理対象ブロックに描画されるプリミティブであって、検索プリミティブ番号PNの次に入力順の早いプリミティブを示す識別番号が保持される。
【0062】
さらに、全画素の画素データの生成が完了した区分領域の完了フラグflには1が、全画素の画素データの生成が未完了である区分領域の完了フラグflには0が保持される。完了フラグflが1の区分領域については既に画素データの生成が完了しているため、以降の検索プリミティブ番号PNと同一の識別番号を有するプリミティブ番号メモリPMの検索処理の対象外とされる。これにより、無駄な検索処理が省略され、プリミティブ番号メモリPMの検索効率が向上する。
【0063】
全ての区分領域について処理S44〜S55が行われると、続いて、ラスタライズ処理部24は、次回検索プリミティブ番号nPNとMax値が一致するか否かを判定する(S56)。一致しない場合(S56のNO)、次回検索プリミティブ番号nPNが更新されたこと、即ち、描画処理が完了していないプリミティブがあることを意味する。そのため、ラスタライズ処理部24は、検索プリミティブ番号PNに次回検索プリミティブ番号nPNをセットすると共に(S57)、次回検索プリミティブ番号nPNをMax値で初期化し(S43)、完了フラグflが0の全区分領域を対象として処理S44〜S55を行う。
【0064】
一方、次回検索プリミティブ番号nPNがMax値と一致する場合(S56のYES)、処理対象ブロックに描画される全てのプリミティブの描画処理が完了したことを意味する。そこで、ラスタライズ処理部24は、内部メモリに格納された処理対象ブロックの画素データを外部メモリ102のフレームバッファに書き込み(S58)、描画処理を終了する。図16の処理対象ブロックの描画処理(図7のS19)が終了すると、レンダリング処理部12は、次のブロックを処理対象ブロックとしてラスタライズ処理(図7のS18、S19)を行う。全てのブロックについてラスタライズ処理が行われると、ラスタライズ処理部24はフレームの描画処理を終了する。
【0065】
図17は、本実施の形態例のプリミティブ描画処理部44(図5)におけるハードウェアの構成例を表す図である。本実施の形態例におけるプリミティブ描画処理部44は、座標生成部61、メモリアドレス変換部62、プリミティブ番号メモリPM、比較部63、次回検索プリミティブ番号取得部64、レジスタR1、完了フラグfl、タイミング調整用レジスタt11〜t14を有する。
【0066】
座標生成部61は、区分領域内の画素の座標情報(x,y)を順次生成し、メモリアドレス変換部62及びタイミング調整用レジスタt11に出力する。メモリアドレス変換部62は、座標情報(x,y)をプリミティブ番号メモリPMのアドレスに変換すると共に、注目画素に対応するプリミティブ番号メモリPMが有する識別番号を読み出し、比較部63及び次回検索プリミティブ番号取得部64に出力する。そして、比較部63は、レジスタR1に保持された識別番号(検索プリミティブ番号PN)と識別番号とを比較し、一致した場合に画素データの取得を指示する。また、この時、画素データの取得指示に加えて、レジスタR1からタイミング調整用レジスタt14を介して対象プリミティブを示す識別番号と、タイミング調整用レジスタt13から注目画素の座標情報(x,y)が出力される。
【0067】
また、次回検索プリミティブ番号取得部64は、区分領域に対応するプリミティブ番号メモリPM領域に、検索プリミティブ番号PNより大きい識別番号が格納されていない場合、完了フラグflに1をセットする。そして、座標生成部61は、完了フラグflに1を有する区分領域については、座標を生成しない。また、次回検索プリミティブ番号取得部64は、以降に描画されるプリミティブのうち、最も入力順の早いプリミティブを示す識別番号を次回検索プリミティブ番号nPNとして取得し、レジスタR1に更新すると共に、次回検索プリミティブ番号nPNがMax値と一致すると検索処理を終了する。続いて、図6の具体例に基づいて描画処理を説明する。
【0068】
図18は、「検索プリミティブ番号PN=2」のときの描画処理を説明する図である。同図の左下図NBには、4画素をそれぞれ有する16コ(Nコ)の区分領域n0〜nfが太線で表されている。区分領域n0〜nfの各画素に付与された番号0〜3は、4つ(Mコ)の並列ユニットに対応する区分領域内の画素位置を表す。本実施の形態例において、ラスタライズ処理部24は、例えば、矢印yaの示す順に区分領域の処理を行う。
【0069】
初めに、ラスタライズ処理部24は、レジスタR1に保持された識別番号「2」を検索プリミティブ番号PNにセットすると共に(S41)、各区分領域に対応する完了フラグfl0〜flfに0をセットする(S42)。また、ラスタライズ処理部24は、次回検索プリミティブ番号nPNにMax値「6」をセットして初期化すると共に(S43)、注目区分領域n0の領域番号0を取得する(S44)。そして、ラスタライズ処理部24は、図18における注目区分領域n0内の各画素(注目画素)に対応するプリミティブ番号メモリpm0内の各識別番号と、検索プリミティブ番号PN「2」とをそれぞれ比較することにより、プリミティブ番号メモリpm0に識別番号「2」を有する画素を検索する。
【0070】
図18において、注目区分領域n0に対応するプリミティブ番号メモリpm0から、識別番号「2」を有する画素は検出されない(S47のNO)。また、識別番号「5」は、検索プリミティブ番号PN「2」より値が大きいため(S52のYES)、完了フラグfl0には0がセットされる(S53)。また、識別番号「5」は次回検索プリミティブ番号nPN「6」より値が小さいため(S54のYES)、次回検索プリミティブ番号nPNにが「5」がセットされる(S53)。
【0071】
このように、本実施の形態例におけるラスタライズ処理部24は、検索プリミティブ番号PN「0」からではなく、検索プリミティブ番号PN「2」から順に検索処理を行う。これにより、ブロックb8のような、0番目のプリミティブが描画されないブロックの場合、不要な検索処理(検索プリミティブ番号PN「0」の検索処理)が省かれ、プリミティブ番号メモリPMの検索処理が効率化される。
【0072】
図19の左図は、「検索プリミティブ番号PN=2」のときの区分領域n1の描画処理を説明する図である。続いて、ラスタライズ処理部24は、区分領域n1を注目区分領域として、同様にして、対応するプリミティブ番号メモリpm1から識別番号「2」を有する画素を検索する。同図において、プリミティブ番号メモリpm1には、識別番号「4」及び「5」が格納されている(S47のNO)。識別番号「4」及び「5」は、検索プリミティブ番号PN「2」より値が大きいため(S52のYES)、完了フラグfl1には0がセットされる(S53)。また、識別番号「4」は次回検索プリミティブ番号nPN「5」より値が小さいため(S54のYES)、次回検索プリミティブ番号nPNには「4」がセットされる(S55)。
【0073】
図19の右図は、「検索プリミティブ番号PN=2」のときの区分領域n9の描画処理を説明する図である。例えば、区分領域n9が注目区分領域のとき、ラスタライズ処理部24は、対応するプリミティブ番号メモリpm9から識別番号「2」を有する画素を検索する。同図のように、プリミティブ番号メモリpm9には、区分領域n9内の全ての画素に対応するアドレスに識別番号「2」が格納されている(S47のYES)。そのため、注目区分領域pm9内の全ての画素の画素データが生成され(S48〜S51)、完了フラグfl9には1がセットされる。この時、次回検索プリミティブ番号nPNは更新されない。
【0074】
図20の左図は、「検索プリミティブ番号PN=2」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、レジスタR1には、処理対象ブロックに描画されるプリミティブであって、検索プリミティブ番号PN「2」が示すプリミティブの次に入力順の早いプリミティブを示す識別番号「4」が格納される。そして、全ての画素に対応するプリミティブ番号メモリに識別番号「2」が格納される区分領域n9〜nbについては、完了フラグfl9〜flbに1がセットされる。
【0075】
検索プリミティブ番号PN=2の処理が終了すると、ラスタライズ処理部24は、次回検索プリミティブ番号nPN「4」を、検索プリミティブ番号PNとして、同様の処理を行う。このとき、完了フラグに1を有する区分領域n9〜nbは、全画素の画素データの生成が完了しているため、プリミティブ番号メモリPMに識別番号「4」を有する画素の検索領域の対象外となる。これにより、不要な検索処理が省かれ、プリミティブ番号メモリPMの検索効率が向上する。
【0076】
図20の右図は、「検索プリミティブ番号PN=4」のときの描画処理を説明する図である。ラスタライズ処理部24は、完了フラグfl0〜flfが0である区分領域を対象として、順次、対応するプリミティブ番号メモリpm0〜pmfから識別番号「4」を有する画素を検索すると共に、検出画素の画素データを生成する。その結果、例えば、区分領域n1について、対応するプリミティブ番号メモリpm1から識別番号「4」を有する画素が検出され、当該画素の画素データが生成される(S48〜S51)。また、完了フラグfl1に0がセットされ(S52のYES、S53)、次回検索プリミティブ番号nPNは、区分領域n0の処理時に更新された「5」のままとなる(S54のNO)。
【0077】
図21の左図は、「検索プリミティブ番号PN=4」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、レジスタR1には、次に入力順の早いプリミティブの識別番号「5」が格納される。そして、全ての画素に対応するプリミティブ番号メモリに識別番号「2」または「4」のいずれかまたは両方が格納されている区分領域fl2、fl3、fl9〜flbについては、完了フラグflに1がセットされ、以降の検索処理の範囲対象外となる。
【0078】
図21の右部は、「検索プリミティブ番号PN=5」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、検索プリミティブ番号PN「5」を対応するプリミティブ番号メモリに有する全ての画素が検索され、画素データが生成される。これにより、処理対象ブロックに描画される全てのプリミティブの描画処理が完了するため、全区分領域の完了フラグfl0〜flfが1に更新される。
【0079】
また、この場合、プリミティブ番号メモリpm0〜pmfは、検索プリミティブ番号PN「5」より大きい識別番号を有しないため(S52のNO)、次回検索プリミティブ番号nPNは初期値であるMax値「6」のまま更新されない。これにより、ラスタライズ処理部24は、処理対象ブロックに描画される全プリミティブの描画処理が終了したものとみなし、内部メモリに格納した画素データを外部メモリ102のフレームバッファに書き込む(S56)。
【0080】
このように、本実施の形態例における画像描画装置は、ブロック単位に、ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含む頂点パラメータ(プリミティブパラメータ)を第1のメモリ(外部メモリ)から読み出し、頂点パラメータに基づいて対象ブロック内の各画素について、前面に描画されるプリミティブの識別番号(識別情報)を生成し第2のメモリ(内部高速メモリ)のプリミティブ番号メモリに書き込む。この時、画像描画装置は、プリミティブの識別番号の生成中に、対象ブロックに描画されるプリミティブであって、入力順の最も早いプリミティブの識別番号を先頭識別情報(先頭識別情報)として保持する。例えば、画像描画装置は、プリミティブの識別番号の生成時、描画命令の入力順にプリミティブの頂点パラメータを読み出し、プリミティブ番号メモリに初めに書き込む識別番号を先頭識別情報として保持する。
【0081】
そして、画像描画装置は、ブロック単位に、先頭識別情報のプリミティブから入力順に、対象プリミティブの頂点の座標情報と色情報とを含む頂点パラメータを第1のメモリから読み出すと共に、プリミティブ番号メモリに対象プリミティブの識別番号を有する画素について、頂点パラメータに基づいて画素データを生成しフレームバッファに書き込む。
【0082】
これにより、画像描画装置は、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブから、プリミティブ番号メモリに対して対象プリミティブの識別番号を有する画素を検索することができる。これにより、入力順が0番目のプリミティブが処理対象ブロックに描画されない場合、(0番目のプリミティブの)プリミティブ番号メモリの不要な検索処理を省くことができる。この結果、プリミティブ番号メモリの検索処理がより効率的に行われる。
【0083】
また、画像描画装置は、ブロックを複数の区分領域に分割し、プリミティブ番号メモリの対象プリミティブの識別番号を有する画素の検索時に、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索処理の範囲対象外とする。これにより、画像描画装置は、プリミティブ番号メモリの検索時の対象領域を限定することができ、検索効率を向上させることができる。また、画像描画装置は区分領域内の複数の画素について、処理を並列化する。これにより、画像描画装置は、画像描画装置の並列化の度合いを抑え回路規模を抑えながら、プリミティブ番号メモリの検索処理をより効率的にすることができる。
【0084】
[第2の実施の形態例]
第1の実施の形態例における画像描画装置は、処理対象ブロックに描画されるプリミティブであって入力順の最も早いプリミティブの識別番号を保持していたのに対し、第2の実施の形態例における画像描画装置は、処理対象ブロックの区分領域毎に、当該区分領域に描画されるプリミティブであって入力順の最も早いプリミティブの識別番号を保持する。これにより、画像描画装置は、プリミティブ番号メモリに検索処理をより効率的にすることができる。以下、フローチャート図に基づいて説明する。
【0085】
図22は、第2の実施の形態例における深度テストの処理を表すフローチャート図である。同図において、プリミティブ番号メモリへの書き込みまでの処理(S61〜S65)は、第1の実施の形態例(S31〜S35)と同様である。第2の実施の形態例におけるラスタライズ処理部24は、注目画素の深度値Dが、深度メモリZBから読み出した注目画素の深度値Dmより小さいとき(S63のYES)、注目画素が含まれる区分領域に対応するプリミティブ番号メモリPMへの最初の書き込みである場合に(S66のYES)、識別番号を当該区分領域に対応するレジスタR2[領域番号]に保持しておく(S67)。
【0086】
そして、処理対象ブロックに描画される全てのプリミティブについて深度テストが行われると、処理対象ブロックの各画素について、前面に描画されるプリミティブの識別番号がプリミティブ番号メモリPMに格納される。また、各区分領域のレジスタR2には、各区分領域に対応するプリミティブ番号メモリPM領域に、最初に書き込まれた識別番号、即ち、区分領域に描画されるプリミティブであって最も入力順の早いプリミティブを示す識別番号が保持される。
【0087】
図23は、本実施の形態例の深度テスト処理部42におけるハードウェアの構成例を表す図である。レジスタR2、及び書き込み判定部75以外は、第1の実施の形態例と同様である。本実施の形態例において、書き込み判定部75は、注目画素の深度値Dが深度メモリZBから読み出した深度値Dmよりも小さい場合、注目画素が含まれる区分領域内の初回の書き込みであるか否かを判定する。初回の書き込みであった場合、区分領域に対応するレジスタR2に対象プリミティブを示す識別番号が書き込まれる。ここで、本実施の形態例における深度テスト処理を、図6の具体例に基づいて説明する。
【0088】
図13の右図には、第2の実施の形態例におけるブロックb8に係るプリミティブP2の深度テスト後のレジスタR20〜R2fが表される。深度メモリZB及びプリミティブ番号メモリPMについては、第1の実施の形態例と同様である。プリミティブP2の深度テストの結果、プリミティブP2が描画される画素が含まれる区分領域のレジスタR24〜R2fに、識別番号「2」が保持される。そして、図14の右図には、続いて行われるプリミティブP4の深度テスト後のレジスタR20〜R2fが表される。プリミティブP4の深度テストの結果、プリミティブP4が描画される画素を有する区分領域であって、対応するプリミティブ番号メモリに初めて書き込みが行われる区分領域のレジスタR21〜R23に識別番号「4」が書き込まれる。
【0089】
図15の右図には、続いて行われるプリミティブP5の深度テスト後のレジスタR20〜R2fが表される。プリミティブP5の深度テスト時には、ぞれぞれの区分領域に対応するプリミティブ番号メモリは既に書き込み済みである。そのため、いずれのレジスタR20〜R2fも更新されない。そして、ラスタライズ処理部24は、深度テストによるレジスタR20〜R2fに基づいて、後続のプリミティブの描画処理を効率的に行う。続いて、プリミティブの描画処理について、フローチャート図に基づいて説明する。
【0090】
図24は、第2の実施の形態例におけるプリミティブの描画処理を説明するフローチャート図である。同図において、ラスタライズ処理部24は、まず、検索プリミティブ番号PN及び次回検索プリミティブ番号nPNに、Max値をセットして初期化する(S71)。そして、ラスタライズ処理部24は、区分領域毎に、対応するレジスタR20〜R2fの有する識別番号が検索プリミティブ番号PNより小さい場合に(S72、S73のYES)、当該識別番号を検索プリミティブ番号PNにセットすると共に、区分領域の領域番号arを注目領域番号Sarとして保持する(S74)。
【0091】
全ての区分領域について、処理S72〜S74が行われると、レジスタR20〜R2fが有する識別番号のうち、最も値の小さい(入力順の早い)識別番号が検索プリミティブ番号PNにセットされると共に、当該識別番号を有するレジスタR20〜R2fに対応する区分領域の領域番号arが注目領域番号Sarとして保持される。
【0092】
続いて、ラスタライズ処理部24は、検索プリミティブ番号PNとMax値とを比較する(S75)。一致しない場合(S75のYES)、ラスタライズ処理部24は、注目領域番号Sarが示す区分領域を注目区分領域とする。そして、ラスタライズ処理部24は、第1の実施の形態例と同様に、注目区分領域のM個の各画素(以下、注目画素)について並列に、対応するプリミティブ番号メモリに検索プリミティブ番号PNと一致する識別番号を有する注目画素を検索し(S76のYES)、画素データを生成する(S76〜S80)。
【0093】
また、検索プリミティブ番号PNと、注目画素に対応するプリミティブ番号メモリPMが有する識別番号(PM[mn][Sar])が一致しない場合(S76のNO)、検索プリミティブ番号PNが識別番号より小さいか否か判定する(S81)。検索プリミティブ番号PNが識別番号より小さく(S81のYES)、さらに、次回検索プリミティブ番号nPNが識別番号より大きい場合に(S82のYES)、ラスタライズ処理部24は、次回検索プリミティブ番号nPNに識別番号をセットする(S83)。これにより、次回検索プリミティブ番号nPNには、注目区分領域に描画されるプリミティブであって、検索プリミティブ番号PNの次に入力順の早いプリミティブを示す識別番号が保持される。
【0094】
注目区分領域の処理(S76〜S83)が終わると、ラスタライズ処理部24は、注目区分領域に対応するレジスタR2[Sar]に次回検索プリミティブ番号nPNを書き込む(S84)。これにより、注目区分領域に対応するレジスタR2[Sar]は、注目区分領域に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号で更新される。そして、処理S71に戻り、同様にして、ラスタライズ処理は、レジスタR20〜R2fが有する識別番号のうち、最も値の小さい(入力順の早い)識別番号を検索プリミティブ番号PNにセットし、当該識別番号を有するレジスタR20〜R2fに対応する区分領域を注目領域とする。
【0095】
そして、ラスタライズ処理部24は、検索プリミティブ番号PNがMax値と一致しなければ(S75のYES)、注目区分領域に対して同様の処理を行う(S75〜S84)。一方、検索プリミティブ番号PNがMax値と一致する場合(S75のNO)、処理対処ブロックに描画される全プリミティブの描画処理が完了したことを意味する。そこで、ラスタライズ処理部24は、内部メモリに格納された処理対象ブロックの画素データを外部メモリ102のフレームバッファに書き込み(S85)、描画処理を終了する。
【0096】
図25は、本実施の形態例の描画処理部44(図5)におけるハードウェアの構成例を表す図である。本実施の形態例において、描画処理部44は、完了フラグflを有さず、区分領域毎にレジスタR2を有する。また、本実施の形態例において、座標生成部81は、第1の実施の形態例と異なり、区分領域毎のレジスタR2(R20〜R2f)から一番小さい識別番号を検出し、当該識別番号を有する区分領域の座標情報(x,y)を順次生成して、メモリアドレス変換部62へ出力する。また、次回検索プリミティブ番号取得部84は、注目区分領域に対応するレジスタR2を、注目区分領域に以降に描画されるプリミティブのうち最も入力順の早いプリミティブを示す識別番号で更新する。続いて、図6の具体例に基づいて描画処理を説明する。
【0097】
図26は、「検索プリミティブ番号PN=2」のときの描画処理を説明する図である。ラスタライズ処理部24は、レジスタR20〜R2fに保持された識別番号のうち、最も値の小さい識別番号、即ち、最も入力順の早いプリミティブを示す識別番号「2」を検索プリミティブ番号PNにセットすると共に、レジスタR20〜R2fに当該識別番号を保持する区分領域n4を注目区分領域に設定する。そして、ラスタライズ処理部24は、注目区分領域n4に対応するプリミティブ番号メモリpm4から、識別番号「2」を有する画素を検索し(S76のYES)、当該画素の画素データを生成する(S77〜S80)。
【0098】
この場合、識別番号「2」を有するレジスタR24〜R2fに対応する区分領域n4〜nfに対応するプリミティブ番号メモリPM領域には、必ず、識別番号「2」を有する画素が含まれる。ラスタライズ処理部24は、必ず、識別番号「2」を有するプリミティブ番号メモリPM領域を対象として、プリミティブ番号メモリPM領域に識別番号「2」が格納される画素の検索処理を行う。これにより、プリミティブ番号メモリPMの検索効率が向上する。
【0099】
また、ラスタライズ処理部24は、画素データの生成処理を行うと共に、レジスタR24〜R2fに、対応する区分領域n4〜nf内に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号「4」を書き込んで更新する(S84)。これにより、レジスタR20〜R2fには、対応する区分領域に描画されるプリミティブであって、最も入力順の早いプリミティブを示す識別番号が常に保持されることになる。
【0100】
図26の右図は、レジスタR20〜R2fに識別番号「2」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。このように、レジスタR20〜R2fには、当該区分領域に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号「4」及び「5」が保持される。また、プリミティブP2のみが描画される区分領域n9〜nb、即ち、全画素の画素データの生成が完了した区分領域のレジスタR29〜R2bには、Max値「6」がセットされる。
【0101】
続いて、ラスタライズ処理部24は、同様に、レジスタR20〜R2fに保持された識別番号のうち、最も入力順の早いプリミティブを示す識別番号「4」を検索プリミティブ番号PNとして、プリミティブ番号メモリPMの検索処理を行う。この時、ラスタライズ処理部24は、識別番号「4」を保持するレジスタR2の区分領域に対応するプリミティブ番号メモリPM領域を対象として、検索処理を行う。同様にして、プリミティブP4が描画される画素を有する区分領域に対応するプリミティブ番号メモリPM領域に対して検索処理が行われ、プリミティブ番号メモリPMの検索効率が向上する。
【0102】
図27の左図は、レジスタR20〜R2fに識別番号「4」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。描画処理の結果、対応するプリミティブ番号メモリPMに識別番号「2」または「4」のみを有する区分領域n2、n3、n6、n9〜nbのレジスタR22、R23、R26、R29〜R2bには、Max値「6」が保持される。続いて、ラスタライズ処理部24は、レジスタR20〜R2fに保持された識別番号のうち最も入力順の早いプリミティブを示す識別番号「5」を検索プリミティブ番号PNとして、プリミティブ番号メモリPMの検索処理を行う。同様にして、この時、ラスタライズ処理部24は、識別番号「5」を保持するレジスタR2の区分領域に対応するプリミティブ番号メモリPM領域を対象として、検索処理を行う。
【0103】
図27の右図は、レジスタR20〜R2fに識別番号「5」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。処理対象ブロックに描画される全てのプリミティブの描画処理が終了するため、描画処理の結果、レジスタR20〜R2fには全てMax値「6」が保持される。そして、検索プリミティブ番号PNがMax値と一致するため(S75のNO)、ラスタライズ処理部24は、内部メモリに格納した処理対象ブロックの各画素の画素データを外部メモリ102のフレームバッファに書き込む(S85)。
【0104】
このように、本実施の形態例における画像描画装置は、ブロック単位に、ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含む頂点パラメータ(プリミティブパラメータ)を第1のメモリ(外部メモリ)から読み出し、頂点パラメータに基づいて対象ブロック内の各画素について、前面に描画されるプリミティブの識別番号(識別情報)を生成し第2のメモリ(内部高速メモリ)のプリミティブ番号メモリに書き込む。この時、画像描画装置は、プリミティブの識別番号の生成中に、ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、入力順の最も早いプリミティブの識別番号を先頭識別情報として保持する。例えば、画像描画装置は、プリミティブの識別番号の生成時、描画命令の入力順にプリミティブの頂点パラメータを読み出し、区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別番号を先頭識別情報として保持する。
【0105】
そして、画像描画装置は、ブロック単位に、複数の先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの頂点の座標情報と色情報とを含む頂点パラメータを第1のメモリから読み出すと共に、最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に最先頭識別情報を有する画素について、頂点パラメータに基づいて画素データを生成しフレームバッファに書き込む。そして、画像描画装置は、さらに、プリミティブ番号メモリ領域における次に入力順の早い識別番号を、区分領域の新たな先頭識別情報として更新する。
【0106】
これにより、画像描画装置は、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブから順次、当該プリミティブが描画される区分領域に対応するプリミティブ番号メモリ領域を対象として、対象プリミティブの識別番号を有する画素を検索することができる。これにより、入力順が0番目のプリミティブが処理対象ブロックに描画されない場合、(0番目のプリミティブの)プリミティブ番号メモリの不要な検索処理を省くことができる。
【0107】
また、本実施の形態例における画像描画装置は、区分領域毎に、各区分領域内の画素に描画されるプリミティブであって次に入力順の早いプリミティブを示す識別番号を常に保持するため、処理対象ブロックに描画される次に入力順の早いプリミティブの情報に加え、当該プリミティブが描画される画素を含む区分領域を特定することができる。これにより、画像描画装置は、検索対象のプリミティブを示す識別番号を必ず有する、特定した区分領域に対応するプリミティブ番号メモリ領域を検索対象領域とすることにより、プリミティブ番号メモリの検索効率をより向上させることができる。
【0108】
さらに、本実施の形態例における画像描画装置は、区分領域内の複数の画素について、処理を並列化する。これにより、画像描画装置は、画像描画装置の並列化の度合いを抑え回路規模を抑えながら、プリミティブ番号メモリの検索処理をより効率的にすることができる。
【0109】
以上の実施の形態をまとめると、次の付記のとおりである。
【0110】
(付記1)
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す画像描画装置。
【0111】
(付記2)
付記1において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記プリミティブ番号メモリに初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【0112】
(付記3)
付記1において、
前記第2のメモリは、前記第1のメモリよりもアクセス速度が速い画像描画装置。
【0113】
(付記4)
付記1において、
前記ブロックはそれぞれ複数の区分領域に分割され、
前記画素データ生成部は、前記プリミティブ番号メモリを検索して前記対象プリミティブの識別情報を有する画素を検出し、当該検出処理において、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索の範囲対象外とする画像描画装置。
【0114】
(付記5)
付記4において、
前記画素データ生成部は、前記区分領域内の複数の画素について並列に処理を行う画像描画装置。
【0115】
(付記6)
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、前記入力順の最も早いプリミティブの前記識別情報を先頭識別情報として保持し、
前記画素データ生成部は、複数の前記先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの前記プリミティブパラメータを前記第1のメモリから読み出すと共に、前記最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に前記最先頭識別情報を有する画素について画素データを生成し、さらに、前記プリミティブ番号メモリ領域における次に前記入力順の早い識別情報を前記先頭識別情報として更新する画像描画装置。
【0116】
(付記7)
付記6において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【0117】
(付記8)
付記6において、
前記第2のメモリは、前記第1のメモリよりもアクセス速度が速い画像描画装置。
【0118】
(付記9)
付記6おいて、
前記画素データ生成部は、前記区分領域内の複数の画素について並列に処理を行う画像描画装置。
【符号の説明】
【0119】
101:CPU、100:GPU、102:外部メモリ、10:コマンド解釈部、11:ジオメトリ処理部、12:レンダリング処理部、21:セットアップ処理部、22:タイリング処理部、23:ソート処理部、24:ラスタライズ処理部
【技術分野】
【0001】
本発明は、画像描画装置に関する。
【背景技術】
【0002】
3次元グラフィックス等の画像描画装置では、描画対象の画像を複数のプリミティブ(例えば、三角形など多角形のポリゴン)の集合とみなし、プリミティブ毎に描画処理を行う。また、画像の描画処理では、タイリングアーキテクチャと呼ばれる方法が知られる(例えば、特許文献1)。
【0003】
タイリングアーキテクチャによると、画像描画装置は、フレームを所定のサイズ(例えば、8×8画素)に分割したタイル毎に、タイル内に画素を有するプリミティブについてラスタライズ処理を行う。タイルのサイズは小さいため、画像描画装置は、SRAM等の高速の内部メモリにおいてタイル単位にラスタライズ処理を行うことによって、タイル内の各画素の画素データを生成する。そして、画像描画装置は、内部メモリに生成された画素データを低速の外部メモリに書き出す。SRAMは、外部メモリに比べてアクセスが高速であるため、タイリングアーキテクチャによると、メモリのアクセスが効率化されラスタライズ処理が高速になる。
【0004】
具体的に、画像描画装置は、ラスタライズ処理として、タイル単位に、深度テスト及びプリミティブの描画処理を行う。ラスタライズ処理は、タイル毎に、描画命令の入力順に、描画対象のプリミティブの頂点パラメータ及び設定情報を有するシーンデータに基づいて行われる。頂点パラメータは、例えば、プリミティブの各頂点の座標情報や深度情報、色情報等を有し、設定情報は、例えば、プリミティブの透過設定等を有する。
【0005】
シーンデータは容量が大きいことから、一般的に、外部メモリに格納される。また、シーンデータにおける各プリミティブの設定情報は、描画命令の入力順が先のプリミティブの設定情報との差分情報として保持される。画像描画装置は、対象のプリミティブの設定情報を取得するとき、既に読み出した入力順が先のプリミティブの設定情報に、新たに読み出した対象のプリミティブの設定情報を加える。このため、プリミティブの設定情報は、プリミティブの描画命令の入力順に従って読み出される必要がある。
【0006】
具体的に、ラスタライズ処理におけるタイル単位の深度テスト及びプリミティブの描画処理は、次のように行われる。画像描画装置は、深度テストとして、対象タイルの各画素について、シーンデータから一部読み出した深度情報を含む頂点パラメータに基づいて、前面に描画されるプリミティブか否かを判別する。このとき、画像描画装置は、対象タイルの各画素について、前面に描画されるプリミティブを示す識別情報を生成し、内部メモリのプリミティブ番号メモリに格納する。
【0007】
続いて、画像描画装置は、プリミティブの描画処理として、プリミティブ番号メモリから読み出した識別情報に基づいて、識別番号の示すプリミティブの頂点パラメータ及び設定情報をシーンデータから読み出して画素データを生成する。プリミティブの頂点パラメータ及び設定情報は外部メモリに格納されているため、読み出し処理は必要最小限に抑えられることが望ましい。ただし、前述したとおり、設定情報は入力順に基づいて差分の情報として保持されているため、画像描画装置は、プリミティブの頂点パラメータ及び設定情報を描画命令の入力順に従って読み出す必要がある。
【0008】
そこで、画像描画装置は、次のようにプリミティブの描画処理を行う。まず、画像描画装置は、入力順が初め(0番目)のプリミティブを示す識別情報によってプリミティブ番号メモリを検索する。0番目のプリミティブを示す識別情報が検出された場合、画像描画装置は、シーンデータから0番目のプリミティブの頂点パラメータ及び設定情報を読み出し、対応する画素の画素データを生成する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平5−135147号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述したプリミティブの描画処理において、対象タイルに0番目のプリミティブが描画されない場合、プリミティブ番号メモリには0番目のプリミティブを示す識別情報が格納されていない。そのため、0番目のプリミティブを示す識別情報によるプリミティブ番号メモリの検索処理は、無駄な処理となってしまう。
【0011】
このように、プリミティブの描画処理におけるプリミティブ番号メモリの検索処理において、非効率な検索処理が発生することがあり、描画性能の低下要因となっていた。一方、プリミティブ番号メモリの検索処理を並列化することにより、描画性能を向上させる方法がある。しかし、並列化の度合いによっては画像描画装置の回路規模が大きくなり、コストが高くなる。
【0012】
そこで、本発明では、コストを抑えながら効率的にラスタライズ処理を行う画像描画装置を提供する。
【課題を解決するための手段】
【0013】
第1の側面は、フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す。
【発明の効果】
【0014】
第1の側面によれば、コストを抑えながら効率的にラスタライズ処理を行う。
【図面の簡単な説明】
【0015】
【図1】本実施の形態例における画像描画装置の構成の一例を示す図である。
【図2】GPUのブロック図の一例を表す図である。
【図3】プリミティブの頂点パラメータの一例を示す図である。
【図4】フレームが分割されたブロックの一例を表す図である。
【図5】レンダリング処理部、ラスタライズ処理部のブロック図例を表す図である。
【図6】第1の実施の形態例における描画対象プリミティブの一例を表す図である。
【図7】レンダリング処理部の処理の流れを表すフローチャート図である。
【図8】図6の具体例に基づくソート前後のシーンデータの一例を表す図である。
【図9】プリミティブ処理を説明するフローチャート図である。
【図10】第1の実施の形態例の深度テストを説明するフローチャート図である。
【図11】第1の実施の形態例における深度テスト処理部のハードウェア構成例図である。
【図12】深度メモリ、プリミティブ番号メモリ、レジスタのデフォルト値を表す図である。
【図13】プリミティブP2の深度テスト後の各メモリを表す図である。
【図14】プリミティブP4の深度テスト後の各メモリを表す図である。
【図15】プリミティブP5の深度テスト後の各メモリを表す図である。
【図16】第1の実施の形態例の描画処理を説明するフローチャート図である。
【図17】第1の実施の形態例における描画処理部のハードウェア構成例図である。
【図18】検索プリミティブ番号PN=2の時の描画処理を説明する図である。
【図19】検索プリミティブ番号PN=2の時の描画処理を説明する第2図である。
【図20】検索プリミティブ番号PN=2、4の時の描画処理を説明する図である。
【図21】検索プリミティブ番号PN=4、5の時の描画処理を説明する図である。
【図22】第2の実施の形態例の深度テストの処理を表すフローチャート図である。
【図23】第2の実施の形態例における深度テスト処理部のハードウェア構成例図である。
【図24】第2の実施の形態例の描画処理を説明するフローチャート図である。
【図25】第2の実施の形態例における描画処理部のハードウェア構成例図である。
【図26】レジスタに識別番号2を有する区分領域の描画処理を説明する図である。
【図27】レジスタに識別番号4、5を有する区分領域の描画処理を説明する図である。
【発明を実施するための形態】
【0016】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0017】
図1は、本実施の形態例における画像描画装置の構成の一例を示す図である。同図において、画像描画装置は、例えば、CPU(Central Processing Unit)101、GPU(Graphics Processing Unit)100、外部メモリ102を有する。外部メモリ102は、例えば、DRAM(Dynamic Random Access Memory)で構成され、フレームバッファ等が格納される。同図において、アプリケーション(図示せず)からGPU100に対して、複数のプリミティブから構成される立体オブジェクトの3次元データと描画命令が渡される。GPU100は、3次元データに基づいて、立体オブジェクトを所定の視点で視たときの2次元画像の画素データを生成し、フレームバッファに書き込む。
【0018】
図2は、GPU100のブロック図の一例を表す図である。GPU100は、コマンド解釈部10、ジオメトリ処理部11、レンダリング処理部12を有する。同図において、例えば、GPU100のコマンド解釈部10は、外部メモリ102から描画命令リストを読み込み、描画命令を解釈する。一般に、立体オブジェクトは多数のプリミティブの集合体として表現される。ジオメトリ処理部11は、描画命令に基づいて、表示画面上の2次元座標であるプリミティブの頂点パラメータ及び設定情報を生成し、レンダリング処理部12に渡す。
【0019】
図3は、ジオメトリ処理部11が生成するプリミティブPmの頂点パラメータの一例を示す図である。プリミティブPmの頂点パラメータは、表示画面DIS上の各頂点pk1〜pk3の各座標(x1,y1)、(x2,y2)、(x3,y3)と各頂点座標における画像パラメータであるRGB各色の階調値(以下、色値)rgb1〜rgb3、及び、奥行き方向の距離(以下、深度値)z1〜z3を有する。同図の例では、画像パラメータとして色値と深度値を例示しているが、画像パラメータは、さらに、テクスチャ表示のためのテクスチャ座標値等を含んでいてもよい。また、設定情報は、例えば、プリミティブの透過設定や、プリミティブを描画するか否かの等の設定を有する(図示せず)。
【0020】
図2に戻り、続いて、レンダリング処理部12は、頂点パラメータ及び設定情報に基づいて、プリミティブの頂点パラメータで画定される領域内の各画素について、色値を有する画素データを生成する。本実施の形態例において、レンダリング処理部12は、フレームを例えば「8画素×8画素」に分割したタイル(以下、ブロック)単位に、X、Y方向に走査して当該ブロックに含まれるプリミティブを画定する画素の画素データを生成する。
【0021】
図4は、フレームFBが分割されたブロックの一例を表す図である。同図のフレームFBは、8画素×8画素サイズの12コ(縦3×横4)のブロックに分割されている。なお、ブロックは、同図のような正方形に限定されるものではなく、長方形や他の多角形等であってもよい。また、本実施の形態例では、左下のブロックb0から右隣のブロックb1に、順に描画処理が行われる。ただし、この例に限定されるものではなく、複数のブロックはいずれの順番で描画処理が行われてもよい。続いて、レンダリング処理部12、ラスタライズ処理部24について、より詳細な構成を説明する。
【0022】
図5の上図は、レンダリング処理部12のブロック図の一例を表す図である。レンダリング処理部12は、セットアップ部21、タイリング処理部22、ソート処理部23、ラスタライズ処理部24を有する。セットアップ部21は、ジオメトリ処理部11から受け取ったプリミティブの頂点パラメータを、必要に応じて後続の処理のために加工する。続くタイリング処理部22は、頂点パラメータに基づいて各プリミティブがどのブロックに含まれるのかを判定する。この結果、プリミティブ毎に、頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有するシーンデータが生成される。シーンデータは容量が大きいため、例えば外部メモリ102に格納される。
【0023】
続いて、ソート処理部23は、シーンデータをソートし、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータと設定情報とを有するシーンデータを生成する。そして、ラスタライズ処理部24は、シーンデータに基づいて、ブロック単位にラスタライズ処理を行う。
【0024】
図5の下図は、ラスタライズ処理部24のブロック図の一例を表す図である。プリミティブパラメータ読み出し部41は、外部メモリ102から処理対象ブロックに描画されるプリミティブの座標情報及び深度情報を含む頂点パラメータを読み出す。そして、深度テスト処理部42は、頂点パラメータに基づいて深度テストを行う。詳細は後述するが、このとき、深度テスト処理部42は、処理対象ブロックの各画素について、描画対象のプリミティブを示す識別番号を生成してプリミティブ番号メモリPMに書き込む。プリミティブ番号メモリPMは、多くのメモリ容量を必要としないため、例えばSRAM等の高速の内部メモリに保持される。
【0025】
続いて、プリミティブ番号メモリ検索部43は、プリミティブ番号メモリPMから描画対象のプリミティブを示す識別番号を検索することにより、対象プリミティブが描画される画素を検出する。そして、プリミティブ描画処理部45は、プリミティブパラメータ読み出し部44によって読み出された対象プリミティブの頂点パラメータ及び設定情報に基づいて、検出した画素の画素データを生成する。
【0026】
[第1の実施の形態例]
続いて、第1の実施の形態例について、フローチャート図と具体例とに基づいて、詳細に説明する。
【0027】
図6は、第1の実施の形態例における描画対象のプリミティブP0〜P5の一例を具体例として表す図である。この具体例では、6つのプリミティブP0〜P5がフレームに、一部重複して描画される。また、この例において、プリミティブの描画命令はプリミティブP0〜P5の順に入力される。同図において、ブロックb0〜b11は、点線で囲まれた8×8画素の各領域を示す。なお、本実施の形態例において、画像描画装置は、フレームの左下のブロックt0から右上のブロックt11に順に処理を行う。
【0028】
図7は、本実施の形態例における画像描画装置のレンダリング処理部12(図2、図5)の処理の流れを表すフローチャート図である。前述したとおり、まず、レンダリング処理部12のセットアップ処理部21は、ジオメトリ処理部11からプリミティブの頂点パラメータ及び設定情報を順次受け取り、必要に応じて、後続のタイリング処理部22及びラスタライズ処理部24等で処理し易い状態に加工する(S11)。また、セットアップ処理部21は、描画命令の入力順に、プリミティブに識別番号を付加する。例えば、図6の具体例では、プリミティブP0「0」、プリミティブP1「1」、プリミティブP2「2」、プリミティブP3「3」、プリミティブP4「4」、プリミティブP5「5」のように、識別番号が付加される。
【0029】
次に、レンダリング処理部12のタイリング処理部22は、各プリミティブが描画される画素が、フレーム内のいずれのブロックb0〜b11に含まれるのかを演算によって判定する(S12)。また、タイリング処理部22は、プリミティブ毎に、頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有するシーンデータを生成し、外部メモリ102に格納する(S13、S14)。ただし、プリミティブの頂点パラメータはデータ容量が大きいため、本実施の形態例における頂点パラメータは、シーンデータとは別の外部メモリ102内のプリミティブデータバッファに格納される。この場合、シーンデータには、各プリミティブの頂点パラメータのプリミティブデータバッファにおけるアドレス情報が格納される。
【0030】
続いて、レンダリング処理部12のソート処理部23は、外部メモリ102から読み出したシーンデータをブロック単位にソートする(S15、S16)。ソート後のシーンデータは、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータ及び設定情報を有する。前述したとおり、本実施の形態例におけるシーンデータには、プリミティブデータバッファにおける各プリミティブの頂点パラメータの格納アドレスが格納される。このため、ソート対象のデータ容量が抑えられ、ソート処理の速度が向上する。
【0031】
図8は、図6の具体例に基づくソート前後のシーンデータSD1、SD2の一例を表す図である。同図の上部のシーンデータSD1はソート前のシーンデータの一例である。ソート前のシーンデータSD1は、フレームへ描画されるプリミティブ毎に、描画命令の入力順(P0〜P5)に頂点パラメータ及び設定情報、当該プリミティブが描画されるブロック情報を有する。また、設定情報は、描画命令の入力順が先のプリミティブの設定情報の総計との差分情報として保持される。
【0032】
具体的に、ソート前のシーンデータSD1は、例えば、NO.4のプリミティブP4について、プリミティブデータバッファPDBにおけるプリミティブP4の頂点パラメータの格納アドレスと、プリミティブP0〜P3の設定情報の総計との差分の設定情報と、プリミティブP4が描画されるブロックの情報b4、b8、b9とを有する。
【0033】
図8のシーンデータSD2は、ソート後のシーンデータの一例である。ソート後のシーンデータSD2は、ブロック毎に、当該ブロックに描画されるプリミティブの頂点パラメータ及び設定情報を、描画命令の入力順に有する。ソート後のシーンデータSD2についても同様に、設定情報は、描画命令の入力順が先のプリミティブの設定情報の総計との差分情報として保持される。ここで、ソート後のブロックb8のシーンデータSDxを例示して具体的に説明する。
【0034】
図6の具体例において、ブロックb8には、プリミティブP2、P4、P5が描画され、描画命令の入力順はプリミティブP2、P4、P5である。そのため、シーンデータSDxは、まず、プリミティブP0〜P2の設定情報と、プリミティブデータバッファPDBにおけるプリミティブP2の頂点パラメータの格納アドレスを有する。そして、シーンデータSDxは、次に入力順の早いプリミティブP4について、プリミティブP3〜P4の設定情報と、プリミティブデータバッファPDBにおけるプリミティブP4の頂点パラメータの格納アドレスを有する。プリミティブP5についても同様である。
【0035】
そのため、画像描画装置は、プリミティブP4の設定情報を取得する時、プリミティブP0〜P3の設定情報を合計した情報に、差分の情報であるプリミティブP4の設定情報を追加する。このように、画像描画装置は、描画命令の入力順に従って、プリミティブの頂点パラメータおよび設定情報を読み出す必要がある。
【0036】
図7のフローチャート図に戻り、シーンデータのソート後、レンダリング処理部12のラスタライズ処理部24は、ブロック単位に、処理対象ブロックに描画される各プリミティブについて、描画命令の入力順にプリミティブ処理(S18)と描画処理(S19)とを行う。まず、プリミティブ処理(S18)について、図9のフローチャート図に基づいて説明する。
【0037】
図9は、プリミティブ処理を説明するフローチャート図である。ラスタライズ処理部24は、プリミティブ処理として、処理対象ブロックの各画素について、前面に描画されるプリミティブを示す識別番号を生成し、プリミティブ番号メモリPMに書き込む。
【0038】
まず、ラスタライズ処理部24は、処理対象ブロックに描画されるプリミティブリストを外部メモリ102のシーンデータから読み出す(S21)。続いて、ラスタライズ処理部24は、処理対象ブロックに描画される全プリミティブについて、描画命令の入力順に処理S22、S23を行う。処理S22として、ラスタライズ処理部24は、処理対象のプリミティブ(対象プリミティブ)の頂点パラメータのうち座標情報と深度情報とを外部メモリ102から読み出す。そして、ラスタライズ処理部24は、処理対象ブロック内の対象プリミティブが描画される各画素について深度テストを行う(S23)。次に、深度テスト(S23)について、図10のフローチャート図に基づいて説明する。
【0039】
図10は、深度テストを説明するフローチャート図である。本実施の形態例では、深度値がより小さい程、より前面に位置することを示す。そこで、初め、デフォルトの深度メモリZBは、値の大きな深度値を画素毎に有する。そして、ラスタライズ処理部24は、対象プリミティブが描画される画素のうち、ある画素(注目画素)の深度値Dmを、深度メモリZBから読み出す(S31)。続いて、ラスタライズ処理部24は、対象プリミティブの頂点の座標情報と深度値とに基づいて、注目画素の深度値Dを演算して取得し(S32)、深度値Dmと比較する(S33)。
【0040】
注目画素の深度値Dが深度値Dmより小さい場合(S33のYES)、ラスタライズ処理部24は、深度メモリZBの注目画素に対応するアドレスに深度値Dを書き込む(S34)。続いて、ラスタライズ処理部24は、プリミティブ番号メモリPMの注目画素に対応に対応するアドレスに、対象プリミティブを示す識別番号を書き込む(S35)。そして、本実施の形態例におけるラスタライズ処理部24は、処理対象ブロックのプリミティブ番号メモリPMへの最初の書き込みである場合(S35のYES)、その識別番号をレジスタR1に保持しておく(S36)。従って、処理対象ブロックのプリミティブ番号メモリPMへの2回目以降の書き込みの場合は(S35のNO)、レジスタR1は更新されない。
【0041】
一方、注目画素の深度値Dが深度値Dmより大きい場合(S33のNO)、対象プリミティブは、注目画素の前面に描画されるプリミティブではないことを意味する。そのため、ラスタライズ処理部24は、深度メモリZB及びプリミティブ番号メモリPMへの書き込みを行わず、次の注目画素について深度テストを行う(S31〜S37)。
【0042】
処理対象ブロック内の対象プリミティブが描画される全画素について深度テストが行われると、プリミティブ番号メモリPMには、処理対象ブロックの各画素について、最前面に描画されるプリミティブの識別番号が格納される。また、レジスタR1には、プリミティブ番号メモリPMに初めに書き込まれた識別番号、即ち、処理対象ブロックに描画されるプリミティブであって最も入力順の早いプリミティブを示す識別番号が保持される。
【0043】
図11は、本実施の形態例の深度テスト処理部42におけるハードウェアの構成例を表す図である。本実施の形態例における深度テスト処理部42は、深度計算部51、メモリアドレス変換部52、54、深度テスト部53、書き込み判定部55、プリミティブ番号メモリPM、深度メモリZB、レジスタR1、タイミング調整用レジスタt1〜t5を有する。タイミング調整用レジスタt1〜t5は、処理タイミングを合わせるために設けられる。深度計算部51は、注目画素の深度値Dを頂点パラメータに基づいて計算して取得すると共に、注目画素の座標情報(x,y)をメモリアドレス変換部52に、座標情報(x,y)及び深度値Dをタイミング調整用レジスタt1に渡す。メモリアドレス変換部52は、座標情報(x,y)を深度メモリZBのアドレスに変換して深度メモリZBから注目画素の深度値Dmを読み出し、深度テスト部53に渡す。
【0044】
そして、深度テスト部53は、深度値Dと深度メモリZBから読み出した深度値Dmとを比較する。深度値Dが深度値Dmよりも小さい場合、深度テスト部53は、タイミング調整用レジスタt3から出力された注目画素の座標情報(x,y)をメモリアドレス変換部54に出力する。深度テスト部53は、タイミング調整用レジスタt4に深度値Dを、タイミング調整用レジスタt5に対象のプリミティブの識別番号を出力する。そして、深度値Dが注目画素に対応する深度メモリZBのアドレスに書き込まれると共に、識別番号がメモリアドレス変換部54から出力された注目画素に対応するプリミティブ番号メモリPMのアドレスに書き込まれる。また、書き込み判定部55は、プリミティブ番号メモリPMへの初回の書き込みである場合、レジスタR1に識別番号を書き込む。
【0045】
なお、本実施の形態例において、深度テストは、区分領域が有するM個(本実施の形態例では、4個)の各画素について並列に行われる。そのため、プリミティブ番号メモリPMは、対応する画素が処理される並列ユニットに対応してM個に分割される。ここで、深度テスト処理を、図6の具体例に基づいて説明する。ここでは、ブロックb0〜b11のうち、ブロックb8を処理対象ブロックとして例示して説明する。まず、処理対象ブロックの深度テスト時における各メモリの初期値について説明する。
【0046】
図12は、深度テストにおける深度メモリZB、プリミティブ番号メモリPM、レジスタR1、R2がそれぞれデフォルト値として保持する値を表す図である。なお、同図のレジスタR2(R20〜R2f)は、第2の実施の形態例で使用されるレジスタであり、第2の実施の形態例において後述する。初め、深度メモリZBの各画素に対応するアドレスには、デフォルト値として最大の深度値「1.0」が格納される。また、初め、プリミティブ番号メモリPMの各画素に対応するアドレス及び、レジスタR1には、デフォルト値としてフレームに描画されるプリミティブ総数(Max値)である「6」が格納される。ブロックb8に描画されるプリミティブP2、P4、P5の描画命令の入力順はP2、P4、P5である。そのため、ラスタライズ処理部24は、まず、プリミティブP2について深度テストを行う。
【0047】
図13は、ブロックb8におけるプリミティブP2の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。この例において、プリミティブP2が描画されるある画素g1を注目画素として処理を説明する。ラスタライズ処理部24は、注目画素g1の深度値Dm「1.0(デフォルト値)」を深度メモリZBから読み出す(図10のS31)。続いて、ラスタライズ処理部24は、プリミティブP2の頂点の座標情報と深度値とに基づいて、注目画素g1の深度値0.1を算出して取得する(S32)。
【0048】
注目画素の深度値D「0.1」は、深度メモリZBから読み出したデフォルトの深度値Dm「1.0」より小さい(S33のYES)。従って、ラスタライズ処理部24は、深度メモリZBの注目画素に対応するアドレスに深度値0.1を書き込むと共に(S34)、プリミティブ番号メモリPMの注目画素に対応するアドレスに、プリミティブP2を示す識別番号「2」を書き込む(S35)。そして、この場合、プリミティブ番号メモリPMにおける最初の書き込みであるため(S36のYES)、ラスタライズ処理部24は、レジスタR1に識別番号「2」を保持させる(S37)。
【0049】
ラスタライズ処理部24は、ブロックb8におけるプリミティブP2が描画される他の画素についても同様に深度値を比較し(S33)、その結果に応じて深度メモリZB及びプリミティブ番号メモリPMを更新する(S34、S35)。また、この時、プリミティブ番号メモリPMの最初の書き込みではないことから(S36のNO)、ラスタライズ処理部24は、レジスタR1を更新しない。この結果、図13のように、プリミティブP2が描画される画素に対応する深度メモリZBのアドレスには0.1が、プリミティブ番号メモリPMのアドレスには識別番号「2」が書き込まれる。プリミティブP2の深度テストが終わると、ラスタライズ処理部24は、次に入力順の早いプリミティブP4について、同様に深度テストを行う。
【0050】
図14は、ブロックb8におけるプリミティブP4の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。プリミティブP4の各頂点の座標情報と深度値とに基づいて取得されるプリミティブP4が描画される画素の深度値は0.3または0.4であり、深度メモリZBに書き込まれるプリミティブP2の深度値0.1より大きい(S33のNO)。これは、プリミティブP4が、プリミティブP2より背面に位置することを示す。従って、プリミティブP4が描画される画素であって、プリミティブP2が描画されない画素に対応する深度メモリZBのアドレスに深度値0.3または0.4が書き込まれ(S34)、当該画素に対応するプリミティブ番号メモリPMのアドレスにプリミティブP4を示す識別番号「4」が書き込まれる(S35)。また、レジスタR1は識別番号「2」を保持したままである(S36のNO)。プリミティブP2の深度テストが終わると、ラスタライズ処理部24は、次に入力順の早いプリミティブP5について、同様に深度テストを行う。
【0051】
図15は、ブロックb8におけるプリミティブP5の深度テスト後の深度メモリZB及びプリミティブ番号メモリPM、レジスタR1を表す図である。プリミティブP5の各頂点の座標情報と深度値とに基づいて取得される深度値は0.9であり、プリミティブP2、P4の深度値より大きい。これは、プリミティブP5は、プリミティブP2及びP4の背面に位置することを示す。従って、プリミティブP2及びP4が描画されず、プリミティブP5が描画される画素に対応する深度メモリZBのアドレスに深度値0.9が書き込まれ(S34)、当該画素に対応するプリミティブ番号メモリPMのアドレスにプリミティブP5を示す識別番号「5」が書き込まれる(S35)。また、レジスタR1は識別番号「2」を保持したままである(S36のNO)。
【0052】
このように、ラスタライズ処理部24は、全プリミティブ処理(図9、図7のS18)として、処理対象ブロックに描画される全プリミティブについて描画命令の入力順に深度テスト(図10)を行う。この結果、プリミティブ番号メモリPMには、処理対象ブロックの各画素について前面に描画されるプリミティブを示す識別番号が格納される。また、レジスタR1に、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブを示す識別番号が保持される。全プリミティブ処理の後、ラスタライズ処理部24は、処理対象ブロックの描画処理を行う(図7のS19)。
【0053】
図16は、プリミティブの描画処理を説明するフローチャート図である。本実施の形態例におけるラスタライズ処理部24は、処理対象ブロックをさらに分割したN個の区分領域毎に完了フラグfl0〜flfを有する。また、本実施の形態例におけるラスタライズ処理部24は、区分領域が有するM個の各画素の処理を並列に行う。
【0054】
初め、ラスタライズ処理部24は、検索プリミティブ番号PNに、図10の深度テストでレジスタR1に保持させた識別番号をセットする(S41)。これにより、入力順は初め(0番目)のプリミティブではなく、処理対象ブロックに描画されるプリミティブであって入力順の最も早いプリミティブから、プリミティブ番号メモリPMの検索処理が行われる。また、ラスタライズ処理部24は、N個の区分領域n0〜nfにそれぞれ対応する完了フラグfl0〜flfに初期値0をセットしておく(S42)。続いて、ラスタライズ処理部24は、次回候補の検索プリミティブ番号(次回検索プリミティブ番号nPN)に、初期値としてフレームに描画されプリミティブの総数(Max値)をセットする(S43)。
【0055】
続いて、ラスタライズ処理部24は、区分領域毎に順次、処理S44〜S55を行う。まず、ラスタライズ処理部24は、注目画素の座標情報(x,y)に基づいて、注目画素が属する区分領域(注目区分領域)の番号(以下、領域番号ar)を取得する(S44)。そして、注目区分領域の完了フラグflが0か否かを判定する(S45)。完了フラグflが1である場合(S45のNO)、注目区分領域内の全ての画素の画素データが生成済みであることを意味する。その場合、ラスタライズ処理部24は、注目区分領域内の処理を終了し、次の注目区分領域について処理S44から処理を続行する。
【0056】
一方、完了フラグflが0の場合(S45のYES)、注目区分領域は、画素データが未生成の画素を有することを示す。そこで、ラスタライズ処理部24は完了フラグflに1をセットしておき(S46)、注目区分領域の有するM個の各画素(以下、各注目画素)について、処理S47〜S55を並列に行う。
【0057】
まず、ラスタライズ処理部24は、各注目画素について、注目画素に対応するプリミティブ番号メモリPMが有する識別番号(PM[mn][ar])が、処理S41でセットされた検索プリミティブ番号PNと一致するか否かを判定する(S47)。一致する場合(S47のYES)、注目画素に検索プリミティブ番号PNの示すプリミティブが描画されることを意味する。そこで、ラスタライズ処理部24は、検索プリミティブ番号PNが示すプリミティブの頂点パラメータ及び設定情報を外部メモリ102から読み出す(S48)。なお、検索プリミティブ番号PNの頂点パラメータ及び設定情報が既に読み出し済みである場合、新たな読み出し処理は行われない。そして、ラスタライズ処理部24は、注目画素の座標情報を取得し(S49)、頂点パラメータに基づいて注目画素の画素データを取得して(S50)、内部メモリに格納する(S51)。
【0058】
一方、一致しない場合(S47のNO)、注目画素に描画されるプリミティブが検索プリミティブ番号PNの示すプリミティブではないことを意味する。そこで、ラスタライズ処理部24は、検索プリミティブ番号PNが、プリミティブ番号メモリPMが有する注目画素の識別番号(PM[mn][ar])より小さいか否かを判定する(S52)。検索プリミティブ番号PNが識別番号以上の場合(S52のNO)、注目画素に描画されるプリミティブは、検索プリミティブ番号PNの示すプリミティブよりも入力順が先であり、画素データの生成が終了していることを意味する。そのため、ラスタライズ処理部24は、処理S53〜S55を行わない。
【0059】
一方、検索プリミティブ番号PNが識別番号より小さい場合(S52のYES)、注目画素に描画されるプリミティブは、検索プリミティブ番号PNの示すプリミティブよりも入力順が後であり、画素データの未生成であることを意味する。そこで、ラスタライズ処理部24は、注目区分領域の完了フラグflを、画素データが未生成であることを示す0で更新する(S53)。続いて、ラスタライズ処理部24は、次回検索プリミティブ番号nPNが識別番号(PM[mn][ar])より大きいか否かを判定する(S54)。
【0060】
次回検索プリミティブ番号nPNが識別番号以下の場合(S54のNO)、次回検索プリミティブ番号nPNの示すプリミティブは、注目画素に描画されるプリミティブと入力順が同じか先であることを意味する。この場合、次回検索プリミティブ番号nPNには、次に入力順の早いプリミティブを示す識別番号が既に保持されているため、ラスタライズ処理部24は次回検索プリミティブ番号nPNを更新しない。一方、次回検索プリミティブ番号nPNが識別番号より大きい場合(S54のYES)、次回検索プリミティブ番号nPNの示すプリミティブは、注目画素に描画されるプリミティブよりも入力順が後であることを意味する。そこで、ラスタライズ処理部24は、次回検索プリミティブ番号nPNを識別番号で更新する(S55)。
【0061】
処理対象ブロック内の全ての区分領域について、検索プリミティブ番号PNが維持されたまま、処理S44〜S55が行われると、プリミティブ番号メモリPMに検索プリミティブ番号PNと同一の識別番号を有する全ての画素が検出され(検索処理)、当該画素の画素データが生成される。そして、次回検索プリミティブ番号nPNには、処理対象ブロックに描画されるプリミティブであって、検索プリミティブ番号PNの次に入力順の早いプリミティブを示す識別番号が保持される。
【0062】
さらに、全画素の画素データの生成が完了した区分領域の完了フラグflには1が、全画素の画素データの生成が未完了である区分領域の完了フラグflには0が保持される。完了フラグflが1の区分領域については既に画素データの生成が完了しているため、以降の検索プリミティブ番号PNと同一の識別番号を有するプリミティブ番号メモリPMの検索処理の対象外とされる。これにより、無駄な検索処理が省略され、プリミティブ番号メモリPMの検索効率が向上する。
【0063】
全ての区分領域について処理S44〜S55が行われると、続いて、ラスタライズ処理部24は、次回検索プリミティブ番号nPNとMax値が一致するか否かを判定する(S56)。一致しない場合(S56のNO)、次回検索プリミティブ番号nPNが更新されたこと、即ち、描画処理が完了していないプリミティブがあることを意味する。そのため、ラスタライズ処理部24は、検索プリミティブ番号PNに次回検索プリミティブ番号nPNをセットすると共に(S57)、次回検索プリミティブ番号nPNをMax値で初期化し(S43)、完了フラグflが0の全区分領域を対象として処理S44〜S55を行う。
【0064】
一方、次回検索プリミティブ番号nPNがMax値と一致する場合(S56のYES)、処理対象ブロックに描画される全てのプリミティブの描画処理が完了したことを意味する。そこで、ラスタライズ処理部24は、内部メモリに格納された処理対象ブロックの画素データを外部メモリ102のフレームバッファに書き込み(S58)、描画処理を終了する。図16の処理対象ブロックの描画処理(図7のS19)が終了すると、レンダリング処理部12は、次のブロックを処理対象ブロックとしてラスタライズ処理(図7のS18、S19)を行う。全てのブロックについてラスタライズ処理が行われると、ラスタライズ処理部24はフレームの描画処理を終了する。
【0065】
図17は、本実施の形態例のプリミティブ描画処理部44(図5)におけるハードウェアの構成例を表す図である。本実施の形態例におけるプリミティブ描画処理部44は、座標生成部61、メモリアドレス変換部62、プリミティブ番号メモリPM、比較部63、次回検索プリミティブ番号取得部64、レジスタR1、完了フラグfl、タイミング調整用レジスタt11〜t14を有する。
【0066】
座標生成部61は、区分領域内の画素の座標情報(x,y)を順次生成し、メモリアドレス変換部62及びタイミング調整用レジスタt11に出力する。メモリアドレス変換部62は、座標情報(x,y)をプリミティブ番号メモリPMのアドレスに変換すると共に、注目画素に対応するプリミティブ番号メモリPMが有する識別番号を読み出し、比較部63及び次回検索プリミティブ番号取得部64に出力する。そして、比較部63は、レジスタR1に保持された識別番号(検索プリミティブ番号PN)と識別番号とを比較し、一致した場合に画素データの取得を指示する。また、この時、画素データの取得指示に加えて、レジスタR1からタイミング調整用レジスタt14を介して対象プリミティブを示す識別番号と、タイミング調整用レジスタt13から注目画素の座標情報(x,y)が出力される。
【0067】
また、次回検索プリミティブ番号取得部64は、区分領域に対応するプリミティブ番号メモリPM領域に、検索プリミティブ番号PNより大きい識別番号が格納されていない場合、完了フラグflに1をセットする。そして、座標生成部61は、完了フラグflに1を有する区分領域については、座標を生成しない。また、次回検索プリミティブ番号取得部64は、以降に描画されるプリミティブのうち、最も入力順の早いプリミティブを示す識別番号を次回検索プリミティブ番号nPNとして取得し、レジスタR1に更新すると共に、次回検索プリミティブ番号nPNがMax値と一致すると検索処理を終了する。続いて、図6の具体例に基づいて描画処理を説明する。
【0068】
図18は、「検索プリミティブ番号PN=2」のときの描画処理を説明する図である。同図の左下図NBには、4画素をそれぞれ有する16コ(Nコ)の区分領域n0〜nfが太線で表されている。区分領域n0〜nfの各画素に付与された番号0〜3は、4つ(Mコ)の並列ユニットに対応する区分領域内の画素位置を表す。本実施の形態例において、ラスタライズ処理部24は、例えば、矢印yaの示す順に区分領域の処理を行う。
【0069】
初めに、ラスタライズ処理部24は、レジスタR1に保持された識別番号「2」を検索プリミティブ番号PNにセットすると共に(S41)、各区分領域に対応する完了フラグfl0〜flfに0をセットする(S42)。また、ラスタライズ処理部24は、次回検索プリミティブ番号nPNにMax値「6」をセットして初期化すると共に(S43)、注目区分領域n0の領域番号0を取得する(S44)。そして、ラスタライズ処理部24は、図18における注目区分領域n0内の各画素(注目画素)に対応するプリミティブ番号メモリpm0内の各識別番号と、検索プリミティブ番号PN「2」とをそれぞれ比較することにより、プリミティブ番号メモリpm0に識別番号「2」を有する画素を検索する。
【0070】
図18において、注目区分領域n0に対応するプリミティブ番号メモリpm0から、識別番号「2」を有する画素は検出されない(S47のNO)。また、識別番号「5」は、検索プリミティブ番号PN「2」より値が大きいため(S52のYES)、完了フラグfl0には0がセットされる(S53)。また、識別番号「5」は次回検索プリミティブ番号nPN「6」より値が小さいため(S54のYES)、次回検索プリミティブ番号nPNにが「5」がセットされる(S53)。
【0071】
このように、本実施の形態例におけるラスタライズ処理部24は、検索プリミティブ番号PN「0」からではなく、検索プリミティブ番号PN「2」から順に検索処理を行う。これにより、ブロックb8のような、0番目のプリミティブが描画されないブロックの場合、不要な検索処理(検索プリミティブ番号PN「0」の検索処理)が省かれ、プリミティブ番号メモリPMの検索処理が効率化される。
【0072】
図19の左図は、「検索プリミティブ番号PN=2」のときの区分領域n1の描画処理を説明する図である。続いて、ラスタライズ処理部24は、区分領域n1を注目区分領域として、同様にして、対応するプリミティブ番号メモリpm1から識別番号「2」を有する画素を検索する。同図において、プリミティブ番号メモリpm1には、識別番号「4」及び「5」が格納されている(S47のNO)。識別番号「4」及び「5」は、検索プリミティブ番号PN「2」より値が大きいため(S52のYES)、完了フラグfl1には0がセットされる(S53)。また、識別番号「4」は次回検索プリミティブ番号nPN「5」より値が小さいため(S54のYES)、次回検索プリミティブ番号nPNには「4」がセットされる(S55)。
【0073】
図19の右図は、「検索プリミティブ番号PN=2」のときの区分領域n9の描画処理を説明する図である。例えば、区分領域n9が注目区分領域のとき、ラスタライズ処理部24は、対応するプリミティブ番号メモリpm9から識別番号「2」を有する画素を検索する。同図のように、プリミティブ番号メモリpm9には、区分領域n9内の全ての画素に対応するアドレスに識別番号「2」が格納されている(S47のYES)。そのため、注目区分領域pm9内の全ての画素の画素データが生成され(S48〜S51)、完了フラグfl9には1がセットされる。この時、次回検索プリミティブ番号nPNは更新されない。
【0074】
図20の左図は、「検索プリミティブ番号PN=2」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、レジスタR1には、処理対象ブロックに描画されるプリミティブであって、検索プリミティブ番号PN「2」が示すプリミティブの次に入力順の早いプリミティブを示す識別番号「4」が格納される。そして、全ての画素に対応するプリミティブ番号メモリに識別番号「2」が格納される区分領域n9〜nbについては、完了フラグfl9〜flbに1がセットされる。
【0075】
検索プリミティブ番号PN=2の処理が終了すると、ラスタライズ処理部24は、次回検索プリミティブ番号nPN「4」を、検索プリミティブ番号PNとして、同様の処理を行う。このとき、完了フラグに1を有する区分領域n9〜nbは、全画素の画素データの生成が完了しているため、プリミティブ番号メモリPMに識別番号「4」を有する画素の検索領域の対象外となる。これにより、不要な検索処理が省かれ、プリミティブ番号メモリPMの検索効率が向上する。
【0076】
図20の右図は、「検索プリミティブ番号PN=4」のときの描画処理を説明する図である。ラスタライズ処理部24は、完了フラグfl0〜flfが0である区分領域を対象として、順次、対応するプリミティブ番号メモリpm0〜pmfから識別番号「4」を有する画素を検索すると共に、検出画素の画素データを生成する。その結果、例えば、区分領域n1について、対応するプリミティブ番号メモリpm1から識別番号「4」を有する画素が検出され、当該画素の画素データが生成される(S48〜S51)。また、完了フラグfl1に0がセットされ(S52のYES、S53)、次回検索プリミティブ番号nPNは、区分領域n0の処理時に更新された「5」のままとなる(S54のNO)。
【0077】
図21の左図は、「検索プリミティブ番号PN=4」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、レジスタR1には、次に入力順の早いプリミティブの識別番号「5」が格納される。そして、全ての画素に対応するプリミティブ番号メモリに識別番号「2」または「4」のいずれかまたは両方が格納されている区分領域fl2、fl3、fl9〜flbについては、完了フラグflに1がセットされ、以降の検索処理の範囲対象外となる。
【0078】
図21の右部は、「検索プリミティブ番号PN=5」における、全区分領域の描画処理が終了した場合の描画処理を説明する図である。全ての区分領域n0〜nfが処理されると、検索プリミティブ番号PN「5」を対応するプリミティブ番号メモリに有する全ての画素が検索され、画素データが生成される。これにより、処理対象ブロックに描画される全てのプリミティブの描画処理が完了するため、全区分領域の完了フラグfl0〜flfが1に更新される。
【0079】
また、この場合、プリミティブ番号メモリpm0〜pmfは、検索プリミティブ番号PN「5」より大きい識別番号を有しないため(S52のNO)、次回検索プリミティブ番号nPNは初期値であるMax値「6」のまま更新されない。これにより、ラスタライズ処理部24は、処理対象ブロックに描画される全プリミティブの描画処理が終了したものとみなし、内部メモリに格納した画素データを外部メモリ102のフレームバッファに書き込む(S56)。
【0080】
このように、本実施の形態例における画像描画装置は、ブロック単位に、ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含む頂点パラメータ(プリミティブパラメータ)を第1のメモリ(外部メモリ)から読み出し、頂点パラメータに基づいて対象ブロック内の各画素について、前面に描画されるプリミティブの識別番号(識別情報)を生成し第2のメモリ(内部高速メモリ)のプリミティブ番号メモリに書き込む。この時、画像描画装置は、プリミティブの識別番号の生成中に、対象ブロックに描画されるプリミティブであって、入力順の最も早いプリミティブの識別番号を先頭識別情報(先頭識別情報)として保持する。例えば、画像描画装置は、プリミティブの識別番号の生成時、描画命令の入力順にプリミティブの頂点パラメータを読み出し、プリミティブ番号メモリに初めに書き込む識別番号を先頭識別情報として保持する。
【0081】
そして、画像描画装置は、ブロック単位に、先頭識別情報のプリミティブから入力順に、対象プリミティブの頂点の座標情報と色情報とを含む頂点パラメータを第1のメモリから読み出すと共に、プリミティブ番号メモリに対象プリミティブの識別番号を有する画素について、頂点パラメータに基づいて画素データを生成しフレームバッファに書き込む。
【0082】
これにより、画像描画装置は、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブから、プリミティブ番号メモリに対して対象プリミティブの識別番号を有する画素を検索することができる。これにより、入力順が0番目のプリミティブが処理対象ブロックに描画されない場合、(0番目のプリミティブの)プリミティブ番号メモリの不要な検索処理を省くことができる。この結果、プリミティブ番号メモリの検索処理がより効率的に行われる。
【0083】
また、画像描画装置は、ブロックを複数の区分領域に分割し、プリミティブ番号メモリの対象プリミティブの識別番号を有する画素の検索時に、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索処理の範囲対象外とする。これにより、画像描画装置は、プリミティブ番号メモリの検索時の対象領域を限定することができ、検索効率を向上させることができる。また、画像描画装置は区分領域内の複数の画素について、処理を並列化する。これにより、画像描画装置は、画像描画装置の並列化の度合いを抑え回路規模を抑えながら、プリミティブ番号メモリの検索処理をより効率的にすることができる。
【0084】
[第2の実施の形態例]
第1の実施の形態例における画像描画装置は、処理対象ブロックに描画されるプリミティブであって入力順の最も早いプリミティブの識別番号を保持していたのに対し、第2の実施の形態例における画像描画装置は、処理対象ブロックの区分領域毎に、当該区分領域に描画されるプリミティブであって入力順の最も早いプリミティブの識別番号を保持する。これにより、画像描画装置は、プリミティブ番号メモリに検索処理をより効率的にすることができる。以下、フローチャート図に基づいて説明する。
【0085】
図22は、第2の実施の形態例における深度テストの処理を表すフローチャート図である。同図において、プリミティブ番号メモリへの書き込みまでの処理(S61〜S65)は、第1の実施の形態例(S31〜S35)と同様である。第2の実施の形態例におけるラスタライズ処理部24は、注目画素の深度値Dが、深度メモリZBから読み出した注目画素の深度値Dmより小さいとき(S63のYES)、注目画素が含まれる区分領域に対応するプリミティブ番号メモリPMへの最初の書き込みである場合に(S66のYES)、識別番号を当該区分領域に対応するレジスタR2[領域番号]に保持しておく(S67)。
【0086】
そして、処理対象ブロックに描画される全てのプリミティブについて深度テストが行われると、処理対象ブロックの各画素について、前面に描画されるプリミティブの識別番号がプリミティブ番号メモリPMに格納される。また、各区分領域のレジスタR2には、各区分領域に対応するプリミティブ番号メモリPM領域に、最初に書き込まれた識別番号、即ち、区分領域に描画されるプリミティブであって最も入力順の早いプリミティブを示す識別番号が保持される。
【0087】
図23は、本実施の形態例の深度テスト処理部42におけるハードウェアの構成例を表す図である。レジスタR2、及び書き込み判定部75以外は、第1の実施の形態例と同様である。本実施の形態例において、書き込み判定部75は、注目画素の深度値Dが深度メモリZBから読み出した深度値Dmよりも小さい場合、注目画素が含まれる区分領域内の初回の書き込みであるか否かを判定する。初回の書き込みであった場合、区分領域に対応するレジスタR2に対象プリミティブを示す識別番号が書き込まれる。ここで、本実施の形態例における深度テスト処理を、図6の具体例に基づいて説明する。
【0088】
図13の右図には、第2の実施の形態例におけるブロックb8に係るプリミティブP2の深度テスト後のレジスタR20〜R2fが表される。深度メモリZB及びプリミティブ番号メモリPMについては、第1の実施の形態例と同様である。プリミティブP2の深度テストの結果、プリミティブP2が描画される画素が含まれる区分領域のレジスタR24〜R2fに、識別番号「2」が保持される。そして、図14の右図には、続いて行われるプリミティブP4の深度テスト後のレジスタR20〜R2fが表される。プリミティブP4の深度テストの結果、プリミティブP4が描画される画素を有する区分領域であって、対応するプリミティブ番号メモリに初めて書き込みが行われる区分領域のレジスタR21〜R23に識別番号「4」が書き込まれる。
【0089】
図15の右図には、続いて行われるプリミティブP5の深度テスト後のレジスタR20〜R2fが表される。プリミティブP5の深度テスト時には、ぞれぞれの区分領域に対応するプリミティブ番号メモリは既に書き込み済みである。そのため、いずれのレジスタR20〜R2fも更新されない。そして、ラスタライズ処理部24は、深度テストによるレジスタR20〜R2fに基づいて、後続のプリミティブの描画処理を効率的に行う。続いて、プリミティブの描画処理について、フローチャート図に基づいて説明する。
【0090】
図24は、第2の実施の形態例におけるプリミティブの描画処理を説明するフローチャート図である。同図において、ラスタライズ処理部24は、まず、検索プリミティブ番号PN及び次回検索プリミティブ番号nPNに、Max値をセットして初期化する(S71)。そして、ラスタライズ処理部24は、区分領域毎に、対応するレジスタR20〜R2fの有する識別番号が検索プリミティブ番号PNより小さい場合に(S72、S73のYES)、当該識別番号を検索プリミティブ番号PNにセットすると共に、区分領域の領域番号arを注目領域番号Sarとして保持する(S74)。
【0091】
全ての区分領域について、処理S72〜S74が行われると、レジスタR20〜R2fが有する識別番号のうち、最も値の小さい(入力順の早い)識別番号が検索プリミティブ番号PNにセットされると共に、当該識別番号を有するレジスタR20〜R2fに対応する区分領域の領域番号arが注目領域番号Sarとして保持される。
【0092】
続いて、ラスタライズ処理部24は、検索プリミティブ番号PNとMax値とを比較する(S75)。一致しない場合(S75のYES)、ラスタライズ処理部24は、注目領域番号Sarが示す区分領域を注目区分領域とする。そして、ラスタライズ処理部24は、第1の実施の形態例と同様に、注目区分領域のM個の各画素(以下、注目画素)について並列に、対応するプリミティブ番号メモリに検索プリミティブ番号PNと一致する識別番号を有する注目画素を検索し(S76のYES)、画素データを生成する(S76〜S80)。
【0093】
また、検索プリミティブ番号PNと、注目画素に対応するプリミティブ番号メモリPMが有する識別番号(PM[mn][Sar])が一致しない場合(S76のNO)、検索プリミティブ番号PNが識別番号より小さいか否か判定する(S81)。検索プリミティブ番号PNが識別番号より小さく(S81のYES)、さらに、次回検索プリミティブ番号nPNが識別番号より大きい場合に(S82のYES)、ラスタライズ処理部24は、次回検索プリミティブ番号nPNに識別番号をセットする(S83)。これにより、次回検索プリミティブ番号nPNには、注目区分領域に描画されるプリミティブであって、検索プリミティブ番号PNの次に入力順の早いプリミティブを示す識別番号が保持される。
【0094】
注目区分領域の処理(S76〜S83)が終わると、ラスタライズ処理部24は、注目区分領域に対応するレジスタR2[Sar]に次回検索プリミティブ番号nPNを書き込む(S84)。これにより、注目区分領域に対応するレジスタR2[Sar]は、注目区分領域に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号で更新される。そして、処理S71に戻り、同様にして、ラスタライズ処理は、レジスタR20〜R2fが有する識別番号のうち、最も値の小さい(入力順の早い)識別番号を検索プリミティブ番号PNにセットし、当該識別番号を有するレジスタR20〜R2fに対応する区分領域を注目領域とする。
【0095】
そして、ラスタライズ処理部24は、検索プリミティブ番号PNがMax値と一致しなければ(S75のYES)、注目区分領域に対して同様の処理を行う(S75〜S84)。一方、検索プリミティブ番号PNがMax値と一致する場合(S75のNO)、処理対処ブロックに描画される全プリミティブの描画処理が完了したことを意味する。そこで、ラスタライズ処理部24は、内部メモリに格納された処理対象ブロックの画素データを外部メモリ102のフレームバッファに書き込み(S85)、描画処理を終了する。
【0096】
図25は、本実施の形態例の描画処理部44(図5)におけるハードウェアの構成例を表す図である。本実施の形態例において、描画処理部44は、完了フラグflを有さず、区分領域毎にレジスタR2を有する。また、本実施の形態例において、座標生成部81は、第1の実施の形態例と異なり、区分領域毎のレジスタR2(R20〜R2f)から一番小さい識別番号を検出し、当該識別番号を有する区分領域の座標情報(x,y)を順次生成して、メモリアドレス変換部62へ出力する。また、次回検索プリミティブ番号取得部84は、注目区分領域に対応するレジスタR2を、注目区分領域に以降に描画されるプリミティブのうち最も入力順の早いプリミティブを示す識別番号で更新する。続いて、図6の具体例に基づいて描画処理を説明する。
【0097】
図26は、「検索プリミティブ番号PN=2」のときの描画処理を説明する図である。ラスタライズ処理部24は、レジスタR20〜R2fに保持された識別番号のうち、最も値の小さい識別番号、即ち、最も入力順の早いプリミティブを示す識別番号「2」を検索プリミティブ番号PNにセットすると共に、レジスタR20〜R2fに当該識別番号を保持する区分領域n4を注目区分領域に設定する。そして、ラスタライズ処理部24は、注目区分領域n4に対応するプリミティブ番号メモリpm4から、識別番号「2」を有する画素を検索し(S76のYES)、当該画素の画素データを生成する(S77〜S80)。
【0098】
この場合、識別番号「2」を有するレジスタR24〜R2fに対応する区分領域n4〜nfに対応するプリミティブ番号メモリPM領域には、必ず、識別番号「2」を有する画素が含まれる。ラスタライズ処理部24は、必ず、識別番号「2」を有するプリミティブ番号メモリPM領域を対象として、プリミティブ番号メモリPM領域に識別番号「2」が格納される画素の検索処理を行う。これにより、プリミティブ番号メモリPMの検索効率が向上する。
【0099】
また、ラスタライズ処理部24は、画素データの生成処理を行うと共に、レジスタR24〜R2fに、対応する区分領域n4〜nf内に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号「4」を書き込んで更新する(S84)。これにより、レジスタR20〜R2fには、対応する区分領域に描画されるプリミティブであって、最も入力順の早いプリミティブを示す識別番号が常に保持されることになる。
【0100】
図26の右図は、レジスタR20〜R2fに識別番号「2」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。このように、レジスタR20〜R2fには、当該区分領域に描画されるプリミティブであって、次に入力順の早いプリミティブを示す識別番号「4」及び「5」が保持される。また、プリミティブP2のみが描画される区分領域n9〜nb、即ち、全画素の画素データの生成が完了した区分領域のレジスタR29〜R2bには、Max値「6」がセットされる。
【0101】
続いて、ラスタライズ処理部24は、同様に、レジスタR20〜R2fに保持された識別番号のうち、最も入力順の早いプリミティブを示す識別番号「4」を検索プリミティブ番号PNとして、プリミティブ番号メモリPMの検索処理を行う。この時、ラスタライズ処理部24は、識別番号「4」を保持するレジスタR2の区分領域に対応するプリミティブ番号メモリPM領域を対象として、検索処理を行う。同様にして、プリミティブP4が描画される画素を有する区分領域に対応するプリミティブ番号メモリPM領域に対して検索処理が行われ、プリミティブ番号メモリPMの検索効率が向上する。
【0102】
図27の左図は、レジスタR20〜R2fに識別番号「4」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。描画処理の結果、対応するプリミティブ番号メモリPMに識別番号「2」または「4」のみを有する区分領域n2、n3、n6、n9〜nbのレジスタR22、R23、R26、R29〜R2bには、Max値「6」が保持される。続いて、ラスタライズ処理部24は、レジスタR20〜R2fに保持された識別番号のうち最も入力順の早いプリミティブを示す識別番号「5」を検索プリミティブ番号PNとして、プリミティブ番号メモリPMの検索処理を行う。同様にして、この時、ラスタライズ処理部24は、識別番号「5」を保持するレジスタR2の区分領域に対応するプリミティブ番号メモリPM領域を対象として、検索処理を行う。
【0103】
図27の右図は、レジスタR20〜R2fに識別番号「5」を有する区分領域の描画処理が終了した場合の描画処理を説明する図である。処理対象ブロックに描画される全てのプリミティブの描画処理が終了するため、描画処理の結果、レジスタR20〜R2fには全てMax値「6」が保持される。そして、検索プリミティブ番号PNがMax値と一致するため(S75のNO)、ラスタライズ処理部24は、内部メモリに格納した処理対象ブロックの各画素の画素データを外部メモリ102のフレームバッファに書き込む(S85)。
【0104】
このように、本実施の形態例における画像描画装置は、ブロック単位に、ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含む頂点パラメータ(プリミティブパラメータ)を第1のメモリ(外部メモリ)から読み出し、頂点パラメータに基づいて対象ブロック内の各画素について、前面に描画されるプリミティブの識別番号(識別情報)を生成し第2のメモリ(内部高速メモリ)のプリミティブ番号メモリに書き込む。この時、画像描画装置は、プリミティブの識別番号の生成中に、ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、入力順の最も早いプリミティブの識別番号を先頭識別情報として保持する。例えば、画像描画装置は、プリミティブの識別番号の生成時、描画命令の入力順にプリミティブの頂点パラメータを読み出し、区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別番号を先頭識別情報として保持する。
【0105】
そして、画像描画装置は、ブロック単位に、複数の先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの頂点の座標情報と色情報とを含む頂点パラメータを第1のメモリから読み出すと共に、最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に最先頭識別情報を有する画素について、頂点パラメータに基づいて画素データを生成しフレームバッファに書き込む。そして、画像描画装置は、さらに、プリミティブ番号メモリ領域における次に入力順の早い識別番号を、区分領域の新たな先頭識別情報として更新する。
【0106】
これにより、画像描画装置は、処理対象ブロックに描画されるプリミティブであって、最も入力順の早いプリミティブから順次、当該プリミティブが描画される区分領域に対応するプリミティブ番号メモリ領域を対象として、対象プリミティブの識別番号を有する画素を検索することができる。これにより、入力順が0番目のプリミティブが処理対象ブロックに描画されない場合、(0番目のプリミティブの)プリミティブ番号メモリの不要な検索処理を省くことができる。
【0107】
また、本実施の形態例における画像描画装置は、区分領域毎に、各区分領域内の画素に描画されるプリミティブであって次に入力順の早いプリミティブを示す識別番号を常に保持するため、処理対象ブロックに描画される次に入力順の早いプリミティブの情報に加え、当該プリミティブが描画される画素を含む区分領域を特定することができる。これにより、画像描画装置は、検索対象のプリミティブを示す識別番号を必ず有する、特定した区分領域に対応するプリミティブ番号メモリ領域を検索対象領域とすることにより、プリミティブ番号メモリの検索効率をより向上させることができる。
【0108】
さらに、本実施の形態例における画像描画装置は、区分領域内の複数の画素について、処理を並列化する。これにより、画像描画装置は、画像描画装置の並列化の度合いを抑え回路規模を抑えながら、プリミティブ番号メモリの検索処理をより効率的にすることができる。
【0109】
以上の実施の形態をまとめると、次の付記のとおりである。
【0110】
(付記1)
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す画像描画装置。
【0111】
(付記2)
付記1において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記プリミティブ番号メモリに初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【0112】
(付記3)
付記1において、
前記第2のメモリは、前記第1のメモリよりもアクセス速度が速い画像描画装置。
【0113】
(付記4)
付記1において、
前記ブロックはそれぞれ複数の区分領域に分割され、
前記画素データ生成部は、前記プリミティブ番号メモリを検索して前記対象プリミティブの識別情報を有する画素を検出し、当該検出処理において、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索の範囲対象外とする画像描画装置。
【0114】
(付記5)
付記4において、
前記画素データ生成部は、前記区分領域内の複数の画素について並列に処理を行う画像描画装置。
【0115】
(付記6)
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、前記入力順の最も早いプリミティブの前記識別情報を先頭識別情報として保持し、
前記画素データ生成部は、複数の前記先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの前記プリミティブパラメータを前記第1のメモリから読み出すと共に、前記最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に前記最先頭識別情報を有する画素について画素データを生成し、さらに、前記プリミティブ番号メモリ領域における次に前記入力順の早い識別情報を前記先頭識別情報として更新する画像描画装置。
【0116】
(付記7)
付記6において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【0117】
(付記8)
付記6において、
前記第2のメモリは、前記第1のメモリよりもアクセス速度が速い画像描画装置。
【0118】
(付記9)
付記6おいて、
前記画素データ生成部は、前記区分領域内の複数の画素について並列に処理を行う画像描画装置。
【符号の説明】
【0119】
101:CPU、100:GPU、102:外部メモリ、10:コマンド解釈部、11:ジオメトリ処理部、12:レンダリング処理部、21:セットアップ処理部、22:タイリング処理部、23:ソート処理部、24:ラスタライズ処理部
【特許請求の範囲】
【請求項1】
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す画像描画装置。
【請求項2】
請求項1において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記プリミティブ番号メモリに初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【請求項3】
請求項1において、
前記ブロックはそれぞれ複数の区分領域に分割され、
前記画素データ生成部は、前記プリミティブ番号メモリを検索して前記対象プリミティブの識別情報を有する画素を検出し、当該検出処理において、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索の範囲対象外とする画像描画装置。
【請求項4】
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、前記入力順の最も早いプリミティブの前記識別情報を先頭識別情報として保持し、
前記画素データ生成部は、複数の前記先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの前記プリミティブパラメータを前記第1のメモリから読み出すと共に、前記最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に前記最先頭識別情報を有する画素について画素データを生成し、さらに、前記プリミティブ番号メモリ領域における次に前記入力順の早い識別情報を前記先頭識別情報として更新する画像描画装置。
【請求項5】
請求項4において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【請求項1】
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックに描画されるプリミティブであって、前記入力順の最も早いプリミティブの識別情報を先頭識別情報として保持し、
前記画素データ生成部は、前記保持した前記先頭識別情報のプリミティブから前記入力順に、前記プリミティブパラメータを前記第1のメモリから読み出す画像描画装置。
【請求項2】
請求項1において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記プリミティブ番号メモリに初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【請求項3】
請求項1において、
前記ブロックはそれぞれ複数の区分領域に分割され、
前記画素データ生成部は、前記プリミティブ番号メモリを検索して前記対象プリミティブの識別情報を有する画素を検出し、当該検出処理において、全ての画素の画素データが生成済みの区分領域に対応するプリミティブ番号メモリ領域については検索の範囲対象外とする画像描画装置。
【請求項4】
フレームを複数に分割したブロック単位に、当該ブロックに描画されるプリミティブの頂点の座標情報と奥行きを示す深度情報とを含むプリミティブパラメータを第1のメモリから読み出し、当該プリミティブパラメータに基づいて、前記ブロック内の各画素について、前面に描画される前記プリミティブの識別情報を生成し第2のメモリのプリミティブ番号メモリに書き込む描画プリミティブ識別情報生成部と、
前記ブロック単位に、前記プリミティブの描画命令の入力順に、対象プリミティブの前記頂点の座標情報と色情報とを含むプリミティブパラメータを前記第1のメモリから読み出すと共に、前記プリミティブ番号メモリに前記対象プリミティブの識別情報を有する画素について、前記プリミティブパラメータに基づいて画素データを生成しフレームバッファに書き込む画素データ生成部とを有し、
前記描画プリミティブ識別情報生成部は、前記プリミティブの識別情報の生成中に、前記ブロックを複数に分割した区分領域毎に、当該区分領域に描画されるプリミティブであって、前記入力順の最も早いプリミティブの前記識別情報を先頭識別情報として保持し、
前記画素データ生成部は、複数の前記先頭識別情報のうち入力順の最も早い最先頭識別情報のプリミティブの前記プリミティブパラメータを前記第1のメモリから読み出すと共に、前記最先頭識別情報の区分領域に対応するプリミティブ番号メモリ領域に前記最先頭識別情報を有する画素について画素データを生成し、さらに、前記プリミティブ番号メモリ領域における次に前記入力順の早い識別情報を前記先頭識別情報として更新する画像描画装置。
【請求項5】
請求項4において、
前記描画プリミティブ識別情報生成部は、前記入力順に前記プリミティブのプリミティブパラメータを読み出し、前記区分領域に対応するプリミティブ番号メモリ領域に初めに書き込む識別情報を前記先頭識別情報として保持する画像描画装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【公開番号】特開2013−25376(P2013−25376A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−156729(P2011−156729)
【出願日】平成23年7月15日(2011.7.15)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願日】平成23年7月15日(2011.7.15)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]