This time I've tried to explain WaterSystem in a video.
Some usefull links:
If you know any way to improve the system - please leave a comment!
UPD June 2016: based on a benchmark on mobile devices, the system works pretty well on the mid/top devices. For old Android smartphones the fallback with no
tex2Dlod in vertex shader was created.
UPD May 2017: reflections rendering implementation is rather slow for real-time applications (here it's not noticeable because of small scene size, but in general it would be). First of all,
Shader.globalMaximumLOD heavily uses
FindObjectOfType under the hood (which you can behold in the profiler) and therefore introduces a large penalty on CPU usage. Another flaw is using GPU rendering results (reflected scene) in the same frame the rendering was initiated - in such case CPU just stalling during the whole GPU pipeline for reflected scene. The better approach for reflections should be using rendered reflections from a previous frame and some reprojection techniques during reflection texture sampling.