CalmWater_Variables.cginc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #ifndef CALMWATER_VARIABLES_INCLUDED
  2. #define CALMWATER_VARIABLES_INCLUDED
  3. UNITY_DECLARE_SCREENSPACE_TEXTURE(_GrabTexture);
  4. UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);//Fix for depth precision
  5. sampler2D _MainTex, _BumpMap, _BumpMapLarge, _FlowMap, _CapsMask, _FoamTex, _CausticsTex, _ReflectionTex, _DisplacementTex;
  6. half4 _BumpMap_ST, _BumpMapLarge_ST, _FlowMap_ST, _CapsMask_ST, _FoamTex_ST, _CausticsTex_ST, _DisplacementTex_ST;
  7. samplerCUBE _Cube;
  8. fixed4 _Color, _DepthColor, _CubeColor, _FoamColor, _ScatterColor;
  9. #ifndef LIGHTING_INCLUDED
  10. fixed3 _SpecColor;
  11. uniform fixed4 _LightColor0;
  12. #endif
  13. half4 _GrabTexture_TexelSize;
  14. float _EdgeFade, _BumpStrength, _BumpLargeStrength, _FlowSpeed, _FlowIntensity;
  15. float _DepthStart, _DepthEnd, _Distortion, _Reflection, _ReflectionNormals,_RimPower, _FoamSize, _CapsSpeed, _CapsIntensity, _CapsSize, _CubeDist;
  16. float _CausticsIntensity, _CausticsStart, _CausticsEnd, _CausticsSpeed;
  17. float _Amplitude, _Frequency, _Speed, _Steepness;
  18. float4 _Speeds, _SpeedsLarge, _WSpeed, _WDirectionAB, _WDirectionCD, _ScatterParams, _DisplacementSpeed;
  19. half _Smoothness;
  20. float _Tess, _Smoothing, _specFresnel, _specIntensity;
  21. #ifndef LIGHTCOLOR
  22. #define LIGHTCOLOR
  23. #endif
  24. struct appdata {
  25. float4 vertex : POSITION;
  26. float3 normal : NORMAL;
  27. float4 tangent : TANGENT;
  28. float2 texcoord : TEXCOORD0;
  29. float2 texcoord1 : TEXCOORD1;
  30. float4 color : COLOR;
  31. UNITY_VERTEX_INPUT_INSTANCE_ID
  32. };
  33. // V2F
  34. struct v2f {
  35. float4 pos : SV_POSITION;
  36. fixed4 ambient : COLOR;
  37. half4 tspace0 : TEXCOORD0; // tangent.x, bitangent.x, normal.x
  38. half4 tspace1 : TEXCOORD1; // tangent.y, bitangent.y, normal.y
  39. half4 tspace2 : TEXCOORD2; // tangent.z, bitangent.z, normal.z
  40. float3 worldPos : TEXCOORD3; // w = distance
  41. float4 GrabUV : TEXCOORD4;
  42. float4 DepthUV : TEXCOORD5;
  43. #if _BUMPMODE_SINGLE ||_BUMPMODE_DUAL
  44. float4 AnimUV : TEXCOORD6;
  45. #endif
  46. #if _BUMPMODE_DUAL
  47. float2 AnimUV2 : TEXCOORD7;
  48. #endif
  49. #if _BUMPMODE_FLOWMAP
  50. float2 BumpUV : TEXCOORD6;
  51. float2 FlowMapUV : TEXCOORD7;
  52. #endif
  53. //#ifdef UNITY_PASS_FORWARDADD
  54. UNITY_SHADOW_COORDS(8)
  55. //#endif
  56. #ifdef UNITY_PASS_FORWARDBASE
  57. UNITY_FOG_COORDS(9)
  58. #endif
  59. #ifndef SHADER_API_D3D9
  60. #if _FOAM_ON || _WHITECAPS_ON
  61. float4 FoamUV : TEXCOORD10;
  62. #endif
  63. #endif
  64. UNITY_VERTEX_OUTPUT_STEREO
  65. };
  66. struct GlobalData
  67. {
  68. float pixelDepth;
  69. float cleanDepth;
  70. float depth;
  71. float4 refractedBuffers; // RGB: Refraction Color A: Refraction Depth
  72. float4 cleanBuffers; // RGB: Clear Color A: Clean Depth
  73. float3 worldPosition;
  74. float3 worldNormal;
  75. float3 tangentNormal;
  76. float3 worldViewDir;
  77. float3 lightDir;
  78. float4 GrabUV;
  79. float4 DepthUV;
  80. float3 finalColor;
  81. float3 specular;
  82. float NdotV;
  83. };
  84. void InitializeGlobalData(inout GlobalData data, v2f IN)
  85. {
  86. data.depth = 0.0;
  87. data.cleanDepth = 0.0;
  88. data.pixelDepth = IN.DepthUV.z;
  89. data.worldPosition = IN.worldPos;
  90. data.worldNormal = float3(0, 1, 0);
  91. data.tangentNormal = float3(0, 0, 1);
  92. // World ViewDir
  93. data.worldViewDir = normalize(UnityWorldSpaceViewDir(IN.worldPos.xyz));
  94. #ifdef CULL_FRONT
  95. data.worldViewDir = -data.worldViewDir;
  96. #endif
  97. // World LightDir
  98. #ifndef USING_DIRECTIONAL_LIGHT
  99. data.lightDir = normalize(UnityWorldSpaceLightDir(IN.worldPos.xyz));
  100. #else
  101. data.lightDir = normalize(_WorldSpaceLightPos0.xyz);
  102. #endif
  103. data.refractedBuffers = float4(0, 0, 0, 0);
  104. data.cleanBuffers = float4(0, 0, 0, 0);
  105. data.GrabUV = float4(0, 0, 0, 0);
  106. data.DepthUV = float4(0, 0, 0, 0);
  107. data.finalColor = float3(0, 0, 0);
  108. data.specular = float3(0, 0, 0);
  109. data.NdotV = 0.0;
  110. //data.screenUV = float4(IN.screenCoord.xyz / IN.screenCoord.w, IN.pos.z);
  111. }
  112. #endif