물 쉐이더 코드

samplerCUBE EnvironmentMap : register(s0);
sampler NormalMap : register(s1);

float fresnelPower;
float fresnelBias;
float4 deepColor;
float4 shallowColor;
float4 reflectionColor;
float reflectionAmount;
float waterAmount;

struct MainV2P{
float4 Position : POSITION;
float3 TexCoord1 : TEXCOORD0;
float3 TexCoord2 : TEXCOORD1;
float3 TexCoord3 : TEXCOORD2;
float2 NormalLayer0TexCoord : TEXCOORD3;
float2 NormalLayer1TexCoord : TEXCOORD4;
float2 NormalLayer2TexCoord : TEXCOORD5;
float3 eyeVector : TEXCOORD6;
};

float4 PS_Main(in MainV2P IN) : COLOR
{
half4 t0 = tex2D(NormalMap, IN.NormalLayer0TexCoord.xy)*2.0-1.0;
half4 t1 = tex2D(NormalMap, IN.NormalLayer1TexCoord.xy)*2.0-1.0;
half4 t2 = tex2D(NormalMap, IN.NormalLayer2TexCoord.xy)*2.0-1.0;
half3 N = t0.xyz + t1.xyz + t2.xyz;

half3x3 m;
m[0] = IN.TexCoord1;
m[1] = IN.TexCoord2;
m[2] = IN.TexCoord3;
half3 Nw = mul(m, N.xyz);
Nw = normalize(Nw);

float3 E = normalize(IN.eyeVector);
half3 R = reflect(-E, Nw);
half4 reflection = texCUBE(EnvironmentMap, R);

half facing = 1.0 - max(dot(E, Nw), 0);
half fresnel = fresnelBias + (1.0-fresnelBias)*pow(facing, fresnelPower);

half4 waterColor = lerp(deepColor, shallowColor, facing);
return (waterColor*waterAmount + reflection*reflectionColor*reflectionAmount*fresnel);
}

Hugo로 만듦
JimmyStack 테마 사용 중