How Games Fake Water
Ғылым және технология
Get a free 30 day trial and 20% off an annual plan at
brilliant.org/acerola ! #ad
Many Acerola viewers ask the question: How do games render water? Well, real time water rendering might sound intimidating, but it turns out most video games (Final Fantasy XVI, Elden Ring, Genshin Impact, etc.) use a relatively simple technique. How convenient!
Topics covered include: Intuitive sine waves, the sum of sines, vertex shaders, fragment shaders, central difference normals, calculating normals with partial derivatives, lambert's cosine law (lambertian diffuse), blinn phong specular, why gerstner waves are cringe, euler waves, fractional brownian motion, fresnel reflectance, cubemaps
Support me on Patreon!
/ acerola_t
Socials:
Twitter: / acerola_t
Twitch: / acerola_t
Discord: / discord
Code: github.com/GarrettGunnell/Water
References:
developer.nvidia.com/gpugems/...
iquilezles.org/articles/fbm/
www.shadertoy.com/view/MdXyzX
filmicworlds.com/blog/everythi...
Music:
Afternoon Break - Persona 3 OST
Iwatodai Dorm - Persona 3 OST
In A Moment's Time - Skullgirls OST
A New Frontier - VA-11 Hall-A OST
Midori Eyes - Paradise Killer OST
GO!GO!STYLE - Paradise Killer OST
Prof. Omochao - Sonic Adventure 2 OST
During The Test - Persona 3 OST
Junes Theme - Persona 4 OST
Underground Club - VA-11 Hall-A OST
Karmotrine Dream - VA-11 Hall-A OST
Neon District - VA-11 Hall-A OST
Moonlit Melee - Skullgirls OST
Your Love Is A Drug - VA-11 Hall-A OST
Thanks for watching!
arrow in thumbnail drawn by thlurp
This video is dedicated to my friend, Alotryx.
#acerola #graphics #gamedev #unity3d #graphics #shaders
Пікірлер: 839
Get a free 30 day trial and 20% off an annual plan at brilliant.org/acerola #ad Hope you like the video!!
@k_otey
11 ай бұрын
nice
@syaoranli7869
11 ай бұрын
have you considered Tessendorf's model for Fluid Sims?
@clarkey8598
11 ай бұрын
you said it was free!
@C0nejin
11 ай бұрын
Nice haircut 👍
@PlanetComputer
11 ай бұрын
swagilicious man
16:32 once I was trying to make the surface ripples of water running in a direction like a stream, and one of my attempts had small ripples that were just moving along the surface without any disturbance and I thought it was unrealistic and added some noise to it, then I saw water running down the street in the rain and it had super static unchanging ripples running along the surface, I felt really stupid
@Litl_Skitl
11 ай бұрын
Laminar flow babyyyyyy
@Solutra
11 ай бұрын
@@Litl_Skitl that isn't what laminar flow is but ok
@simonfrancis110
11 ай бұрын
@@Solutrait is
@Solutra
11 ай бұрын
@@simonfrancis110 captain dissolution has done an entire video on laminar flow, watch that before you say anything else
@Litl_Skitl
11 ай бұрын
@@Solutra Sorry I thought you meant ripples that stayed perfectly in place. I need to read more carefully...
I've worked as a fisherman for a decade. A lot of that time was spent watching the sea and thinking 'there must be a logarithmic mixture to reproduce this effect'. Here comes Acerola to crown himself again.
this isnt just how to make water, this is a crash course in graphics programming
The man himself has come to bring us another well explained video about complex topics I will forget as soon as I try to do it myself
@compilererror2836
11 ай бұрын
this is the most accurate comment ever
BABE WAKE UP-
@UliTroyo
11 ай бұрын
Poor babe. Who can catch a nap in this house?
@noobissk3001
11 ай бұрын
It's a new acerola video!!
@naiknaik8812
11 ай бұрын
babe, babe please why aren't you waking up
@user-kx8pu6ys5i
11 ай бұрын
It was 3 years ago, @@naiknaik8812 it wasn't your fault...
@partlyblue
11 ай бұрын
@@user-kx8pu6ys5iLook at me, son. It's not your fault.
On shadertoy there's a shader called "Seascape". Even with the source code right in front of me, I've never been able to understand it. This was a phenomenal explanation and I feel like I actually understand it now.
I swear to god staring at a thing in reality, questioning whether or not I would consider it realistic if it was presented in a video game is too relatable you explained a few concepts in this video that I took like, 2 years to figure out on my own, damn you! (but thanks for sharing it for others) now I can finally point people to a specific good video when they ask for shader knowledge
@nuvuv1
11 ай бұрын
i literally do this all the time lol. when he mentioned it in the video, i let out a sigh of relief that im not the only one who does this 😅
GPU Gems that are explained simply could be a whole series. You should do more of these.
Nobody does it like you. Explained well, entertaining, thorough, explained performance pitfalls and how to solve them, etc. Your work is a goldmine. Thank you!
basically becoming game dev also means becoming mathematician for that juicy wet water
@joaoguerreiro9403
10 ай бұрын
I would say a computer scientist hahaha
@machaoverlord5925
10 ай бұрын
@@joaoguerreiro9403 i mean you gotta sacrifice one or two braincells to fry to create this magnificent juicy water. Not as Avatar 2 level of water but convincing splashy water.
@machaoverlord5925
10 ай бұрын
@@eveningcommenter6312 i would love that on vr
I spent all day making structs do what I want them to do in my midi sequencer. This is what I needed to unwind. Hell yeah, that was some comfy overlap between audio and graphics. So many topics that are extremely familiar to someone who has spent more time with synthesizers than with code. Ultimately it all comes back to the Fourier transform when doing things involving sums of sines. Also one thing used in audio design to reduce noticeable beating (i.e. the audio analogy of tiling) is to vary each oscillator independently as a function of time. Plenty of ways to solve that issue but that's the one that immediately comes to mind for me.
@Acerola_t
11 ай бұрын
it's all waves all the way down! (also that sounds like a good idea)
I am constantly amazed at your ability to make complex topics easy to understand and fun to watch. As an aspiring game dev and current 3D artist, thank you.
I'm looking forward to the next video. The waves in Sea of Thieves look so impressive, they even have physics!
thank GOD someone finally spoke up against screenspaced reflections
Watching this at 0.25x speed to offset the goober who watched at 2x speed. Gotta internalize every detail.
Awesome video, I learned a lot! Still two minor corrections/annotations: 1) frequency is not 2/wavelength, but 1/wavelength. Probably that mistake somehow slipped in with the graph at 1:46. You can see there that you are not showing sin(x) but sin(PI*x). The natural wavelength of a sinewave is 2*PI, also known as a radian. Basically this is an angle-measurement that is based upon the arclength (= traversing the surface) of a circle with the radius of one. 2) the Blinn-Phong model is NOT in any way the basis for PBR. Blinn-Phong is an approximation on the basis on artistic criteria, calculated purely for verisimilitude, not realism. PBR models on the other hand approach the calculations on the basis of physical values. For example a light in Blinn-Phong can be brighter going out than it goes in since it is added once in the diffuse and a second time in the specular breaking energy conservation. A PBR model on the other hand only distributes the total amount of light into reflection and absorbtion, so it can never be brighter than it goes in. Oh and I didn't expect you to be this young, with the quality of your videos and complexity of the topics discussed I expected you to be an industry veteran for at least a few years!
@Acerola_t
11 ай бұрын
1) gpu gems is wrong then idk 2) I added an annotation saying blinn phong is no longer considered pbr by today's standards
Acerola, you're a lifesaver. You just saved the surfing mechanic I was thinking about scrapping because until now my waves looked like an unyielding herd of gelatinous migratory hillocks. still gotta work out a more performant way to make the big waves that crash and go tubular etc., but at least now it feels like I'm on the ocean, and not lost in some sort of undulating mound dimension.
@Acerola_t
11 ай бұрын
this method I still think looks yucky for bigger waves, it looks really nice for slower water/stillwater distortion on reflections. Next vid will go over the logic behind the nice realistic big waves though!
“wow frass nal!” was far more funny than it should have been
Yes! I have been hoping for a good detailed video about FFT and iFFT realistic water. I would still like one on that spooky partial differential equation one too, but I know that it's got hands
water is one of my favorite topics when it comes to computer graphics because there's so many ways to go about implementing it. my personal favorite video game water is Mario Galaxy, because it feels really stylized and unique, without resorting to solid colors and repetitive textures like a lot of other examples for stylized water. The toxic waste in Portal 2 also looks really nice, despite basically being brown sludge.
It's such a pleasure to watch an ugly looking plane of sine waves slowly but surely becoming a masterpiece
I'm a physics student going into grad school, and I'm planning on working on real time fluid simulations! It's fascinating seeing it from a nonphysical, more approximate perspective. Of course Fourier series would make their appearance! The domain warping aspect is very fascinating! I would never have thought of that, but it works perfectly. It also seems to naturally result in the low regions being flat and low detail, and the high regions being spiky and high detail. That's so cool! It's also fascinating learning about all this optics stuff. That's the one bit of physics I never got. I suppose if I want to work on games (a hobby of mine) I'll have to learn it some day...
You and Sebastian Lague have made me realise I want to be a graphics programmer, and I thank you for that.
@raiton99
11 ай бұрын
THIS! This field is so interesting!
@Toesty5
11 ай бұрын
Good luck!! You can do it!
@SpringySpring04
11 ай бұрын
Acerola and Sebastian Lague collab when?! I also really like Sebastian's work. I remember obsessing over ant simulations about 2 years ago when I saw his ant/slime simulation videos! lol
I really appreciate the quality of content that you produce! I can't remember having ever had such good, yet fun explanation on any topic!
It's cool to see a breakdown of how stuff usually works, but it's much rarer to see any content explaining 'better' options. Excited for the next video :)
Ever since I started watching your videos, I've been looking at real objects and thinking about the way it could be modelled digitally. Water has been the primary object of my attention, so I was ecstatic to see an Acerola water shader video! Thank you so much and I'm looking forward to more water shading stuff in the future :D
You explain those topics better than my professor, it's hard for me to understand certain equations without having an intuitive grasp about it. Your visualization really helps!
Totally agree about screen space reflections, they're like ants: once you notice them you see them everywhere and it totally ruins immersion.
your honestly one of the game dev people that I like to watch I find it more better of someone explaining me how it's done than someone just tell me how to make it and just coping the code without no knowledge of how it's done, and you're more entertaining to watch than a 2 hour video of someone explaining it like you video are more faster but not to fast to were I don't understand and can't follow along
Love the video, great topic. Would love to see more water and PBR rendering topics
I have been waiting for this video to come out! YEEEESSSSSS Thank you!!!!
I really hope you get around to the more advanced wave methods. The result at the end of this video looks great but sea of thieves' waves are something else.
@sumdude5172
11 ай бұрын
sea of thieves waves take up half the screen 80% of the time. You bet your ass they have teams of dedicated, nda-locked programmers and artists, who are as smart and hard-working as, if not more than, a single sleep-deprived youtuber, focused solely on the water.
@TeslaPixel
11 ай бұрын
@@sumdude5172 And this prevents a high level exploration of some of the methods how?
@Acerola_t
11 ай бұрын
give me 2 weeks idk
@someloser7991
11 ай бұрын
@@Acerola_t 2 months it is, got it 👍
@0osk
11 ай бұрын
@@sumdude5172 They did a siggraph talk in 2018 going over it. The talk was called "The Technical Art of Sea of Thieves," it's on youtube. I'm not a developer so maybe they left out some important details, but it seems pretty complete from what I can tell.
Wow, expertly breakdown the details to the most basic component. Great video!
Nice video! This helped a lot in my understanding of lighting, other explanations I saw were really dry and didn't explain the math very well. You should also cover distortion textures! By abusing distortion and multiple scrolling textures, you can make most visible tiling go away. There's a great video by a channel named Jasper about how they used this for water in Mario Galaxy 2.
Always interesting. Love the editing, as always 😂 Keep it up!
I started my college degree of computer science in the beginning of this year, and even though my primary objective is not to become a graphics designer and also because i am still a noob when it comes to programing and everything, your videos still are always really amazing, informative and fun to watch. Ngl, you are even better to explain somethings than my teachers are lol, hope you grow even more here on KZread you deserve it
@Acerola_t
11 ай бұрын
Have fun! also graphics designers make logos not video game graphics, important distinction!
@RayDimn
11 ай бұрын
@@Acerola_t noted 👍🏻
21:26 I'm sorry to say this, but with this rendering time you brought up a great Polish meme
Love the videos, mad props. One thing I do wish though is that we didn't get a 101 to graphics programming (what a normal is, what diffuse/specular are) in each video. Perhaps just refer people back to an earlier one? I know it's a difficult balance to strike to adjust it correctly for the target audience. Keep up the awesome videos!
@Acerola_t
11 ай бұрын
I'd rather each of my vids be a complete package
Just wanted to say that I adore your videos. They're wonderful.
20:13 LITERALLY ME AFTER I LEARNED ABOUT HOW POWERFUL FRESNEL IS
would love to see that more complicated wave motion 🕵
I really like how you explain things, thank you
Holy shit, the amount of information is incredible, also i love how you actually manage to keep my adhs-ruined attention span
One of the best explanations I’ve ever seen. Thanks!
Heyy thanks for another informative video! You rock, Acerola! :)
That's so interesting! Great explanation!
Trigonometry and fluidity are two topics I would have never have guessed would apply in graphics together. Now, it makes sense!
Great video! Excited for more water stuff next time.
Nice haircut, just as fresh as your water. Those specular highlights.
IM SO HAPPY you have so many monogatari figures. bro thats my favorite anime of all time. bro just HAD to show them all off
The replay stats on various parts of this video are gonna go crazy and I love it
Its always a great day when i see you upload! great vid as always
Trove of invaluable tricks as always! Thanks!
@Acerola_t
10 ай бұрын
Thank you so much!!
Phenomenal video, Acerola!
You got yourself a new suscriber ! Everything was clear and explained in a fun way, keep going 😁
It is always nice when a new Acreola Video rolls out
Something to mention with Sea of Thieves, you actually can see the repetition in the water from high viewing angles i.e. climbing a mountain. It is just very expertly hidden behind all of their other fancy work.
@Acerola_t
10 ай бұрын
yeah this is cause the fft approach is too expensive to compute in the shader so it's instead computed into a texture that tiles, otherwise there wouldn't be repetition.
@Kaboom1212Gaming
10 ай бұрын
@@Acerola_t That makes a fair amount of sense. It's still something I'm really interested in learning as well. Most of my stuff is done using textures too to be fair, though lately I've been baking heightmap and other data out of Houdini water sims to get an actual simulation as the baseline and then work with everything outside of that. Have you also seen their big talk about their cloud rendering system? It's quite an approach they use, they gave a whole breakdown at GDC 2019 called Sea of Thieves: Tech Art and Shader Development. I think it might be worth looking at as an approach as well for your other videos coming up, since you mentioned you were getting into cloud rendering as a subject soon too (iirc in your CS2 smoke grenade video)
Holy moly it’s another acerola video it truly is a wonderful day
19:20 I cant believe Acerola forgot to mention the 4th forbidden reflection technique of just using a 2nd camera to render the reflections
@Acerola_t
11 ай бұрын
basically the cubemap approach
That video made my life way easier, thanks mate!
Very well explained and I learned a lot. I think its okay to not show something on screen for every noun and verb. Sometimes it felt excessive.
After the opening of this video and seeing all the monogatari figures, I can finally understand why your title screens always remind me of that show! It was inspired by it!
I finally found a use for all the knowledge obtained from calculus classes: being able to understand Acerola's videos
Man, wish I could make videos this entertaining. Is it just a special gift you have? Really cool
A video on fast Fourier transform would be awesome. Thanks for another amazing video acerola!
Amazing work!
Dude, I'd be lying if I said I learned or comprehended much of what you just did, I'll be sixty next year and my short-term memory is, what was I saying? What I can say truthfully is I was able to follow along with you the whole video, you didn't lose me, my eyes didn't glaze over, and my mind didn't drift off. That's good, you have a knack for this! I wish you had been around when I was in high school, I'd have learned a lot more math and enjoyed math a lot more instead of dreading it out of fear I'd become a CPA..
Having watched a lot of your videos back to back, it's pretty apparent how good you've gotten with pacing and delivering just enough information to explain concepts without getting lost in the details. Awesome work as always, looking forward to the next one! You did raise a good question that I've never seen a satisfying answer for: why DO games include a bunch of post-processing effects that a lot of people always turn off? Are those people in the minority? Are the effects often just not done well? Is it mostly for consoles/lower-end hardware where lower framerates need more fancy effects to compensate?
@Acerola_t
10 ай бұрын
gamers only notice when they look bad and don't have the knowledge to identify the effect when it looks good
Looks awesome!
Love your videos. Hope you get to 100k soon.
As a UI programmer your videos have helped me understand more about graphics than any other. Well done chap
"turn that poop, into wine" - L. Ron Hoyabembe
great stuff, aced roller 👍
I've been learning opengl recently and i wrote my own code for a wave, but it was just one sine wave, and the vertices were...cubes. And i was computing the position in the cpu. Never thought i should do it in the gpu, that's brilliant. Thanks aceroler
Wow fresnel ... You got me there acerola ... What an enjoyable video ... Thanks a bunch
This is just what I needed for my RTS, only don't need the render, just the waves. It's an aether map, some gameplay stuff, so I'll need to figure out how to get back the data to the cpu eventually. Thank you very mucho!!
9:59 shoutout the Professor
Really cool video! Only time I've done a realistic water shader is following Sebastian Lague's planet projects, using wave patterned normal maps
This was wonderful!
Every other Ace video I go like that "Oh" gif, starring Chi McBride No better way to convey how this feller here makes me understand stuff that hadn't really sunk in
man has like all the exhibition figures, mad great video as always
I love this channel so much
Bro these videos are amazing where have you been in my yt feed all this time
i love your editing so much you dont understand
first off. amazing video as always, goes without saying since your quality is literally unmatched not only in the graphics rendering space but across youtube as a whole secondly, your hair looks great
New favourite acerola video. One day I will be epic like you!
Nice collection!
I look forward to more videos on water.
Great video! I wasn't so focused on math formulas since my university days 6-7 years ago.
its always a great day when acerola posts
Acerola: [explaining concepts beyond my pea-brained comprehension] me: yooooo he's saying those words Sho Minamimoto says all the time!
Saw Punpun on your shelf and immediately hit the subscribe button. I already know you have good taste so the videos have to be just as good.
You are amazing!! Thanks...I m looking into game dev. but as I learn on you KZread I only find channels tells you how to make games but not about the math of the games.
I love the “like next video” at the end
definitely my favorite video of yours
I do like this implementation of water, it looks quite natural and great at the same time, the approach I generally go for is just to take two noise textures and use procedural sampling so that it doesn't tile but I might start using a similar approach to this in the future. also i got a bit confused because I completely forgot about the water community post and was looking on your GitHub post processing effects for different tonemappers and saw the lens flares so yea lmao, still a great video and very informative
@Acerola_t
11 ай бұрын
I tried to implement a decent lens flare for the video but it kinda just looked like shit so I cut it
@thejinxedartist
11 ай бұрын
@@Acerola_t yea i was a bit confused lmao, i thought it might have been like an early version or something, still a cool idea though
This dude is actually the goat! What a generous man to be spend his free time doing this for us
Great job! Your channel is a hidden gem. I wish you to hide it even better!
Such a well made video! Keep up with the great content.