Setting Lighting in Unreal Engine 4.20

Brian Leleux broke down his recent relighting of Liam Tart’s scene in Unreal Engine 4.20: primary light sources, color grading, settings and more!

Brian Leleux broke down his recent relighting of Liam Tart‘s scene in Unreal Engine 4.20: primary light sources, color grading, settings and more!

Introduction

My name is Brian Leleux and I’m a Lighting Artist at Crystal Dynamics. Previously I also worked at Obsidian Entertainment. Most of my personal work lately has been around color grading experiments emulating various film stocks and keeping up with the new features from the latest Unreal Engine updates.

I recently relit an old environment by Liam Tart that I brought into 4.20 with the intention of testing out the updated physical units from 4.19 and the rectangular lights in 4.20. There is a small breakdown on my ArtStation post but I decided to elaborate on it. Here I provide a more detailed breakdown.

 

1 of 2

First Steps

One of the first things I do with a scene is clean it up and prepare it for lighting. This includes getting materials into their appropriate ranges, removing old lighting, and placing Lightmass Importance Volumes and Lightmass Portals. Portals are extremely helpful in interiors with exterior openings and emissive lighting, but they can increase bake times so you don’t want to get too specific. For Lightmass settings, I start off with mostly standard values in the beginning, but I have a small Swarm network so I don’t have to be super strict with them.

Towards the end, I’ll transition to the values below and bake on Medium until I’m getting final shots. The Volumetric Lightmap Density varies based on how accurate I want the Volumetric Fog environment lighting to be. Since performance/memory didn’t matter, I didn’t shy away from high-density samples and higher resolution lightmaps. Liam’s original UVs were great and didn’t really require any crazy high Lightmap resolutions, so that gave me more room to crank up the bake settings earlier on without affecting bake times as much.

Portal placement. Detail Lighting view mode without any lights active only baked emissive: 

Lightmap Density. Far left and far right meshes are large, but their final Lightmap resolution was only 512x, which was still a bit overkill as you can see:

Final Lightmass settings. I don’t modify the .ini file. Compress Lightmaps was disabled since this is not a production environment:

Primary Light Sources

After the scene is set up, I start planning out the primary light sources. I knew I wanted a bright exterior to contribute to most of the lighting, but dark enough for the interior lights to still be visible. I settled on a midday, overcast HDRI from HDRIHaven which was used in a simple unlit material to be captured by the Sky Light. Using the Pixel Inspector, I multiplied the emissive intensity until the HDR Luminance reached a cd/m² value that was within the average range of overcast skies. You can sample across the skybox or average a few key areas, but make sure tone mapping is off in the viewport, Pre-Exposure is off in the project (by default), and that you’re in the Game View mode of the viewport, otherwise the Pixel Inspector will give you different values or just won’t work at all. Fog and anything else visually between the camera and sky should be off as well.

Mid-day cloudy skies can be around 400 cd/m²(dark, storm clouds) to ~10,000 cd/m² (sunlit white clouds). Based on what I wanted to achieve I knew my EV(Exposure Value) would be around 5-7 for most of the interior shots. I used the viewport option for simplicity, but shutter speed, ISO, and f-stop are available in the Post-Process Volume to set the EV manually.

EV 10 was used for the HDRI skybox outside. Exposure doesn’t affect the reading, it’s just for clarity in this screenshot. Note the HDR Luminance value:

Emissive Lighting

I set up emissives the same way, although finding proper luminance values of manmade sources has been a little difficult. This isn’t officially documented yet so my overall workflow might not be perfect, but this feels the most accurate thus far. Regardless, I always try to find a natural relationship between the different lights by considering their purpose and location. For instance, you wouldn’t use the same bulb in the lamp by your bed as you would above the kitchen. The same applies to their emissive sources- having a blown out light source with a soft light never looks right. Getting that separation instantly makes the environment feel more believable in my eyes. There are numerous sources out there that document what a luminance range should be for different areas of homes and offices to give you an idea of how much light affects comfortability and productivity.

Lighting Only view mode with just baked emissive lighting and no grading:

Usually by now, especially with interiors and a Sky Light, the sky specular is leaking inside and needs to be overwritten with local Reflection Actors. For most rooms, I use one or two Box Reflection Actors with a low Blend Radius and the smallest size possible to improve the accuracy of the projection, with smaller Box or Sphere Reflection Actors to cover blend seams and get more accurate reflections on a smaller scale.

