Quest Browser 150.1、WebXRのWebGPU描画でfoveationを実験的にサポート
TECHBANGEO Team

Quest Browser 150.1、WebXRのWebGPU描画でfoveationを実験的にサポート

Quest Browser 150.1で追加されたfoveation(視野の周辺の描画密度を下げる技術)を、公式情報とWebGPU比較デモで解説します。

Metaは2026年8月28日公開のQuest Browser 150.1リリースノートで、WebXRのWebGPU描画におけるfoveation(視野の中心より周辺の描画密度を下げ、GPU負荷を抑える技術)の実験的なサポートを発表しました。WebXRでのWebGPU対応に続き、描画負荷を調整する機能が加わりました。

動作を確かめられるよう、BANGEOではWebGPUの比較デモを用意しました。Quest BrowserでVRを開始すると、コントローラーのトリガーでfixed foveation(視線追跡を使わない固定方式)の設定を最小値の0と最大値の1に切り替えられます。Blenderで作った魚型の3DモデルにUVテクスチャを貼り、背景には細い格子と円を配置しました。頭の向きを保ちながら、モデルの模様と視野周辺の線を比べてください。

デモページにはモデルの動きを示す短いアニメーションもあります。VRシーンのプレビューであり、foveationの効果を撮影した映像ではありません。ヘッドセットがなくても、表示されるモデルを確認できます。

Blenderで制作したBANGEOの魚型3Dモデルがゆっくり向きを変えるプレビュー

150.1で変わったこと

Quest Browser 150.1のリリースノートには、WebXRのWebGPU描画に対するfoveationの実験的なサポートが記載されています。同じリリースにはMV-HEVC動画再生の有効化と、信頼性・セキュリティ・性能の改善も含まれます。対応する方式やQuest機種ごとの効果、性能向上率は示されていません。Quest Browser 149.1ではWebGPU用Space Warp Layer、Quest Browser 146.0ではWebXRでの実験的なWebGPU対応が案内されていました。

Browser公式リリースノートにあるWebXR / WebGPU関連の更新
146.0(2026年4月21日)WebXRでの実験的なWebGPU対応
149.1(2026年7月27日)WebGPU用Space Warp Layer対応
150.1(2026年8月28日)WebXRのWebGPU描画でfoveationを実験的にサポート

Metaのfixed foveationの解説によると、GPUのピクセル処理がボトルネックになっている場面で効果が期待できます。一方、コントラストの高い画像や文字では、画質の変化が目立つことがあります。

比較デモの操作

  1. WebGPUとWebXRに対応したQuest Browserで比較デモをHTTPSで開きます。WebXRのWebGPU連携が見つからない場合は、Quest Browserの実験機能の設定を確認し、必要に応じて再起動してください。
  2. 「VRを開始」を押します。デモはimmersive-vrセッションでwebgpu機能を要求し、XRGPUBindingからWebGPU用XRProjectionLayerを作ります。
  3. 最初はfixedFoveation = 0です。VR画面の上部に青緑の帯が表示されます。中央の魚型モデルと、背景の細い格子線や円を観察します。
  4. コントローラーのトリガーを押すとfixedFoveation = 1に切り替わり、帯が赤紫になります。もう一度押すと0に戻ります。頭の向きをなるべく変えずに比べてください。
  5. 画面収録やスクリーンショットを残す場合は、0と1の両方を記録し、Questの機種、Quest Browserのバージョン、設定を添えると比較しやすくなります。

デモページには、指定値とProjection Layerから読み取った値を表示します。fixedFoveationnullの場合は、その環境でこの属性を使えないため切り替えボタンを無効にします。読み取り値が0または1であっても、それだけでGPUの負荷軽減や画像上の効果まで証明できるわけではありません。Metaのドキュメントでは、実効を調べる方法としてovrgpuprofiler -tによる確認も紹介しています。

デモが使うAPIと比較の意味

デモはWebGLで描いてから画面に重ねる構成ではありません。WebGPUのRender Pipelineで格子と円環を生成し、UV展開した3DモデルのテクスチャもWebGPUでサンプリングします。XRGPUBinding.getViewSubImage()で得た左右それぞれのProjection Layerのテクスチャへ直接描画します。WebGPU対応の有無をnavigator.gpuだけで判定せず、WebXR、XRGPUBindingimmersive-vrの対応を個別に確認します。

切り替えに使うのはXRProjectionLayer.fixedFoveationです。WebXR Layers API Level 1では、0が最小、1が最大で、具体的な描画方式と段階の解釈はブラウザ側に委ねられています。対応しない環境ではnullを返し、値を設定しても効果はありません。指定した変更は次のXRFrameから反映されます。

このデモが扱うのはfixed foveationです。視線追跡で注視点を追う方式は扱いません。画面上部の色帯は設定値を示すだけで、描画負荷の変化を示すものではありません。スクリーンショットだけではヘッドセットで見たときの周辺視野の印象が伝わりにくいため、画質は装着した状態でも確かめてください。

fixedFoveation = 0は仕様上の最小値です。ブラウザ側の描画処理が完全に無効になることまでは保証されません。デモの表示にも、仕様上の範囲を表す「最小(0)」「最大(1)」を用いています。

開発時に見るポイント

今回の更新によって、WebGPUで描画するWebXRアプリでもfixed foveationを試せます。効果はピクセル処理の負荷やシーンの細かさ、UIの位置、Quest Browserと端末の実装によって変わります。線や文字を多用する画面では、周辺部の読みやすさを確認してください。

実験的なサポートのため、製品への採用を判断するときは対象端末で設定値ごとの画質とGPU負荷を測り、Quest Browserの更新後にも確かめる必要があります。WebGPUを使ったXR描画の実装例として、Immersive WebのWebGPUサンプルも参考になります。

参考資料

XでシェアB!はてブする

デモを実際に試してみる

この技術を使用した実例を、ブラウザですぐに体験できます。

デモを見る →