Distance Culling per Object not Cull Distance Volume

Hello,

I’ve been going nuts about this:

I realized that there’s no individual distance culling per object…

There’s only the Cull Distance Volume. Right?
This isn’t really efficient. I mean, we save time because we don’t have to set every single objects value. (But that wasn’t a big deal anyway)


But, the thing is that objects may give a different perception at a distance given their silhouettes.
As an example:
The perception of a 6m ladder or a 6m light pole, 6m pipe, etc but 0.5m wide, is different than say a box shaped canopy of 6x6x6m.
The perception of the canopy at a distance is not the same as the ladder which is really thin and made of small/thin pieces.
So, the ladder and light pole could be distance culled much sooner than than the canopy. *However because of the arbitrary value of the volume it’s not. *

If I set the values to cull the ladder properly, now the canopy disappears way too soon since they both have the same “size” value.

Now, I know that I could set specific volumes everywhere depending on the objects placement but then I’m losing more time than setting individual values for every objects. And this is out of question when doing an open world with different people moving assets everywhere, everyday.

What options do I have?
It’s shame that they removed the distance culling per objects.
The distance cull volume is not offering an optimal solution to performance. We have to let it be too loose with certain objects…

EDIT:
I want the ability to set the distance culling value on the source object not on the individual instances.

You can set those per object. Go to static mesh instance and look level of detail panel. I don’t like to setup Cull distance volumes so we have our own solution which use those values that can be setuped per instance.

I have been thinking, if you have lots of meshes in the level and dont have want the hassle to set each of the rendering distance, you can iterate each of the mesh and set the rendering distance according to their size (the taller ones my need higher rendering distance though). Just a thought, and it seems possible and plausible.

I want the ability to set the distance culling value on the source/original object not on the individual instances placed in the levels. Pretty sure that the option was there in older UE (2.5…).

If there’s many different instances of the same mesh in the level. I guess there should be an override for the individual specific cases. But in general an object should have the same value as his instances.

I don’t want to track down every individual instances in every levels. (I know I can select them in the list, but even so that’s a waste of time, when the objects should have been set properly at the source, just like we set it’s LODs). This means that I would have to do a check for every objects by the end of the production? Non-sense!

The option should be there right underneath the LOD settings to kill off that last LOD at X distance. So every instances inherit the values automatically.

I really don’t get why we don’t have this option at all. The proposed solution seems counter-productive.

UE4 doesn’t use distance based culling anymore since ages ago. They replaced it with the system we have now.

@BrUnO XaVIeR
What system? The arbritary Cull Distance Volume?

*But, the thing is that objects may give a different perception at a distance given their silhouettes.
As an example:
The perception of a 6m ladder or a 6m light pole, 6m pipe, etc but 0.5m wide, is different than say a box shaped canopy of 6x6x6m.
The perception of the canopy at a distance is not the same as the ladder which is really thin and made of small/thin pieces.
So, the ladder and light pole could be distance culled much sooner than than the canopy. However because of the arbitrary value of the volume it’s not. *
If I set the values to cull the ladder properly, now the canopy disappears way too soon since they both have the same “size” value.

Otherwise there’s the draw distance (distance culling) value per instances in the levels. But like I wrote above - that’s not a great solution / it should be an override feature not THE feature.

The culling system now use bounds scale + depth buffer instead of distance check, they found it to run faster that way;
For manual culling, if you need distance overrides per object for a volume then you’d have to create a custom volume class in C++ and add some hacky code to it.

That means you won’t get default cull distance values in static mesh editor.

Just test it by yourself instead of guessing. You can manually set start and end distance for rendering per object. Depth buffer and bounds are used for occlusion culling.

Yes; per instance. not default values for every mesh.

“You can manually set start and end distance for rendering per object.”
Only per instance, not at the source of the object in your library. This solution is counterproductive. You have to track every single instances inside every levels and do a check by the end of your production and make sure that they ALL have the right value set. Otherwise there is the distance cull volume which acts as a “fish net”, but that’s not optimal - as it’ll keep a very thin light post being rendered as long as a house just because a single axis of the light post is has long as the voluminous house.

Now, I don’t see the reason why setting the distance culling of an object available at it’s root/source object when it’s available for the instances (like I wrote: at the instance level it should be an override feature not THE feature.)