Guest User

Untitled

a guest
Nov 18th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. Shader "BlendModes/Extra/UIOverlay"
  2. {
  3. Properties
  4. {
  5. [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
  6. _OverlayTex1("Overlay Texture 1", 2D) = "white" {}
  7. _OverlayTex2("Overlay Texture 2", 2D) = "white" {}
  8. _OverlayTex3("Overlay Texture 3", 2D) = "white" {}
  9. _OverlayTex4("Overlay Texture 4", 2D) = "white" {}
  10. _OverlayTex5("Overlay Texture 5", 2D) = "white" {}
  11. _OverlayColor1("Overlay Color 1", Color) = (1,1,1,0)
  12. _OverlayColor2("Overlay Color 2", Color) = (1,1,1,0)
  13. _OverlayColor3("Overlay Color 3", Color) = (1,1,1,0)
  14. _OverlayColor4("Overlay Color 4", Color) = (1,1,1,0)
  15. _OverlayColor5("Overlay Color 5", Color) = (1,1,1,0)
  16. _Color ("Tint", Color) = (1,1,1,1)
  17. }
  18.  
  19. SubShader
  20. {
  21. Tags
  22. {
  23. "Queue" = "Transparent"
  24. "IgnoreProjector" = "True"
  25. "RenderType" = "Transparent"
  26. "PreviewType" = "Plane"
  27. }
  28.  
  29. Cull Off
  30. Lighting Off
  31. ZWrite Off
  32. ZTest [unity_GUIZTestMode]
  33. Fog { Mode Off }
  34. Blend SrcAlpha OneMinusSrcAlpha
  35.  
  36. Pass
  37. {
  38. CGPROGRAM
  39.  
  40. #include "UnityCG.cginc"
  41. #include "../BlendModes.cginc"
  42.  
  43. #pragma target 3.0
  44. #pragma multi_compile BmDarken BmMultiply BmColorBurn BmLinearBurn BmDarkerColor BmLighten BmScreen BmColorDodge BmLinearDodge BmLighterColor BmOverlay BmSoftLight BmHardLight BmVividLight BmLinearLight BmPinLight BmHardMix BmDifference BmExclusion BmSubtract BmDivide BmHue BmSaturation BmColor BmLuminosity
  45. #pragma vertex ComputeVertex
  46. #pragma fragment ComputeFragment
  47.  
  48. sampler2D _MainTex;
  49. sampler2D _MainTex_ST;
  50. fixed4 _Color;
  51. sampler2D _OverlayTex1, _OverlayTex2, _OverlayTex3, _OverlayTex4, _OverlayTex5;
  52. fixed4 _OverlayColor1, _OverlayColor2, _OverlayColor3, _OverlayColor4, _OverlayColor5;
  53.  
  54. struct VertexInput
  55. {
  56. float4 Vertex : POSITION;
  57. fixed4 Color : COLOR;
  58. float2 TexCoord : TEXCOORD;
  59. };
  60.  
  61. struct VertexOutput
  62. {
  63. float4 Vertex : SV_POSITION;
  64. fixed4 Color : COLOR;
  65. float2 TexCoord : TEXCOORD;
  66. };
  67.  
  68. VertexOutput ComputeVertex (VertexInput vertexInput)
  69. {
  70. VertexOutput vertexOutput;
  71.  
  72. vertexOutput.Vertex = ObjectToClipPos(vertexInput.Vertex);
  73. vertexOutput.TexCoord = vertexInput.TexCoord;
  74. #ifdef UNITY_HALF_TEXEL_OFFSET
  75. vertexOutput.Vertex.xy += (_ScreenParams.zw - 1.0) * float2(-1.0, 1.0);
  76. #endif
  77. vertexOutput.Color = vertexInput.Color * _Color;
  78.  
  79. return vertexOutput;
  80. }
  81.  
  82. fixed4 ComputeFragment (VertexOutput vertexOutput) : SV_Target
  83. {
  84. fixed4 texColor = tex2D(_MainTex, vertexOutput.TexCoord) * vertexOutput.Color;
  85. clip(texColor.a - .01);
  86.  
  87. fixed4 grabColor;
  88. fixed4 blendResult;
  89.  
  90. grabColor = tex2D(_OverlayTex1, vertexOutput.TexCoord) * _OverlayColor1;
  91. blendResult = ColorDodge(grabColor, texColor);
  92. texColor = lerp(texColor, blendResult, grabColor.a);
  93. texColor = saturate(texColor);
  94.  
  95. grabColor = tex2D(_OverlayTex2, vertexOutput.TexCoord) * _OverlayColor2;
  96. blendResult = ColorDodge(grabColor, texColor);
  97. texColor = lerp(texColor, blendResult, grabColor.a);
  98. texColor = saturate(texColor);
  99.  
  100. grabColor = tex2D(_OverlayTex3, vertexOutput.TexCoord) * _OverlayColor3;
  101. blendResult = LinearBurn(grabColor, texColor);
  102. texColor = lerp(texColor, blendResult, grabColor.a);
  103.  
  104. //grabColor = tex2D(_OverlayTex4, vertexOutput.TexCoord) * _OverlayColor4;
  105. //blendResult = ColorDodge(grabColor, texColor);
  106. //texColor = lerp(texColor, blendResult, grabColor.a);
  107.  
  108. //grabColor = tex2D(_OverlayTex5, vertexOutput.TexCoord) * _OverlayColor5;
  109. //blendResult = ColorDodge(grabColor, texColor);
  110. //texColor = lerp(texColor, blendResult, grabColor.a);
  111.  
  112. return texColor;
  113. }
  114.  
  115. ENDCG
  116. }
  117. }
  118.  
  119. Fallback "UI/Default"
  120. }
Add Comment
Please, Sign In to add comment