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

File Contents

# User Rev Content
1 root 1.1 // final pixel output:
2     // data from pixel shader to frame buffer
3 root 1.2 struct vertexOut {
4     float4 HPosition : POSITION;
5     float4 TexCoord : TEXCOORD0;
6     float3 LightVec : TEXCOORD1;
7     float3 WorldNormal : TEXCOORD2;
8     float3 WorldPos : TEXCOORD3;
9     float3 WorldView : TEXCOORD4;
10     };
11 root 1.1
12     struct pixelOut {
13     float4 col : COLOR;
14     };
15 root 1.3
16 root 1.1 // pixel shader
17 root 1.3 pixelOut main(vertexOut IN // input from vertex shade
18     //uniform float SpecExpon, // constant parameters fro
19     //uniform float4 AmbiColor, // application
20     //uniform float4 SurfColor,
21     //uniform float4 LightColor
22 root 1.1 )
23     {
24 root 1.4 float SpecExpon = 120;
25 root 1.3 float4 AmbiColor = { 0.5, 0, 0, 1 };
26     float4 SurfColor = { 0, 0.5, 0, 1 };
27 root 1.4 float4 LightColor = { 0.5, 0.5, 0.5, 1 };
28 root 1.3
29 root 1.1 pixelOut OUT; // output of the pixel shader
30     float3 Ln = normalize(IN.LightVec);
31     float3 Nn = normalize(IN.WorldNormal);
32     float3 Vn = normalize(IN.WorldView);
33 root 1.3 float3 Hn = normalize(Vn + Ln);
34 root 1.1 // scalar product between light and normal vectors:
35     float ldn = dot(Ln,Nn);
36     // scalar product between halfway and normal vectors:
37     float hdn = dot(Hn,Nn);
38     // specialized "lit" function computes weights for
39     // diffuse and specular parts:
40     float4 litV = lit(ldn,hdn,SpecExpon);
41 root 1.4 OUT.col = litV.y * SurfColor + litV.z * LightColor;
42 root 1.3 return OUT;
43     float4 diffContrib = SurfColor * ( litV.y * LightColor + AmbiColor);
44 root 1.1 float4 specContrib = litV.y*litV.z * LightColor;
45     // sum of diffuse and specular contributions:
46     float4 result = diffContrib + specContrib;
47 root 1.3 OUT.col = result + AmbiColor;
48 root 1.1 return OUT; // output of pixel shader
49     }
50