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.

90 lines
2.0 KiB

  1. Shader "Hidden/LayeredBlendNode"
  2. {
  3. Properties
  4. {
  5. _A ( "_Weights", 2D) = "white" {}
  6. _B ( "_LayerBase", 2D) = "white" {}
  7. _C ( "_Layer1", 2D) = "white" {}
  8. _D ( "_Layer2", 2D ) = "white" {}
  9. _E ( "_Layer3", 2D ) = "white" {}
  10. _F ( "_Layer4", 2D ) = "white" {}
  11. }
  12. SubShader
  13. {
  14. CGINCLUDE
  15. #include "UnityCG.cginc"
  16. #pragma vertex vert_img
  17. #pragma fragment frag
  18. sampler2D _A;
  19. sampler2D _B;
  20. sampler2D _C;
  21. ENDCG
  22. Pass
  23. {
  24. CGPROGRAM
  25. float4 frag(v2f_img i) : SV_Target
  26. {
  27. float4 Weights = tex2D( _A, i.uv );
  28. float4 LayerBase = tex2D( _B, i.uv );
  29. float4 Layer1 = tex2D( _C, i.uv );
  30. return lerp ( LayerBase, Layer1, Weights.x );
  31. }
  32. ENDCG
  33. }
  34. Pass
  35. {
  36. CGPROGRAM
  37. sampler2D _D;
  38. float4 frag ( v2f_img i ) : SV_Target
  39. {
  40. float4 Weights = tex2D ( _A, i.uv );
  41. float4 LayerBase = tex2D ( _B, i.uv );
  42. float4 Layer1 = tex2D ( _C, i.uv );
  43. float4 Layer2 = tex2D ( _D, i.uv );
  44. return lerp ( lerp ( LayerBase, Layer1, Weights.x ), Layer2, Weights.y );
  45. }
  46. ENDCG
  47. }
  48. Pass
  49. {
  50. CGPROGRAM
  51. sampler2D _D;
  52. sampler2D _E;
  53. float4 frag ( v2f_img i ) : SV_Target
  54. {
  55. float4 Weights = tex2D ( _A, i.uv );
  56. float4 LayerBase = tex2D ( _B, i.uv );
  57. float4 Layer1 = tex2D ( _C, i.uv );
  58. float4 Layer2 = tex2D ( _D, i.uv );
  59. float4 Layer3 = tex2D ( _E, i.uv );
  60. return lerp ( lerp ( lerp ( LayerBase, Layer1, Weights.x ), Layer2, Weights.y ), Layer3, Weights.z );
  61. }
  62. ENDCG
  63. }
  64. Pass
  65. {
  66. CGPROGRAM
  67. sampler2D _D;
  68. sampler2D _E;
  69. sampler2D _F;
  70. float4 frag ( v2f_img i ) : SV_Target
  71. {
  72. float4 Weights = tex2D ( _A, i.uv );
  73. float4 LayerBase = tex2D ( _B, i.uv );
  74. float4 Layer1 = tex2D ( _C, i.uv );
  75. float4 Layer2 = tex2D ( _D, i.uv );
  76. float4 Layer3 = tex2D ( _E, i.uv );
  77. float4 Layer4 = tex2D ( _F, i.uv );
  78. return lerp ( lerp ( lerp ( lerp ( LayerBase, Layer1, Weights.x ), Layer2, Weights.y ), Layer3, Weights.z ), Layer4, Weights.w );
  79. }
  80. ENDCG
  81. }
  82. }
  83. }