Shader "Hidden/SamplerNode" { Properties { _B ("_UVs", 2D) = "white" {} _C ("_Level", 2D) = "white" {} _F ("_NormalScale", 2D) = "white" {} _G ("Index", 2D) = "white" {} _CustomUVs ("_CustomUVs", Int) = 0 _Unpack ("_Unpack", Int) = 0 _LodType ("_LodType", Int) = 0 _Sampler ("_Sampler", 2D) = "white" {} _Sampler3D ("_Sampler3D", 3D) = "white" {} _Array ("_Array", 2DArray) = "white" {} _Cube( "_Cube", CUBE) = "white" {} _Default ("_Default", Int) = 0 _Type ("_Type", Int) = 0 } SubShader { Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #pragma exclude_renderers d3d9 #pragma target 3.5 #include "UnityCG.cginc" #include "UnityStandardUtils.cginc" sampler2D _F; int _CustomUVs; int _Unpack; int _Default; float4 frag( v2f_img i ) : SV_Target { if( _Default == 1 ) { return 1; } else if( _Default == 2 ) { return 0; } else if( _Default == 3 ) { return 0.5f; } else if( _Default == 4 ) { float4 h = float4(0.5,0.5,1,1); if ( _Unpack == 1 ) { h.rgb = UnpackScaleNormal( h.xxyy, tex2D( _F, i.uv ).r ); } return h; } return 1; } ENDCG } Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #pragma exclude_renderers d3d9 #pragma target 3.5 #include "UnityCG.cginc" #include "UnityStandardUtils.cginc" sampler2D _B; sampler2D _C; sampler2D _F; sampler2D _G; int _CustomUVs; int _Unpack; int _LodType; UNITY_DECLARE_TEX2DARRAY (_Array); samplerCUBE _Cube; sampler2D _Sampler; sampler3D _Sampler3D; int _Type; float4 frag (v2f_img i) : SV_Target { if (_Type == 4) { return UNITY_SAMPLE_TEX2DARRAY ( _Array, float3(i.uv, tex2D( _G, i.uv ).r ) ); } else if (_Type == 3) { float3 uvs = float3(i.uv,0); if (_CustomUVs == 1) uvs = tex2D (_B, i.uv).xyz; return texCUBE (_Cube, uvs); } else if (_Type == 2) { return tex3D (_Sampler3D, float3(i.uv,0)); } else { float2 uvs = i.uv; float4 c = 0; if (_CustomUVs == 1) uvs = tex2D (_B, i.uv).xy; if (_LodType == 1) { float lod = tex2D (_C, i.uv).r; c = tex2Dlod (_Sampler, float4(uvs,0,lod)); } else if (_LodType == 2) { float bias = tex2D (_C, i.uv).r; c = tex2Dbias (_Sampler, float4(uvs,0,bias)); } else { c = tex2D (_Sampler, uvs); } if (_Unpack == 1) { float nscale = tex2D (_F, i.uv).r; c.rgb = UnpackScaleNormal (c, nscale); } return c; } } ENDCG } } }