T4M 6 Textures.shader 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. Shader "T4MShaders/ShaderModel3/Diffuse/T4M 6 Textures" {
  2. Properties {
  3. _Splat0 ("Layer 1 (R)", 2D) = "white" {}
  4. _Splat1 ("Layer 2 (G)", 2D) = "white" {}
  5. _Splat2 ("Layer 3 (B)", 2D) = "white" {}
  6. _Splat3 ("Layer 4 (A)", 2D) = "white" {}
  7. _Splat4 ("Layer 5", 2D) = "white" {}
  8. _Splat5 ("Layer 6", 2D) = "white" {}
  9. _Control ("Control (RGBA)", 2D) = "white" {}
  10. _Control2 ("Control2 (RGBA)", 2D) = "white" {}
  11. _MainTex ("Never Used", 2D) = "white" {}
  12. }
  13. SubShader {
  14. Tags {
  15. "SplatCount" = "6"
  16. "Queue" = "Geometry-100"
  17. "RenderType" = "Opaque"
  18. }
  19. CGPROGRAM
  20. #pragma surface surf Lambert vertex:vert
  21. #pragma target 4.0
  22. #pragma exclude_renderers gles xbox360 ps3
  23. #include "UnityCG.cginc"
  24. struct Input {
  25. float3 worldPos;
  26. float2 uv_Control : TEXCOORD0;
  27. float2 uv_Splat0 : TEXCOORD1;
  28. float2 uv_Splat1 : TEXCOORD2;
  29. float2 uv_Splat2 : TEXCOORD3;
  30. float2 uv_Splat3 : TEXCOORD4;
  31. float2 uv_Splat4 : TEXCOORD5;
  32. float2 uv_Splat5 : TEXCOORD6;
  33. };
  34. void vert (inout appdata_full v) {
  35. float3 T1 = float3(1, 0, 1);
  36. float3 Bi = cross(T1, v.normal);
  37. float3 newTangent = cross(v.normal, Bi);
  38. normalize(newTangent);
  39. v.tangent.xyz = newTangent.xyz;
  40. if (dot(cross(v.normal,newTangent),Bi) < 0)
  41. v.tangent.w = -1.0f;
  42. else
  43. v.tangent.w = 1.0f;
  44. }
  45. sampler2D _Control,_Control2;
  46. sampler2D _Splat0,_Splat1,_Splat2,_Splat3,_Splat4,_Splat5;
  47. void surf (Input IN, inout SurfaceOutput o) {
  48. half4 splat_control = tex2D (_Control, IN.uv_Control).rgba;
  49. half3 splat_control2 = tex2D (_Control2, IN.uv_Control);
  50. half3 col;
  51. half3 col2;
  52. half3 splat0 = tex2D (_Splat0, IN.uv_Splat0).rgb;
  53. half3 splat1 = tex2D (_Splat1, IN.uv_Splat1).rgb;
  54. half3 splat2 = tex2D (_Splat2, IN.uv_Splat2).rgb;
  55. half3 splat3 = tex2D (_Splat3, IN.uv_Splat3).rgb;
  56. half3 splat4 = tex2D (_Splat4, IN.uv_Splat4).rgb;
  57. half3 splat5 = tex2D (_Splat5, IN.uv_Splat5).rgb;
  58. col = splat_control.r * splat0.rgb;
  59. col += splat_control.g * splat1.rgb;
  60. col += splat_control.b * splat2.rgb;
  61. col2 = splat_control2.r * splat3.rgb;
  62. col2 += splat_control2.g * splat4.rgb;
  63. col2 += splat_control2.b * splat5.rgb;
  64. col += splat_control.a * col2.rgb;
  65. o.Albedo = col;
  66. o.Alpha = 0.0;
  67. }
  68. ENDCG
  69. }
  70. //FallBack "Diffuse"
  71. }