T4M 4 Textures Toon.shader 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "T4MShaders/ShaderModel2/Toon/T4M 4 Textures Toon" {
  3. Properties {
  4. _Splat0 ("Layer 1", 2D) = "white" {}
  5. _Splat1 ("Layer 2", 2D) = "white" {}
  6. _Splat2 ("Layer 3", 2D) = "white" {}
  7. _Splat3 ("Layer 4", 2D) = "white" {}
  8. _Control ("Control (RGBA)", 2D) = "white" {}
  9. _ToonShade ("ToonShader Cubemap(RGB)", CUBE) = "" { Texgen CubeNormal }
  10. _MainTex ("Never Used", 2D) = "white" {}
  11. }
  12. CGINCLUDE
  13. #pragma exclude_renderers xbox360 ps3
  14. #include "UnityCG.cginc"
  15. fixed3 _Color;
  16. sampler2D _Splat0 ;
  17. sampler2D _Splat1 ;
  18. sampler2D _Splat2 ;
  19. sampler2D _Splat3 ;
  20. sampler2D _Control;
  21. samplerCUBE _ToonShade;
  22. struct appdata {
  23. float4 vertex : POSITION;
  24. float2 texcoord : TEXCOORD0;
  25. float3 normal : NORMAL;
  26. };
  27. struct v2f {
  28. float4 pos : SV_POSITION;
  29. float2 uv[5] : TEXCOORD0;
  30. float3 cubenormal : TEXCOORD5;
  31. };
  32. float4 _Splat0_ST;
  33. float4 _Splat1_ST;
  34. float4 _Splat2_ST;
  35. float4 _Splat3_ST;
  36. float4 _Control_ST;
  37. v2f vert (appdata v)
  38. {
  39. v2f o;
  40. o.pos = UnityObjectToClipPos (v.vertex);
  41. o.uv[0] = TRANSFORM_TEX (v.texcoord, _Splat0);
  42. o.uv[1] = TRANSFORM_TEX (v.texcoord, _Splat1);
  43. o.uv[2] = TRANSFORM_TEX (v.texcoord, _Splat2);
  44. o.uv[3] = TRANSFORM_TEX (v.texcoord, _Splat3);
  45. o.uv[4] = TRANSFORM_TEX (v.texcoord, _Control);
  46. o.cubenormal = mul (UNITY_MATRIX_MV, float4(v.normal,0));
  47. return o;
  48. }
  49. fixed4 frag (v2f i) : COLOR
  50. {
  51. fixed4 Mask = tex2D( _Control, i.uv[4].xy );
  52. fixed4 c;
  53. fixed3 cube = texCUBE(_ToonShade, i.cubenormal);
  54. c.xyz = (tex2D( _Splat0, i.uv[0].xy ).xyz * Mask.r + tex2D( _Splat1, i.uv[1].xy ).xyz * Mask.g + tex2D( _Splat2, i.uv[2].xy ).xyz * Mask.b+ tex2D( _Splat3, i.uv[3].xy ).xyz * Mask.a)*cube.rgb * 2 ;
  55. c.w = 0;
  56. return c;
  57. }
  58. ENDCG
  59. SubShader {
  60. Tags { "RenderType"="Opaque" }
  61. Pass {
  62. Cull Back
  63. CGPROGRAM
  64. #pragma vertex vert
  65. #pragma fragment frag
  66. ENDCG
  67. }
  68. }
  69. }