T4M 2 Textures Toon.shader 1.6 KB

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