Ocean Simulation with FFT and WebGPU

Jerry Tessendorf's ocean simulation meets Tri-planar mapping

 Posted on March 20, 2024  |  16 minutes  |  3229 words  |  Barthélémy Paleologue

Introduction It’s been a few month since I started pondering making a better ocean for Cosmos Journeyer’s procedural planets. To have actual waves moving around and not just a scrolling normal maps would make a significant difference in visual quality. Coincidentally, I was also taking a course on computer animation (INF585) at Ecole Polytechnique, and I had the opportunity to choose my final project. Long stroy short, I decided to implement Jerry Tessendorf’s FFT-based ocean simulation on WebGPU, and this is my project report. [Read More]

Non Euclidean Black holes

Because why not?

 Posted on January 12, 2024  |  5 minutes  |  878 words  |  Barthélémy Paléologue

Okay, I know what you are thinking: “Non Euclidean Black holes? What is this guy talking about?”. I know, I told myself so at first, but bear with me, it is actually fun! What is a black hole? A black hole is a region of space where the gravitational field get so strong the bending of spacetime becomes very noticable (and deadly, mom’s spaghetti). It becomes so strong that scientists predict the bending becomes infinite at its center at what is called a singularity. [Read More]

Making Shaders Faster #1

Planetary rings

 Posted on December 18, 2023  |  5 minutes  |  1033 words  |  Barthélemy Paléologue

Realtime shader programming is challenging. Although the GPU is very fast, when adding more and more shaders, you always reach a point where your GPU is no longer fast enough. This is where optimization comes into play. Shaders can be optimized in 2 ways: improve the shader code itself, which can give decent improvements, and precomputing data, which can make the difference between 20fps and 500fps. In this blog post series, I will be presenting how I optimized the shaders of Cosmos Journeyer: a procedural universe running in the web browser. [Read More]