123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #ifndef CALMWATER_NORMALS_INCLUDED
- #define CALMWATER_NORMALS_INCLUDED
- float3 NormalBlendReoriented(float3 A, float3 B)
- {
- float3 t = A.xyz + float3(0.0, 0.0, 1.0);
- float3 u = B.xyz * float3(-1.0, -1.0, 1.0);
- return (t / t.z) * dot(t, u) - u;
- }
- void ComputeNormals(inout GlobalData data, v2f IN)
- {
- // NormalMaps
- float3 tangentNormal = float3(0, 0, 1);
- #if _BUMPMODE_SINGLE || _BUMPMODE_DUAL
- float3 n1 = UnpackNormalScale(tex2D(_BumpMap, IN.AnimUV.xy), _BumpStrength);
- float3 n2 = UnpackNormalScale(tex2D(_BumpMap, IN.AnimUV.zw), _BumpStrength);
- tangentNormal = NormalBlendReoriented(n1, n2);
- #if _BUMPMODE_DUAL
- float3 n3 = UnpackNormalScale(tex2D(_BumpMapLarge, IN.AnimUV2), _BumpLargeStrength);
- tangentNormal = NormalBlendReoriented(tangentNormal, n3);
- #endif
- #endif
- #if _BUMPMODE_FLOWMAP
- half4 bump = SampleFlowMap(_BumpMap, IN.BumpUV, _FlowMap, IN.FlowMapUV, _FlowSpeed, _FlowIntensity);
- tangentNormal = UnpackNormalScale(bump, _BumpStrength);
- #endif
- // Tangent Normal
- data.tangentNormal = tangentNormal;
- // World Normal
- data.worldNormal = WorldNormal(IN.tspace0.xyz, IN.tspace1.xyz, IN.tspace2.xyz, tangentNormal);
- }
- #endif
|