開発
開発
プラットフォームを選択

固定中心窩レンダリング(FFR) (廃止)

更新日時: 2024/10/18
Mobile SDK Deprecation
2022年8月31日をもって、Mobile SDKとVrApiライブラリのサポートは終了しました。今後のアップデートは、Meta MobileやPC APIの新しい更新ではなく、OpenXR拡張機能やOpenXR Mobile SDKを通じて提供されます。
Mobile SDKのサポート終了は、以下のことを意味します。
  • 新しいアプリはMetaネイティブのMobile APIにアクセスできませんが、既存のアプリは引き続き利用可能です。
  • MetaネイティブのAPIを使ったアプリの新規作成に対する支援は提供されません。既存のアプリをOpenXRに移行するための推奨事項は、開発者ガイドに記載されています。
  • MetaネイティブのAPIに関する重要なセキュリティ、プライバシー、または安全性の問題のみ対応されます。
  • MetaネイティブのMobileのテストは、自動QAテストに限定され、コア機能が動作することを確認する目的のみで行われます。
この廃止について、詳しくはMeta、OpenXRに全面的に移行: 専用APIの廃止をご覧ください。
このガイドでは、ネイティブのVRAPIアプリで固定中心窩レンダリング(FFR)を実装する方法について説明します。FFRの動作とデバッグ方法については、こちらをご覧ください。

ダイナミック中心窩形成の実装方法

FFRを使う方法として、ダイナミック中心窩形成調整がおすすめです。ダイナミックFFRを有効にするには、以下を実行します。
vrapi_SetPropertyInt( &Java, VRAPI_DYNAMIC_FOVEATION_ENABLED, true );
デフォルトでは、ダイナミック中心窩形成は無効になっています。ダイナミック中心窩形成を有効にすると、VRAPI_FOVEATION_LEVELで設定したレベルを最大とし、中心窩形成レベルが自動的に調整されます。これを設定するには、次を呼び出します。
vrapi_SetPropertyInt( &Java, VRAPI_FOVEATION_LEVEL, level );
呼び出す際、levelは、0、1、2、3、4のいずれかに設定できます。中心窩形成レベル3 (High)とレベル4 (High Top)は、ダイナミック中心窩形成では同じレベルとして処理されます。これら2つのレベルのうちどちらが選ばれるかは、VRAPI_FOVEATION_LEVELで選択したレベルに応じて決まります。例えば、VRAPI_FOVEATION_LEVELをレベル4に設定すると、ダイナミック中心窩形成はレベル0、1、2、4の間で変動します。
ダイナミック中心窩形成は、GPU使用率に基づいて中心窩形成レベルを増減します。そのため反応性が高く、固定FFRレベルと比較して期限切れフレームが作成される前に、レベルが増加します。しかし、特定のレベルで期限切れフレームが増加する場合、それらの領域ではダイナミックFFRを有効にしても無効にしてもよいでしょう。ダイナミックFFRを使うことを強くおすすめします。
ダイナミックFFRアプリの開発者が、FFRレベルが高過ぎないかどうかを確認するためにアプリを表示する場合は、次のsetpropコマンドを使うことができます。
setprop debug.oculus.foveation.dynamic 0
このコマンドによりダイナミックFFRが即座に無効になり、中心窩形成レベルがただちにVRAPI_FOVEATION_LEVELになります。アプリを非ダイナミックFFRバージョンで再コンパイルする必要はありません。

非ダイナミック固定中心窩レンダリングの実装方法

まず、デバイスで中心窩レンダリングがサポートされているかどうかを確認します。システムプロパティVRAPI_SYS_PROP_FOVEATION_AVAILABLEを確認します。中心窩レンダリングがサポートされていればVRAPI_TRUEが返されます。
次に、FFRを使うため、以下を呼び出して中心窩形成のレベルを設定します。
vrapi_SetPropertyInt( &Java, VRAPI_FOVEATION_LEVEL, level );
呼び出す際、levelは、0、1、2、3、4のいずれかに設定できます。

サブサンプルレイアウトを有効にする

中心窩レンダリングの視覚品質を向上させるには、アプリでサブサンプリングレイアウトを有効にすることをおすすめします。これにより、低解像度領域での双線形アップサンプリングが可能になり、画像がより滑らかになり、周辺のピクセル化されたアーティファクトが除去されます(以下のサンプル画像を参照)。サブサンプリングレイアウトの詳細については、GLおよびVulkanの仕様を確認してください。
サブサンプリングレイアウトを有効にするには、カラーテクスチャスワップチェーンを作成する際、VRAPI_SWAPCHAIN_CREATE_SUBSAMPLED_BIT作成フラグを含めるようにします。
ovrSwapChainCreateInfo swapChainCreateInfo = {
    .Format = colorFormat,
    .Width = width,
    .Height = height,
    .Levels = 1,
    .FaceCount = 1,
    .ArraySize = 2,
    .BufferCount = 3,
    .CreateFlags = VRAPI_SWAPCHAIN_CREATE_SUBSAMPLED_BIT, // make sure the swapchain is created with subsampled bit!
    .UsageFlags = VRAPI_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT,
};
colorTextureSwapChain = vrapi_CreateTextureSwapChain4(&swapChainCreateInfo);
ナビゲーションロゴ
日本語
© 2026 Meta