JP4902748B2 - 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム - Google Patents

階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム Download PDF

Info

Publication number
JP4902748B2
JP4902748B2 JP2009540471A JP2009540471A JP4902748B2 JP 4902748 B2 JP4902748 B2 JP 4902748B2 JP 2009540471 A JP2009540471 A JP 2009540471A JP 2009540471 A JP2009540471 A JP 2009540471A JP 4902748 B2 JP4902748 B2 JP 4902748B2
Authority
JP
Japan
Prior art keywords
shadow
volume
polygon
triangle
light source
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
JP2009540471A
Other languages
English (en)
Other versions
JP2010512582A (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.)
Nvidia ARC GmbH
Original Assignee
Mental Images GmbH
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 Mental Images GmbH filed Critical Mental Images GmbH
Publication of JP2010512582A publication Critical patent/JP2010512582A/ja
Application granted granted Critical
Publication of JP4902748B2 publication Critical patent/JP4902748B2/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

Landscapes

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

Description

関連出願への相互参照
本願は、2006年12月8日に出願された米国仮特許出願第60/869,222号に基づく優先権を主張しており、この米国仮特許出願の明細書の記載は、そのままここに援用される。
参照による援用
共に2006年6月23日に出願され、共に「Real−Time Precision Ray Tracing」と題する同一人所有の米国特許出願第11/474,517号及びPCT特許出願第PCT/US2006/0024631号(それぞれ、代理人管理番号MENT-101-US及びMENT-101-PCT)の明細書の記載も共にここにそのまま援用される。
背景技術として、次の米国特許及び公開特許出願もここに援用され、それら明細書の記載もここにそのまま援用される。
VIA Technologies, Inc.に譲渡された米国特許第7,030,878号
Autodesk Canada, Inc.に譲渡された米国特許第6,525,730号
Ferguson氏等の米国特許出願第2006/0158450号
Xu氏等の米国特許出願公開第2006/0038822号及び第2005/206647号
Hybrid Graphics, Ltd.に譲渡された米国特許出願公開第2005/0134588号、及び
Discreet Logic, Inc.(現在、Autodesk)に譲渡された米国特許出願公開第2002/0089501号
本発明は、一般的に、コンピューティンググラフィックに係り、より特定すると、階層型オクルージョンカリングを使用したシャドウボリュームの効率的で且つ健全な生成及び処理に適した方法、システム、配置及びコンピュータプログラム製品に係る。
コンピュータグラフィックにおいて視覚的に納得のいく画像を達成するための重要な属性として、3次元(3D)シーンにおける影の表示がある。ハードウエアレンダリング、即ち、グラフィックハードウエアを使用した基本要素のラスタリゼーションの場合には、2つの通常の標準方法、即ち、シャドウマッピング及びステンシルシャドウボリュームを使用することができる。(例えば、背景技術としてここに援用し前述したような特許出願及び特許のうちのいくつかを参照)。これらの技法の各々は、利点を有する一方、欠点もある。これらの中で重要なことは、シャドウマップは、比較的に容易にソフトな影を生成できるが、特に大きなシーンにおいてエイリアシングの問題を被ることである。シャドウボリュームは、ピクセル正確度でもってレンダリングすることができるが、完全なポイントライト又は指向性ライトでない光源を取り扱うのがより難しく、又、特定の品質のメッシュが必要とされている。
オクルーディングジオメトリとして作用することのできるメッシュに関してシャドウボリュームをより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してシャドウボリューム技法を加速できるような新しい方法、システム、配置及びコンピュータプログラム製品を提供することが望まれている。
本発明によれば、コンピュータグラフィックシステムにおいて、そのようなコンピュータグラフィックシステムにおけるオクルーディングジオメトリとして作用することのできるメッシュに関して、シャドウボリュームをより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してその技法を加速できるような新しい方法、システム、配置及びコンピュータプログラム製品が提供される。
本発明によれば、人間が知覚できるディスプレイ要素に表示するため画像をレンダリングするように適応されたタイプのコンピュータグラフィックシステムにおいて動作できる方法、装置及びコンピュータプログラム製品が提供され、上記レンダリングは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、上記表示することは、シミュレート光源に関して表示される(又は後に表示するため記憶される)、3次元(3D)シーンにおける影を表示することを含む。
一態様において、本発明の方法、装置及びコンピュータプログラム製品は、コンピュータグラフィックシステムにおいて動作するように適応され、シャドウボリューム生成方法を実行することを含み、上記シャドウボリューム生成方法は、画像レンダリングにおいて使用される各非縮退三角形に対して次の態様を含む。
(1)光源に対する三角形平面上の任意の点からの表面法線と方向との間のドット積として三角形のパラメータdを計算すること。
(2)シャドウキャップを生成すること。上記シャドウキャップの生成は、
(a)必要ならば、上記シャドウボリュームのニアキャップ(near cap)を生成するため上記三角形をレンダリングし、
(b)必要ならば、上記シャドウボリュームのファーキャップ(far cap)をレンダリングするため、三角形頂点を無限に延長してそれらの配向を反転させ、
(c)もし、dが負であるならば、シャドウボリューム面を正しい順序とするため反転頂点配向でもって(a)及び(b)を行う、
ことを含む。そして、
(3)処理される三角形のdパラメータが隣接する三角形に対するdパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータdの正又は負の符号を再び使用すること。
本発明の別の態様は、コンピュータグラフィックシステムに使用するように適応され、特に、バウンディングボリューム階層型(BVH)トラバーサル方法を実行するように適応された方法、装置及びコンピュータプログラム製品を含み、上記BVH方法は、
(1)全シーンを保持するルートノードで開始し、繰り返しトラバースすること、
(2)現在ノードのシャドウボリュームを生成し、上記生成は、包囲ジオメトリの実際のボリュームの代わりに、上記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むこと、
(3)ビューイングフラスタムと交差するかについて上記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、上記子を無視するか、又は繰り返しトラバースすること、及び
(4)リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを上記ステンシルバッファへとレンダリングすること。
を含む。
本発明の更に別の態様では、シャドウボリューム生成方法は、更に、シミュレート光源に関してポリゴンメッシュ表現の選択処理を含み、ここで、上記ポリゴンメッシュ表現によって表現される幾つかの表面は、上記シミュレート光源の方に向かって面しており(「トワード表面」)、上記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており(「アウエイ表面」)、多数のエッジが、上記トワード表面及びアウエイ表面により共有され又は共通とされており、上記選択処理は、
(1)先ず、隣接するポリゴンを有していないエッジを押し出すこと。
(2)次に、ありうるシルエットエッジを押し出して上記シャドウキャップの生成を可能とするように、上記シミュレート光源に面したポリゴン表面(「トワード表面」)及び上記シミュレート光源から背けられているポリゴン表面(「アウエイ表面」)を含めて上記メッシュにおける全てのポリゴンを考慮すること。
を含み、上記メッシュにおける全てのポリゴンを考慮することは、
(a)第1のセットのシャドウボリュームを生成するため上記トワード表面を押し出し、
(b)第2のセットのシャドウボリュームを生成するため上記アウエイ表面を押し出し、そして、
(c)上記全メッシュ表現に対する正しい合成シャドウボリュームを形成するため上記第1のセットのシャドウボリュームと上記第2のセットのシャドウボリュームとを組み合わせる、
ことを含み、ここで、上記トワード表面及びアウエイ表面に共通なエッジは、2回押し出されており、その結果生ずるサイドは、光向きポリゴン及び非光向きポリゴンの両者のシャドウボリュームを閉じている。
本発明の別の態様は、前述した選択処理を適用することにより、縮退三角形を取り扱うことを含む。
本発明のこれらの及び他の態様、実施、実施形態及び実施例について、添付図面に関連して読まれるべき以下の詳細な説明において、より詳細に説明する。
典型的なデジタル処理装置内で実施される、本発明の一態様によるシャドウボリューム生成モジュール及びバウンディングボリューム階層型(BVH)トラバーサルモジュールの概略ブロック図を示す。 本発明の別の態様によるシャドウボリューム生成のための技法のフローチャートを示す。 シャドウボリュームの生成を加速するようにバウンディングボリューム階層を使用するための本発明の更に別の態様による技法のフローチャートを示す。 シャドウボリュームをラスタライズするためのzパス及びzフェイル技法を例示する一連の図である。 シャドウボリュームをラスタライズするためのzパス及びzフェイル技法を例示する一連の図である。 シャドウボリュームをラスタライズするためのzパス及びzフェイル技法を例示する一連の図である。 本発明の別の態様による図2に例示した技法の拡張のフローチャートを示す。 図5に示した技法を例示する一連の図である。 図5に示した技法を例示する一連の図である。 図5に示した技法を例示する一連の図である。 隣接する三角形を有する三角形の頂点配列を例示する図である。 本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのGLSL実施のソースコードリストを示す。 本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのGLSL実施のソースコードリストを示す。 本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのGLSL実施のソースコードリストを示す。 本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。 本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。 本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。 本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。 本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。 本発明の前述した態様により影がレンダリングされている複雑なツリーメッシュを含むシティーシーンのクローズアップ図を示す。 図10Aに示したシーンのズームアウト図を示す。 本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。 本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。 本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。
本発明の種々な態様による技法について、添付図面に関連して、以下に詳細に説明する。当業者であれば、種々な事項を付加したり除いたりし、又、本発明の他の変形及び実施が可能であり、これらは、本発明の精神及び範囲内に入るものであることは、理解されよう。
以下に示されるように、ASICの如き種々な形の集積回路又は半導体素子は、前述したシステム及び技法を実施するため、ここに説明する本発明の教示を使用して、そのような仕方にて実施することができる。図1は、適当なデジタル処理装置30内にて実施される本発明によるシャドウボリューム生成モジュール10及びバウンディングボリューム階層型(BVH)トラバーサルモジュール20の概略ブロック図を示している。本発明の前述の態様が実施される適当なデジタル処理環境の実施例は、以下のセクション3.0にて説明され、そのセクションに関する図に例示されている。
本発明の以下の説明は、次のようなセクションにて編集されている。
1.0 序論
1.1 シャドウボリューム生成技法
1.2 バウンディングボリューム階層型トラバーサル
2.1 リアリティーサーバーインプリメンテーション
2.2 シャドウボリュームのオーバービュー
2.2.1 zパス及びzフェイル
2.2.2 ボリューム生成
2.2.2.1 レンダリングステップ
2.2.2.2 無限でのレンダリング
2.2.3 性能及び最適化
2.3 リアリティーサーバーインプリメンテーション
2.3.1 低品質メッシュに対するロバストシャドウ
2.3.1.1 変更ボリューム生成技法
2.3.1.2 性能コスト
2.3.2 ジオメトリシェーダーでのダイナミックボリューム生成
2.3.3 階層型オクルージョンカリングでの性能改善
2.4 リアリティーサーバーインプリメンテーション:結論
3.0 本発明を実施することのできるデジタル処理環境
1.0 序論
オクルーディングジオメトリとして作用することのできるメッシュに関して、シャドウボリューム技法をより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してその技法を加速できるような技法について説明する。従って、ここで説明する技法は、シャドウボリューム生成時で不正確なメッシュの処理ができるようにする技法によって与えられるロバストネス及び一時的コヒーレンスを考慮した新しい階層型非同期オクルージョンクエリー技法によって与えられる性能の点で、以前から知られている技法に優るものである。
「シャドウボリューム」は、所定の光源の光線が達しない物体の背後の体積である。この体積の境界は、光の方向にオクルーダーのシルエットエッジを押し出し、その結果生ずる四角形を描写することにより、レンダリングすることができる。グラフィックハードウエアオプションが描写中に正しくセットアップされる場合には、ステンシルバッファデータが得られ、この時、これらデータは、シェーディング中に非影ピクセルから影ピクセルを分離するのに容易に使用できる。
「ステンシルバッファ」は、フレームバッファと同じサイズを有し且つ特定ビット深さを有したメモリのブロックである。現在のグラフィックハードウエアでは、ステンシルバッファは、典型的には、8ビットの解像度で使用できる。基本要素をレンダリングする時、グラフィックハードウエアは、その深さテストがパスするかフェイルするかに依存し且つそのレンダリングされる基本要素が前向きか後向きかに依存して、ステンシルバッファの値に対する特定のオペレーション(増大、減少、維持、零等)を行うようにセットアップすることができる。ステンシルテストを行う場合、例えば、特定のステンシル値を有するピクセルのみをレンダリングするように、ステンシルバッファの値を使用することができる。
シャドウボリュームを、カラー及び深さバッファに対してはレンダリングしないで、ステンシルバッファに対してのみレンダリングした後、ステンシルバッファは、影領域に対する零及び非影領域に対する零とは異なるエントリーを含む。シャドウボリュームをレンダリングする前に、ステンシルバッファは、零へと初期化されねばならず、深さバッファは、そのシーンの深さ値を含まなければならない。多くの場合において、シャドウボリュームは、無限まで延長され、即ち、同次座標においてw=0である。従って、グラフィックハードウエアは、無限平面におけるジオメトリがファークリッピング平面によってクリップされないように、セットアップされる。もし、このオプションが所定のグラフィックカードにて使用できないならば、深さバッファ正確度を犠牲にすれば、特殊投影マトリックスを使用して、同じ効果を達成することができる。
ステンシルバッファが深さパス又は深さフェイルにて変更されているかに依存して、ある場合には、シャドウボリュームの「キャップ」をレンダリングする必要がある。即ち、ニアキャップ(near cap)に対するオクルーダーの実際面並びにファーキャップ(far cap)に対する無限平面上に投影された面を描写しなければならない。キャップ及び/又はシルエット等の減衰光、ビューフラスタムカリングに対してボリュームの範囲を限定するが如き、描写すべきシャドウボリュームの数を減少させ、又は、必要とされるピクセルフィルレートの量を減少させるため、幾つかのよく知られた標準技法を使用することができる。
入力ジオメトリメッシュをマニュアルにて編集し準備することが可能であるような、ゲームの如きアプリケーションにおいては、従来のシャドウボリューム技法が使用される。このような分野では、オクルーダーを、標準ボリューム生成方法が良好に適合するような閉じた良好な挙動を示す三角形メッシュからなるものに限定することが可能である。
1.1 シャドウボリューム生成技法
縮退面、ランダム頂点配向、非クローズドメッシュ、及び交差面を含めて、オクルーダーとして任意の三角形データを取り扱うことのできるシャドウボリューム生成のための技法について、ここで、説明する。このような能力は、例えば、前述したような特性を有するシーンを生ずる傾向にあるCDAシステムにより生成されるデータを取り扱う場合に、重要である。図2は、本発明の一態様による技法100のフローチャートを示している。ここで説明する技法は、次のように進む。
ボックス101−画像レンダリングに使用される三角形に対して
ボックス102−表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータdを計算する
ボックス103−シャドウキャップを生成する:
103a−必要ならば、シャドウボリュームのニアキャップを生成するため、元の三角形をレンダリングする
103b−必要ならば、ファーキャップをレンダリングするため、頂点を無限へと延長し、それらの配向を反転する
(もし、dが負であるならば、シャドウボリューム面を正しい順序とするため反転された頂点配向でもってステップ103a及び103bを行う)
ボックス104−現在三角形のdパラメータが隣接する三角形に対するものとは異なる符号を有するような三角形の各エッジを無限へと押し出し、その結果生ずる四角形をレンダリングし、隣接する三角形を有しないエッジに対して同じことを行う。再び、頂点順序を調整するためdの符号を考慮する。
不必要なシャドウボリュームの数を減少させるため、良好に挙動するメッシュを検出し、そのシャドウボリュームを生成するための標準の技法を使用することができる。従来の技法は、典型的には、シルエットを押し出す時、その光に面したポリゴンのみを考慮しており、従って、例えば、非クローズドメッシュに対しては上手く働かない。
ダイナミックシャドウボリューム生成をスピードアップするため、最近のグラフィックハードウエアにて使用できるジオメトリシェーダーを使用することができる。ジオメトリシェーダーによれば、ジオメトリ基本要素をシェーダープログラムにて生成することができるので、GPUにおいて全体的に、前述の技法並びに他のシャドウボリューム生成技法の実施をすることができる。
縮退三角形の場合に対処できるように、このような技法を増強することについては、セクション2.3.1.1において以下に説明する。
1.2 バウンディングボリューム階層型トラバーサル
特に、アーキテクチャーモデル又はシティーシーンの如き高度に幾何学的複雑性を有するシーンに対して、シャドウボリューム技法の使用を加速するための技法について、以下説明する。
図3は、本発明のここで説明する態様による技法120のフローチャートを示している。ここで説明する技法の基本的なアプローチは、レンダリングする必要のあるボリュームの数を削減するため、シャドウボリュームに関する階層型ハードウエア加速オクルージョンカリングを使用することである。シーンにおけるオブジェクト(又はサブオブジェクト)の階層型データ構造として、バウンディングボリューム階層(BVH)が使用される。シャドウボリュームを描写するため、各光源に対してツリー構造が次のようにトラバースされる。
ボックス121−全シーンを保持するルートノードで開始し、繰り返しトラバースする。
ボックス122−現在ノードのシャドウボリュームを生成する。即ち、包囲ジオメトリの実際のボリュームの代わりに、現在ノードのバウンディングボリュームのシャドウボリュームを生成する。
ボックス123−ビューイングフラスタムとの交差について生成されたボリュームをテストする。もし、それが交差しないならば、このノードの子をスキップする。さもなければ、ステンシルバッファへ書き込むことなく、ボリュームジオメトリに関するオクルージョンクエリーを行う。これは、グラフィックパイプラインを停止しないように非同期的になされ、即ち、オクルージョンクエリーが発せられ、BVHトラバーサルがスタックの異なるノードでもって続けられる。ある後のポイントで、そのクエリー結果が使用できるとき、ツリートラバーサルは、現在ノードでもって続けることができる。そのクエリー結果に依存して、その子を無視するか、又は繰り返しトラバースする
ボックス124−リーフノードに達し、そのノードシャドウボリュームが可視であると見出されるとき、その実際のジオメトリシャドウボリュームをステンシルバッファへとレンダリングする
BVHバウンディングボリュームは、そのノードに含まれるオブジェクトの全てを完全に包囲するので、そのバウンディングボリュームのシャドウボリューム自体が可視であるならば、そのノードにおけるオブジェクトは、可視シャドウボリュームを投げ掛けるだけである。(1)光源がノードバウンディングボリュームの内側にある及び(2)カメラがバウンディングボリュームシャドウの内側にある、というような特殊な場合は、このようなノードの子で直接に続けることにより、取り扱われる。このようなアプローチによれば、多くのシーンに対してレンダリングされるシャドウボリュームの数が非常に劇的に減少される。
オクルージョンクエリーは、非同期的になされるとしても、取るに足らないものではないので、前述の技法は、トラバーサル中に一時的コヒーレンスを考慮することにより、増強することができる。これにより、2番目以降のフレームを、最初のフレームに比べて、相当により速くレンダリングすることが可能となる。一時的コヒーレンスは、光源、オブジェクト及びビューアーが連続するフレームの間では僅かにしか移動しないとの仮定に基づくものである。そして、この仮定は、ほとんどの3Dアプリケーションにおいては通常成り立つものである。この技法は、前述したBVHトラバーサル技法への拡張として、次のように実施される。通常の情報(バウンディングボリューム、子ポインター)の他に、各BVHノードは、コヒーレンシー情報、即ち、最後にチェックされたときにそのノードが可視であったかの情報及びその情報が最後に更新されたのは何時かの情報、をも記憶する。それから、この情報は、以前に可視であったノードに対するハードウエアオクルージョンクエリーをスキップするのに使用される。この技法は、他の基準で容易に拡張することができる。単一のBVHでもって複数の光源を取り扱うため、各ノードは、コヒーレンシー情報変数のセットを、各光源に対して1つ含む。
ここで説明する加速技法の更に別の態様については、セクション2.3.3において以下に説明する。
2.1 リアリティーサーバーインプリメンテーション
前述した技法について、3Dウエブサービス及び他のアプリケーションを生成して配置するためのプラットフォームである、MENTAL IMAGES GMBHにより市販されているリアリティーサーバーに関して、以下より詳細に考察する。
リアリティーサーバーにおけるハードウエアレンダーラーは、多くの種々なシーンを高い性能及び品質でもって表示することができることが必要とされている。このような種類のもっともらしい画像を達成するための重要な点は、リアルなシャドウレンダリングである。
リアリティーサーバーは、2つの最も普通のシャドウレンダリング技法、即ち、シャドウマッピング及びシャドウボリュームを支援する。前述したように、各技法は、それ自身の利点と欠点とを有している。シャドウマップが使用されるときには、ソフトなシャドウを生成するのが比較的に容易であるが、それらシャドウは、特に、大きなシーンにおいてエイリアシング問題を被る。一方、シャドウボリュームは、ピクセル正確度でもってレンダリングされるが、完全にポイント光又は指向性光でない光源を取り扱うのがより難しい。
リアリティーサーバーにおいてロバストステンシルシャドウレンダリングがどのように実施されるか及びこの技法を加速するのに現在のハードウエア特徴がどのように使用されるかについて、以下に説明する。
2.2 シャドウボリュームのオーバービュー
シャドウボリュームでもってシャドウをレンダリングする概念は、ある間おおよそのものであったが、ロバスト技法及び増強型グラフィックハードウエア支援の開発により比較的に最近になって実施可能となってきたものである。このアプローチの基本原理について、以下に簡単に説明する。
2.2.1 zパス及びzフェイル
図4Aから図4Cは、シャドウボリュームの背後にある主概念を例示する一連の図である。図4Aは、オクルーダー202が光源204と受け表面206との間に位置しているようなシーン200を例示している。受け表面の一部分208は、カメラ212の可視フラスタム210内にある。受け表面206のこの可視部分は、光領域214及び影領域216を含む。
オクルーダー202の実際のシャドウボリュームは、遮蔽区域220、すなわち、光源204から見えないオクルーダー202の背後の全ての点に対応している。照明無しで又は周囲照明のみで、そのシャドウに交差するすべてのジオメトリをレンダリングするのが望ましいことは明らかであるが、そのボリュームの外側のすべては、光源からの光を完全に受けてしまう。
図4Aに例示されるように、シーンジオメトリに向かって投げ掛けられたカメラに原点を有するレイについて考察する。シャドウボリュームとのこのレイの交差を計数する。シャドウボリュームに入る毎に、カウンターが増大され、出て行く毎に、カウンターが減少される。影にあるジオメトリの部分についてのみ、その結果は、零とは異なるカウンター値となる。この概念は、シャドウボリュームの背後の重要な原理である。もし、各ピクセルについてカウンター値が使用できるならば、影区域は、非影区域から分離されており、この情報を利用するためマルチパスレンダリング技法を使用することができる。
カウンター値を得るため、「リアル」レイトレーシングを行う必要はない。現在使用できるグラフィックハードウエアにおいて典型的に利用できるステンシル機能に頼ることができる。先ず、ステンシルバッファが、それを零にセットすることにより、クリアされる。それから、シャドウボリュームの境界が、ステンシルバッファへとレンダリングされ、カラー及び深さバッファへはレンダリングされない。ハードウエアは、ステンシルバッファにおける値が前向きポリゴンに関しては増大され、後向きポリゴンに関しては減少されるように、セットアップされる。これらの増大動作及び減少動作は、共に、「ラップアラウンド」にセットされる。従って、零まで減少しても、最大ステンシル値まで増大しても、飽和とはならない。
このパスの結果として、ステンシルバッファは、各ピクセルについての交差カウンター値を含み、これら交差カウンター値は、全ての非影ピクセルでは、零であり、全ての影ピクセルでは、非零である。現在のグラフィックカードでは、ボリュームレンダリングは、the glStencilOpSeparate()機能を有するオープンGLにて制御される2−サイドステンシル書込みを使用することにより、単一レンダリングパスにて行われる。シャドウボリュームが描写される前に、zバッファにシーンの深さ値を充填しなければならず、これは、周囲パスがとにかくレンダリングされなければならないので、通常そうである。
ステンシル書込みは、深さテストがパスする全てのフラグメントに対して行われなければならないことに注意されたい。従って、ここで説明した方法は、「zパス」と称される。zパスは、簡単な技法であるが、それには、図4Bに例示されるような問題がある。図4Bは、図4Aのオクルーダー202、光源204及び受け表面206を示している。しかしながら、カメラ212’の位置は、ここではシャドウボリューム220内に位置するように変更されている。カメラ212’の位置を変えたことにより、光部分214’及び影部分216’を含む受け表面206の見える部分208’、ビューイングフラスタム210’の位置が変わってくる。このzパス技法は、正しくない結果を生じてしまう。何故ならば、シャドウボリューム220への入口点が無いからである。従って、もし、カメラと受け表面との間にシャドウボリューム出口点が無いならば、カウンターは、零のままであり、影とされるべき領域が、その代わりに、光領域とされてしまう。もし、カメラと受け表面との間にシャドウボリューム出口点があるならば、カウンターは、非零ボリュームへと減ぜられ、光領域とされるべき領域が、その代わりに、影とされてしまう。
次のような解決法が開発されている。即ち、実際のジオメトリの前でのレイボリューム交差を計数する代わりに、図4Cに示されるように、その背後での交差を計数することができる。深さテストが失敗するならば、ステンシルバッファへの書き込みを行い、増大及び減少動作を反転させるように、グラフィックハードウエアをセットアップするだけでよい。この技法は、一般的に、「zフェイル」と称される。
zフェイルは、どのような場合にも働くが、zパスと違って、ボリュームキャップが正しくレンダリングされようにしなければならず、即ちボリュームがその前端でも後端でも閉じられなければならない。図4Cに例示されるように、バックキャップの欠落により、正しくない結果が生じてしまう。
zパスの場合、フロントキャップは、描写される必要はない。何故ならば、深さテストは失敗し、ステンシル書込みがどのようにも行われないからである。バックキャップは、省略することができる。何故ならば、それは、全てのオブジェクトの背後で無限の所に置かれており、従って、どの深さテストも同様に失敗に終わるからである。
2.2.2 ボリューム生成
シャドウボリュームを生成するための本発明の一態様による技法については、セクション1.1にて前述している。前述した技法は、典型的には、オブジェクトが穴、クラック又は自己交差を有することができないことを意味する、閉じた2−マニホルドポリゴンメッシュに対してのみ正しく働く。このような制約を克服する本発明の別の態様による技法については、セクション2.3.1.1において以下に説明する。
2.2.2.1 レンダリングステップ
セクション1.1にて前述し、図2に例示されているように、シャドウボリュームのレンダリングは、次の3つのステップに分けられる。
1.フロントキャップのレンダリング
2.バックキャップのレンダリング
3.オブジェクトの押し出しシルエット、即ち、ボリュームのサイドのレンダリング
フロントキャップの場合、モデルにおける全てのポリゴンは、ループオーバーされており、光に面するものがレンダリングされる。ポリゴンが光に面しているか否かは、表面法線と光の方向との間のドット積の符号をテストすることにより、効率的にチェックすることができる。バックキャップの場合、再び同じポリゴンは、すべての頂点が光の方向において無限へと投影された状態で、再度レンダリングされる。この投影方法は、ボリュームサイドに対しても使用され、ここでは、ありうるシルエットエッジは、無限へと押し出されて描写され、四角形となる。ありうるシルエットエッジ、即ち、実際のオクルーダーシルエットの部分であるエッジは、表面法線と光の方向との間のドット積の符号を隣接する面のそれらと比較することにより、見出される。
もし、その符号が異なるならば、そのエッジは、押し出される。非凸オブジェクトの場合、この押し出しにより、シャドウレンダリングを破壊しないようなネステッドシルエットを生ずることができる。更に、全ての場合において、生成された面は、それらの法線がそのシャドウボリュームの外側を指すように配向されていることが重要であり、さもないと、ステンシルバッファにおける値のバランスが崩れてしまう。
2.2.2.2 無限でのレンダリング
無限でのレンダリングは、オープンGLにおける同次座標に固有のものである(及び直接3Dでも同様)。頂点は、位置の代わりに方向を通すことにより、あたかも無限に大きい球へと投影されたかのように、レンダリングすることができる。この場合において、この方向は、光位置からその頂点に向かうベクトルである。同次座標において、方向は、w成分を零にセットすることにより、特定され、一方、位置は、通常、wが1にセットされる。
無限でレンダリングするとき、基本要素がファー平面に対してクリップされてしまうという問題が生ずる。このようなクリッピングに対処するのに都合の良い方法は、オープンGLにおけるNV depth clamp拡張により支援される深さクランピングを使用することである。イネーブルされるとき、ジオメトリは、ファー平面の背後でもレンダリングされ、そこでの最大可能深さ値を生ずる。もし、その拡張が使用できないならば、特殊な投影を使用して、同じ効果を達成することができる。
2.2.3 性能及び最適化
あまり複雑でないシーンの場合、シャドウボリュームは、多くの性能を犠牲にすることができる。従って、多くの最適化が開発されている。zパスは、通常、zフェイルより速く動作することに注意されたい。その主たる理由は、ボリュームキャップをレンダリングする必要がないからである。その上、そのシャドウボリュームのオクルーディングされる部分は、通常、オクルーディングされない部分よりも、スクリーン上にて大きく、これは、zフェイルにより充填レートを消費させてしまう。従って、可能なときにはいつでもzパスを使用し、必要なときのみ、即ち、カメラがシャドウボリュームの内側にあるときのみ、zフェイルへ切り換えるのが好ましい。
zパス及びzフェイルを、レンダーパスにおいて同時に使用することができ、それら2つの間で動的に切り換えるようにするのがよく、これには、カメラがボリュームの内側にあるかのコンサバティブテストが必要となるだけである。フィルレートがシャドウボリュームに対して主たるボトルネックとなることがあり、従って、更なる最適化として、シザーテスト及び深さバウンドを使用してボリュームを制限するボリュームカリングがある。
2.3 リアリティーサーバーインプリメンテーション
ロバストネス及び性能を改善するための本発明の態様による技法について、次に説明する。特に、シャドウボリュームを、リアリティーサーバーの要件に合わせるための技法について、以下に説明する。
2.3.1 低品質メッシュに対するロバストシャドウ
シャドウボリューム技法は、ゲームエンジンが処理しなければならいメッシュに亘ってアーティストが完全に制御するようなゲームの如きアプリケーションにおいて、普通に使用される。従って、オクルーダーを2−マニホルドメッシュであるように限定することができることが多く、これにより、シャドウボリューム生成が簡単化される。しかしながら、リアリティーサーバーは、閉じていない又は交差ジオメトリを有するメッシュの如き低品質のメッシュを正しく取り扱うことができることが必要とされる。この種のメッシュは、CADソフトウエア又は変換ツールにより生成されることが多い。従って、性能を犠牲にし過ぎることなく、アーチファクトの無いシャドウがレンダリングされるメッシュに対する制約を低くすることが望ましい。
2.3.1.1 変更ボリューム生成技法
図5は、前述のボリューム生成技法への変更250のフローチャートを示している。このアプローチにおいては、キャップを描写することに加えて、光に面するポリゴンのエッジが、その対応する隣接ポリゴンがその光に面していないときはいつでも、押し出されている。
非2−マニホルドに対してロバストに動作するため、この技法は、次の2つの仕方にて拡張される。
ボックス251−先ず、隣接するポリゴンを全く有していないエッジが押し出される。この拡張は、非クローズドメッシュに対して必要とされる。非クローズドメッシュの実施例は、例えば、単一三角形のみがオクルーダーである場合である。
ボックス252−次に、ありうるシルエットエッジを押し出し且つキャップを描写するため、光に面するものだけでなく、メッシュにおけるすべてのポリゴンを考慮する。この拡張は、隣接ポリゴンを有する全てのシルエットエッジが、実際に、各接続ポリゴンに対して1回ずつ、2回押し出されることを意味しており、次のことを含む。
(a)シャドウボリュームの第1のセットを生成するため、「トワード」表面を押し出すこと、
(b)シャドウボリュームの第2のセットを生成するため、「アウエイ」表面を押し出すこと、及び
(c)全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの第1のセットと第2のセットとを組み合わせること。ここで、トワード表面及びアウエイ表面に共通のエッジは、2回押し出され、その結果生ずるサイドが、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じる。
これらの拡張は、図6Aから図6Cに例示されている。図6Aは、オープンメッシュから形成されるオクルーダー300の図を示している。このオープンメッシュは、光源310の方に向いた多数の表面302及び光源310から背けられている多数の表面304を含む。このオープンメッシュは、更に、「トワード」表面302及び「アウエイ」表面304の両者によって共有される多数のエッジ306を含む。
図6Bに例示される第1のステップにおいて、シャドウボリューム312の第1のセットが、「トワード」表面302を押し出すことにより、生成される。第2のステップにおいて、シャドウボリューム314の第2のセットが、「アウエイ」表面304を押し出すことにより、生成される。それから、シャドウボリューム312の第1のセット及びシャドウボリューム314の第2のセットは、全メッシュに対する正しいシャドウボリュームを形成するため、組み合わされる。前述したように、エッジ306は、「トワード」表面及び「アウエイ」表面に共有されており、2回押し出されている。
このオープンメッシュ300に対するシャドウボリュームは、正しくレンダリングされる。何故ならば、その「共有」エッジ306が2回押し出されているからである。この結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンのセットの両者のシャドウボリュームを閉じる。
「トワード」表面及び「アウエイ」表面からシャドウボリュームを押し出す順序は、逆にしても良いことに注意されたい。又、「トワード」表面及び「アウエイ」表面の全てを同時に押し出すような適当なハードウエアも開発できよう。
ここで説明している技法は、オブジェクトを、各々の部分が光源に関して前向きのポリゴン又は後向きのポリゴンのみからなるような複数の部分へ分割する技法として理解することができる。それから、各部分について、対応するシャドウボリュームが、互いに背後の複数の別々のオブジェクトと同様に、レンダリングされる。この技法は、自己交差オブジェクトに対しても有効に働く。前のように、全てのシャドウボリュームジオメトリが、正しく、即ち、その法線がそのボリュームから向けられるように、配向されることに注意を払はなければならない。次に、光に面していないポリゴンについても考察するに、これらポリゴンの生成ボリューム面を全て反転する必要がある。
2.3.1.2 性能コスト
この新しい技法は、簡単で効果的であるが、コストが掛かってしまう。もし、例えば、2−マニホルドメッシュがレンダリングされる場合には、非ロバスト技法の動作が2回行われることになる。zフェイルの場合、キャップが、1回でなく、2回レンダリングされ、即ち、前面及び後面に対して行われ、全てのありうるシルエットエッジも2回押し出される。しかしながら、キャップは、一般的には、それほど問題ではない。何故ならば、ほとんどシーンの場合、zフェイルで取り扱われる必要のあるオクルーダーは数個でしかないからである。zパスについて前述したように、どのキャップも描写する必要はない。
より大きな問題は、押し出されるシルエットエッジの数が2倍であるということである。1つの簡単な解決方法は、2つの面に接続されたエッジを1回のみ押し出してレンダリングし、ステンシルバッファにおける値を1の代わりに2だけ増大又は減少するということである。zパスの場合、これにより、この技法のコストを、非ロバスト方法の場合と同じであるまでに下げることができよう。しかしながら、このような機能は、グラフィックハードウエアにおいては支援されず、従って、これらのエッジを2回レンダリングすることを避けることはできない。避けがたい性能ロスを最小とするため、ここで説明する技法は、メッシュが処理ステップにおいて2−マニホルドであるかを検出して、必要な場合にのみロバストボリューム生成を使用する。
又、特に、3つ以上のポリゴンがエッジを共有している場合、及びポリゴンがエッジを共有しているが、異なる頂点ワインディング順序を有する場合において、本インプリメンテーションにより取り扱うことができない場合が依然としてあることに注意されたい。これは、同様に、前処理中に取り扱われ、ここでは、そのような場合は、単一分離ポリゴンへと変換される。
シャドウボリュームと組み合わせて難しいメッシュを扱うことを先ず考えてもよいとしても、既存のステンシルシャドウシステムに本方法を組み合わせることが比較的に簡単であろう。リアリティーサーバーの場合、ロバストシャドウは、それらがある性能を犠牲にしてしまうとしても、全体に必要である。何故ならば、このアプリケーションが取り扱わねばならないメッシュを修正することは、不可能でないとしても、典型的には、難しいからである。
2.3.2 ジオメトリシェーダーでのダイナミックボリューム生成
NVIDIAのGeForce 8クラスのハードウエアによれば、ジオメトリシェーダー(GS)と称される新しいパイプラインステージにおいてGPUでのプログラマブル基本要素生成を行うことができる。ジオメトリシェーダーは、基本要素に関して動作するもので、頂点シェーダー(VS)とフラグメントシェーダー(FS)との間に論理的に置かれる。全基本要素の頂点は、入力パラメータにて使用できる。
この新しい能力は、シャドウボリュームのダイナミック生成に十分に適している。シルエット決定は、楽なタスクではなく、動画シーンの場合フレーム毎にやり直されねばならない。従って、その計算ロードをCPUからGPUへと移すのが好ましい。GPUにおいて全体的にシャドウボリュームの生成を行う前の方法は、典型的には、頂点及びフラグメントシェーダーを使用する複雑な技法を必要としている。ここで、ジオメトリシェーダーは、このような問題に対する「本質的」解決方法を提供する。固定機能パイプラインを再現する基本的ジオメトリシェーダーは、入力基本要素を取り込むだけで、それを再び放出して、この場合において、シャドウのフロントキャップを生成する。それから、付加的な基本要素が、必要に応じて、バックキャップ及び押出しシルエットエッジに対して生成される。セクション2.3.1.1にて前述したのと厳密に同じロバスト技法は、GPUにおいて全体的に実施することができ、こうすることより、ダイナミックシャドウを生成する優れた方法が得られる。
メッシュのシルエットエッジを計算するため、ジオメトリシェーダーは、三角形の隣接情報にアクセスする必要がある。オープンGLにおいては、glBeginに対する新しいGL TRIANGLES ADJACENCY EXTモードを使用して、三角形当たり付加的な頂点を通すことができる。このモードにおいては、三角形を完成するために、3つの代わりに、6つの頂点が必要とされ、それらのうちの3つは、エッジの隣接頂点を特定するものである。図7は、隣接三角形を有する三角形の頂点配列350を例示する図である。この主三角形は、頂点0、2及び4を備える。頂点1、3及び5は、それぞれ、この主三角形の第1のエッジ、第2のエッジ及び第3のエッジを特定している。
入力基本要素タイプを特定することに加えて、GSが生成する基本要素のタイプを特定する必要がある。三角形ストリップが選択され、これにより、単一三角形(キャップに対する)並びに四角形(押出しシルエットエッジに対する)の効率的なレンダリングが可能とされる。放射頂点の最大許容数は、18(2つのキャップに対して3+3とサイドに対する4x3)にセットされる。
図8Aから図8Cは、ボリューム生成ジオメトリシェーダーのGLSLインプリメンテーションのソースコードリスト400aから400cを示している。このコードは、gl PositionInがアイスペースへ変換された頂点の座標を含むと仮定している。この変換は、入力頂点にgl ModelViewMatrixを乗算し、それをgl Positionへ書き込むだけで、VSにおいて行われる。それから、基本要素の全ての頂点が、gl Positioninアレイにて示される。もし、エッジが隣接する三角形を有していないならば、対応する隣接頂点に対してwを零にセットすることにより、これをエンコードする。
この点に向けられている1つの問題は、シャドウボリュームシェーダーにおけるジオメトリと厳密に同様の実際のレンダリングされるシーンジオメトリを変換することである。即ち、もし、エフトランスフォーム又は固定機能パイプラインがレンダリングのために使用されるならば、少なくともフロントキャップが同様にエフトランスフォームで変換された座標を使用するように、そのインプリメンテーションを調整することが多分必要であろう。さもなければ、シャドウアーチファクト(「シャドウアクニ」)がzファイティングにより生ぜしめられてしまうであろう。パラメータ1 posは、4D同次座標においてアイスペースにおける光の位置を含む。これにより、各場合を別々に取り扱う必要なしに、ポイント光及び指向性光を通すことが容易となる。
均一可変ロバストは、セクション2.3.1.1にて前述したような技法でボリュームを生成する必要があるか否かの制御をする。もし、メッシュが2−マニホルドであることが知られているならば、ロバストを偽にセットすることができ、この場合において、シェーダーは、単に、その光に面していない全てのポリゴンを無視する。これは、システムがセクション2.2.1にて前述したようなボリューム生成技法へと効果的に切り換わることを意味している。zパスフラグは、zパス方法が安全に使用されるかを特定する。この判定は、カメラがそのシャドウボリュームの内側にあるかをチェックすることにより、ランタイムで決定される。本発明の別の態様によれば、厳密なシャドウボリュームよりも粗いバウンディングボリュームを使用して、コンサバティブチェックが実行される。もし、そうであるならば、zフェイルを使用する必要があり、さもなければ、シェーダーは、フロントキャップ及びバックキャップのレンダリングをスキップすることができる。
このコードは、低品質メッシュで頻繁に生ずる縮退三角形の問題にも向けられていることに注意されたい。三角形は、当初から縮退であるか、又は、アイスペースへ変換されるとき、計算における数値的不正確さのため、縮退となるかする場合がある。しばしば、これは、ポリゴンへとモザイク化されていて、非常に小さな又は非常に薄い三角形を含むようなメッシュの場合において起こる。縮退又は近縮退三角形は、シャドウボリューム生成において難問である。何故ならば、それが生ずるアーチファクトは、典型的に、シャドウ自体において可視的であるばかりでなく、オクルーダーから「リークする」シャドウストリークとしても現れてしまうからである。
縮退三角形での主たる困難は、それらが光に面しているか否かを判定することである。計算され後で光の方向と比較される法線に依存して、異なる結論に達してしまうことがある。ジオメトリシェーダーにおけるように、もし、複数回同じ三角形を見る必要がある場合に、そのとき、問題が生ずる。1つのポイントにおいて「主」三角形であるものが、別のポイントでの「隣接」三角形であることがある。もし、このような2つの実行が同じ結果を生じないならば、押出しシルエットが1つだけ多すぎるか又は1つだけ少なすぎるかであり、これがアーチファクトに繋がることがある。
この問題を取り扱うため、三角形が光に面しているか否かを判定することが必要なときにはいつでも、厳密に同じ計算が行われるようにしなければならない。不都合なことに、この解決方法では、三角形当たり3つの法線を計算して、それらを3つの異なる光方向ベクトルと比較しなければならないことになる。勿論、この動作は、ある性能を犠牲にすることになる。従って、「難しい」三角形を有しないメッシュのみを取り扱うことが知られているならば、より簡単なインプリメンテーションに戻るのが望ましい。
2.3.3 階層型オクルージョンカリングでの性能改善
シャドウボリュームは、主として、シャドウマップが、典型的には、十分に行えないような、シティーモデルの如き大きなシーンにおいて使用するためリアリティーサーバーに組み入れられている。このようなシーンでは、レンダリング性能は、階層型オクルージョンカリング方法を使用することにより、相当に増強される。
この概念は、シーンにおけるすべてのオブジェクトを、階層型ツリー構造に編成することである。レンダリング中に、そのツリーは、フロント−バック順にて繰り返しトラバースされ、リーフノードに含まれたオブジェクトがレンダリングされる。しかしながら、1つのツリーノードがトラバースされる前に、グラフィックハードウエアによって与えられるオクルージョンカリング特徴を使用して可視性についてのテストがなされる。そのノードが可視であると見出されるならば、全サブツリーを除くことができる。この場合において使用するための最も簡単な階層構造は、軸整列アバウンディングボックス(AABB)のバイナリバウンディングボリューム階層(BVH)である。この種の階層は、非常に速く生成を行うことができ、これは、BVH(又はその部分)がフレーム毎に再構成される必要のあるような動画シーンに対して重要である。
ノードが可視であるかをチェックするため、先ず、ビューイングフラスタムとの交差についてテストし、それから、単にAABBをレンダリングすることによりオクルージョンクエリーを行うことができる。それが実際に可視である場合にのみ、システムは、それぞれ、ツリートラバーサルを続け又はリーフコンテントをレンダリングする。
階層型オクルージョンカリングを光学的に行うために、非同期オクルージョンクエリー及び一時的コヒーレンスが利用される。オクルージョンクエリーはGPUからのリードバックを必要とするので、それらは、比較的に大きなオーバーヘッドを有する。従って、クエリー結果が得られるまで、そのツリーにおけるある他のポイントでの非同期オクルージョンクエリーを発し、トラバーサルを続けることが可能であるノードが前のフレームにおいて可視であったかについての情報を記憶しておくと、オクルージョンクエリーがすべてで必要とされるか、又はクエリー無しでノードを単にトラバースするのがより速いか、を決める助けとなる。例えば、ノードが前のフレームにおいて可視であったならば、現在のフレームにおいてもそのノードが可視である蓋然性が十分に高く、オクルージョンクエリーをやめてもよいと仮定することができる。もし、前のフレームにおいてノードが可視でなかったならば、現在のフレームにおいてそのノードが可視である蓋然性は相当に低く、オクルージョンクエリーをする価値があると仮定することができる。
本発明の別の態様によれば、このアプローチは、シャドウボリュームにも十分に拡張される。ツリーにおける特定のノードをスキップできるかを見出すことが望まれる。何故ならば、その階層のこの部分におけるどのオブジェクトも可視的ボリュームを投げ掛けないことが知られるからである。オクルージョンクエリーでノードのバウンディングボックスをテストする代わりに、あたかも軸整列バウンディングボックス(AABB)自身が影を投げかけているかのように、光方向において押し出されたバウンディングボックスがテストされる。換言するならば、システムは、ノードバウンディングボックスのシャドウボリュームに対してオクルージョンカリングを効果的に行う。もし、この押出しボックスが可視でないならば、それは、そのバウンディングボックスの内側のオブジェクトにより投げ掛けられたどの影も可視でないことを意味しており、そのノードを無視することができる。
この原理は、図9Aから図9Eに例示されている。図9Aは、第1のオクルーダー502、第2のオクルーダー504、光源506及びカメラ508を含む典型的なシーン500の図を示している。ここでの説明のために、2つのオクルーダー502及び504の各々に対するシャドウボリュームレンダリングが潜在的に高くつくと仮定する。図9Bにおいては、第1のオクルーダー502及び光源506のシャドウボリュームを例示するため、線512a及び512bが加えられており、第2のオクルーダーのシャドウボリュームを例示するため、線514a及び514bが加えられている。更に又、典型的なビューイングフラスタムを例示するため、線518a及び518bが加えられている。
図9Bに例示されるように、第2のオクルーダー504は、第1のオクルーダー502により視界から完全に隠されている。図9Bにおいて更に例示されているように、ビューイングフラスタム518a−518b内において、第2のオクルーダー504のシャドウボリュームもまた、視界から完全に隠されている。従って、この実施例においては、第2のオクルーダー504又はそのシャドウボリュームをレンダリングする必要はない。
前述したように、本発明の態様は、レンダラーがオクルーダー504及びそのシャドウボリューム514a−514bの両者のレンダリングをスキップできるようにオクルージョンクエリーを行うための効率的な技法を提供する。ここに説明する技法によれば、第2のオクルーダー504は、軸整列バウンディングボックス(AABB)に包囲される。このAABBは、それから、「トライアル」シャドウボリュームを生成するため押し出される。それから、システムは、そのトライアルシャドウボリュームのどれかが可視であるか、又はそれが第1のオクルーダー502により視界から完全に隠されているか、について決定する。
軸整列バウンディングボックスの生成は、階層的に進む。図9Cに例示されるように、第1の生成軸整列バウンディングボックス(AABB)520が、先ず、第1のオクルーダー502及び第2のオクルーダー504の両者の周りに構成される。このAABBは、軸整列平面を、x軸、y軸及びz軸に沿ってオクルーダー502及び504の対の最も近いポイント及び最も遠いポイントに通すことにより、構成される。それから、図9Dに示されるように、第1の生成AABB520は、各々が単一オクルーダー502、504を含むような1対の第2の生成AABBへと細分割される。各オクルーダー502、504に対して、第2の生成AABB522は、軸整列平面を、x軸、y軸及びz軸に沿って各オクルーダー502、504の最も近いポイント及び最も遠いポイントに通すことにより、構成される。
図9Eに示されるように、シャドウボリュームは、そのAABBを押し出すことにより、生成される。図9Eから明らかなように、ビューイングフラスタム内で、第2のオクルーダー504のAABBから押し出されたシャドウボリュームは、第1のオクルーダー502によりカメラから完全に隠されている。従って、前述したオクルージョンクエリーに基づいて、システムは、第2のオクルーダーのためのシャドウボリュームの生成及びレンダリングを安全にスキップすることができる。
勿論、このような結論は、もし、オクルーディングされるノードが1つのオブジェクトのみの代わりに、シーンの全サブツリーを保持しているならば、真である。ツリートラバーサルが可視リーフノードに達するとき、そのシャドウボリュームは、この章で前述した方法を使用して、レンダリングされる。光源が現在処理されているAABBの内側にある場合又はカメラが押出しAABBの内側にある場合に、特別な注意を払う必要があることに注意されたい。しかしながら、これらの場合を検出するのは非常に簡単であり、そのときには、オクルージョンクエリーを行わずにノードを単にトラバースすることができる。
明らかなように、従来の階層型オクルージョンカリングのために使用されるのと同じ最適化も、この拡張方法に使用することができる。非同期オクルージョンクエリー及び一時的コヒーレンスは、予期したように働く。唯一の違いは、一時的コヒーレンスを考慮するため、各BVHノードにおいて光源当たりのコヒーレンシー情報を含まねばならないことである。即ち、各光及びノードについて、可視性フラグ(ノードのシャドウボリュームが最後にチェックされた時に可視であったか否か)を、フレームID(その可視性情報が最後に更新された時を記述する)と共に、記憶する。
ここに説明する階層型カリング方法は、すべての場合において性能を増大しない。実際に、ある情況においては、レンダリングは、シーンにおける全てのオブジェクトを単に描写するのと比べて、僅かにより遅くなることもある。しかしながら、大多数のシーンについては、階層型カリングは、元の及びシャドウボリューム変形の両者において、性能を相当に改善する。シティーリハーサルの如きケースでは、このスピードアップは、しばしば劇的なものとなる。
ここで説明されるようにトライアルシャドウボリュームを生成するのにAABBを使用すると、時には、実際のオクルーダーのシャドウボリュームが可視でないとしても、そのAABBシャドウボリュームが可視であると、システムが決定してしまうような「偽肯定」を生じてしまうことがあることに、注意されたい。この場合において、システムは、必要でないとしても、第2のオクルーダーのシャドウボリュームをレンダリングしてしまう。しかしながら、トライアルシャドウボリュームを押し出すためにAABBを使用すると、オクルージョンクエリーを行うのに必要とされるコンピューティングリソースの量が相当に減少されるので、多数の偽肯定があるとしても、典型的には、全体として効率の増大を達成することができる。
2.4 リアリティーサーバーインプリメンテーション:結論
シャドウボリュームジオメトリを生成するための非標準方法を使用することにより、難しいメッシュに対しても、シャドウのロバストレンダリングを達成することができる。階層型ハードウエアオクルージョンクエリー及びジオメトリシェーダーと組み合わせてこの方法を使用することにより、ステンシルシャドウでは以前には上手くいかなかった情況に対しても、高性能を達成することも可能となる。ここで説明する技法の全ては、実施するのが比較的に簡単である。
図10A及び図10Bに実施例を示している。図10Aは、ざっと500,000個のポリゴンを有する複雑なツリーメッシュを含むシティーシーンクローズアップ600aを示している。ロバスト技法は、ツリーリーフの間のシャドウイングを正しく取り扱う。このシーンにおけるメッシュは、どれも、2−マニホルドでない。図10Bは、ズームアウトされた図10Aと同じモデル600bを示している。両方のビューは、ダイナミックシャドウボリューム生成を起動した状態で、双方向レートでレンダリングされる。
ここで説明した技法を、変更し、又は増強することができることは、理解されよう。例えば、特に、極端に高いジオメトリ複雑性を有するシーンを取り扱うために、付加的な性能最適化を実施することができる。
3. 本発明を実施することのできるデジタル処理環境
前述した本発明をインプリメンテーションし実施することのできる、典型的な、比較的に通常のデジタル処理構造及び環境について、図11、及び図12A及び図12Bに関連して、以下に説明する。
当業者により理解されるように、前述したような本発明は、典型的には、例えば、動画映画、コンピュータ支援デザイン表現又は他の典型的なコンピュータグラフィック出力を含む、人間が知覚できる(又はデジタル的に記憶され及び/又は送信される)画像又は一連の画像を出力するようなコンピュータグラフィックシステムにおいて、丸められたコーナー及びエッジ、及びその他のアクティビティの出現の生成を可能とする方法、システム、装置及びコンピュータプログラム製品を提供する。従って、本発明は、ディスプレイ、キーボード、タブレット及び/又はマウスの如きユーザインターフェース要素、メモリ、記憶装置、他の通常のコンピュータグラフィックシステムコンポーネントと共に、コンピュータグラフィックシステムの部分を構成するコンピュータのコンピュータソフトウエア又はコンピュータハードウエアの部分として実施することができる。この種の従来のコンポーネントは、当業者によりよく知られており、従って、ここでより詳細に説明する必要はないのであるが、本発明がコンピュータグラフィックシステムにおいてこのようなコンポーネントに関連してどのように実施されるかについて示すため、以下概説する。
詳述するに、当業者であれば、本発明は、映画における表示又は他のダイナミック表示のための如き、画像の生成及び合成において使用できることは、理解されよう。ここで説明する技法は、画像のピクセルに対してピクセル値が生成されるようなコンピュータグラフィックシステムの部分として実施することができる。ピクセル値は、シミュレートカメラの画像平面に記録されるようなシーンにおけるあるポイントを表している。この下位コンピュータグラフィックシステムは、本発明の方法の如き、選択方法論を使用して画像に対するピクセル値を生成するようにコンフィギュレーションすることができる。
前述の詳細説明は、これらの技法による方法、構造、システム及びコンピュータソフトウエア製品の実施例を例示している。当業者により理解されるように、ここで説明した方法及びシステムは、スタンドアローン構成において又はネットワークを通して、マイクロソフトウインドウズ、リナックス又はユニックスの如き従来のオペレーティングシステムに従って動作する(又はエミュレーティングする)パーソナルコンピュータ(PC)又は他の等価デバイスの如き従来のコンピュータ装置を使用して、ソフトウエア、ハードウエア又はソフトウエアとハードウエアとの組み合わせにて実施することができる。従って、ここで説明した種々な処理態様及び手段は、適切にコンフィギュレーションされたデジタル処理装置又はデバイスのネットワークのソフトウエア及び/又はハードウエア要素にて実施することができる。処理は、順次又は並列に行うことができ、又、特殊用途又はリコンフィギュレーション可能なハードウエアを使用して実施することができる。
実施例として、ここに添付した図11は、このようなコンピュータグラフィック処理を実施することのできる例示的コンピュータシステム1000を示している。図11を参照するに、一実施形態におけるコンピュータシステム1000は、プロセッサモジュール1001、及びキーボード1002A及び/又はマウス1002B(又はデジタイジングタブレット又は他の等価な要素であり、全体としてオペレータ入力要素1002として示す)の如きオペレータ入力コンポーネントを含むオペレータインターフェース要素及びビデオディスプレイ装置1003を含む。この例示的コンピュータシステム1000は、従来のストアドプログラムコンピュータアーキテクチャーであってよい。プロセッサモジュール1001は、例えば、与えられたデジタルデータに関して処理動作及び記憶動作を行う、1つ以上のプロセッサ、ディスク及び/又はテープ記憶要素(別に図示せず)の如きメモリ及び大容量記憶装置を含むことができる。オペレータ入力要素1002は、オペレータが処理のための情報を入力できるようにするため設けられる。ビデオディスプレイ装置1003は、オペレータが処理のために入力するデータ、オペレータが処理の制御のために入力する情報並びに処理中に生成される情報を含めて、オペレータに対してスクリーン1004上にプロセッサモジュール1001により生成された出力情報を表示するために設けられる。プロセッサモジュール1001は、種々なアプリケーションのための情報が種々な「ウインドウ」を使用して表示されるような、いわゆる「グラフィックユーザーインターフェース」(「GUI」)を使用して、ビデオディスプレイ装置1003による表示のための情報を生成することができる。
用語「メモリ」、「記憶装置」及び「ディスク記憶装置」は、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ読み取り可能なフラッシュドライブ、コンピュータ読み取り可能なRAM又はROM要素又はデジタル情報をエンコーディングするためのその他の任意の知られた手段の如き、任意のコンピュータ読み取り可能な媒体を包含するものである。用語「アプリケーションプログラム」、「アプリケーション」、「プログラム」、「コンピュータプログラム製品」又は「コンピュータソフトウエア製品」は、媒体が固定又はリムーバブルであれ、永久的又は消去可能であれ、又はその他のものであれ、コンピュータ読み取り可能な媒体にエンコードされ及び/又は記憶されたコンピュータ読み取り可能なプログラムからなる任意のコンピュータプログラム製品を包含するものである。例えば、図12Bの概略ブロック図のブロック1122に示されるように、アプリケーション及びデータは、内部的又は外部的であれ、ディスク、RAM、ROM、他のリムーバブル又は固定の記憶装置に記憶され、又、当業分野にてよく知られた実施方法及び技法に従って、ダウンロード又はアップロードされるものである。本明細書に示されるように、本発明は、コンピュータ読み取り可能な媒体に記憶されたソフトウエア又はコンピュータプログラム製品の形をとることができ、又は、本発明は、アップロードされ又はダウンロードされ、又はFPGA、ROM又は他の電子的構造体に固定されるコンピュータプログラムコードの形式とすることもでき、又は、本発明は、このような方法を実施するための方法又はシステムの形をとることもできる。各場合において、本発明は、コンピュータ又はコンピュータシステムが、画像又はシーンにおけるピクセルに対するピクセル値を計算できるように動作でき、そのピクセル値は、ディスプレイ制御電気又は電子出力を生成して、最終的に、人間が知覚できる形にて画像の表示ができるようにし、及び/又は後での表示及び/又は処理のためにこのような画像(又はこのような画像を特定するデータ)の記憶ができるようにするため、グラフィックカード、ディスプレイコントローラ又はLCD及び/又はCRTのようなディスプレイ要素の如き、従来の要素であってよいコンピュータグラフィックシステムの他の要素により使用することができる。
コンピュータシステム1000は、オペレータからの入力情報を受け取るためのキーボード1002a及びマウス1002b、及びオペレータに対して出力情報を表示するためのビデオディスプレイドライブ1003の如き特定のコンポーネットを含むものとして示されているのであるが、コンピュータシステム1000は、図11に示したようなものに加えて、又はそれらに代えて、種々なコンポーネントを含むことができることは、理解されよう。
更に又、プロセッサモジュール1001は、全体として参照符号1005として示された1つ以上のネットワークポートを含むことができ、これらネットワークポートは、このコンピュータシステム1000をコンピュータネットワークに接続する通信リンクに接続される。これらネットワークポートは、コンピュータシステム1000が、そのネットワークにおける他のコンピュータシステム及び他のデバイスへ情報を送信したり、それらから情報を受信したりすることができるようにする。例えば、クライアント−サーバーパラダイムに従って組織された典型的なネットワークにおいては、そのネットワークにおける特定のコンピュータシステムは、他のクライアントコンピュータシステムによる処理のためのデータ及びプログラム(一般的には、「情報」)を記憶し、それにより、そのクライアントコンピュータシステムがその情報を都合良く共用できるようにするサーバーとして指定されている。特定のサーバーにより維持されている情報にアクセスする必要のあるクライアントコンピュータシステムは、サーバーがネットワークを通してそれに情報をダウンロードすることができるようにする。データを処理した後、クライアントコンピュータシステムは、その処理されたデータを記憶のためサーバーへと戻すこともできる。コンピュータシステム(前述したサーバー及びクライアントを含む)に加えて、ネットワークは、又、例えば、そのネットワークにおいて接続された種々なコンピュータシステムの間で共用されるような、プリンタ、ファクシミリ装置、デジタルオーディオ又はビデオ記憶装置及び分配装置等を含むこともできる。ネットワークにおいてコンピュータシステムを相互接続する通信リンクは、従来のように、それらコンピュータシステムの間に信号を搬送するためのワイヤ、光ファイバ又は他の媒体を含む任意の都合のよい情報搬送媒体を備えることができる。コンピュータシステムは、通信リンクを通して転送されるメッセージを用いて、ネットワークを通して情報を転送し、その各メッセージは、情報及びそのメッセージを受信すべき装置を識別する識別子を含むものである。
図に示すコンピュータシステム1000に加えて、本発明による方法、装置又はソフトウエア製品は、スタンドアローンであれ、ネットワーク接続であれ、ポータブルであれ、又は固定であれ、従来のPC1102、ラップトップ1104、ハンドヘルド又はモバイルコンピュータ1106を含む、図12A及び図12Bの実施例により示されたもの(例えば、ネットワークシステム1100)の如き、広範囲に亘る従来のコンピューティング装置及びシステムのうちのいずれにおいても動作でき、又は、サーバー1110及び記憶装置1112を含むことのできるインターネット又は他のネットワーク1108を通して動作することもできる。
従来のコンピュータソフトウエア及びハードウエアプラクティスと調和して、本発明に従ってコンフィギュレーションされたソフトウエアアプリケーションは、図12A及び図12Bに示されたように、例えば、PC1102内で動作でき、この場合において、プログラム命令は、ROM又はCD−ROM1116(図12B)、磁気ディスク又は他の記憶装置1120から読み出され、又、CPU1118による実行のためRAM1114へとロードされる。データは、従来のキーボード、スキャナ、マウス、デジタイジングタブレット又は他の要素1103を含む任意の知られた装置又は手段を介してシステムへと入力される。図12Bに示されるように、図示の記憶装置1120は、リムーバブル記憶装置を含む。図12Bに更に示されるように、アプリケーション及びデータ1122は、固定又はリムーバブル記憶装置、又はROMのうちのあるもの又は全てに置かれ、又はダウンロードされる。
当業者には理解されるように、ここに説明した本発明の方法態様は、フィールドプログラマブルゲートアレイ(FPGA)又はASIC構成を使用してここに説明した処理を実施するために特に構成された特定用途向け集積回路(ASIC)の如きハードウエア要素にて実行することができる。種々な形式のASICが多くの製造者から入手できるのであるが、現在に入手できるASICは、本明細書に説明した機能を与えない。このような製造者としては、共にカリフォルニア州サンタクララにあるインテルコーポレーション及びNVIDIAコーポレーションがある。従来のASIC又は等価な集積回路の実際の半導体素子は、本発明の部分ではないので、ここでは、説明しない。
当業者には理解されるように、ASIC又は他の従来の集積回路又は半導体素子は、前述した図1から図10に示したような本発明の方法を実施するため、ここでより詳述したような本発明の教示を使用して、そのような仕方にてインプリメンテーションされる。
当業者には理解されるように、本発明の方法態様は、ワークステーション又はPCのオペレーティングシステムの集約的コマンド及び本発明に従ってコンフィギュレーションされたコンピュータプログラム製品の元で動作する、ワークステーション及びパーソナルコンピュータ(PC)の如き、市販されているデジタル処理システム内で実行される。用語「コンピュータプログラム製品」は、コンピュータ読み取り可能な媒体にエンコードされた任意のセットのコンピュータ読み取り可能なプログラム命令を包含するものである。コンピュータ読み取り可能な媒体は、これらに限定するのではないが、ワークステーション、PC又は他のデジタル処理装置又はシステムに対してローカルなものであれ、リモートなものであれ、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ読み取り可能なフラッシュドライブ、コンピュータ読み取り可能なRAM又はROM要素、又はデジタル情報をエンコードし、記憶し又は与えるための任意の他の知られた手段を含む、任意の形式のコンピュータ読み取り可能な要素を包含する。種々な形式のコンピュータ読み取り可能な要素及び媒体が、コンピューティング技術においてよく知られており、これらの選択は、実施者に委ねられている。各場合において、本発明は、コンピュータシステムがピクセル値を計算できるように動作でき、ピクセル値は、ディスプレイ制御電子出力を生成するため、グラフィックカード又はディスプレイコントローラの如き従来の要素であってよいコンピュータシステムにおけるハードウエア要素により使用される。従来のグラフィックカード及びディスプレイコントローラは、コンピューティング技術においてよく知られており、必ずしも、本発明の部分ではなく、それらの選択は、実施者に委ねられている。
前述の説明は、当業者が本発明を実施できるようにする詳細を含んでいるのであるが、この説明は、本質的に例示であり、本発明の教示による利点を有するようなそれらの多くの変更及び変形が当業者には明らかであろうことを認識されたい。従って、本発明は、特許請求の範囲によってのみ限定されるものであり且つ特許請求の範囲は、従来技術により許される限りにおいて広く解釈されるべきものとしようとしているものである。
10…シャドウボリューム生成モジュール、20…BVHトラバーサルモジュール、30…デジタル処理装置、200…シーン、202…オクルーダー、204…光源、206…受け表面、208…受け表面の一部分、208’…受け表面の見える部分、210…可視フラスタム、210’…ビューイングフラスタム、212…カメラ、212’…カメラ、214…光領域、214’…光部分、216…影領域、216’…影部分、220…遮蔽区域(シャドウボリューム)、300…オクルーダー(オープンメッシュ)、302…トワード表面、304…アウエイ表面、306…エッジ、310…光源、312…シャドウボリューム、314…シャドウボリューム、350…三角形の頂点配列、400a…ソースコードリスト、400b…ソースコードリスト、400c…ソースコードリスト、500…シーン、502…第1のオクルーダー、504…第2のオクルーダー、506…光源、508…カメラ、512a…線、512b…線、514a…線(シャドウボリューム)、514b…線(シャドウボリューム)、518a…線(ビューイングフラスタム)、518b…線(ビューイングフラスタム)、520…第1の生成軸整列バウンディングボックス(AABB)、522…第2の生成AABB、600a…シティーシーンクローズアップモデル、600b…モデル、1000…コンピュータシステム、1001…プロセッサモジュール、1002…オペレータ入力要素、1002a…キーボード、1002b…マウス、1003…オペレータインターフェース要素及びビデオディスプレイ装置、1004…スクリーン、1005…ネットワークポート、1100…ネットワークシステム、1102…PC、1103…キーボード/スキャナ/マウス/その他、1104…ラップトップコンピュータ、1106…ハンドヘルドコンピュータ、1108…インターネット/他のネットワーク、1110…サーバー、1112…記憶装置、1114…RAM、1116…ROM、1118…CPU、1120…記憶装置(リムーバブル記憶装置を含む)、1122…アプリケーション/データ

