In Praxis… Atmosphere Revisited

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.

Local rain clouds.

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.

High and low pressure areas.

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.

Ocean volume.

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.

Night sky.

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.

You all have the most impressive atmospheric/cloud/weather rendering system I’ve ever seen. I’ve been following your blogs about your work for the past few years now; great job! (Always better the more technical it gets )

I’m not sure what project you’re referring to but these guys are funded from Indie Go Go and other sources and have already released a demo. They do keep quiet because that’s how game development is in general you see an announcement and once it comes out you get it and not much in between.

Sweet Jesus! That looks gorgeous! If you have a chance, making “Reset” compatible with NVIDIA’s stereoscopic 3D would make this backer *extremely* happy. Those screen shots look fantastic as is. Seeing that world in true 3D would be amazing!

ive been following these dev blogs for a while. i was a graphics programmer for a game developer in michigan. the tech you guys are showing off here is absolutely astounding. im so jealous, lol. i would LOVE to meet you guys and talk about your tech… absolutely incredible.

Very nice! I’d like to know how you achieve decent temporal stability with the variable atmospheric density – if you’re just splatting densities into a frustum aligned 3d texture I’d imagine there would be some flickering/shimmering as the camera rotates. Do you solve this? Or is it not a noticeable issue? (I see that the camera is stationary in your video )

Looks great and very believable. It really impresses when you playing video games and can feel the total immersed into the gameplay. When u forget about all things and everything except this island that is windblown and surrounded by deep water of the ocean.

I even have seen those patches of sunlight on the water surface of the ocean! Guys, that`s just masterpiece!

One thing that i note is not so natural its that those clouds are too low-lying.

At all my preferred gaming is a gambling online. And you know? This is the field that also move quickly and far away old gaming machines. Now i can gamble with video slots, 3d graphics and cinematographic-effect video bonus games in them.

So, that`s what i want to say – tech and progress make my days! Go on guys!

If i have any criticism is that your clouds look too procedural, as in lacking the billowy or cauliflowery effects of the real world.
In order to approximate those effects without simulation, the basis for my clouds is a mix of Simplex (less artefacty Perlin), the abs of this, and the inverted abs.
In other words, it uses either abs or not for the first oct (tightly packed vs bigger gaps), abs for the next ~4 (the cawliflower effect), and inverse ‘abs(multiple octaves)’ thereafter, for the wispy edges.

There are various other things I’m doing to fake the fluid nature, eg each octave pushes/warps subsequent higher frequencies along the wind vector, and dragging the bottom of clouds in the opposite direction. This stuff gives the clouds that leaning/leading edge.

Very impressive, but I hope that with an expected launch date so close, you guys are giving serious thought to making a new trailer (the last one was gorgeous, but had -nothing- to say about the actual gameplay), and getting the ball rolling as far as marketing and advertisement.

I’ve been following this game for over a year now, popping in occasionally to check the blog, but have never seen a mention of it elsewhere. (I can’t even remember how I found it in the first place, to be perfectly honest.)

It would be a shame to see what I hope to be a spectacular puzzle-game released to a market who’s never heard the slightest thing about it, and therefore, passes it over in favor of more “visible” games.

The amount of comments you receive on your own blog posts should be indicative of just how obscure this game is right now in the community.

Not criticizing, just suggesting.

At any rate, you’ve at least got one for-sure sale right here. Cheers, and keep up the good work. Can’t wait to get my hands on this.

Thank you for your publication about volumetric cloud rendering. I am collecting current problems in realtime cloud rendering to work on them in my Masterthesis at Technische Universität Berlin. Could you please describe what the actual problems are that you are facing for the next iteration of your artist driven volumetric modelling / animation / rendering algorithms? I would be very glad if you can give me some bottleneck-like problems in that area, so I could work on them.

Thank your for your time and with best regards,
Stephan Pietschmann – Masterstudent – TU Berlin