#notGDC

  Рет қаралды 15,535

Ghislain Girardot

Ghislain Girardot

Күн бұрын

Пікірлер: 90
@DavidRB
@DavidRB Жыл бұрын
Everything you do just looks so good!
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Thank you! But you know I do create a fair share of crappy looking stuff, I just choose to show what ends up looking somewhat decent 😅
@crakatinni
@crakatinni Жыл бұрын
Amazing content, brilliant real world application of the Fourier transform
@Frits_Mulder
@Frits_Mulder Жыл бұрын
Huge thanks for this tutorial, my water looks great now while covering a huge distance, and when using it for cinematics it also looks great at a distance with the right scaling. All the while barely impacting my performance, pure magic.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Glad to hear my tutorial was helpful :) have fun!
@couragefox
@couragefox 6 ай бұрын
This looks like a good way to do deterministic serverside waves on dedicated servers without gpus. You load the 512x64x32bit texture into memory. Send each player boat position and velocity and do a matrix multiplication on just the part of the matrix you need and a few bouyancy points located around the boat
@couragefox
@couragefox 6 ай бұрын
You get tessendorf waves but don't need to run ffts and therefore don't need GPU on dedicated server.
@ghislaingirardot
@ghislaingirardot 6 ай бұрын
@@couragefox Yup, it's limited in resolution & space, and can't be dynamically updated to change the wave parameters though. Plenty of good things about this technique, but plenty of limitations :)
@iamcraiglewis
@iamcraiglewis 8 ай бұрын
I can across this video yesterday, and thought I’d let you know about a similar technique I used recently. Instead of setting up the material to use a flip book, I set the flip book texture to be a volumetric texture and then used world position as the texture coordinates, and added time to the Z component. This seemed to tile nicely, and smoothly transition between frames but without me having to set up any logic to handle it.
@ghislaingirardot
@ghislaingirardot 8 ай бұрын
Yes, totally! A volume texture can simplifiy this process a lot! Whether it results in a faster shader has to be tested tho. I thought the old school flipbook approach was a better topic because it can be ported to other game engines that may not support volume textures yet and it's always good to learn how to do things yourself :D
@SuperemeRed
@SuperemeRed Жыл бұрын
Amazingly well done video
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Thanks, much appreciated!
@jklappenbach
@jklappenbach Жыл бұрын
Thank you! This is exactly what I've been looking for.
@user-em3qw6kw5g
@user-em3qw6kw5g Жыл бұрын
Tutorial d'une qualité incroyable, merci du partage !
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Merci!
@yonjuunininjin
@yonjuunininjin Жыл бұрын
Just click here and there, et voilà, you got some cool looking water shader.
@Mynowah
@Mynowah Жыл бұрын
Merci infiniment pour ton travail.
@cmds.learning7426
@cmds.learning7426 Жыл бұрын
amazing!
@nickgennady
@nickgennady Жыл бұрын
Not sure if you know but you can set and read particle positions from Niagara in blueprints/CPP. You could actually have a particle system that spawns lets say 5000 particles at startup and stay active lifetime of the particle system. You can set where you want to sample the height texture and read back sampled particle's position in blueprints / c++. you could use that to make a buoyancy system.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Oh I knew you could read data from Niagara on the CPU but I didn't even think to use it to sample the wave height! I had built another solution so I'm eager to try that approach and compare performance/useability. Thanks a lot for sharing that idea :)
@jklappenbach
@jklappenbach Жыл бұрын
One of the benefits of using a flip book is that it's deterministic, and the code can derive height information for buoyancy and occlusion without having to read from the GPU. Even with DMA, Niagara reads are still bound by PCIe bus speed, which is orders of magnitude slower than CPU cache hits, or even memory access. The other benefit is that multiplayer experiences can provide all participants the same view of the ocean despite lag, latency, or differences in GPU capabilities for a given time stamp.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@jklappenbach Hmm good points but I reckon you can achieve similar results with other methods. Sea of Thieve afaik uses FFT computed in real time with async GPU data readback for networked buyoancy and it can run decently on potato
@jklappenbach
@jklappenbach Жыл бұрын
@@ghislaingirardot I liked sea of thieves, and if I can get something at least that good, I'll be happy. However, my current goal is Black Flag. They did such a great job with wind texture on the waves. And the size of the waves became an obstacle in the game, periodically obscuring your target. But ACBF wasn't multiplayer, IIRC, so they didn't have to worry about determinism.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@jklappenbach Determinism isn't an issue. FFT, Gerstner Waves and most other techniques whether there are pre-computed or computed on the go, are determinist and you still have to read wave data from the GPU. However GPU async readbacks are usually good enough and the 1/2 frame(s) delay isn't usually an issue for buoyancy and such. I reckon Black Flag is still based on FFT. Or maybe Gerstner waves with detail texturing like I did in previous video(s). Flipbooks are cool but they have their limitations. Can't make the ocean react to changes in wind speed for one. Limited resolution. Memory heavy and so on. There's no perfect method.
@Kithwood
@Kithwood Жыл бұрын
Trop bien :O
@Pseudocue
@Pseudocue 7 ай бұрын
It's a bit of extra work, but to avoid the mipmap artifacts, you could author your own mipmaps. This can be done using the photoshop DDS plugin. The only thing is unreal is picky about what DDS formatting it accepts...
@ghislaingirardot
@ghislaingirardot 7 ай бұрын
Very good point, but yes and no. You likely can't fix mips manually here, oversampling is required. Also Gimp can be used to edit DDS files as well, and the funny thing is I made a tweet about it very very recently :)
@Pseudocue
@Pseudocue 7 ай бұрын
@@ghislaingirardot Ah cool I didn't know gimp was able to! Could I please ask you to explain the issue a bit more? Is it to do with making sure the border texels have enough surrounding information to downsample to the correct value?
@ghislaingirardot
@ghislaingirardot 7 ай бұрын
@@Pseudocue Hmm can't really phrase it better than what I said in this video. There's nothing to fix with mips per say, data is going to bleed across nearby frames. So you need to sample a smaller region within each frame to prevent what bled to be sampled, so each frame must be scaled up and contain more than "100%" of whatever you want to render. Thus, called oversampling. Thus the fix must happen when the texture is first authored, there's nothing wrong with mips.
@kioly_ah
@kioly_ah 11 ай бұрын
非常好的教程
@ghislaingirardot
@ghislaingirardot 11 ай бұрын
谢谢
@plasid2
@plasid2 Жыл бұрын
still wait for river xD
@nickgennady
@nickgennady Жыл бұрын
Wow. Miles ahead of some AAA games like Pokémon
@EnricoTosi
@EnricoTosi Жыл бұрын
Love this! I cannot find any smart way to create a waterfall! Pls tell me you have a way to achieve a good looking one
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Nop. Waterfalls are not straightforward to make. It's usually a bunch of custom authored meshes. Then scroll a texture with stretched uvs, add some extra particles and tons of other details and you get a decent waterfall :p hard work
@EnricoTosi
@EnricoTosi Жыл бұрын
@@ghislaingirardot thanks for the advice!
@boarnoah
@boarnoah 2 ай бұрын
This might be a silly question, but why is there a memory concern with the flipbook? Isn't it a single 4096x4096 texture that is sampled multiple times? Is that not particularly small in the grand scheme of things, in the case of a game that would utilize 2 or 2k textures for most assets?
@ghislaingirardot
@ghislaingirardot 2 ай бұрын
Height & Normal, that's already 2 4Ks, plus potential Crest map, that's 3. For one single wave set. You may need multiples for different ocean conditions or to break the tiling. And each flipbook only offers an actual 512px tile resolution so you might need 8Ks. So there's definitely a memory concern, especially compared to a mathematical approach where the memory cost is null. GPU memory isn't as tight as it used to be but is still a limited resource and I wanted to point out that using multiple 4Ks texture isn't as given as people might think, in any production.
@topalov_al
@topalov_al Жыл бұрын
Great tutorial! But in Unreal 5.1, the material with a standard plane did not want to work, it just slid up and down. From Cinema 4D, I added a plane that had more segments and everything started working
@Sozidar
@Sozidar Жыл бұрын
World Position Offset moves vertices, so the more vertices you have on your mesh - the better displacement will look.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Ty! exactly what @Sozidar said. I briefly mention in the video that the material should be applied to a subvidived plane. UE's default plane only has four vertices, so it's just going to slide up & down
@kkaayynniinnee
@kkaayynniinnee 4 ай бұрын
I’m wondering how feasible it would be to make this scroll and then possibly use this in combination with flow maps?
@ghislaingirardot
@ghislaingirardot 4 ай бұрын
Totally doable. Great timing actually, have a look at my twitter, I posted something about FFT flipbook + flowmaps :)
@ghislaingirardot
@ghislaingirardot 4 ай бұрын
Its starting to get 'expensive' at this point. Flowmaps double the texture sampler count for each texture set. That is already doubled for frame linear interpolation in the flipbook logic. So 4 texture samplers per texture set (height/crest/normal? 12? :( )
@zaluper4242
@zaluper4242 5 ай бұрын
I dont know what i made wrong but when i spawn second water plane near first one the transition between them is not seamless. can i fix this in engine or problem in my flipbooks?
@ghislaingirardot
@ghislaingirardot 5 ай бұрын
Impossible for me to tell sorry, could be either or both.
@TheAnimeLibrary-
@TheAnimeLibrary- 10 күн бұрын
why not using the water body plugin inside unreal ? is there any benefits to not using it ?
@ghislaingirardot
@ghislaingirardot 9 күн бұрын
No benefits. UE's water plugin is one approach to render water & add buoyancy. It has its pros & cons. You might not like it or might not want the overhead it comes with just to render a pond or whatever. Knowing how to build your own alternatives is good.
@kettenotter
@kettenotter Жыл бұрын
Hey I wanted to ask if you can use a ue volume texture? I wonder if they support mipmaps. They removed the section for it from the ue5 docs... so don't know whats up with that.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Uh, I tend to forget about volume textures :D I don't know actually and I don't know if they suffer from the same issues flipbooks have. But I guess the good thing about going full manual with a good old flipbook approach is that it's engine agnostic. You could replicate the shader logic in any game engine and it'd work. No need to rely on volume textures that some engine might not implement. But it's worth investigating, you're right :)
@kettenotter
@kettenotter Жыл бұрын
​@@ghislaingirardot True. And there is always another way to do things. But I looked into it. And it should solve the mipmap issue, probably. But the interesting thing is the mipmaps are 3D. So it will scale down the texture tiles but also take out tiles. (It will linear interpolate two tiles and merge them) So the waves would have reduced frame resolution in the distance. For example a 512 texture with 2x2 tiles. Would have on the 1. mipmap two 128x128 tiles and on the 2. only a single 64x64 tile. So waves would be static on that distance. I think it would need to be actually tested to see how it affects visual quality, but I think it will work great. Wonder if they have some internal optimisation or if they just sample two times like in your setup. (gpu should still need to sample 8 pixels on the texture, 2^3, but depending on how shaders are optimizied still more performant) I just found out there is a feature called texture array. This should work similiar but will not mipmap over the third dimension. You have to import all textures, select them and generate texture array. But I am not sure if you can directly input the third dimension by float or if you need to sample two times by hand. (Okay tested it will only accept integers)
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@kettenotter Texture array is to be tried as well, yup. I read that it suffer from complete lack of mipmapping so that could be an issue. I lack the good old flipbook approach tbh. Lets you have complete control over how the sampling is done :)
@kettenotter
@kettenotter Жыл бұрын
@@ghislaingirardot I tested it. And everything seems to work fine! It might be because they have turned them off by default (because they are used by UI often I think). But they work and also use them correct (at angles). I think under the hood it combines them to one long texture. Just with correct mipmaps.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@kettenotter Gotcha! Good to know, ty for the feedback 😊
@otohime8516
@otohime8516 Жыл бұрын
I love this tutorial, thank you so much! Idk why, my waves has a kinda black shadow/outline on them... I cant see where I have made a mistake. Could you help?
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Np :) Uh, sounds strange. Where is that happening? In Blender? In UE? Best bet would be to start from scratch and see if you missed a step
@otohime8516
@otohime8516 Жыл бұрын
@@ghislaingirardot In UE, yes I will do it!
@bdenix1997
@bdenix1997 Жыл бұрын
i made this in unity but the problem is you only get the vertical displacement. since you cantget horizontal displacement, the waves are not choppy. which is sad. but its a nice and optimized way for the ocean.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Hmm why do you only get vertical displacement? The Gerstner Waves aren't Engine specific, it's be done in every engines, Unity included. Are you sure you implemented the formula correctly? Displacement should be XYZ
@bdenix1997
@bdenix1997 Жыл бұрын
@@ghislaingirardot What i was doing is put a camera above and shade it depending on height and render them. So i would only have a displacement map for y axis. I could not find a way to shade it for all the axices.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@bdenix1997 My bad I had a bizarre KZbin bug and thought you were commenting on another video. Yeah this method does only output height displacement and you need the normals to add the chopiness. Any texture applied to the water also won't get distorted with the waves, which is sad
@bdenix1997
@bdenix1997 Жыл бұрын
@@ghislaingirardot I made an fft implementation just because i wanted choppiness. But its too performance heavy. Displacement map itself is not but the derivatives are killing it. + I am doing 2 cascades. But since i am generating waves based on time, i think i can make an animation and precalculate them just like this. Definetely worth trying.
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@bdenix1997 neat, congratz on the FFT implementation :D not easy to do. Might I ask what it costs and on what hardware? It does seem quite expensive but then Sea of Thieves uses an FFT simulation and it can run on potato so I'm not sure how they pulled that off. Anyway, yep you can for sure you a similar baking technique and output XYZ offsets into a flipbook from your FFT sim :) I'm jealous, I've yet to join the FFT sim gang ;)
@zogi1798
@zogi1798 Жыл бұрын
hi, i have a problem, i not got there create the texture with gimp, how i can do ?
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Hey! Uh? Could you elaborate?
@zogi1798
@zogi1798 Жыл бұрын
@@ghislaingirardot In fact, when I launch the .bat it doesn't show anything, while Gimp is on my computer, I don't understand, can you help me?
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@zogi1798 Oh, this script has nothing to do with Gimp. It uses a tiny program called ImageMagick. Install it and it should work
@rodrigofernandes6449
@rodrigofernandes6449 Жыл бұрын
Can you use this technic to make curvy waves?
@ghislaingirardot
@ghislaingirardot Жыл бұрын
Curvy waves?
@rodrigofernandes6449
@rodrigofernandes6449 Жыл бұрын
@@ghislaingirardot yeah. It really sounded weird. What i meant is how can we make something like the waves from a beach?
@ghislaingirardot
@ghislaingirardot Жыл бұрын
@@rodrigofernandes6449 haha. I wish I had a simple answer to give you :p it's a rabbit hole I won't go into (not yet at least)
@AIVocalsPeaky
@AIVocalsPeaky 11 ай бұрын
Hi. Are you using Eevee?
@ghislaingirardot
@ghislaingirardot 11 ай бұрын
Hi. No?
@kingmousefr4084
@kingmousefr4084 2 ай бұрын
a quand la vidéo en Français ?
@sabellalevitt
@sabellalevitt 8 ай бұрын
Hello, Is this dynamic ocean written in C++ code? Please inform the author all the time, this is very important to me!
@ghislaingirardot
@ghislaingirardot 8 ай бұрын
What? It's a shader. There's no CPU code (no blueprint, no CPP) Have you watched the video at all?
@sabellalevitt
@sabellalevitt 8 ай бұрын
@@ghislaingirardot Thank you. Due to the needs of the project, I need to find CPU coding (which requires CPP). I would like to ask if you have any projects in this regard for reference!
@ghislaingirardot
@ghislaingirardot 8 ай бұрын
@@sabellalevitt I don't have any CPP project.
@sabellalevitt
@sabellalevitt 8 ай бұрын
@@ghislaingirardot Thank you again !
@couragefox
@couragefox 6 ай бұрын
​@@sabellalevittplenty of CPP tessendorfs out there but the problem is ffts ran far far faster on gpus
@technicalhariom1291
@technicalhariom1291 6 ай бұрын
Hey Bro do it work for Android?
@zogi1798
@zogi1798 15 күн бұрын
salut, j'ai un soucis, quand je relie le materiaux au world position, tout passe sous le sol de la preview, comment je fait ? je comprend pas tout c'est pour ca.... as tu un insta ? un discord ou autre pour que tu puisse maider plus facilement ? merci d'avance !
@ghislaingirardot
@ghislaingirardot 13 күн бұрын
Salut. T'as du faire une erreur quelque part 🤷 mais impossible pour moi de dire d'où vient ton souci là comme ça... La meilleure soluce c'est de reprendre la vidéo depuis le début et de refaire les étapes une par une
@zogi1798
@zogi1798 13 күн бұрын
@@ghislaingirardot salut, d’accord je vais tout refaire alors…
@zogi1798
@zogi1798 13 күн бұрын
@@ghislaingirardot salut, alors j’ai repris toute la vidéo de À à Z, le Bug survient au moment où je doit rajouté les 2 heigth map, et quand je fait le multiply avec 75, est ce que tu saurais m’aider ? Merci
@zogi1798
@zogi1798 12 күн бұрын
@@ghislaingirardot je tai envoyer un message priver sur ton compte twitter pour que cela soit peut etre plus simple pour maider ?😅
How Games Fake Water
22:52
Acerola
Рет қаралды 207 М.
So Cute 🥰
00:17
dednahype
Рет қаралды 53 МЛН
Men Vs Women Survive The Wilderness For $500,000
31:48
MrBeast
Рет қаралды 96 МЛН
小丑和白天使的比试。#天使 #小丑 #超人不会飞
00:51
超人不会飞
Рет қаралды 45 МЛН
My first step in Strand-based Foliage Simulation
36:40
Ghislain Girardot
Рет қаралды 8 М.
CGI vs Practical - Can you tell the difference?
11:22
Blender Guru
Рет қаралды 6 МЛН
How I made this battle scene in blender
11:05
FxForge
Рет қаралды 522 М.
I Made a $100,000 Commercial in 24 Hours With $0
15:42
Smeaf
Рет қаралды 594 М.
The REAL Reason Unreal Engine VFX Looks FAKE
6:58
Joshua M Kerr
Рет қаралды 439 М.
Experimenting with a novel technique to create 2D wind in UE5
35:30
Ghislain Girardot
Рет қаралды 13 М.
The Technical Art of Sea of Thieves
41:11
iamarugin
Рет қаралды 21 М.
how water works in Sea of Thieves
3:25
Stylized Station
Рет қаралды 916 М.
Epic's Unreal Optimization Disaster | Why Nanite Tanks Performance!
13:07
Threat Interactive
Рет қаралды 152 М.
So Cute 🥰
00:17
dednahype
Рет қаралды 53 МЛН