Claims (9)

  1. 人間が知覚できるディスプレイ要素に表示するための画像をレンダリングするためのコンピュータグラフィックシステムであって、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、3次元(3D)シーンにおける影を表示することを含むコンピュータグラフィックシステムにおいて、
    当該コンピュータグラフィックシステムは、シャドウボリューム生成方法とバウンディングボリューム階層型(BVH)トラバーサル方法とを内部で実行するデジタル処理装置を含み、
    前記BVHトラバーサル方法は、
    (1)全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
    (2)前記シャドウボリューム生成方法を使用して現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
    (3)ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、さもなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーを行い、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
    (4)リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
    を含み、
    前記シャドウボリューム生成方法は、
    画像レンダリングにおいて使用される各非縮退三角形に対して、
    (1)表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータdを計算するステップと
    3)処理される三角形のdパラメータが隣接する三角形に対するdパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータdの正又は負の符号を再び使用するステップと、
    を含む
    ンピュータグラフィックシステム。
  2. 人間が知覚できるディスプレイ要素に表示するための画像をレンダリングするためのコンピュータグラフィックシステムであって、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、3次元(3D)シーンにおける影を表示することを含むコンピュータグラフィックシステムにおいて、
    前記コンピュータグラフィックシステムに含まれるデジタル処理装置は、
    シャドウボリューム生成方法の実行する第1の手段であって、画像レンダリングにおいて使用される各非縮退三角形に対してシャドウボリューム計算を実行する第2の手段を備える、第1手段と、
    バウンディングボリューム階層型(BVH)トラバーサル方法を実行する第3の手段と、
    を備えており、
    前記BVHトラバーサル方法は、
    (1)全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
    (2)前記シャドウボリューム生成方法を使用して現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
    (3)ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
    (4)リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
    を含み、
    各非縮退三角形に対して前記シャドウボリューム計算を実行する第2の手段は、
    (1)表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータdを計算する手段と
    3)処理される三角形のdパラメータが隣接する三角形に対するdパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータdの正又は負の符号を再び使用する手段と、
    を備えることを特徴とするコンピュータグラフィックシステム。
  3. コンピュータ読み取り可能な媒体にエンコードされたコンピュータプログラム命令を備えるコンピュータプログラム製品であって、前記コンピュータプログラム命令は、人間が知覚できるディスプレイ要素に表示するため画像をレンダリングするためのコンピュータグラフィックシステム内で動作できるものであり、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、3次元(3D)シーンにおける影を表示することを含み、
    前記コンピュータプログラム命令は、
    前記コンピュータグラフィックシステムに含まれるデジタル処理装置にシャドウボリューム生成方法を実行させる第1の命令であって、画像レンダリングにおいて使用される各非縮退三角形に対して、シャドウボリューム計算を実行する第2の命令を備える第1の命令と、
    前記デジタル処理装置にバウンディングボリューム階層型(BVH)トラバーサル方法を実行させる第3の命令と、
    を備えており、
    前記BVHトラバーサル方法は、
    (1)全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
    (2)前記シャドウボリューム生成方法を使用して現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
    (3)ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
    (4)リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
    を含み、
    各非縮退三角形に対して前記シャドウボリューム計算を実行する第2の命令は、
    (1)表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータdを計算する命令
    3)現在の三角形のdパラメータが隣接する三角形に対するdパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためdの正又は負の符号を再び使用する命令と、
    を備える、コンピュータプログラム製品。
  4. 前記シャドウボリューム生成方法は、更に、
    シミュレート光源に関してポリゴンメッシュ表現の選択処理を含み、
    前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源の方に向かって面しており(「トワード表面」)、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており(「アウエイ表面」)、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、
    前記選択処理は、
    (1)先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
    (2)次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に向いたポリゴン表面(「トワード表面」)及び前記シミュレート光源から背けられているポリゴン表面(「アウエイ表面」)を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
    を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
    (a)シャドウボリュームの第1のセットを生成するため、前記トワード表面を押し出す段階と、
    (b)シャドウボリュームの第2のセットを生成するため、前記アウエイ表面を押し出す段階と、
    (c)全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第1のセットと前記第2のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、2回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項1に記載のコンピュータグラフィックシステム。
  5. 請求項に記載の選択処理を適用することにより縮退三角形を取り扱うことを含むことを特徴とする請求項に記載のコンピュータグラフィックシステム。
  6. 前記シャドウボリューム生成方法を実行する第1の手段は、更に、
    シミュレート光源に関してポリゴンメッシュ表現の選択処理を実行する第4の手段を備え、
    前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源の方に向かって面しており(「トワード表面」)、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており(「アウエイ表面」)、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、
    前記選択処理は、
    (1)先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
    (2)次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に面したポリゴン表面(「トワード表面」)及び前記シミュレート光源から背けられているポリゴン表面(「アウエイ表面」)を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
    を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
    (a)シャドウボリュームの第1のセットを生成するため、前記トワード表面を押し出す段階と、
    (b)シャドウボリュームの第2のセットを生成するため、前記アウエイ表面を押し出す段階と、
    (c)全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第1のセットと前記第2のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、2回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項2に記載のコンピュータグラフィックシステム。
  7. 請求項に記載の選択処理を適用することにより縮退三角形を取り扱う手段を備えることを特徴とする請求項に記載のコンピュータグラフィックシステム。
  8. 前記デジタル処理装置に前記シャドウボリューム生成方法を実行させる前記第1の命令は、
    シミュレート光源に関してポリゴンメッシュ表現の選択処理を実行する第4の命令を更に備え、
    前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源に向かって面しており(「トワード表面」)、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており(「アウエイ表面」)、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、
    前記選択処理は、
    (1)先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
    (2)次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に面したポリゴン表面(「トワード表面」)及び前記シミュレート光源から背けられているポリゴン表面(「アウエイ表面」)を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
    を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
    (a)第1のセットのシャドウボリュームを生成するため、前記トワード表面を押し出す段階と、
    (b)第2のセットのシャドウボリュームを生成するため、前記アウエイ表面を押し出す段階と、
    (c)全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第1のセットと前記第2のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、2回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項3に記載のコンピュータプログラム製品。
  9. 請求項に記載の選択処理を適用することにより縮退三角形を取り扱うため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を更に含む、請求項に記載のコンピュータプログラム製品。
