Lighting and Reflection questions

I have gone through all lighting/decal/etc documentation and most features and have following questions/looking for confirmation on theories:

A - Reflection Actors

  1. Is there any impact on fps or rebuild times having a great number of reflection capture actors? Or filesize (given it has to capture all those cubemaps)? UDN says that there is an impact if there are lots of capture actors affecting a pixel, thus overlapping should be kept to a minimum?
  2. If so, how much overlapping would be too much? Is there any way of seeing which areas of the level have no reflections, and which have too many? Similar to light complexity view.
  3. It says on UDN that there is a maximum of 341 reflection captures possible. Does this mean a maximum of 341 capture actors in a single level, even if they are not close to each other, or what does the limit mean exactly?

B - Lighting

  1. Am I correct that an ideal lighting setup in an indoor level would consist of just one or two Stationary lights per room/hallway (and only for the most powerful light sources), and everything else made up of normal Static lights? Is this how you approach your content? A few rare Stationary lights, rest Static and perhaps a few Stationary ones with shadow casting disabled where possible?
  2. I have seams between my meshes, is this a known limitation/problem or something I could have done better? See image. This is with production quality + 64 to 256 lightmaps. Each square is one modular wall mesh, the lighting makes the pieces not seamless.

C - Decals

  1. So the number of decals in a scene no longer has an impact? It does not add drawcalls? Does it render all of them in one go now? My tests are a bit inconclusive, looking for confirmation if this is indeed the case.

D - Particles

  1. Is there any chance we can have this …/UE4/Engine/Extras/VectorFieldExporter/Maya2012_x64/Shelves/shelf_ue4_FX.mel included in our version? Also do you happen to have a Max version?

Thanks.

Minor bug by the way (found it too minor to make a report for), the console suggests I type “stat d3d11d3d11” which is the wrong command.

Is there any impact on fps or rebuild times having a great number of reflection capture actors?

The amount of overdraw of the reflection captures affects GPU time, similar to particles. Overdraw happens inside the influence radius. We’re going to add a viewmode to visualize this. The number of reflection captures affects load time and how much video memory is used. In the future we are going to save the reflection captures to disk so they won’t get recaptured on every load.

It says on UDN that there is a maximum of 341 reflection captures possible. Does this mean a maximum of 341 capture actors in a single level, even if they are not close to each other, or what does the limit mean exactly?

It means a maximum of 341 in a given world at once. Reflection captures currently don’t work correctly with streaming levels, this needs to be fixed.

Am I correct that an ideal lighting setup in an indoor level would consist of just one or two Stationary lights per room/hallway (and only for the most powerful light sources), and everything else made up of normal Static lights?

Currently we build levels with all Stationary lights (except where needed movable for gameplay). Only the most important lights have bCastDynamicShadow enabled, all the rest have that disabled so that they don’t cost much. Static lights have very poor quality on characters so we don’t use them at all.

This method needs to be improved though, because it’s very difficult for level designers to tell where all their shadow cost is coming from, and to manage this character lighting setup via bCastDynamicShadow settings. It’s easy to explode your shadow cost by just throwing in some overlapping stationary lights and a bunch of large dynamic objects.

I have seams between my meshes, is this a known limitation/problem or something I could have done better?

This is a result of the way Lightmass calculates indirect lighting right now which needs to be improved. I’m not aware of any way you can work around it in content, unless lowering the StaticLightingLevelScale helps (that makes builds longer though).

So the number of decals in a scene no longer has an impact? It does not add drawcalls? Does it render all of them in one go now?

They do have an impact, its just much less than the forward decals in UE3. Basically they mainly cost in GPU time due to overdraw, just like lights, reflection captures and particles. This is because they are rendered deferred. Note that these deferred decals have some serious restrictions: they don’t work on dynamic objects, and they don’t affect indirect lighting (although this last one may be fixed).

I will fwd to someone else for the exporter question.

Great thanks a lot Daniel!

Can you give me any kind of number how much overlapping is too much? This probably depends on material complexity and so on, but is there any kind of number that usually tends to be ok? Is it along the lines of just 3 or 4 reflection actors affecting the same pixel, or more about 20 or so? Just a rough indication to give me a guideline.

There’s no limit, it just depends on how much GPU time you can afford. 3-4 is probably the lowest you can do with a reasonable quality setup, and that’s what I would recommend. If you want to measure the actual impact, the ‘profilegpu’ command will measure everything on the GPU and the ‘ReflectionEnvironmentGather’ time is how much the overdraw cost.

Are there any other reasons not to use Static lights? No specular aside? I am thinking for use in far away scenery.

In UE3 I used light channels to include meshes that were to be affected by a moveable light. Any chance on something similar here? As it could help excluding meshes from certain lights. If you got two floors, a light on floor 1 would also affect meshes on floor 2 performance wise, even while you wouldn’t be able to see that all. That would also make it far easier to turn off shadow casting on some lights, the lights would not shine through the ceiling/floor then.

Unfortunately we can’t do light channels anymore as all shading is deferred. You do get vastly better dynamic lighting performance from deferred though =)

Static lights don’t get specular, don’t work with SSS, are limited by lightmap resolution, can’t be changed in any way at runtime, don’t apply to characters well, and don’t cast shadows from dynamic objects at all. Far away scenery is fine and sometimes we use them for artist tweaks to the indirect lighting.

Is there any chance we can have this
…/UE4/Engine/Extras/VectorFieldExporter/Maya2012_x64/Shelves/shelf_ue4_FX.mel included in our version?

We don’t have this available for beta users. We are currently looking into what extras we want to include for Rocket betas.

Also do you happen to have a Max version?

Unfortunately there currently isn’t as Max does not have a built-in fluid simulation engine. Some licensees have already ported the exporter to their in house tools as the code is pretty straightforward and the .fga is in human readable ASCII format. You could do the same thing for Fume FX or for other plugins should you want to.