hello, I am a small youtuber wanting to make essay-type videos just like you do, and since you clearly know what you are doing, I was wondering if you could give me some advice on how you make it and/or get the information for your videos.
Most of the games shown here don’t have ugly looking trees in my opinion. Especially Ghost of Tsushima. That game had some of the best looking foliage I have ever seen in a game
And I strongly disagree. With the exception of Ghost of Tsushima, which this video doesn't show any closeups of trees (the grass looks good, but it stated to give each piece of grass it's own geomatry and animation), and I have never played, none of the other games have good looking trees. They definitely have better looking trees than older games have, but they are still ugly. Foilage in general, both in it being 2d, and the way lod is so noticable, has driven me nuts in literally every single game. It just looks bad. Games with stylized graphics like Breath of the Wild aren't as bad for me, but they are still ugly. As for games going for realism, their trees are absolutely hideous to me as they stick out like a sore thumb. Luckily, Unreal Engine's nanite system goes a long way in helping with one of my most hated things about modern video game graphics.
@@TheNe0PhyT3 it’s so strange to me because I have never noticed foliage in modern games. Obviously games like SM64 have awful looking trees, but I haven’t ever been playing a game like BOTW and thought the trees looked particularly bad. They don’t look real, but I guess I’m just unbothered by it. It’s so interesting to me that it seems many people have always noticed it.
Ah. Love watching a video critiquing something, and being genuinely curious about what the person might have to say, and then realizing it's just a 4 minute long ad. That can be summed up to "Tree look bad in games, but we make good trees so pay us money so you make good trees too!"
something I noticed about dragon age origins is the leaves will rotate to face the player. It's an odd effect if you're looking straight at it, but since players don't usually look at trees they probably didn't notice.
This effect looks even stranger in Just Cause 2 where if you fly a jet over a forest at low altitude every single tree quickly turns towards you as if they were all LOTR ents doing a choreographed dance at you.
@@adarshwhynot you dont want to have your leaf-cards to be transparent, no game does this, you want them masked so the engine knows which pixels to literally discard and not render
Tree foliage will tend to use a "transparent cutout" shader that helps with the overdraw issue by limiting pixel alpha to be either fully transparent or fully opaque. The foliage pixel can then safely "write its depth" so that any pixels that are further from the camera will be discarded.
Finally.. true, but there's still the cost of iterating and depth testing all of them though so that's still a concern. Plus that's sort of a roundabout reason why trees look bad, abrupt cutoffs generally look worse than true alpha even with antialiasing and the like.
But if you use per-fragment/pixel discard then you also lose the benefit of early Z culling. It helps when the foliage is sparse, but hurts when you have foliage that's mostly opaque. For example when you have dense object occluding a tree.
A lot of people mentioned nanite, but the technique that UE5.1 uses actually comes from Pixar. It’s called stochastic pruning and it’s a LOD technique for porous meshes like trees and bushes.
Loved the introduction to optimization for foliage in gaming.😁 I have spent quite some time learning the pros and cons about optimization methods using Unreal engine 4, there are multiple techniques to work with, but with UE5 and Nanite starting to support foliage and transparency, geometry isn't really an issue anymore. (except crazy overdraw of course, need to still be careful with that one while putting all together geometry heavy assets) Few things to work with on the top would be : - Instanced meshes (reduce drawcalls and allow to increase performance overall) - Mipmap management (size of textures based on distance from the camera), - Frustum culling (to load and unload from memory objects inside/outside of camera point of view), or other culling methods - Draw Distance - Merge (of complex/custom geometry + materials to reduce drawcalls) - Use of Atlas Textures (to reduce load on GPU, specific to some scenarios) - Niagara particle system to take care of complex interactions/particles driven by GPU (Material nodes for interactions remain less heavy on GPU of course) - Octahedral LODs (another method to conserve good visual quality of the asset at while using very very low poly count, works well with symmetrical medium or large sized props) - Or even Vertex Shaders (for looping animations that cost almost nothing on the computer to run in realtime) And way more 😅At the end, it's up to what is the target platform/performance and visual fidelity, finding what fit the most the development pipeline.
Yes Nanite is really good. Other than foliage, it can also help with LOD pop-in issues and enable developers to use many high poly meshes without losing perf.
EU5.1 with nanite is also working towards making this problem easier to fix. i'm sure it's not perfect, but nothing ever is with large scale gamedev really. but it'll be a huge tool to make this less of a headache (provided you're working in unreal to begin with)
A lot of the trees from games actually look great, I think it's just Pokemon and maybe apex, but even then they are already criticised for bad graphics in general
Funny enough I don't think Pokemon Legends Arceus even used alpha cards, like it's literally the same tree and copy and pasted, a whole model seemingly just seemingly planted there, and just propagated, rather than alpha cards randomzing what set of leaves and potential flowers those could have.
I think it is mostly because the trees are not stylized properly like in cartoons or paintings. Most trees feel like stock assets, they dont need to look hyper realistic they just need to by stylized more artistically, but my guess is most trees are asset packages that are used to save on developmnent costs.
Since Unreal Engine 5's Nanite works with foliage now, it could be an option to render individual leaves with minimal Alpha. But anyways I thought in Unreal Engine an early depth pass is rendered on masked materials, which eliminates overdraw. Correct me if I'm wrong.
@@saimon1987 Then try the following: In UE5, Stack foliage planes behind eachother and set the material Blend Mode to "Translucent" Look at it in the Shader Complexity mode (Alt + 8). There is red and white areas all over = huge overdraw. Now set the material blend mode to "Masked" and look at it in the Shader Complexity mode again. There is only green areas. Overdraw seems to be drastically decreased. The early Z-pass for masked materials is on by default in UE5, which reduces masked overdraw. This option was available in UE4 but off by default.
@@Braindrain85 Everything in real-time rendering is a tradeoff, right. If you are going for a stylized game that can use the binary blending of masked or if you are happy to trade in for less realistic looking leaves, masked will definitely save you from overdraw. But leaves don't function in a binary off-and-on way as the masked blending does.
@@fergushamilton6274 Thanks for your input. Though could you please explain "leaves don't function in a binary off-and-on way". Since leaves are not half transparent, masking (maybe with some dithering) might be the most practical approach we have as of now. You said masking is a tradeoff for less realistic looking leaves. What is your preferred blending mode for realistic foliage?
One solution is to use different levels of detail. Individual leaf polygons => alpha cutouts => tree billboards that transition based on distance to the camera. Then the difficulty is in hiding the transitions. You can get very good looking trees for static screenshots at the cost of a noticeable pop when the LOD changes. However, when the trees are dense enough, and transition at different points, it's less obvious due to all of the visual noise. This is the approach I use.
I love how you always show the crazy cool and fun ways developers make the amazomg game we play. Reminds me of the making if films or that how it's made show.
A grass blade is a triangle, so there's no overdraw because you don't discard the pixels where the alpha channel is at zero, the trees use quads and discard the transparent pixels. if you reconstruct the geometry with GPU instancing (which seems quite too polygon heavy)then yes it could solve the issue but otherwise I think that has no impact on the overdraw
Can the overdraw problem be solved with raytracing since instead of drawing all the objects in the cameras FoV, the rays sent from the camera would hit the closest object first, eliminating the need to draw the objects behind it? Granted this depends on how many bounces you set, I know having atleast a few bounces is the key to raytracing looking good, but assuming you surrender this (and multisampling), couldnt you include an absurd number of objects in your scene and still maintain good performance?
what if you unloaded all the alpha card that arnt seen by the player? theoreticaly, that would reduce most the lagging, and then, making the texture different, so that you could make the texture follow the player without it looking bad.
Well, there's this one game called Post Mouse where trees are nicely rendered, but that's because you're a tiny mouse in a vast world set in the yard of an abandoned manor.
So I want to learn un5 so badly but I downloaded it last day at it took 106 hours and after I tried to opened it it started giving me errors saying it’s not supported and something else. After that I ended deleted the new version which is 5.1.1 and downloading 5.0.3 but it’s gonna take 106 hours also. Any help??
I’m glad the foliage in The Isle (evrima) looks so beautiful! I can run it with the highest settings and it really felt like I was immersed in that environment
Perfomance problems come from the transparent textures which 3D engines have problems to render: invisible parts of the texture (the black parts in texture mapping) cause brutal overdraw too. Instead of using a map to make unwanted parts of a texture invisible, its many times better to cut out the textures manually. It is more work of course, but you get a greatly perfomance increase.
Год назад
What do you mean by cutting out textures manually? Adjusting the shape of the mesh so it'll have less transparent part of the texture on it? Meaning, it'll increase triangle count as the mesh follows the texture's shape closer instead of having a big quad with tons of invisible part?
Why can't we just use the same bezier curve they use for grass? But have three to form a leaf with intersection points and range cutoffs? Lerp fill between?
None of the trees shown are what I would call ugly, and I don't think most people would. At worst they're just not as realistic as they could be. Also at 2:14, it is rather deceptive to show a static tree in a modeling program, then switch to a fully animated tree, with quite a different visual style, in a running game engine; that is not at all a fair comparison. There are also PLENTY of examples of great looking video game trees using alpha cards, or essentially the same technique with speedtree (which still depends on alpha cards). Really, calling video game trees ugly is extremely subjective.
Alpha cards... never heard that term before. It was common to call these billboards or billboarding. Cloud simulation used these a lot. Some interesting optimizations involved regenerating them on the fly to merge many together. Suddenly a couple of triangles is rendering thousands of cloud particles.
I think in terms of geometric density of recent games, we're close to the point of being able to use meshes for leaves, at least on LOD0/ highest poly/closest drawn meshes. I think that brings up a whole other can of worms in terms of animation consistency between LOD0 and lower poly/distant versions using alpha cards, visual consistency and possibly exaggerated asset pop when transitioning between detail levels, and just generally out of scope for anything besides maybe a next-gen walking simulator or photography game where close inspection of nature is a key part of a game.
taking a guess from what it looks like visually, im assuming his trees are just big and hollow, im assuming this based on how opaque the leaves of the tree are. because its just an opaque texture, you dont need to place leaves INSIDE the tree. since players wont be seeing it
A mate of mine bought the course and iirc his trees use a method where you transform every face of a sphere into alpha cards that then always face the player. Its a method that works for stylized environment but has some jank to it (last time I tried)
you just need dense looking foliage images, a realistic model and good textures that blend well. for example check out the trees in tarkov, pretty good imo
can u explain more about ghost of ishuma grass gpu instancing thing .. can u make a tutorial how it works? even if this is for premium member on youtube or so
maybe the solution is to not draw the pixels overlapping depending on which way the camera is facing? IDK they do that for other things in games. I'm a noob
Short answer? Yes, but with caveats. Long answer: Dreams is basically a game engine on top of a game engine on top of a rendering engine, so everything you're doing is abstracted to a solidly high degree. In Dreams the don't give you access to core engine level tools outright, you'll have to use what's at your disposal there. I'd recommend following some creators that work exclusively in dreams to see how they optimize their scenes, but things like GPU instancing and all that jazz require the engine to support it outright.
i think indeed gpu instancing would be great for high LOD trees like 1 naked tree mesh and generated on the fly gpu instanced leaves , with the high degree of polygons we can have now, maybe soon creating whole trees without needed alpha textures could work, and if we couple that with highly advanced billboards for distant tres, we can have something awesome! on the topic of billboard these got way better since the last few years, i saw an unreal plugin named impostor and it worked beautifully, though it demands lots of data and probably ram.
Can't you use entity culling to mitigate some of the performance impact? Basically, don't render any grass/leaves that is fully covered by other grass/leaves (so what is rendered depends on where the camera is immediately pointing at). This should already happen for things that are outside of the player's FOV, so we could try to apply the same concept inside it.
When I saw the big broccoli tree in mob psycho 100 season three I knew all the anime games I’ve played need that type of tree, not for the same reason dimple does 😂
I would assume that in most game engines most repeated meshes (like grass billboards) are drawn using GPU instancing, as it's usually a feature of the graphics API (OpenGL, Vulkan, DirectX, etc.).
Do you think Nanite's method for foliage will affect the industry in any way? Nanite still has issues with overdraw but I'm interested in seeing how games get prettier with UE5.
Not sure if this was mentioned, but GPU instancing doesn't do anything about overdraw, it's just less communication between the CPU and the GPU, saving valuable time. For overdraw, you can do a depth-prepass, where you only draw to the depth buffer first, so once you get to your regular drawing, you only draw the visible pixels.
why not cull the leaves based on a sparse raycast that injects information about the width of the visible leaf textures in order to reduce overdraw? it might be able to limit overdraw to 2 or 3 passes instead of the dozens experienced by full trees.
Ich weiß leider nicht mehr wie es heißt aber gibt es nicht extra ein Programm um Bäume zu erstellen welches den nachteil hatte, dass sich texturen mit der Kamara mitbewegen, das jedoch fast nicht auffällt wenn man nicht direkt von unten in den Baum schaut. Dafür sehen die Bäume bei weitem besser aus, Elden Ring nutzt das glaube ich. Edit: Es heißt speedtree und ja, Eldenring nutzt es.
Er hat glaub ich eh footage von speedtree im Video. Speedtree is der Industrieanführer was Bäume und Foliage angeht. Ob du willst das sich die Leafcards mit der Kamera drehen oder nicht kann man im machinein immer noch entscheiden
The best foliage I've seen and used imo is based on Cryengine. Amazing tech and optimized to an insane level. If I'd build the same scene in UE5, even of I would get similar quality the performance of Cryengine is amazing.