   Specular & Fresnel using FFP
  Hello,I am being tasked with implementing a water effect in OpenGL that features specular highlighting and a Fresnel effect (it doesn't have to be any sort of true reflection; a sky color and water color will do). The catch is that I have to do it on old hardware, using OpenGL 1.4.I've never really done fixed function pipeline stuff before! I've done a little reading on multi-texturing with texture environments, but I'm a bit lost without shaders! And it has become difficult to find resources on this these days. Can someone help me achieve this effect efficiently?The effect is basically this. Very simple. I'll have two normal maps. I want to scroll them in different directions to create the (admittedly crude) appearance of wavy water. I know I can do this by simply modifying the texture matrices.So, for a given fragment, I want to sample both normal maps and lerp halfway between them to get a final normal to base the rest of my calculations on. Then, I need to normalize this normal, no? How do I do that? Is a normalization cube map, loaded into a 3rd texture stage, my only option?And once I have this normalized normal, I need to dot it with the normalized eye vector (which is EyePosition-FragmentPosition, normalized) in order to get the Fresnel value. How do I do this? Can I add the eye vector to the vertex data somehow? And then how do I normalize? Another normalization cube map?And then, even before I use this Fresnel value, I have to raise it to a power of 5 or so to get the right look. How do I do this? Do I need to have a 1D lookup texture that, when sampled, returns s^5?And then once I have that value, I need to use it to interpolate between two colors: a water color (dark bluish-green) and a sky color (sky blue). This won't require another texture, but I'll have to use a texture stage for it anyway, no? And I haven't even gotten to the specular highlight yet! That presents a lot of the same challenges as the Fresnel: I have to dot the normal, this time with a normalized "half-vector", and then raise it to a power of 128 or so, before using it to interpolate between the diffuse color, calculated in the previous step, and pure white.Will it be necessary to use multiple passes for this?   
  I'm pretty sure specular lighting can be done in fixed function (e.g. glLight(GL_LIGHT0,GL_SPECULAR,blah blah blah))For fresnel I'm guessing you'll have to go with lots of cpu calculation and creative texture mapping.   ;  Hmmm, well there seems to be all sorts of creative things you can do using the FFP on the GPU with a combination of texture stages and texture environments and such. I'm pretty sure that effects of the sort I am referring to have been done in the early 00's, it's just that when I try to work through it with my limited knowledge, I get a really unwieldy scheme. I will continue researching this, but I'm sort of hoping someone can lend me a hand because I am pressed for time on this. Heh.   