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に設定されます。