http://bugs.winehq.org/show_bug.cgi?id=31988
--- Comment #3 from Rico kgbricola@web.de 2012-10-17 10:23:40 CDT --- Just one example, may not be the real one we need to fix, but it should show where the problem is.
004c:trace:d3dx:parse_ctab_constant_type name ref_shadow_slice_depths, elements 1, index 16, defaultvalue (nil), regset D3DXRS_FLOAT4 004c:trace:d3dx:parse_ctab_constant_type class D3DXPC_VECTOR, type D3DXPT_FLOAT, rows 1, columns 3, elements 1, struct_members 0 ... 004c:trace:d3dx:ID3DXConstantTableImpl_GetConstant (0x104e0098)->((nil), 5) 004c:trace:d3dx:ID3DXConstantTableImpl_GetConstant Returning constant 0x104e0364 004c:trace:d3dx:ID3DXConstantTableImpl_GetConstantDesc (0x104e0098)->(0x104e0364, 0x106b2b84, 0x33f418) ... 0050:trace:d3dx:ID3DXConstantTableImpl_SetFloatArray (0x104e0098)->(0x13e408, 0x104e0364, 0x8681bb0, 3)
Which is: 1432 static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device, 1433 D3DXHANDLE constant, CONST FLOAT *f, UINT count) ... 1439 return set_scalar_array(iface, device, constant, f, count, D3DXPT_FLOAT); ... 1024 if (desc.Class != D3DXPC_SCALAR) // 0x104e0364 is a D3DXPC_VECTOR 1025 return D3D_OK;
Setting arrays should work for vecs and matrices. It's on my todo, but I'm still fighting with some obscure problems.