In this project, I simulated realistic fluid dynamics based on Smoothed Particle Hydrodynamics. The project consist of three steps: (1) particle simulation, (2) surface reconstruction and (3) video rendering. The first step is to simulate the dynamic of the fluid particles using Navier-Stokes equation. However Navier-Stokes equation is a continuous velocity field differential equation, so to discretize it, I applied the SPH technique that is often used in solving astrophysical problems. To speed-up the dynamic process, I have employed a simple grid accelaration structure in the calculation. In the second step, due to SPH's particle nature, traditional method for surface reconstruction will result in very unrealistic water surface (very bumpy). Therefore, I adopted a PCA anisotropic kernel method proposed in SIGGRAPH SCA'10. Then I wrote a marching cube algorithm to reconstruct the surface. For the final step, I feed the resulting fluid surface into LuxRender and used FFmpeg to create realistic video as shown above. Everything is written from scratch using C++ and used MATLAB for realtime rendering when tuning the physical parameters (which I have spent days to create a more realistic movement).