Aquarium effects

Use TexGen or projected textures.
This link explains a nice tex gen way:
opengl.org/resources/code/sa … /caustics/

For objects obscuring the caustics, you’ll also want to do a depth render from top with ARB_shadow enabled, that is multiplied by the caustic stage.