CalmWater.cginc 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "CalmWater_Variables.cginc"
  2. #include "CalmWater_Helper.cginc"
  3. #include "CalmWater_Vertex.cginc"
  4. #include "CalmWater_Tessellation.cginc"
  5. #include "CalmWater_Normals.cginc"
  6. #include "CalmWater_Refraction.cginc"
  7. #include "CalmWater_Caustics.cginc"
  8. #include "CalmWater_Scattering.cginc"
  9. #include "CalmWater_Reflections.cginc"
  10. #include "CalmWater_Foam.cginc"
  11. #include "CalmWater_Specular.cginc"
  12. #ifndef CALMWATER_INCLUDED
  13. #define CALMWATER_INCLUDED
  14. //Uncomment to enable enviro support
  15. //#include "../../Enviro - Dynamic Enviroment/Resources/Shaders/Core/EnviroFogCore.cginc"
  16. #ifndef LIGHTCOLOR
  17. #define LIGHTCOLOR
  18. uniform fixed4 _LightColor0;
  19. #endif
  20. // ============================================
  21. // Frag
  22. // ============================================
  23. fixed4 frag( v2f i ) : SV_Target
  24. {
  25. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
  26. GlobalData data;
  27. InitializeGlobalData(data, i);
  28. ComputeNormals(data, i);
  29. ComputeRefraction(data, i);
  30. ComputeCaustics(data);
  31. ComputeScattering(data, i);
  32. ComputeReflections(data, i);
  33. ComputeFoam(data, i);
  34. ComputeSpecular(data);
  35. #ifdef UNITY_PASS_FORWARDADD
  36. data.finalColor *= _LightColor0.rgb;
  37. #endif
  38. data.finalColor += data.specular;
  39. //Alpha
  40. fixed alpha = _EdgeFade * (data.cleanDepth - data.DepthUV.z) * _Color.a;
  41. fixed4 c;
  42. #ifndef UNITY_PASS_FORWARDADD
  43. //Uncomment to enable enviro support
  44. //half2 screenUV = (i.pos.xy / i.pos.w) * _ProjectionParams.x * 0.5 + 0.5;
  45. //diff = TransparentFog(float4(diff, 0), i.worldPos, screenUV, i.DepthUV.z).rgb;
  46. c.rgb = lerp(data.cleanBuffers.rgb, data.finalColor, saturate(alpha) );
  47. UNITY_APPLY_FOG(i.fogCoord, c);
  48. #else
  49. UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos.xyz)
  50. c.rgb = data.finalColor * saturate(alpha) * atten;
  51. #endif
  52. c.a = 1;
  53. return c;
  54. }
  55. #endif