Detail Lighting view modes with SSR disabled. Left/First: Sky Light specular only. Right/Second: Local Reflection probes enabled:

1 of 2

Actual Light Sources & Reflection Captures

After a few test bakes, I move onto the second pass and place actual light sources and reflection captures. For environments, I prefer to “light with motivation,” so I avoid floating lights away from an actual source and even though this is a personal scene, I always try to light as if it was a real production environment. I use Static Lights where possible and use Stationary Lights for any major light source that would directly impact the character. Volumetric Lightmaps can make up for missing dynamic lights, as far as grounding the dynamic objects goes, but it depends on if you want to trade runtime performance for memory usage.

For added believability, and consistency, I prefer using Kelvin temperatures for lights and sources. Most household bulbs are around 2000k – 6000k and the engine lets you input a temperature directly instead of eyeballing the color.

Primary light source in the interior that did most of the lighting:

Color grading & Polishing

Once I’m happy with the lighting, I move over to color grading and polishing. I adjusted some of the Base Colors to push them more in line with a “vintage” green/orange color palette too. During early color grading explorations, I tend to grade in DaVinci Resolve because of the control and scopes, but I eventually recreate the grade directly in the engine to keep it HDR-ready. Unreal lacks some of the tools available in Resolve, but you can achieve a near identical result with what Epic has provided thus far.

Depending on the look, you can usually get most of the way there with the Global controls, then fine tune the shadows, mid-tones, and highlights with their respective controls. Highlights and Shadows will have a threshold value that acts as the range of what is considered a highlight or shadow, and anything in between those two will then be considered mid-tones.

To explain my color grading a little easier, here is a screenshot of my settings. It’s worth pointing out that I avoid adjusting the tone mapper. Combined with color grading, it can get very messy to manage. It’s better to consider your tone mapper as your “film stock,” and only modify it if you want to change the overall look and not on a per shot basis. I also try to work in stages and as simple as possible. Instead of jumping around between the different controls, I go from Global to Shadows, to Midtones, to Highlights (or whatever I know is the most effective for my grade) and only use what I need. If I can achieve the look I want with one or two sliders, compared to 5 or 6 with 10% influence, I’d rather do that because it’s cleaner, easier to control, and easier to revisit later on without being completely lost.

  • White Balance: I warmed up the scene slightly to increase the feeling of everything being bathed in yellow/orange from the incandescent bulbs and diffused light fixtures
  • Tint: a similar concept to the White Balance, but on a green/magenta scale. I pushed it more towards green to aid in the yellowish/sickly feeling. It also helps make the orange in the Base Color pop a little more
  • Global:
    • Saturation: I adjusted the saturation overall to bring out the orange more
  • Shadows:
    • Saturation: Desaturated shadows. A common look that film stocks have along with desaturated highlights, but the ACES tone mapper does that one for you
    • Contrast: I use Contrast pretty often because it’s designed around keeping 18% gray neutral and it naturally gives you complementary colors, quickly getting you a more pleasing color palette
    • Offset: Added a little bit of blue to the shadows
  • Midtones:
    • Contrast: Same idea as the shadows. Pushed complimentary colors a tiny bit which helped with additional blues to smooth out the shadow offset
    • Gain: Works kind of like a multiplier, and I wanted to get some bleaching around the light areas
  • Highlights:
    • Gain: Mostly tinted the white spots (emissives and sky) green to push the same feeling as the overall Tint from above, but with a tiny bit of a roll-off into the higher end of the mid-tones to add to the “bleaching”
  • Final shot with and without color grading:

    Thanks for reading! I hope it’s been helpful for anyone interested in lighting and/or color grading.

    Brian Leleux, Lighting Artist at Crystal Dynamics

    Join discussion

    Comments 2

    • Anonymous user

      Setting the light in the Unreal Engine 4.20 is quite good, with many different types of lighting
      duck life

      0

      Anonymous user

      ·5 years ago·
    • Brett Wissemann

      Really appreciate you sharing your best practice with the community. Thanks!

      0

      Brett Wissemann

      ·5 years ago·

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more