JP4260734B2 - 描画処理装置、ラスタライザ、および描画処理方法 - Google Patents

描画処理装置、ラスタライザ、および描画処理方法 Download PDF

Info

Publication number
JP4260734B2
JP4260734B2 JP2004368813A JP2004368813A JP4260734B2 JP 4260734 B2 JP4260734 B2 JP 4260734B2 JP 2004368813 A JP2004368813 A JP 2004368813A JP 2004368813 A JP2004368813 A JP 2004368813A JP 4260734 B2 JP4260734 B2 JP 4260734B2
Authority
JP
Japan
Prior art keywords
primitive
pass
processing
data
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2004368813A
Other languages
English (en)
Other versions
JP2006178571A (ja
Inventor
純一 直井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2004368813A priority Critical patent/JP4260734B2/ja
Priority to US11/302,534 priority patent/US7616211B2/en
Priority to EP05027808A priority patent/EP1677257A3/en
Publication of JP2006178571A publication Critical patent/JP2006178571A/ja
Application granted granted Critical
Publication of JP4260734B2 publication Critical patent/JP4260734B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

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

Description

この発明は描画データを演算処理する描画処理装置、ラスタライザおよび描画処理方法に関する。
3次元コンピュータグラフィックスにおけるレンダリングエンジンは、複雑で高度なシェーディングアルゴリズムに対応するため、プログラマビリティをもった、よりプロセッサライクなものに変わりつつある。特にレンダリングエンジンの中核であるピクセルシェーダは、固定のグラフィックス機能を実装したハードウエアから、CPUと同じような命令セットを備えた演算ユニットを内蔵し、プログラミングによってフレキシブルに機能を追加していくことができるプロセッサへとその姿を変えつつある。
現在のプログラマブルなピクセルシェーダでは、描画処理対象の3次元オブジェクトに対してポリゴンセットアップを行った後、各ポリゴンをラスタライズしたピクセルデータを演算処理し、最終的なカラー値を算出する。より複雑なシェーディング処理を実現するために、マルチパスレンダリングと呼ばれる手法が用いられる。マルチパスレンダリングは、シェーディング処理を複数の演算パスに分割し、同一の描画プリミティブに対して複数回異なる演算処理を施す手法であり、よりきめ細かな描画処理を行って描画品質を上げることができる。
マルチパスレンダリングでは、1つ以上の描画プリミティブに対する描画処理を複数のパスに分割して処理するが、先に処理されたパスにおける演算処理の中間結果を後続のパスにおいて利用するため、中間結果を保持するバッファが必要になる。中間結果を保持するバッファには容量制限があることから、各パスでは、すべての描画プリミティブを一度に処理することは不可能であり、一定のピクセル数の区間で区切り、その区間毎に各パスの演算処理を行う。たとえば、パス1からパスnまである場合、パス1から順に演算処理を行い、パスnまでの演算処理が終了すると、次の区間に移り、同様にパス1からパスnまでの演算処理を行う。これを繰り返すことにより、すべての描画プリミティブのピクセルデータに対してマルチパスレンダリングが遂行される。
このように、マルチパスレンダリングでは、先のパスにおける演算結果を後続のパスの処理タイミングまで保持するバッファが必要であり、バッファのオーバーフローが生じないように、各パスで処理されるピクセル数がバッファの容量制限を超えないように制御する必要がある。しかしながら、ピクセル数がバッファの容量制限に達するかどうかは、描画プリミティブをラスタライズ処理するまで判明しない。たとえば、視点からの距離が近い描画プリミティブは画面上でより大きく描画されるため、ラスタライズ処理後にピクセル数が増大する。
ラスタライズ処理後にバッファがオーバーフローすることがわかると、処理途上のパスを中断し、それ以上、そのパスのピクセルデータが投入されないように制御しなければならない。その際、いったんラスタライズされた大量のピクセルデータは破棄されるという無駄が生じる。これは、ラスタライズ処理の単位は描画プリミティブであるのに対して、シェーディング処理の単位はピクセルであり、ピクセル数がわからなければ、各パスの演算結果の保持に必要なバッファのオーバーフローが判明しないことによる。
また、ラスタライズ処理後にバッファがオーバーフローすることが判明してから、パスの切り替え制御を行うため、次のパスの描画プリミティブのパラメータの取得、描画プリミティブの生成処理、セットアップ処理などに時間がかかり、パスの切り替え時のオーバーヘッドが大きく、マルチパスレンダリングの処理速度が低下する。さらに、オーバーフローによって処理できなかった描画プリミティブについては、そのパスの再開時に再度ラスタライズし、ピクセルデータを生成する処理が必要であり、効率が悪い。
本発明はこうした課題に鑑みてなされたものであり、その目的は、マルチパスレンダリングを効率良く行うことのできる描画処理技術を提供することにある。
上記課題を解決するために、本発明のある態様の描画処理装置は、描画プリミティブに対する描画処理を複数の演算パスに分割して処理するマルチパスレンダリングを行うものであって、マルチパスレンダリングの各演算パスで処理される描画プリミティブに関するデータを生成するプリミティブ生成部と、前記プリミティブ生成部から入力される各演算パスの描画プリミティブに関するデータをラスタライズしてピクセルデータを順次生成するラスタライザと、前記ピクセルデータに対して各演算パスの命令をパイプライン処理によって実行するシェーダとを含む。前記シェーダは、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達する前に、所定の時間余裕をもってパス切り替え信号を前記プリミティブ生成部に供給し、前記プリミティブ生成部は、前記パス切り替え信号の供給を受けたことを契機に、現演算パスの描画プリミティブに関するデータの生成を中断し、次の演算パスの描画プリミティブに関するデータの生成を開始する。
本発明の別の態様は、ラスタライザである。このラスタライザは、描画プリミティブに対する描画処理を複数の演算パスに分割して処理するマルチパスレンダリングのために、描画プリミティブに関するデータを演算パス単位でラスタライズ処理するものであって、各演算パスの描画プリミティブに関するデータに対してデジタル微分解析に関するパラメータを設定するセットアップ処理部と、前記セットアップ処理部から出力される前記描画プリミティブに関するデータを一時的に保持するテンポラリバッファと、前記デジタル微分解析に関するパラメータにもとづいて前記描画プリミティブに関するデータをピクセルデータに変換するデジタル微分解析部と、前記セットアップ処理部から前記デジタル微分解析部への前記描画プリミティブに関するデータの供給を、前記テンポラリバッファを介した間接的供給と前記テンポラリバッファを介さない直接的供給との間で切り替えるバッファ制御部とを含む。
本発明のさらに別の態様は、描画処理方法である。この方法は、描画プリミティブに対する描画処理を複数の演算パスに分割して処理するマルチパスレンダリングによる描画処理方法であって、マルチパスレンダリングの各演算パスで処理される描画プリミティブに関するデータを生成するステップと、生成された各演算パスの描画プリミティブに関するデータをラスタライズしてピクセルデータを順次生成するステップと、前記ピクセルデータに対して各演算パスの命令をパイプライン処理によって実行するステップとを含む。現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達する前に、所定の時間余裕をもって、現演算パスの描画プリミティブに関するデータの生成を中断し、次の演算パスの描画プリミティブに関するデータの生成を開始するようにパス切り替えを制御する。
本発明のさらに別の態様もまた、描画処理方法である。この方法は、描画プリミティブに対する描画処理を複数の演算パスに分割して処理するマルチパスレンダリングのために、描画プリミティブに関するデータを演算パス単位でラスタライズ処理する描画処理方法であって、各演算パスの描画プリミティブに関するデータに対してデジタル微分解析に関するパラメータをセットアップするステップと、前記デジタル微分解析に関するパラメータにもとづいて前記描画プリミティブをピクセル化するステップとを含む。演算パスの切り替えの際、次の演算パスの最初の描画プリミティブに関するデータに対して前記デジタル微分解析に関するパラメータのセットアップが完了するまでは、現演算パスの描画プリミティブに関するデータをバッファリングしながらピクセル化する。演算パスの切り替えの際、次の演算パスの最初の描画プリミティブに関するデータに対して前記デジタル微分解析に関するパラメータのセットアップが完了したとき、バッファリングされた現演算パスの描画プリミティブに関するデータを破棄し、次の演算パスの描画プリミティブに関するデータをバッファリングすることなくピクセル化してもよい。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、マルチパスレンダリングの処理効率を改善することができる。
図1は、実施の形態に係る描画処理装置100の構成図である。描画処理装置100は、3次元モデル情報にもとづいて2次元画面に表示するための描画データを生成するレンダリング処理をマルチパスレンダリングの手法を用いて行う。
プリミティブ生成部90は、描画対象となるプリミティブを生成してラスタライザ10に与える。描画プリミティブは、3次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位であり、頂点単位で表されるデータである。本図では、プリミティブ生成部90は、描画処理装置100の一部を構成しているが、プリミティブ生成部90は、ポリゴンモデル情報を生成する専用のプロセッサもしくは頂点シェーダであってもよく、描画処理装置100の外部にあって、描画処理装置100とネットワーク接続してもよい。
プリミティブ生成部90は、描画プリミティブ生成の中断(サスペンド)と再開(レジューム)の機能をもち、シェーダ20からの制御信号によって、マルチパスレンダリングのパスの切り替えを行い、それまでのパスについての描画プリミティブの生成を中断し、次のパスの描画プリミティブの生成を開始する。すべてのパスの処理が一巡して、再び最初のパスに戻る場合、前回中断した描画プリミティブの位置から描画プリミティブの生成を再開する。
ラスタライザ10は、プリミティブ生成部90から描画プリミティブの頂点データを取得し、描画プリミティブをスクリーンに対応した描画ユニットに変換する。
ここで、「描画ユニット」とは、一般には、所定の大きさのピクセル領域であり、1つのピクセルであることも、複数のピクセルの集合であることもある。あるいは、描画ユニットは、1つのピクセルをさらに細かく分割したサブピクセルの1つ、もしくはそのようなサブピクセルの集合であってもよい。以下では、説明の簡単のため、描画ユニットが複数のピクセルもしくは複数のサブピクセルからなる場合でも、描画ユニット内部での個々のピクセルもしくはサブピクセルの処理を隠蔽して、描画ユニット全体で1つのピクセルであるとみなして、本実施の形態に特徴的な描画処理技術を説明する。したがって、以下では「描画ユニット」を単にピクセルと称することにする。
描画プリミティブは一例として三角形の形状であり、ラスタライザ10は、3次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、1列毎に量子化されたピクセルに変換する。ラスタライザ10により、描画プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ値、奥行きを示すZ値、テクスチャ属性を参照するためのパラメータ座標であるUV座標値などを含むピクセル情報が算出される。
ラスタライザ10のより詳細な構成を説明する。プリミティブ入力部30は、プリミティブ生成部90から受け取った描画プリミティブの頂点座標とパラメータを含むストリームを生成し、セットアップ処理部32に与える。セットアップ処理部32は、描画プリミティブのストリームをデジタル微分解析器(Digital Differential Analyzer;DDA)により処理するための各種パラメータのセットアップを行う。具体的には、描画プリミティブを含む空間を区切るバウンダリボックスの設定や、エッジ係数などDDA処理の各種パラメータの設定を行う。
セットアップ処理部32は、セットアップ後の描画プリミティブデータをテンポラリバッファ36にバッファするか、もしくはDDA34に直接与える。セットアップ処理部32からDDA34への描画プリミティブデータの供給には、描画プリミティブをテンポラリバッファ36にバッファリングすることなく、DDA34に直接供給する「直接供給モード」と、描画プリミティブをテンポラリバッファ36にいったんバッファリングした後にFIFO順でDDA34に供給する「間接供給モード」の2つがあり、いずれかのモードが選択される。
テンポラリバッファ36は、セットアップ処理部32が出力する描画プリミティブを一時的に保持するためのFIFO(First-In First-Out)構造のバッファである。テンポラリバッファ36は、プリミティブ生成部90が描画プリミティブの投入を中断した後、中断する直前に投入された描画プリミティブのセットアップ処理が完了するまでにセットアップ処理部32から出力される描画プリミティブを保持可能な容量が最低限確保されている。
DDA34は、テンポラリバッファ36からFIFO順で出力される描画プリミティブ、もしくはセットアップ処理部32から直接与えられる描画プリミティブを、セットアップ処理部32により設定された各種パラメータにもとづいてDDA処理して、ピクセルデータに変換する。DDA34は、描画プリミティブのピクセルデータをシェーダ20に与える。
一般に、DDA34に入力される描画プリミティブの表面積が大きいほど、その描画プリミティブをピクセル化した場合のピクセル数が増える。また、描画プリミティブが視点から近い位置にあって、描画プリミティブを高い詳細度レベルで描画する必要がある場合は、描画プリミティブから生成されるピクセル数は増える。セットアップ処理部32においては、頂点データで描画プリミティブが表されているため、データ量は少ないが、DDA34によりピクセル化処理した後は、ピクセル数が増大し、データ量が増える。また、描画プリミティブの表面積や詳細度によって生成されるピクセル数は変わるため、DDA処理を経た後でないと、生成されるピクセル数は判明しない。
シェーダ20は、ラスタライザ10により算出されたピクセル情報をもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャユニット70から得られるテクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、フレームバッファ50にピクセルデータを書き込む。
テクスチャユニット70は、シェーダ20において処理されるピクセルにテクスチャデータをマッピングする処理を行う。ポリゴン面上のピクセルにマッピングされるテクスチャの位置を2次元パラメータ座標であるUV座標系で表す。テクスチャユニット70は、シェーダ20からピクセルにマッピングされるテクスチャのUV座標値を取得し、UV座標値を参照アドレスに変換した後、テクスチャから参照アドレスに対応するカラー値を取得して、シェーダ20に供給する。
シェーダ20は、さらに、フレームバッファ50に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、フレームバッファ50のピクセルデータを更新する。
シェーダ20は、シェーディングプログラムをパイプライン処理で実行する。シェーダ20は、パイプライン処理による演算結果をパイプラインの任意の段にフィードバックして入力として与える機構を備えている。このフィードバックループをマルチパスレンダリングにおいて活用し、先に処理されたパスにおける演算結果を次のパスに渡して重ね描きなどの処理を行うことができる。
フレームバッファ50は、シェーダ20により生成されたピクセルデータをスクリーン座標で格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファ50に記憶されたピクセルデータは、表示装置に出力されて表示される。
図2は、ラスタライザ10におけるラスタライズ処理の制御機構を説明する図である。図1では、図示しなかったが、セットアップ処理部32の後段にはバッファ制御部33が介在し、バッファ制御部33は、セットアップ処理部32から出力される描画プリミティブデータのDDA34への供給を制御する。
バッファ制御部33は、セットアップ処理部32から出力される描画プリミティブデータをテンポラリバッファ36を介さずにDDA34に直接的に供給する動作と、テンポラリバッファ36にバッファリングしながらDDA34に間接的に供給する動作を切り替える。バッファ制御部33は、通常時は直接供給モードで動作し、パス切り替えの際に間接供給モードで動作する。
シェーダ20は、ラスタライザ10により投入された第1パスの最初のピクセルデータ(以下、「先頭ピクセル」という)がピクセルパイプライン処理の最終段を通過し、フレームバッファ50に出力されるタイミングで、符号82で示すように、「完全フル(Completely Full)」信号をバッファ制御部33とDDA34に送る。
また、シェーダ20は、「完全フル」信号を出す時点よりも前の時点であって、ピクセルパイプライン処理の途中段に先頭ピクセルが到達した時点で、符号80で示すように「ほとんどフル(Almost Full)」信号をバッファ制御部33とプリミティブ生成部90に送る。すなわち、シェーダ20は、先頭ピクセルがピクセルパイプライン処理の最終段に到達し、「完全フル」信号を出すに至る前に一定の時間余裕をもって、「ほとんどフル」信号を発行する。「ほとんどフル」信号を発行してから「完全フル」信号を発行するまでの時間余裕を「スラックタイム」と呼ぶ。
このスラックタイムは、プリミティブ生成部90において描画プリミティブの生成が開始されてから、その描画プリミティブがDDA処理に投入される直前までのレイテンシに等しくなるように設定される。プリミティブ生成部90が描画プリミティブを生成するのに要する時間、プリミティブ入力部30が描画プリミティブのストリームを生成するのに要する時間、およびセットアップ処理部32が描画プリミティブをセットアップするのに要する時間は、それぞれのハードウエア構成に依存して決まるため、スラックタイムはあらかじめ計算して設定することができる。
ピクセルパイプライン処理の最終段から数えた残余段数をこのスラックタイムに対応して設け、先頭ピクセルがピクセルパイプライン処理の残余段数の処理を通過するのにかかる時間がスラックタイムに等しくなるようにする。ピクセルパイプライン処理のスループットはシェーダ20のハードウエア構成に依存して決まるため、残余段数はあらかじめ設定することができる。
シェーダ20は、先頭ピクセルがピクセルパイプライン処理の最終段よりも残余段数分だけ手前の位置(この位置をクリティカルポイントという)に到達したときに、「ほとんどフル」信号を発行するようにする。シェーダプログラムにおいて、ピクセルパイプライン処理のクリティカルポイントに対応するプログラム位置に制御ポイントを設定し、「ほとんどフル」信号を発行する命令を入れておいてもよい。これにより、シェーダ20は、先頭ピクセルの処理がシェーダプログラムの制御ポイントを通過したときに「ほとんどフル」信号を発行することができる。
このようにスラックタイムを定め、ピクセルパイプライン処理のクリティカルポイントを設定することにより、先頭ピクセルがピクセルパイプライン処理のクリティカルポイントに到達してから、ピクセルパイプライン処理の最終段を通過して出力されるまでの時間と、プリミティブ生成部90により描画プリミティブの生成が開始されてから、その描画プリミティブがDDA処理に投入される直前までの時間とがほぼ一致するようになる。これにより、パス切り替え時でもDDA処理が停止することなく、継続して実行されることが保証される。
プリミティブ生成部90は、シェーダ20から「ほとんどフル」信号を受け取ると、現在処理中の第1パスの描画プリミティブの生成を直ちに中断し、第2パスに移行し、第2パスの描画プリミティブの生成を開始する。このように、「ほとんどフル」信号は、プリミティブ生成部90に対してパス切り替えを指示する信号として作用する。
バッファ制御部33は、シェーダ20から「ほとんどフル」信号を受け取ると、セットアップ処理部32から出力される第1パスの描画プリミティブデータをテンポラリバッファ36経由でDDA34に供給する間接供給動作に切り替える。バッファ制御部33は、シェーダ20からさらに「完全フル」信号を受け取り、第1パスの先頭ピクセルが実際にシェーダ20のパイプライン処理の最終段まで達したことを確認してから、第2パスに切り替え、セットアップ処理部32から出力される第2パスの描画プリミティブデータをDDA34に直接供給する直接供給動作に切り替える。間接供給動作から直接供給動作に切り替える際、テンポラリバッファ36に第1パスの描画プリミティブデータが残留している場合は、それを破棄し、破棄された第1パスの描画プリミティブ数をプリミティブ生成部90に通知する。
DDA34は、DDA処理の中断と再開機能をもち、シェーダ20から「完全フル」信号を受け取ると、直ちに第1パスのDDA処理を中断し、中断した描画プリミティブのピクセル位置を記憶し、第1パスの再開時には記憶した中断位置からDDA処理を開始する。DDA34は、DDA処理の始点と終点にそれぞれ対応する再開位置と中断位置を記憶する必要があり、再開時には、バッファ制御部33から、セットアップ処理部32により設定されたパラメータ係数とともに再開信号を受け取り、前回の中断位置からDDA処理を再開し、中断位置を再開位置にコピーする。
DDA34は、「完全フル」信号を受け取り、第1パスのDDA処理を中断した後、バッファ制御部33から直ちに第2パスの最初の描画プリミティブの供給を受け、第2パスのDDA処理を開始する。このように、「完全フル」信号は、DDA34に対して、第1パスのDDA処理を中断して、第1パスのピクセル投入を停止し、第2パスのDDA処理に切り替える指示を与えるピクセル投入停止信号として作用する。
このように、本実施の形態では、シェーダ20から発行される「ほとんどフル」信号と「完全フル」信号の2つの信号にもとづいてパスの切り替え制御が行われる。「ほとんどフル」信号の発行を契機として、第2パスの描画プリミティブの生成とセットアップ処理が前もって行われ、第1パスの先頭ピクセルがシェーダ20のパイプライン処理の最終段を通過して、フレームバッファ50に出力される「完全フル」のタイミングでは、セットアップ処理部32は第2パスの最初の描画プリミティブのセットアップ処理を完了している。したがって、第1パスから第2パスへの切り替えの際、DDA34は、第1パスの描画プリミティブのラスタライズを中断した後、直ちに第2パスの描画プリミティブのラスタライズを開始することができ、DDA処理はパス切り替えを挟んでも全く停止することない。
また、DDA34から第2パスの最初の描画プリミティブがピクセル化されてシェーダ20に入力されるとき、シェーダ20からは第1パスの処理結果が出力されているから、シェーダ20は、第1パスの処理結果をフィードバックして、第2パスの演算処理に利用することができる。このフィードバックループにより、シェーダ20は、前パスの中間結果を中間バッファなどを介さずに直接的に次のパスの演算処理に活用することができる。シェーダ20自身が前パスの中間結果を保持するバッファとして機能しているとも言うことができる。第1パスの先頭ピクセルがシェーダ20のピクセルパイプライン処理の途中段のクリティカルポイントを通過することを「ほとんどフル」と呼んだり、最終段を通過することを「完全フル」と呼ぶのも、シェーダ20をバッファに見立てているからである。
バッファ制御部33が、第1パスから第2パスへのパス切り替えの際に間接供給動作に切り替えることにより、シェーダ20において第1パスのシェーディング処理に時間がかかり、DDA34にピクセルデータが滞留している場合でも、セットアップ処理部32から出力される第1パスの描画プリミティブをテンポラリバッファ36に一時的に退避することができる。これにより、セットアップ処理部32は、第1パスの描画プリミティブを出力した後、第2パスの描画プリミティブのセットアップを先行して進めることができ、第2パスへの切り替え後に直ちに第2パスの描画プリミティブをDDA34に直接的に供給することができる。したがって、第1パスから第2パスへの切り替えの際、DDA34に対して第1パスの描画プリミティブの供給と第2パスの描画プリミティブの供給が全く途切れることなく行われる。
図3は、バッファ制御部33の詳細な構成を説明する図である。バッファ制御部33は、切替制御部40と、セレクタ42と、第1スイッチ44と、第2スイッチ46とを含む。
切替制御部40は、セットアップ処理部32からDDA34への描画プリミティブの供給ルートを切り替えるために、セレクタ42、第1スイッチ44、第2スイッチ46、およびテンポラリバッファ36に制御信号を与えてそれぞれを制御する。
第1スイッチ44および第2スイッチ46はそれぞれ、切替制御部40からの制御信号によりオンに設定されたときは、入力されたデータを後段に出力し、オフに設定されたときは、入力されたデータを後段に出力しない。第1スイッチ44は、セットアップ処理部32とテンポラリバッファ36の間に設けられ、セットアップ処理部32から出力される描画プリミティブデータの入力を受け、オンに設定されている場合に限り、入力された描画プリミティブデータをテンポラリバッファ36に出力する。第2スイッチ46は、セレクタ42とDDA34の間に設けられ、セレクタ42から出力される描画プリミティブデータの入力を受け、オンに設定されている場合に限り、入力された描画プリミティブデータをDDA34に出力する。
セレクタ42は、切替制御部40からの制御信号にもとづいて、入力を第1入力A側と第2入力B側のいずれかに切り替えて、入力されたデータを後段の第2スイッチ46に出力する。セレクタ42の第1入力Aには、セットアップ処理部32から出力される描画プリミティブデータが入力され、第2入力Bには、テンポラリバッファ36にバッファリングされた描画プリミティブがFIFO順で取り出されて入力される。
切替制御部40は、シェーダ20から「完全フル」信号と「ほとんどフル」信号を受け取る。また、プリミティブ生成部90がパスの切り替えを行い、その結果、セットアップ処理部32に新しいパスの描画プリミティブのストリームが投入され、セットアップ処理部32において新しいパスの最初の描画プリミティブのセットアップが完了したとき、切替制御部40には、セットアップ処理部32から「パスチェンジ」信号が供給される。「パスチェンジ」信号は、第2パスの描画プリミティブをDDA34に投入する準備が整ったことを意味する。
切替制御部40は、「完全フル」、「ほとんどフル」、および「パスチェンジ」の各信号の有無によって、セットアップ処理部32から出力される描画プリミティブの供給モードをDDA34への直接供給モードまたはテンポラリバッファ36経由の間接供給モードのいずれかに決定し、それぞれの供給モードを実現するために、セレクタ42、第1スイッチ44、第2スイッチ46、およびテンポラリバッファ36に制御信号を与える。
切替制御部40は、「完全フル」、「ほとんどフル」、および「パスチェンジ」のいずれの信号も受け取っていない場合、通常の直接供給モードに設定する。直接供給モードの場合、切替制御部40は、第1スイッチ44をオフに設定し、セットアップ処理部32から出力される描画プリミティブデータがテンポラリバッファ36にバッファリングされずに、セレクタ42の第1入力Aに入力されるように制御する。また、切替制御部40は、セレクタ42の入力を第1入力A側に切り替え、第2スイッチ46をオンに設定する。これにより、セットアップ処理部32から出力される描画プリミティブデータがセレクタ42および第2スイッチ46を経由してDDA34に供給される。
切替制御部40は、「ほとんどフル」信号を受け取った場合、間接供給モードに設定する。間接供給モードの場合、切替制御部40は、第1スイッチ44をオンに設定し、セットアップ処理部32から出力される描画プリミティブがテンポラリバッファ36にバッファリングされるように制御する。また、切替制御部40は、セレクタ42の入力を第2入力B側に切り替え、第2スイッチ46をオンに設定する。これにより、テンポラリバッファ36にバッファリングされた描画プリミティブデータがFIFO順で取り出され、セレクタ42および第2スイッチ46を経由してDDA34に供給される。
切替制御部40は、新しいパスに切り替える際、テンポラリバッファ36にバッファリングされた古いパスの描画プリミティブを破棄するために、テンポラリバッファ36にリセット信号を供給する。テンポラリバッファ36は、リセット信号を受け取ると、その時点で保持されている古いパスの描画プリミティブを破棄して、テンポラリバッファ36をクリアする。プリミティブ入力部30は、その古いパスの処理を再開するときに、破棄された描画プリミティブ数分だけ戻って描画プリミティブを生成する必要があるため、テンポラリバッファ36は、破棄される描画プリミティブ数をプリミティブ入力部30に送る。
以上の構成の描画処理装置100による描画処理手順を図4および図5に示すフローチャートと、図6〜図10に示すバッファ制御部33の制御動作を参照しながら説明する。
図4は、マルチパスレンダリングの手順を説明するフローチャートである。第1パスから第nパスまでのn個のパスにシェーディングプログラムを分割して処理を行うとする。第1パスの処理を始めるにあたり、ラスタライザ10の初期設定がなされる(S10)。具体的には、テンポラリバッファ36がクリアされ、DDA34が保持するピクセル化処理の再開位置および中断位置が初期化される。
プリミティブ生成部90により第1パスの描画プリミティブが生成され、プリミティブ入力部30によって第1パスの描画プリミティブのストリームがセットアップ処理部32に投入される(S12)。セットアップ処理部32は、第1パスの描画プリミティブをDDA処理するためのセットアップ処理を行う(S14)。
第1パスの処理において、バッファ制御部33は、シェーダ20から「ほとんどフル」信号を受け取るまでは、通常の直接供給モードで動作しており、セットアップ処理部32から出力される描画プリミティブデータは直接DDA34に供給される。
図6は、バッファ制御部33による直接供給動作を説明する図である。切替制御部40は、「完全フル」、「ほとんどフル」、「パスチェンジ」のいずれの信号も受け取っていない。切替制御部40は、直接供給モードを実現するために、第1スイッチ44をオフに設定し、セレクタ42の入力側を第1入力Aに切り替え、さらに、第2スイッチ46をオンに設定する。これにより、セットアップ処理部32から出力される第1パスの描画プリミティブデータが、テンポラリバッファ36にバッファリングされることなく、セレクタ42と第2スイッチ46を経由してDDA34に直接供給される。
図4を参照し、DDA34は、セットアップ処理部32によりセットアップされた第1パスの描画プリミティブをもとにDDA処理を行い、描画プリミティブをピクセルデータに変換し、シェーダ20に与える(S16)。シェーダ20は、DDA34が生成したピクセルデータをもとに第1パスのシェーディング処理を行う(S18)。
シェーダ20は、第1パスの先頭ピクセルがパイプライン処理のクリティカルポイントに達したとき、「ほとんどフル」信号をプリミティブ生成部90とバッファ制御部33に与える。プリミティブ生成部90は、「ほとんどフル」信号を受け取ると直ちに第1パスを中断し、第2パスに切り替える。バッファ制御部33は、シェーダ20から「ほとんどフル」信号を受け取った場合(S20のY)、後述のパス切り替え処理を行う(S22)。バッファ制御部33は、シェーダ20から「ほとんどフル」信号を受け取っていない場合(S20のN)、ステップS12の描画プリミティブ投入からステップS18のシェーディング処理までの第1パスの処理を継続して行う。
図5は、ステップS22のパス切り替え処理の詳細な手順を説明するフローチャートである。バッファ制御部33は、第1パスから第2パスへの切り替えの際に、第1パスの描画プリミティブが無駄に破棄されずに、かつ、第1パスから第2パスへの切り替え時に間断なく描画プリミティブデータがDDA34に供給されるように、バッファリングを利用して過渡的な制御を行う。
バッファ制御部33は、セットアップ処理部32から「パスチェンジ」信号を受け取ったかどうかを判断する(S50)。プリミティブ生成部90は、シェーダ20から「ほとんどフル」信号を受け取り、第2パスの描画プリミティブの生成を開始するが、セットアップ処理部32に第2パスの描画プリミティブのストリームが投入され、第2パスの最初の描画プリミティブデータがセットアップを完了して出力されるまでには処理時間がかかる。そこで、バッファ制御部33は、セットアップ処理部32から「パスチェンジ」信号を受け取ることにより、第2パスの最初の描画プリミティブのセットアップが完了したことを判断する。
バッファ制御部33は、「パスチェンジ」信号をまだ受け取っていない場合(S50のN)、次に「完全フル」信号を受け取ったかどうかを判断する(S52)。「完全フル」信号をまだ受け取っていない場合(S52のN)、バッファ制御部33は、ステップSA10からSA14までの間接供給動作により第1パスの描画プリミティブデータの供給を行う。
バッファ制御部33は、セットアップ処理部32から出力される第1パスの描画プリミティブデータのDDA34への直接供給を停止し(SA10)、セットアップ処理部32から出力される第1パスの描画プリミティブデータをテンポラリバッファ36にバッファリングする(SA12)。バッファ制御部33は、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータをFIFO順で取り出して、DDA34に入力する(SA14)。
図7は、バッファ制御部33によるステップSA10からSA14までの間接供給動作を説明する図である。切替制御部40は、シェーダ20から「ほとんどフル」信号だけを受け取っており、セットアップ処理部32からはまだ「パスチェンジ」信号を受け取っていない。これは、プリミティブ生成部90が「ほとんどフル」信号を受け取り、第1パスから第2パスに切り替え、第2パスの描画プリミティブの生成を開始したが、セットアップ処理部32では、まだ第1パスの描画プリミティブのセットアップ処理が続いている状態である。
この状態において、切替制御部40は、第1スイッチ44をオンに切り替え、セットアップ処理部32から出力される第1パスの描画プリミティブデータをテンポラリバッファ36にいったんバッファリングする。また、切替制御部40は、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータがFIFO順で取り出され、セレクタ42の第2入力Bに入力されるようにテンポラリバッファ36を制御し、セレクタ42の入力を第2入力B側に切り替える。これにより、図6で示したセットアップ処理部32から出力される第1パスの描画プリミティブデータのDDA34への直接供給が停止され、セットアップ処理部32から出力される第1パスの描画プリミティブデータがテンポラリバッファ36にいったんバッファリングされた後、セレクタ42および第2スイッチ46を経由してDDA34に供給される。
図5を参照し、ステップS50において、バッファ制御部33が「パスチェンジ」信号を受け取り、第2パスの最初の描画プリミティブのセットアップ完了を確認した場合(S50のY)、次に、「完全フル」信号を受け取ったかどうかを判断する(S54)。「完全フル」信号をまだ受け取っていない場合(S54のN)、バッファ制御部33は、「完全フル」信号を受け取るまでの間は、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブをDDA34に供給するステップSB10およびSB12の過渡的動作を行う。
バッファ制御部33は、これまで行っていたセットアップ処理部32から出力される第1パスの描画プリミティブデータをテンポラリバッファ36にバッファリングする動作を停止する(SB10)。一方、バッファ制御部33は、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータをFIFO順で取り出してDDA34に入力する動作は継続する(SB12)。
図8は、バッファ制御部33によるステップSB10およびSB12の過渡的動作を説明する図である。切替制御部40は、「ほとんどフル」信号と「パスチェンジ」信号を受け取っているが、「完全フル」信号はまだ受け取っていない。切替制御部40は、第1スイッチ44をオフに切り替えることにより、図7で示したセットアップ処理部32から出力される描画プリミティブデータのテンポラリバッファ36へのバッファリングを停止する。これは、既にセットアップ処理部32からは第2パスの最初の描画プリミティブデータが出力されようとしているからである。
一方、切替制御部40は、セレクタ42を図7の状態のまま維持し、セレクタ42の第2入力Bに入力されるデータを出力させることにより、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータがFIFO順で取り出され、セレクタ42および第2スイッチ46を経由してDDA34に続けて供給される。これにより、第2パスの描画プリミティブデータはテンポラリバッファ36にはバッファリングされず、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータがDDA34に供給され続けることになる。これは、切替制御部40が「完全フル」信号を受け取るまでの過渡的動作である。
図5を参照し、ステップS54において、バッファ制御部33が「完全フル」信号を受け取った場合(S54のY)、バッファ制御部33は、第1パスの描画プリミティブデータの供給を中止するSC10からSC16までのバッファクリア動作を行う。
バッファ制御部33は、これまで行っていたテンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータのDDA34への供給を停止し(SC10)、その時点でテンポラリバッファ36内に残留している第1パスの描画プリミティブの個数をプリミティブ生成部90へ通知する(SC12)。バッファ制御部33は、テンポラリバッファ36にリセット信号を送ることにより、テンポラリバッファ36をクリアし、第1パスの残留描画プリミティブデータを破棄する(SC14)。バッファ制御部33は、第2パス以降の処理を進めるにあたって、テンポラリバッファ36をディセーブルする(SC16)。バッファ制御部33は、テンポラリバッファ36をディセーブルした後、セレクタ42の入力を第1入力A側に切り替え、通常の直接供給モードに戻す。
図9は、バッファ制御部33によるステップSC10からSC16までのバッファクリア動作を説明する図である。切替制御部40は、「ほとんどフル」信号、「パスチェンジ」信号、および「完全フル」信号を受け取っている。「完全フル」信号を受け取ったことから、シェーダ20において、第1パスの先頭ピクセルのパイプライン処理が完了し、第2パスの演算処理を開始するタイミングになっている。
切替制御部40は、テンポラリバッファ36を制御して、図8で示したテンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータのDDA34への供給を停止する。この時点でテンポラリバッファ36内に残留している第1パスの描画プリミティブがあれば、その残留プリミティブの数は、破棄プリミティブ数としてプリミティブ生成部90に通知され、テンポラリバッファ36は切替制御部40からのリセット命令によってクリアされる。切替制御部40は、セレクタ42の入力を第1入力A側に切り替える。これにより、第1パスの描画プリミティブデータのDDA34への供給は停止し、これ以降は、図6の状態に戻り、セットアップ処理部32から出力される第2パスの描画プリミティブデータがセレクタ42と第2スイッチ46を経由してDDA34へ直接供給されるようになる。
以上述べたように、図6の直接供給動作から図7の間接供給動作に切り替わり、図8の過渡的動作および図9のバッファクリア動作を経て、再び図6の直接供給動作に戻るのが、第1パスから第2パスへのパス切り替え処理の通常の流れである。しかし、プリミティブ入力部30、ラスタライザ10、シェーダ20における処理時間が必ずしも一定でないため、例外的な事象が発生することもある。特にシェーダ20は、テクスチャユニット70と連携するため、テクスチャマッピングにかかる時間により、ピクセルの処理に時間がかかることもあり、処理時間に不確定要素がある。図5および図10を参照して、パス切り替え処理の例外動作を説明する。
図5を参照し、バッファ制御部33が、「パスチェンジ」信号を受け取っていない場合(S50のN)で、かつ、「完全フル」信号を受け取った場合(S52のY)について説明する。これは、シェーダ20において第1パスの先頭ピクセルがピクセルパイプライン処理の最終段を通過し、第2パスの処理を開始するタイミングになっているにもかかわらず、第2パスの最初の描画プリミティブのセットアップが完了していない状態であり、DDA34に第2パスの描画プリミティブデータを投入できず、DDA34が待ち状態で動作を停止するという例外的な状態である。このとき、シェーダ20はピクセルパイプライン処理を止めることになり、パイプライン処理に「バブル」と呼ばれる空き時間が発生する。
この例外状態においては、バッファ制御部33は、ステップSE10およびSE12の例外動作を行う。バッファ制御部33は、セットアップ処理部32から依然として出力される第1パスの描画プリミティブデータをテンポラリバッファ36に退避する(SE10)。バッファ制御部33は、「完全フル」信号を受け取っているため、テンポラリバッファ36にバッファリングされた第1パスの描画プリミティブデータがDDA34にこれ以上供給されないように制御し、DDA34を待ち状態で停止させる(SE12)。
図10は、バッファ制御部33によるステップSE10およびSE12の例外動作を説明する図である。切替制御部40は、「ほとんどフル」信号および「完全フル」信号を受け取っているが、「パスチェンジ」信号は受け取っていない。切替制御部40は、第1スイッチ44をオンに切り替え、セットアップ処理部32からの第1パスの描画プリミティブデータをテンポラリバッファ36にバッファリングする。一方、切替制御部40は、「完全フル」信号を受け取っているため、これ以上、DDA34に第1パスの描画プリミティブデータを供給することはできないから、第2スイッチ46をオフに切り替えて、テンポラリバッファ36からFIFO順で取り出される第1パスの描画プリミティブデータがDDA34に入力されないように制御する。
以上、例外的動作も含めて第1パスから第2パスへのパス切り替え処理を説明した。次に、図4に戻って、ステップS22のパス切り替え処理の後の第2パス以降の処理手順を説明する。
第2パスの描画プリミティブのストリームがセットアップ処理部32に投入され(S24)、セットアップ処理部32において第2パスの描画プリミティブのセットアップ処理が行われる(S26)。なお、ステップS22およびステップS26は、ステップS22のパス切り替え処理の最中から既に進行している。
DDA34は、セットアップ処理部32から供給された第2パスの描画プリミティブが処理すべき最後の描画プリミティブであるかどうかを判定する(S28)。この判定を行うのは、第1パスの処理がある描画プリミティブの途中のピクセル位置で中断したため、第2パスの処理についても同じ描画プリミティブの同一ピクセル位置で終了させる必要があるからである。最後の描画プリミティブである場合は(S28のY)、DDA34は、第1パスで中断したピクセル位置と同一のピクセル位置まで、その描画プリミティブをDDA処理する(S32)。最後の描画プリミティブでない場合は(S28のN)、その描画プリミティブを最後までDDA処理する(S30)。
シェーダ20は、DDA34が生成したピクセルデータをもとに第2パスのシェーディング処理を行う(S34)。すべてのパスについてまだ処理されていないなら(S36のN)、ステップS24に戻り、第3パス以降について、ステップS24からステップS34までの処理を同様に行う。
第2パスにおいては、第2パスの描画プリミティブは、第1パスで確定した描画プリミティブの数しかセットアップ処理部32に投入されないため、第2パスから第3パスへのパス切り替えの際、第2パスの描画プリミティブは破棄されることがない。したがって、第2パスの描画プリミティブの供給と第3パスの描画プリミティブの供給は連続して行うことができ、第2パス以降は、セットアップ処理部32から出力される描画プリミティブのDDA34への供給は、テンポラリバッファ36を用いない直接供給動作でも、テンポラリバッファ36を用いた間接供給動作でもよい。
すべてのパスについて処理が終われば(S36のY)、DDA34は、DDA処理の中断位置を再開位置にコピーすることにより、DDA処理の再開位置を更新する(S38)。マルチパスレンダリングの処理対象の描画プリミティブがまだ残っているなら(S40のN)、ステップS12に戻り、第1パスについての処理、第2パスへの切り替え処理、第2パス以降の処理を同様に繰り返す。マルチパスレンダリングの処理対象のすべての描画プリミティブについて処理が終了すれば(S40のY)、マルチパスレンダリングを終了する。
図11は、マルチパスレンダリングのタイミングチャートを説明する図である。この例では、シェーディング処理が2つのパスに分割して行われる。描画プリミティブ生成、セットアップ処理、バッファ制御、DDA入力、DDA出力の順に第1パスと第2パスのデータの流れを横軸を時間として図示している。
プリミティブ生成部90は、シェーダ20から「ほとんどフル」信号を受け取るまでは第1パスの描画プリミティブの生成を続け、符号101で示した描画プリミティブ数分の描画プリミティブを生成する。生成された描画プリミティブは、プリミティブ入力部30によりストリーム形式に変換されてセットアップ処理部32に投入される。セットアップ処理部32は、符号102で示すように、投入された第1パスの描画プリミティブのセットアップ処理を行う。
セットアップ後の第1パスの描画プリミティブは、符号103に示すようにバッファ制御部33に供給される。シェーダ20から「完全フル」信号を受け取ると、DDA34は、第1パスの描画プリミティブのDDA処理を中止し、バッファ制御部33は、テンポラリバッファ36に残留する第1パスの描画プリミティブを破棄する。バッファ制御部33に供給された第1パスの描画プリミティブの内、符号220で示した部分は、テンポラリバッファ36にバッファリングされたまま処理されずに破棄される描画プリミティブである。符号200で示した部分は、「ほとんどフル」信号の後、テンポラリバッファ36にバッファリングされ、テンポラリバッファ36経由でDDA34に入力される描画プリミティブであり、DDA34においてピクセル化されることにより、そのデータ量は符号202で示すように増えている。
プリミティブ生成部90は、最初に投入した第1パスの描画プリミティブ数から破棄された描画プリミティブ数を引くことにより、破棄されずに処理された第1パスの描画プリミティブ数を確定する。プリミティブ生成部90は、第2パスの描画プリミティブを生成する際は、符号110で示すように、第1パスで確定した描画プリミティブ数だけ描画プリミティブを生成すればよい。すなわち、符号110で示す第2パスの描画プリミティブ数は、符号103で示す第1パスの破棄されなかった描画プリミティブ数に等しい。
第2パスの描画プリミティブはセットアップ処理の後、符号112で示すようにバッファ制御部33に供給される。シェーダ20から「ほとんどフル」信号を受け取った後は、符号210で示す斜線部の描画プリミティブは、テンポラリバッファ36にバッファリングされ、テンポラリバッファ36経由でDDA34に入力される。DDA34においてピクセル化されることにより、符号212で示すようにデータ量が増える。
「ほとんどフル」信号を受け取った後にテンポラリバッファ36にバッファリングされた第2パスの描画プリミティブは、すべてDDA34に供給されるため、破棄される描画プリミティブがなく、一切無駄は発生しない。
プリミティブ生成部90において、シェーダ20から2回目の「ほとんどフル」信号を受け取ると、第2パスまでの処理が終了したことがわかるため、符号120で示すように、第1パスに戻って、描画プリミティブの生成を再開する。ここで、符号222の部分は、1回目の第1パスの処理においてテンポラリバッファ36から破棄された描画プリミティブ数に相当する。これは、破棄された描画プリミティブ分だけ開始位置を戻して、第1パスの処理を再開する必要があるからである。以下、2回目の第1パスのセットアップ処理、バッファ制御、DDA処理は1回目の第2パスと同様である。また、2回目の第2パスについても同様に処理が進む。
DDA入力とDDA出力のタイミングチャートを見ると、第1パスおよび第2パスの描画プリミティブのピクセルデータが隙間なく連続してDDA処理されている様子がわかる。この例では、3回目の第1パスおよび第2パスにおいて、すべての描画プリミティブの処理が完了し、マルチレンダリングを終えている。
以上述べたように、本実施の形態によれば、テンポラリバッファを利用して第1パスから第2パスへの切り替えを行うことで、パス切り替えに伴うオーバーヘッドをなくし、連続的にラスタライズ処理を進めることができ、マルチパスレンダリングの処理性能が向上する。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
上記の説明では、プリミティブ生成部90がラスタライザ10の外部にあり、ラスタライザ10内のプリミティブ入力部30とは別構成であったが、ラスタライザ10内のプリミティブ入力部30にプリミティブ生成部90の機能の全部または一部をもたせてもよい。たとえば、プリミティブ入力部30が描画プリミティブのストリームデータの生成を中断および再開する機能をもち、シェーダ20は、プリミティブ入力部30に「ほとんどフル」信号を与えるようにし、プリミティブ入力部30が「ほとんどフル」信号を受けてパス切り替えを行うようにしてもよい。
実施の形態では、シェーダ20による直前パスの演算処理結果をフィードバックしてすぐ次のパスの演算処理に利用する構成を説明したが、たとえば第1パスの演算処理結果を第3パス以降での演算処理で利用するなど、2つ以上先のパスで中間結果を利用する場合は、フレームバッファ50にフレーム位置に依存しないデータを保持できるバッファ領域を設け、そのバッファ領域に前パスの中間処理結果を格納し、後続のパスがバッファ領域から中間処理結果を読み込んで利用するようにしてもよい。その場合でも、本実施の形態のマルチパスレンダリングでは、パス切り替え時に間断なく次のパスの描画プリミティブのラスタライズ処理が行われるため、2つ以上前のパスの中間結果を利用した演算処理も同様に効率良く行うことができる。
実施の形態に係る描画処理装置の構成図である。 図1のラスタライザにおけるラスタライズ処理の制御機構を説明する図である。 図2のバッファ制御部の詳細な構成を説明する図である。 実施の形態に係るマルチパスレンダリングの手順を説明するフローチャートである。 図4のパス切り替え処理の詳細な手順を説明するフローチャートである。 図3のバッファ制御部による直接供給動作を説明する図である。 図3のバッファ制御部による間接供給動作を説明する図である。 図3のバッファ制御部による過渡的動作を説明する図である。 図3のバッファ制御部によるバッファクリア動作を説明する図である。 図3のバッファ制御部による例外動作を説明する図である。 実施の形態に係るマルチパスレンダリングのタイミングチャートを説明する図である。
符号の説明
10 ラスタライザ、 20 シェーダ、 30 プリミティブ入力部、 32 セットアップ処理部、 33 バッファ制御部、 34 DDA、 36 テンポラリバッファ、 40 切替制御部、 42 セレクタ、 44 第1スイッチ、 46 第2スイッチ、 50 フレームバッファ、 70 テクスチャユニット、 90 プリミティブ生成部、 100 描画処理装置。

Claims (15)

  1. 描画プリミティブに対する描画処理を複数の演算処理に分割して処理するマルチパスレンダリングを行う描画処理装置であって、
    前記描画処理を分割してなる演算処理である各演算パスで処理される描画プリミティブに関するデータを生成するプリミティブ生成部と、
    前記プリミティブ生成部から入力される各演算パスの描画プリミティブに関するデータをラスタライズしてピクセルデータを順次生成するラスタライザと、
    前記ピクセルデータに対して各演算パスの命令をパイプライン処理によって実行するシェーダとを含み、
    前記シェーダは、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達する前に、所定の時間余裕をもってパス切り替え信号を前記プリミティブ生成部に供給し、
    前記プリミティブ生成部は、前記パス切り替え信号の供給を受けたことを契機に、現演算パスの描画プリミティブに関するデータの生成を中断し、次の演算パスの描画プリミティブに関するデータの生成を開始することを特徴とする描画処理装置。
  2. 前記所定の時間余裕は、前記プリミティブ生成部により描画プリミティブの生成が開始されてからその描画プリミティブが前記ラスタライザによるラスタライズ処理に投入されるまでに要する時間に応じて設定されることを特徴とする請求項1に記載の描画処理装置。
  3. 前記ラスタライザは、前記描画プリミティブに関するデータをデジタル微分解析処理によってピクセルデータに変換するデジタル微分解析部を含み、
    前記所定の時間余裕は、前記プリミティブ生成部により描画プリミティブの生成が開始されてからその描画プリミティブが前記デジタル微分解析部によるデジタル微分解析処理に投入される直前までに要する時間に応じて設定されることを特徴とする請求項1に記載の描画処理装置。
  4. 前記所定の時間余裕に応じて前記パイプライン処理の最終段から数えた残余段数を設定し、前記シェーダは、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段よりも前記残余段数分だけ手前の位置に達したとき、前記パス切り替え信号を前記プリミティブ生成部に供給することを特徴とする請求項1から3のいずれかに記載の描画処理装置。
  5. 前記シェーダは、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達したとき、現演算パスのピクセルデータの投入を停止させるためのピクセル投入停止信号を前記ラスタライザに供給し、
    前記ラスタライザは、前記ピクセル投入停止信号の供給を受けたことを契機に、現演算パスで処理対象となっている描画プリミティブに関するデータのラスタライズ処理を中断し、次の演算パスで処理対象となる描画プリミティブに関するデータのラスタライズ処理に切り替えることを特徴とする請求項1から4のいずれかに記載の描画処理装置。
  6. 前記ラスタライザは、前記プリミティブ生成部から入力される描画プリミティブに関するデータを一時的に保持するテンポラリバッファを含み、
    前記シェーダは、前記パス切り替え信号を前記ラスタライザにも供給し、前記ラスタライザは、前記パス切り替え信号の供給を受けてから、前記ピクセル投入停止信号の供給を受けるまでの間、現演算パスの描画プリミティブに関するデータを前記テンポラリバッファにバッファリングしながらラスタライズ処理することを特徴とする請求項5に記載の描画処理装置。
  7. 前記ラスタライザは、前記ピクセル投入停止信号の供給を受けたとき、前記テンポラリバッファに残留する現演算パスの描画プリミティブに関するデータを破棄し、次の演算パスの描画プリミティブに関するデータを前記テンポラリバッファにバッファリングすることなくラスタライズ処理することを特徴とする請求項6に記載の描画処理装置。
  8. 前記ラスタライザは、前記テンポラリバッファから破棄した現演算パスの描画プリミティブ数を前記プリミティブ生成部に通知し、
    前記プリミティブ生成部は、現演算パスの処理を再開する際、前記破棄した描画プリミティブ数分だけ戻って描画プリミティブに関するデータを生成し、前記ラスタライザに入力することを特徴とする請求項7に記載の描画処理装置。
  9. 描画プリミティブに対する描画処理を複数の演算処理に分割して処理するマルチパスレンダリングのために、前記描画処理を分割してなる演算処理である演算パス単位で描画プリミティブに関するデータをラスタライズ処理するラスタライザであって、
    各演算パスの描画プリミティブに関するデータに対してデジタル微分解析に関するパラメータを設定するセットアップ処理部と、
    前記セットアップ処理部から出力される前記描画プリミティブに関するデータを一時的に保持するテンポラリバッファと、
    前記デジタル微分解析に関するパラメータにもとづいて前記描画プリミティブに関するデータをピクセルデータに変換するデジタル微分解析部と、
    前記セットアップ処理部から前記デジタル微分解析部への前記描画プリミティブに関するデータの供給を、前記テンポラリバッファを介した間接的供給と前記テンポラリバッファを介さない直接的供給との間で切り替えるバッファ制御部とを含むことを特徴とするラスタライザ。
  10. 前記バッファ制御部は、当該ラスタライザにより生成されるピクセルデータをパイプライン処理するシェーダから、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達したことにより、現演算パスのピクセルデータの投入を停止させるためのピクセル投入停止信号を受けた場合に、現演算パスで処理対象となっている描画プリミティブに関するデータの前記デジタル微分解析部への供給を中断し、次の演算パスで処理対象となる描画プリミティブに関するデータの前記デジタル微分解析部への供給に切り替えることを特徴とする請求項9に記載のラスタライザ。
  11. 前記バッファ制御部は、当該ラスタライザにより生成されるピクセルデータをパイプライン処理するシェーダから、現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達する前に所定の時間余裕をもってパス切り替え信号を受けた場合に、前記パス切り替え信号を受けてから、前記ピクセル投入停止信号を受けるまでの間、現演算パスの描画プリミティブに関するデータを前記テンポラリバッファにバッファリングしながら前記デジタル微分解析部へ供給することを特徴とする請求項10に記載のラスタライザ。
  12. 前記バッファ制御部は、前記ピクセル投入停止信号の供給を受けたとき、前記テンポラリバッファに残留する現演算パスの描画プリミティブに関するデータを破棄し、次の演算パスの描画プリミティブに関するデータを前記テンポラリバッファにバッファリングすることなく前記デジタル微分解析部に供給することを特徴とする請求項11に記載のラスタライザ。
  13. 描画プリミティブに対する描画処理を複数の演算処理に分割して処理するマルチパスレンダリングによる描画処理方法であって、
    前記描画処理を分割してなる演算処理である各演算パスで処理される描画プリミティブに関するデータを生成するステップと、
    生成された各演算パスの描画プリミティブに関するデータをラスタライズしてピクセルデータを順次生成するステップと、
    前記ピクセルデータに対して各演算パスの命令をパイプライン処理によって実行するステップとを含み、
    現演算パスの最初のピクセルデータが前記パイプライン処理の最終段に到達する前に、所定の時間余裕をもって、現演算パスの描画プリミティブに関するデータの生成を中断し、次の演算パスの描画プリミティブに関するデータの生成を開始するようにパス切り替えを制御することを特徴とする描画処理方法。
  14. 描画プリミティブに対する描画処理を複数の演算処理に分割して処理するマルチパスレンダリングのために、前記描画処理を分割してなる演算処理である演算パス単位で描画プリミティブに関するデータをラスタライズ処理する描画処理方法であって、
    各演算パスの描画プリミティブに関するデータに対してデジタル微分解析に関するパラメータをセットアップするステップと、
    前記デジタル微分解析に関するパラメータにもとづいて前記描画プリミティブをピクセル化するステップとを含み、
    演算パスの切り替えの際、次の演算パスの最初の描画プリミティブに関するデータに対して前記デジタル微分解析に関するパラメータのセットアップが完了するまでは、現演算パスの描画プリミティブに関するデータをバッファリングしながらピクセル化することを特徴とする描画処理方法。
  15. 演算パスの切り替えの際、次の演算パスの最初の描画プリミティブに関するデータに対して前記デジタル微分解析に関するパラメータのセットアップが完了したとき、バッファリングされた現演算パスの描画プリミティブに関するデータを破棄し、次の演算パスの描画プリミティブに関するデータをバッファリングすることなくピクセル化することを特徴とする請求項14に記載の描画処理方法。
JP2004368813A 2004-12-21 2004-12-21 描画処理装置、ラスタライザ、および描画処理方法 Active JP4260734B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004368813A JP4260734B2 (ja) 2004-12-21 2004-12-21 描画処理装置、ラスタライザ、および描画処理方法
US11/302,534 US7616211B2 (en) 2004-12-21 2005-12-13 Rendering processor, rasterizer and rendering method
EP05027808A EP1677257A3 (en) 2004-12-21 2005-12-19 Rendering processor, rasterizer and rendering method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004368813A JP4260734B2 (ja) 2004-12-21 2004-12-21 描画処理装置、ラスタライザ、および描画処理方法

Publications (2)

Publication Number Publication Date
JP2006178571A JP2006178571A (ja) 2006-07-06
JP4260734B2 true JP4260734B2 (ja) 2009-04-30

Family

ID=36384345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004368813A Active JP4260734B2 (ja) 2004-12-21 2004-12-21 描画処理装置、ラスタライザ、および描画処理方法

Country Status (3)

Country Link
US (1) US7616211B2 (ja)
EP (1) EP1677257A3 (ja)
JP (1) JP4260734B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080036758A1 (en) * 2006-03-31 2008-02-14 Intelisum Inc. Systems and methods for determining a global or local position of a point of interest within a scene using a three-dimensional model of the scene
US7804499B1 (en) * 2006-08-28 2010-09-28 Nvidia Corporation Variable performance rasterization with constant effort
KR20130124618A (ko) * 2012-05-07 2013-11-15 삼성전자주식회사 영상 처리 장치 및 방법
JP6341628B2 (ja) * 2012-05-10 2018-06-13 キヤノン株式会社 情報処理装置、情報処理方法、情報処理システム、プログラム
US10147222B2 (en) * 2015-11-25 2018-12-04 Nvidia Corporation Multi-pass rendering in a screen space pipeline
US11508124B2 (en) 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) * 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0575346B1 (en) * 1990-11-30 2001-10-31 Sun Microsystems, Inc. Method and apparatus for rendering graphical images
US5870097A (en) * 1995-08-04 1999-02-09 Microsoft Corporation Method and system for improving shadowing in a graphics rendering system
US6606415B1 (en) 1998-09-16 2003-08-12 Texas Instruments Incorporated Feedback control for hybrid compression
US6377265B1 (en) * 1999-02-12 2002-04-23 Creative Technology, Ltd. Digital differential analyzer
JP2001118082A (ja) 1999-10-15 2001-04-27 Toshiba Corp 描画演算処理装置
EP1495412B1 (en) 2002-03-22 2012-11-28 Alandro Consulting NY LLC Scalable high performance 3d graphics
US6954204B2 (en) * 2002-07-18 2005-10-11 Nvidia Corporation Programmable graphics system and method using flexible, high-precision data formats
US7538770B2 (en) * 2003-11-28 2009-05-26 Canon Kabushiki Kaisha Tree-based compositing system
CN1969299A (zh) * 2004-09-06 2007-05-23 松下电器产业株式会社 图像生成装置及图像生成方法
US7586492B2 (en) * 2004-12-20 2009-09-08 Nvidia Corporation Real-time display post-processing using programmable hardware

