It seems that whereas the actual geometry is not displaced, the depth value of the water surface is replaced on per-pixel basis according to the height of the surface. I think that the demo is using AFFINE_DEPTH_REPLACE operation or something.
Anyone knows what "z-correct bump mapping" means at all?