You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
2.3 KiB

  1. Shader "Hidden/SamplerNode"
  2. {
  3. Properties
  4. {
  5. _B ("_UVs", 2D) = "white" {}
  6. _C ("_Level", 2D) = "white" {}
  7. _F ("_NormalScale", 2D) = "white" {}
  8. _CustomUVs ("_CustomUVs", Int) = 0
  9. _Unpack ("_Unpack", Int) = 0
  10. _LodType ("_LodType", Int) = 0
  11. _Sampler ("_Sampler", 2D) = "white" {}
  12. _Sampler3D ("_Sampler3D", 3D) = "white" {}
  13. _Array ("_Array", 2DArray) = "white" {}
  14. _Cube( "_Cube", CUBE) = "white" {}
  15. _Default ("_Default", Int) = 0
  16. _Type ("_Type", Int) = 0
  17. }
  18. SubShader
  19. {
  20. Pass
  21. {
  22. CGPROGRAM
  23. #pragma vertex vert_img
  24. #pragma fragment frag
  25. #pragma exclude_renderers d3d9
  26. #pragma target 3.5
  27. #include "UnityCG.cginc"
  28. #include "UnityStandardUtils.cginc"
  29. sampler2D _B;
  30. sampler2D _C;
  31. sampler2D _F;
  32. int _CustomUVs;
  33. int _Unpack;
  34. int _LodType;
  35. UNITY_DECLARE_TEX2DARRAY( _Array );
  36. samplerCUBE _Cube;
  37. sampler2D _Sampler;
  38. sampler3D _Sampler3D;
  39. int _Default;
  40. int _Type;
  41. float4 frag( v2f_img i ) : SV_Target
  42. {
  43. if( _Default == 1 )
  44. {
  45. return 1;
  46. }
  47. else if( _Default == 2 )
  48. {
  49. return 0;
  50. }
  51. else if( _Default == 3 )
  52. {
  53. return 0.5f;
  54. }
  55. else if( _Default == 4 )
  56. {
  57. float4 h = float4(0.5,0.5,1,1);
  58. if ( _Unpack == 1 ) {
  59. h.rgb = UnpackScaleNormal( h.xxyy, tex2D( _F, i.uv ).r );
  60. }
  61. return h;
  62. }
  63. else
  64. {
  65. if( _Type == 4 )
  66. return UNITY_SAMPLE_TEX2DARRAY( _Array, float3( i.uv, 0 ) );
  67. else if( _Type == 3 )
  68. {
  69. float3 uvs = float3(i.uv,0);
  70. if ( _CustomUVs == 1 )
  71. uvs = tex2D( _B, i.uv ).xyz;
  72. return texCUBE( _Cube, uvs );
  73. }
  74. else if( _Type == 2 )
  75. {
  76. return tex3D( _Sampler3D, float3(i.uv,0) );
  77. }
  78. else
  79. {
  80. float2 uvs = i.uv;
  81. float4 c = 0;
  82. if ( _CustomUVs == 1 )
  83. uvs = tex2D( _B, i.uv ).xy;
  84. if ( _LodType == 1 )
  85. {
  86. float lod = tex2D( _C, i.uv ).r;
  87. c = tex2Dlod( _Sampler, float4(uvs,0,lod) );
  88. }
  89. else if ( _LodType == 2 )
  90. {
  91. float bias = tex2D( _C, i.uv ).r;
  92. c = tex2Dbias( _Sampler, float4(uvs,0,bias) );
  93. }
  94. else
  95. {
  96. c = tex2D( _Sampler, uvs );
  97. }
  98. if ( _Unpack == 1 ) {
  99. float nscale = tex2D( _F, i.uv ).r;
  100. c.rgb = UnpackScaleNormal( c, nscale );
  101. }
  102. return c;
  103. }
  104. }
  105. }
  106. ENDCG
  107. }
  108. }
  109. }