Ocean waves simulation with Fast Fourier transform

  Рет қаралды 370,900

Jump Trajectory

Jump Trajectory

Күн бұрын

Пікірлер: 333
@peterhall6656
@peterhall6656 2 жыл бұрын
You have done some good work on this issue. I am a retired expert in Fourier theory and it is interesting to see how the FFT still rocks on 50 years ago when I first used it.
@warpigs330
@warpigs330 2 жыл бұрын
something tells me that we will be using fft for as long as we do computing. It is so fundamental.
@ShatabdaRoy115
@ShatabdaRoy115 2 жыл бұрын
holy moly. I'm 14 and I got alot to learn
@Francesco_Armillotta
@Francesco_Armillotta 2 жыл бұрын
Basically you can study whatever field in physics and fourier theorem is everywhere :)
@zacharychristy8928
@zacharychristy8928 2 жыл бұрын
I remember learning about it for the first time, and it totally changed how I thought about information. I used them like crazy in my next internship on software-defined radar systems. They're an insanely good tool to have.
@Nekuzir
@Nekuzir 2 жыл бұрын
@@ShatabdaRoy115 the e^2pi*i part is really just the number 1 e^pi*i is negative 1 e^(angle in radians)*i is the number on the complex unit circle distance 1 from the origin at the angle you put in
@phillipjoyce8825
@phillipjoyce8825 3 жыл бұрын
Got about 7 minutes in until my brain rejected it. Stunning work, good on you for being so good at maths! I wish I could understand what you've done properly
@dinosyr
@dinosyr 3 жыл бұрын
I made it about 6 mins i guess im more smooth brained lol
@RomekRJM
@RomekRJM 3 жыл бұрын
I feel this video is too condensed. There are multiple complicated math formulas appearing on the screen in 2-3s intervals at some point. It is certainly a good glimpse for someone looking for high level overview on how to generate oceanic waves, but to cover it completely clip would have to be 2h+. Kudos for making it though!
@RileyGein
@RileyGein 3 жыл бұрын
@@RomekRJM the linked videos in the description help make a bit more sense of it. Not that it helped me much; I’m absolute garbage at math
@santosmichelena3519
@santosmichelena3519 2 жыл бұрын
I understood everything quite clearly but I think it's only because I and doing my masters in a very very closely related topic. The video is definitely very dense.
@vladislavkornushenko
@vladislavkornushenko 2 жыл бұрын
well done, for me 4 min was enough)
@papel6280
@papel6280 2 жыл бұрын
Can’t believe I am learning Physics in a Unity tutorial-this is so well-made!
@gamedevwithjacquelynnehei465
@gamedevwithjacquelynnehei465 2 жыл бұрын
I totally get what you mean! It's crazy how much math and science you use in game development. Watching videos like this just shows me how much I don't know.
@damislav
@damislav Жыл бұрын
@@gamedevwithjacquelynnehei465 if one would know that math and physics can actually be fun and used for something, maybe I would bother to learn it in school xD
@TheArrowster
@TheArrowster Жыл бұрын
​@@gamedevwithjacquelynnehei465 Computers are all about math and science. Virtual environment is just a simplified version of real world.
@NicholasSpies
@NicholasSpies 2 жыл бұрын
I was at a computer graphics company (on of the first doing commercial work) in 1987 and saw what was at the time an astounding, color still of a perspective view of the surface of a calm sea, bathed in the golden light of a sunset. It had taken hours, perhaps even over night, to render on a minicomputer. It was quite advanced at the time. I was told by the guy who modeled the scene that it involved sin/cos functions, which was more or less obvious because it was periodic but I didn't really understand how (and the source was FORTRAN, which had to be batch processed from a stack of Hollerith [IBM ]cards). So it was a pleasure to find this explanation.
@ltmcolen
@ltmcolen 2 жыл бұрын
I've personally had instances when we were at anchor, the current came from the north and was stronger than the wind coming from the south. Pushing the ship with her stern towards the wind. The strangest part was that the waves also came from the south hitting the transom. It's like a huge bass drum being kicked irregularly
@redsteph
@redsteph 2 жыл бұрын
This is awesome, hope you’ll cover ocean shading, LOD management etc as you’ve said!
@joshko9030
@joshko9030 3 жыл бұрын
Amazing work man! Getting the feeling that this is gonna blow up
@tiporari
@tiporari 3 жыл бұрын
I implemented your GitHub code in a unity project with XR enabled. These waves look awesome in VR. I assumed performance would be an issue, but it runs perfectly. Thanks for creating this. Giving me an awesome jumping off point for a novel VR experience.
@FarhadHakimov
@FarhadHakimov 2 жыл бұрын
Oh, thanks for the idea! I was hoping to implement it in Unreal, but VR in addition to ocean would be great. Here's hoping I won't get seasick xP
@flatspinrc5262
@flatspinrc5262 3 жыл бұрын
Hope there's more videos coming! They are all beautifully presented.
@derp4581
@derp4581 3 жыл бұрын
Man, youtube recommendations have been awesome lately! Finding all of these small but amazing channels left and right
@mooseriderwpg9586
@mooseriderwpg9586 2 жыл бұрын
Maaaan KZbin always recommends videos explaining the gap in your understanding for an exam perfectly right after the exam XD
@DaveJ6515
@DaveJ6515 Жыл бұрын
When something conceptually and mathematically so elegant works so well for so long in so many different fields, it probably holds some fundamental meaning.
@farechildd
@farechildd 2 жыл бұрын
Pretty cool to see the applications of what you learn in differential equations
@stdcall
@stdcall Жыл бұрын
if you do anything even mildly related to math/physics/computation in the future it will all be diffy qs
@badradish2116
@badradish2116 2 жыл бұрын
THIS IS GREAT. THANK YOU!! its so hard to find detailed breakdowns of complex topics that arent targeted to specialists or total beginners. 100% sub'd and excited to see what else you have to offer! THANKS AGAIN.
@nesslange1833
@nesslange1833 2 жыл бұрын
What a genius applying these advanced transforming things. Only thing you could have added is clouds /sky movement to make it even more vivid.
@wii3willRule
@wii3willRule 2 жыл бұрын
Man, this is awesome. A bit dense/condensed, but an excellent high level overview-- I learned a lot. I'm completely new to FFT, so I know that I'm going to be checking out the 3B1B video next, but this was honestly the coolest introduction.
@marshallross3373
@marshallross3373 2 жыл бұрын
Great video! Thanks for covering the math and describing the issues involved.
@maki4041
@maki4041 2 жыл бұрын
this video is just awesome.And I am really interested in topics the current video does not mention like ocean shader and mesh LOD.Looking forward to see more about these!
@curiouspers
@curiouspers 2 жыл бұрын
This is very high quality content, thank you! I hope you're doing great and will return with more great stuff!
@Ahivo
@Ahivo 2 жыл бұрын
Never thought fourier transforms would work for me one day Dude the world is a better place with u in it So you could help people understand better and more tangible Great job Keep up the good work
@pyrit3863
@pyrit3863 6 ай бұрын
Looked at the code and have no idea what half the stuff does but I understand the concept. Really high quality waves though, looks amazing.
@tefilobraga
@tefilobraga 2 жыл бұрын
Excellent and fascinating work. It is very neat how you can synthesize a realistically-looking ocean based on rigorous physics of wave dynamics. I have one comment regarding the rendering, for example at 11:05. While the theory used is certainly for non-breaking waves, and therefore the waves by themselves would not produce foam, one can easily imagine a situation where the foam is pre-existing and the waves just move it around. Now, what happens in this animation extract is that the white patches (which I perceive as foam) move with the wave crests. In my opinion, you would get a more realistic effect if the foam remained on the air-water interface essentially at the same points in space horizontally, and the waves simply propagated over it. If you want to be maximally realistic, you could consider the back and forth motion associated with the horizontal oscillations produced by each wave cycle, and even, possibly, the slow drift, produced by the Stokes drift (although that latter aspect would not add much to the realism on the time scale of a few seconds).
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Yeah, the foam definitely should be persitent. There are difficulties in meshing it with the cascades. There are two ways to do it, basically, and both are not perfect. Still working on it, actually. It is relatively easy to make it move with the wave cycles, though.
@TheGreatTimSheridan
@TheGreatTimSheridan Жыл бұрын
It's an amazing effort, I noticed there's also foam around the edge of the rowboat. It seems like there's a little too much uniformity and too much foam. It might look a little boring to remove some of that garnish, but it should look more realistic with less foam or maybe the foam triggers only a little more at the extremes
@EnginAtik
@EnginAtik Жыл бұрын
Very nice work! I thought the foam was a bit much on some of the waves. They gave the impression that they were hitting some rocks that were out of the frame. Then again there must be an indication of reflected waves if it was the case which I did not notice. It's amazing how we get attuned to how the sea behaves: our vestibular system starts doing some Fourier analysis after spending some time on the see and we get sea legs when we are back on land.
@omeryamanofficial
@omeryamanofficial Жыл бұрын
Looks incredible, also you can add some underwater effects, water splashes for collisions and make it work with URP. Great research!
@토이-q2i
@토이-q2i Жыл бұрын
Could you please share the URP shader code?
@cptray-steam
@cptray-steam Жыл бұрын
Mind = blown, I'm probably gonna have to watch this like 30 times before I fully understand how it works.
@danielprovder
@danielprovder 2 жыл бұрын
Im not sure the accuracy of this, but I’ve read that there is something about pink noise as the spectrum of the ocean, it has a characteristic rise in amplitude as the frequency decreases. What’s interesting is that the pink noise is invariant under Fourier transform, and I wonder if applying this randomness instead of Gaussian would change the already beautiful results. Looking forward to more content!
@snbv5real
@snbv5real 3 жыл бұрын
Very nice video, definitely be interested in seeing the follow up on the other stuff you talked about. One thing I'll mention, is that when you exit the Unity world, those problems with "Pipelinestalls" and things aren't really issues. In API's like Vulkan, asynchronous execution of GPU commands is not only an option, its *expected and default behavior*. You can even separate the FFT step *entirely* from your rendering, have it be performed at a lower frame rate, and even *interpolate* the results by looking a head, but I digress. What you would probably do in this case is use double buffering, use the GPU to write the output in one buffer, and on the next frame use another buffer, allowing you to safely copy the information you need to your CPU while it is calculating the next buffer. No pipeline stalls period. What you would really want to do however, is calculate boyancy *on the GPU* instead, then copy *that* data to the host which is much much smaller.
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
Thank you for the advice! I would really like to dive into the graphics APIs at some point. The idea with GPU boyancy seems interesting. I think, as a bonus, all the GPU power can allow a more sofisticated boyancy model (voxel based maybe?)
@oswaldcobblepot764
@oswaldcobblepot764 3 жыл бұрын
@@JumpTrajectory It's funny you talk about this because i am actually trying to convert a buoyancy system (inspired by Habrador buoyancy tutorial) to compute shaders, in order to make it compatible with FFT ocean. So far it works pretty well with Gerstner waves (from CatlikeCoding tutorial), but i am dizzy when i read the fft ressources you linked because my math background is too weak to understand all this right now (I honnestly don't even really understand what FFT is).
@CustomPhase
@CustomPhase 3 жыл бұрын
This has nothing to do with Unity as is. Unity supports async gpu readback, async compute and all the other things you mentioned as well. You should research the topic before you embarass yourself in the future.
@neuralworknet
@neuralworknet Жыл бұрын
Omg this channel is insane! I really loved your videos. Keep up man!
@superman39756
@superman39756 Жыл бұрын
What a great video! Thank you for going into the details and providing detailed references.
@dariocardajoli6831
@dariocardajoli6831 2 жыл бұрын
Outstanding work . Speechless but still commenting seeing how underrated this vid is .
@whidzee
@whidzee 3 жыл бұрын
Wow this is just amazing. most of the description went over my head but i am still very impressed. How would you go about combining this with onshore waves around an island? to have breaking waves coming from all angles?
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
Oh! That's a whole other thing! I've read some about it, but not much. Check outh this talk developer.download.nvidia.com/assets/gameworks/downloads/regular/events/cgdc15/CGDC2015_ocean_simulation_en.pdf
@hexagon-77
@hexagon-77 3 жыл бұрын
@@JumpTrajectory You should definitely make a video about this also, it's super interesting and probably more useful to a wider variety of devs. Great work so far, by the way!
@elialehman3052
@elialehman3052 2 жыл бұрын
This vid skips over so much that it defines itself as a niche explanation for a niche mathematics crowd. Hope all u smarties are enjoying this more than I am!
@b33blebrox
@b33blebrox 11 ай бұрын
Amazing! Can imagine what enormous computations are required to add there some solitons to simulate waves with negative slope...
@slayerofwhales9720
@slayerofwhales9720 Ай бұрын
Where did you get the equation @ 10:19 from? I specifically wonder why we add 1 to the partial derivatives in the denominator. Why use this formula instead of forming tangent vectors with the partials and computing the cross product?
@WelshGuitarDude
@WelshGuitarDude 3 жыл бұрын
Can you do more deep dive into how to get the ocean to look visually nice as well like under water shader, SSS, foam etc etc.
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
I'm planning to do that (maybe not in the next video, but some time in the future)
@Heknon
@Heknon 3 жыл бұрын
@@JumpTrajectory Did you make the video already?
@Heknon
@Heknon 3 жыл бұрын
nope nvm
@zetathix
@zetathix Жыл бұрын
Thank you for good knowledge, I will try to digest it into use.
@СергейПупчин-ж7т
@СергейПупчин-ж7т 2 жыл бұрын
It is nice to hear your slav accent
@loganlee7510
@loganlee7510 7 ай бұрын
Very easy to understand :) Thank you for making this video
@adampy96
@adampy96 3 жыл бұрын
Subscribed, you deserve more attention on youtube. Thanks for that video!
@raphaelklaussen1951
@raphaelklaussen1951 2 жыл бұрын
It is fascinating that you can create a realistic effect without invoking the conservation laws.
@sciencecompliance235
@sciencecompliance235 Жыл бұрын
Doesn't something that uses purely periodic functions assume conservation?
@tupaicindjeke275
@tupaicindjeke275 2 жыл бұрын
Dude. Your video is great. Keep up the good work.
@47Mortuus
@47Mortuus 2 жыл бұрын
I have ocean tiles but ... tiling... is an issue and I HOPED that you would go more into detail in this regard as there are no ressources I can find on "cascades" and more importantly how to implement them once you already have a tile. Anyone know any ressources on this?
@lyubomirzegov7518
@lyubomirzegov7518 3 ай бұрын
Great video! One question is how the cascading of the FFTs work. Do you have some references for that?
@curtisnewton895
@curtisnewton895 2 жыл бұрын
sure that when you're busy playing a video game, you care SO MUCH about the realism of the ocean no doubt about that
@GlorifiedPig
@GlorifiedPig 3 жыл бұрын
wow this looks ultra realistic, good job!
@anjoomfaisal
@anjoomfaisal Жыл бұрын
This is so interesting. People like you make games beautiful. Thank you :)
@amerfilmstudios9292
@amerfilmstudios9292 2 жыл бұрын
Hi, Can you sell a 1 minute length mp4 file video of ocean simulation of view scene ( camera view ) moving forward , static still scene... TQ
@AlanZucconi
@AlanZucconi Жыл бұрын
This is the content I'm here for! 👏
@roisanggung951
@roisanggung951 2 жыл бұрын
What a very outstanding explanation, i love your work!
@bdenix1997
@bdenix1997 Жыл бұрын
how did you manage to get that detailed normals from 3 256x256 cascades? mine looks like shit. I've taken a look at your code but like, you're doing some different things when calculating the derivatives. its different than tessendorf's paper. it kind of confuses me.
@robertfindley921
@robertfindley921 2 жыл бұрын
Very nice. I'd have to brush off my MSEE brain cells to follow closely, but very interesting.
@apurbabiswas7218
@apurbabiswas7218 3 жыл бұрын
This is amazing work - I'll be looking out for a Patreon page soon. I hope you keep making videos - subscribed!
@christopherking6129
@christopherking6129 2 жыл бұрын
Neat! I'm surprised inverse FFT isn't used in procedural generation more often.
@adamstybrzynski3216
@adamstybrzynski3216 3 жыл бұрын
Sir! Thank You for Your work! That's very valuable material and it is a matter of time for Your channel to go viral! I would be awesome if You could cover these topics in more details
@MassimoRough
@MassimoRough 2 жыл бұрын
It is not a matter of time for this channel to go viral. If only you could help this sharing the video in your social channels - that would make an impact, not just random noise.
@muhammednedimsahvelet4431
@muhammednedimsahvelet4431 2 ай бұрын
Thank you so much. This video is so helpful.
@sovietdolphin
@sovietdolphin Жыл бұрын
Great explenation and visualisation!
@anglewyrm3849
@anglewyrm3849 2 жыл бұрын
I once worked on a lobster fishing boat 90 miles off the coast of North Carolina, and there were rare occasions where the ocean was amazingly flat, as depicted in this simulation. But most of the time there were rolling hills and even mountains of water.
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Thank you for the observation! This is swell, I think. I didn't know how important it is for the look of the ocean at the time as I was making the video, but now I understand that it is present most of the time. Good news is that it is already supported in the code, I just didn't include in the scenes for the video.
@DestroierGames
@DestroierGames Жыл бұрын
How do I change the Y position of the water, I would be interested in being able to change it because my terrain is at a different height than the water is when starting the play mode and I can't change it...
@kukunishad
@kukunishad 2 жыл бұрын
You should work for Rocket Industries, like SpaceX. They must have need a guy like you with this kind of applied mathematics knowledge.
@vaakdemandante8772
@vaakdemandante8772 Жыл бұрын
Cool video, quite dense in information and knowledge, so it would be nice if the formulas stayed a bit longer on screen, instead of vanishing like in 6:17 to show some not yet well defined parameter h0. Such fast format is a bit confusing, so if you could show the content on screen for longer and use some transforming animations to better explain how the formulas are linked to one another (like 3Blue1Brown does) it would come a long way in enhancing the understanding of key concepts.
@josephseed9270
@josephseed9270 3 жыл бұрын
dude you really deserve millions of subscribers
@cptwoody7103
@cptwoody7103 2 жыл бұрын
its possible to implement this into shadergraph ?
@austineadah2843
@austineadah2843 2 жыл бұрын
This I nice.can it be implemented and visualized in MATLAB?secondly I was wondering if there could be another video on fluid structure interactions ?
@MohamedHassan-rh9iu
@MohamedHassan-rh9iu 3 жыл бұрын
This is an excellent video! I'm a little confused by what the texture above h0k (9:35) is representing, are the values for kx, kz, and omega in the r, g, and b channels respectively? I noticed while reading through your code that WaveData stores vec4, so im a little confused about what data is being represented in the texture. I would appreciate any clarification and thanks again for this amazing video!!
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
I store kx as r, kz as g, omega as a and 1 / length of k as b. I stored one over length just for convinience as I had a spare texture channel.
@saliherenyuzbasoglu5819
@saliherenyuzbasoglu5819 Жыл бұрын
I hope one day I will be good enough computer scientist that I can understand the concepts in this video
@MarCuseus
@MarCuseus 2 жыл бұрын
I see CG water, I press like. I see maths, my brain explodes.
@alfiewhitson7726
@alfiewhitson7726 2 жыл бұрын
interesting stuff. Perhaps one alternative way to initially address the tiling issue would be to look at the tiling as a triangular tile of polygons wherein you take a random chunk of said triangle as a sample from the first "tile", re-randomise where the points are going to be drawn in 2d space and then take the edge most points and have it so they are what correlates the next tile to the one before it. So basically don't look at the grid as a grid but rather think of it as something that initially exists as a triangle of triangles but can potentially be manipulated to be an irregular triangle of triangles... think pyramid recursion wherein each pyramid of pyramids is manipulated via Perlin noise but then the gaussian random number generator you're already using is then manipulating in 3d space in the same manner in which you would manipulate Bezier curves where those points will actually be. Also in terms of the way in which you're generating the heightmap itself, have you considered, for a final phase in generating the actual heightmap, routing the 2 output textures through some sort of optical flow filter ? The reason I say this is because using this in order to influence the heightmap texture, could in essence apply a layer of recursion to the clumping affect going on within the heightmap texture itself. As far as actually doing the latter would be concerned, I suppose there'd be ways in which you could use the python API for MATLAB to take the actual heightmap texture itself, do optical flow shit in there and then replace the texture buffer that's storing the initial heightmap with the version of the heightmap with optical flow
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
I don't think I really follow what you are saying about tiling, but there is another reason to use the cascades, that I could have explained better in the video. The cascades greatly improve the dynamic range of the FFT. To represent a plausible water surface you need wavelengths from ~1cm up to the hundreds of meters in choppy sea. To cover this range of wavelengths you have to use multiple FFT domains, otherwise the required resolution becomes insane.
@Arycama
@Arycama 2 жыл бұрын
Thanks for the video! I'd already implemented my own FFT ocean based on Tessendorf's paper and the phillips spectrum, but didn't quite understand some of the math. This video clears up a lot of it! Do you have sources for some of the other equations in your github repo, such as the direction spectrum function, normalization factor, and amplitude calculation for the jonswap spectrum? These were the parts I couldn't find sensible numbers for until I found your repo.
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Check out references number 2 and 5 for the info on various spectrums. github.com/gasgiant/FFT-Ocean/blob/main/references.md The cryptic numbers in the normalization factor function are just coefficients in a polynomial approximation of an actual integral, that I just made in python. Also, in my personal experience - you kind of have to fudge the realisic numbers to make a nice looking water. In particular, I find that JONSWAP and P-M both have way too much high frequency waves.
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Also, there is a separate .hlsl for that in the newer version github.com/gasgiant/Ocean-URP/blob/main/Assets/OceanSystem/Shaders/Resources/ComputeShaders/Oceanography.hlsl
@migram4190
@migram4190 2 жыл бұрын
Beautiful presentation. Subbed!
@stephencarlson6297
@stephencarlson6297 2 жыл бұрын
This is superb! Definitely subscribing!
@netstep
@netstep 2 жыл бұрын
This is very like to Nvidia's old ocean sample, which is now called WaveWorks. It also used FFT and so on
@gamedevwithjacquelynnehei465
@gamedevwithjacquelynnehei465 2 жыл бұрын
Hey, where do you guys recommend where to start on learning and understanding the math behind making ocean water like this. I don’t have a great math background, I basically stopped at calculus. Should I go back and learn the basics? Or is this something I can learn on its own? While watching the video I was a bit lost when they started the math talk, especially when they showed equations. Anyway, I really want to learn how to do this and understand it so I’m willing to put in the work, I just don’t know where to start.
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Hi! The key thing here is Fourier transform. I highly recommend getting comfortable with it. It has enormous amount of other applications besides this ocean thing. Useful knowledge in general.
@papaysailor1017
@papaysailor1017 3 жыл бұрын
This is so cool... I've gotta try this method in my Archipelago project! Thank you for posting!
@gamurarandrei2657
@gamurarandrei2657 3 жыл бұрын
amazing. Please do more videos like this
@Izzy7s7
@Izzy7s7 2 жыл бұрын
At 11:07 you mention that the textures are tileable because they are the result of DFT. Could you expand on this a bit? I'm sure it's something simple but I'm not very familiar with this field and that note stood out to me. Thanks for the great video!
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Well, Fourier transform is a sum of sines and cosines with periods like T, T/2, T/3 etc, where T is the simulation domain. This means that every term in this sum is "tilable" and hence the whole sum is too.
@alexyakovlev8112
@alexyakovlev8112 2 жыл бұрын
Explain please a bit about lod management. Did you use tree map or projected grid technique for drawimg geometry? What shader model did you use for shading water? How about refractions and scattering? From this video all those are not obvious.
@williamriddle9910
@williamriddle9910 2 жыл бұрын
Great topic and extremely detailed, such great work nice!
@buzbuz33-99
@buzbuz33-99 2 жыл бұрын
Excellent explanation of the issues and your solution - which looks very nice. One question: to eliminate tiling, you are using cascading textures. I assume that this is an addtion to the FFT method you are using, or is it an alternative? How is it implemented? Are those textures used as normal textures or as heightmaps?
@JumpTrajectory
@JumpTrajectory Жыл бұрын
The cascades are essentialy multiple FFT simulations. They output displacement maps and their derivatives (from which the normals are computed). The result is the sum of these cascades.
@SecretNenteus
@SecretNenteus 3 жыл бұрын
Fantastic video as always. Do you have more in the works?
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
Yes!
@SecretNenteus
@SecretNenteus 3 жыл бұрын
@@JumpTrajectory that's great to hear. Looking forward to it!
@Veso266
@Veso266 4 ай бұрын
how did you create this beautiful 2D sine simulation at 1:40?
@mrcao-fb9wx
@mrcao-fb9wx 2 жыл бұрын
One of the best video on the topic!
@tolkienfan1972
@tolkienfan1972 Жыл бұрын
Fantastic! Wish I saw this earlier
@Happen2Bme
@Happen2Bme 2 жыл бұрын
Thanks for the knowledge.
@erikm9768
@erikm9768 2 жыл бұрын
Huge like to this , great explanation! bravo!
@shokhzodalimardanov5659
@shokhzodalimardanov5659 3 жыл бұрын
Great work! I am researching FFT and shader languages to develop the same ocean simulation myself. Do you think the shader graph of unity can make this simulation as well? It is a lot of math and I wonder if it is worth making so much effort as the shader graph seems easier. What do you think?
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
There is a lot of math involved in the simulation, so implementing it inside a node system would be extremely cumbersome. The shader that uses the resulting displacement/normal maps to render the ocean, on the other hand, is reasonable to implement in something like Shader Graph.
@hugo5097
@hugo5097 3 жыл бұрын
Your videos are honestly amazing! Thank you and keep it up!
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
Thanks! Working on it!
@manishvarshney5571
@manishvarshney5571 2 жыл бұрын
So if I am not wrong, you know both Python and C# because you are using Manim for animation and also Unity.
@weiweitang-zn5cg
@weiweitang-zn5cg Жыл бұрын
anybody could help me ,i open the source code in github,but could not see the ocean,any config for this project? unity2020.3.48 version
@weiweitang-zn5cg
@weiweitang-zn5cg Жыл бұрын
i open the SampleScene , and run it,but could not see the ocean ,
@ignarmezh
@ignarmezh 3 жыл бұрын
Hello! What parameters can be used to obtain a wave with large peaks as, for example, for Gerstner waves? Or does this method not provide for such an approach? Thanks! Amazing work!
@TwistedPresence
@TwistedPresence 3 жыл бұрын
Excellent video! Great job.
@WelhamGaming
@WelhamGaming 3 жыл бұрын
Would really love to get a tutorial on how to make my boat float in the water. My previous project used raycasts to check the wave angles and move and rotate the boat accordingly, but I don't understand how to get the generated mesh off the GPU so I can assign it to a mesh collider!
@JumpTrajectory
@JumpTrajectory 3 жыл бұрын
Reading back the whole mesh and creating a mesh collider out of it would be extremely slow. However the system can provide water displacement and height samples to the CPU, which you can use to make a boat float. I'll probably include an example in the reworked version.
@bdenix1997
@bdenix1997 3 жыл бұрын
i did this by doing the same calculations in compute shader as i do in my vertex shader. and iterate through corners of the ship for all the vertices and get the closest wave to the corner points i set. + made an optimization: my water mesh has like 65k vertices. iterating through 65k vertices was kinda slow so, i just get the size of the ship and make my own 2 x 2 matrix array of the ship IN WORLD POSITION ( so that even if the ship coordinates change, waves are still the same) and feed that array of vector 3s to my compute shader. this way it only looks through like 500 points at most. lastly i check if the height of closest wave is below or above of the ship's corner. if its above, i apply a force.
@suedasen
@suedasen 2 жыл бұрын
@@JumpTrajectory Please include an example about that, it would be really helpful. I nearly searched for 3 hours for finding a boat float on your project.
@norbertpape1993
@norbertpape1993 Жыл бұрын
Beautiful work!
@BloedQS
@BloedQS Жыл бұрын
It's great work. Thank you!
@i_g6676
@i_g6676 2 жыл бұрын
Awesome work, dude! How long did it this project take?
@MaartenVaandrager
@MaartenVaandrager 2 жыл бұрын
really impressive work! and thanks for sharing. will you be maintaining this as a unity asset for the coming years?
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
The code linked in the video is not meant for the real production. It has significant performance problems. I am working on an improved version which I mean to maintain in the future. But I already blew several deadlines on it due to scope creap, so no promices on the release date.
@MaartenVaandrager
@MaartenVaandrager 2 жыл бұрын
​@@JumpTrajectory thanks for the info. We use oceans a lot for creating HIL test / training simulators for the offshore industry. Yours looks really good and I love your mention of Jonswap in the video. I couldn't directly find any variables related to jonswap spectrum in the editor, that would be really ideal for us as this is often the basis for offshore scenarios. We use really high end pc's so computational efficiency is not the highest priority. anyway, subscribed to your channel :)
@therollo9
@therollo9 Жыл бұрын
Who’s here from the Acerola ocean video?
@sade8990
@sade8990 2 жыл бұрын
I found an error in the code. Ocean waves need the WAVELET transformation, not the Fourier transformation. Otherwise the animation looks artificial and not real. Always use the wavelet transform for waves!
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
The superposition of trochoidal waves is defenitely not perfect and with enough experience at close-ups you can quite easily tell that the water surface is computer-generated even in sofisticated offline renders. I'm curious though, how can wavelet transform help in this case? What kind of wavelet function should be used? Could you elaborate on this?
@DrunkGeko
@DrunkGeko 2 жыл бұрын
What about the foam around objects (like the boat)? Do you simply use particle effects or are those also done on the water shader? If so how?
@bradzepfan
@bradzepfan 2 жыл бұрын
amazing work! do you do private tutoring? what program did you use the for graph-wave shown at timestamp 1:44?
@JumpTrajectory
@JumpTrajectory 2 жыл бұрын
Thanks! No, I don't. For the animations I used manim github.com/3b1b/manim
Inside The Navy's Indoor Ocean
20:25
Veritasium
Рет қаралды 31 МЛН
Coding Adventure: Simulating Fluids
47:52
Sebastian Lague
Рет қаралды 1,8 МЛН
Every parent is like this ❤️💚💚💜💙
00:10
Like Asiya
Рет қаралды 26 МЛН
Я сделала самое маленькое в мире мороженое!
00:43
Кушать Хочу
Рет қаралды 4,4 МЛН
Стойкость Фёдора поразила всех!
00:58
МИНУС БАЛЛ
Рет қаралды 7 МЛН
Good teacher wows kids with practical examples #shorts
00:32
I migliori trucchetti di Fabiosa
Рет қаралды 12 МЛН
The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?
28:23
How Games Fake Water
22:52
Acerola
Рет қаралды 211 М.
The Revolutionary Genius Of Joseph Fourier
16:17
Dr. Will Wood
Рет қаралды 148 М.
Coding Adventure: Sound (and the Fourier Transform)
43:31
Sebastian Lague
Рет қаралды 397 М.
But what is the Fourier Transform?  A visual introduction.
20:57
3Blue1Brown
Рет қаралды 10 МЛН
How To Write Fast Shaders
10:33
Jump Trajectory
Рет қаралды 20 М.
how water works in Sea of Thieves
3:25
Stylized Station
Рет қаралды 917 М.
The Discrete Fourier Transform: Most Important Algorithm Ever?
29:24
Coding Adventure: Clouds
12:50
Sebastian Lague
Рет қаралды 1,2 МЛН
Every parent is like this ❤️💚💚💜💙
00:10
Like Asiya
Рет қаралды 26 МЛН