Looks great!
For a suggestion, try setting the waves/ripples as functions and combining them
that way like I have done. I find that much more flexible and effective. I
think it may also end up being quicker than using average. Based on previous
experience (reflection blur to be exact) I think it had come out that when
using average (for normals) each element has to get sampled at each poitn, so
several entries in an averaged normal map caan start to slow the renders down.
This is of advantage for reflection blur, however I don't think it is in this
case. Either way, I find it more flexible. Then you can take it and turn the
water into a heightfield rather than normals as well.
I would also suggests adding ripples propogating from the dolphin surfacing.
You could probably get away with a circular or elliptical ripple, use the
cylidrical map. You need to add two levels to this ripple map. One that
defines the dissipation of the ripples so that they decrease from maximum at
the dolphin to zero some distance from the dolphin (use poly_wave to control
the falloff of the ripples if you don't want it linear). The inner level
creates the actual ripples. Use the cylindrical pattern again but with
sine_wave and a frequency that matches the ripple spacing you want. You can
even add light turbulence to it so it isn't perfectly regular.
Example:
#declare Ripple= //ripple normal map
normal {
cylindrical
normal_map{
[0.0 rgb 1]
[1.0 cylindrical frequency FREQ sine_wave] //set frequency to how close
you want the ripples
}
scale 50 //scale to the size you want
translate<-9.6288,-21.3782,0> //translate to the location you want
poly_wave 6 //controls the falloff rate, higher means faster
}
-tgq