1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// object shader
#include "hdr.cg"
struct v2f
{
float4 HPosition : POSITION;
float4 P : TEXCOORD0; // position
float3 N : TEXCOORD1; // normal
float3 I : TEXCOORD2; // incident vector
};
half4 main(v2f In,
uniform samplerCUBE envMap : TEXUNIT0) : COLOR
{
half3 I = normalize(half3(In.I));
half3 N = normalize(half3(In.N));
half3 R = reflect(I, N);
// half3 T = refract(I, N, 0.9);
half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02);
half3 Creflect = texCUBE(envMap, R).rgb; // lookup reflection in HDR cube map
// half3 Crefract = texCUBE(envMap, T).rgb; // refraction
// half3 Cout = lerp(Crefract, Creflect, fresnel);
// return half4(Cout, fresnel*0.5 + 0.5);
return half4(Creflect * fresnel, 1.0);
}
|