Get a free 30 day trial and 20% off an annual plan at brilliant.org/acerola #ad The Unity Awards nomination voting is live! It'd make me super happy if you submitted my name (if you think I am deserving). unity.com/awards?
It’s kind of ironic how Fourier actually invented his famous formula to predict when/how the tides of the ocean would occur and now in recent times people rediscovered that it could be used to simulate the very same thing it was meant to describe all along Edit: What I meant to say was that one of the very first uses of the Fourier Series was to predict tidal motion (Sir Kelvin was the one who actually did the thing alongside the mechanical integrator! It's a very cool story too! )
My understanding is that Fourier created the method for solving the differential equations involved in modelling heat diffusion in metal plates? I don't think this is correct :/ Citation: Mémoire sur la propagation de la chaleur dans les corps solides (1807)
@@_zedsdead_ Yes, Fourier invented the Fourier series to develop an equation for how heat diffuses through a metal plate, then for a general heat equation.
Honestly, 2 things I very recently learned upon doing 3D are just how weak computers are compared to what I had in my mind (which was at the level of "just generate noise in real time and it will take 0.1% of CPU kek") and at the same time just how insanely optimized any game is and how many smart solutions have to be built in order to get gorgeous visuals while maintaining performance!
At the same time, computer game graphics had become realistic and lifelike drastically in the short time frame since the dawn of PC gaming. Only shortfall for most games are mostly physic like realistic object collision and voxel that makes objects "solid" since many game objects are just textured empty "box" or shell if that make sense? And lastly the AI or bots logic like npc that doesn't relied on developer's influences which has a long way to come yet imo.
I can not thank you enough for your contributions to the Unity shader coding scene. I have been wanting to add more water/flooded areas to my game, but have been avoiding it due to the performance impact/obvious tiling issues that existing water simulations on the marketplace have.
It would be cool to have this as a live wallpaper, with the wave parameters slowly changing over time (or perhaps using weather data?) so the ocean looks somewhat different every time you get to see it.
That's absolutely doable, if I ever get around to installing Unity, maybe I could modify the project to pull weather data and package it up into a Wallpaper Engine wallpaper.
Another banger from the funniest technical artist on RU-vid. You do such a great job telling a story and providing dense info in a super digestible manner. I am so ready for that principled BRDF video!
@@paninisauce6949 Richard Feynman was a physicist. Jack Quaid played him in Oppenheimer (albeit briefly) but is more known for playing Hughie in The Boys
@@jbritain Richard Feynman was such a guy. I'd recommend reading his memoir where he details breaking into classified desks at Los Alamos and leaving silly notes for fun, being obsessed with the bongos, and much more.
I think you should continue to use your 1660 to benchmark your projects to prevent the rebound effect on optimization caused by newer and faster hardware
i just finished a class on numerical methods a few days ago and already i am getting flashbacks also the way you "removed" tiling at the end was really impressive
@@stanleyyyyyyyyyyyGet off your high horse. There's no reason to put down other people's understanding, especially when the one in question was still learning.
Excellent video as always! It looks so impressive in the end and honestly working with enterprise software (that takes 45 second to load a single page of 20 customer requests) I tend to forget that computers can do this kind of magic! Your videos kinda make me motivated towards programming On another note, that transition to sponsor is very good
Working in backend did that to you, but also I think acerola said in his pixel sorting algorithm video that a CPU, which you and I used everyday in enterprise software is Smarter Slower, but a GPU which he uses in the shader program is Stupid Faster (and yet it can still do a mind blowing approximation of an entire ocean waves in real time)
@@yan-amarits probably due partly to network requests, which realistically is not something that can be solved. Many times even the server you make network requests to have to make other network/api request. But yes some software is just terrible as well
Especially since on a higher-range laptop's CPU, you can run a rough equivalent of a local ChatGPT now, and still have resources for other stuff. It's crazy what our chips are capable of when programs are optimized for them.
This video (and the previous) COMPLETELY sold me on Fourier Transforms and FFT. I'm going to Uni so I hope I'll have the opportunity to learn more about them (and maybe make an ocean a quarter as good as yours)
I love how all the math I learned in my Physics studies shows up in unexpected places like real time rendering. Never thought I'd hear about the Jacobian outisde of my simulations and modeling course.
It’s so cool seeing these otherwise abstract tools of vector calculus and differential equations I’ve learned about or heard about throughout college in such a creative and artistic context. Never stop!
You're by far the most entertaining resource on how complex shaders and simulations work but you still maintain a very professional quality in results. There are others who make the same kind of content but you have knowledge and skills on par with AAA devs when it comes to what you do.
@@Acerola_t I know, I just wanted to say that you're giving people free education on things that take years of school and industry experience. It's a real talent to make graphics optimization and math as entertaining as you do. 👍
this is the hardest my minor in applied math has ever had to work, and I'm not even trying to implement it myself yet...at least I actually recognized 90% of the terms you said without having to look them up! amazing video!
This is amazing! Reducing tiling by throwing more FFTs at it was really interesting as well. I’m now thinking about what could be done to further improve the sea foam, because the solution was (relatively) simple, so I think there’s room for some neat additions. Maybe a vertical offset of some kind to give it the impression of having volume and adjusting the rate at which it appears and fades to make it a bit more ‘sticky’?
Probably experimenting with different decay functions would be the easiest way. I didn't really spend much time innovating the foam cause it's kinda tacked on. It is the same method that every game uses as far as I'm aware, the biggest difference between mine and others is that since I don't use a texture for the foam appearance I don't blur the accumulated foam tex in order to keep it noisy and pseudo detailed to prevent it from obviously being a flat color.
@@Acerola_t seems like you'd want to adjust the material properties for the foam as well. do you apply the compliment of the fresnel to your scattered light component of your surface material? i think that is warranted, but maybe it's all bs enough to not matter.
its insane how much better it looks while also improving the performance as a music producer its really interesting to me how working in the frequency domain is so much better than the time domain as when working with music you have to sample the waveform in time before you can start working in frequency, so i would have initially assumed the exact opposite. thinking about it now though, it definitely makes sense why its so powerful since any conceivable wave can be represented by a set of frequencies and phases i'd love to see more like this, its really interesting to see how waves can be used in graphics and not just audio
FFT's are still continues to amaze me, seriously. Our life would be very different without them. Also your channel amazes me too! Your use of math with Unity is insane. There are few questions i want to ask, how did you learn all of this? At school or all by yourself? If at school what was your major?
2:46 Thanks for putting that text there. You’d be surprised at the number of times I’ve thought I was having issues when it was really just an intentionally-blank screen
This whole wave simulation series and channel as a whole has gotten me super interested in shaders when I'd never given it much of any thought before. The way you outline all of the math behind the graphics along with the humor in your presentation just makes for great edutainment. I also super appreciate all of the sources so those who want to see the nitty-gritty math can do so!
Just wanted to say that this is one of the most interesting videos on solving complex problems in game dev I've seen on youtube! subbed and i'm curious for your next videos
Idk when I discovered your channel but I've been watching for a pretty decent time. I think what got me hooked at first was the Persona 2 music in one of your videos. Then the Monogatari styled editing pulled me in even further. What sealed the deal was the topics you talked about. Hope you keep it up, Acerola. Frfr
Very cool Mr. Rola. Even if I usually don't understand the nitty gritty details, I appreciate how your videos always make it easy for someone like me to at least understand the basic idea of how these things work and the thought process behind it.
Your explanation of the Fourier Transform is super good and definetly effectively conveys the idea and purpose without getting into the (somewhat) complicated math 👍
Very impressive and fascinating. And it explaines why oceans in movies and games always look so fundamentally wrong. I have been sailing for my entire life and leanred how to read waves. True waves are curved from above too and have directional waves in different regions all of which you can see from pretty far away to the smallest detail.
This is absolutely amazing. GG Acerola. You go into just the right amount of detail to introduce topics and be entertaining. And you're just really funny. Thanks for making this video!
first of all, thank you for being awesome. you help break down complex subjects that i'd need a semester of college to understand otherwise and i'm endlessly grateful for that secondly, i'd like to request some topics! #1 a summary of common optimization techniques, or #2 mobile GPUs/APIs/mobile gfx in general
Super interesting video! Very detailed, on topic, and the humor and analogies really help pull it together. Very happy to have found your channel. Thank you for the content!
Great video Rōra Hime if you could do river water flow shader stuff in the future that would be epic! and maybe even how to have it flow seamlessly into oceans
Incredible work! Most of the math of shaders goes right over my head, but the end result here was damn impressive. If you do continue this project I would love to see you push the limits of a CPU based underwater ecosystem - that would be quite an addition! Earned a subscriber in me cheers.
24:12, you could dig a little deeper on the frequencies used here. If you use prime numbers for frequencies, they will tile on a much larger square, because prime numbers have the biggest LCM (Least Common Multiple). I use this trick for procedurally generate huge tiling textures from tiny samples.
the tiling is actually gated by the resolution of the textures, since all of this is being precomputed into textures that the ocean mesh then samples. If GPUs are ever fast enough to calculate the fft per vertex, then yeah this would be applicable knowledge, but we'll probably die first.
@@Acerola_t No, you got it wrong. There's no need for FFT. If you sample the textures, such that for each vertex v, for each texture t, the height of the vertex, or color of the pixel, is equal to the sum of t_i mod t_i_len, the size of the "tiles" is equal to LCM(t_1, ..., t_n). If the sizes of the textures are prime number length, which is the optimal length for this technique, you can get huge tiles with tiny textures. It's a well known technique.
the forest creators really worked on the ocean. even at that time you can see many little parts of it but one small problem is it locked at some frame rate so if you have 60 fps water will look like a slide show
im so happy for you to finally go ballistic with the view counts! you are the best! im learning so much useful stuff directly applicable to my field, and im not even a game dev but a data scientist
Ready for a greater challenge? Take a Fourier transform of a heightmap and then recreate the style as a procedurally generated infinite map. Imagine an infinite BOTW map that has the signature of the original.
I’m rewatching this with the experience of more game dev knowledge. I appreciate the attempts to translate the complex (ha) math topics into something more legible to a wider audience. Great work on foreshadowing the evolution of technique. I’m happy you create content on these subjects. Looking forward to the next vid :3
12:45 That’s a really good way to describe a lot of things where complex functions are used to produce real results (at least for people who have heard of Plato’s Cave).
I really love when you're teaching us that we can only see on books or even paid lecture with this high level. But we're ape brain so I really appreciate the style of the video very bite size but feels not really complicated. Good stuff 👌
Thank you ever so much! I found myself in the position of needing to write my own water math, and was feeling apprehensive... I feel encouraged & so much better now! :D
i haven't watched the video completely yet, but you caould look into single tile tessalation. It was recently proved that you can, using only one tile, create a non-recurring surface.
@Acerola I have this idea to get around the tiling problem in all sorts of shaders and texturing: APERIODIC TILING! But it's beyond me to implement. The world needs someone like you to look into this.
I like the title "I Tried Simulating The Entire Ocean" much more than "Here's How Much Smarter I Am Than You" 😆 Nah.. all joking aside, this is quite amazing. You did an amazing job w/ tackling this material, and even explaining it all in an easy-to-understand manner.
one super free and easy addition to 'fix' tiling: add a random rotation to each tile. I think there's a blenderguru video about that, where they simulate like, millions of donuts or something, and by applying a random rotation to each tiled texture, it no longer appears tiled to the human eye.
@@Acerola_t Very true! This is more of when the texture was being tiled before you got to all four overlapping, I was not at that part of the video yet haha. Love your solutions to things!
@@StormBurnX oh I see! It's extra not true for just one texture because if you apply some random rotation to the displacement map then it'll lose all spacial coherence and become unintelligible noise. It's a lot trickier to get rid of tiling when the stuff is moving!
3:58 Audio software engineer here. This is a fantastic example, though practically, it's a little more difficult than that. You can certainly remove pure sine tones with this technique, but every tone that isn't just a sine tone contains possibly hundreds of harmonics, which are sine tones at integer multiples of the piano key's frequency. These are practically impossible to isolate for a single note when you have a whole bunch of notes, especially since some notes are already integer multiples of other notes, and there are usually a huge number of harmonics that are identical across different notes. We do use Fourier analysis quite often though, and we use it to do things that are only possible when manipulating the signal in the frequency domain. One great example of this is autotune. In the time domain, you can't change the pitch of a signal without speeding it up or slowing it down (think fast forwarding a tape or playing a record too fast - you speed it up but everything sounds high pitched as well). However, in the frequency domain, you can just take all the tones and shift them up or down individually before converting it back into a time domain signal. This allows you to change the pitch without changing the time, which allows for things like autotune.
Acetrola definitely cameo'd this video, at the end specifically. I still want to see my mountain dew simulation, you suggested it at one point but the opportunity was lost!