I did have this working and it did give a watery effect but it was a massive performance hit on all but s7 level devices so I removed it
function addWater() waterDisplayGroup:scale(1,0.5) waterDisplayGroup.y = \_tileH/2 -- Create container for visual objects, width is sine 45 deg = 0.704 local containerWidth = \_tileW \* (\_maxTilesX - 1) \* 0.704 local waterWidth = containerWidth + 100 local water1 = display.newRect( 0, 0, waterWidth, waterWidth ) waterDisplayGroup:insert( water1 ) water1.rotation = 45 local water2 = display.newRect( 0, 0, waterWidth, waterWidth ) waterDisplayGroup:insert( water2 ) water2.rotation = 45 -- Set defaults for repeated textures which follow display.setDefault( "textureWrapX", "repeat" ) display.setDefault( "textureWrapY", "mirroredRepeat" ) -- Apply repeating textures and filters to objects water2.fill = { type="image", filename="images/water-fill.png" } water2.fill.scaleX = 0.01 water2.fill.scaleY = water2.fill.scaleX water2.fill.rotation = 15 water2.alpha = 0.4 if \_dayOrNight ~= "day/" then water2:setFillColor(0.3,0.3,0.3,1) end water1.fill = { type="image", filename="images/water-fill.png" } water1.fill.scaleX = 0.01 water1.fill.scaleY = water1.fill.scaleX water1.fill.rotation = -10 water1.alpha = 0.9 if \_dayOrNight ~= "day/" then water1:setFillColor(0.3,0.3,0.3,1) end water1.fill.effect = "filter.wobble" water1.fill.effect.amplitude = water1.fill.scaleX \* 2 water2.fill.effect = "filter.wobble" water2.fill.effect.amplitude = water2.fill.scaleX \* 2 -- Set defaults for repeated textures which follow display.setDefault( "textureWrapX", "clampToEdge" ) display.setDefault( "textureWrapY", "clampToEdge" ) -- Begin repeating transition function local function repeatTrans() transition.to( water1.fill, { time=4000, x=water1.fill.x+0.5, onComplete=repeatTrans }) transition.to( water2.fill, { time=4000, x=water1.fill.x+0.5 }) if ( water1.alpha == 0.9 ) then transition.to( water1, { time=3000, alpha=1, transition=easing.inOutQuad } ) transition.to( water2, { time=3600, alpha=0.6, transition=easing.inOutQuad } ) else transition.to( water1, { time=3000, alpha=0.8, transition=easing.inOutQuad } ) transition.to( water2, { time=3600, alpha=0.4, transition=easing.inOutQuad } ) end end repeatTrans() end