見出し画像

【日本語解説】Unity 技術ロードマップ 2020 (第3回) ~「スケール可能な製品品質(Scalable Quality)」について~

前回記事。

2020年3月26日に公開された動画「Unity Roadmap 2020: Core Engine & Creator Tools」の内容を翻訳し、Unityが「過去」「現在」「未来」に向けてどのような開発をしているか、その理由なども含めを日本語解説する記事の3回目です。

本記事では、動画内の4項目のうち「スケール可能な製品品質(Scalable Quality)」について説明しています。

なお、プレゼンテーションスライドが英語なので、見にくく感じる部分もあるかもしれませんが、その場合は各セクションの「要約」だけを追いかけても把握できるように努めます。

それではどうぞ。


「スケール可能な製品品質(Scalable Quality)」の指針(指導原則)

スライド105

私たちの「スケール可能な製品品質(Scalable Quality)」における指針(指導原則)について説明します。

それは「小さなものから大きなものまで、2Dから3Dまで、クオリティを損なうことなくユーザーの皆さんが様々なタイプのゲームを構築できるようにすること」です。


アセットを使った作業

要約
・Unityは、ユーザーの皆さんに負担を与えず、そして堅牢かつ拡張性の高い新しいアセットインポートパイプラインの開発に取り組んできました
・アセットインポートの処理タイミングをずらすしたり、大規模なアセットインポートの処理性能を高めるなどして、インポート処理による作業中断の時間削減が実現されています

スライド106

まずは「アセットを使った作業」です。

ここでのミッションは、ユーザーの皆さんに負担を与えず、そして堅牢かつ拡張性の高いアセットインポートパイプラインを提供することです。

Unityは、プロジェクトの起動時間短縮にずっと取り組み続けております。

つまりそれは、必要なアセットがオンデマンドでロードされるというだけであり、皆さんはアセットの再インポートやタスクの切り替えを心配する必要はありません。


スライド108

これまでに、しっかり依存関係をトラッキングするスケーラブルな新しいアセットインポートパイプラインを開発しました。これは、オンデマンド・バックグラウンド両方のインポート機能の基盤となります。

また、より大規模なコンテンツライブラリを可能にするために、Addressable Asset Systemのパフォーマンス改善も行われました。


スライド109

Pre-releaseでは、オペレーティング システム API を使用して、ファイル ディレクトリをすべてスキャンするのではなくファイル ディレクトリの変更を監視することで、Windows上でのアセットの更新を高速化しています。

これにより、Unityと他のアプリケーション間でタスクを切り替える手間が大幅に軽減されます。


スライド110

今後は、インポート処理をすべてを前倒しで行うのではなく、必要なときだけオンデマンドでアセットを処理するようにします。

また、アセットなどを効率よく活用するためにビルドパイプラインとインポートパイプラインを統合し、インクリメンタルリビルド(incremental rebuilds)のパフォーマンスを向上させます。


スライド111

Unityは、アセットインポートによって都度発生する作業中断を減らしたいと考えています。この反復作業は苦痛でしかありません。

なのでUnityは、これらのプロセスをバックグラウンドにしたり、作業を中断させないように改善してまいります。


Universal Render Pipeline(ユニバーサルレンダリングパイプライン)

要約
・Unity 2019.3より、LightWeight Render Pipeline(LWRP)はUniversal Render Pipelineと名称変更しました
・現在は安定性とバグ修正に重点を置いてますが、Universal Render Pipelineは今後のデフォルトレンダーパイプラインにするため、従来のBuilt-in Render Pipelineの機能と同等にすることにも取り組んでいます
・Universal Render Pipelineは、ローエンドのモバイル デバイスからデスクトップやコンソールに至るまで幅広くご利用いただけます(もちろん、VR・AR・MRデバイスも)

スライド112

次は「Universal Render Pipeline」です。

ここでのミッションは、Universal Render Pipelineがクラス最高のビジュアル品質、パフォーマンス、スケーラビリティを持ち、より多くのユーザーの皆さんにお使いいただけるようになることです。

Universal Render Pipelineは、ローエンドのモバイル デバイスからデスクトップやコンソールに至るまで幅広くご利用いただけます。

UnityはこのUniversal Render Pipelineの提供を通じて、ユーザーの皆さんがより多くのプラットフォームに対応したゲームをリリースできるようにしたいと考えています。


スライド114

Unity 2019.3でLightWeight Render Pipeline(LWRP)はUniversal Render Pipelineと名称変更し、幅広いプラットフォームにスケーリングしながら美しいグラフィックとパフォーマンスを実現する強力なソリューションとなりました。


スライド115

Pre-releaseでは、安定性とバグ修正に重点を置いています。さらに複数のカメラのサポートを追加しました。


スライド116

今後は、Universal Render Pipelineの機能をBuilt-in Render Pipelineと同等にすることに取り組んでおり、Universal Render PipelineをUnityのデフォルトレンダーパイプラインにすることを目標としています。


スライド117

このようにUniversal Render Pipelineは、ローエンドのモバイルからコンソールに至るまで、すべてのプラットフォームで動作し、素晴らしいルックを実現するレンダラーであることがわかります。

