summaryrefslogtreecommitdiffstats
path: root/src/demos/hdr/shaders/cg/object_vp.cg
blob: 895dc28a5faea2216cc1f23798658e0bc83e84da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "hdr.cg"

// application to vertex shader
struct a2v 
{
    float4 Position : POSITION;
    float4 Normal   : NORMAL;
};

// vertex shader to fragment shader
struct v2f 
{
    float4 HPosition : POSITION;
    float4 P         : TEXCOORD0; // position
    float3 N         : TEXCOORD1; // normal
    float3 I         : TEXCOORD2; // incident vector
};

v2f main(a2v In,
         uniform float4x4 modelViewProj,
         uniform float4x4 model,
         uniform float3 eyePos
         )
{
  v2f Out;

  // transform position
  float4 P = mul(model, In.Position);

  // transform normal
  float3 N = transform_dir(model, In.Normal.xyz);
  N = normalize(N);

  // calculate incident vector
  float3 I = P.xyz - eyePos;

  Out.P = P;
  Out.N = N;
  Out.I = I;
 
  Out.HPosition = mul(modelViewProj, In.Position);
  return Out;
}