MRTK v2のExamplesに含まれているデモシーンを見ながらStanderdShaderに関して勉強していました。
一つのデモシーンを見ながらMRTK StandardShaderに触れて、前回からドキュメントを読み解いています。
英語の記事になりますので、まずは英語を勉強もかねて見ていきます。
※この記事は公式ドキュメントの画像を使用しています。
前回の記事はこちら
〇テクスチャコンバイナー(テクスチャ合成)
ピクセルごとのUnity StandardShaderとのパリティを改善するためにチャンネルパッキングを通して滑らかさ、放射、オクルージョンの値を制御できます。
パリティはエラーを検出する技術みたいです。
チャンネルパッキングを使用する場合1つのテクスチャをサンプリングしてメモリにロードするだけで済みます。
またMRTK Texture CombinerToolが用意されており使用することができます。
ツールを使用するためにはMixed Reality ToolKitタブ-> Utilities-> Texture Combinerを選択します。
このウィンドウでUnity StandardShaderを選択しAutopopulate from Standard Materialをクリックすることで自動的に入力されます。
また赤、緑、青、αの各チャンネルごとにテクスチャを手動で指定できます。
テクスチャの合成はGPUアクセラレーション(GPUによる高速処理)のためCPUにアクセス可能である必要はないです(GPUだけで行う)
〇チャンネルパッキング
チャンネルパッキングはテクスチャの赤、青、緑、透過率のα各画像チャンネルで異なるグレースケールの画像を使用することです。
ここのチャンネルはそれぞれ特定の効果のためにshaderで扱えるため描画用に赤チャンネルを使用し、鏡面反射用として緑チャンネルを使用し、サウンド情報として青チャンネルを使用し、物理情報としてαチャンネルを使用するなどができます。 各チャンネルは全く異なるレイヤーを持っているため異なるUVを使用しています。
チャンネルパッキングはその名の通り各RGBAのチャンネルそれぞれの異なる情報を持ったグレースケール画像をパッキング(梱包)する機能のようですね。
・スウィルズ
テクスチャ内の各チャンネルの順序を変更すること
例えば赤チャンネルをαチャンネルに移動してDXT5nm圧縮用画像を準備できる。
通常緑などは多くのビット数を使用するため、画像圧縮する際の手段としてスウィルズを使用するようです。
また緑が多くのビット数を使用することは人間の視覚機能が青や赤より緑の範囲で多くの情報を知覚するためです。