My first step in Strand-based Foliage Simulation
Vložit
- čas přidán 25. 07. 2024
- Files are available as a Tier 2 reward on my Patreon: / ghislaingir
Twitter: x.com/GhislainGir
Mastodon: @GhislainGir@mastodon.gamedev.place
0:00 Intro
0:32 Previous Experiments
08:48 Hierarchy - Strand From Bones?
13:13 Hierarchy - Strand From Custom Data!
14:24 Hierarchy - CSV File
16:10 Simulation - Structure
18:28 Hierarchy - Construction
19:06 Simulation - Algorithm
27:10 Simulation - Export
32:00 Vertex Shader
33:00 Vertex Skinning
34:59 Outro
I'm back with another experiment! I hope you'll like the video :) Cheers! - Hry
So cool bro, cant wait to see the progress
Amazing work as always Ghislain! I'm getting into compute shaders to generate procedural terrain and foliage myself and it is not easy, look forward to seeing what you do with this in the future.
Good luck with compute shaders 😄
@@ghislaingirardot I know right! 🤪 There are some better resources than there used to be, check out Shadeup.
Nice work.happy to see you progress :)
amazing talk! thank you sharing your tricks!
You're brilliant
Pretty awesome
very interesting and clever solution. reminds me the famous crysis interactive foliage.
It's hard to fathom how much Crysis was ahead of its time regarding tech 🙂
I been struggling with this and performance. well explained
I love this! I've been interested in doing some nesting based gameplay for little forest birds. Vertex based plant movement is awesome for graphical movement, but it's difficult to get realistic interaction.
I'd like to mix your method for nearby branches with vertex shaders or RTs for the remainder.
You can definitely mix techniques for sure :)
This is fantastic.
Ty! Sketchy though!
Approximately after 30:00 my brain started to explode :)
Really cool stuff, Ive been working on a foliage generator in engine using geometry script and my own implementation of the LSystem branching algorithm.. with some tweaking it could output that point data no problem along with a generated mesh.
Geometry scripting is awesome!
the goat
blueprint struct 😱😱
I liker danger
Have you watched the Foliage section of the Battle-Testing UE5 Next-Gen Systems with Fortnite from GDC2023 where they talk about how they baked the bone influences to Textures and use a Texture with custom MIPS to do the Wind etc ?
Also gone through in the Blog Post by EPIC called Bringing Nanite to Fortnite Battle Royale in Chapter 4
@@shannenmr Yes I have. Like I said in the video, the skinning technique I used is similar to the one used for skeletal animation textures or bone-weighted anim textures in general. This has been around for a long time now. Skinning is just one of the many pieces of a giant puzzle. For Fortnite, they baked a wind animation texture from a simulation done in Houdini, so it's precomputed and can't react to player/change in wind etc. This is obviously not what I want.
Find a girl that looks at you, the way Ghislain looks at foliage :)
Let's go round ... I don't even count anymore ! :D
WOw!
does unreal not have the notion of a compute buffer? An array accessible by the gpu outside of having to encode the data as texture data and having to worry about compression and sampling? That would be a lot more convenient and comfortable to use I would think. Also for the verlet integration you can solve the edge length multiple times on the same tick. Then you do not need to set your frequency so high. Just step through the node updates once and something like 4 times through the edge solving algorithm.
Hey! UE has a compute buffer afaik, but like I said in the video, it's a bit out of my league for now. Baby steps. Regarding substepping, yes, correct. Although some algorithm like XPBD prefer subticking the entire simulation, like I do, for more accurate velocities afaik. Same but different, I'm not sure it'll make a difference once ported to compute but it's something to try :)
@@ghislaingirardot ah cheers. I understand. Compute buffers are actually super simple in my opinion, they just sound scary :D I am not sure how they are implemented in UE but from my experience simulating kelp in unity I can say that they are a blast to work with really
@@kolupsy Oh yup, nothing too complicated about compute shaders, just that the UE rendering pipeline is definitely less straightforward and less documented than Unity's imho :D I'll just have to bite the bullet and dive into it rly
Could we use load instead of sample? Its faster and we dont get into interpolation problem.
You could and you should. I forgot this was an option at the time.
"Its a blueprints solution so its not performant at all" does this mean blueprints arent meant for priduction in these cases?
There's no absolute truth. My statement was for this specific use case. Blueprint *is* definitely meant for production. Just have to know when it is and when it is not. Doing a custom simulation that is subticked at 240fps isn't what blueprints were designed for. Convert this to CPP and you get code that is orders of magnitude more performant. For gameplay/event-driven logic (GAS etc.) that is called here and there however, you often don't get as much performance by converting to CPP and some things are infinitely faster to code in BPs and/or must be exposed to a higher level in the engine for level/game designers etc.
It's more expensive to make vegetation interaction based on bones, so it's not as good as shader.
Clearly, you haven't watched the video. This is not bones & it's a shader
@@ghislaingirardot Sorry, I didn't finish reading it