http://bugs.winehq.org/show_bug.cgi?id=8048
--- Comment #8 from Tony Ciavarella aac76@bellsouth.net 2007-08-16 12:48:22 --- At least part of the problem is that wine isn't really using GLSL.
For the C&C 3 demo (available at ftp://largedownloads.ea.com/pub/demos/CommandandConquer3/CnC3Demo.exe), wine thinks the application name is DemoGame.dat, not CNC3Demo.exe, for the purposes of looking up registry keys in wined3d_main.c's DllMain function. So, you have to set HKEY_CURRENT_USER\Software\Wine\AppDefaults\DemoGame.dat\Direct3D\UseGLSL to "enabled" to actually get wine to use GLSL. Use cnc3game.dat instead of CNC3.exe for the retail version.
I have no idea if this is a bug or a feature, but using the correct application names as described above, I can set shaders to any level and things appear to function properly.