Landscape Tessellation Issue

Tessellation is a that UE4 offers. It’s busted. He wants it fixed. You haven’t contributed anything relevant as to why there is a huge drop and what can be done about it. POM or Bump Map will give better performance but at the cost of image quality. That’s why he probably wants to use Tessellation. Does answering your question really resolve the at hand though? Clearly not.

I have exactly the same problem.
In my case I started with a material from scratch and added displacement and tesselation.
As soon as I apply the material to a landscape the performance goes down alot (hint: distance based!). Then i set the tessellation to 0 and it still breaks down to 30fps (200 FPS target!).
My next step was to remove tesselation AND the displacement map. And guess what happened. Performance was still like it would tessellate itself into nirvana.

So yeah … no displacement/tessellation for this version of UE.

This needs to be looked into.

Tessellation right now is a total joke in UE4. Crack free doesn’t work, adaptive tessellation ON actually creates way more cracks then OFF and to top things off it produces a giant fps drop when applied to a landscape.
I guess things work just peachy on characters or wherever they should that we just don’t use. Ah well, maybe after the 10th VR update or 99th mobile compatibility newsflash, someone will actually look into this.

You all are assuming the bottleneck for the tessellation pipeline is in the actual subdivision.

If you have tessellation enabled it still has to preprocess the mesh as if it IS going to subdivide it even if it doesn’t wind up doing so. So you’re applying an expensive effect to a large part of your screen, which is also a fairly heavy mesh, of course you’re going to get a frame hit. Also you’re forcing the the entirety of the terrain to be reevaluated every frame, in case those tesselation parameters change between frames, so you wont benefit from any sort of geometry caching as much as you normally would, nor are you really benefiting from LODs to the degree you would with static meshes or even characters.

IF you absolutely positively HAVE to have to run a hardware tessellation shader on your game’s terrain, swap out the landscape object for a set of static meshes. That way the tessellator can run only on the few that are close and visible, vastly reducing the number of vertices per frame that need to be evaluated.

You are missing the point …

A distance based Tessellation should not impact the performance when you are out of range, see the according Wiki entry:

This would make the whole distance based tessellation obsolete. Also the same effect when tessellation is set to zero.

We just want a close-range displacement for ground materials, which are being applied to a landscape. UE uses tessellation vertices that for.
I’m sure I’ve seen this working properly in previous versions.

Would be swell to get some answers on this. Epic seems to pretend there’s nothing wrong which seems strange to me when so many people are experiencing this and it’s obviously broken.

I don’t know what the problem is but it’s bound to landscape size.
If you activate tessellation on a 8k landscape like in the OP yo instantly get a huge performance hit without actually having tessellated anything yet.
BUT, if you break the same 8k landscape into a tiled landscape and import like 8x8 1km tiles and then activate tessellation it doesn’t have that performance hit anymore.
Certainly what I’m saying here isn’t going to affect anything but I wish, I wish, some UE4 updates focus on improving/optimizing tessellation, pom and all graphical features…

just a hunch…
have you tried forcing the landscape to always use the highest quality LOD? (i.e. force it to never use LOD)
yes it will cause even more bad performance on its own, but I’m still interested in the comparison. I just want to know if the tessellation slowdown is related to LOD or if it’s something separate

I have my own problems with tessellation. basically Tessellation+Foliage+LOD is broken and they don’t even want to acknowledge it as an because there’s some exotic workaround.
I want to know if it’s related (unifying several problems as one = more people affected by the same problem = higher of it getting fixed)

8k landscape

With LoDs
Without tessellation

With LoDs
With Tessellation enabled (Not a single triangle added to landscape yet)

Without LoDs
With Tessellation enabled (Not a single triangle added to landscape yet)

Generally when a game engine developer is also developing a game, that game engine gets improved more towards the needs of that game.
Like Crytek’s crysis series the goal has always been graphical features and quality, and cryengine has mastered it. But they lack in many other aspects.
Like Dice’s battlefield series, their games needed huge outdoors and frostbite has mastered it.
I wonder where Epic is going with this. There are lots of things in UE4, many of which still have like 90% room for improvement but they never go back to it I assume, unless they need it for their own game in development.

