ux,yt, ux,yt-1 values are stored in R and G channels of 2D float32 textures. Old values are read from one texture and new calculated ux,yt+1 and ux,yt are written to another (see the page source).
Boundary points are fixed at 0 (by imageLoad() ).
Surprisingly I can't find RG32F Format Layout Qualifiers for the compute shaders (I need not may be :). Therefore RGBA32F textures are used.