/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* * Copyright (c) 2004-2013 HUBzero Foundation, LLC * * Authors: * Wei Qiao */ #include "common.cg" v2f main(a2v IN, uniform float4x4 modelViewProjMatrix, uniform float4x4 modelViewInv, uniform float4 light0Position, uniform float4 objPlaneS, uniform float4 objPlaneT, uniform float4 objPlaneR) { v2f OUT; // IN.Position is in eye coords float4 objPos = mul(modelViewInv, IN.Position); float4 eyePosObjSpace = mul(modelViewInv, float4(0,0,0,1)); // Clip space vertex position OUT.HPosition = mul(modelViewProjMatrix, objPos); // Generate world space texture coordinates OUT.TexCoord.x = dot(objPos, objPlaneS); OUT.TexCoord.y = dot(objPos, objPlaneT); OUT.TexCoord.z = dot(objPos, objPlaneR); // World space eye position OUT.EyeVector = normalize(eyePosObjSpace - objPos); // World space light postion (light0Position is in eye coords) OUT.Light = normalize(mul(modelViewInv, light0Position)-objPos); return OUT; }