realtime water simulation - github pages · project goal create a realtime water simulation that...
TRANSCRIPT
![Page 1: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/1.jpg)
Realtime Water SimulationBenjamin Harry CS148 Final Project
![Page 2: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/2.jpg)
Project GoalCreate a realtime water simulation that exhibits characteristics of a real body of water.
• Generate believable waves in realtime
• Light reflection and transmission
• Caustics on bottom surface
![Page 3: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/3.jpg)
Relevance to CourseUsing OpenGL
Lighting Effects:
• Reflection - Fresnel Effect
• Refraction - Snell’s Law
![Page 4: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/4.jpg)
Implementing WavesMethod for wave animation from Matthias Müller-Fischer.
Initialized vertex heights for waves using sum of sines function.
Initialize horizontal velocities to zero.
For each time step update the vertex positions based upon forces acting on waves.
![Page 5: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/5.jpg)
// Implementing the waves using height field.
for all i, j {
f = c2 * (u[i+1,j] + u[i-1,j] + u[i,j+1] +
u[i,j-1] - 4u[i,j]) / h2;
v[i, j] = v[i, j] + f * 𝝙t;
unew[i, j] = u[i, j] + v[i] * 𝝙t;
}
for all i, j: u[i, j] = unew[i, j];
![Page 6: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/6.jpg)
![Page 7: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/7.jpg)
Height Field ConclusionVery easy to implement.
Generated waves had decent animation, although could see triangles when looked closely.
Data updated in CPU, which requires a lot of processing and copying data in for loops.
Degraded frame rate.
![Page 8: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/8.jpg)
Summing Sine WavesSum sine waves with varying amplitudes, wavelengths, and directions to get height at each vertex.
Need to also have the derivative to get the normal at each vertex.
Perform the calculations in the GPU.
![Page 9: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/9.jpg)
![Page 10: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/10.jpg)
Summing Sine WavesWaves have "blobby" appearance. Sometimes sine wave shape is obvious (using random directions).
Improved by adding high frequency normal map in the fragment shader.
![Page 11: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/11.jpg)
Lighting EffectsReflections using OpenGL cube map feature.
Improved the look of reflections using Fresnel effect.
• Viewing angle affects how much light is reflected and transmitted.
Caustics added using Snell's law and wave normals.
![Page 12: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/12.jpg)
ChallengesFiguring out which method to use to generate waves.
• Overwhelming amount of information on the internet.
• Implement wave calculations on CPU or GPU?
Overcoming blobby appearance of waves.
• Adding animated high frequency normal map.
![Page 13: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/13.jpg)
ReferencesBouny, Jeremy. "Realistic Water Shader for Three.js." GitHub. github.com/jbouny/ocean
de Greve, Bram. "Reflections and Refractions in Ray Tracing." Nov 13, 2006. graphics.stanford.edu/courses/cs148-10-summer/docs/2006--degreve--reflection_refraction.pdf
de Vries, Joey. Learn OpenGL. www.learnopengl.com
Finch, Mark. "Effective Water Simulation from Physical Models." GPU Gems. 2004. developer.nvidia.com/gpugems/GPUGems/gpugems_ch01.html
![Page 14: Realtime Water Simulation - GitHub Pages · Project Goal Create a realtime water simulation that exhibits characteristics of a real body of water. • Generate believable waves in](https://reader036.vdocuments.net/reader036/viewer/2022062403/604a8fc60b1ee43ce670c813/html5/thumbnails/14.jpg)
Guardado, Juan. "Rendering Water Caustics." GPU Gems. 2004. developer.nvidia.com/gpugems/GPUGems/gpugems_ch02.html
Hollasch, Steve. Steve’s Web Pages. Nov 4, 2007. steve.hollasch.net/cgindex/render/refraction.txt
Müller-Fischer, Matthias. "Fast Water Simulation for Games Using Height Fields." GDC 2008. matthias-mueller-fischer.ch/talks/GDC2008.pdf
Tessendorf, Jerry. "Simulating Ocean Water." 1999 - 2001. graphics.ucsd.edu/courses/rendering/2005/jdewall/tessendorf.pdf