123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #ifndef CALMWATER_VARIABLES_INCLUDED
- #define CALMWATER_VARIABLES_INCLUDED
- UNITY_DECLARE_SCREENSPACE_TEXTURE(_GrabTexture);
- UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);//Fix for depth precision
- sampler2D _MainTex, _BumpMap, _BumpMapLarge, _FlowMap, _CapsMask, _FoamTex, _CausticsTex, _ReflectionTex, _DisplacementTex;
- half4 _BumpMap_ST, _BumpMapLarge_ST, _FlowMap_ST, _CapsMask_ST, _FoamTex_ST, _CausticsTex_ST, _DisplacementTex_ST;
- samplerCUBE _Cube;
- fixed4 _Color, _DepthColor, _CubeColor, _FoamColor, _ScatterColor;
- #ifndef LIGHTING_INCLUDED
- fixed3 _SpecColor;
- uniform fixed4 _LightColor0;
- #endif
- half4 _GrabTexture_TexelSize;
- float _EdgeFade, _BumpStrength, _BumpLargeStrength, _FlowSpeed, _FlowIntensity;
- float _DepthStart, _DepthEnd, _Distortion, _Reflection, _ReflectionNormals,_RimPower, _FoamSize, _CapsSpeed, _CapsIntensity, _CapsSize, _CubeDist;
- float _CausticsIntensity, _CausticsStart, _CausticsEnd, _CausticsSpeed;
- float _Amplitude, _Frequency, _Speed, _Steepness;
- float4 _Speeds, _SpeedsLarge, _WSpeed, _WDirectionAB, _WDirectionCD, _ScatterParams, _DisplacementSpeed;
- half _Smoothness;
- float _Tess, _Smoothing, _specFresnel, _specIntensity;
- #ifndef LIGHTCOLOR
- #define LIGHTCOLOR
- #endif
- struct appdata {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- float4 tangent : TANGENT;
- float2 texcoord : TEXCOORD0;
- float2 texcoord1 : TEXCOORD1;
- float4 color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- // V2F
- struct v2f {
- float4 pos : SV_POSITION;
- fixed4 ambient : COLOR;
- half4 tspace0 : TEXCOORD0; // tangent.x, bitangent.x, normal.x
- half4 tspace1 : TEXCOORD1; // tangent.y, bitangent.y, normal.y
- half4 tspace2 : TEXCOORD2; // tangent.z, bitangent.z, normal.z
- float3 worldPos : TEXCOORD3; // w = distance
- float4 GrabUV : TEXCOORD4;
- float4 DepthUV : TEXCOORD5;
- #if _BUMPMODE_SINGLE ||_BUMPMODE_DUAL
- float4 AnimUV : TEXCOORD6;
- #endif
- #if _BUMPMODE_DUAL
- float2 AnimUV2 : TEXCOORD7;
- #endif
- #if _BUMPMODE_FLOWMAP
- float2 BumpUV : TEXCOORD6;
- float2 FlowMapUV : TEXCOORD7;
- #endif
- //#ifdef UNITY_PASS_FORWARDADD
- UNITY_SHADOW_COORDS(8)
- //#endif
- #ifdef UNITY_PASS_FORWARDBASE
- UNITY_FOG_COORDS(9)
- #endif
- #ifndef SHADER_API_D3D9
- #if _FOAM_ON || _WHITECAPS_ON
- float4 FoamUV : TEXCOORD10;
- #endif
- #endif
- UNITY_VERTEX_OUTPUT_STEREO
- };
- struct GlobalData
- {
- float pixelDepth;
- float cleanDepth;
- float depth;
- float4 refractedBuffers; // RGB: Refraction Color A: Refraction Depth
- float4 cleanBuffers; // RGB: Clear Color A: Clean Depth
- float3 worldPosition;
- float3 worldNormal;
- float3 tangentNormal;
- float3 worldViewDir;
- float3 lightDir;
- float4 GrabUV;
- float4 DepthUV;
- float3 finalColor;
- float3 specular;
- float NdotV;
- };
- void InitializeGlobalData(inout GlobalData data, v2f IN)
- {
- data.depth = 0.0;
- data.cleanDepth = 0.0;
- data.pixelDepth = IN.DepthUV.z;
- data.worldPosition = IN.worldPos;
- data.worldNormal = float3(0, 1, 0);
- data.tangentNormal = float3(0, 0, 1);
- // World ViewDir
- data.worldViewDir = normalize(UnityWorldSpaceViewDir(IN.worldPos.xyz));
- #ifdef CULL_FRONT
- data.worldViewDir = -data.worldViewDir;
- #endif
- // World LightDir
- #ifndef USING_DIRECTIONAL_LIGHT
- data.lightDir = normalize(UnityWorldSpaceLightDir(IN.worldPos.xyz));
- #else
- data.lightDir = normalize(_WorldSpaceLightPos0.xyz);
- #endif
- data.refractedBuffers = float4(0, 0, 0, 0);
- data.cleanBuffers = float4(0, 0, 0, 0);
- data.GrabUV = float4(0, 0, 0, 0);
- data.DepthUV = float4(0, 0, 0, 0);
- data.finalColor = float3(0, 0, 0);
- data.specular = float3(0, 0, 0);
- data.NdotV = 0.0;
- //data.screenUV = float4(IN.screenCoord.xyz / IN.screenCoord.w, IN.pos.z);
- }
- #endif
|