Making of: The Lab Demo
Written by: Sam Bugden, Technical Artist, Geomerics
We recently looked at ways in which we could improve our existing Enlighten reflections solution in order to raise visual quality without sacrificing performance or ease of integration. Our solution, which we delivered to customers with Enlighten 3.03, was to develop a GPU implementation of our existing CPU cluster-based cube maps. It provides advanced, screen-space independent dynamic reflections that are perfect for enhanced gameplay experiences – all within an affordable performance budget.
The Lab demo was created to demonstrate how this new technology can be used in conjunction with other popular rendering techniques in order to produce a more accurate representation of a scene’s reflections. In this blog I’ll aim to explain how we went about creating this demo, breaking down each major stage of the development process.
Defining the Objectives
The first thing we aim to do with any demo or project work is to clearly define the project direction and objectives. This helps to provide clarity as well as focus development towards successfully achieving project meaning and purpose. Some of the objectives defined for The Lab were as follows:
- Demonstrate the dynamic/real-time advantages of Enlighten reflections within demo gameplay
- Demonstrate the consistency of Enlighten reflections across different materials and surfaces
- Demonstrate the consistency of Enlighten reflections across different lighting conditions
With these objectives agreed early on, we were able to focus development towards creating a successful demo.
Prototyping and Design
These objectives then served as a foundation for defining the scope, storyboard, game mechanics and visual direction for the entire demo. We knew that the demo must be both engaging and relevant in order to fully encapsulate the new reflection quality, so we decided to create a stylised, explorable environment, experienced through first-person gameplay. This would create a demo platform which is relatable to existing game maps/levels, while providing a strong means of plausibility for interacting with various object surfaces and lighting conditions.
With concepts and storyboards drawn we then designed several variations of the level (image 1.0), before ‘greybox’ building them all in UE4 for iterative play testing and refinement.
Image 1.0: Level design prototypes
From this stage, we were then able to take the best elements and compositional components of each design, before settling on a final level prototype layout. This also allowed us to mock up playable prototype versions of all game mechanics and blueprints necessary for the realisation of the demo concept storyboards. It was essential for us to prove we could achieve everything we wanted to at this early stage of production.
Using the detailed asset specifications and concept references created during pre-production, we began by poly-modelling all required content before moving to Substance Designer and Painter for the texturing phase. Knowing that we wanted to demonstrate the consistency of our reflections over a range of different materials and lighting conditions, physically based rendering served as an excellent fit for this project. Image 2.0 illustrates the creation process for assets, moving from image reference, poly-modelling and texturing, through to final in-game placement.
Image 2.0: Asset creation process
One crucial element of the demo’s design was to enable the player to closely inspect and examine pre-defined objects, allowing them to observe the reflections from different angles and distances. With this in mind, we created a generic “inspectable object” blueprint which is easy to setup, configure and re-use for any objects of interest within the scene. Having this re-usable blueprint system provided a lot of flexibility, convenience and consistency – but did however introduce certain ramifications. For example, if all inspectable objects are now using the same blueprint implementation, then how should the player’s viewing camera compensate for different object sizes and positions, given that the object of interest could be as small as a button, or as large as a bookcase?
To solve this, we decided to implement a first person camera within the inspectable blueprint itself, which could then be fully customisable per instance, based on a series of exposed parameters. This way when the player interacts with the object of interest, the current player view target switches to the object’s camera and allows every inspectable instance to have its own set of customisable settings and post processing effects (if desired).
Image 3.0: A section of the inspectable blueprint
Image 3.0 shows the portion of the blueprint where the inspectable camera aligns itself to the current player camera, before the smooth transitional switch occurs. This also includes a switch of completely different inputs and behaviours.
Lighting & Reflection Captures
The main focal point of The Lab is the central laboratory bench, situated directly within the middle of the room. For this reason, a three-point lighting setup was applied around the object to emphasise it as the dominant subject within the scene’s overall composition. Image 4.0 shows the initial design of this setup, using the fluorescent tube light as the key and flickering blue monitor screens acting as fill lights to inject some colour into the shadows.
Image 4.0: Initial lighting setup design
For the reflection captures, we strategically placed seven nested reflection capture actors throughout the scene, giving careful consideration to the location of our reflective objects of interest. We then simply enabled the ‘Use Enlighten’ parameter on these actors to ensure that the Enlighten reflections were being fully utilised.
Image 4.1: Reflection Captures
Accomplishing the Objectives
Objective 1: Screen-space independent dynamic reflections
The critical aspect of this objective was to ensure that repeatable dynamic light changes could be easily observed (and controlled) during gameplay within object reflections. In addition to this, it also had to occur with the dynamic light source notably out of range of the camera view so that the observed effect was clearly working independent of the built-in screen space reflections.
Image 5.0 shows the player observing the flashing red light of a triggerable security alarm within the reflections of some laboratory equipment. It’s clear that the flashing light is situated far behind the player, yet its influence on the scene’s global illumination is still easily observed.
Image 5.0: Dynamic lighting observed within the reflections of our objects.
Objective 2: Consistent reflections across physically-based surfaces
Working in conjunction with physically-based shaders allowed us to effectively replicate more physically correct reflection values across a range of different objects and surfaces. Image 5.1 shows a sub-section of the central laboratory bench on which a range of different items are arranged. Using the inspectable blueprint (described above), these items can be closely examined from different angles and positions. This allows the player to observe how the reflections are affected by the varying roughness of each material. For example, the grease, rust, dirt and surface imperfections are all incorporated into the roughness map textures, in order to modulate the reflectivity.
Image 5.1: Reflections are modulated by the varying roughness of each material
Objective 3: Consistent reflections across different lighting conditions
Throughout demo gameplay there are various different lighting configurations which demonstrate how the scene reflections are affected by varying changes in light. We have already taken a brief look at the impact of one of these changes (a triggerable flashing security alarm), but perhaps one of the most notably dramatic change is when all direct lights are switched off and the previously closed shutter windows are opened to flood the room with natural daylight. This allows the player to observe the reflection changes as the scene transitions from florescent tube lighting, to no lighting at all, through to full natural daylight. Here we can also easily see the massive impact Enlighten is having on the indirect lighting of the scene. Image 5.2 shows the laboratory fully lit by the directional sunlight, with Enlighten’s global illumination turned on and off respectively.
Image 5.2: The impact of Enlighten
The Lab demo showcases the benefits of Enlighten‘s new dynamic reflection technology by producing affordable screen-space independent reflections with a consistent response across different materials and lighting conditions. This creates a more accurate and realistic representation of a scene’s reflections which allows for unique capabilities in scene design.
If you would like to experience Enlighten for yourself, please request an evaluation.
If you would like to experience the demo, it will be on show at the ARM Developer Day in London on 3 December. We look forward to seeing you there!