Rendering Realistic Water

Using the open-source 3D computer graphics software Blender, I created and rendered multiple simulations using the internal Blender render engine. The following render took 28 hours to complete on a desktop computer utilizing a Radeon RX 480 graphics card.

Attempting a different (and less violent) scenario and reducing the amount of free particles allowed the following animation to render in about 10 hours using the same engine as the animation above.

With more understanding in how to produce more realistic water and how different variables affect its behaviour, I switched to using the Cycles rendering engine, a higher-quality, more efficient, ray-tracing render engine that produced much nicer results. The following was rendered in 7 hours.

How a Simulation is Rendered

When Blender renders a fluid, it first precomputes a low-poly, non-textured mesh. This way you can actually see what the fluid will somewhat look like in each frame before rendering. At this point you can tweak some variables and render small sections quickly to determine the proper style and texture that is desired. When the full render has begun, Blender begins to compute (according to your ambient occulsion and refraction settings) how light interacts with your fluid in each frame. It accomplishes this by first rendering a low-quality frame, then iteratively rerendering the frame off the last one to eventually acheive a high-quality frame. It then does this to every frame in the animation you want to compute before finishing.

A 5 second video like the ones above have 150 frames to render, when set to 30 frames per second.