d3dx9 [patch 1/5]: Implement D3DXSHMultiply4

Nozomi Kodama nozomi.kodama at yahoo.com
Wed Sep 26 12:09:53 CDT 2012

>On 26.09.2012 12:17, Nozomi Kodama wrote:
>> +    ta =0.28209479f * a[0]+ 0.14567312f * a[8]+ 0.12615663f * a[6];
>> +    tb =0.28209479f * b[0]+ 0.14567312f * b[8]+ 0.12615663f * b[6];
>> +    out[13] += ta * b[13] + tb * a[13];
<> +    t = a[13] * b[13];
>> +    out[0] +=0.28209479f *t;
>Please use spaces with care.
>The preferred way is "x = 123 * a[0] + 456 * b[234]; Mostly one space is enough, only use two or more if >you like to indent something, that's mostly not the case when calculating a value. Even then, please be >consistent across
 your patch.

I will take care of this one.

>> +    D3DXSHMultiply4(c, a, b);
>>What happens if you use something like D3DXSHMultiply4(c, c, c). Is that allowed?

Tests in native show that D3DXSHMultiply gives what I implemented.
We can not reuse a input variable as output (we don't obtain what we expect logically).

>Also is there a reason why it uses slightly different values than e.g. D3DXSHMultiply3? Why don't we >use defines? A problem might be to find good names... Maybe the Multiply functions could share the >same base? To me it looks like they do share a lot of calculations, And if the order doesn't matter (see >comment above) then it may be possible to rearrange the calculation.
>ta = 0.28209479f * a[0] - 0.12615663f * a[6] - 0.21850969f * a[8];
>ta = 0.28209479f * a[0] - 0.12615662f * a[6] - 0.21850968f * a[8];

I do the computations
 with a formal computation software. Unfortunately I did not use the same for D3DXSHMultiply4 and D3DXSHMultiply3 ..... (Xcas vs Maple). And obtain the exact values look beyond the capacities of these softwares.

And even the worst, since the integrated functions  oscillate, the internal algorithm of the software are not robust to compute the integrals. For a given number of significative digits, that's why we obtain slightly different  values for the both softwares.

Addind defines will add tons on variables for no gain. But I can simplify slightly the function by calling D3DXSHMultiply3.

I will give it a try. I worry about efficiency.

Best regards


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20120926/d6a13d2e/attachment.html>

More information about the wine-devel mailing list