本日はイベント登壇枠です。
本日久しぶりに開かれた熊本でのイベント、Kumamoto HoloLensMeetupで登壇を行いました。
○KumamotoHoloLens Meetupとは?
KumamotoHoloLens Meetupは熊本県で行われたHoloLensのコミュニティイベントです。
HoloLens Meetupは新型コロナウィルスが流行した20年以降はオンラインで開催されることが多いため、場所を選ばず開催されていた節がありますが、今回の熊本Meetupでは、2年ぶりにオフラインで行われ、体験会も行われました。
今回は筆者を含め3名が登壇しました。
イベントのすべての様子はこちらの動画で見ることができます。
○MixedRealityGraphicsToolsを完全に理解する。~今日から使えるMRGT~
今回はMixedRealityGraphicsTools(MRGT)に関してシェアを行いました。
○MRTK3とは?MRGTとは?
MRGTはMRTK3のパッケージの一つとして22年6月よりリリースされている新しいパッケージです。
○MRTK3とは?
MixedRealityToolkit(MRTK)はMicrosoft社によって提供されているUnityパッケージです。(一部UnrealEngine版もあります。)
HoloLensだけを対象とせずに、MetaQuestやPCVR、スマートフォンといったあらゆるxRデバイスを対象としたオープンソースプロジェクト(OSS)であり、サンプルなど使いまわすとこでノンコーディングでMixedRealityアプリケーションの作成ができます。
MRTK3はこのMRTKの第三世代で、それまでのHoloToolkit(MRTKv1)、MRTKv2と異なり名称にバージョンを意味するvという文字が消えています。
これはMRTK3がそれまでよりも機能ごとに分かれ独立した様々なパッケージに分割され提供されていることで、一括でバージョンをそろえることが難しくなったためです。
つまり今まではMRTKv2.7のようにMRTKを構成するすべてのパッケージでバージョン2.7が使用されていましたが、MRTK3では3.1や3.01,2.xなど様々なバージョンが混在することになっています。
MRTK3の3は世代やアーキテクチャを意味しています。
○MRGTとは?
MRGTはMRTK3で提供されるパッケージの一つで、グラフィックの機能がまとめて提供されています。
グラフィックに関する機能として主に次の3つの機能が提供されています。
今までのMRTKで提供されていたグラフィック関連の機能がまとめられたという感じですが、コアと切り離されグラフィックとして独立して使用可能になったため、インプットやコアなどほかの機能を導入しなくてはいけないという依存関係はなくなりました。
○高性能多機能なGraphicsToolsStandardShader
MRGTで提供されるStandardShaderは従来のMRTKで提供されていたMRTKStandardShaderの機能を引き継ぎながらもさらに発展させたシェーダーとして提供されています。
MRGTStandardShaderとして提供されている機能は次のようなものがあります。
○MRGTStandardShaderが軽量な理由
一般的にプログラムは処理を追加すればするほど純粋に計算量が増えパフォーマンスが低下します。
GraphicsToolsStandardShaderをはじめとするMRGTで提供されているShaderでは#if~#else~#endifの条件コンパイル処理が動いているため、使用する機能にのみ使用する量のコストを支払う設計となっています。
またUnityでは一般的にシーン内で使用されるShaderを減らすことで開発者としても管理がしやすく、描画のパフォーマンスも上がります。
特にSRPBatcherを使用できるURPでは、それが顕著に現れます。
一つのシェーダーで多くの表現ができることでパフォーマンスの向上を実現しています。
ShaderのほかにURP限定ではありますが、ブラーの効果を使用するとともできます。
○ここが課題MRGT
MRGTは今までの依存関係があったMRTKv2までと違い、単独で独立しただけでも非常に魅力的なパッケージです。
しかし非常に高性能な反面まだ未整備の問題もあります。
Microsoft Docsでは概要ページとAPIレファレンスのドキュメントがあります。
開発者はこれを読むことでMRGTを知り、実際のアプリケーション内で使用するための参考にしますが、ドキュメント自体がまだ充実しているとは言えません。(それでもドキュメントがあること自体が優れたオープンソースとも言えます)
具体的には記事量のほかに日本語の記事はオリジナルである英語から自動機械翻訳によって訳されているため、一部読みにくい文章となっています。
またShaderの機能に関してもほかの一般的なShaderでは提供されているもののMRGTStandardShaderでは未対応というものも一部にあります。
○まとめ
MRGTは依然と異なりグラフィックの機能として独立して使用できます。
URP,ビルドイン、様々なプラットフォームで動き、高パフォーマンスを実現します。
迷ったらMRGTを導入して困ることはないでしょう。
ぜひMRGTを使ってみてください。