@Panajev
Cool of you to add on this. I really haven't got friendly with github yet, so I have a hard time following.
As for the updates. I use the final rippleSprite for two projects I am currently working on, so classes tend to be specific at this point.
What saved me the most time in my final classes is:
1)
Only scan inside ripple area. I calculate a simple box based on current ripple radius, and only scan that. Saved a lot of calculations, especially when the ripples are "young"
2)
Since I only simulate water, and the center in water simulation settles fast, I also do not scan ripples below a certain radius threshold. While it saves less calculations, it especially adds up on "older" ripples. ( good combination with saving on young ripples )
3)
I count ongoing calculations ( ripple vertices modified ), and based on hardware ( 4999 calculations on a 3G ), I remove oldest ripples. On an iP4 ( double tesselation due to HD ) and max 19999 calculations, it is almost unnoticeable.
4)
Texture correction is dropped above a certain radius, and only vertex lighting is done. The distortion is so subtle at this point, that vertex lighting makes a better result at higher radius. Vertex lighting at lower radius is darkened, because that makes twirls look more impressive. At hight radius vertex lighting is lightened because it makes it look more like caustics on the background.
The caustics is made like HalfLife, by scanning two patterns in opposite Y direction. I added a modulation in X direction, to make it more subtle and less repeatable.
I hope this made sense ...