Also Published As

Publication number Publication date
US20060139365A1 (en) 2006-06-29
EP1677257A2 (en) 2006-07-05
EP1677257A3 (en) 2009-01-14
JP2006178571A (ja) 2006-07-06
US7616211B2 (en) 2009-11-10

Similar Documents

Publication Publication Date Title
JP6947352B2 (ja) グラフィックス処理システム、グラフィックスプロセッサ及び該システム又はプロセッサを動作させる方法
US7616211B2 (en) Rendering processor, rasterizer and rendering method
JP4372043B2 (ja) コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法
US20090207169A1 (en) Processing device
US8963930B2 (en) Triangle setup and attribute setup integration with programmable execution unit
JP6207618B2 (ja) 描画装置
JP3497499B2 (ja) 三次元グラフィック描画装置
CN110192225B (zh) 无序像素着色器导出
US9123153B2 (en) Scalable multi-primitive system
JP4011082B2 (ja) 情報処理装置、グラフィックプロセッサ、制御用プロセッサおよび情報処理方法
JP4318664B2 (ja) 情報処理装置およびタスク実行方法
TWI474280B (zh) 增進繪圖處理單元之總處理量的方法與系統
US11741653B2 (en) Overlapping visibility and render passes for same frame
US11972518B2 (en) Hybrid binning
US10832465B2 (en) Use of workgroups in pixel shader
US11880924B2 (en) Synchronization free cross pass binning through subpass interleaving
US20240104685A1 (en) Device and method of implementing subpass interleaving of tiled image rendering
US20220319091A1 (en) Post-depth visibility collection with two level binning
JP6614941B2 (ja) 画像処理装置および画像処理方法
JP2010146250A (ja) 曲線分割装置、曲線分割方法、曲線分割プログラム、曲線分割プログラムを記録した記録媒体、曲線分割集積回路
JP2006031160A (ja) グラフィックオブジェクト処理方法
JP2020026107A (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090108

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090203

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090204

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4260734

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140220

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250