This is yet another experiment in ping-pong buffers in fragment shaders. I use a trusty 2-color Perlin Noise texture to generate a turbulance field used to offset each pixel by a certain amount each iteration. Then I have a single row of pixels at the center that are pushed across this field and faded out over time.