JP2009540471A 2006-12-08 2007-12-06 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム Active JP4902748B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US86922206P 2006-12-08 2006-12-08
US60/869,222 2006-12-08
PCT/US2007/086606 WO2008073798A2 (en) 2006-12-08 2007-12-06 Computer graphics shadow volumes using hierarchical occlusion culling

Publications (2)

Publication Number Publication Date
JP2010512582A JP2010512582A (ja) 2010-04-22
JP4902748B2 true JP4902748B2 (ja) 2012-03-21

Family

ID=39512406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009540471A Active JP4902748B2 (ja) 2006-12-08 2007-12-06 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム

Country Status (4)

Country Link
US (1) US8115767B2 (ja)
JP (1) JP4902748B2 (ja)
DE (1) DE112007002991B4 (ja)
WO (1) WO2008073798A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9123151B2 (en) * 2008-08-05 2015-09-01 Autodesk, Inc. Exchanging data between vertex shaders and fragment shaders on a graphics processing unit
WO2010048093A2 (en) * 2008-10-20 2010-04-29 Intel Corporation Graphics processing using culling on groups of vertices
US8669977B2 (en) 2009-10-01 2014-03-11 Intel Corporation Hierarchical mesh quantization that facilitates efficient ray tracing
US8175734B2 (en) * 2009-10-08 2012-05-08 3D M. T. P. Ltd. Methods and system for enabling printing three-dimensional object models
CN102087752B (zh) * 2009-12-08 2013-11-20 鸿富锦精密工业(深圳)有限公司 光照环境模拟系统及方法
US20110141112A1 (en) * 2009-12-11 2011-06-16 William Allen Hux Image processing techniques
US10109103B2 (en) 2010-06-30 2018-10-23 Barry L. Jenkins Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation
EP2589023B1 (en) * 2010-06-30 2021-05-19 Barry Lynn Jenkins System and method of from-region visibility determination and delta-pvs based content streaming using conservative linearized umbral event surfaces
US9916763B2 (en) 2010-06-30 2018-03-13 Primal Space Systems, Inc. Visibility event navigation method and system
US9171396B2 (en) * 2010-06-30 2015-10-27 Primal Space Systems Inc. System and method of procedural visibility for interactive and broadcast streaming of entertainment, advertising, and tactical 3D graphical information using a visibility event codec
US9892546B2 (en) 2010-06-30 2018-02-13 Primal Space Systems, Inc. Pursuit path camera model method and system
US8659597B2 (en) * 2010-09-27 2014-02-25 Intel Corporation Multi-view ray tracing using edge detection and shader reuse
US8823736B2 (en) * 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
FR2988891A1 (fr) 2012-03-29 2013-10-04 Thomson Licensing Procede d'estimation de niveau d'opacite dans une scene et dispositif correspondant
US9053582B2 (en) 2012-06-11 2015-06-09 Disney Enterprises, Inc. Streaming light propagation
US8957896B2 (en) * 2012-06-11 2015-02-17 Disney Enterprises, Inc. Streaming hierarchy traversal renderer
US9123162B2 (en) 2012-06-11 2015-09-01 Disney Enterprises, Inc. Integration cone tracing
US20130342535A1 (en) * 2012-06-20 2013-12-26 Microsoft Corporation Hierarchical Tree Traversal in Graphics Pipeline Stages
US9437025B2 (en) 2012-07-12 2016-09-06 Nvidia Corporation Stencil data compression system and method and graphics processing unit incorporating the same
US9123154B2 (en) 2012-10-09 2015-09-01 Disney Enterprises, Inc. Distributed element rendering
US9117306B2 (en) * 2012-12-26 2015-08-25 Adshir Ltd. Method of stencil mapped shadowing
US9986225B2 (en) * 2014-02-14 2018-05-29 Autodesk, Inc. Techniques for cut-away stereo content in a stereoscopic display
US9760968B2 (en) 2014-05-09 2017-09-12 Samsung Electronics Co., Ltd. Reduction of graphical processing through coverage testing
US9842428B2 (en) 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US10169909B2 (en) * 2014-08-07 2019-01-01 Pixar Generating a volumetric projection for an object
US10210655B2 (en) * 2015-09-25 2019-02-19 Intel Corporation Position only shader context submission through a render command streamer
WO2017164923A1 (en) * 2016-03-21 2017-09-28 Siemens Product Lifecycle Management Software Inc. Gpu batch occlusion query with spatial update
US10553010B2 (en) 2017-04-01 2020-02-04 Intel IP Corporation Temporal data structures in a ray tracing architecture
CN109712211B (zh) * 2018-12-21 2023-02-10 西安恒歌数码科技有限责任公司 基于osg的高效体阴影生成方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002074391A (ja) * 2000-08-31 2002-03-15 Konami Co Ltd 3次元画像処理方法、装置、3次元画像処理プログラムを記録した可読記録媒体及びビデオゲーム装置
JP2004280596A (ja) * 2003-03-17 2004-10-07 Nintendo Co Ltd シャドウボリューム生成プログラム及びゲーム装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867166A (en) * 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US6072497A (en) * 1997-05-30 2000-06-06 Hewlett-Packard Company Volumetric pre-clipping method that guarantees minimal number of sample points through a volume
US6999073B1 (en) * 1998-07-20 2006-02-14 Geometrix, Inc. Method and system for generating fully-textured 3D
US6437782B1 (en) * 1999-01-06 2002-08-20 Microsoft Corporation Method for rendering shadows with blended transparency without producing visual artifacts in real time applications
US6366283B1 (en) 1999-03-03 2002-04-02 Discreet Logic Inc. Generating image data
US6489955B1 (en) * 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
SG93211A1 (en) * 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
GB2372188B (en) * 2001-02-08 2005-07-13 Imagination Tech Ltd Volume clipping in computer 3-D Graphics
JP2004028059A (ja) 2002-06-28 2004-01-29 Hitachi Koki Co Ltd 携帯式エンジン刈払機の燃料タンク装置
US6876362B1 (en) * 2002-07-10 2005-04-05 Nvidia Corporation Omnidirectional shadow texture mapping
US7145565B2 (en) * 2003-02-27 2006-12-05 Nvidia Corporation Depth bounds testing
US7248261B1 (en) * 2003-12-15 2007-07-24 Nvidia Corporation Method and apparatus to accelerate rendering of shadow effects for computer-generated images
US20050134588A1 (en) * 2003-12-22 2005-06-23 Hybrid Graphics, Ltd. Method and apparatus for image processing
US7030878B2 (en) * 2004-03-19 2006-04-18 Via Technologies, Inc. Method and apparatus for generating a shadow effect using shadow volumes
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
US7688323B2 (en) * 2004-07-20 2010-03-30 Luxology, Llc Function portions of animation program
US7277098B2 (en) * 2004-08-23 2007-10-02 Via Technologies, Inc. Apparatus and method of an improved stencil shadow volume operation
US7782318B2 (en) * 2006-11-22 2010-08-24 International Business Machines Corporation Method for reducing network bandwidth by delaying shadow ray generation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002074391A (ja) * 2000-08-31 2002-03-15 Konami Co Ltd 3次元画像処理方法、装置、3次元画像処理プログラムを記録した可読記録媒体及びビデオゲーム装置
JP2004280596A (ja) * 2003-03-17 2004-10-07 Nintendo Co Ltd シャドウボリューム生成プログラム及びゲーム装置

