GLSL for simple water surface effects

2019-02-05 00:25发布

问题:

I'm looking for some pointers on how to implement simple water surface effects in OpenGL ES 2.0. Nothing fancy like reflection or refraction, just a basic ripple/wave effect that modulates over time. Performance is critical. I'm assuming this will be best done in a shader.

Any pointers on how to best handle this?

回答1:

There is an old trick to simulate water waves & ripples using minimum effort in terms of equations. It's used in many places, and I can't find the original, but you can grab it, for example, from here.

You'll need 2 textures, each containing just height. Simulation is done by ping-ponging between them (using one as a source and second as destination each time).

When rendering, you might need to derive surface normal from the neighbour heights.



回答2:

Adrian Boeing's blog has example GL code, accompanied by clear explanations, for a number of effects including ripple.