それを実現するためにも、Unityは必要なすべてのサポートを構築したいと考えています。言い換えると、カメラスタッキング、アンビエントオクルージョン、ディファレンダラー、改良されたシェーダストリッピング、自分でコーディングできるポストプロセッシング・カスタムエフェクトなどの開発中の機能のためにも、堅実なパイプラインであるようにメンテナンスすることを意味します。


High Definition Render Pipeline

要約
・High Definition Render Pipeline(HDRP)はUnity 2019.3からプレビューが外れ、製品プロジェクトでもご利用いただけるようになりました
・今後は、パフォーマンスを向上させ、より多くのデバッグツールを追加し、機能を改良し、アーティストのワークフローを改善するなど、より堅実なHDRPになるよう開発に取り組んでいきます
・また、Burstを使用しパフォーマンス向上させるハイブリッドレンダラー(Hybrid Renderer)の導入も進めています

スライド118

次は「High Definition Render Pipeline」です。

ここでのミッションは、ハイエンドのハードウェア上で目を見張るような実写のようなグラフィックスを実現することです。


スライド120

Unity 2019.3 & パッケージバージョン7.2から、High Definition Render Pipeline(HDRP)はプレビューが外れました。これは、安定性のあるプラットフォームサポートを保証し、必要に応じてアップグレードパスを提供することを意味します。

また、カスタムレンダーパスやカスタムポストプロセスのサポートにより、拡張性を向上させました。


スライド121

Unity 2020.1においては、HDRPは安定化とバグ修正に重点を置いています。また、ストリーミング仮想テクスチャリング(Streaming virtual texturing)は、カスタムバージョンのHDRPを使用したテストプロジェクトとして、Unity 2020.1ベータでも利用可能です。

これは、次のパッケージバージョン・9.x-PreviewリリースのいずれかでShader Graphを使用したHDRPでサポートされる予定です。


スライド122

今後は、パフォーマンスを向上させ、より多くのデバッグツールを追加し、機能を改良し、アーティストのワークフローを改善するなど、より堅実なHDRPになるよう開発に取り組んでいきます。


スライド123

ところで、Pre-release機能のうちの一つに、現在バージョン2のハイブリッドレンダラー(Hybrid Renderer)というものがあります。これを少し解説します。


スライド125

伝統的なゲームオブジェクトレンダリングアーキテクチャ(Traditional GameObject Rendering Architecture)では、SRPフロントエンドはHDRPやURPであり、 ゲームオブジェクトのインスタンスデータは グラフィックスバックエンド(Graphics backend)に供給されます。


スライド126

一方、ハイブリッド・DOTS・レンダリング・アーキテクチャ(Hybrid DOTS Rendering Architecture)では、Burstを使用して全体的にパフォーマンスを向上させるための追加ブロックがあります。

では、これによりパフォーマンスがどのように改善するのか、またどのような改善が期待できるのかを例示します。


スライド127

10万個のエンティティを動的に出現させた場合、ハイブリッド レンダラーの最初のバージョンでは、レンダリングにかかる総フレーム時間が約37.1 ミリ秒でした。

スライド128

同じ条件でバージョン2では、表示性能が5.3 倍も速くなり、総フレーム時間は6.97 ミリ秒に短縮されました。

今後もハイブリッドレンダラーはどんどん改善されますので、ぜひご期待いただければと思います。


物理エンジン(Physics)

要約
・既存のNVIDIA PhysXエンジンだけでなく、DOTSを利用するプロジェクトでは、軽量でカスタマイズ可能な決定論的な物理エンジン(deterministic physics engine)の「Unity Physics」と、600タイトル以上の採用実績を持つ「Havok Physics」を選択することが可能です(どちらもPreviewリリース中)
・Unity PhysicsもHavok Physics も、両方ともDOTSフレームワークと連携機能しているので、そのフレームワーク上でコンテンツやゲームコードを作成すれば、どちらの物理エンジンも選択できるようになっています

スライド130

次は「物理エンジン(Physics)」です。

ここでのミッションは、リッチでインタラクティブでダイナミックな世界(ワールド)を構築するためのツールとワークフローを提供することです。


スライド132

Pre-releaseでは、軽量でカスタマイズ可能な決定論的な物理エンジン(deterministic physics engine)を必要とするユーザーのために、Unity Physics 0.3.0-Previewが利用可能になっています。

一方、Havok Physics 0.2.0-Previewは、より精度の高い物理挙動結果を要求する方や、600タイトル以上の採用実績を誇るPhysicsソリューションを使用したい方のために提供されています。


スライド133

今後は、ラグドールやジョイントのためのワークフローのツールの改善と強化に取り組んでいます。

Unityの目標は、アニメーションと物理演算によるモーションをシームレスにブレンドして、違和感のないキャラクター(の動き)を実現するワークフローを提供することです。

Unityは、Character Controllerのサンプルがこうしたキャラクターのモーションの基準と要件を満たしていることを継続的に確認しています。


スライド134

Unityは、これらの物理エンジンをユーザーの皆さんにしっかり提供できるようにすることに重点を置いています。なお、Unity Physicsパッケージはパッケージマネージャから入手可能です。

最後までお読みいただきありがとうございます。ぜひTwitterもフォローしてください。