Yup, most of Epic’s features seem designed around their tech demos and games. Paragon got us capsule shadows and some optimization, their car demo got a lot improvements for reflections and normals, Bullet Train brought VR features and VR optimization, Kite demo brought landscape and auto generation features, Fortnite got us distancefields, not sure if anything was specifically UT related, maybe some of the UI stuff. I’m not expecting a lot of open world improvements or day and night cycle features until Epic makes games that use them. We will get some features from pet projects by individual staff members, though. They have their Epic Fridays where they can work on whatever they want.

But also there’s been community contributions to the engine, a pull request from github finally got Epic to implement a sync workflow for normal maps with Mikk TSpace.

Also, Lionhead got us LPV from Fable.

thanks for the tests.
however I was meaning more a comparison of “Without LODs, with tessellation enabled” vs. “Without LODs, with tessellation disabled”
also what’s with the holes in your landscape when no LODs are used?

but you see it already. 4.11 came with a bunch of optimizations because Paragon needed them. I believe the same will happen with Fortnite and UnrealTournament.
besides that I expect it to be business as usual - they try to push features here and there and make some progress but they don’t go all the way, and then every now and then some new priority pops up which puts their focus on it for some time because GDC or something similar (KiteDemo to showcase open world features, Rivalry demo to show UE4 running on android, Showdown and EditorVR to showcase VR, planar reflections because of that weird exploding rock running on iOS Metal, etc)

How about Without LODs and without tessellation? Would be nice to see if tessellation affected it much.

Without LoDs
Without Tessellation

@Chosker, I don’t know what’s with the holes. That happens when it’s set to no LoDs and tessellation is enabled.

how about shipping package? Some things are PIE only.

so,

with LOD enabled, tessellation makes the framerate 50% of the original
with LOD disabled, tessellation makes the framerate 75% of the original

  • or -

with LOD enabled, tessellation reduces 46 FPS from the original
with LOD disabled, tessellation reduces 3 FPS from the original

I’m not sure if there’s a correlation but it seems a bit fishy :eek:

I’d still like to hear from Epic. tessellation is a supported after all


Flickering or transparent tesellation in far distance when using too high displacement. In our case placing a displace of >500 or >300 causes that. If we reduce it to <100 the problem disapeared.

For the frame-drops look that your cpu and/or gpu doesnt drop the frecuency . Some cpus from AMD uses Cool&Quiet technology that dropdown the frequency when gets hot.
In the case of gpus, some nvidia GTX can drop down to 450-550Mhz from the original 1Ghz. Try to fix both frecuencies cpu+gpu estables .

There is a problem with those cards.
“GTX 970’s 3.5GB of full-speed memory and 512MB of slower memory”
Probably a bottleneck.
http://www.pcworld.com/article/2888877/its-a--not-a-flaw-nvidia-ceo-addresses-geforce-gtx-970s-memory-spec-fiasco.html

try:
r.Streaming.PoolSize=3500 MB

For the far-away holes try combining with some texture-tiling removal technique:

Black color = no displacement = no holes in far. You dont need displacement so far.

[MENTION=42883]Blackhole Bilbao[/MENTION], I don’t think simply enabling tessellation checkbox (without adding more actual to the terrain yet) on a empty level is taking more than 3.5GB of the 970 to assume the issues are because of the other slow 500MB.

I am also not using any displacement map in the tests and tessellation multiplier is set to 0.

+1 for this! I would love if Epic revisited the current implementation with performance in mind and also to iron out any quirks. Star Wars Battlefront makes extremely good use of distance based tessellation on terrain and nearby objects, which REALLY boosts the quality and depth of the meshes. Dice mentioned on their photogrammetry talk that it was a very trivial cost in terms of performance since they faded the effect out completely after a few meters. This isn’t possible with the current implementation in UE4, as even if you do fade the amount of tessellation by distance, there is still a huge initial cost of just having it on, as demonstrated in this thread! Also I saw an answerhub post where RyanB made an awesome tessellated shader where only rocks and things that needed to be tessellated were, and flatter ground was much less dense. Some efficient content examples would go a long way in helping create nice, performant tessellated materials :slight_smile:

Don’t pour salt on my wounds ^^