Diffuse.shader 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. Shader "MTE/Surface/2 Textures/Diffuse"
  2. {
  3. Properties
  4. {
  5. _Control ("Control (RGBA)", 2D) = "red" {}
  6. _Splat0 ("Layer 1", 2D) = "white" {}
  7. _Splat1 ("Layer 2", 2D) = "white" {}
  8. }
  9. CGINCLUDE
  10. #pragma surface surf Lambert vertex:MTE_SplatmapVert finalcolor:MTE_SplatmapFinalColor finalprepass:MTE_SplatmapFinalPrepass finalgbuffer:MTE_SplatmapFinalGBuffer
  11. #pragma multi_compile_fog
  12. struct Input
  13. {
  14. float2 tc_Control : TEXCOORD0;
  15. float4 tc_Splat01 : TEXCOORD1;
  16. UNITY_FOG_COORDS(2)
  17. };
  18. sampler2D _Control;
  19. float4 _Control_ST;
  20. sampler2D _Splat0,_Splat1;
  21. float4 _Splat0_ST,_Splat1_ST;
  22. #include "../../MTECommon.hlsl"
  23. void MTE_SplatmapVert(inout appdata_full v, out Input data)
  24. {
  25. UNITY_INITIALIZE_OUTPUT(Input, data);
  26. data.tc_Control.xy = TRANSFORM_TEX(v.texcoord, _Control);
  27. data.tc_Splat01.xy = TRANSFORM_TEX(v.texcoord, _Splat0);
  28. data.tc_Splat01.zw = TRANSFORM_TEX(v.texcoord, _Splat1);
  29. float4 pos = UnityObjectToClipPos(v.vertex);
  30. UNITY_TRANSFER_FOG(data, pos);
  31. }
  32. void MTE_SplatmapMix(Input IN, out half weight, out fixed4 mixedDiffuse)
  33. {
  34. half4 splat_control = tex2D(_Control, IN.tc_Control.xy);
  35. weight = dot(splat_control, half4(1, 1, 1, 1));
  36. splat_control /= (weight + 1e-3f);
  37. mixedDiffuse = 0.0f;
  38. mixedDiffuse += splat_control.r * tex2D(_Splat0, IN.tc_Splat01.xy);
  39. mixedDiffuse += splat_control.g * tex2D(_Splat1, IN.tc_Splat01.zw);
  40. }
  41. void surf(Input IN, inout SurfaceOutput o)
  42. {
  43. fixed4 mixedDiffuse;
  44. half weight;
  45. MTE_SplatmapMix(IN, weight, mixedDiffuse);
  46. o.Albedo = mixedDiffuse.rgb;
  47. o.Alpha = weight;
  48. }
  49. ENDCG
  50. Category
  51. {
  52. Tags
  53. {
  54. "Queue" = "Geometry-99"
  55. "RenderType" = "Opaque"
  56. }
  57. SubShader//for target 3.0+
  58. {
  59. CGPROGRAM
  60. #pragma target 3.0
  61. ENDCG
  62. }
  63. SubShader//for target 2.5
  64. {
  65. CGPROGRAM
  66. #pragma target 2.5
  67. ENDCG
  68. }
  69. SubShader//for target 2.0
  70. {
  71. CGPROGRAM
  72. #pragma target 2.0
  73. ENDCG
  74. }
  75. }
  76. Fallback "Diffuse"
  77. CustomEditor "MTE.MTEShaderGUI"
  78. }