Yes, it's an array of 1D functions, but stored as a 2D texture, so that it's interpolated when you perform a lookup to it using the wave position and skew factor. So for the given point you compute the current position within the wave sample, and its skew factor (from distance to shore and depth, and current time). This creates waves moving synchronously towards the shore, with changing front as they near the land. To break up the artificial synchronous rhytm there's another random map generated, that's also changing over time, that basically controls selection from multiple such waves (each with a slightly different period, wave speed etc) coherently for continuous 10-20m regions.