説明

グラフィックスプロセッサ、描画処理装置および描画処理方法

【課題】視点から見えないオブジェクトを効率良くカリングするのは難しい。
【解決手段】グラフィックスプロセッサ100は、ラスタライザ20とフラグメントシェーダ40を含む。ラスタライザ20は、描画対象のオブジェクトを構成するプリミティブをラスタライズしてピクセル単位に分解されたフラグメントを生成する。フラグメントシェーダ40は、ラスタライザ20により生成されたフラグメントに対して演算処理を行う。ラスタライザ20のZカリング部26は、プリミティブをラスタライズして得られるピクセルのZ値と、Zバッファに格納された対応するピクセルのZ値とを比較するデプステストにより、当該プリミティブを後段の処理に渡さずにカリングするかどうかを判定し、カリングされたプリミティブの識別情報をオブジェクトを生成するメインプロセッサ200に通知する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明はグラフィックスプロセッサ、描画処理装置および描画処理方法に関する。
【背景技術】
【0002】
3次元コンピュータグラフィックスにおいて3次元オブジェクトを描画する際、他のオブジェクトに隠れて見えない面を消去する隠面消去処理がなされる。代表的な隠面消去処理の一つにZバッファ法がある。Zバッファ法では、画面のピクセル毎に奥行き情報であるZ値を格納したZバッファから各ピクセルのZ値を取り出し、その後処理するピクセルがこのZ値より手前であれば描画し、後方であれば描画処理をキャンセルすることで隠面消去処理を行う。
【0003】
ピクセル処理に入る前のフラグメント生成の段階において、隠れて見えないフラグメントを除外する早期Zカリング(Early Z Culling)や、解像度の異なるZバッファを階層的に積み上げた階層的Zバッファを用いたZカリング(「階層的Zカリング」(Hierarchical Z Culling)と呼ばれる)により、隠面消去処理の効率化が図られる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
オブジェクトの形状が複雑になり、頂点数が増えると、頂点属性を生成するための処理負荷が増大し、頂点シェーダが処理のボトルネックとなる。早期Zカリングは、頂点シェーダで座標変換された後、ラスタライズの段階で実行されるため、頂点シェーダの処理負荷を減らすことにはならない。そこで、グラフィックスプロセッサにオブジェクトのポリゴン情報を投入する前のもっと早い段階で、オブジェクトのカリングを行い、頂点の処理を省略する技術が必要となる。
【0005】
グラフィックスプロセッサにオブジェクトを投入するよりも前の段階で、オブジェクトをカリングする従来の方法として、オクルージョンカリングがある。オクルージョンカリングでは、オブジェクト間の前後関係を判定し、あるオブジェクトが他のオブジェクトの背後に完全に隠れる場合は、そのオブジェクトを描画対象から外す。これには、ラスタライズ処理の前に、あるオブジェクトがスクリーン座標上で他のオブジェクトによって完全に隠蔽されるかどうかを検出する計算処理が必要となり、最近の3次元グラフィックスのように描画対象となるオブジェクトの数が莫大になり、オブジェクト間の前後関係が複雑になってくると、オクルージョンカリングの判定処理は困難になってくる。
【0006】
本発明はこうした課題に鑑みてなされたものであり、その目的は、描画対象にすべきオブジェクトを適切に選び、描画処理を効率良く実行するための描画処理技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様の描画処理装置は、メインプロセッサとグラフィックスプロセッサを含む描画処理装置であって、前記メインプロセッサは、描画対象のオブジェクトを生成して前記グラフィックスプロセッサに供給する機能を有する。前記グラフィックスプロセッサは、前記オブジェクトを構成するプリミティブをピクセル単位に分解したフラグメントを生成するラスタライザと、前記ラスタライザにより生成されたフラグメントに対して演算処理を行うフラグメントシェーダとを含む。前記ラスタライザは、プリミティブをラスタライズして得られるピクセルのZ値と、Zバッファに格納された対応するピクセルのZ値とを比較するデプステストにより、当該プリミティブを後段の処理に渡さずにカリングするかどうかを判定し、カリングされたプリミティブの識別情報を前記メインプロセッサに通知するZカリング部を含む。
【0008】
前記オブジェクトは、複数のパーティクルの集合体における個々のパーティクルであってもよい。
【0009】
本発明の別の態様は、グラフィックスプロセッサである。このグラフィックスプロセッサは、描画対象のオブジェクトを構成するプリミティブをラスタライズしてピクセル単位に分解されたフラグメントを生成するラスタライザと、前記ラスタライザにより生成されたフラグメントに対して演算処理を行うフラグメントシェーダとを含む。前記ラスタライザは、プリミティブをラスタライズして得られるピクセルのZ値と、Zバッファに格納された対応するピクセルのZ値とを比較するデプステストにより、当該プリミティブを後段の処理に渡さずにカリングするかどうかを判定し、カリングされたプリミティブの識別情報を前記オブジェクトを生成するプロセッサに通知するZカリング部を含む。
【0010】
本発明のさらに別の態様は、描画処理方法である。この方法は、グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得し、現フレームにおいてZカリングすべきと判定されたプリミティブから構成されるオブジェクトは、次のフレームの描画の際、前記グラフィックスプロセッサに供給しないように制御する。
【0011】
本発明のさらに別の態様もまた、描画処理方法である。この方法は、グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得し、現フレームにおいてZカリングすべきプリミティブから構成されるオブジェクトについては、動き計算を簡略化する。
【0012】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0013】
本発明によれば、オブジェクトの描画処理の効率化を図ることができる。
【発明を実施するための最良の形態】
【0014】
本発明の実施の形態の描画処理技術の概要を説明する。オブジェクトを描画処理に投入する前の早い段階でオクルージョンカリングするために、グラフィックスプロセッサでZカリングテストに不合格であったプリミティブ、すなわち現フレームでは他のオブジェクトに隠れて見えないと判定されてカリングされたプリミティブの情報を取得する。現フレームにおいてZカリングされたプリミティブのみからなるオブジェクトは次のフレームでも他のオブジェクトに隠れて見えない可能性が高いため、描画処理に投入しないように制御する。現フレームにおいてZカリングされたプリミティブのみからなるオブジェクトであって、次のフレームの描画処理に投入されないオブジェクトを「非描画オブジェクト」という。
【0015】
一つ前のフレームの描画の際のZカリングの情報であっても、その情報を信頼してその後のフレームでも非描画オブジェクトはカリングされるものと仮定して、最初から描画処理に投入しないことで描画処理の負荷を軽減することができる。厳密には次のフレームで非描画オブジェクトが他のオブジェクトの背後から現れて見えるようになることもありうるが、1フレーム分の遅れが問題にならない場合はこれでも十分である。
【0016】
非描画オブジェクトは、次のフレームでは表示されないが、静止しているわけではないので、オブジェクトの位置を動かす計算は必要である。オブジェクトの動きが複雑である場合、多数のオブジェクトの動きをリアルタイムで計算することは処理負荷が高い。そこで、非描画オブジェクトの動き計算は適宜簡略化して近似的な位置を求めるようにする。
【0017】
他のオブジェクトによって見えないオブジェクトについては、その動きを簡略化計算により求めておき、そのオブジェクトが見えるようになった時点で厳密な動き計算に切り替える。これにより、厳密な動きをシミュレーションしているわけではないが、見た目はあたかも動き計算を実行しているかのような視覚効果を得ることができる。このような簡略化計算の技術は、ゲームなど正確な動きシミュレーションは必要ではないが、多数のオブジェクトをリアルタイムで計算して、表示させるアプリケーションには有効である。
【0018】
図1は、実施の形態に係る描画処理装置の構成図である。描画処理装置は、描画対象となるオブジェクトの3次元モデル情報にもとづいて2次元画面に表示するための描画データを生成するレンダリング処理を行う。
【0019】
メインプロセッサ200は、メインメモリ300からオブジェクトのポリゴンモデル情報を読み出し、オブジェクトの動きをシミュレーションしてオブジェクトの位置を更新し、グラフィックスプロセッサ100にオブジェクトのポリゴン情報を与える。
【0020】
グラフィックスプロセッサ100は、ホストインタフェース(I/F)70を介してメインプロセッサ200からオブジェクトのポリゴン情報を取得し、頂点シェーダ10に入力する。
【0021】
頂点シェーダ10は、メインプロセッサ200から受け取ったオブジェクトのポリゴン情報をもとに、オブジェクトを構成する1つ以上のプリミティブの頂点座標とパラメータを含むストリームを生成する。プリミティブは、3次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位である。
【0022】
ラスタライザ20は、セットアップ部22、コースラスタ部24、Zカリング部26、およびファインラスタ部28を含む。
【0023】
セットアップ部22は、プリミティブのストリームをデジタル微分解析器(Digital Differential Analyzer;DDA)により処理するための各種パラメータのセットアップを行う。具体的には、プリミティブを含む空間を区切るバウンディングボックスの設定や、エッジ係数などDDA処理の各種パラメータの設定を行う。
【0024】
プリミティブは一例として三角形の形状であり、DDAは、3次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、ラスタライン毎に量子化されたピクセルに変換する。DDAにより、プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ値、奥行きを示すZ値、テクスチャ属性を参照するためのパラメータ座標であるUV座標値などを含むピクセル情報が算出される。
【0025】
コースラスタ部24は、セットアップ部22による設定にもとづいて、頂点シェーダ10から取得されたプリミティブの頂点データをDDA処理し、プリミティブをタイルに変換する。ここで、タイルは、ピクセルの矩形集合であり、たとえば、縦横8ピクセルの合計64ピクセルの集合である。コースラスタ部24により、プリミティブはタイルという粗い単位でラスタライズされる。
【0026】
一般に、プリミティブの表面積が大きいほど、そのプリミティブをピクセル化した場合のピクセル数が増える。また、プリミティブが視点から近い位置にあって、プリミティブを高い詳細度レベルで描画する必要がある場合は、プリミティブから生成されるピクセル数は増える。頂点シェーダ10においては、頂点データでプリミティブが表されているため、データ量は少ないが、DDAによりピクセル化処理した後は、ピクセル数が増大し、データ量が増える。
【0027】
そこで、コースラスタ部24によりいったん粗い単位でラスタライズしておき、後段のZカリング部26において、すでに処理済みのピクセルの奥行き方向の位置を示すZ値(デプス(depth)値とも呼ばれる)と比較して、タイルのカリングを行い、カリングされたタイルは後段のファインラスタ部28には渡さないようにする。これにより、既に描画されたプリミティブの背後にあるため、視点から見えないタイルについてはファインラスタ部28による細かい単位でのラスタライズ処理や、フラグメントシェーダ40による描画処理を省略し、処理効率を高めることができる。
【0028】
ファインラスタ部28は、コースラスタ部24によってラスタライズされたタイルの内、Zカリング部26によりZカリングされなかったタイル、言い換えればZカリングテストを合格したタイルを取得し、ピクセルに変換する。ファインラスタ部28により、プリミティブは最小のピクセル単位で細かくラスタライズされる。ファインラスタ部28は、こうしてプリミティブをラスタライズして得られるピクセルをフラグメントシェーダ40に与える。
【0029】
フラグメントシェーダ40は、プリミティブをピクセル単位に分割して得られるフラグメントに対して描画処理を行う。フラグメントシェーダ40は、ラスタライザ20により算出されたピクセル情報をもとに、シェーディング処理を行ってピクセルのカラー値とデプス値を算出する。さらに、テクスチャマッピングを行う場合は、テクスチャのカラー値を合成して最終的なピクセルのカラー値を算出する。
【0030】
ラスタ演算ブロック50は、フラグメントに対してブレンディング、アルファテスト、デプステストを実行し、最終的なピクセルのカラー値を求め、レンダリングの結果をローカルメモリ60に設けられたカラーバッファ64にピクセルデータを書き込む。また、ラスタ演算ブロック50は、各ピクセルのZ値をデプスバッファ62に格納するとともに、Zカリング部26に各ピクセルのZ値を供給する。
【0031】
カラーバッファ64は、ピクセルデータをスクリーン座標に対応づけて格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。カラーバッファ64に記憶されたピクセルデータは、表示装置に出力されて表示される。
【0032】
図2は、Zカリング部26の構成図である。Zカリング部26は、カリング判定部30、Zカリングメモリ32、プリミティブカリングロジック34、およびプリミティブカリングメモリ36を含む。
【0033】
カリング判定部30は、コースラスタ部24からプリミティブをラスタライズして得られたタイルを取得し、タイル単位でZカリング判定を行う。Zカリングメモリ32には、ラスタ演算ブロック50がデプスバッファ62に書き込む描画処理後のピクセルのZ値がフィードバックされ、既に格納されたZ値が更新される。Zカリングメモリ32は、タイル単位でZ値を格納した縮小Zバッファであり、各タイルの代表Z値が格納される。タイルの代表Z値は、タイル内のピクセルの最大のZ値(最も遠くにあるピクセルのZ値)である。ここで、Z値は視点位置は0であり、視点から遠くなるほど大きくなる。
【0034】
タイルの代表Z値Zfarは、デプスバッファ62に保持された描画処理後のピクセルのZ値をタイル単位で見た場合にタイル内で最も遠くにあるピクセルのZ値である。カリング判定部30は、ラスタライズされたタイルの各ピクセルのZ値の内、最小のZ値Zmin(すなわち、タイル内で最も手前にあるZ値)が、Zカリングメモリ32に保持されたタイルの代表Z値Zfarよりも大きい場合、そのタイルは既に描画されたプリミティブの背後にあって表示されないから、カリングする。
【0035】
カリング判定部30は、このZカリング判定に合格した(Zカリングされない)タイルをファインラスタ部28に渡し、Zカリング判定に不合格であった(Zカリングされた)タイルはファインラスタ部28に渡さない。
【0036】
プリミティブカリングロジック34は、プリミティブを構成する1つ以上のタイルがすべてZカリングされたかどうかを判定する論理回路を備え、すべてのタイルがZカリングされた場合は、プリミティブカリングメモリ36に1を、そうでない場合は0を書き込む。プリミティブを構成するすべてのタイルがZカリングされたプリミティブを「Zカリングされたプリミティブ」と呼ぶ。Zカリングされたプリミティブは、現フレームにおいて、他のオブジェクトの背後にあって表示されないプリミティブである。
【0037】
プリミティブカリングメモリ36は、プリミティブの識別情報に対応づけてそのプリミティブがZカリングされたものであるかどうかを示す1ビットの情報(Zカリングされた場合は1、そうでない場合は0)を記憶する。Zカリング部26は、プリミティブカリングメモリ36を参照して、Zカリングされたプリミティブ(ビットが1であるプリミティブ)の識別情報をホストI/F70を介してメインプロセッサ200に通知する。
【0038】
図3は、メインプロセッサ200の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【0039】
メインプロセッサ200には、オブジェクトカリングロジック210、物理シミュレーション部220、オブジェクト供給部240の各機能が実現される。オブジェクトカリングロジック210は、Zカリングされたプリミティブの識別情報を取得して、オブジェクトを構成するすべてのプリミティブが現フレームでZカリングされたものであるかどうかを判定する論理回路である。
【0040】
オブジェクトを構成するすべてのプリミティブが現フレームでZカリングされたものである場合、そのオブジェクトを「非描画オブジェクト」という。非描画オブジェクトは、現フレームにおいて、他のオブジェクトの背後にあって表示されないオブジェクトであるが、そのオブジェクトは、次のフレームでも同様に他のオブジェクトの背後にあって表示されない可能性が高い。オブジェクトカリングロジック210は非描画オブジェクトの識別情報を物理シミュレーション部220に与える。
【0041】
物理シミュレーション部220は、メインメモリ300からオブジェクトのポリゴン情報を取得し、運動方程式などの計算モデルにしたがってオブジェクトを動作させ、オブジェクトの位置を更新する。
【0042】
物理シミュレーション部220は、簡略計算部230と通常計算部232を含む。オブジェクトカリングロジック210により非描画オブジェクトであると判定されたオブジェクトは簡略計算部230によって動きが計算され、それ以外のオブジェクトは通常計算部232によって動きが計算される。
【0043】
通常計算部232は、運動方程式などの計算モデルにしたがってオブジェクトの加速度および/または速度を計算し、得られた加速度および/または速度をもとに、次のフレームにおけるオブジェクトの位置を求め、オブジェクトの新しい位置をメインメモリ300に書き込む。
【0044】
簡略計算部230は、通常計算部232の行う計算を簡略化して、次のフレームにおけるオブジェクトの近似位置を求める。具体的には、通常計算部232の計算モデルが等加速度運動である場合、簡略計算部230は計算モデルを等速運動で代用して計算を簡略化する。
【0045】
非描画オブジェクトについては、簡略計算部230によって簡略化された計算モデルにしたがって、オブジェクトの位置が近似的に算出され、更新されるが、表示はされない。将来、そのオブジェクトが表示されるようになったとき、オブジェクトは近似的に更新された位置から表示が開始される。
【0046】
オブジェクト供給部240は、通常計算部232により位置が更新されたオブジェクトをホストI/F70を介してグラフィックスプロセッサ100に描画処理のために投入する。オブジェクト供給部240は、簡略計算部230によって近似位置が算出された非描画オブジェクトについては、グラフィックスプロセッサ100に投入しない。
【0047】
図4は、上記の構成のメインプロセッサ200による処理手順を示すフローチャートである。オブジェクトカリングロジック210は、グラフィックスプロセッサ100のZカリング部26から、現フレームにおいてZカリングされたプリミティブの識別情報を取得する(S10)。
【0048】
オブジェクトカリングロジック210は、オブジェクトを構成するすべてのプリミティブが現フレームでZカリングされたものであるかどうかを判定し(S12)、オブジェクトを構成する1以上のプリミティブの内、Zカリングされてないものが一つでもあれば(S12のN)、通常計算部232が、オブジェクトの動きを通常通り、正確に計算し、次のフレームにおけるオブジェクトの位置を更新する(S14)。そして、オブジェクト供給部240は、位置が更新されたオブジェクトを次のフレームの描画のためにグラフィックスプロセッサ100に投入する(S16)。ステップS16の後、処理手順はステップS20に進む。
【0049】
ステップS12において、オブジェクトを構成するプリミティブがすべてZカリングされていた場合(S12のY)、簡略計算部230が、オブジェクトの動きの計算を簡略化し、次のフレームにおけるオブジェクトの近似位置を求める(S18)。こうして簡略化計算により位置が更新されたオブジェクトはグラフィックスプロセッサ100に投入されることはない。ステップS18の後、処理手順はステップS20に進む。
【0050】
ステップS20において、現フレームが最終フレームである場合(S20のY)、処理手順を終了し、まだ最終フレームではない場合(S20のN)、ステップS10に戻り、次のフレームについて処理を続ける。
【0051】
図5および図6を参照して、本実施の形態の描画処理装置による描画処理の一例を説明する。
【0052】
図5は、オブジェクト430、雨粒400a、400b、410、および雲420の描画処理例を示す。雲420の一部はオブジェクト430の背後に隠れており、中央の雨粒410も背後に隠れている。
【0053】
雨粒400a、400b、410は、スプライトと呼ばれる2次元矩形のプリミティブであり、スプライトに雨粒のテクスチャがマッピングすることで描画される。炎や雪、雨のような微小な粒子(パーティクル)の集合体(粒子系)は、1つのパーティクルに1つスプライトを割り当て、スプライト毎に細かい動きを求め、スプライトにテクスチャを貼り付けることで描画される。スプライトは通常、1つのプリミティブである。粒子系については非常に多くのパーティクルを描画することになるが、個々のパーティクルの細かい動きはユーザに注目されることがないから、全体として、おおよそ正しい動きになっていれば十分である。
【0054】
雲420は、複数のパーティクルの集合により表現されるオブジェクトである。同図のように雲420は、パーティクル422a〜422dと、オブジェクト430の背後に隠れるパーティクル424a、424bとを含み、パーティクルの集合体で表現される。各パーティクルにはテクスチャがマッピングされる。
【0055】
一般的な粒子系の動きは、流体力学などの運動方程式を解いて、各パーティクルの位置を更新することで決定される。
(1)まず、時刻t=0におけるパーティクルの初期位置p(0)、初期速度v(0)を定める。
(2)次に、所定の計算モデルf(F,v,t,…)に従って、現フレーム(時刻t)の加速度a(t)を求める。
a(t)=f(F,v,t,…)
(3)現フレーム(時刻t)における加速度a(t)を用いて、次のフレーム(時刻t+dt)における速度v(t+dt)を求める。
v(t+dt)=v(t)+a(t)*dt
(4)現フレーム(時刻t)における速度v(t)を用いて、次のフレーム(時刻t+dt)におけるパーティクルの位置p(t+dt)を求める。
p(t+dt)=p(t)+v(t)*dt
(5)(2)に戻って繰り返す。
【0056】
上記の計算手順にでは(2)の計算モデルにしたがって加速度の計算処理が最も重たい。複雑な運動モデルにするほど、粒子系の動きの正確さが増すが、運動モデルにしたがった加速度や速度の計算量が増える。
【0057】
雨粒400a、400b、410や、雲420を構成する各パーティクルは、他のオブジェクトに隠れることなく視点から見えている間は、通常計算部232によって流体力学などの運動方程式を正確にシミュレーションして動きを求める。オブジェクト430の背後に隠れる雨粒410や雲420の一部のパーティクル424a、424bについては、表示されない間は正確な動きをシミュレーションする必要はなくなるが、オブジェクト430の背後から現れたときには表示を開始する必要がある。そこで、オブジェクト430の背後に隠れ始めたパーティクルについては、簡略計算部230が近似的に動きを求める。たとえば、流体力学の方程式を解く代わりに、等速度直線運動にしたがって位置を更新するだけにする。
【0058】
簡略化計算の方法としては、加速度や速度を前のフレームにおける加速度や速度の値をそのまま使ってもよい。また、重力の影響を受けるオブジェクトであれば、重力に影響される部分だけを更新してもよい。加速度や速度に定数を使うことで計算を簡略化してもよい。
【0059】
現フレームでZカリングされたパーティクル(図5の例では、パーティクル410、424a、424b)は、次のフレームでも表示されない可能性が高く、また、仮に本当は表示される場合でも、パーティクルの集合体である粒子系においてはいくつかのパーティクルが表示されなくても全く問題にはならない。現フレームでZカリングされたパーティクルは次のフレームで描画処理に投入されないように制御することで、頂点シェーダ10の頂点属性の生成処理や、フラグメントシェーダ40による描画処理の負荷を軽減することができる。
【0060】
グラフィックスプロセッサ100のZカリング部26によるZカリング判定はプリミティブ単位であるから、多くのプリミティブからなるオブジェクトのカリングには有効に働かないこともある。しかし、図5の例のように、1つのオブジェクトが1つのプリミティブ(1つのスプライト)で構成される場合は、プリミティブのカリング判定がそのままオブジェクトのカリング判定に使えるため、Zカリング判定の情報をメインプロセッサ200にフィードバックすれば、オブジェクトを早期に効率良くカリングすることができる。
【0061】
また、Zカリング判定は一つ前のフレームにおける状況であるため、Zカリング判定の情報を用いてオブジェクトをオクルージョンカリングすると、時間的にずれが生じるので厳密さを欠く。しかしながら、多数のパーティクルからなる粒子系では、個々のパーティクルの動きは問題にならず、全体的な動きが正しければよいため、1フレーム分のずれは問題にならない。
【0062】
さらに、オクルージョンカリングされたパーティクルについては、描画処理を行わないものの、簡略化計算により位置を更新するため、再び表示されるようになったとき、動きがおかしくならず、連続性がある程度保証される。
【0063】
図6は、オブジェクト430および自動車440a〜440cの描画処理例を示す。自動車440a〜440cは、オブジェクト430の背後にある道を走行する。オブジェクト430の背後にはないときは、自動車440a、440cは、通常計算部232により等加速度運動モデルにしたがって位置が更新されるが、オブジェクト430の背後に隠れて見えなくなると、自動車440bは、簡略計算部230により等速度運動で代用され、位置が更新される。
【0064】
自動車440a〜440cは、複数のプリミティブで構成されているオブジェクトであるため、すべてのプリミティブが現フレームでZカリングされる場合に、非描画オブジェクトと判定され、次のフレームの描画処理には投入されない。
【0065】
以上述べたように、本実施の形態によれば、グラフィックスプロセッサにおける早期Zカリングの情報を、オブジェクトを生成するメインプロセッサにフィードバックさせ、他のオブジェクトの背後に隠れるオブジェクトをグラフィックスプロセッサに投入する前にカリングすることができる。オブジェクトがパーティクルのような一つのプリミティブで表現される場合、一つ前のフレームにおけるカリング情報でオブジェクトをオクルージョンカリングしても描画品質には大きな影響を与えないというメリットがある。
【0066】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0067】
上記の実施の形態では、現フレームでZカリング判定されたプリミティブから構成されるオブジェクトについては、動き計算を簡略化して近似位置を求めた上で、そのオブジェクトは次のフレームの描画の際、グラフィックスプロセッサに投入しないようにした。変形例として、現フレームでZカリング判定されたプリミティブから構成されるオブジェクトは、動きを簡略化計算した上で、次のフレームの描画の際、グラフィックスプロセッサに投入してもよい。次のフレームでそのオブジェクトが視点から見えるようになることもありうるため、グラフィックスプロセッサの処理性能が十分に高い場合はそれでもかまわない。簡略化計算の技術は、メインプロセッサの処理性能に限界がある場合に有効である。
【0068】
また、現フレームでZカリング判定されたプリミティブから構成されるオブジェクトについては、動き計算を簡略化せずに、通常の計算を行って正確な位置を求める一方で、次のフレームの描画の際、当該オブジェクトをグラフィックスプロセッサに投入しないように制御してもよい。たとえば、メインプロセッサがマルチプロセッサシステムなどで構成され、高い処理性能をもつ場合、計算を簡略化しなくてもよいからである。オブジェクトをグラフィックスプロセッサに投入する前に早期にカリングする技術は、グラフィックスプロセッサの処理性能に限界がある場合に有効である。
【図面の簡単な説明】
【0069】
【図1】実施の形態に係る描画処理装置の構成図である。
【図2】図1のZカリング部の構成図である。
【図3】図1のメインプロセッサの機能構成図である。
【図4】図3の構成のメインプロセッサによる処理手順を示すフローチャートである。
【図5】図1の描画処理装置による描画処理の一例を説明する図である。
【図6】図1の描画処理装置による描画処理の別の例を説明する図である。
【符号の説明】
【0070】
10 頂点シェーダ、 20 ラスタライザ、 22 セットアップ部、 24 コースラスタ部、 26 Zカリング部、 28 ファインラスタ部、 30 カリング判定部、 32 Zカリングメモリ、 34 プリミティブカリングロジック、 36 プリミティブカリングメモリ、 40 フラグメントシェーダ、 50 ラスタ演算ブロック、 60 ローカルメモリ、 62 デプスバッファ、 64 カラーバッファ、 70 ホストI/F、 100 グラフィックスプロセッサ、 200 メインプロセッサ、 210 オブジェクトカリングロジック、 220 物理シミュレーション部、 230 簡略計算部、 232 通常計算部、 240 オブジェクト供給部、 300 メインメモリ。

