本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はMetaXRSDKv67以降でMRTKv2.xのシェーダをオクルージョンに対応させる手順です。
前提条件
本記事では以下の記事で作成したUnity プロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com
MRTKv2.xのシェーダをオクルージョンに対応させる
独自のシェーダをオクルージョンで利用する場合、シェーダコードにいくつかの修正を加える必要があります。
シェーダの修正手順は以下のReadMeに解説されています。
github.com
MRTKv2.xのシェーダは以下のフォルダにインポートされています。
Assets/MRTK/Shaders
今回はサンプルとしてMixedRealityStandard.shaderを変更します。
186行目と194行目に以下を追加します。
// DepthAPI Environment Occlusion #pragma multi_compile _ HARD_OCCLUSION SOFT_OCCLUSION
#include "Packages/com.meta.xr.sdk.core/Shaders/EnvironmentDepth/BiRP/EnvironmentOcclusionBiRP.cginc"
325行目に以下を追加します。
META_DEPTH_VERTEX_OUTPUT(8) // the number should stand for the previous TEXCOORD# + 1
592行目に以下を追加します。
// v.vertex (object space coordinate) might have a different name in your vert shader META_DEPTH_INITIALIZE_VERTEX_OUTPUT(o, v.vertex);
778行目に以下を追加します。
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
1103行目に以下を追加します。
// Third field is for environment depth bias. 0.0 means the occlusion will be calculated with depths as they are. META_DEPTH_OCCLUDE_OUTPUT_PREMULTIPLY(i, output, 0.0);
これでシェーダの改変は完了です。MixedRealityStandardシェーダを利用するマテリアルを作成します。
Assetsフォルダ上で右クリックから[Create -> Material]で新規マテリアルを作成します。
作成したマテリアルを選択し、Inspectorビューの[Shader]から[Standard(Mixed Reality Toolkit)]を選択します。
これでMixedRealityStandardシェーダを利用するマテリアルが作成できました。
作成したマテリアルを新規作成したSphereオブジェクトにドラッグして反映します。
ビルドと動作確認
これで設定は完了です。
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com
MixedRealityStandardシェーダを利用するSphereオブジェクトが以下の通り現実の物体でオクルージョンされます。
過去バージョンの利用手順
MetaXRSDKのv67以降ではDepthAPIの利用シェーダファイル(cginc)がSDKに含まれています。
v66以前は以下のGitHubからライブラリをインポートする必要がありました。
github.com
過去バージョンでの利用手順の詳細は以下の記事を参照ください。
bluebirdofoz.hatenablog.com