/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* * ====================================================================== * AUTHOR: Wei Qiao * Purdue Rendering and Perceptualization Lab (PURPL) * * Copyright (c) 2004-2012 HUBzero Foundation, LLC * * See the file "license.terms" for information on usage and * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. * ====================================================================== */ #include "common.cg" v2f main(a2v IN, uniform float4x4 modelViewProjMatrix, uniform float4x4 modelViewInv) { 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, mul(modelViewInv, IN.Position)); OUT.HPosition = mul(modelViewProjMatrix, objPos); //eye space texture coordinates OUT.TexCoord = IN.TexCoord; //world space eye position //OUT.EyeVector = normalize(-IN.Position.xyz); OUT.EyeVector = normalize(eyePosObjSpace - objPos); //world space light postion //OUT.Light = normalize(float3(1,1,1)-IN.Position.xyz); OUT.Light = normalize(mul(modelViewInv, float4(1,1,1,1))-objPos); return OUT; }