http://bugs.winehq.org/show_bug.cgi?id=26967
--- Comment #4 from Stefan Dösinger stefandoesinger@gmx.at 2011-05-27 09:08:41 CDT --- 27059 looks like a duplicate. You can revert the patch in your repo, but you'll probably have to do it manually.
The underlying problem is a multiplication of 0.0 times Infinite. IEEE 754 mandates that this returns NaN. The game expects 0.
Unfortunately we can't realistically catch this in the shader, there are way too many MULs, DP3s, DP4s and other instructions that multiply two numbers. The performance impact would be way too high. The only working solution would be to lobby for an opengl extension, e.g. a "#pragma d3d_floating_point_rules" in GLSL.
Alternatively we could hope that some future GPUs or Windows drivers start returning NaN and games get fixed. This happened in the past with other floating point specialities like RCP 0.0.