56 lines
1.8 KiB (Stored with Git LFS)
HLSL
56 lines
1.8 KiB (Stored with Git LFS)
HLSL
//Stylized Water 2
|
|
//Staggart Creations (http://staggart.xyz)
|
|
//Copyright protected under Unity Asset Store EULA
|
|
|
|
#ifndef WATER_FOAM_INCLUDED
|
|
#define WATER_FOAM_INCLUDED
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
TEXTURE2D(_FoamTex);
|
|
SAMPLER(sampler_FoamTex);
|
|
|
|
#define FOAM_CHANNEL 0
|
|
|
|
float SampleFoamTexture(TEXTURE2D_PARAM(tex, samplerName), float2 uv, float2 tiling, float subTiling, float2 time, float speed, float subSpeed, float slopeMask, float slopeSpeed, float slopeStretch, bool slopeFoamOn)
|
|
{
|
|
float4 uvs = PackedUV(uv, tiling, time, speed, subTiling, subSpeed);
|
|
|
|
float f1 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.xy)[FOAM_CHANNEL];
|
|
float f2 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.zw)[FOAM_CHANNEL];
|
|
|
|
#if UNITY_COLORSPACE_GAMMA
|
|
f1 = SRGBToLinear(f1);
|
|
f2 = SRGBToLinear(f2);
|
|
#endif
|
|
|
|
float foam = saturate(f1 + f2);
|
|
|
|
if(slopeFoamOn)
|
|
{
|
|
uvs = PackedUV(uv, tiling, time, speed * slopeSpeed, subTiling, subSpeed * slopeSpeed);
|
|
//Stretch UV vertically on slope
|
|
uvs.yw *= 1-slopeStretch;
|
|
|
|
//Cannot reuse the same UV, slope foam needs to be resampled and blended in
|
|
float f3 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.xy)[FOAM_CHANNEL];
|
|
float f4 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.zw)[FOAM_CHANNEL];
|
|
|
|
#if UNITY_COLORSPACE_GAMMA
|
|
f3 = SRGBToLinear(f3);
|
|
f4 = SRGBToLinear(f4);
|
|
#endif
|
|
|
|
const half slopeFoam = saturate(f3 + f4);
|
|
|
|
foam = lerp(foam, slopeFoam, slopeMask);
|
|
}
|
|
|
|
return foam;
|
|
}
|
|
|
|
float SampleFoamTexture(float2 uv, float2 tiling, float subTiling, float2 time, float speed, float subSpeed, float slopeMask, float slopeSpeed, half slopeStretch, bool slopeFoamOn)
|
|
{
|
|
return SampleFoamTexture(TEXTURE2D_ARGS(_FoamTex, sampler_FoamTex), uv, tiling, subTiling, time, speed, subSpeed, slopeMask, slopeSpeed, slopeStretch, slopeFoamOn);
|
|
}
|
|
#endif |