You should consider creating a Wiki article on some of your tips…! I’ve not done any landscape work, but if I did, I would certainly want to read your suggestions up front so I can minimize the impact on performance… thanks for your insight!
We’re testing your project and textures. Not ours. Upload everything so we can test and give it a proper review. If you’re not willing to do that, and you have nothing further to contribute, bye. As of right now the screenshots you’ve posted don’t inspire production level quality. The fact that almost else has these issues, suggests you may be out of touch with what is affecting us. That should be checked and verified.
Yeah, sadly detail level, as in Wildlands is beyond reach without virtual texturing.
And tessellation, huh. 2 verts per centimeter. UE4 is crippled trying to tessellate 500x500 heightfield one time, and what is even more frustrating the existence of this problem was not / is not acknowledged.
Performance questions aside, just imagine trying to compile terrain material for 140~ layers in UE4 :o
While I don’t have any illusions about something like that being available in default UE4, I still think that current approach in UE4 is years behind of what it should look like.
It’s not a project, it’s a material and material function; both of which you can implement with your own materials. Me uploading a version of it with 2k or 4k textures isn’t going to change how it performs… You can plug anything into them and get the exact same results. The screenshots don’t have to look pretty… At the core, they are doing EXACTLY the same amount of math that would occur if I used fancy textures in them and painted the layers to be more “visually functional,” as in painting out roads or blend transitions, etc etc. If I did go through and hand-paint all of that stuff, while still ensuring every component had 10 layers painted on it, it would yield the exact same frame rate.
I simply made a 2x2km landscape, with 1024 components(2017x2017 overall resolution), and applied 10 layers in blend mode; with an opacity of 5% to ensure every component contained 10 layers worth of blending information(I made sure to set the first layer to fill with 100% so that everything after that would blend into it). The shader is indifferent to what RGBA goes into it and the test result doesn’t have to look pretty. Functionally, it’s still the same benchmark.
Lastly, you can take that attitude somewhere else. I’d advise you to do some research on cognitive biases because it’s a huge problem in the “engineering” worlds(I’m an electro-mechanical engineer) and holds people back:
https://en.wikipedia.org/wiki/List_of_cognitive_biases
I’ll have to play around with tessellation and see what kind of results I can get. I’ll use a similar range blending method, so that it’s not trying to tessellate things 1000000000000km away because again, there is not much point in applying detail to something you can barely see. As for compiling 140 layers, yeah that’s comparing apples to oranges: both are fruit, but not the same. You’d have to know how both compilers work to really compare the two.
Again, I still agree that the landscape system could use some work, but it’s far from being as bad as people are painting it out to be. People need to spend more time optimizing because it’s what separates low level indie games from AAA games. If you make your landscape 15% more performant, through optimization, then that leaves you with more room to pack in detail elsewhere and so on, so forth.
Then upload it proper or you’re not helping. Everyone else has said they’ve had a problem. You’re saying you have a solution on hand. Share it. Saying everything is fine without sharing your solution is meaningless. In our own materials we’re seeing major performance hits. Plenty of people have posted evidence of those issues. You’ve been dismissive from your first post, acting like in the thread is an idiot when it comes to optimization but you.
I already posted my material… It’s like when you buy a vacuum cleaner and it says “some assembly required.” There is absolutely no difference in me uploading it with the starter content textures in it because you already have them and are more than perfectly capable of hooking them up yourself.
In other news, here’s a possible solution to your tessellation performance problem(not fully finished working on it, but it works pretty well so far). What it does is if you’re closer than the min range, you will be at 100% tess and 100% tess multi and 0% WPO. Between min and range, it will start to blend. So for example, min=500 and max=1000: at 750, it would be at 50% tess, 50% tess multi and 50% WPO. After you are beyond the range, it will transition over to 100% WPO, with no tess. This way you can keep some of the effects in the distance. You could also put in one more test and clamp it to have a total range that would kill off the WPO.
And OBVIOUSLY try to minimize the number of layers using tessellation… If you have six layers using it and they are all on a component, it’s going to have to run the math for all six and blend them together. They need to implement a way to cache a small bit of data, per component, that would let you filter out something like “use only the top two dominant layer displacements for blending instead of all 10, even though all 10 layers are present.” Little optimizations like that would go a long ways.
EDIT: fixed and now tweaked again. Now ensures it the blend between WPO and tess will always sum to the master displacement amount desired.
If you really wanna learn something, please get rid of the hand-holding attitude… the file is there, have you downloaded the file?
The issue is that you haven’t produced anything production quality level like others in the thread. You may argue that no one else in the thread knows how to optimize like you do, but you haven’t proven that you can optimize and produce results that compete with the current standards of games being produced by our competition.
Maximum-Dev is a AAA level designer who has worked in depth with the engine and has produced works for shipped games. He’s trustworthy. When he says there’s issues and you take the position that he doesn’t know what he’s talking about, you lose the legitimacy to be taken seriously because you have nothing of the same body of work to prove that you know what you’re doing.
That is why I’ve asked you to upload you work so we can test not only your optimization efforts but the quality of work you’re able to produce with those efforts. If the work looks significantly worse than the competition, your workaround isn’t something that resolves the performance issues that others are having. If thats the case, then the request for Virtual Texturing is a legitimate one and one that Epic has taken seriously since it was originally added to the roadmap for 4.17.
And it’s not that Maximum-Dev doesn’t walk the walk. He’s given away his landscapes away for free in the past. That you’re not willing to meet his efforts to share work doesn’t really inspire confidence. Simple question: Can you produce similar results to these UE4 screenshots with the optimizations you’re talking about for us to review?
You obviously don’t understand the difference between a technical artist and an artist… A technical artist makes the framework that the artists then use. If a tech says “Hey, you can use 4k diffuse, but everything else needs to be 2k,” it’s usually for a reason. Why? Because they have benchmarked it and found that it fit within the budget. I don’t need to produce anything that satisfies your visual wants/needs/desires because under the hood, I could plug in pure white textures and it would function exactly the same as if you put in fancy textures. The engine is indifferent to it it because it still reads the texture files one pixel at a time.
He makes great looking stuff, for sure. However, most of it doesn’t look that feasible for performance gaming. If he did work in a AAA environment, then it was probably just in art and not the technical side.
Virtual texturing is taking this long to come out because it wasn’t a high demand thing. A small minority has complained about it, over time, and they have finally gotten around to implementing it. It wasn’t a high priority issue. Plus, it has a lot of pros/cons. Just play Wolfenstein and cry every time you turn a corner and have to watch textures walk their way up from 64 to 128 … 2048. Off the top of my head, I know that it doesn’t handle zooming, transparency or fast moving scenes very well. On an SSD, it might be different though but it still has it’s limitations.
And yes, I can produce that kind of work. The first shot, he probably spent god knows how long tweaking the lighting(which the ground lighting still doesn’t match the skylight) and it looks like he found a texture pack with a high quality texture. In the second one, well that’s as simple as playing around in world machine, for a few hours, and exporting the 1000000 different output layers that you desire, importing them into UE4, doing some basic tweaking/rigging for each layer and applying each layer to the landscape. You can even spice it up and tweak or merge layers in photoshop a little before importing. Of course you might have to do some projection for cliff sides and such, but it’s really not that inherently difficult per se.
Don’t get me wrong, I’m not discrediting his abilities and I think his work is definitely nice. My point is, just because he’s good at making pretty landscapes, does not mean he is good at optimizing them for gaming. Now if you stick that kind of work in a pipeline and it would be amazing for prerendered work.
On a side note, I guess that WPO doesn’t behave very well with landscapes. The method I created, in my previous post, still works but I’d just have to remove the WPO part of it and have it only bother with tessellating. It still works great on static meshes though!
Look, bro. You know all the technical stuff okay. The distance based tessellation you show up there, I did it 2 years ago. The “solutions” you’re bringing here are nothing new. Also FYI tessellation has a bug, Epic has refused to fix the bug for 8 months. And we’re not talking about tessellation here, we’re talking about cost per layer WITHOUT tessellation and while everything IS optimized.
HOW DO YOU KNOW??? By looking at pictures? you just look at pictures of my landscape and just because it looks good you decide to call it “not feasible for performance gaming” or that “His work looks good, he must not know a thing about optimization”? With that logic I won’t take you seriously from now on.
It’s actually a very highly demanded feature and should’ve come with UE4 out of the box. It’s open world 101. People shouldn’t necessarily make a hundred complaining threads for a feature for it to be considered highly demanded. The fact that other engines use this for open world projects shows how important it is otherwise they could sit and not do it until CEO complains about Far Cry or Battlefield series running at 30 FPS max.
That is, not true. Show me a picture of any problem caused by virtual texturing on landscape in any Battlefield games.
His point is you’re constantly bringing up examples that are completely irrelevant to the subject. And you’re constantly bringing workarounds and solutions that do not apply on anyone’s machine other than yours. And confirmed your test case doesn’t hold up to what you’re saying. And when you say you’re getting 32 FPS so that’s good because you’ve capped it at 32 FPS, on 720p, well that’s just… funny.
If all you’re gonna do is continue writing “His work looks good, so it must not be optimized” for another 2 pages then please keep the solutions to yourself.
Please don’t derail the thread more.
When did “everyone” test it? The only attempt in this thread I saw was the dude complaining that he couldn’t test it because textures weren’t included (note: you can use starter content textures). Was this thread about landscape not looking good enough or landscape not being performant enough?
I did test it expecting massive performance drops but there weren’t. Of course you don’t have to take my word for it since the assets (excluding textures for a good reason) were uploaded and you can test it yourself.
From what, people sticking their heads in the and waiting for Epic to fix their problems? Surely anything that has a possibility to increase landscape performance should be welcome in this thread, at least I hope so. If any devs are reading this they are probably more interested in tests and experiments of what increases (or decreases) landscape performance than just feature requests.
Yes to the people who are in the ‘debate’, please at least download and play around with it using your own textures and other stuffs… it seems that people are hell-bent on making sure they are winning or something… it is obvious from here.
We tested it, on several machines. Other people in this thread has mentioned they tested it as well. And they have posted what results they’ve got. What’s the problem with saying the problem persists?
We’re not looking for anything to improve performance by 0.5ms or 1ms. We’re looking for ways to improve it by 10ms, 20ms or more and that improvement can only come true with the right tools being implemented in the engine therefor Epic has to step it.
If you’re willing know what decreases/increases landscape performance sure, I have tons of stuff to share with you. But that’s not worth the negligible difference it makes at all.
It’s hard to argue with people over specific features while they have no experience on the matter. Find me anyone who properly textures an 8x8 landscape with 16 layers with an AAA competitive quality bar, and get’s +90 FPS with mid range hardware at 1080p. Then we can go by that.
I’m having similar issues but not as severe. I’m also using a 8x8 map, with tons of layers (although probably only about 6-10 at most per component and they are not too complicated). Just wanted to show that there are more people that would like to see some improvement on this in hope that Epic decides to look into it if enough people ask for it.
Here’s what’s wrong with that test.
When creating a proper landscape shader i.e 12 layers with splat mapping and also preserving the ability to do manual painting on top of that. Then implementing effects such as distance fade, slope based layers, mixing different layers together based on a mask, doing height based changes, heightmap blending, or so many other things, the shader grows so large and complex that you can’t even fit it on screen to take a Screen Shot of it. There are just so many things you do in a shader other than simply plugging a Diffuse and Normal to BaseColor and Normal inputs. This high level of complexity is considered, very normal in AAA studios that use engines with proper open world support.
Here I get ~75 FPS with 5 layers only. Textures are channel packed. No 3Planar mapping. No slope based texturing. No Tessellation and no POM, and generally nothing AAA studios are doing.
At best, the complexity of my work is probably 1/3 of the complexity you’d see on landscapes like in Battlefield 1 and yet with that in mind, we have so much less performance, simply because they have different implementations and UE4’s is lacking. So when you create a shader that is as simple as plugging textures to input slots, and you put that on a landscape that’s 1/16 of the size of the maximum supported landscape size, and even further you cap your frame rate to 32 so you’re already seeing an slide show without noticing it, at 720p, and post the results online claiming people don’t know what they’re doing and that if they channel packed their textures they wouldn’t need virtual texturing or any type of open world support from Epic, that by definition is unacceptable.
On the side note, Epic had Virtual Texturing on the old Roadmap so they might have felt the need for it. But with the new roadmap everything is gone. This thread is 3 pages long. Any response from Epic would be welcome.
That is great idea indeed! You should really consider uploading your project.
I’m a bit worried about gentlemen, who cap their framerates as ultimate remedy for performance problems though
I cannot really explain how the thread turned from highlighting one of few setbacks in the engine into denying existence of such.
Yeah, not like it would have been implemented any soon. I would rather hope for texture array support as a feature that requires incomparably less efforts while still delivering good boost.
So what you’re saying is you got nothing to show? After TWO YEARS with this UE4, you have nothing to show?
This is a myth, like unicorns and hobbits.
it heavily depends on the details.
are there engines out there capable of blending 16 texture ‘sets’ (diffuse, normal, etc) in a single terrain? surely.
are there engines out there capable of blending 16 texture ‘sets’ processed in each and every pixel? I would surely doubt it.
Maximum-Dev wants the first option, but UE4’s landscape material system heavily tends towards the second