2 of the linked references have full implementations of very similar things, with some shared references.
Is there something here which godot is enabling which wasn't previously possible? It seems to be entirely GPU compute workload with particles which are available as part of all mature rendering engines
Godot itself is open source, which I think has brought a strong community of people to it. My mega-big-ultra project I've been working on since 2013 would be nowhere near as close to where it is now (close to launching crowdfunding/alpha) if I hadn't transitioned to Godot! (I was fighting the UE4 system from the days when it was $20/mo, we linux people really got dealt dirty by Tim Sweeny, with lots of empty promises for linux support)
Different approaches, but if someone's interested in waves/ocean simulation, Acerola published some awesome (as always) videos on this topic. https://youtu.be/PH9q0HNBjT4 and https://youtu.be/yPfagLeUa7k (edit: just realised one is linked in the references, just under the real name rather than nick)
20 years ago I could spend months tweaking ocean surface in renders and not get even close to that. Amazing how good this is!!
Although the demo clip feels a bit exaggerated (saying this having over 50k Nm open water ocean sailing in my logbook). Waves that sharp and high would need the wind blowing a lot stronger. But I am sure that is just a parameter adjustment away!
Since it is in Godot I assume the rendering is real time? Does it need a monster GPU?
I think the point is that these parameters you adjust are being rendered near real-time, whereas back in their days you’ll have to enter these values, and add custom tweaking because the hardware just wasn’t powerful enough to do the things we can do now at many times the speed. Not to mention the vast improvement in mileage for your time.
yeah, the "in real time" is what kills me. the old joke of blue bar races, rendering, buffering, and any of the other things us gray beards had to put up with is just unimaginable to the whippersnappers of today.
Back when I graduated I was still holding my breath for the patent expiration on marching cubes, GPUs were still being made for PCI and even ISA slots, you could find some game engines but you would have a better time writing one specialized for the type of game or graphics you were targeting.
sounds like it, my first computer was an Atari 800 XL that shared the family TV as its monitor (and fortunately there was an RF switch to toggle between it and the antenna so we worked out a kind of timesharing system)
I have a game project. But I always get nerd sniped by cool game stuff, and want to implement them myself. My progress so far could probably have been achieved in a 48h gamejam if I just used/bought existing assets. Instead I have also spent weekends playing with water shaders and getting them to look how I want.
But my game is a puzzle game. I don't need water, except that I now have a cool splash screen..
I think it is looks to be very good, and probably the best I’ve seen having given it a cursory search recently to see what was possible.
In terms of what I’d like to see, open ocean waves generally have more rhythm, I’d be very interested to see a simulation of 15 knots of wind blowing over 1km for a few hours and see if that matches what I observe, which would be relatively organised wave trains (sets) that build and disperse.
This is not a criticism, just an observation: it looks like what I imagine an ocean of hot corn syrup would look like (after dyeing it blue). The viscosity seems right; possibly the surface tension is not what ocean water would have (a colloid of salty H2O and biomaterial, which is common in real-world experience but quite ugly for computational fluid dynamics).
Also note that the ocean spray here is a post-hoc effect, but for a real ocean the spray dulls the sharpness of the waves in a way that will be (vaguely) apparent visually.
Of course there's almost no "physics" in this elegant, simple, and highly effective model, so I want to emphasize that suggesting directions to poke around and try things should not be construed as an armchair criticism.
A) It would be a criticism if I thought these effects could be plausibly rendered with a similar FFT algorithm, but that seems unlikely to me. I think these results are "highly effective" given the toolset, which is not attempting to emulate the actual physics.
B) This project is not an all-out attempt to make lifelike water, it is described as an experiment. I am making an observation about the result of the experiment, not criticizing the project for failing to meet standards it wasn't holding itself to.
But ultimately, does that model model vortexes or other fluid dynamics?
Can this model a fluid vortex between 2-liter bottles with a 3d-printable plastic connector?
Curl, nonlinearity, Bernoulli, Navier-Stokes, and Gross-Pitaevskii are known tools for CFD computational fluid dynamics with Compressible and Incompressible fluids.
Keep in mind that this project is aimed at video game developers, not oceanographers :) The point is to get something cheap and plausible, not to solve Navier-Stokes with finite element methods.
Maybe you can adjust the parameters of the tool to get waves like this, or perhaps I still should care even if the solution isn't realistic, and getting such an effect is hard by just using an arbitrary formula. In particular getting the detail right, but I imagine the recorded video is heavily subdivided and takes most of the resources that you just can't spend on a real video game.
It's still impressive, but I can't help but wonder why the formal maths if you don't arrive at anything realistic - perhaps because I'm a layman and I don't understand the difficulties of achieving this.
20 years ago I could spend months tweaking ocean surface in renders and not get even close to that.
I'm not sure what you mean here, because this is made directly from research that was done 20 years ago and it looks the same, it's just being done in real time.
The demo looks unrealistic. The waves never break. Increasinlgy steeper slops with pointy peaks travel from left to right until they just sink down towards the left.
it should curve at the top, its too pointy. this example looks like mountain peaks and not wave peaks. also the color should be patchier somehow when zoomed out, with darker blue gradient. otherwise I like it/ its almost convincing
I spent years living on the beach. When you live on the beach, you watch the ocean for hours at a time because it’s mesmerizing and feels sensational. I wouldn’t guess for a second this was a render.
I live on the beach now and I have a view about 14 stories above the water also- and somehow its clear to me its fake. Its missing the dark patches from
wind gusts and the white parts are going straight up instead of curling even lightly. otherwise it seems pretty real
Have you actually looked at waves and how they move, though? If you've spent years living on the beach you'd be able to spot in a heartbeat that the formation of foam and movement of the wave is not natural.
Other observers said the same thing so apparently I didn’t look as carefully as I thought I did!
> If you’ve spent years living on the beach, blah blah blah
I wish I gave a flying fuck about your not very subtle accusation. Feel free to believe what you want. I’m retired and I still don’t have as much free time as you do. You are not very good at mind reading, but I’m glad you’re giving the old college dropout try.
Yet somehow I held down multiple jobs simultaneously, care for a severely handicapped child, support an extended family, and keep up my technical skills even in retirement while other people are staring at TikTok in line at Starbucks. Maybe it says something about time management. Stay classy
i live by the sea and have a sea view. when a gust comes through to stir seadogs the color is darker in patches where there is wind in small areas. You cant havr choppy weather without some of this patchy color. also the white chop never goes straight up as in the videos, but it curls at least slightly.
It is very impressive, and better than anything I've seen before but think something is bit off with the swell. If I had to explain I would say that high frequency waves don't travel on top of low frequency waves the way they do in the video.
While I appreciate ever more realistic water bodies, the part that game makers really struggle with is where the water encounters an obstacle.
I did not see any mention of this in the description. Conceivably though, this is not a huge conceptual leap right? A game maker would simply need to add logic to impact the frequencies near objects, no?
The referenced paper "Simulating Ocean Water" talks about this in section 5. Indeed the FFT approach makes this difficult, where a different approach[1] for waves reflecting off obstacles.
That approach uses convolution, however you can perform convolution using FFTs[2], so perhaps there's some nice way to combine the two approaches.
edit: I just skimmed the papers, and it seems[1] does indeed mention combining the FFT approach with the convolution approach in the section on Ambient Waves.
To an extent you can get away with just sampling the output of the water shader to work out the water's effective height at any given point. Big changes in height, or buoyancy for non-static objects, indicate bigger angles hitting the waves and you can fake some splashes with particles while the wave itself just gets occluded. Apply forces at just three or four points and you can make a boat rock pretty believably on top of this kind of water.
Does it mention what the density of the mesh is, or is it a flat plane with no displacement?
Also, I wonder if there's a way to optimise the foam particles in some way. It does seem very wasteful to generate them across the whole plane, when most are culled. I wonder if the particle emission / creation could be linked to foam density?
The other two Godot repos by this person are very interesting as well. I love the level of detail they add to explaining their repos. This one is particularly interesting: https://github.com/2Retr0/GodotGaussianSplatting
Wonder if they are a student, they seem to cite other work frequently and have a strong grasp on recently published materials.
One of their repos has this title and description:
> ENGR96A-coursework
> Relevant coursework for ENGR 96A Introduction to Engineering Design F23
And F23, judging by the dates of the commits in that repo means Fall 2023.
Of course, it could be that this and other UCLA courses referenced in the repos are open for everyone. So maybe you don’t have to be enrolled as a traditional student at UCLA to take them.
Things like this brought me into computers, but along the way I fell for the easy and boring life of glueing libraries, endpoints and corporate bullshit that leads to burnout.
Perhaps some day...
My problem is I'm so burnt out from the aforementioned stuff I don't have the motivation or energy for the cool stuff anymore. I feel like I need a year long sabbatical first, but reality says otherwise.
Same here, this has been the central crisis of my working adult life for 25 years. Unfortunately it never gets better. And I've taken 6 months to 1 year off for severe burnout with physical symptoms like adrenal fatigue twice now.
My feeling is that this problem is intractable alone. We need groups working towards liberation, and societal change to support healthy work/life balance.
What that looks like in practice is that wealthy people, especially those who won the internet lottery, should start giving something back. At the most basic level, that's paying one's taxes. Beyond that, they should start setting aside ego-based goals and start accepting requests outside of their attention so that the most pressing problems facing humanity can finally get solved.
Give a billionaire $1 billion and a year later they'll turn it into $2 billion. Give one of us $1 billion and a year later a form of cancer will be cured. That's why they have the money and we don't, and why it takes so long for things to get better, if they ever do.
If you can afford it (time/family/financially) I would say to do it. Even if it’s only 6 months. You can learn a LOT in 6-12 months if you’re disciplined and focused. Don’t forget to build up a network in any new endeavor you take, it will save you time, give you inspiration, and help get a job later on, and maybe you can help them along the way as well.
Make that day today! I’ve realised this same problem too, sure there’s some beauty in an ultra tight gluing of logic … but there’s a vast unexplored sea of programming beauty waiting to be discovered. I realised this over the weekend, so I’m diving into graphics programming.
I think make the move gradually - find the stuff you were excited in originally, that you would love to learn more about and eventually do. Spend maybe a few hours a week diving into it - then gradually increase and move away from your current job.
I see a lot of my friends making more money than me doing stuff like that but I followed my interests and went into robotics first chance I got and do not regret it. There is nothing like the feeling you get seeing your code really interact with the world, at least speaking for myself.
Great! I've shared this with every physicist I know who's not directly involved in animations.
Quick question from my swimming class yesterday: We know that professional swimmers use a range of technologies, both old and new, in their training. Is there currently a model that fully simulates the physics of swimming across different styles? If not, this seems like a great project idea!
111 comments
[ 2.6 ms ] story [ 192 ms ] threadIs there something here which godot is enabling which wasn't previously possible? It seems to be entirely GPU compute workload with particles which are available as part of all mature rendering engines
Although the demo clip feels a bit exaggerated (saying this having over 50k Nm open water ocean sailing in my logbook). Waves that sharp and high would need the wind blowing a lot stronger. But I am sure that is just a parameter adjustment away!
Since it is in Godot I assume the rendering is real time? Does it need a monster GPU?
Nowadays it is a check box on a game engine, one of many.
People don't imagine how good they have it with modern engines.
Not to take any value out of this work, this is a great achievement and kudos to the author, only making the point how good we have nowadays.
Things really have improved a lot.
I have a game project. But I always get nerd sniped by cool game stuff, and want to implement them myself. My progress so far could probably have been achieved in a 48h gamejam if I just used/bought existing assets. Instead I have also spent weekends playing with water shaders and getting them to look how I want.
But my game is a puzzle game. I don't need water, except that I now have a cool splash screen..
I think it is looks to be very good, and probably the best I’ve seen having given it a cursory search recently to see what was possible.
In terms of what I’d like to see, open ocean waves generally have more rhythm, I’d be very interested to see a simulation of 15 knots of wind blowing over 1km for a few hours and see if that matches what I observe, which would be relatively organised wave trains (sets) that build and disperse.
Also note that the ocean spray here is a post-hoc effect, but for a real ocean the spray dulls the sharpness of the waves in a way that will be (vaguely) apparent visually.
Of course there's almost no "physics" in this elegant, simple, and highly effective model, so I want to emphasize that suggesting directions to poke around and try things should not be construed as an armchair criticism.
B) This project is not an all-out attempt to make lifelike water, it is described as an experiment. I am making an observation about the result of the experiment, not criticizing the project for failing to meet standards it wasn't holding itself to.
But ultimately, does that model model vortexes or other fluid dynamics?
Can this model a fluid vortex between 2-liter bottles with a 3d-printable plastic connector?
Curl, nonlinearity, Bernoulli, Navier-Stokes, and Gross-Pitaevskii are known tools for CFD computational fluid dynamics with Compressible and Incompressible fluids.
"Ocean waves grow way beyond known limits" (2024-09) https://news.ycombinator.com/item?id=41631177#41631975
"Gigantic Wave in Pacific Ocean Was the Most Extreme 'Rogue Wave' on Record" (2024-09) https://news.ycombinator.com/item?id=41548417#41550654
I found a video that records (in a few places) how the waves actually look: https://www.youtube.com/watch?v=8XBO-hen7_s
Maybe you can adjust the parameters of the tool to get waves like this, or perhaps I still should care even if the solution isn't realistic, and getting such an effect is hard by just using an arbitrary formula. In particular getting the detail right, but I imagine the recorded video is heavily subdivided and takes most of the resources that you just can't spend on a real video game.
It's still impressive, but I can't help but wonder why the formal maths if you don't arrive at anything realistic - perhaps because I'm a layman and I don't understand the difficulties of achieving this.
There are tons of videos now about that making the whole thing (somewhat) more approachable, but there are still a lot of pitfalls!
One of my favourites on the subject: https://m.youtube.com/watch?v=yPfagLeUa7k
This one is nice too: https://m.youtube.com/watch?v=kGEqaX4Y4bQ
I'm not sure what you mean here, because this is made directly from research that was done 20 years ago and it looks the same, it's just being done in real time.
> If you’ve spent years living on the beach, blah blah blah
I wish I gave a flying fuck about your not very subtle accusation. Feel free to believe what you want. I’m retired and I still don’t have as much free time as you do. You are not very good at mind reading, but I’m glad you’re giving the old college dropout try.
I did not see any mention of this in the description. Conceivably though, this is not a huge conceptual leap right? A game maker would simply need to add logic to impact the frequencies near objects, no?
That approach uses convolution, however you can perform convolution using FFTs[2], so perhaps there's some nice way to combine the two approaches.
edit: I just skimmed the papers, and it seems[1] does indeed mention combining the FFT approach with the convolution approach in the section on Ambient Waves.
[1]: https://people.computing.clemson.edu/~jtessen/reports/papers...
[2]: https://phys.uri.edu/nigh/NumRec/bookfpdf/f13-1.pdf
Does it mention what the density of the mesh is, or is it a flat plane with no displacement?
Also, I wonder if there's a way to optimise the foam particles in some way. It does seem very wasteful to generate them across the whole plane, when most are culled. I wonder if the particle emission / creation could be linked to foam density?
Wonder if they are a student, they seem to cite other work frequently and have a strong grasp on recently published materials.
Seems like they might be.
One of their repos has this title and description:
> ENGR96A-coursework
> Relevant coursework for ENGR 96A Introduction to Engineering Design F23
And F23, judging by the dates of the commits in that repo means Fall 2023.
Of course, it could be that this and other UCLA courses referenced in the repos are open for everyone. So maybe you don’t have to be enrolled as a traditional student at UCLA to take them.
You thought of it 20 years ago and didn't do it, and you're considering it again now.
Instead of telling yourself it is too late to do it now, just go for it, so that in 20 years more you will be happy you planted this tree.
(Even if they are just "family" in the broader sense and not their own)
My feeling is that this problem is intractable alone. We need groups working towards liberation, and societal change to support healthy work/life balance.
What that looks like in practice is that wealthy people, especially those who won the internet lottery, should start giving something back. At the most basic level, that's paying one's taxes. Beyond that, they should start setting aside ego-based goals and start accepting requests outside of their attention so that the most pressing problems facing humanity can finally get solved.
Give a billionaire $1 billion and a year later they'll turn it into $2 billion. Give one of us $1 billion and a year later a form of cancer will be cured. That's why they have the money and we don't, and why it takes so long for things to get better, if they ever do.
I’m rooting for you!
Go for it - we're all rooting for you!
Quick question from my swimming class yesterday: We know that professional swimmers use a range of technologies, both old and new, in their training. Is there currently a model that fully simulates the physics of swimming across different styles? If not, this seems like a great project idea!
Very impressed!