ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/fsh.cg
Revision: 1.10
Committed: Tue Oct 5 11:25:19 2004 UTC (19 years, 8 months ago) by root
Branch: MAIN
Changes since 1.9: +16 -3 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.2 struct vertexOut {
2 root 1.8 float4 HPosition : POSITION;
3     float4 TexCoord : TEXCOORD0;
4     float3 LightVec : TEXCOORD1;
5     float3 EyeVec : TEXCOORD2;
6     float3 WorldNormal : TEXCOORD3;
7 root 1.2 };
8 root 1.1
9     struct pixelOut {
10     float4 col : COLOR;
11     };
12 root 1.3
13 root 1.7 pixelOut main(vertexOut IN)
14 root 1.1 {
15 root 1.8 pixelOut OUT; // output of the pixel shader
16    
17 root 1.4 float SpecExpon = 120;
18 root 1.5 float4 LightColor = { 1, 1, 1, 1 };
19 root 1.3
20 root 1.10 float3 n = IN.WorldNormal;
21     float3 v = IN.EyeVec;
22     float3 l = IN.LightVec;
23    
24     float r = reflect (-v, n);
25     float spec = pow (clamp (dot (l, r), 0, 1), SpecExpon);
26     float diff = clamp (dot (n, l), 0.0, 1);
27    
28     OUT.col = glstate.material.diffuse * diff + LightColor * spec;
29     return OUT;
30    
31     /*
32     float3 Ln = normalize (IN.LightVec);
33     float3 Nn = normalize (IN.WorldNormal);
34     float3 Vn = normalize (IN.EyeVec);
35 root 1.8
36     float3 Hn = 0.5 * (Ln + Vn);
37     float ldn = dot (Ln, Nn);
38     float hdn = dot (Hn, Nn);
39    
40 root 1.1 // specialized "lit" function computes weights for
41     // diffuse and specular parts:
42 root 1.8 float4 litV = lit (ldn, hdn, SpecExpon);
43     float4 diffContrib = glstate.material.diffuse * (litV.y * LightColor + glstate.lightmodel.ambient);
44     float4 specContrib = litV.y * litV.z * LightColor;
45 root 1.1 float4 result = diffContrib + specContrib;
46 root 1.8
47 root 1.5 OUT.col = result;
48 root 1.9 return OUT;
49 root 1.10 */
50 root 1.1 }
51