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

File Contents

# Content
1 // data from application to vertex program
2 struct vertexIn {
3 float3 Position : POSITION; // pre-defined registers
4 float4 UV : TEXCOORD0;
5 float4 Normal : NORMAL;
6 };
7 // vertex shader to pixel shader
8 struct vertexOut {
9 float4 HPosition : POSITION;
10 float4 TexCoord : TEXCOORD0;
11 float3 LightVec : TEXCOORD1;
12 float3 WorldNormal : TEXCOORD2;
13 float3 WorldPos : TEXCOORD3;
14 float3 WorldView : TEXCOORD4;
15 };
16
17 // vertex shader
18 vertexOut main(vertexIn IN, // vertex input from app
19 uniform float4x4 WorldViewProj,
20 uniform float4x4 WorldProj,
21 uniform float3 LightPos
22 )
23 {
24 vertexOut OUT; // output of the vertex shader
25 OUT.WorldNormal = mul(WorldProj, IN.Normal).xyz;
26 // position in object coords:
27 float4 Po = float4(IN.Position.x,IN.Position.y, IN.Position.z,1.0);
28 float3 Pw = mul(WorldProj, Po).xyz; // pos in world coord
29
30
31 OUT.WorldPos = Pw; // pos in world coords
32 OUT.LightVec = LightPos - Pw; // light vector
33 OUT.TexCoord = IN.UV; // original tex coords
34 // view vector in world coords:
35 OUT.WorldView = normalize (WorldViewProj[3].xyz - Pw);
36 // pos in clip coords:
37 OUT.HPosition = mul(WorldViewProj, Po);
38 return OUT; // output of vertex shader
39 }
40