As Reset development heads into the home stretch (September/October target for release) and Alpo continues working on gameplay and content, I’ve been adding missing features, fixing bugs and optimizing. One of the major remaining things was to complete the atmosphere technology. We’ve felt from the start that the world outside the gameplay area is also important for immersion. We want the player to feel like they’re on a planet and not just on an island.

We already had volumetric clouds that looked great, but felt we could still do better. The Real-time Volumetric Cloudscapes of Horizon: Zero Dawn [1] presentation by Guerrilla Games at the SIGGRAPH 2015 Advances in Real-Time Rendering in Games course was an inspiration. Their technology was close to what we already had in place, so adapting some new features and optimizations was a breeze tech-wise. Tuning things to suit the look we were after took most of the time. In the end we were able to get more interesting shapes and more definition to our clouds while still increasing performance. We did keep our original lighting system, which is based on Opacity Shadow Maps [2]. It allows clouds to cast shadows across long distances onto the ground and each other in addition to handling self-shadowing within each individual cloud. One improvement was the addition of a hefty dose of temporal filtering to minimize flickering. It was easier than temporal trickery usually is because the clouds and the sun move quite slowly.

In addition to improving existing things, we finally added localized rain. This had been on our to-do list for quite a while. It was possible due to our volumetric rendering tech supporting variable density from the start. A thresholded large-scale and low frequency noise texture determines where there are rain clouds and a pillar of denser participating medium is added to the space below them. You’ll be able to see rain coming in from a distance and receding after it passes.

A second use for large-scale noise was to introduce high-pressure areas that are without clouds. This breaks up the uniformity of the cloudscape nicely without having to drop the overall cloud coverage too much. It also keeps the horizon from getting too crowded with clouds at times, making the world feel larger and more open.

Another feature made possible by variable density was volumetric water below the ocean surface. Shadows from buildings, terrain, and other objects reach deep into the water and it was also easy to add a simple volumetric caustics effect using an animated texture.

As seen in a limited capacity in the Reset Greenlight Demo, the surface of the ocean itself is provided by NVIDIA WaveWorks [3]. We let it simulate the complex wave dynamics for us and shade the results with the same physically based approach we use for everything else. The major new feature we’ve now integrated is shoreline interaction. Open ocean waves smoothly transition into waves that slide along a beach and break, leaving some foam behind. We could have tried implementing our own waves, but it would have taken a significant amount of time to get a similar look and performance. Even though we do like to do things ourselves, it was quite fortunate that NVIDIA was already working on something really cool that we could use.

Far beyond the atmosphere we render stars in the Yale Bright Star Catalog [4] in their correct positions based on latitude, longitude, and date. The Moon is also positioned and lit correctly according to its position relative to the Earth and the Sun. Even farther we render a depiction of the Milky Way from an actual photo by the European Southern Observatory [5]. The stars and the Milky Way will of course only be visible at night when there’s no light pollution around. Using real data was not significantly more work than spraying some fake stars and nebulae by hand and came with the obvious benefit of increasing realism. Still, we’re confident Neil deGrasse Tyson will be able to find something to correct.

[1] Schneider, A., The Real-time Volumetric Cloudscapes of Horizon: Zero Dawn, Advances in Real-Time Rendering in Games, SIGGRAPH 2015 (http://advances.realtimerendering.com/s2015/index.html)

[2] Kim, T.-Y., Neumann, U., Opacity Shadow Maps, Eurographics Rendering Workshop 2001

[3] NVIDIA WaveWorks, https://developer.nvidia.com/waveworks

[4] Yale Bright Star Catalog, http://tdc-www.harvard.edu/catalogs/bsc5.html

[5] European Southern Observatory, The Milky Way Panorama, https://www.eso.org/public/images/eso0932a/