Thanks Dom. Amazing. This section of the talk has two parts: 1) My lighting ethos for this project 2) Efficient lighting – how we enable the lighting to scale up and how Enlighten works Enlighten is a global illumination software developed by Geomerics, the company acquired by ARM in 2014 It is available as a stand alone SDK or integrated into Unity or UE4 It is mature and production proven in top selling AAA titles such as Star Wars Battlefront It scales across all gaming platforms. In Enlighten 3.04 we improved support for dynamic lighting in open worlds So we can add features such as dynamic time of day and weather without compromising on lighting believability. 1 Can I introduce you to Seastack Bay. It is built in Ureal Engine 4 with Enlighten Made for PS4 and PC Collaborative project with Ninja Theory who provided environment and character assets and audio I did the lighting and that’s what I am excited to talk with you about today. VIDEO 2 Seastack Bay 5x5km world, all direct and indirect lighting fully dynamic Visible distance of 1 km across the beach Vertical structures over 100m – significantly extending surface area of level We need to light all this surface area in real-time with full global illumination 3 Seastack bay main challenges: Want to avoid flat, non graduated shadows Performant current gen consoles and scalable to a fully roaming game Use changing lighting and weather to add variation to the world 4 What outdoor scenarios shows good, large scale global illumination? Large flat vistas are mainly lit directly by the sun or sky. The lighting isn’t visibly reflected much and we wanted to place emphasis on the bounced lighting for this showcase but maintain an outdoor scenario. We need vertical structures – gorges, canyons, cliffs… and seastacks! 5 The main challenges of creating Seastack Bay were: No resource to build a fully bespoke world. Very small main art team (one environment artist and one lighting / tech artist ) utilizing kit part geometry. Good and efficient lighting workflow an absolute requirement. 6 The ethos I followed when lighting Seastack bay Take control of all aspects of the lighting pipeline. If I don’t have a tool or control I will build it myself so that I can work in the way I want. Challenge the rules of what we thing is correct and allowed. We are communicating an experience, not reproducing reality. This is true even for photography Question process Just because it’s always been done that way doesn’t mean it’s good or helpful in achieving what we want. 7 I am not an illustrator! This might be apparent… Let’s talk about taking control of the diffuse bounce. When light hits a surface it will reflect and if it’s strong it will bounce between the elements of the scene until its energy is spent. Our eye is very sensitive to graduation across the big surfaces. But as long as we get good graduation we can take control of the energy. 8 In this shot we see the sunlight hitting the sand and bouncing back up around the cave’s interior multiple times. The soft graduated diffuse bounce shapes the rocks. We are tasked with making the interior brighter without affecting the exterior. So we take control of the bounced light from the sun 9 So to light up the interior we control the indirect bounce separately to the direct bounce – here we see the effect of increasing just this float in the level. 10 Here are a few variations including moving the sun. With Enlighten we see the global illumination updating instantly. The generic light types and their parameters didn’t fit well with how I wanted to light the scene. So I built my own ‘Time Of Day’ tool which is a set of functions, classes and datatypes which define states such as day or afternoon stored in an array. Very quick iteration on parameters across multiple actors are possible with Enlighten. 11 We continue to iterate till we hit our desired lighting scenario. This iteration is very quick as we have taken control of the lighting via our custom tool 12 Challenging the rules of how light is reflected. Humans are bad at detecting continuity in the reflection. As lighting artists we can use this to communicate aspects of our worlds to the viewer Even a simplified view on specular positioning has three variables – lighting angle, surface normal and viewing direction. This is way too much math for our eye and brain to figure out. 13 On the rock in the middle we can see white highlights which brings our granite sea stacks to life. 14 Granite has up to 20% quartz which is a crystal structure mineral and a semi-precious stone It’s shiny! As a lighting artist I want to communicate this 15 We take the reflection away and we still get nice shadowing. 16 Here are the reflections authored by the lighting artist applied to the rocks in the shader 17 Result– we notice the highlighting across the top of the cliff face It’s 100 meters up - so far away from the viewer. But visible even at this distance 18 Reflection playing across the beach – the middle one catches our eye and communicates wet sand 19 We paint in high intensity blobs in top level of hemisphere of the reflection map. ‘Reflection cards in the sky’ They exist off-screen to imply reflection. In this scene it could be clouds. 64x64 pixels per face This is used for the sky reflection and combined with a colour. It appears very white – we paint in hdr. Use this to obtain a consistent reflection when the surface sees the sky. 20 So we’ve challenged the rule of how our eye perceives reflections We can relatively safely add in small spots of brightness to bring the surface to life Adds movement and shape for geometry that sees the sky This makes the rocks look the way we feel they should. Emotional rendering is very important point for me – idea from Journey – look at their talk in the GDC Vault. 21 Question the process: Just because the asset pipeline is concept -> modelling -> texturing -> layout -> lighting doesn’t mean we work on elements such as textures to achieve our shot. Micro facet theory is the principle of what we are authoring in the roughness channel. “Microfacet Models for Refraction through Rough Surfaces” B. Walter et al. The microfacets are a lie – there are no very small groves and scatches in the geometry. A bit of math running on the GPU will try and come up with the correct answer for this based on the roughness texture. This math and the roughness texture controls how reflective a surface appears. We benefit from control over this late in production to 22 communicate about the worlds we are lighting. 22 For a shot like this we really want to communicate that the cave is damp with moisture and lead the viewers eye across the pools and drips of water towards the bright exit. We get a light on dark –> dark on light contrast due to the bright reflections in the shadows and the vegetation silhouetted against the exterior. We do this by pushing the materials so that we communicate a strong reflection. 23 The rock assets that make up the cave have been authored as individual set pieces by an asset artist – with the roughness channel displayed on the right. As this happens earlier in production they don’t always know what the final desired lighting environment will be. If we’re using a standard PBR shader, the roughness channel rules the reflection. It’s a very important map to get right to achieve a good reflection. 24 We need precise control of the roughness channel in engine. We use vertex paint to add the wet patches of moisture where they work for the lighting. We are using temporal AA which helps get rid of high frequency highlights but at times blurs important detail – so we’re pushing the roughness down a lot to get highlights. For more control we’ve exposed a roughness value in the material instance to set the overall level. Having a consistent roughness level between assets is really important for consistency. 25 Challenging the art production process by tweaking texturing late can help achieve the desired look much faster. If you’re interested in learning more about PBR, attend “An end to end approach to physically based rendering” Geomerics and Allegorithmic talk 2020 West Hall Friday 10-11am 26 In summary Take control of how the engine exposed lights to me, create my own bespoke tool Challenge the rules of physics and how we think we see the world Question how we go about creating stuff. 27 Next up I’ll talk about how we achieve scalability in the indirect lighting Enlighten runs on the CPU independently of the main rendering and game update So when discussing how fast enlighten is we tend to talk about Enlighten update time Which is how fast we want the indirect lighting to update – but this happens asynchronously to the main rendering. To maintain smooth updates in the GI we need to strike a balance between lighting quality and the Enlighten update rate. Enlighten produces three outputs to be used by the game rendering. Lightmap data for the large environment architecture Light probes for sampling dynamic objects Reflection captures for updating the reflection of the lighting in real-time 28 Here is a scene lit without the lighting being reflected between the surfaces, With dynamic lights as we want to change the time of day. 29 Let us start preparing this scene for Enlighten. This debug visualisation shows all Enlighten lightmapped geometry in orange and smaller details in the scene in green. This is user defined 30 This mean that we only perform the full computation on the relevant parts of the level. This is key to achieving good performance for a full level running on console. 31 Now we do an offline computation on the geometry to the left. For the Seastack Bay showcase which is 5x5 km this process takes 30 mins distributed over 20 nodes for all the Enlighten contributing geometry in the scene. Now we can instantly see the fully lit result and change any parameter or transform of all dynamic light types, tweak material colours or add details such as foliage or even larger probe lit objects 32 So we’ve gone from this 33 To the fully lit frame 34 Enlighten also produces light probes used for dynamic geometry or as an optimization on static geometry 35 Reflections: The final output is a set of reflection capture cubemaps important for achieving a correct material response. To keep the reflection looking consistent we need to update it with the changing lighting conditions. Enlighten will capture the lighting information from the precomputed geometry in real-time and reapply them to the scene’s materials according to their settings. These are only 32*32 pixels as this is performant and good enough quality for the Seastack Bay showcase. This allows us to produce dramatic lighting changes on-screen as well as off-screen and maintain a believable lighting response from the material reflections. 36 Emissive area lights To achieve the lava I’ve added in a few planes which gives good control of the positioning of the lighting effect. They are then precomputed with the rest of the static geometry in the scene. We can now use a dynamic material instance updated the intensity or colour at runtime to produce a pulsating effect – additionally we can achieve precise control when lighting in the editor by exposing these properties via the construction script. This lighting is comes at an extremely low cost and gives localized control. 37 To summarize, Enlighten gives you: Direct control of all aspects of the global illumination Independently of the direct lighting Non programmers can precisely control and optimize performance Box of tools the artist can use to author both lighting quality and performance 38 39
© Copyright 2026 Paperzz