I've implemented Cg support into my engine (for shaders) - so along with OpenGL, it should allow the game to run cross-platform without too much difficulty.
As someone who works for a large professional games company as the "shader guy" it always bothered me how "fiddly" shaders can be to write. The games teams end up writing loads of shaders that are only slightly different from each other.. but if a change needs to be made across all the shaders, then someone has to manually go through each one and make the change.
That's why I'm taking a slightly different approach with my game. I'll just knock up a simple Java command line program that procedurally generates the shaders (and all their permutations). Sure it's not as flexible or artist-friendly, but I think it will get the job done. So for example if a shader needs to handle 'x' point lights and 'y' directional light, then the Java program will create all those combinations for you.
er, anyway...back to work.