Any good tips for culling?

Does anyone have any good tips for culling? I have a map im working on that i use the precomputed culling… pretty much just threw the box around the entire map… and i did the build. It does do some culling, but i find that it doesnt do enough. There is a lot of outdoors in my map and lots of buildings inbetween blocking sections of the map, but from what i see lots of things on other sides of big buildings are not being culled from teh view point i would expect… its really ramping up my draw calls so i guess my question is if there are better methods and what i may be doing wrong if i am doing anything wrong at all…

Obviously the precomputed visiblity override volume is an option, but i dont feel like throwing 1000 individual objects 1 by 1 into teh volume seperately… besdies the monumental task of finding every mesh and not missing any… its just a long process…

I also have maps that include lots of exterior environments, which I just have a hard time convincing myself to do without, so it creates problems. I have had to do a lot of optimization to get my game to play with a higher fps rate. I love modular construction, but the truth is after 1000 object calls it just all starts to fall apart so I do the following.

1 ) After I build an environment I look for groupings of objects. I can export that grouping to Maya as an fbx file from UE4, then template it and make my groupings in Maya instead. If i can save between five to ten object calls into a grouping that’s a good savings especially if it’s used twenty times in an environment. The trick is balancing between making the grouping too big, so that you start getting errors and shadow problems that requite the shadow minimum render to get larger and larger. Sometimes I err on the side of grouping ten objects together and see what I get, only to go back and slim it down.

2 ) Make LOD objects for your model. These should be reduced in your modeler of choice because the lightMap UVs need to match. There may be other ways to do this, but from my experience if your lightMap UVs change, you will get lots of wonky shadowy things happening when the game switches to lower polygon models.

3 ) I make smaller texture maps regardless of even having a LOD model. So I copy my original model into a MRES (medium res) and an LRES (Low res ) and even an XLRES (extra low). This is the technique I used in VFX, and then I would run all my 2k texture maps through a filter to reduce them to 1k, 512, 256 and 128 resolution. You can do this manually in Photoshop.

When you create your LOD1 and LOD2 in UE4, make lower resolution Materials to go on your LOD1 and LOD2 models using the reduced textures you did as above. This will at least cull out loads of texture data. If you have LOD models all the better.

4 ) I use Streaming Levels to bring in areas of models (especially interiors and interior props - anything I can hide) and unload them when not needed.

Overall, even though I have extensive exterior environments I still try to follow certain guidelines that people use for interiors. If i can hide environments in the distance by a jog in the landscape or behind rocks, or over a hill it helps to turn it off unless needed (streaming). I make my buildings more extensive than I originally did to allow for areas to steam in and out.

Part of all this is working smart, and pre-planning. If you can build LOD models while you make modular models, and reduce textures to allow for lower resolution Material culling while you work it will tend to build up less, you may even be surprised that switching to a 512x512 texture map shows no noticeable loss of imagery in some areas, instead of using higher resolution, but it depends on the textures you’re using of course. My textures tend to be repeatable textures that allow me to use them many times over, so that they show less flaws when reduced.

as for 1.) Unreal actually has a merge actors tool which sets you up so u dont have to export to maya… it will even merge multiple textures/materials automatically if u hit the checkbox to do that… so u can atlas them and have them all do 1 drawcall … or whatever number your material requires. Hell ive taken the entire infiltrator demo city and turned it into 1 mesh with 1 material. works great you should check that out.

as for 3.) I dont understand the point of that… unreal uses texture streaming… which lowers resolution automatically… it only loads in required mip levels of the texture. So your method would only make performance worse by requiring it to load more textures. ( at least thats what i have been told.)

4.)cant stream levels since i need this multiplayer compatible.

In either case thank you, but i am only interested in knowing if there are any methods to make culling of objects better. Other then precomputed visibility override… or if there is an easier way to use precomputed visiblity override.