A new type of software development that is being used to create realistic looking water without having large processing times is based off of approximating almost everything. The basic principal is to use a bunch of small spheres, and calculate how they would react in whatever situation, say water pouring out of a pipe. This would look like a large amount of balls rolling out of a pipe, but the real magic happens in the approximations that are used. The software uses how the balls move to judge how the water would move, and make it look like water by making the balls invisible, and adding water where the balls are, and if one gets separated it simulates how surface tension would be broken, and the water would form a droplet. This type of approximation allows the software to render realistic looking water at a resource cost that is far less than a typical simulation. By adjusting certain parameters, the viscosity and surface tension of the apparent fluid can be changed, allowing for this to be used to render all different types of fluids, not only water. This can also be adjusted to model smoke and fog, although with a largely different set of rules on the physics of each particle.
Here's an example from NVIDIA's tech demo before:
And then after the approximations: