summaryrefslogtreecommitdiffstats
path: root/src/demos/hdr/shaders/cg/object_vp.cg
diff options
context:
space:
mode:
Diffstat (limited to 'src/demos/hdr/shaders/cg/object_vp.cg')
-rwxr-xr-xsrc/demos/hdr/shaders/cg/object_vp.cg43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/demos/hdr/shaders/cg/object_vp.cg b/src/demos/hdr/shaders/cg/object_vp.cg
new file mode 100755
index 0000000..895dc28
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/object_vp.cg
@@ -0,0 +1,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;
+}