UnityのシェーダでUsePassにより他のシェーダのパスを使う方法です。
Unity2018.2
UsePass?
他のシェーダのパスを使用する機能です。
UnityのShaderLabの機能として提供されています。
使用例
まず適当なシェーダを作り、パスの名前を定義しておきます。
Shader "Example" { SubShader { Pass { // パスの名前を定義 Name "Base" CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 vert (float4 vertex : POSITION) : SV_POSITION { return UnityObjectToClipPos(vertex); } fixed4 frag () : SV_Target { return fixed4(1, 0, 0, 1); } ENDCG } } }
このパスを別のシェーダから使用してみます。
UsePass "[シェーダ名]/[パス名]"
で他のシェーダのパスが使えます。
Shader "Example2" { SubShader { UsePass "Example/BASE" } }
結果
レンダリング結果から、この二つのシェーダは全く同じように機能していることが確認できました。