画面の一部のみを詳細にレンダリングする


11

グラフィックスが大きな視野角でレンダリングされる場合(非常に大きなテレビやVRヘッドセットなど)、ビューアは実際には画像全体に焦点を合わせることができず、その一部だけに焦点を合わせることができません。(実際、これは通常サイズの画面にも当てはまります。)

視聴者の目を追跡する方法(ほとんどの場合VRで実行可能です)と組み合わせると、理論的にこれを活用して、グラフィックスを視聴者の焦点から遠ざけ、徐々に細部と解像度を下げて、知覚される品質を失うことなくパフォーマンスを得ることができます。

これを利用できる、または現在開発中のテクニックはありますか?


面白いアイデアですが、ほとんどのディスプレイにはアイトラッカーが付いていないため、現実的ではありません。また、目の動きの速度でジオメトリを切り替えると、パフォーマンスに悪影響を及ぼす可能性があると思います。もちろん、周囲に低品質のアセットを使用しながら、プレイヤーが特定のポイントを見て、そこに
非常に

1
このSiggraph 2014ペーパーを確認してください:graphics.cs.cmu.edu/projects/multirate。読む時間はありませんでしたが、「ピクセルあたり1xフラグメントシェーダー」未満の実行で画像をシェーディングし、それでも妥当な画像を取得する方法を説明しています。おそらく、それらが概説するアルゴリズムやアイデアは、画面の端のサンプリングレートを下げてパフォーマンスを向上させるために使用できます。
TravisG 2014年

興味深いかもしれない別の論文:software.intel.com/en-us/articles/coarse-pixel-shading
TravisG

これは現在、Foveated Renderingと呼ばれています。roadtovr.com/...
バートバンHeukelom

回答:


7

多くのゲームであなたが話しているそのような効果の例があります。まず、被写界深度があります。これは、この例のように、カメラがそれに近いものだけに焦点を合わせているように、遠くにあるオブジェクトをぼやけて見せます。これに関連するサンプルをDirectX SDKパッケージでさらに探索することができます-彼らはそこにサンプルコードも持っています。OpenGLの場合、検索するとネット上に表示されます。

ここに画像の説明を入力してください

あなたが見たいかもしれない2番目のものは、名前が示唆するように、ジオメトリミップマッピングに似ていますが、ジオメトリミップマッピングまたはプログレッシブメッシュとして知られているものです。メッシュ内のポリゴンの数は、オブジェクトがカメラから遠ざかるにつれて減少します。これにより、パフォーマンスが向上します。D3Dには、プログレッシブメッシュの自動生成を支援する機能があります。ここにあります:

HRESULT WINAPI D3DXGeneratePMesh(
                                  LPD3DXMESH pMesh,
                                  const DWORD *pAdjacency,
                                 const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,             
                                  const FLOAT *pVertexWeights,
                                  DWORD MinValue,
                                  DWORD Options,
                                  LPD3DXPMESH *ppPMesh
                                 );

これの例は次のとおりです。

ここに画像の説明を入力してください

編集: 次の画像を検討してください- ここに画像の説明を入力してください

これはカメラのカリング錐台です。真ん中を通る線はLookAtベクトルです。ここで、プレーヤーが常に画面の中央に焦点を合わせたいと想定し、角度xを定義します。決定されたxよりも大きな角度で配置されるオブジェクトは、低解像度でレンダリングされ、角度内にあるオブジェクトは詳細にレンダリングされます。このように、画面の中央にあるオブジェクトは、側面にあるオブジェクトよりも詳細になります。プレーヤーが中心を見ていなければ、中心線をプレーヤーが見ている方向に合わせてください。(またはカメラ全体をその方向に回転させます)。


dofを実装することでパフォーマンスを向上できるとは思えませんが。
badweasel 14年

@badweaselまあ、それは本当です。DOFはパフォーマンスを向上させませんが、言及する価値のある効果です。遠くに飛び出すこともある、細かく分厚いジオメトリを非表示にすることができます。
The Light Spark

私はあなたの答えに賛成票を投じました。それは良い答えです。それは彼の質問の一部だったので、私はそれを指摘したかっただけです。
badweasel 14年

これらの手法では、カメラからのz距離を使用しますが、ユーザーが見ている画面上の点からのx / y距離を意味します。私はそれらがそのように適応されたと思います。
Bart van Heukelom 2014年

1
@BartvanHeukelomなぜ、プレーヤーが中心に焦点を合わせていない場合は、カメラを回転させて、中心で焦点を合わせているものを作ります。楽しそう。
ライトスパーク

2

はい、Foveated Renderingはアイトラッキングを利用して、ユーザーが見ているものを詳細にレンダリングするだけです。それ以外は、より詳細にレンダリングできます。

ここに画像の説明を入力してください

このようなスクリーンショットを見るとかなり明白ですが、VRではユーザーから見えないようです。

既存の主流のヘッドセットには(まだ)アイトラッキングは含まれていませんが、アイトラッキングを追加するアフターマーケットソリューションがいくつかあります。さらに、レンダリングプロセスには少量の追加処理が必要です。ただし、メリットは大きいです。中心窩レンダリングを実装すると、ほんの一部のFOVを詳細にレンダリングする必要があるため、フレームレートが劇的に高くなる可能性があります。正確な数は実装によって異なります。

さらに、これはVRヘッドセットに限定されません。デスクトップモニターでも使用できます(アイトラッキングが追加され、効果が制限されます)。


1

Byte56の答えを拡張すると、はい、この種のものは業界で開発されています。Fixed Foveated Renderingは、Valveのロボット修理デモ(https://youtu.be/DdL3WC_oBO4?t=769)といくつかの商用ゲーム(PSVRのバイオハザードVIIが思い浮かぶ)で採用されている手法です。固定中心窩レンダリングはアイトラッキングを採用していませんが、これは現在、アイトラッキング機能を備えていない現在のバージョンのVRヘッドセットでうまく機能することを意味します。現在、Viveは視線追跡アップグレードキットを入手することになっているため、一部のAAA VRタイトルがそれを利用しているのを確認できます。

この種のものに関連する利用可能なコードサンプルは多くありませんが、Nvidiaには、きちんと文書化されているハードウェア拡張がいくつかあります。マルチ解像度はかなりよく説明されていますが、ハードウェアに関連する機能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.