Also Published As

Publication number Publication date
WO2008073798A2 (en) 2008-06-19
US8115767B2 (en) 2012-02-14
US20080180440A1 (en) 2008-07-31
JP2010512582A (ja) 2010-04-22
WO2008073798A3 (en) 2008-07-31
DE112007002991B4 (de) 2011-09-08
DE112007002991T5 (de) 2009-10-08

Similar Documents

Publication Publication Date Title
JP4902748B2 (ja) 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US11804002B2 (en) Techniques for traversing data employed in ray tracing
US20160379401A1 (en) Optimized Stereoscopic Visualization
US20020186216A1 (en) 3D computer modelling apparatus
US9508191B2 (en) Optimal point density using camera proximity for point-based global illumination
US20070182732A1 (en) Device for the photorealistic representation of dynamic, complex, three-dimensional scenes by means of ray tracing
US20230316632A1 (en) Hardware-based techniques applicable for ray tracing for efficiently representing and processing an arbitrary bounding volume
US9684997B2 (en) Efficient rendering of volumetric elements
US11450057B2 (en) Hardware acceleration for ray tracing primitives that share vertices
KR20080052328A (ko) 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치
JP2011238213A (ja) 配置されたパラメトリック曲線の階層的バウンディング
US20210390760A1 (en) Ray tracing hardware acceleration for supporting motion blur and moving/deforming geometry
Schneider et al. Real-time rendering of complex vector data on 3d terrain models
CN107392990B (zh) 渲染3d场景的全局照明
US20130127895A1 (en) Method and Apparatus for Rendering Graphics using Soft Occlusion
Popescu et al. The depth discontinuity occlusion camera
JPH05290174A (ja) 三次元モデルの構造を取扱うためのグラフィックス・ワークステーションおよびモデルの構造の三次元グラフィック画像を生ずる方法
Stich et al. Efficient and robust shadow volumes using hierarchical occlusion culling and geometry shaders
WILLCOCKS Sparse volumetric deformation
Jabłoński et al. Real-time voxel rendering algorithm based on screen space billboard voxel buffer with sparse lookup textures
JP2010282498A (ja) ポリゴン処理装置,プログラム及び情報記録媒体
US20240095996A1 (en) Efficiency of ray-box tests
Valter Dynamic real-time scene voxelization and an application for large scale scenes
Doghramachi Tile-Based Omnidirectional Shadows

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110824

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110914

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4902748

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

Year of fee payment: 3

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