Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
  2.  
  3. Shader "Custom/RiverShader"
  4. {
  5. Properties
  6. {
  7. _MainColor("Main Color", Color) = (0.5,0.5,0.5,1.0)
  8. _FresnelColor("Fresnel color", Color) = (1.0,1.0,1.0,1.0)
  9. _Normal1("Normal Map one", 2D) = "white" {}
  10. _Normal2("Normal Map two", 2D) = "white" {}
  11. _WaterSpeed("Water Speed", Range(0.01,0.5)) = 0.1
  12. _WaterDirection("Water direction(x,y)", Vector) = (1.0,1.0,1.0,1.0)
  13. _FoamColor("Foam Color", Color) = (1.0,1.0,1.0,1.0)
  14. _FoamAmount("Foam amount", Range(0.0,10.0)) = 1.0
  15. _FoamDistortionAmount("Foam Distortion", Range(0.0,20.0)) = 1.0
  16. _FoamDistortionSpeed("Foam Speed", Range(0.002,0.04)) = 0.02
  17. _Noise("Noise texture", 2D) = "white" {}
  18. _ReflectionAmount("Reflection Amount", Range(0.0,1.0)) = 0.5
  19. [HideInInspector]_ReflectionTex("Internal reflection", 2D) = "white" {}
  20. }
  21. SubShader
  22. {
  23. Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
  24. LOD 100
  25.  
  26. Pass
  27. {
  28. Blend SrcAlpha OneMinusSrcAlpha
  29. ZWrite Off
  30. Cull Off
  31.  
  32. CGPROGRAM
  33. #pragma vertex vert
  34. #pragma fragment frag
  35. // make fog work
  36. #pragma multi_compile_fog
  37.  
  38. #include "UnityCG.cginc"
  39.  
  40.  
  41.  
  42. struct v2f
  43. {
  44. float4 pos : SV_POSITION;
  45. float2 uv : TEXCOORD0;
  46. float4 screenPos : TEXCOORD1;
  47. float2 normal1 : TEXCOORD2;
  48. float2 normal2 : TEXCOORD3;
  49. float3 TtoW0 : TEXCOORD4;
  50. float3 TtoW1 : TEXCOORD5;
  51. float3 TtoW2 : TEXCOORD6;
  52. float2 noisy : TEXCOORD7;
  53. float3 worldPos : TEXCOORD8;
  54. float3 texCoord : TEXCOORD9;
  55. float3 viewDir : TEXCOORD10;
  56. float3 R : TEXCOORD11;
  57. UNITY_FOG_COORDS(1)
  58. };
  59.  
  60. sampler2D _MainTex;
  61. float4 _MainTex_ST, _Normal1_ST, _Normal2_ST, _Noise_ST;
  62. sampler2D _ReflectionTex;
  63. float4 _WaterDirection;
  64.  
  65. v2f vert(appdata_tan v)
  66. {
  67. v2f o;
  68. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  69. o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
  70. o.screenPos = ComputeScreenPos(o.pos);
  71. o.viewDir.xyz = WorldSpaceViewDir(v.vertex);
  72. o.worldPos = v.vertex;
  73. o.texCoord = v.texcoord;
  74. o.normal1 = TRANSFORM_TEX(v.texcoord, _Normal1);
  75. o.normal2 = TRANSFORM_TEX(v.texcoord, _Normal2);
  76. o.noisy = TRANSFORM_TEX(v.texcoord, _Noise);
  77.  
  78. //UNITY_TRANSFER_FOG(o,o.vertex);
  79. return o;
  80. }
  81.  
  82. half4 _MainColor;
  83. half4 _FresnelColor;
  84. half4 _FoamColor;
  85. float _FoamAmount;
  86. sampler2D _CameraDepthTexture;
  87. sampler2D _Normal1;
  88. sampler2D _Normal2;
  89. sampler2D _Noise;
  90. float _ReflectionAmount;
  91. float _FoamDistortionAmount;
  92. float _FoamDistortionSpeed;
  93. float _WaterSpeed;
  94. float _DistortionAmount;
  95. float _EdgeBlend;
  96.  
  97. fixed4 frag(v2f i) : SV_Target
  98. {
  99.  
  100. float offset = tex2D(_Noise, float2(i.noisy * _FoamDistortionAmount + (_Time.y * _FoamDistortionSpeed))).r;
  101.  
  102. //Distortion
  103. float phase = _Time[1] / _WaterSpeed * 2;
  104. float f = frac(phase);
  105. fixed3 normal = UnpackNormal(tex2D(_Normal1, i.normal1 * _FoamDistortionAmount + (_Time.y * _WaterSpeed)));
  106. if (f > 0.5f)
  107. f = 2.0f * (1.0f - f);
  108. else
  109. f = 2.0f * f;
  110.  
  111. fixed4 finalColor = 1.0;
  112. half4 screenWithOffset = i.screenPos + half4(normal,1.0);
  113. half4 rtReflections = tex2Dproj(_ReflectionTex, UNITY_PROJ_COORD(screenWithOffset));
  114. finalColor.rgb = lerp(_MainColor.rgb, rtReflections.rgb, _ReflectionAmount);
  115. //Foam
  116.  
  117. float depth = LinearEyeDepth(tex2Dproj(_CameraDepthTexture,UNITY_PROJ_COORD(i.screenPos)).r);
  118. float diff = (abs(depth - i.screenPos.z)) / _FoamAmount;
  119.  
  120. if (diff <= 1.0f + offset) {
  121. finalColor = _FoamColor;
  122. }
  123. return finalColor;
  124. }
  125. ENDCG
  126. }
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement