メインコンテンツまでスキップ
バージョン: 1.0.1

Foveated Rendering(中心窩レンダリング)

Foveated Rendering(中心窩レンダリング)は、GPUの負荷を軽減することでパフォーマンスを向上させるレンダリング手法です。

この手法を使用するには、Project Settings > XR Plug-in Management > OpenXR(Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > Foveated RenderingFoveated Rendering機能を有効にする必要があります。
alt text

Snapdragon Spaces SDKは、FFR(Fixed Foveated Rendering)を利用して、XRヘッドセットでユーザーに表示される画像を調整します。
この技術は、視界の端から画像の解像度を下げていきます。その結果、GPUが各フレームをレンダリングする際の負荷が軽減されます。これにより、フレームレートが向上し、よりスムーズな体験が得られるとともに、消費電力とデバイスの発熱が抑えられます。

機能の設定

alt text
有効になっている場合、

  • Foveationレベルは、機能設定Default Foveation Levelを通じてアプリ起動時に制御できます。
  • 静的クラスメソッドSpacesFoveatedRendering.SetFoveationLevelを呼び出して実行時にオンデマンドで制御できます。

Foveationレベルは、NoneLowMediumHighのいずれかに設定できます。

レベルビジュアルパフォーマンス
None通常のレンダリング画像です。影響無し
Low視界の最も端の解像感が低下します。わずかに向上
Medium視界の端で解像感が低下します。適度に向上
High視界の中心を除いて、解像感が低下します。最大限に向上
NOTE
  • 各レベルでのパフォーマンスの向上はハードウェアに依存します。
  • 各レベルで映像の解像感がどの程度低下するかはハードウェアに依存します。
  • 開発者自身が、Foveationを有効にすることによる視覚的な変化をベンチマークすることをおすすめします。フレームタイムはパフォーマンスへの影響を評価するのに有効な指標です。

Default Foveation Levelを設定すると、アプリ起動時に直ちにFoveationが適用されます。
これはXRのレンダリングに即座に影響し、アプリが起動するとすぐにスプラッシュスクリーンからFoveationが適用されて表示されます。
デフォルトではNoneに設定されています。

実行時にSetFoveationLevelを呼び出すと、要求に応じてfoveationレベルが変更されます。選択されたレベルは、メソッドが再度呼び出されるまで保持されます。

SpacesFoveatedRendering.SetFoveationLevel(FoveationLevel.Medium);
使用方法のTIP

このメソッドがシーン内のGameObjectにアタッチされたコンポーネントのStartで呼び出された場合、シーンが始まると即座に適用され、アプリが開いた最初のシーンであれば、スプラッシュスクリーンが表示された後に適用されます。

静的クラスメソッドSpacesFoveatedRendering.TryGetFoveationLevelを呼び出すことで、現在のFoveationレベルをコード内で知ることが出来ます。

FoveationLevel foveationLevel;
if (TryGetFoveationLevel(out foveationLevel))
{
...
}

このメソッドは、Foveated Rendering機能が無効の場合、falseを返します。
この場合、foveationLevelパラメーターもNoneに設定されます。