0001:
0002:
0003:
0004: struct vertout
0005: {
0006: float4 hpos : HPOS;
0007: float4 tcoords : TEX0;
0008: float4 eye : TEX1;
0009: float4 light : TEX2;
0010: };
0011:
0012:
0013:
0014: fragout main(vertout I
0015: , uniform texobj2D SrcTex : texunit0
0016: )
0017: {
0018: fragout O;
0019:
0020: float3 N = - 2.0f * f3tex2D( SrcTex, I.tcoords.xy ) + 1.0f;
0021: float3 E = normalize(I.eye.xyz);
0022: float3 R = -E + 2.0f * dot(E, N) * N;
0023: float3 L = normalize(I.light.xyz);
0024:
0025: float RL = max(dot(R,L), 0.0f);
0026: float NL = max(dot(N,L), 0.0f);
0027:
0028: float4 amb = {0.1f, 0.05f, 0.04f, 1};
0029: float4 dif = {1.0f, 0.6f, 0.4f, 1};
0030: float4 spe = {2.0f, 1.8f, 1.2f, 1};
0031:
0032:
0033: O.col = amb + dif*NL + spe*pow(RL, 64);
0034:
0035: return O;
0036: }
0037: