オリジナルと同じ挙動が再現できていますが…遅い orz
200粒のパーティクルもキツそうですが、水面の波紋を表現するために 64x64個 の位置と法線を毎フレーム更新しているところが Ruby にはつらすぎます。
今なら頂点属性の時間発展はバーテックスシェーダにまかせてしまうところな のですが、オリジナルは 2001 年の作品。
負荷の大きい部分はわかりきっているので、そこだけを C の拡張モジュール化 してしまえば、処理速度は改善されるはずです。しかしそれで GL Excess / Ruby を名乗ってよいものなのでしょうか。悩み中です。