Can UE4 efficiently cull geometry that's covered/occluded?

For example if I make a top down level can I keep the geometry at the bottom of my meshes or will it be more efficient to delete them in my modelling program and then import them. If UE4 can efficiently cull occluded geometry then I shouldn’t have to do that which would be nice.

If the geometry is one mesh, then it can’t be occluded and I don’t think there’s any graphics pipeline that allows that. If the object bounds are on-screen, it’ll be drawn. The mesh needs to be broken up into pieces, and anything not-on-screen won’t have draw calls despatched for it.

That makes sense, thank you.

How many polys are we talking here? Polygons have gotten pretty cheap to render, so maybe it’s not worth your time to worry about it.

Speaking of performance, can you confirm this: High draw calls are bottle-necked by the CPU, high fill rate requirements are bottle-necked by the GPU. If FPS increases when dropping your resolution from 1080p from 720p then you’re bottle-necked by fill rate, otherwise if it stays roughly the same then you’re bottle-necked by the CPU. Draw calls are increased when using non-instanced geometry, multiple textures, dynamic lights. Fill rate needs to be increased to display more polygons.

To answer your question: In this situation I’m making a basic wall which I could shave maybe 50 faces from if I clip the bottom in my modelling program. I have other assets where I could potentially save a thousand faces. I know that desktop GPUs these days can handle millions of triangles, but would saving a thousand faces here or there help on mobile? Would you worry about a couple hundred?

Off the top of your head do you know if this is the case even within the last couple generations of GPUs? I’m upgrading soon and wanna know if I should anticipate a big difference or not, and knowing this would also help me when developing for target hardware.

Thanks :smiley:

Only Multiple Materials. Textures are texture-fetches but not draw calls IIRC. Instanced Materials share the same draw , which is why they’re very useful. Polygons aren’t really that much of a problem (within reason), but there’s still no point drawing them if you really don’t need them. If they have different materials applied, that’s a bunch of extra draw calls you may never use.

Bottom line: If it runs at your target FPS, sod it!

Hahaha. Thanks for the quick lesson.

And

I’m always for perfection and optimization, so it’s okay to be safe and delete any and all unnecessary things. The documentation states that you should stay under 700,000 triangles to hit 30 fps on iPad Air (which is iPhone 5s processor with quadruple the resolution). So it may not be as big a deal as you think. In one project I accidentally left a 90,000 triangle car in my scene (it was meant as a test and I accidentally packaged it), and I didn’t see a single fps of difference.

For desktop, the bottom line is to just not be stupid and include million triangle meshes that you don’t need. The poly count will almost never be the bottleneck as far as I know.

Rule of thumb add as much geometry as necessary to make the object look the way it’s suppose to. An oil drum should look like an oil drum.

Hi, could you suggest where you got the models for the statues/ gods/ etc.? Did you model them yourself, if not, what asset store could you point me to?

Coincidentally even though you created a kind of “test scene” that almost exact kind of scene composition (minus the spheres) is something I quite need for my project.

Cheers.

In general just make sure that any meshes with a polycount of over a few hundred polys have a few LODs. You can just use the auto LOD generation system. Usually 3-4 LODs with reduction settings of 100%, 50%, 25%, 15% are a good rule of thumb. Then you may have to tweak screen percentages a bit to reduce the apparent popping.

By auto LOD generation system are you referring to Simplygon? As far as I’m aware UE4 can only compute LOD distances automatically.