123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- 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 target 3.5
- #include "UnityCG.cginc"
- #include "Preview.cginc"
- #include "UnityStandardUtils.cginc"
- sampler2D _F;
- int _CustomUVs;
- int _Unpack;
- int _Default;
- float4 frag( v2f_img i ) : SV_Target
- {
- const float3 white = float3( 1, 1, 1 );
- const float3 black = float3( 0, 0, 0 );
- const float3 grey = GammaToLinearSpace( 127.0 / 255.0 ).xxx;
- const float3 bump = float3( 0.5, 0.5, 1 );
- const float3 linearGrey = ( 127.0 / 255.0 ).xxx;
- const float3 red = float3( 1, 0, 0 );
- float4 result = float4( 0, 0, 0, 1 );
- switch ( _Default )
- {
- case 1: result.rgb = white; break;
- case 2: result.rgb = black; break;
- case 3: result.rgb = grey; break;
- case 4: result.rgb = ( _Unpack == 1 ) ? UnpackScaleNormal( bump.xxyy, tex2D( _F, i.uv ).r ) : bump; break;
- case 5: result.rgb = linearGrey; break;
- case 6: result.rgb = red; break;
- }
- return result;
- }
- ENDCG
- }
- Pass
- {
- CGPROGRAM
- #pragma vertex vert_img
- #pragma fragment frag
- #pragma target 3.5
- #include "UnityCG.cginc"
- #include "Preview.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
- }
- }
- }
|