User Manual

WebVR アプリケーションの最適化

はじめに

楽しいVRまたはWebVR体験を実現するには、安定した高いフレームレートが重要です。WebVRコンテンツを作成する際、開発の初期段階でテストと最適化を行い、開発中終始ターゲットフレームレートを維持することが重要です。

WebVRのレンダリングは、各目に対してシーンを1度レンダリングする必要があるため、重くなります。 PlayCanvasエンジンには、VRレンダリングが重複しないように多くの最適化が含まれていますが、ステレオレンダリングはモノラルレンダリングよりもデータ量が上がります。さらに、Oculus RiftやHTC Viveなどのデバイスは、75Hzや90Hzなどの高いフレームレートを必要とするので、フレームをレンダリングする時間がさらに短縮されます。 モバイルVRは高いフレームレートを持ちませんが、歪みレンダリングのネイティブサポートの不足という別の問題があります。これは、このポストプロセス段階がJavascriptとWebGLで行われ、オーバーヘッドが追加されることを意味します。

しかし、対策はあります。 PlayCanvasには、アプリケーションの処理時間を短縮するための機能が多数用意されています。

ランタイムのライトマップ生成

各動的ライトにはフレームごとのランタイムコストがあります。 ライトが多いほど、コストが高くなり、シーンのレンダリングが遅くなります。ライトをライトマップにベイクすることで、単にテクスチャをレンダリングする場合と同じくらい、静的ライトのコストを大幅に削減することができます。ライトマップは、お好みの3Dモデリングツールを使用してオフラインで生成することができます。また、PlayCanvasに組み込まれているRuntime Lightmap Generation機能を使用することもできます。

ランタイムのライトマップ生成についてはこちらをご確認ください。

リアルタイムシャドーの使用に関する注意

動的ライトと同様の理由から、動的シャドウにもフレームごとのランタイムコストがあります。ポイントライトは影を生成するためにシーンを6回レンダリングする必要があります。動的シャドウを作るライトの数は制限するべきです。

フィルレートとオーバードローを監視

フィルレートとは、画面上の各ピクセルに適用されるシェーダオペレーションの数を示します。フラグメントシェーダの計算が高く(ライトや複雑な素材が多いなど)、高解像度(デバイスピクセル比率が高いモバイル端末など)の場合、アプリケーションはフレームレートを高く保つためにシーンのレンダリングに時間をかけすぎてしまいます。

オーバードローとは、カメラに近い他のジオメトリによって隠されているジオメトリを描画することで上書きされるピクセルの数を示します。オーバードローが多い場合、表示されていないピクセルを描画するためにGPU処理を無駄にしていることがわかります。

WebGL Insightのような拡張機能はオーバードローを視覚化するのに役立ちます

ガベージコレクションストール

Webブラウザには、未使用のJavascriptオブジェクトの自動ガベージコレクションがあります。PlayCanvasエンジンはランタイムの割り当てを最小限に抑えるように設計されているのでコード内でも同じように注意するべきです。ベクターやその他のオブジェクトをあらかじめ割り当て、それらを再利用することで、フレーム毎にたくさんのオブジェクトが作成および破棄されることを防ぎます。

プロファイリングツール

PlayCanvasにはプロファイラツールが組み込まれています。EditorのLaunch Profilerボタンを使用して、プロファイリングを有効にしてアプリケーションを実行します。プロファイラの詳細はこちら

最適化に関する基本的なアドバイス

最適化に関する詳細のガイドラインはこちら。

This site is translated by the community. If you want to get involved visit this page