MRが楽しい

MRやVRについて学習したことを書き残す

MRTK v2のドキュメントを少しずつ読み解く MRTK標準シェーダー その5

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200328095324j:plain

追加機能のドキュメント

以下は、MRTK/Standard シェーダーで利用可能ないくつかの機能の詳細です。

プリミティブクリッピング

パフォーマンスの高い平面、球、およびボックスシェイプのクリッピングです。
プリミティブのどちら側(内側または外側)をクリッピングするかを指定する機能を備えています。

クリッピングプリミティブの使用法を示すシーンは、MixedRealityToolkit.Examples/Demos/StandardShader/Scenes の ClippingExamples シーンにあります。
f:id:bluebirdofoz:20200328095359j:plain

ClippingPlane.cs、ClippingSphere.cs および ClippingBox.cs を使用すると、クリッピングプリミティブプロパティを簡単に制御できます。
f:id:bluebirdofoz:20200328095407j:plain

メッシュのアウトライン(輪郭)

多くのメッシュアウトライン手法は、後処理の手法を使用して行われます。
これは素晴らしい品質のアウトラインを提供しますが、多くのMixed Realityデバイスでは高コストとなる可能性があります。

メッシュアウトラインの使用法を示すシーンは、MixedRealityToolkit.Examples/Demos/StandardShader/Scenes の OutlineExamples シーンにあります。
f:id:bluebirdofoz:20200328095415j:plain

MeshOutline.cs および MeshOutlineHierarchy.cs を使用して、メッシュレンダラーの周囲にアウトラインをレンダリングできます。
このコンポーネントを有効にすると、アウトライン化されているオブジェクトの追加のレンダーパスが導入されます。
これは Mixed Reality デバイス上で高パフォーマンスで実行するように設計されており、ポストプロセスを利用しません。
この効果の制限として、閉じられていない(または両面である必要がある)オブジェクトではうまく機能せず、重なり合うオブジェクトで深度ソートの問題が発生する可能性があります。

アウトライン動作は、MRTK/Standard シェーダーと組み合わせて使用するように設計されています。
アウトラインマテリアルは通常、無地の色ですが、さまざまな効果を実現するように構成することもできます。

アウトラインマテリアルのデフォルトの構成は次のとおりです。
f:id:bluebirdofoz:20200328095425j:plain

1.Depth Write

アウトラインマテリアルでは無効にして、アウトラインが他のオブジェクトのレンダリングを妨げないようにする必要があります。

2.Vertex Extrusion

アウトラインをレンダリングするために有効にする必要があります。

3.Use Smooth Normals

この設定は、一部のメッシュではオプションです。押し出しは頂点法線に沿って頂点を移動することによって行われます。
デフォルトの法線に沿って押し出される一部のメッシュではアウトラインに不連続性が生じます。
これらの不連続性を修正するには、このボックスをチェックして、MeshSmoother.cs によって生成される平滑化された法線の別のセットを使用します。

MeshSmoother.cs はメッシュ上にスムーズな法線を自動的に生成するために使用できるコンポーネントです。
この方法では空間内の同じ位置を共有するメッシュ内の頂点をグループ化し、それらの頂点の法線を平均化します。
このプロセスは、基礎となるメッシュのコピーを作成するため、必要な場合にのみ使用される必要があります。
f:id:bluebirdofoz:20200328095433j:plain

1

MeshSmoother.csで生成されたスムーズな法線の例です。

2

デフォルトの法線が使用された状態です。キューブのコーナーの周りの現象に注目してください。

ステンシルテスト

構成可能なステンシルテストサポートが組み込まれているため、さまざまな効果を実現できます。
f:id:bluebirdofoz:20200328095443j:plain

インスタンス化された色のサポート

数千のGPUインスタンス化メッシュに固有のマテリアルプロパティを提供します。

トリプラナーマッピング

トリプラナーマッピングは、プログラムでメッシュにテクスチャを付けるテクニックです。
地形、UVなしのメッシュ、または形状の展開が難しい場合によく使用されます。
この実装は、ワールドまたはローカル空間の投影、ブレンドの滑らかさ、および法線マップのサポートをサポートしています。
使用する各テクスチャには3つのテクスチャサンプルが必要なのでパフォーマンスが重要な状況では控えめに使用してください。
f:id:bluebirdofoz:20200328095459j:plain

頂点押し出し

ワールド空間での頂点押し出しです。
押し出された境界ボリュームまたはメッシュの出入りの遷移を視覚化するのに役立ちます。
f:id:bluebirdofoz:20200328095508j:plain

その他

アルベド最適化を制御するためのチェックボックスがあります。
アルベドテクスチャが指定されていない場合、最適化アルベド操作は無効になります。
これは、リモートテクスチャロードの制御に役立ちます。
f:id:bluebirdofoz:20200328095520j:plain

ピクセル単位のクリッピングテクスチャ、ローカルエッジベースのアンチエイリアシング、および法線マップのスケーリングがサポートされています。