Original Post
If anyone has a second to answer my question it would be much appreciated :) I've implemented skinned animation which works correctly in software and am attempting to switch it over to skinning on the GPU. The problem is that some of my vertices have 5 influences :( This means I can't easily pack all 5 into one UBYTE4. I think my main problems are: I've been using D3DVERTEXELEMENT9 SkinDecl[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION, 0 }, { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 }, { 0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, { 0, 32, D3DDECLTYPE_UBYTE4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDINDICES, 0 }, { 0, 36, D3DDECLTYPE_UBYTE4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 }, { 0, 40, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDWEIGHT, 0 }, { 0, 56, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 2 }, D3DDECL_END() }; I essentially need 8 influences/weights but it wouldn't let me use D3DDECLUSAGE_BLENDWEIGHT or D3DDECLUSAGE_BLENDINDICES twice. My input struct in the shader is: struct skinnedVertIn { float3 position : POSITION; float3 normal : NORMAL; float2 baseTCoord : TEXCOORD0; float4 infs : BLENDINDICES0; float4 infs1: TEXCOORD1; float4 weights : BLENDWEIGHT0; float4 weights1: TEXCOORD2; }; Lastly, here's my vertex as declared in my program: struct SKINVERT { D3DXVECTOR3 pos; D3DXVECTOR3 normal; float u,v; unsigned char infs[8]; float weights[8]; }; Also I'm a little confused about how to transform my vert in the shader. Should I combine my joint's bind pose inverse matrix with it's current pose matrix in software and then just pass that to my shader? Thanks in advance :) Erik