BUOYANCY SIMULATOR (A LEVEL PROJECT)

My A-Level project for Computer Science

View the documentation here

For my coursework project (worth 20% of my final grade) I decided that I would build a physics simulation of some kind. I experimented over the summer before Year 13 with gravitational freebody simulation and water simulation.

Eventually I decided to work with the latter as I believed it may have been more in-depth and worth more marks, however I quickly realised after extensive research how large of a task this could be.

In order to develop this project, I had to prototype the wave shader, which involved learning the basics of GLSL, a language I had no prior experience with, and also getting to grips with Unity's shader pipeline, which is a function of the engine I had minimal experience with.

The physics calculations lead me to do lots of research into buoyancy and mathematical approximations for the forces involved. I opted for a vertex-based test, which finds the distance each vertex is under the surface of the water, and applies a force at a normal to the surface of the wave at this point. However, as can be seen in the aforementioned design document, calculating the normal vector required me to learn about multivariable calculus and the dot and cross product of vectors.

I got an A* for my project's final grade!