A look at some major graphical overhauls for Desolation, in the works for over a year.
Hello again! It's been a long time since our last big update in late 2020. Other than a few small teaser images, there's barely been a word spoken — what gives?
Finally, this update is the culmination of our radio silence. Behind the curtain, we’ve spent the last year quietly working away on our most ambitious overhaul of Desolation and its engine to date. We’re extremely proud of our progress, and we’re ready to show you what we’ve been up to.
In summary: we’ve completely replaced the Source Engine’s rendering and lighting pipeline.
With the traditional Source rendering pipeline, lighting is pre-computed and baked into maps via lightmaps during a lengthy compilation process using Valve’s radiosity simulator (VRAD). Using this method, we faced three major problems:
With our engine overhaul, we canned the Source model and rebuilt it from the ground up. Here’s how we addressed these challenges.
We’ve introduced a physically-based renderer that unifies and drives shading of all surfaces in the world.
Lights are now completely real-time with per-pixel shadow maps, with no computation done by the compiler. As a result, lights can now be placed and moved around in-game, making it simple for artists to quickly iterate on designs. This also has the benefit of allowing lights to move and change color/intensity in the level, making it possible for us to choreograph more sophisticated, dynamic scenes with lighting. This is crucial for a game like Desolation.
We’re now able to more strongly ground common elements in the world by having them cast lights dynamically. All your favorite test elements like lasers, excursion funnels and light bridges now cast light, moving and extending along with the element.
Lights also support real-time volumetrics, allowing artists to drive a stronger atmosphere by using lights with a more physical presence in the air. Artists can also equip lights with non-standard shapes using light cookies, which affect both volumetrics and surface lighting.
We’ve also re-thought how lights and reflections interact with the world’s surfaces. In Portal 2, lights did not contribute to the specular term of a surface; instead, a static “cubemap” – a capture of the surroundings – would be generated by artists, and then re-cast onto nearby surfaces without any parallax correction or lighting information.
With our new renderer, lights now make a direct, independent contribution to reflections on a surface, modulating their intensity based on proximity and angle relative to the surface. They interact real-time with the material properties of surfaces, such as roughness and metalness, to determine what kind of shine to produce.
To extend cubemaps, we’ve developed a new system we call reflection probes. Reflection probes capture the environment, sample the lighting, and recast an approximation onto nearby surfaces. Real-time and texture-based ambient occlusion uses this to drive where softer shadows accumulate, allowing us to preserve some of the subtleties of light bouncing from VRAD. Reflections are also parallax-corrected, and can have a spherical or rectangular area of influence.
With our new physically-based renderer now unifying shading for all surfaces in the world, the techniques used by Valve for Portal 2 just didn’t translate; game assets were made with a different rendering pipeline designed for older technology.
So, in addition to redoing the renderer, we’ve also spent time rebuilding some core Portal 2 assets from scratch, taking the opportunity to not only increase the fidelity of those assets, but also to expand their character by giving them stronger material identity with our new unified shaders. For assets which didn't need the "from scratch" treatment, we've still augmented many of them with updated reflectiveness properties to give them a little more depth. We’ve been careful to stay true to the look and feel of Portal, while also modernizing it and adding our own distinct flair.
Standardizing our rendering system has also come with the added benefit of increased consistency in appearance between our engine and tools like the Substance suite and Blender. There used to be a large gap between how an asset would look in one tool versus in-game. With our upgrades, this barrier has effectively been removed.
We’ve spent the last year making some sweeping architectural changes to Desolation’s engine. These changes not only improve the fidelity, character, and flexibility of the game’s art, but also massively speed up our own workflow.
While the focus here has been on lighting and material definition, more generally, we've significantly reduced the number of barriers that artists have run into while working with the engine. We can now accomplish new technical and artistic feats which wouldn’t have been possible before, and to fully realize our goal for what we want Desolation to be.
This upgrade isn't the only thing we've been working on over the last year either. Throughout the overhaul process, the team has been quickly creating and iterating on new sections of the game. This has been happening much faster thanks to the workflow improvements brought by the overhaul.
We still have lots of work ahead polishing and refining this ambitious graphical overhaul, and lots more work ahead to finish the rest of the game. Getting this far has been an adventure, and we’re excited for the adventure left ahead. Thank you for following along with the development process so far, and stay tuned for more updates as progress continues.