I'm working on the conversion from DirectX pixel and vertex shaders to GLSL function and have made a good bit of progress this weekend. At the moment, I'm able to run just about every simple vertex shader (version <= 1.4, and a few 2.0's) that I can find which already works on ARB_vertex_program (the current way that Wine handles this). I'm having a bit more trouble with pixel shaders, but I haven't really dug into it yet. Some of the really simple ones work, but I believe I'm missing a step in the texture binding code somewhere.
I've posted a patch to enable this shader generation here:
http://cmhousing.net/wine/glsl_hack4.diff
If you want to try this and help debug things, you'll have to apply the patch (it's against the current git tree as of 2:00 AM EST, May 30th). Plus, you'll need a video card and driver capable of using GLSL (type 'glxinfo' and look for "GL_ARB_shading_language_100") . You'll also have to set a new registry key in your Wine installation (it is case sensitve):
HKEY_CURRENT_USER\Software\Wine\Direct3D\UseGLSL = "enabled"
Here are a few comparison screenshots (note, yes, they should be identical ;-):
http://www.cmhousing.net/wine/aniso_arb.png (vanilla wine, or with UseGLSL != "enabled") http://www.cmhousing.net/wine/aniso_glsl.png (using GLSL)
http://www.cmhousing.net/wine/grass_arb.png http://www.cmhousing.net/wine/grass_glsl.png
http://www.cmhousing.net/wine/dolphin2_glsl.png (DX8 SDK dolphin sample)
http://www.cmhousing.net/wine/civ4_glsl.png (not *quite* there yet ;-)
In theory, once this all works, we'll be able to support shader model 2.0+, which a lot of newer games either require or strongly suggest (aka prettier graphics). Now, there are plenty of other bugs to be worked out in wined3d, so this isn't the holy grail of patches or anything, but it will take us that much closer to supporting new games. Please lend a hand if you're able to. Thanks!
(by the way, many thanks to the entire #winehackers crew for all the help along the way so far, it's been fun)