JP2007310797A - オクルージョンカリング方法および描画処理装置 - Google Patents

オクルージョンカリング方法および描画処理装置 Download PDF

Info

Publication number
JP2007310797A
JP2007310797A JP2006141472A JP2006141472A JP2007310797A JP 2007310797 A JP2007310797 A JP 2007310797A JP 2006141472 A JP2006141472 A JP 2006141472A JP 2006141472 A JP2006141472 A JP 2006141472A JP 2007310797 A JP2007310797 A JP 2007310797A
Authority
JP
Japan
Prior art keywords
value
pixel
buffer
pixel block
viewpoint
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.)
Granted
Application number
JP2006141472A
Other languages
English (en)
Other versions
JP4116648B2 (ja
Inventor
Junichi Naoi
純一 直井
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 JP2006141472A priority Critical patent/JP4116648B2/ja
Priority to US11/741,981 priority patent/US7948487B2/en
Publication of JP2007310797A publication Critical patent/JP2007310797A/ja
Application granted granted Critical
Publication of JP4116648B2 publication Critical patent/JP4116648B2/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/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer

Landscapes

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

Abstract

【課題】複数のオブジェクトの奥行き方向の位置関係を把握して、隠面消去処理を行うには計算コストがかかる。
【解決手段】複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングを行う描画処理装置を提供する。オブジェクト入力部142は、複数のオブジェクトをオブジェクト記憶部152に記憶する。内包ボリューム生成部148は、オブジェクトに包含される内包ボリュームを生成する。縮小Zバッファ更新部150は、内包ボリュームにもとづいて、縮小Zバッファを更新する。外包ボリューム生成部144は、カリング判定対象のオブジェクトを包含する外包ボリュームを生成する。カリング判定部146は、縮小Zバッファを参照し、外包ボリュームにもとづいてオブジェクトに対してZカリング判定を行う。
【選択図】図16

Description

この発明は、コンピュータグラフィックスにおけるオクルージョンカリング技術および描画処理技術に関する。
3次元コンピュータグラフィックスにおいて3次元オブジェクトを描画する際、他のオブジェクトに隠れて見えない面を消去する隠面消去処理がなされる。代表的な隠面消去処理の一つにZバッファ法がある。Zバッファ法では、画面のピクセル毎に奥行き情報であるZ値を格納したZバッファから各ピクセルのZ値を取り出し、その後処理するピクセルがこのZ値より手前であれば描画し、後方であれば描画処理をキャンセルすることで隠面消去処理を行う。
Zバッファ法ではピクセルのカラー値を格納するフレームバッファと同じメモリ容量が必要となる。また、フレームバッファの場合、隠面消去されるピクセルに対してはピクセル値を書き込む必要がないため、フレームバッファがアクセスされることがないが、Zバッファの場合は、結果的に隠面消去されることになるピクセルに対しても、ZバッファのZ値が参照されZ判定がなされるため、処理コストが高い。
このように、Zバッファ法は必要なメモリ容量が大きくなり、処理コストも高いことから、最近では、できるだけ隠面消去処理にかかるコストを下げる工夫がなされている。たとえば、他のオブジェクトに隠れて見えないオブジェクトをあらかじめ選んで描画対象から外すオクルージョンカリングが行われる。オクルージョンカリングでは、ラスタライズ処理される前に、オブジェクトもしくはポリゴンの単位で早期に描画対象を選別し、リダクションすることができる。
また、ピクセル処理に入る前のフラグメント生成の段階において、隠れて見えないフラグメントを除外する早期Zカリング(Early Z Culling)や、解像度の異なるZバッファを階層的に積み上げた階層的Zバッファを用いたZカリング(「階層的Zカリング」(Hierarchical Z Culling)と呼ばれる)により、隠面消去処理の効率化が図られる。
オクルージョンカリングの一つの方法は、オブジェクトの周囲にそのオブジェクトを内包するようなバウンディングボリュームを形成し、このバウンディングボリュームが他のオブジェクトのバウンディングボリュームにより完全に隠れる場合は、そのオブジェクトを描画対象から外すことである。これには、ラスタライズ処理の前に、あるバウンディングボリュームがスクリーン座標上で他のバウンディングボリュームにより完全に隠蔽されるかどうかを検出する計算処理が必要となり、最近の3次元グラフィックスのように描画対象となるオブジェクトの数が莫大になり、オブジェクト間の前後関係が複雑になってくると、オクルージョンカリング処理は困難になってくる。
また、階層的Zバッファを用いてZカリングする場合でも、階層的Zバッファを生成するためにはピクセル単位のZバッファを求めて、それを段階的に解像度を下げていくことで各解像度のZバッファを生成する処理が必要となり、計算コストがかかる。
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数の3次元オブジェクトの奥行き方向の位置関係を考慮して描画処理する際の処理効率を高めることのできる描画処理技術を提供することにある。
上記課題を解決するために、本発明のある態様のオクルージョンカリング方法は、複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、前記複数のオブジェクトの奥行き方向の位置関係を判定するために、画素単位で視点からの奥行きを示すZ値を格納したZバッファを設け、描画される可能性があるか否かを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリュームとを設け、前記内包ボリュームが描画される画素のZ値を前記Zバッファに格納された対応する画素のZ値と比較し、前記内包ボリュームの描画画素のZ値が前記Zバッファの対応画素のZ値よりも視点に近いことを示す場合に、前記Zバッファの対応画素のZ値を前記内包ボリュームの描画画素のZ値により更新し、前記外包ボリュームが描画される少なくとも1つの画素について、前記外包ボリュームの描画画素のZ値が前記Zバッファに格納された対応する画素のZ値よりも視点に近いことを示すことが判明した場合には、当該オブジェクトは描画される可能性があると判定する。
本発明のさらに別の態様もまた、オクルージョンカリング方法である。この方法は、複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Z値を格納した縮小Zバッファを設け、描画される可能性があるか否かを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリュームとを設け、前記内包ボリュームが描画される画素ブロック内の画素単位のZ値を前記縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較し、当該画素ブロック内の画素単位のZ値の内、視点から最も遠方にあることを示す最遠方Z値が当該画素ブロックの代表Z値よりも視点に近いことを示す場合に、当該画素ブロックの代表Z値を前記最遠方Z値により更新し、前記外包ボリュームが描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中で、前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点に近いことを示すものが1つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定する。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、複数の3次元オブジェクトの奥行き方向の位置関係を考慮して描画処理する際の処理効率を高めることができる。
本発明の実施の形態の概要を説明する。実施の形態では、描画すべきオブジェクトの集合が与えられると、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法を提供する。実施の形態のオクルージョンカリングのために以下の手段を用いる。
(1)オブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた画素ブロックの単位で視点からの奥行きを示す代表Z値を格納した縮小Zバッファ。
(2)実際に描画される可能性があるかどうかを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリューム。
縮小Zバッファの代表Z値は内包ボリュームを用いて次のように更新する。内包ボリュームが描画される画素ブロック内の画素単位のZ値を縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較し、当該画素ブロック内の画素単位のZ値の最大値が当該画素ブロックの代表Z値よりも小さい場合に、当該画素ブロックの代表Z値を当該画素ブロック内の画素単位のZ値の最大値により更新する。
外包ボリュームを基準として縮小Zバッファを用いて次のようにオブジェクトのカリング判定を行う。外包ボリュームが描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中で、縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも小さいものが1つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定する。外包ボリュームが描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のZ値の最小値が縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも大きい場合に、当該オブジェクトを描画対象から外してカリングする。
このように、描画判定対象となるオブジェクトに対して外包ボリュームと内包ボリュームという2つのバウンディングボリュームを設定し、それらのボリュームのピクセルのZ値と縮小Zバッファの代表Z値を比較して隠面消去処理する。これにより、描画されることがないオブジェクトをあらかじめ選別し、描画される可能性のあるオブジェクトのみをラスタライズして描画処理に進めることで、描画処理全体の高速化を図る。
以下、外包ボリュームと内包ボリュームの設定、外包ボリュームと縮小Zバッファを用いたZカリング、および内包ボリュームを用いた縮小Zバッファの更新について詳しく説明する。
[1]外包ボリュームと内包ボリューム
図1(a)は、描画対象として与えられるオブジェクト200の一例を示す図であり、図1(b)は、オブジェクト200に対して設けられる外包ボリューム400と内包ボリューム300の一例を示す図である。外包ボリューム400は、内部にオブジェクト200を完全に包含するように設けられる。内包ボリューム300は、オブジェクト200の内部に完全に包含されるように設けられる。
一例として、外包ボリューム400はオブジェクト200を包含する最小サイズの直方体、内包ボリューム300はオブジェクト200に包含される最大サイズの直方体であってもよい。外包ボリューム400および内包ボリューム300は、直方体以外の形状の立体、たとえば、球体であってもよい。外包ボリューム400、内包ボリューム300は、それぞれ外包ボリューム属性、内包ボリューム属性が付いたポリゴンで囲まれた閉空間であってもよい。
外包ボリューム400は、オブジェクト200を包含することからインクルージョンボリューム(Inclusion Volume)と呼ぶこともでき、内包ボリューム300は、オブジェクト200の表面を外部に締め出すことからエクスクルージョン(Exclusion Volume)と呼ぶこともできる。外包ボリューム400はオブジェクト200が空間で占める領域を外側から制限しており、一方、内包ボリューム300はオブジェクト200が空間で占める領域を内側から制限している。その意味で外包ボリューム400と内包ボリューム300は、オブジェクト200の形状を外面と内面の両方から規定する「二重バウンディングボリューム」であるということができる。
外包ボリューム400は、それに内包されるオブジェクト200が描画される可能性があるかどうか、すなわち描画対象から外す(カリングする)べきかどうかを、縮小Zバッファを参照してZ判定することにより決定するために用いられる。外包ボリューム400は、縮小ZバッファのZ値の更新には用いられない。一方、内包ボリューム300は縮小Zバッファの代表Z値の更新に用いられるが、オブジェクト200のカリング判定には用いられない。
外包ボリューム400と内包ボリューム300は、ラスタライズできる形状であれば形状や複雑さは問わない。これら2つのバウンディングボリュームを設定したのは、オブジェクト200のポリゴン数を削減することで、メモリ容量を抑え、また、Zカリング判定や縮小Zバッファの更新を高速化するためである。後述するように、内包ボリューム300を基準として縮小Zバッファの代表Z値を更新しながら、外包ボリューム400を基準としてZカリングしても、誤ってオブジェクト200をカリングしてしまうことがないことが保証される。
なお、外包ボリューム400と内包ボリューム300のいずれか一方あるいは両方がオブジェクト200と完全に一致していてもよい。すなわちオブジェクト200の形状をそのまま外包ボリューム400や内包ボリューム300として用いてZカリング判定や縮小Zバッファ更新を行ってもよい。もっとも、この場合はオブジェクト200と同じ形状であるため、ポリゴン数が多くなるため、メモリ容量も計算量も増えるが、描画される可能性のないオブジェクトをより正確に判定してカリングすることが可能となる。
外包ボリューム400と内包ボリューム300の形状をオブジェクト200の形状に近づければ近づけるほど、カリングできるオブジェクトの数を増やすことができるが、メモリ量と計算量が増える。一方、外包ボリューム400と内包ボリューム300の形状をより簡素なものにすればするほど、メモリ量と計算量を減らすことができるが、カリングできるオブジェクトの数は少なくなる。カリングできるオブジェクトの数と、メモリ量や計算量との間にはトレードオフがあるため、外包ボリューム400と内包ボリューム300の形状は、カリング効率と、計算機のメモリ容量や処理性能の制限とのバランスを考慮して適宜決めればよい。
図2は、オブジェクト200に対して設けられる別の外包ボリューム410と内包ボリューム310を示す図である。外包ボリューム410は、オブジェクト200を内部に包含する円柱である。内包ボリューム310は、オブジェクト200の内部に包含される、直交する2枚の板である。内包ボリューム310は、体積のあるオブジェクトでなくてもよく、このように厚さがゼロの板から構成されるものであってもよい。なお、厚さがゼロの板の場合も便宜上「ボリューム」という表現を用いることにする。
ここでは、内包ボリューム310は、上から見た場合に十字形状をなす2枚の板であるが、3枚以上の板で構成されてもよく、あるいは1枚の板であってもよい。ただし、1枚の板の場合、視点の位置によっては内包ボリューム310が細長く見えたり、完全に見えなくなることがあるため、投影変換後の内包ボリューム310の占める領域が小さくなり、縮小Zバッファの更新が十分に行えなくなる。その点、2枚の板を直交させておけば、視点の位置が変わっても内包ボリューム310が見えなくなることがなく、また、3枚以上の板にした場合に比べて、計算量も少なくすることができるから、直交する2枚の板で内包ボリューム310を構成することがより好適である。
[2]Zテスト
オブジェクト200に対して設定された外包ボリューム400と内包ボリューム300のそれぞれを構成するポリゴンを、オブジェクト200を描画するスクリーン座標に投影変換し、縮小Zバッファに対応したラスタライズ処理を行う。外包ボリューム400のラスタライズ処理の際、縮小ZバッファによるZカリング判定が行われ、内包ボリューム300のラスタライズ処理の際、縮小Zバッファの代表Z値の更新が行われる。
[2.1]縮小Zバッファ
図3は、縮小Zバッファ500を示す図である。縮小Zバッファ500は、描画時に用いるZバッファのタイル状の複数の画素を1つの画素ブロックにまとめ、解像度を低くしたバッファである。外包ボリューム400と内包ボリューム300の2つのバウンディングボリュームを縮小Zバッファ500に対応させてラスタライズ処理することで、より少ない処理量で隠面消去処理を行うことができる。
図3の例では、縮小Zバッファ500は、縦4画素、横4画素からなる画素ブロックを1単位としてZ値を格納する。最小画素を点線で図示しており、画素ブロックを実線で図示している。1画素ブロックには、16個の画素が含まれる。画素ブロック単位のZ値を「代表Z値」と呼ぶ。Z値は、視点から見た場合の奥行きの値を示し、視点に近いほど小さく、視点から遠ざかるほど大きい。
縮小Zバッファ500の各画素ブロックの代表Z値は、当該画素ブロック内に描画される内包ボリューム300のポリゴンの頂点に位置する画素のZ値、当該画素ブロック内に描画される内包ボリューム300のポリゴンの辺と当該画素ブロックの境界線の交点に位置する画素のZ値、および当該画素ブロックの四隅点に位置する画素のZ値により決定される。各画素ブロックの代表Z値は、画素ブロック内の各画素のZ値の最大値、すなわち画素ブロック内の画素の内、視点からもっとも遠い画素のZ値であることが保証される。縮小Zバッファ500の代表Z値の更新方法は後述する。
[2.2]外包ボリュームを基準とした縮小ZバッファによるZカリング判定
外包ボリューム400は、オブジェクト200が描画される可能性のある領域を検出し、オブジェクト200をカリングすべきかどうかを判定するために設けられている。わずかでも描画される可能性のある部分があれば、オブジェクト200をカリングすることがあってはならない。判定もれの箇所がないことを保証するため、外包ボリューム400は、オブジェクト200を完全に包含する必要がある。オブジェクト200が空間上で占めない余分な部分を外包ボリューム400が含んでいても、その分、処理効率が落ちるが、カリング判定は破綻することがない。
外包ボリューム400のラスタライズ処理において、次のようなZカリング判定を行う。外包ボリューム400が描画される少なくとも1つの画素ブロックにおいて、当該画素ブロック内の複数の画素のZ値の内、縮小Zバッファ500の当該画素ブロックの代表Z値よりも小さいものが1つでも存在することが判明した場合には、オブジェクト200は描画される可能性があると判定する。そして、外包ボリューム400が描画されるすべての画素ブロックについて、当該画素ブロック内の複数の画素のZ値の最小値が縮小Zバッファ500の当該画素ブロックの代表Z値よりも大きい場合に、オブジェクト200をカリングする。
このように各画素ブロックにおいて最も手前にある画素のZ値を縮小Zバッファ500の代表Z値と比較することにより、描画される可能性のあるオブジェクト200を確実に描画対象と判定することができ、描画される可能性のあるオブジェクト200を誤ってカリングすることがないことを保証することができる。外包ボリューム400のラスタライズ処理ではZカリング判定のみを行い、縮小Zバッファ500の代表Z値を参照して画素単位のZ値と比較するが、縮小Zバッファ500に直接、代表Z値を書き込むことはない。以下、Zカリング判定処理の手順を具体的な例を挙げながら説明する。
図4は、オブジェクト200の外包ボリューム400のポリゴン402と縮小Zバッファ500の関係を示す図である。同図ではポリゴン402が描画面に投影された状態を示しており、ポリゴン402は縮小Zバッファ500の斜線で示した画素ブロック(符号502、504など)の位置に描画される。ポリゴン402をラスタライズして各画素のZ値を算出し、各画素ブロックの代表Z値と比較してZ判定を行う。
図5は、図4の縮小Zバッファ500の画素ブロック502において代表Z値と画素単位のZ値の関係を示す図である。画素ブロック502の代表Z値Zrは15であり、ポリゴン402の頂点BのZ値bは20であり、ポリゴン402の各辺と画素ブロック502の境界の交点C1、C2のZ値c1、c2はそれぞれ25、24である。また、画素ブロック502の四隅点の内、ポリゴン402の内部に含まれる点DのZ値dは26である。
図5の場合、ポリゴン402のラスタライズして得られる画素ブロック502内の各画素のZ値は、縮小Zバッファ500の当該画素ブロック502の代表Z値より大きい。したがって、ポリゴン402は、画素ブロック502については縮小Zバッファ500より後方にあることが確実である。なぜなら、縮小Zバッファ500の画素ブロック502の代表Z値Zbは15であるが、縮小Zバッファ500の性質上、この代表Z値は、画素ブロック502を最小画素単位で見た場合のZ値の最大値であることが保証されている。したがって、画素ブロック502の最小画素単位で見たZ値が15よりも大きくなることはないから、画素ブロック502内でサンプリングされたポリゴン402上の各点B、C1、C2、Dは確実に後方にあることがわかる。
このようなZ判定を図4の斜線で示した、ポリゴン402が描画されるすべての画素ブロックについて行い、すべての画素ブロックにおいて各画素のZ値が縮小Zバッファ500の代表Z値よりも大きい場合、ポリゴン402は隠面消去されるべきものであることが判明する。外包ボリューム400の描画対象のすべてのポリゴンについてこのZ判定を行い、すべてのポリゴンが隠面消去されるべきであることがわかると、外包ボリューム400は視点から見えないことが最終的に判定されたことになる。この場合、外包ボリューム400で内包されるオブジェクト200をカリングする。
図6(a)は、図4の縮小Zバッファ500の画素ブロック502において代表Z値と画素単位のZ値の関係を別の例で示す図である。この例では、画素ブロック502の代表Z値Zrは15で、ポリゴン402の頂点BのZ値は10であり、ポリゴン402の2つの辺と画素ブロック502の境界線の交点C1、C2のZ値c1、c2はそれぞれ40、30であり、ポリゴン402内にある画素ブロック502の隅点DのZ値は34である。
図6(a)の場合、頂点BのZ値bは、縮小Zバッファ500の画素ブロック502の代表Z値Zr=15よりも小さく、交点C1、C2のZ値c1、c2、およびポリゴン402内にある画素ブロック502の隅点DのZ値dは、画素ブロック502の代表Z値よりも大きい。このとき、ポリゴン402が画素ブロック502内で前方にあるか、後方にあるかは、最小画素単位でZ値を比較しなければ、正確なところはわからない。そこで、図6(b)と図6(c)を参照して、画素ブロック502の画素単位のZ値の分布例を示し、各分布例において、ポリゴン402が画素ブロック502内で前方にあるか、後方にあるかを考える。
図6(b)は、画素ブロック502内における各画素のZ値の分布の一例を示す図である。頂点BのZ値b=10はその位置の画素単位のZ値である8よりも大きいから、後方にある。この場合、頂点B、交点C1、C2、隅点Dのいずれもが後方にあるから、このポリゴン402は画素ブロック502に関する限り、後方にあることがわかる。
図6(c)は、画素ブロック502内における各画素のZ値の分布の別の例を示す図である。頂点BのZ値b=10はその位置の最小画素のZ値である15よりも小さいから、頂点bは前方にあることになる。したがって、ポリゴン402の少なくとも頂点Bは、前方にあるから描画対象とすべきであり、オブジェクト200はカリングしてはならない。
図5および図6(a)〜(c)の考察から、ポリゴン402が描画される可能性があると判定する際、「疑わしきは描画する」ように緩やかな条件で判定する必要があること、一方、ポリゴン402を描画対象から外してカリングする際、「疑わしきはカリングしない」ように厳しい条件で判定しなければならないことがわかる。
描画される可能性が少しでもあるオブジェクトを誤ってカリングすることがないことを保証するために、厳格なカリング判定条件を以下のように定める。
[厳格なカリング判定条件B]
外包ボリューム400が描画されるすべての画素ブロックについて、
当該画素ブロック内の描画対象のすべての画素のZ値が縮小Zバッファ500の当該画素ブロックの代表Z値よりも大きい場合、言い換えれば、
当該画素ブロック内の描画対象の画素のZ値の最小値が縮小Zバッファ500の当該画素ブロックの代表Z値よりも大きい場合、当該オブジェクト200をカリングする。
外包ボリューム400のポリゴン402が描画される画素ブロック502内の画素単位のZ値を縮小Zバッファ500の画素ブロック502の代表Z値と比較する際、ポリゴン402をラスタライズして得られるすべての画素を画素ブロック502の代表Z値との比較対象とする必要はなく、ポリゴン402が平面であることから、ポリゴン402の端点のZ値だけを評価すれば十分である。すなわち、図5および図6(a)で説明したように、画素ブロック502内にある外包ボリューム400のポリゴン402の頂点Bに位置する画素のZ値b、ポリゴン402の辺と画素ブロック502の境界線の交点C1、C2に位置する画素のZ値c1、c2、およびポリゴン402に内包される画素ブロック502の隅点Dに位置する画素のZ値dを、画素ブロック502の代表Z値Zrと比較すればよい。したがって、厳格なカリング判定条件Bは、次のように簡単にすることができる。
[厳格なカリング判定条件B’]
外包ボリューム400が描画されるすべての画素ブロックについて、
b>Zrかつc>Zrかつd>Zrならば、言い換えれば、
min(b,c,d)>Zrならば、オブジェクト200をカリングする。
ここで、bは当該画素ブロック内にある外包ボリューム400のポリゴンの頂点BのZ値、cは当該ポリゴンの辺と当該画素ブロックの境界線の交点CのZ値、dは当該ポリゴンに内包される当該画素ブロックの隅点DのZ値であり、頂点B、交点C、隅点Dが複数ある場合はすべてのサンプリングポイントを評価する。
厳格なカリング判定条件B’は、外包ボリューム400が描画されるすべての画素ブロックについて、頂点B、交点C、隅点Dのうちもっとも手前にあるものが縮小Zバッファ500の代表Z値Zrよりも遠方にあるなら、カリングするというものである。縮小Zバッファ500の定義から、最小画素単位のZ値は縮小Zバッファ500の代表Z値Zrよりも大きくなることはないから、この条件でカリングしている限り、描画すべきものを誤ってカリングすることは決してないことが保証される。
上記の厳格なカリング判定条件Bの論理的な否定を取ることにより、「疑わしきは描画する」緩やかな描画判定条件を得ることができる。
[緩やかな描画判定条件A]
外包ボリューム400が描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中に、縮小Zバッファ500の当該画素ブロックの代表Z値よりも小さいものが1つでも存在することが判明した場合、オブジェクト200は描画される可能性があると判定する。
外包ボリューム400のポリゴン402が平面であることから、[緩やかな描画判定条件A]は次のように簡単にすることができる。
[緩やかな描画判定条件A’]
外包ボリューム400が描画される少なくとも1つの画素ブロックについて、
b<Zrまたはc<Zrまたはd<Zrならば、オブジェクト200を描画される可能性があると判定する。
ここで、bは当該画素ブロック内にある外包ボリューム400のポリゴンの頂点BのZ値、cは当該ポリゴンの辺と当該画素ブロックの境界線の交点CのZ値、dは当該ポリゴンに内包される当該画素ブロックの隅点DのZ値であり、頂点B、交点C、隅点Dが複数ある場合はすべてのサンプリングポイントを評価する。
処理の高速化のために、オブジェクト200の外包ボリューム400をラスタライズ処理してZ判定する過程で、ある画素ブロックについて緩やかな描画判定条件A’が満たされると、ただちにそのオブジェクト200は描画される可能性があると判定し、次のオブジェクトについてのZカリング判定に進む。オブジェクト200について、外包ボリューム400が描画されるいずれの画素ブロックについても緩やかな描画判定条件A’が満たされない場合は、結果的に厳格なカリング判定条件B’が満たされることになり、そのオブジェクト200はカリングする。
図7は、図4の縮小Zバッファ500の2つの画素ブロック502、504について順にラスタライズ処理がなされ、Z判定がなされる過程を説明する図である。まず、縮小Zバッファ500の左の画素ブロック502においてラスタライス処理がなされる。ポリゴン402の頂点BのZ値bは20、交点C1、C2のZ値c1、c2はそれぞれ18、16、隅点D1のZ値d1は14であり、左の画素ブロック502の代表Z値Zrは7である。左の画素ブロック502において、ポリゴン402内のサンプリング点B、C1、C2、D1のZ値はいずれも代表Z値よりも大きく、後方にあるから、左の画素ブロック502についてラスタライズ処理がなされる段階では、オブジェクト200はまだ描画される可能性があるとは判定されない。
次に、右の画素ブロック504についてラスタライズ処理が進められる。右の画素ブロック504において、ポリゴン402の交点C1、C3のZ値c1、c3はそれぞれ18、16、隅点D1、D2のZ値d1、d2は14、12であり、右の画素ブロック502の代表Z値Zrは15である。交点C1、C3については、c1>Zr、c2>Zrであるが、隅点D1、D2については、d1<Zr、d1<Zrであるから、緩やかな描画判定条件A’を満たしており、オブジェクト200は描画される可能性があると判定し、それ以降は、外包ボリューム400のラスタライズ処理を打ち切る。
このように、外包ボリューム400を走査ラインに沿ってラスタライズしながら各画素ブロックにおいて描画判定を行い、ある画素ブロックについて緩やかな描画判定条件A’を満たした段階でオブジェクト200は描画される可能性があると判定し、以降のラスタライズ処理を打ち切り、すべての画素ブロックについて緩やかな描画判定条件A’を満たしていない、すなわち厳格なカリング条件B’を満たしていることが判明すると、オブジェクト200をカリングする。
図8は、外包ボリューム400のポリゴン402のラスタライズ処理においてZ判定されるサンプリングポイントを示す図である。外包ボリューム400のポリゴン402内で斜線で示した画素ブロックに含まれる頂点、交点、隅点をZ判定すればよいから、白丸で示した点がサンプリングポイントとなる。画素ブロックの境界線上のサンプリングポイントについては、境界線において隣接するすべての画素ブロックの代表Z値との間でZ判定されることになる。
[2.3]内包ボリュームによる縮小Zバッファの代表Z値の更新
内包ボリューム300は、オブジェクト200が存在することにより、これよりも後方にある他のオブジェクトが隠れて描画されることがない領域を検出し、縮小Zバッファ500を更新するために設けられている。描画されることのない領域を正しく検出するためには次の条件をすべて満たす必要がある。
1.内包ボリューム300が描画される画素ブロック内の全画素が内包ボリューム300の描画データにより覆われていること。ここで、画素ブロックは内包ボリューム300の1つのポリゴンだけで覆われている必要はなく、複数のポリゴンで覆われていてもよい。画素ブロック内で少しでも隙間があると、その隙間から他のオブジェクトが見える可能性があるため、代表Z値を内包ボリューム300のZ値で更新することはできない。
2.内包ボリューム300が描画される画素ブロック内のすべての画素の中でZ値が最も大きいものを選択し、当該画素ブロックの代表Z値を当該画素ブロック内の画素単位のZ値の最大値により更新すること。
上記1.の条件に関して、縮小Zバッファ500は、複数の画素をまとめた画素ブロック単位で1つのZ値をもたせたものであり、画素単位で見た場合に隙間が生じるかどうかを判定するのは難しい。そこで、本実施の形態におけるZ判定は隠面消去処理の効率化のためであり、Z判定が困難である場合はとりあえず描画対象と判断しておけばよい点を考慮し、内包ボリューム300が縮小Zバッファ500の画素ブロック内の全画素を描画する場合に限り、画素ブロックの代表Z値を更新することにする。そのため、下記の判定手順で縮小Zバッファ500の画素ブロック内の全画素が複数のポリゴンにより覆われているかどうかを判定する。
(1)内包ボリューム300を構成する各ポリゴンの各辺に0または1の値を取る判定フラグを設け、各辺の判定フラグを0に初期化する。
(2)内包ボリューム300の端部の辺を見つけてその辺の判定フラグを1に設定する。これは、内包ボリューム300の各ポリゴンの各辺において、その辺に隣接する他のポリゴンがあるかどうかを判定し、隣接する他のポリゴンがない辺を検出することにより行われる。隣接する他のポリゴンがない辺は端部であり、その辺の判定フラグは1に設定される。この処理は、内包ボリューム300を作成する段階で行うことができる。
なお、内包ボリューム300が立体である場合は、隣接する他のポリゴンが存在しない端部の辺は存在しないため、(2)の端部の辺の検出処理は省略してもよい。内包ボリューム300が板のような形状の場合は、隣接する他のポリゴンが存在しない端部の辺が存在するため、(2)の端部の辺の検出処理が必要となる。
(3)次に、内包ボリューム300をスクリーン座標に投影して描画する際のエッジとなる辺を見つけて判定フラグを1に設定する。これは、内包ボリューム300の各ポリゴンをスクリーン座標に投影変換する際、各ポリゴンの法線ベクトルを取得し、ポリゴンの法線ベクトルの向きが、投影面の裏から表へ貫く方向から投影面の表から裏へ貫く方向へ変化する辺を検出することで行われる。視点から見える表側のポリゴンの場合、法線ベクトルは投影面の裏から表へ貫く方向を向いているが、視点から見えない裏側のポリゴンの場合、法線ベクトルは投影面の表から裏へ貫く方向を向いている。したがって、法線ベクトルの変化から内包ボリューム300が描画される際にエッジとなるポリゴンの辺を検出することができる。エッジとして検出された辺の判定フラグは1に設定される。
(4)上記(2)および(3)において検出された判定フラグが1である辺が通る縮小Zバッファ500の画素ブロックについては、その画素ブロック内の全画素が描画されるとは限らないため、隙間が生じる可能性がある。そこで、判定フラグが1である辺が1つでも存在する画素ブロックについては、代表Z値の更新対象から外す。画素ブロック内を通るすべての辺の判定フラグが0である画素ブロックについては、代表Z値の更新対象とする。
図9、図10、および図11(a)〜(c)を参照して、上記の(1)〜(4)の判定手順を説明する。図9は、投影変換された内包ボリューム300のポリゴンと縮小Zバッファ500の関係を示す図である。内包ボリューム300のポリゴンの辺が通る縮小Zバッファ500の画素ブロックの内、斜線を付した画素ブロックだけが代表Z値の更新対象となることを図10と図11(a)〜(c)を用いて説明する。
図10は、図9の内包ボリューム300のポリゴンの各辺に設定される判定フラグの値を示す図である。判定フラグが1である辺は、内包ボリューム300のエッジである。図11(a)〜(c)は、図9の縮小Zバッファ500の画素ブロック510、512、514内を通るポリゴンの辺を図10の判定フラグの値とともに示す図である。
図11(a)に示すように、画素ブロック510には判定フラグが1の辺302と判定フラグが0の辺304が通っており、判定フラグが1の辺302はエッジであるため、画素ブロック510内の4つの画素601、602、603、604についてはポリゴンが描画されないため、隙間が生じ、後方のオブジェクトが見える可能性がある。したがって、この画素ブロック510については代表Z値の更新を行わない。
図11(b)に示すように、画素ブロック512には、判定フラグが0の3つの辺306、308、310が通っており、画素ブロック512の全画素は3つのポリゴンによって完全に覆われており、隙間がない。したがって、この画素ブロック512については代表Z値の更新を行う。
図11(c)に示すように、画素ブロック514には、判定フラグが0の2つの辺316、318と、判定フラグが1の2つの辺312、314が通っており、2つの画素605、606についてはポリゴンが描画されないため、隙間が生じ、後方のオブジェクトが見える可能性がある。したがって、この画素ブロック514については代表Z値の更新を行わない。
このように、図10で示したポリゴンの各辺の判定フラグを参照して、代表Z値の更新を行う画素ブロックを特定すると、図9の斜線で示した画素ブロックだけが代表Z値の更新対象となる。次に、代表Z値の更新方法を説明する。
[Z値更新条件C]
内包ボリューム300により完全に覆われた縮小Zバッファ500の画素ブロックについて、
当該画素ブロック内の内包ボリューム300の描画対象のすべての画素のZ値が縮小Zバッファ500の当該画素ブロックの代表Z値よりも小さい場合、言い換えれば、
当該画素ブロック内の内包ボリューム300の描画対象の画素のZ値の最大値が縮小Zバッファ500の当該画素ブロックの代表Z値よりも小さい場合、当該画素ブロックの代表Z値を当該画素ブロック内の画素単位のZ値の最大値により更新する。
内包ボリューム300のポリゴン面が平面であることより、ポリゴンの頂点Bに位置する画素のZ値、ポリゴンの辺と当該画素ブロックの境界線の交点Cに位置する画素のZ値、および当該画素ブロックの四隅点D1〜D4に位置する画素のZ値を縮小Zバッファ500の代表Z値Zrと比較すれば十分である。よって、Z値更新条件Cは次のように簡単にできる。
[Z値更新条件C’]
内包ボリューム300により完全に覆われた縮小Zバッファ500の画素ブロックについて、
max(b,c,d1,d2,d3,d4)<Zrならば、縮小ZバッファのZ値をmax(b,c,d1,d2,d3,d4)の値で更新する。
ここで、bは当該画素ブロック内にある内包ボリューム300のポリゴンの頂点BのZ値、cは当該ポリゴンの辺と当該画素ブロックの境界線の交点CのZ値、dは当該画素ブロックの四隅点D1〜D4のZ値であり、頂点B、交点Cが複数ある場合はすべてのサンプリングポイントを評価する。
このZ値更新条件C’は、頂点B、交点C、および四隅点D1〜D4のうち最も遠方にあるものが縮小Zバッファの現在の代表Z値Zrよりも手前にあるなら、代表Z値Zrをその最も遠方にあるZ値で更新するというものである。確実にポリゴンが前方にある場合のみ、代表Z値を更新し、疑わしきは更新しない。このようにして代表Z値が更新された縮小Zバッファ500を参照して、前述のZカリング判定を行えば、描画される可能性のあるオブジェクトが誤ってカリングされることは絶対にないことが保証される。
図12は、縮小Zバッファ500の画素ブロック512の代表Z値の更新を説明する図である。画素ブロック512は、内包ボリューム300のポリゴンで完全に覆われているから、代表Z値は更新の対象となる。ポリゴンの頂点BのZ値bは10、交点C1〜C3のZ値c1〜c3はそれぞれ40、30、30、四隅の点D1〜D4のZ値d1〜d4はそれぞれ43,42,35,34であり、画素ブロック512の代表Z値はZr=48であるから、Z値更新条件C’を満たす。代表Z値Zrは、Z値が最大である隅点D1のZ値d1=43によって更新される。
図13は、内包ボリューム300のポリゴンのラスタライズ処理においてZ判定されるサンプリングポイントを示す図である。斜線で示された代表Z値の更新対象となる画素ブロックにおいて白丸で示したサンプリングポイントのZ値が各画素ブロックの代表Z値と比較され、Z値更新条件C’を満たした場合に、その画素ブロックの代表Z値が更新される。
[3]実施の形態の効果と変形例
以上、述べたように本実施の形態によれば、オブジェクト200に対して外包ボリューム400と内包ボリューム300を設定し、縮小Zバッファ500を用いて、それぞれのボリュームで異なる種類のZ判定を行うことにより、描画される可能性のないオブジェクト200をカリングし、隠面消去処理の効率化を図ることができる。
また、オブジェクト200を外包ボリューム400と内包ボリューム300という二重バウンディングボリュームで挟み込み、二重バウンディングボリュームがオブジェクト200の形状を近似する精度を調整することでカリング効率を必要に応じて任意に変えることができる。
また、従来は、縮小Zバッファを生成するために、通常の画素単位のZバッファを求め、複数の画素のZ値を段階的にまとめることで、解像度を段階的に縮小した階層Zバッファを生成する方法が取られていたが、本実施の形態では、通常の画素単位のZバッファを利用せずに、画素ブロック単位の縮小Zバッファを直接求めることができるため、処理効率が良い。縮小Zバッファの代表Z値の更新は、オブジェクトのポリゴンが画素ブロックを完全に覆っており、ポリゴンが確実に前方にあることを確認してから注意深く行われる。これにより、縮小Zバッファを、画素単位のZバッファを用いることなく、破綻なく求めることができる。
上述の実施の形態に対して、いくつかの変形例があり、以下、説明する。
[3.1]前面板と背面板
上記の説明では、オブジェクト200に対して二重バウンディングボリュームである外包ボリューム400と内包ボリューム300を設定し、外包ボリューム400によるZカリング判定と、内包ボリューム300による縮小Zバッファの代表Z値更新を行った。別の実施例として、視点から見てオブジェクト200を奥行き方向に前後に挟む前面板と背面板からなる二重バウンディングボードを設定し、前面板を用いて同様のZカリング判定を行い、背面板を用いて縮小Zバッファの代表Z値を行ってもよい。
図14(a)、(b)は、オブジェクト200に対して設定される前面板420と背面板320を示す図である。図14(a)に示すように、視点Vから見て、オブジェクト200の前方に位置してオブジェクト200を背後に隠す前面板420と、オブジェクト200の背面に位置してオブジェクト200の背後に隠れる背面板320を設ける。視点Vから見た場合、オブジェクト200は前面板420の背後に隠れて全く見えず、背面板320はオブジェクト200の背後に隠れて全く見えない。図14(b)は、視点Vに対して、オブジェクト200と前面板420と背面板320の位置関係を上方から見た図である。
前面板420は視点Vから見てオブジェクト200を完全に隠すものであるから、Zカリング判定において外包ボリューム400と同じ効果を奏する。したがって、前面板420に対して、既に述べたZカリング判定方法がそのまま利用できる。背面板320は視点から見てオブジェクト200に完全に隠れるものであるから、縮小Zバッファ500の更新において内包ボリューム300と同じ効果を奏する。したがって、背面板320に対して、既に述べた縮小Zバッファ500の代表Z値の更新方法がそのまま利用できる。
一例として、前面板420は、オブジェクト200を描画面に投影したシルエットを完全に囲む最小サイズの長方形、背面板320は、オブジェクト200のシルエットに完全に囲まれる最大サイズの長方形であってもよい。あるいは、前面板420および背面板320を任意形状とし、オブジェクト200のシルエットの形状に近づけてもよい。前面板420および背面板320の形状がオブジェクト200のシルエットの形状に近づけるほど、カリング効率を高めることができる。また、前面板420、背面板320がオブジェクト200のそれぞれ前面および背面に置かれる位置についても、オブジェクト200の位置に近づけるほど、カリング効率を高めることができる。
オブジェクト200に対して外包ボリューム400や内包ボリューム300を生成するための処理コストに比べると、オブジェクト200に対して前面板420と背面板320を生成することははるかに容易である。また、前面板420と背面板320はラスタライズ処理も容易であるから、Zカリング判定や縮小Zバッファ500の代表Z値の更新を高速に行うことができる。
視点が移動すると、オブジェクト200が前面板420の背後に完全に隠れることがなくなったり、背面板320がオブジェクト200の背後に見えるようになるため、視点位置が変わると、前面板420と背面板320を設定し直す必要がある。この点、外包ボリューム400と内包ボリューム300は、どの視点位置から見てもオブジェクト200を外側と内側から制限する二重バウンディングボリュームであることに変わりがないから、視点位置が変わっても再設定する必要がない。視点の位置が変化する場合は、外包ボリューム400と内包ボリューム300を用いるのがより好適である。
オブジェクト200が動く場合、外包ボリューム400と内包ボリューム300をラスタライズし直すことになるため、処理が重くなる。それに対して、前面板420と背面板320はオブジェクト200が動いても再設定することが容易であるため、処理負荷が大きくならなくて済む。オブジェクト200が頻繁に動く場合は、前面板420と背面板320を用いるのがより好適である。
[3.2]構成要件の一部省略
上記の実施の形態では、オブジェクト200に対して外包ボリューム400と内包ボリューム300という二重バウンディングボリュームを設けて、オブジェクト200を奥行き方向で近似し、縮小Zバッファ500を更新しながら、Zカリング判定を行う方法を説明した。オブジェクト200に完全に内包される内包ボリューム300で縮小Zバッファ500を生成し、オブジェクト200を完全に内包する外包ボリューム400を基準として縮小Zバッファ500を用いてカリング判定を行うことで、描画すべきオブジェクト200を誤ってカリングすることが絶対にないことを保証した。
縮小Zバッファ500と二重バウンディングボリュームを用いたオクルージョンカリング方法には、メモリ容量と処理負荷の面で次の利点がある。
(A)実際のオブジェクト200よりも複雑度の低いバウンディングボリュームを用いるため、ポリゴンモデルを記憶するメモリ容量が少なくて済み、ポリゴンモデルのラスタライズ処理も高速に行える。
(B)縮小Zバッファ500を用いて画素ブロック単位のZ判定をするため、通常のZバッファを用いた画素単位のZ判定に比べて、必要とされるメモリ容量が少なく、演算回数も少なくて済む。
実施の形態の変形として、
(1)縮小Zバッファ500を用いないで、二重バウンディングボリュームを通常のZバッファに対してラスタライズしてオクルージョンカリングする方法、または、
(2)二重バウンディングボリュームを用いないで、オブジェクト200を縮小Zバッファ500に対して直接ラスタライズしてオクルージョンカリングする方法
を採用することもできる。すなわち縮小Zバッファ500、二重バウンディングボリュームのいずれか一方を構成要件から外しても、本発明を実施することができる。
縮小Zバッファ500を構成要件から外すと、縮小Zバッファ500を採用することによる上記(B)のメリットが失われるが、二重バウンディングボリュームを採用することによる上記(A)のメリットは保たれる。二重バウンディングボリュームを構成要件から外した場合、二重バウンディングボリュームを採用することによる上記(A)のメリットが失われるが、縮小Zバッファ500を採用することによる上記(B)のメリットは保たれる。いずれの場合も、メリットの一部が失われるが、オクルージョンカリングの目的は同様に達することができる。
同様に、前面板420と背面板320という二重バウンディングボードを用いる場合でも、縮小Zバッファを構成要件から外しても、オクルージョンカリングの目的を達することができる。
また、実施の形態では、オブジェクト単位でカリングする方法を説明したが、オブジェクトを構成するポリゴンなどのフラグメントの単位でカリングする場合にも本発明を適用することができる。実施の形態の縮小Zバッファを用いたZカリングは、オブジェクト単位に限らず、プリミティブ単位でのZカリングにも適用できる。実施の形態では、視点の手前にある他のオブジェクトに隠れて見えないオブジェクトを選り抜き、あらかじめ描画対象から外すことを目的とするオクルージョンカリングを説明したが、実施の形態の縮小Zバッファは、他のオブジェクトに隠れて見えない物体の面すなわち隠面を検出して消去する隠面消去法に用いてもよい。このように実施の形態の縮小Zバッファは、オブジェクト単位のオクルージョンカリングだけでなく、オブジェクトの隠面を消去する隠面消去にも適用して、Zカリングの処理効率を上げることができる。
また階層的Zバッファを利用する各種の描画処理において、階層的Zバッファの代わりに実施の形態の縮小Zバッファを用いることにより、画素単位のZバッファを前提としないで、解像度を落とした縮小Zバッファを生成できるため、計算量やメモリ容量の点で有利な構成にすることができる。
[4]描画処理装置の構成
以下、上記の実施の形態およびその変形例に係るオクルージョンカリング方法を利用した描画処理装置100の構成と動作を説明する。図15から図17を参照して描画処理装置100の構成を説明するが、これらの図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
図15は、実施の形態に係る描画処理装置100の構成図である。描画処理装置100は、3次元モデル情報にもとづいて2次元画面に表示するための描画データを生成するレンダリング処理を行う。描画処理装置100は、メインプロセッサ130と、グラフィックスプロセッサ110が入出力インタフェース160を介して相互接続されて構成される。メインプロセッサ130はメインメモリ170を記憶領域として用いて、ジオメトリ演算などの演算処理を実行し、グラフィックスプロセッサ110は、フレームバッファ50を記憶領域として用いて、ラスタライズ処理やシェーディングアルゴリズムなどの描画演算処理を実行する。
メインプロセッサ130はZカリング処理部140を含み、グラフィックスプロセッサ110は描画処理部120を含む。メインプロセッサ130は描画すべき複数のオブジェクトのデータを外部記憶装置などから読み取り、メインメモリ170に記憶する。Zカリング処理部140は、縮小Zバッファを用いて、複数のオブジェクトの内、他のオブジェクトに隠れて見えないオブジェクトを描画対象から外すZカリング処理を行う。グラフィックスプロセッサ110には、描画される可能性のあるオブジェクトだけが入出力インタフェース160を介して供給され、描画処理部120により描画される可能性のあるオブジェクトがラスタライズされ、フレームバッファ50に描画される。
図16は、Zカリング処理部140の構成図である。オブジェクト入力部142は、描画すべき複数のオブジェクトを入力し、オブジェクト集合としてオブジェクト記憶部152に記憶する。
内包ボリューム生成部148は、入力されたオブジェクト200に包含される内包ボリューム300を生成し、縮小Zバッファ更新部150に与える。縮小Zバッファ更新部150は、内包ボリューム300にもとづいて、縮小Zバッファ記憶部154に記憶される縮小Zバッファ500を更新する。縮小Zバッファ更新部150による縮小Zバッファ500の代表Z値の更新処理は、[2.3]節で述べた通りである。縮小Zバッファ更新部150は更新後の縮小Zバッファ500を縮小Zバッファ記憶部154に記憶する。
外包ボリューム生成部144は、カリング判定対象のオブジェクト200を包含する外包ボリューム400を生成し、カリング判定部146に与える。カリング判定部146は、縮小Zバッファ記憶部154に格納された縮小Zバッファ500を参照し、外包ボリューム400にもとづいてオブジェクト200のZカリング判定を行う。カリング判定部146によるZカリング判定処理は、[2.2]節で述べた通りである。カリング判定部146は、Zカリング判定により描画対象から外されたオブジェクトをオブジェクト記憶部152に記憶されたオブジェクト集合から除去する。Zカリング処理部140は、オブジェクト記憶部152に記憶された、描画される可能性のあるオブジェクトのみからなるオブジェクト集合を描画処理部120に供給する。
図17は、描画処理装置100の構成図である。描画処理装置100は、ラスタライザ10とシェーダ20を含む。ラスタライザ10には、描画される可能性のあるオブジェクトだけが入力される。ラスタライザ10は、プリミティブ生成部30と、セットアップ処理部32と、DDA34とを含む。
プリミティブ生成部30は、入力されたオブジェクトのポリゴン情報をもとに、オブジェクトを構成する1つ以上のプリミティブの頂点座標とパラメータを含むストリームを生成し、セットアップ処理部32に与える。プリミティブは、3次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位である。
セットアップ処理部32は、プリミティブのストリームをデジタル微分解析器(Digital Differential Analyzer;DDA)により処理するための各種パラメータのセットアップを行う。具体的には、プリミティブを含む空間を区切るバウンディングボックスの設定や、エッジ係数などDDA処理の各種パラメータの設定を行う。
セットアップ処理部32は、セットアップ後のプリミティブデータをDDA34に供給する。DDA34は、セットアップ処理部32から与えられるプリミティブを、セットアップ処理部32により設定された各種パラメータにもとづいてDDA処理して、描画スクリーンに対応したピクセルデータに変換する。
プリミティブは一例として三角形の形状であり、DDA34は、3次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、ラスタライン毎に量子化されたピクセルに変換する。DDA34により、プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ値、奥行きを示すZ値、テクスチャ属性を参照するためのパラメータ座標であるUV座標値などを含むピクセルデータが算出される。
シェーダ20は、ラスタライザ10により算出されたピクセルデータをもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、フレームバッファ50にピクセルデータを書き込む。
シェーダ20は、さらに、フレームバッファ50に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、フレームバッファ50のピクセルデータを更新する。
フレームバッファ50は、シェーダ20により生成されたピクセルデータをスクリーン座標で格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファ50に記憶されたピクセルデータは、表示装置に出力されて表示される。
上記の説明では、Zカリング処理部140をメインプロセッサ130に設けたが、Zカリング処理部140の外包ボリューム生成部144と内包ボリューム生成部148は、それぞれ外包ボリューム400と内包ボリューム300をラスタライズするため、描画処理部120のラスタライザ10を利用して実行することができる。そのため、Zカリング処理部140をグラフィックスプロセッサ110に設け、Zカリング処理部140の各構成を描画処理部120のラスタライザ10やシェーダ20の演算機能を用いて実行するように構成してもよい。この場合、マルチパスレンダリングに手法を用いて、最初の演算パスで描画されることのないオブジェクトをカリングし、次の演算パスで描画される可能性のあるオブジェクトのみを投入して描画するように構成してもよい。
図18は、Zカリング処理部140によるZカリング処理の手順を説明するフローチャートである。オブジェクト入力部142は、N個のオブジェクトを入力し(S10)、オブジェクト入力部142は、処理済みのオブジェクトをカウントするための変数iを0に初期化する(S12)。オブジェクト入力部は、変数iを1だけインクリメントし(S14)、第i番目のオブジェクトを外包ボリューム生成部144と内包ボリューム生成部148に与える。
外包ボリューム生成部144は第i番目のオブジェクトを包含する外包ボリュームを生成し、内包ボリューム生成部148は第i番目のオブジェクトに包含される内包ボリュームを生成する(S16)。
カリング判定部146は、第i番目のオブジェクトを包含する外包ボリュームにもとづいて縮小Zバッファ500を用いたZカリング判定を行う(S18)。内包ボリューム生成部148は、第i番目のオブジェクトに包含される内包ボリュームにもとづいて縮小Zバッファ500を更新する(S20)。
変数iがオブジェクトの総数Nより小さい場合(S22のY)、ステップS14に戻り、変数iがオブジェクトの総数Nに達した場合(S22のN)、終了する。
上記の手順では、i番目のオブジェクトを包含する外包ボリュームを用いてZカリング判定がなされた後、i番目のオブジェクトに包含される内包ボリュームを用いて縮小Zバッファ500の更新がなされたが、カリング判定と縮小Zバッファ500の更新は独立して行うことができるので、この順に行わなくてもよい。また、すべてのオブジェクトに対して、Zカリング判定と縮小Zバッファ500の更新の両方を実行する必要はなく、縮小Zバッファ500の更新に利用されるオブジェクトの集合と、Zカリング判定されるオブジェクトの集合が異なっていてもよい。
たとえば、縮小Zバッファ500の更新は、サイズの大きなオブジェクトや、前方に位置することがあらかじめわかっているオブジェクトについて行い、サイズの小さなオブジェクトや、後方に位置することがあらかじめわかっているオブジェクトについては適宜省略することで処理コストを下げることができる。
また、Zカリング判定されるオブジェクトについても、後方に位置することがあらかじめわかっているオブジェクトを優先して判定したり、演算処理が重たいオブジェクトを中心にカリング判定するなど、適宜、判定対象のオブジェクトを選択してもよい。
図19は、カリング判定部146によるステップS18のカリング判定の手順を示すフローチャートである。カリング判定部146は、オブジェクトの外包ボリュームをラスタライズし(S30)、外包ボリュームが描画されるM個の画素ブロックを特定する(S32)。処理済みの画素ブロックをカウントするための変数jを0に初期化する(S34)。
変数jを1だけインクリメントする(S36)。カリング判定部146は、j番目の画素ブロックにおいて、外包ボリュームのある1つの画素のZ値がこの画素ブロックの代表Z値よりも小さいことが判明した場合(S38のY)、このオブジェクトは描画される可能性があるため、カリングしないことに決定する(S40)。
カリング判定部146は、j番目の画素ブロックにおいて、外包ボリュームのいずれの画素のZ値も画素ブロックの代表Z値以上である場合(S38のN)、この画素ブロックについては、オブジェクトは描画対象とは判定せず、変数jが画素ブロックの総数Mよりも小さい限り(S42のY)、ステップS36に戻り、他の画素ブロックについてもZ判定を継続する。その結果、M個の画素ブロックのすべてについて、外包ボリュームのいずれの画素のZ値も画素ブロックの代表Z値以上であることが判明した場合(S38のNかつS42のN)、カリング判定部146は、このオブジェクトは描画される可能性がないため、カリングする(S44)。
オブジェクトをカリングすべきかどうかが決定されると(S40またはS44)、カリング判定は終了する。
図20は、縮小Zバッファ更新部150によるステップS20の縮小Zバッファ500の更新の手順を示すフローチャートである。縮小Zバッファ更新部150は、オブジェクトの内包ボリュームをラスタライズし(S50)、内包ボリュームのポリゴンで覆われるL個の画素ブロックを特定する(S52)。処理済みの画素ブロックをカウントするための変数kを0に初期化する(S54)。
変数kを1だけインクリメントする(S56)。縮小Zバッファ更新部150は、k番目の画素ブロックにおいて、画素単位のZ値の最大値がこの画素ブロックの代表Z値よりも小さい場合(S58のY)、代表Z値をその画素単位のZ値の最大値により更新する(S60)。変数kが画素ブロックの総数Lより小さい場合(S62のY)、ステップS56に戻り、他の画素ブロックについてもZ判定を行い、変数kが画素ブロックの総数Lに達した場合(S62のN)、終了する。
縮小Zバッファ更新部150は、k番目の画素ブロックにおいて、画素単位のZ値の最大値がこの画素ブロックの代表Z値以上である場合(S58のN)、代表Z値を更新することなくステップS62に進む。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
図1(a)は、描画対象として与えられるオブジェクトの一例を示す図であり、図1(b)は、オブジェクトに対して設けられる外包ボリュームと内包ボリュームの一例を示す図である。 オブジェクトに対して設けられる別の外包ボリュームと内包ボリュームを示す図である。 縮小Zバッファを示す図である。 オブジェクトの外包ボリュームのポリゴンと縮小Zバッファの関係を示す図である。 図4の縮小Zバッファのある画素ブロックにおいて代表Z値と画素単位のZ値の関係を示す図である。 図6(a)は、図4の縮小Zバッファのある画素ブロックにおいて代表Z値と画素単位のZ値の関係を別の例で示す図であり、図6(b)および図6(c)は、画素ブロック内における各画素のZ値の分布の一例を示す図である。 図4の縮小Zバッファの二つの画素ブロックについて順にラスタライズ処理がなされ、Z判定がなされる過程を説明する図である。 外包ボリュームのポリゴンのラスタライズ処理においてZ判定されるサンプリングポイントを示す図である。 投影変換された内包ボリュームのポリゴンと縮小Zバッファの関係を示す図である。 図9の内包ボリュームのポリゴンの各辺に設定される判定フラグの値を示す図である。 図11(a)〜(c)は、図9の縮小Zバッファの三つの画素ブロック内を通るポリゴンの辺を図10の判定フラグの値とともに示す図である。 縮小Zバッファの画素ブロックの代表Z値の更新を説明する図である。 内包ボリュームのポリゴンのラスタライズ処理においてZ判定されるサンプリングポイントを示す図である。 図14(a)および図14(b)は、オブジェクトに対して設定される前面板と背面板を示す図である。 実施の形態に係る描画処理装置の構成図である。 図15のZカリング処理部の構成図である。 図15の描画処理装置の構成図である。 図16のZカリング処理部によるZカリング処理の手順を説明するフローチャートである。 図16のカリング判定部によるカリング判定の手順を示すフローチャートである。 図16の縮小Zバッファ更新部による縮小Zバッファの更新の手順を示すフローチャートである。
符号の説明
10 ラスタライザ、 20 シェーダ、 30 プリミティブ生成部、 32 セットアップ処理部、 34 DDA、 50 フレームバッファ、 100 描画処理装置、 110 グラフィックスプロセッサ、 120 描画処理部、 130 メインプロセッサ、 140 Zカリング処理部、 142 オブジェクト入力部、 144 外包ボリューム生成部、 146 カリング判定部、 148 内包ボリューム生成部、 150 縮小Zバッファ更新部、 152 オブジェクト記憶部、 154 縮小Zバッファ記憶部、 200 オブジェクト、 300 内包ボリューム、 400 外包ボリューム、 500 縮小Zバッファ。

Claims (10)

  1. 複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、
    前記複数のオブジェクトの奥行き方向の位置関係を判定するために、画素単位で視点からの奥行きを示すZ値を格納したZバッファを設け、
    描画される可能性があるか否かを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリュームとを設け、
    前記内包ボリュームが描画される画素のZ値を前記Zバッファに格納された対応する画素のZ値と比較し、前記内包ボリュームの描画画素のZ値が前記Zバッファの対応画素のZ値よりも視点に近いことを示す場合に、前記Zバッファの対応画素のZ値を前記内包ボリュームの描画画素のZ値により更新し、
    前記外包ボリュームが描画される少なくとも1つの画素について、前記外包ボリュームの描画画素のZ値が前記Zバッファに格納された対応する画素のZ値よりも視点に近いことを示すことが判明した場合には、当該オブジェクトは描画される可能性があると判定することを特徴とするオクルージョンカリング方法。
  2. 前記外包ボリュームの描画画素のZ値を前記Zバッファに格納された対応する画素のZ値と比較し、前記外包ボリュームのすべての描画画素のZ値が前記Zバッファの対応画素のZ値よりも視点から遠いことを示す場合に、当該オブジェクトを描画対象から外すことを特徴とする請求項1に記載のオクルージョンカリング方法。
  3. 複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、
    前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Z値を格納した縮小Zバッファを設け、
    描画される可能性があるか否かを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリュームとを設け、
    前記内包ボリュームが描画される画素ブロック内の画素単位のZ値を前記縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較し、当該画素ブロック内の画素単位のZ値の内、視点から最も遠方にあることを示す最遠方Z値が当該画素ブロックの代表Z値よりも視点に近いことを示す場合に、当該画素ブロックの代表Z値を前記最遠方Z値により更新し、
    前記外包ボリュームが描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中で、前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点に近いことを示すものが1つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定することを特徴とするオクルージョンカリング方法。
  4. 前記外包ボリュームが描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のZ値の内、視点に対して最も手前にあることを示すZ値が前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点から遠いことを示す場合に、当該オブジェクトを描画対象から外すことを特徴とする請求項3に記載のオクルージョンカリング方法。
  5. 前記外包ボリュームが描画される画素ブロック内の画素単位のZ値を前記縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較する際、当該画素ブロック内にある前記外包ボリュームのポリゴンの頂点に位置する画素のZ値、前記ポリゴンの辺と当該画素ブロックの境界線の交点に位置する画素のZ値、および当該画素ブロックの四隅点の内、当該ポリゴンに内包される隅点に位置する画素のZ値を前記代表Z値との比較対象とすることを特徴とする請求項4に記載のオクルージョンカリング方法。
  6. 複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、
    前記複数のオブジェクトの奥行き方向の位置関係を判定するために、画素単位で視点からの奥行きを示すZ値を格納したZバッファを設け、
    描画される可能性があるか否かを判定すべきオブジェクトに対して、前記視点から見て当該オブジェクトの前面に位置して当該オブジェクトを背後に隠す前面板と、前記視点から見て当該オブジェクトの背面に位置して当該オブジェクトの背後に隠れる背面板とを設け、
    前記背面板が描画される画素のZ値を前記Zバッファに格納された対応する画素のZ値と比較し、前記背面板の描画画素のZ値が前記Zバッファの対応画素のZ値よりも視点に近いことを示す場合に、前記Zバッファの対応画素のZ値を前記背面板の描画画素のZ値により更新し、
    前記前面板が描画される少なくとも1つの画素について、前記前面板の描画画素のZ値が前記Zバッファに格納された対応する画素のZ値よりも視点に近いことを示すことが判明した場合には、当該オブジェクトを描画される可能性があると判定することを特徴とするオクルージョンカリング方法。
  7. 前記背面板の描画画素のZ値を前記Zバッファに格納された対応する画素のZ値と比較し、前記背面板のすべての描画画素のZ値が前記Zバッファの対応画素のZ値よりも視点から遠いことを示す場合に、当該オブジェクトを描画対象から外すことを特徴とする請求項6に記載のオクルージョンカリング方法。
  8. 複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法であって、
    前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Z値を格納した縮小Zバッファを設け、
    描画される可能性があるか否かを判定すべきオブジェクトに対して前記視点から見て前面に位置して当該オブジェクトを背後に隠す前面板と、当該オブジェクトに対して前記視点から見て背面に位置して当該オブジェクトの背後に隠れる背面板とを設け、
    前記背面板が描画される画素ブロック内の画素単位のZ値を前記縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較し、当該画素ブロック内の画素単位のZ値の内、視点から最も遠方にあることを示す最遠方Z値が当該画素ブロックの代表Z値よりも視点に近いことを示す場合に、当該画素ブロックの代表Z値を前記最遠方Z値により更新し、
    前記前面板が描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中で、前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点に近いことを示すものが1つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定することを特徴とするオクルージョンカリング方法。
  9. 前記前面板が描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のZ値の内、視点に対して最も手前にあることを示すZ値が前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点から遠いことを示す場合に、当該オブジェクトを描画対象から外すことを特徴とする請求項8に記載のオクルージョンカリング方法。
  10. 複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングを行う描画処理装置であって、
    前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Z値を格納した縮小Zバッファと、
    描画される可能性があるか否かを判定すべきオブジェクトを内側に包含する外包ボリュームを生成する外包ボリューム生成部と、
    当該オブジェクトの内側に包含される内包ボリュームを生成する内包ボリューム生成部と、
    前記内包ボリュームが描画される画素ブロック内の画素単位のZ値を前記縮小Zバッファに格納された対応する画素ブロックの代表Z値と比較し、当該画素ブロック内の画素単位のZ値の内、視点から最も遠方にあることを示す最遠方Z値が当該画素ブロックの代表Z値よりも視点に近いことを示す場合に、当該画素ブロックの代表Z値を前記最遠方Z値により更新する更新部と、
    前記外包ボリュームが描画される少なくとも1つの画素ブロックについて、当該画素ブロック内の画素単位のZ値の中で、前記縮小Zバッファに格納された対応する画素ブロック単位の代表Z値よりも視点に近いことを示すものが1つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定する判定部とを含むことを特徴とする描画処理装置。
JP2006141472A 2006-05-22 2006-05-22 オクルージョンカリング方法および描画処理装置 Active JP4116648B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006141472A JP4116648B2 (ja) 2006-05-22 2006-05-22 オクルージョンカリング方法および描画処理装置
US11/741,981 US7948487B2 (en) 2006-05-22 2007-04-30 Occlusion culling method and rendering processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006141472A JP4116648B2 (ja) 2006-05-22 2006-05-22 オクルージョンカリング方法および描画処理装置

Publications (2)

Publication Number Publication Date
JP2007310797A true JP2007310797A (ja) 2007-11-29
JP4116648B2 JP4116648B2 (ja) 2008-07-09

Family

ID=38711551

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006141472A Active JP4116648B2 (ja) 2006-05-22 2006-05-22 オクルージョンカリング方法および描画処理装置

Country Status (2)

Country Link
US (1) US7948487B2 (ja)
JP (1) JP4116648B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011510396A (ja) * 2008-01-23 2011-03-31 インテル コーポレイション グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト
JP2012155610A (ja) * 2011-01-27 2012-08-16 Fujitsu Ltd 描画装置および方法
JP2021056679A (ja) * 2019-09-27 2021-04-08 Kddi株式会社 画像処理装置、方法及びプログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007048857A1 (de) * 2007-10-11 2009-04-16 Robert Bosch Gmbh Verfahren zur Erzeugung und/oder Aktualisierung von Texturen von Hintergrundobjektmodellen, Videoüberwachungssystem zur Durchführung des Verfahrens sowie Computerprogramm
JP4947376B2 (ja) * 2007-12-26 2012-06-06 アイシン・エィ・ダブリュ株式会社 3次元データ処理装置、3次元画像生成装置、ナビゲーション装置及び3次元データ処理プログラム
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
WO2012177282A1 (en) * 2011-06-23 2012-12-27 Intel Corporation Stochastic rasterization with selective culling
US9311749B2 (en) 2012-12-07 2016-04-12 Donya Labs Ab Method for forming an optimized polygon based shell mesh
CN103871095B (zh) 2012-12-17 2018-07-17 Arm有限公司 图形处理系统中的隐藏面消除
KR102116708B1 (ko) 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
US9934604B2 (en) * 2013-12-27 2018-04-03 Intel Corporation Culling using masked depths for MSAA
US10733695B2 (en) * 2016-09-16 2020-08-04 Intel Corporation Priming hierarchical depth logic within a graphics processor
TWI657691B (zh) * 2017-05-24 2019-04-21 鈺立微電子股份有限公司 矯正原始立體掃描結果的錯誤法向量的裝置及其相關方法
CN113797531A (zh) * 2021-08-30 2021-12-17 网易(杭州)网络有限公司 遮挡剔除实现方法、装置、计算机设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574835A (en) * 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US6130670A (en) * 1997-02-20 2000-10-10 Netscape Communications Corporation Method and apparatus for providing simple generalized conservative visibility
US6456285B2 (en) * 1998-05-06 2002-09-24 Microsoft Corporation Occlusion culling for complex transparent scenes in computer generated graphics
US7023437B1 (en) * 1998-07-22 2006-04-04 Nvidia Corporation System and method for accelerating graphics processing using a post-geometry data stream during multiple-pass rendering
US6720964B1 (en) * 1998-08-27 2004-04-13 Ati International Srl Method and apparatus for processing portions of primitives that are being rendered
AU2002245076A1 (en) * 2000-12-06 2002-07-16 Sun Microsystems, Inc. Using ancillary geometry for visibility determination
US7450120B1 (en) * 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011510396A (ja) * 2008-01-23 2011-03-31 インテル コーポレイション グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト
JP2012252725A (ja) * 2008-01-23 2012-12-20 Intel Corp グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト
US9947130B2 (en) 2008-01-23 2018-04-17 Intel Corporation Method, apparatus, and computer program product for improved graphics performance
US10373370B2 (en) 2008-01-23 2019-08-06 Intel Corporation Method, apparatus, and computer program product for improved graphics performance
US11222462B2 (en) 2008-01-23 2022-01-11 Intel Corporation Method, apparatus, and computer program product for improved graphics performance
US11361498B2 (en) 2008-01-23 2022-06-14 Intel Corporation Method, apparatus, and computer program product for improved graphics performance
JP2012155610A (ja) * 2011-01-27 2012-08-16 Fujitsu Ltd 描画装置および方法
JP2021056679A (ja) * 2019-09-27 2021-04-08 Kddi株式会社 画像処理装置、方法及びプログラム
JP7197451B2 (ja) 2019-09-27 2022-12-27 Kddi株式会社 画像処理装置、方法及びプログラム

Also Published As

Publication number Publication date
US7948487B2 (en) 2011-05-24
JP4116648B2 (ja) 2008-07-09
US20070268291A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
JP4116648B2 (ja) オクルージョンカリング方法および描画処理装置
JP4142065B2 (ja) 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法
US20230351678A1 (en) Hidden culling in tile-based computer generated images
US10957082B2 (en) Method of and apparatus for processing graphics
US10438396B2 (en) Method for efficient construction of high resolution display buffers
KR100866573B1 (ko) 가시성 맵을 이용한 점-기반 렌더링 방법
TWI581209B (zh) 景深消隱方法、使用景深消隱的三維圖形處理方法及其裝置
US20170372509A1 (en) Culling objects from a 3-d graphics pipeline using hierarchical z buffers
US10388063B2 (en) Variable rate shading based on temporal reprojection
KR102442488B1 (ko) 그래픽 처리 시스템 및 그래픽 프로세서
JP4047421B2 (ja) ユーザ定義によるルームおよびウィンドウを用いた効率的レンダリング方法および装置
JP5004650B2 (ja) グラフィックスプロセッサ、描画処理装置および描画処理方法
JP5864474B2 (ja) 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
EP3876205A1 (en) Image generation system and method
US20210104088A1 (en) Method for efficient construction of high resolution display buffers
US11908069B2 (en) Graphics processing
US20220319091A1 (en) Post-depth visibility collection with two level binning
Wang et al. Geometry shadow maps
Buchetics Real-time Shadows in Computergraphics
KR20140070316A (ko) 3차원 그래픽스 렌더링 시스템에서 프리미티브 처리 장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080417

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

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4116648

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

Year of fee payment: 3

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140425

Year of fee payment: 6

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