Fiz uma pequena experiência com animações CSS: O truque é usar gradientes CSS e animar o background-size e background position. Fiz isso em várias camadas, com opacidade variável. Veja aqui.