CalmWater - DoubleSided.shader 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. Shader "CalmWater/Calm Water [Double Sided]"{
  2. Properties {
  3. _Color("Shallow Color",Color) = (1,1,1,1)
  4. _DepthColor("Depth Color",Color) = (0,0.5,0.5,1)
  5. _DepthStart("Depth Start",float) = 0
  6. _DepthEnd("Depth End",float) = 10
  7. [Toggle(_DEPTHFOG_ON)] _EnableFog ("Enable Depth Fog", Float) = 0
  8. _EdgeFade("Edge Fade",float) = 1
  9. //Scatter
  10. [Toggle(_SCATTER_ON)] _Scatter("Enable Scatter", Float) = 0
  11. _ScatterColor("Scatter Color", color) = (0,1,1,1)
  12. _ScatterParams("Scatter Parameters", vector) = (1,1,1,1)
  13. //Spec
  14. _SpecColor ("SpecularColor",Color) = (1,1,1,1)
  15. _Smoothness ("Smoothness",Range(0.1,2)) = 1
  16. //Second Spec
  17. _specFresnel("Fresnel", Range(0.1,4)) = 2
  18. _specIntensity("Intensity", float) = 1
  19. //Normal Map
  20. [KeywordEnum(Single,Dual,FlowMap)]
  21. _BumpMode("Bump Mode",Float) = 0
  22. _BumpMap("Micro Detail", 2D) = "bump" {}
  23. _BumpStrength ("Bump Strength",Range(0,1)) = 1
  24. _BumpMapLarge("Large Detail", 2D) = "bump" {}
  25. _BumpLargeStrength ("Bump Large Strength",Range(0,1)) = 1
  26. //FlowMap
  27. _FlowMap("FlowMap", 2D) = "grey"{}
  28. _FlowSpeed("Flow Speed", float) = 1
  29. _FlowIntensity("FlowIntensity",float) = 1
  30. //Animation
  31. [Toggle(_WORLDSPACE_ON)] _WorldSpace ("World UV", Float) = 0
  32. _Speeds ("Speeds",vector) = (0.5,0.5,0.5,0.5)
  33. _SpeedsLarge ("Speeds Large",vector) = (0.5,0.5,0,0)
  34. //[Header(Distortion)]
  35. //Distortion
  36. _Distortion("Distortion", Range(0,100) ) = 50.0
  37. [KeywordEnum(High,Low)]
  38. _DistortionQuality("Distortion Quality",Float) = 0
  39. //[Header(Reflection)]
  40. //Reflection
  41. [KeywordEnum(None,Mixed,RealTime,CubeMap)]
  42. _ReflectionType("ReflectionType", Float) = 0
  43. _CubeColor("CubeMap Color [RGB] Intensity [A]",Color) = (1,1,1,1)
  44. [NoScaleOffset]
  45. _Cube("CubeMap", Cube) = "black" {}
  46. [NoScaleOffset]
  47. _ReflectionTex ("Internal reflection", 2D) = "white" {}
  48. _CubeDist("Cube Distortion",Range(0,1)) = 0.05
  49. _Reflection("Reflection", Range(0,1) ) = 1
  50. _RimPower("Fresnel Angle", Range(0,1) ) = 0.5
  51. _ReflectionNormals("Normals", Range(0,1) ) = 1
  52. //[Header(Foam)]
  53. //Foam
  54. [Toggle(_FOAM_ON)] _FOAM ("Enable Foam", Float) = 0
  55. _FoamColor("FoamColor",Color) = (1,1,1,1)
  56. _FoamTex("Foam Texture", 2D) = "white" {}
  57. _FoamSize("Fade Size",float) = 0.5
  58. [Toggle(_WHITECAPS_ON)] _WhiteCaps ("Enable White Caps", Float) = 0
  59. _CapsIntensity("Intensity",Range(0,4)) = 1
  60. _CapsMask("Mask",2D) = "white" {}
  61. _CapsSpeed("Speed",float) = 1
  62. _CapsSize("Size",float) = 1
  63. // Caustics
  64. [Toggle(_CAUSTICS_ON)] _Caustics("Enable Caustics", Float) = 0
  65. _CausticsTex("Caustics Texture", 2D) = "black" {}
  66. _CausticsIntensity("Intensity", float) = 4
  67. _CausticsStart("Start", float) = 0
  68. _CausticsEnd("End", float) = 10
  69. _CausticsSpeed("Speed", float) = 1
  70. //Displacement
  71. [KeywordEnum(Off,Wave,Gerstner,Texture)]
  72. _DisplacementMode("Mode", Float) = 0
  73. //WaveMode
  74. _Amplitude("Amplitude", float) = 0.05
  75. _Frequency("Frequency",float) = 1
  76. _Speed("Wave Speed", float) = 1
  77. //GerstnerMode
  78. _Steepness ("Wave Steepness",float) = 1
  79. _WSpeed ("Wave Speed", Vector) = (1.2, 1.375, 1.1, 1.5)
  80. _WDirectionAB ("Wave1 Direction", Vector) = (0.3 ,0.85, 0.85, 0.25)
  81. _WDirectionCD ("Wave2 Direction", Vector) = (0.1 ,0.9, 0.5, 0.5)
  82. //Texture Mode
  83. _DisplacementTex("Displacement Texture", 2D) = "black" {}
  84. _DisplacementSpeed("Speed Params", vector) = (1,1,1,1)
  85. //Normal Smoothing
  86. _Smoothing("Smoothing",range(0,1)) = 1
  87. }
  88. Category {
  89. Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Opaque" "PreviewType"="Sphere" }
  90. ZWrite Off
  91. SubShader {
  92. GrabPass
  93. {
  94. "_GrabTexture"
  95. Name "BASE"
  96. Tags {
  97. "LightMode" = "Always"
  98. }
  99. }
  100. Pass {
  101. Tags {"LightMode" = "ForwardBase"}
  102. Name "FORWARDBACK"
  103. Cull Front
  104. ZWrite On
  105. CGPROGRAM
  106. #pragma vertex vert
  107. #pragma fragment frag
  108. #pragma multi_compile_fwdbase
  109. #pragma multi_compile_fog
  110. #pragma fragmentoption ARB_precision_hint_fastest
  111. #pragma target 3.0
  112. #ifndef UNITY_PASS_FORWARDBASE
  113. #define UNITY_PASS_FORWARDBASE
  114. #endif
  115. #define CULL_FRONT
  116. #include "UnityCG.cginc"
  117. #include "AutoLight.cginc"
  118. #include "Includes/CalmWater.cginc"
  119. #pragma shader_feature _ _BUMPMODE_SINGLE _BUMPMODE_DUAL _BUMPMODE_FLOWMAP
  120. #pragma shader_feature _ _REFLECTIONTYPE_MIXED _REFLECTIONTYPE_CUBEMAP _REFLECTIONTYPE_REALTIME
  121. #pragma shader_feature _DISTORTIONQUALITY_HIGH
  122. #pragma shader_feature _ _FOAM_ON
  123. #pragma shader_feature _ _DEPTHFOG_ON
  124. #pragma shader_feature _ _DISPLACEMENTMODE_WAVE _DISPLACEMENTMODE_GERSTNER _DISPLACEMENTMODE_TEXTURE
  125. #pragma shader_feature _ _WORLDSPACE_ON
  126. ENDCG
  127. }
  128. Pass {
  129. Tags {"LightMode" = "ForwardBase"}
  130. Name "FORWARD"
  131. Cull Back
  132. CGPROGRAM
  133. #pragma vertex vert
  134. #pragma fragment frag
  135. #pragma multi_compile_fwdbase
  136. #pragma multi_compile_fog
  137. #pragma fragmentoption ARB_precision_hint_fastest
  138. #pragma target 3.0
  139. #ifndef UNITY_PASS_FORWARDBASE
  140. #define UNITY_PASS_FORWARDBASE
  141. #endif
  142. #include "UnityCG.cginc"
  143. #include "AutoLight.cginc"
  144. #include "Includes/CalmWater.cginc"
  145. #pragma shader_feature _ _BUMPMODE_SINGLE _BUMPMODE_DUAL _BUMPMODE_FLOWMAP
  146. #pragma shader_feature _ _REFLECTIONTYPE_MIXED _REFLECTIONTYPE_CUBEMAP _REFLECTIONTYPE_REALTIME
  147. #pragma shader_feature _DISTORTIONQUALITY_HIGH
  148. #pragma shader_feature _ _FOAM_ON
  149. #pragma shader_feature _ _CAUSTICS_ON
  150. #pragma shader_feature _ _WHITECAPS_ON
  151. #pragma shader_feature _ _SCATTER_ON
  152. #pragma shader_feature _ _DEPTHFOG_ON
  153. #pragma shader_feature _ _DISPLACEMENTMODE_WAVE _DISPLACEMENTMODE_GERSTNER _DISPLACEMENTMODE_TEXTURE
  154. #pragma shader_feature _ _WORLDSPACE_ON
  155. ENDCG
  156. }
  157. Pass {
  158. Tags {"LightMode" = "ForwardAdd"}
  159. Name "FORWARDADD"
  160. Blend One One
  161. Cull Back
  162. CGPROGRAM
  163. #pragma vertex vert
  164. #pragma fragment frag
  165. //#pragma multi_compile_fwdadd
  166. //#pragma multi_compile_fog
  167. #pragma multi_compile_fwdadd_fullshadows
  168. #pragma fragmentoption ARB_precision_hint_fastest
  169. #pragma target 3.0
  170. #ifndef UNITY_PASS_FORWARDADD
  171. #define UNITY_PASS_FORWARDADD
  172. #endif
  173. #include "UnityCG.cginc"
  174. #include "Lighting.cginc"
  175. #include "AutoLight.cginc"
  176. #include "Includes/CalmWater.cginc"
  177. #pragma shader_feature _ _BUMPMODE_SINGLE _BUMPMODE_DUAL _BUMPMODE_FLOWMAP
  178. #pragma shader_feature _ _REFLECTIONTYPE_MIXED _REFLECTIONTYPE_CUBEMAP _REFLECTIONTYPE_REALTIME
  179. #pragma shader_feature _DISTORTIONQUALITY_HIGH
  180. #pragma shader_feature _ _FOAM_ON
  181. #pragma shader_feature _ _DEPTHFOG_ON
  182. #pragma shader_feature _ _DISPLACEMENTMODE_WAVE _DISPLACEMENTMODE_GERSTNER _DISPLACEMENTMODE_TEXTURE
  183. #pragma shader_feature _ _WORLDSPACE_ON
  184. ENDCG
  185. }
  186. }
  187. }
  188. CustomEditor "CalmWaterInspector"
  189. FallBack "CalmWater/Calm Water [Single Sided]"
  190. }