本日はShader枠です。
前回に引き続きHandTrianglesShaderの中身を読み解いています。
〇HandTrianglesShaderを大雑把にみる
HandTrianglesShaderは800行に及ぶ非常に長いコードです。
例えばProperties部分だけで60行近くプロパティが記述されています。
このままではHandTrianglesShader全体がわかりにくいのでプロパティや処理を大雑把に省略すると以下のようになります。
Shader "Mixed Reality Toolkit/HandTriangles" { Properties { } SubShader { Tags { "RenderType" = "Transparent" "Queue" = "Transparent" } Blend One One ZWrite Off Tags {"DisableBatching" = "True"} LOD 100 Pass{ CGPROGRAM ENDCG } } FallBack "Mixed Reality Toolkit/Standard" }
今回大雑把にCGPROGRAM~ENDCG内を省略したSubShader内を読み解きます。
●Tags
Tags{"RenderType"="Transparent","Queue"="Transparent"}
RenderTypeとQueueタグにTransparentが指定されています。これは透過を扱えるshaderを指します。
QueueタグにTransparentを指定することでシェーダのレンダリング順を後回しにしています。
このQueueはレンダリング順(描画順)を指定します。
●Blending
Blend One One
Blendingは透明なオブジェクトの作成に使用されるもので透過率の合成を設定します。
透過率の合成にかかわるためここをコメントアウトするとパルスの透過率を維持できなくなります。
Blend One One は透過率の加算を意味します。
● ZWrite Off
ZWrite Off
ZWriteはオブジェクトのピクセルをデプスバッファに書き込むかどうかを制御しています(デフォルトでは On)。
透明の効果を描画する場合は ZWrite Off にします。
● DisableBatching
Tags {"DisableBatching" = "True"}
この記述があることでバッチングされずに描画されます。
バッチング処理とは同じマテリアルの複数のオブジェクトが存在する場合あらかじめ一つにそれらをまとめ扱う処理のことを指します。
●LOD
LOD 100
LOD(Level of Detail)はshaderの詳細レベルを指します。これは状況に応じて描画クオリティを変更する仕組みを指します。
負荷軽減のために用いられ、デバイスや状況によってそのshader処理が実行されるか使い分けられます。
●FallBack
FallBack "Mixed Reality Toolkit/Standard"
このShaderが実行できない場合MixedRealityToolkitのStandardShaderが実行されます。
以上がSubShaderをざっくりと読み解いた内容です。