http://bugs.winehq.org/show_bug.cgi?id=7284
--- Comment #30 from Tobias Jakobi liquid.acid@gmx.net 2009-03-28 18:12:09 --- Sorry, I just read the post again.
The problem seems to be in MUL, right?
I mean the D3D rcp behaviour is probably right, since the D3D8 docs mention that RCP(0.0) produces +INFTY. It's not so clear for ARB_vp and GLSL, at least I don't find anything in the docs (yet).
But what's +INFTY times ZERO? I found no clue about that in the D3D8 docs.
The ARB_vp docs only mention this: ---------------------------------------------------
The following rules apply to multiplication:
1. <x> * <y> == <y> * <x>, for all <x> and <y>. 2. +/-0.0 * <x> = +/-0.0, at least for all <x> that correspond to representable numbers (IEEE "not a number" and "infinity" encodings may be exceptions). 3. +1.0 * <x> = <x>, for all <x>.
Multiplication by zero and one should be invariant, as it may be used to evaluate conditional expressions without branching. --------------------------------------------------- So we're experiencing case 2 here?! I can't say I understand the last part properly. To me this sounds like multiplying by ZERO should always produce ZERO, regardless of the other factor.