[Bug 33456] New: D3DXMatrixTransformation: Broken calculation when scalingrotation and scaling is used
wine-bugs at winehq.org
wine-bugs at winehq.org
Thu Apr 25 01:53:47 CDT 2013
http://bugs.winehq.org/show_bug.cgi?id=33456
Bug #: 33456
Summary: D3DXMatrixTransformation: Broken calculation when
scalingrotation and scaling is used
Product: Wine
Version: unspecified
Platform: x86
OS/Version: Linux
Status: NEW
Keywords: testcase
Severity: normal
Priority: P2
Component: directx-d3dx9
AssignedTo: wine-bugs at winehq.org
ReportedBy: kgbricola at web.de
CC: wine-bugs at winehq.org
Classification: Unclassified
Created attachment 44286
--> http://bugs.winehq.org/attachment.cgi?id=44286
D3DXMatrixTransformation test case - 22 failed tests
While trying to improve the speed of D3DXMatrixTransformation(), I found that
the calculation when using scalingrotation and scaling at the same time is
wrong.
The full formula is (according to msdn):
Mout = (Msc)-1 * (Msr)-1 * Ms * Msr * Msc * (Mrc)-1 * Mr * Mrc * Mt
while the failing part is:
(Msr)-1 * Ms * Msr
So this might not be the correct equivalent:
...
D3DXMatrixRotationQuaternion(&m4, pscalingrotation); //Msr
D3DXMatrixInverse(&m2, NULL, &m4); //Msr-1
D3DXMatrixScaling(&m3, pscaling->x, pscaling->y, pscaling->z); //Ms
...
D3DXMatrixMultiply(&m1, &m1, &m2);
D3DXMatrixMultiply(&m1, &m1, &m3);
D3DXMatrixMultiply(&m1, &m1, &m4);
...
This may affect other functions as well (e.g. D3DXMatrixTransformation2D()).
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list