Foveated Rendering(中心窩レンダリング)
Foveated Rendering(中心窩レンダリング)は、GPUの負荷を軽減することでパフォーマンスを向上させるレンダリング手法です。
この手法を使用するには、Project Settings > XR Plug-in Management > OpenXR(Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > Foveated Rendering
でFoveated Rendering機能を有効にする必要があります。
Snapdragon Spaces SDKは、FFR(Fixed Foveated Rendering)を利用して、XRヘッドセットでユーザーに表示される画像を調整します。
この技術は、視界の端から画像の解像度を下げていきます。その結果、GPUが各フレームをレンダリングする際の負荷が軽減されます。これにより、フレームレートが向上し、よりスムーズな体験が得られるとともに、消費電力とデバイスの発熱が抑えられます。
機能の設定
有効になっている場合、
- Foveationレベルは、機能設定
Default Foveation Level
を通じてアプリ起動時に制御できます。 - 静的クラスメソッド
SpacesFoveatedRendering.SetFoveationLevel
を呼び出して実行時にオンデマンドで制御できます。
Foveationレベルは、None
、Low
、Medium
、High
のいずれかに設定できます。
レベル | ビジュアル | パフォーマンス |
---|---|---|
None | 通常のレンダリング画像です。 | 影響無し |
Low | 視界の最も端の解像感が低下します。 | わずかに向上 |
Medium | 視界の端で解像感が低下します。 | 適度に向上 |
High | 視界の中心を除いて、解像感が低下します。 | 最大限に向上 |
- 各レベルでのパフォーマンスの向上はハードウェアに依存します。
- 各レベルで映像の解像感がどの程度低下するかはハードウェアに依存します。
- 開発者自身が、Foveationを有効にすることによる視覚的な変化をベンチマークするこ とをおすすめします。フレームタイムはパフォーマンスへの影響を評価するのに有効な指標です。
Default Foveation Level
を設定すると、アプリ起動時に直ちにFoveationが適用されます。
これはXRのレンダリングに即座に影響し、アプリが起動するとすぐにスプラッシュスクリーンからFoveationが適用されて表示されます。
デフォルトではNone
に設定されています。
実行時にSetFoveationLevel
を呼び出すと、要求に応じてfoveationレベルが変更されます。選択されたレベルは、メソッドが再度呼び出されるまで保持されます。
SpacesFoveatedRendering.SetFoveationLevel(FoveationLevel.Medium);
このメソッドがシーン内のGameObjectにアタッチされたコンポーネントのStart
で呼び出された場合、シーンが始まると即座に適用され、アプリが開いた最初のシーンであれば、スプラッシュスクリーンが表示された後に適用されます。
静的クラスメソッドSpacesFoveatedRendering.TryGetFoveationLevel
を呼び出すことで、現在のFoveationレベルをコード内で知ることが出来ます。
FoveationLevel foveationLevel;
if (TryGetFoveationLevel(out foveationLevel))
{
...
}
このメソッドは、Foveated Rendering
機能が無効の場合、false
を返します。
この場合、foveationLevel
パラメーターもNone
に設定されます。