Preview_TextureArrayNode.shader 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. Shader "Hidden/TextureArrayNode"
  2. {
  3. Properties
  4. {
  5. _A ("_UVs", 2D) = "white" {}
  6. _B ("_Index", 2D) = "white" {}
  7. _C ("_Lod", 2D) = "white" {}
  8. _D ("_NormalScale", 2D) = "white" {}
  9. _G ("_Tex", 2D) = "white" {}
  10. _TexConnected ("_TexConnected", Int) = 0
  11. }
  12. SubShader
  13. {
  14. Pass
  15. {
  16. CGPROGRAM
  17. #pragma vertex vert_img
  18. #pragma fragment frag
  19. #pragma target 3.5
  20. #include "UnityCG.cginc"
  21. #include "Preview.cginc"
  22. #include "UnityStandardUtils.cginc"
  23. uniform UNITY_DECLARE_TEX2DARRAY( _Sampler );
  24. sampler2D _A;
  25. sampler2D _B;
  26. sampler2D _C;
  27. sampler2D _D;
  28. sampler2D _G;
  29. float _CustomUVs;
  30. float _LodType;
  31. float _Unpack;
  32. int _TexConnected;
  33. float4 frag( v2f_img i ) : SV_Target
  34. {
  35. float2 uvs = i.uv;
  36. if ( _CustomUVs == 1 )
  37. uvs = tex2D( _A, i.uv ).xy;
  38. float n = tex2D( _D, i.uv ).r;
  39. float4 c = 0;
  40. if ( _LodType == 1 ) {
  41. float lod = tex2D( _C, i.uv ).r;
  42. c = UNITY_SAMPLE_TEX2DARRAY_LOD( _Sampler, float3( uvs, tex2D( _B, i.uv ).r ), lod );
  43. }
  44. else if( _TexConnected == 0) {
  45. c = UNITY_SAMPLE_TEX2DARRAY( _Sampler, float3( uvs, tex2D( _B, i.uv ).r ) );
  46. }
  47. else {
  48. c = tex2D( _G, uvs );
  49. }
  50. if ( _Unpack == 1 )
  51. {
  52. c.rgb = UnpackScaleNormal(c, n);
  53. }
  54. return c;
  55. }
  56. ENDCG
  57. }
  58. }
  59. }