ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/fsh.cg
Revision: 1.3
Committed: Tue Oct 5 07:35:26 2004 UTC (19 years, 8 months ago) by root
Branch: MAIN
CVS Tags: knowngood
Changes since 1.2: +16 -9 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 // final pixel output:
2 // data from pixel shader to frame buffer
3 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
12 struct pixelOut {
13 float4 col : COLOR;
14 };
15
16 // pixel shader
17 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 )
23 {
24 float SpecExpon = 100;
25 float4 AmbiColor = { 0.5, 0, 0, 1 };
26 float4 SurfColor = { 0, 0.5, 0, 1 };
27 float4 LightColor = { 1, 1, 1, 1 };
28
29 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 float3 Hn = normalize(Vn + Ln);
34 // 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 OUT.col = litV.x * AmbiColor + litV.y * SurfColor + litV.z * LightColor;
42 return OUT;
43 float4 diffContrib = SurfColor * ( litV.y * LightColor + AmbiColor);
44 float4 specContrib = litV.y*litV.z * LightColor;
45 // sum of diffuse and specular contributions:
46 float4 result = diffContrib + specContrib;
47 OUT.col = result + AmbiColor;
48 return OUT; // output of pixel shader
49 }
50