Download

Force rendering of emissive object in high distance - or workarounds

Hi everyone,

I have a use case for UE4, where I need to capture vehicle lights by night at a distance of 1000 m on images with a resolution of approx. 1200x1000 pixels.

I set up some neat vehicle light objects including spot lights and an emissive body and I get a fairly realistic bloom behaviour etc. pp. at close range. Unfortunately, my emissive objects disappear as soon as their screen size is to small to be captured by my screen resolution.

I was able to increase this distance up to 700 m by massive supersampling with 6000x5000 px and then resampling to 1200x1000 px. Of course this is not feasible for real time rendering, which is painful but I can deal with it. The bigger problem is that I run into hardware limitations, so I need to find a different way.

I thought of two possible solutions:

  1. Is there a way to force bloom rendering of emissive objects independent of their screen size and capturing by the camera?
  2. As a workaround I would try to scale the emissive object based on its distance to my camera to make sure that it always affects at least a single pixel. Any recommendation on a good approach for this?

Of course I’d be happy to hear about other solutions from you. :slight_smile:

Best regards
Robert

Read here for info on visibility and culling:
https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/VisibilityCulling/VisibilityCullingReference/

See if you can activate Never Distance Cull on the object
When enabled, this object will not be culled by distance. It is also ignored if it’s a child of a Hierarchical Level of Detail (HLOD) mesh.

Hi and thank you for your reply!
I’m afraid culling is not the issue here.

In fact, at a distance of 1600 m I do see my headlights at full hd image resolution, mainly due to their bloom effect.

With decreasing distance (approx at 1500…1400 m), the headlights start to disappear and reappear for a few frames at first, then vanish completely.

They become visible again constantly at and below 400 m. I can increase this 400 m threshold to 700 m by using higher res.

I wonder what happens to the headlights between 1500 m and 700 m, when I can see them at 1600 m. My assumption was, that they “vanish” between pixels and are not rendered at all, which also unrenders their bloom.

1600 m:

1400 m:

Do a mesh swap or just add an additional mesh that is only visible at high distances, and have it scale based on distance so that it is always visible.

I have already done that and it works, but then I also see the object itself at this distance and not only the bloom, which is fairly unrealistic. I also tried increasing the bloom size according to distance, but that won’t show when the object is not rendered…

My task is a rather scientific one and not exactly gaming-related, so I can’t just go ahead and give a sh*t. :smiley:

I don’t understand what this means? If you use an appropriate mesh it should look indistinguishable, which shouldn’t be difficult given the thing is only a few pixels.

Doesn’t it sound more like an auto exposure issue?

You could try messing with volumetric lighting which could make the light appear at a distance in the way you want, if you mess with that keep in mind there might be a distance limitation for that as well, though you could also fake it with like people used to using a cone shaped mesh going out from the light, there’s examples of materials for that kind of faked effect if you do a search.
Otherwise, I think what you would need to do is force the size change by camera distance, I would imagine that’s what GTAV does to get that cars in the distance look.

Does it even need to be an emissive material?
What if you set up a spotlight and have it always render?
Assuming there’s things to light visible around the area, you should get some kind of effect in camera.

Otherwise the tip to use a cone is the best bet. You are essentially simulating some kind of atmosphere at a distance.

Assuming it’s just not as simple as turning off / fixing the exposure levels.