/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// #include \ /////////////////////////////////////////////////////////////////////////////// struct VS_INPUT { float4 posObj: POSITION; S3D_BONE_DECL_STD(boneWgh, boneSubscr) float2 tex0:TEXCOORD0; float3 normal:NORMAL; }; struct VS_OUTPUT { float4 posScr : POSITION; float3 eye : TEXCOORD0; float3 normal : TEXCOORD1; float3 posView: TEXCOORD2; }; /////////////////////////////////////////////////////////////////////////////// const float4x4 matProj; const float4x4 matProjView; const float4x4 matView; const float4x4 matViewInvTrans; S3D_MATBONE_DECL_STD(matBone) /////////////////////////////////////////////////////////////////////////////// // Vertexshader // Profile: 1x1 float4 last_Center; float4x4 worldMat; float4x4 worldMatIT; VS_OUTPUT main(VS_INPUT input) { VS_OUTPUT output = (VS_OUTPUT)0; float4x4 matBoneFinal; S3D_BONE_TRANSF_STD(matBoneFinal, matBone, input.boneWgh, input.boneSubscr); // Transform vectors by matBoneFinal float4 posView = mul(input.posObj, matBoneFinal); output.posScr = mul(posView, matProj); // vector from vertex to the eye in view-space //output.eye = mul(input.posObj, matView); //output.normal = mul(input.normal, matViewInvTrans); //output.posView = mul(float4(input.posObj.xyz, 0), matView); output.normal = mul(mul(input.normal, matViewInvTrans), worldMatIT); output.eye = mul(posView, worldMatIT).xyz; output.posView = mul(posView, worldMat); output.posView -= last_Center; return output; } ///////////////////////////////////////////////////////////////////////////////