【特許請求の範囲】
【請求項1】
メインプロセッサとグラフィックスプロセッサを含む描画処理装置であって、
前記メインプロセッサは、描画対象のオブジェクトを生成して前記グラフィックスプロセッサに供給する機能を有し、
前記グラフィックスプロセッサは、
前記オブジェクトを構成するプリミティブをピクセル単位に分解したフラグメントを生成するラスタライザと、
前記ラスタライザにより生成されたフラグメントに対して演算処理を行うフラグメントシェーダとを含み、
前記ラスタライザは、
プリミティブをラスタライズして得られるピクセルのZ値と、Zバッファに格納された対応するピクセルのZ値とを比較するデプステストにより、当該プリミティブを後段の処理に渡さずにカリングするかどうかを判定し、カリングされたプリミティブの識別情報を前記メインプロセッサに通知するZカリング部を含むことを特徴とする描画処理装置。
【請求項2】
前記メインプロセッサは、
前記Zカリング部から現フレームにおいてカリングされたプリミティブの識別情報を取得し、現フレームにおいてカリングされたプリミティブから構成されるオブジェクトは、次のフレームの描画の際、前記グラフィックスプロセッサに供給しないように制御する機能を有することを特徴とする請求項1に記載の描画処理装置。
【請求項3】
前記メインプロセッサは、
前記Zカリング部から現フレームにおいてカリングされたプリミティブの識別情報を取得し、現フレームにおいてカリングされたプリミティブから構成されるオブジェクトについては、動き計算を簡略化する機能を有することを特徴とする請求項1に記載の描画処理装置。
【請求項4】
前記オブジェクトは、複数のパーティクルの集合体における個々のパーティクルであることを特徴とする請求項1から3のいずれかに記載の描画処理装置。
【請求項5】
描画対象のオブジェクトを構成するプリミティブをラスタライズしてピクセル単位に分解されたフラグメントを生成するラスタライザと、
前記ラスタライザにより生成されたフラグメントに対して演算処理を行うフラグメントシェーダとを含み、
前記ラスタライザは、
プリミティブをラスタライズして得られるピクセルのZ値と、Zバッファに格納された対応するピクセルのZ値とを比較するデプステストにより、当該プリミティブを後段の処理に渡さずにカリングするかどうかを判定し、カリングされたプリミティブの識別情報を前記オブジェクトを生成するプロセッサに通知するZカリング部を含むことを特徴とするグラフィックスプロセッサ。
【請求項6】
グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得するステップと、
現フレームにおいてZカリングすべきと判定されたプリミティブから構成されるオブジェクトは、次のフレームの描画の際、前記グラフィックスプロセッサに供給しないように制御するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項7】
グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得するステップと、
現フレームにおいてZカリングすべきプリミティブから構成されるオブジェクトについては、次のフレームにおける位置を決定する計算を簡略化するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項8】
グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得し、現フレームにおいてZカリングすべきと判定されたプリミティブから構成されるオブジェクトは、次のフレームの描画の際、前記グラフィックスプロセッサに供給しないように制御することを特徴とする描画処理方法。
【請求項9】
グラフィックスプロセッサから現フレームにおいてZカリングすべきと判定されたプリミティブの識別情報を取得し、現フレームにおいてZカリングすべきプリミティブから構成されるオブジェクトについては、動き計算を簡略化することを特徴とする描画処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2008−282170(P2008−282170A)
【公開日】平成20年11月20日(2008.11.20)
【国際特許分類】
【出願番号】特願2007−124945(P2007−124945)
【出願日】平成19年5月9日(2007.5.9)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】