Harley Wilson gave a talk on his lighting studies and experiments in UE4, the way he applied 3 Levels of Detail rule to lighting and more.
Harley Wilson gave a talk on his lighting studies and experiments in UE4, the way he applied 3 Levels of Detail rule to lighting and more.
Personal Development
Hi. I’ve been keeping myself reasonably busy since last time we spoke. I’ve been learning more and more about lighting, obviously, and the more I pick up the more I want to test out new techniques. I’ve been reading a book called Film Lighting by Kris Malkiewicz on my way to work, which has inspired lots of the art I’ve been tinkering with. I’ve also been recreating cool material effects in UE4 shaders, e.g. Damaged Metal Fuselage Master Material and Optical Camouflage Material. Nailing a technical challenge is always really satisfying, and even if you’re not the person who creates the shaders in your day job, it’s always useful to know how they work.
Exploration of Lighting
While I’m very confident in my knowledge when it comes to assets and textures, I’m still pretty new to lighting as its own discipline. As I said, I’ve been diving into books and educational videos on lighting in cinematography, and a lot of what I try out in lighting studies is based on real-world techniques implemented in real films by cinematographers and gaffers. Just like the effect achieved in Skyfall (DoP Roger Deakins, ASC) I like to add additional lighting around a visible source (lamp, emissive screen, window, etc) so it highlights more than it would strictly in a photorealistic setting, but all the lighting still looks motivated/diegetic.
I also like trying to mirror the look and the mood of certain films or photography or other art forms – for example, I think pretty much any film directed by David Fincher has a great aesthetic, and for some abstract goodness, I really enjoy the work of NONOTAK (Noemi Schipfer and Takami Nakamoto). Taking inspiration from NONOTAK installations gives me an excuse to try to replicate various shapes and reflections of light that are not simple to do inside an engine.
Balance: Three Levels of Lighting
Something that’s pretty fundamental in asset art is the rule of “3 levels of detail” – and I’ve found that this kind of thinking seems to work well with your lighting in each room/area/screenshot. Everyone’s taste can be very different in how they might approach lighting, but typically I like to first decide where I want a big, bold, dramatic, attention-grabbing, shadow-casting primary light. For my Underground Concourse, I decided early on I’d have a long streak of light coming out of the busted ceiling panel. So the first level of detail was bringing in a spotlight for this purpose: it had a long attenuation/range, it was stationary (for high quality), and it’s angled so that if an agent of any kind (player, enemy, NPC, whatever) were to traverse the space, they would both receive highlighting and cast shadows. This is essential for immersion and hiding the fact that your space does not really exist in physical reality.
The second level of detail for me could be considered the Fill lights. While the first light was casting indirect (bounced) as well as direct light, it wasn’t enough to get the effect I wanted, and simply increasing the indirect light will blow out your scene with brightness. So I had various other lights to fill the exposed ceiling fixture’s cavity space (as if the fluorescent tubes inside were really casting light in a physically-correct fashion), to cast a rectangle of light through the transmissive panel asset, etc. Some of these could be switched to static instead of stationary for a quick saving of light complexity. The third level is the one you need to be careful with as it’s the easiest way to break immersion. This level is all the extra highlights and rim lights. Similar to my earlier Skyfall example (where a table lamp might appear to be lighting the actress, but really there are supporting lights off-camera above and below her to complete the look), I had a spotlight just highlighting the edges of the nearby bench prop without spilling a lot of light on the nearby wall (which would happen if I just extended the attenuation of a previous light to reach the bench without also adjusting the cone angles).
Combining Materials & Lighting
I’d say normally I don’t think too much about the best way to combine materials and lighting. Sometimes I boost the values, other times I limit them if I’m going for a more high-contrast look. It can be useful to affect the indirect lighting settings via your meshes – e.g. you could have one accent-colored wall in an otherwise neutral room, and have that colorful wall prop contribute more to the indirect light without giving the indirect light a global increase (which, again, could just leave you with super-high brightness levels).
I also like to use the technique of “Negative Fill” – in my more recent study, I ended up with quite a lot of undesired indirect light on a wall behind a divider. This was caused by a tube-shaped Omni/point light I was using to simulate close-range light from the neon lettering scattering through the transmissive panel mesh and this light had to keep its settings due to various factors. So I added a darkening decal to the wall to compensate. This can often look wrong if you have dynamic lights in your game, especially things like flashlights in control of players, but in certain areas (e.g. somewhere always far away from a playable space) it can fix minor visual issues without having to re-bake.
Lighting Small Elements
A lot of the time, for small lit details (buttons, screens, tubes etc.) I will make very simple materials in UE4: just a constant value for roughness and a color multiplied by an Intensity value for the emissive. When taking these a little further, incorporating fresnel into your emissive calculations can work really well for neon tubes. For screens in particular, sometimes I like to multiply a tiling pixels/LED mask and a blurred vignette/inner shadow mask on top of my emissive textures/values. Sharing these mask textures between all instances of your screen/monitor materials will make them all look consistent with each other.
As far as actual lights go, usually a spot or rectangle light (whichever is appropriate) right in front of the source will do the job. Make sure to adjust the specular scale based on whether or not the light in real life would be just going through glass (high specular scale) or through a thicker diffuser material (low specular scale). Don’t be afraid to make the light more intense or further-reaching than it would be in reality, especially if you get some cool shadows out of it.
Lastly, a bit of Unreal’s recent Convolution Bloom always helps. It’s very pretty.
Lighting Shelves & Showcases
I think showcases and areas like this are a good example of when/how to manipulate attenuation and other settings. For my backlit shelving sections in Sportswear Store, I had a static rectangle light for each shelf. I kept these fairly high-intensity, low-range, and they were set to cast shadows, as static shadows are inexpensive. I had a lot of these lights, due to having a lot of shelves, and knew these would result in a lot of shadows, so this makes sense. Think of this as the first detail level. Then, for the larger shelving sections, I had rectangle lights facing outward to simulate all the aggregated light from each shelf spilling out onto nearby pillars. This was the second detail level. The third was added in after I noticed that although the shoes on the shelves were brightly-lit and the fake spilled light was working, the camera-facing parts of the shelves were dark.
While this may have been physically accurate, it’s the overall look that is important, and human brains have a convenient habit of accepting many lighting tricks as long as they appear diegetic. I copied the rectangle lights from before, flipped them around, and dialed back their attenuation and intensity values so the fronts of all the shelving units got a slight flat highlight which makes them sit a little better in the scene.
Optimizing Lighting
Possibly, the most basic solution for optimization is to limit overlapping, especially when shadow-casting is concerned. In my Underground Concourse study, all the light coming out of the broken ceiling fixture is made out of various lights with various settings. It would definitely be possible to do it in a more “correct” way with a smaller number of larger lights, but as well as less desirable composition, you would run the risk of not being able to really afford to do anything else in the space due to your key light having a high attenuation radius, a large outer cone, and expensive settings.
Another example in the same scene would be the light coming from the first intact ceiling panel near the camera. It needed to be stationary, not static, to show properly through the transmission material, but it wasn’t a focal point. So as well as disabling shadows, I limited the attenuation to only what it really needed. Then, since it didn’t actually reach the floor and have a strong bounced light in an upward direction, I added in a static rectangle light to edge-highlight a part of the ceiling mesh. The overall effect in the end (hopefully) just looks like the light is behaving as you might expect (at least in a “cinematic” reality).
When I have lights that need to be more expensive, I like to limit the attenuation and the cone angles to only what is necessary. Anything else is potentially wasteful. You can get away with more if you sacrifice certain features on lights when they don’t need it – e.g. shadows, or casting the direct light dynamically. If you’re working with software that gives you a debug view of your lighting expense, pay attention to it.
Advice for Learners
Other than various cinematography books you can grab for really cheap prices online, I can’t recommend enough video content such as the Unreal 4 Lighting Academy or Cinematography Database. For a perspective on how you might go about lighting the same props and architecture for different moods, take a look at Dan Sewell’s work: it shows how color theory, cinematic lighting techniques, etc. are applied in a real game production environment. And lastly, go take a look around your nearest home improvement store. My girlfriend is currently looking at what kind of fixtures and lampshades to get for the new home, and while looking around I was full of ideas of how to get a certain “look” out of the available lamps, and how to augment the lights with extra bulbs and reflectors hidden around and behind furniture. That’s not too far off boosting values or adding bounce cards and extra lights in a game engine!
Ultimate River Tool is a powerful and easy component for Unreal Engine 4 that allows you to make rivers with automatic flow-map UV warping, cascades, and interactions with physical objects.