Quite a bit has changed as we move towards alpha. This post will mostly deal with environmental rendering changes. This means you won’t see any of my character or weapon art for this post. Basically, all the prototypes are being generalized and systems are being merged and replaced for the best trade offs. This also means Low/Med/High graphics quality levels are being roughed out. All images here are from a GTX 1080 Ti running on Ubuntu 20.04 at 2K vsynced to 60Hz. Once I get an RTX card I will add an Ultra mode focused on hardware based ray tracing. All ray tracing done here is by compute and fragment shaders. Mesh lighting is still done by area lights in the deferred lighting pass and real-time light probe(s) for image-based lighting (IBL).
Atmospheric Scattering
Using a simplified ray cast based solution for the sky color that’s easier to control by artists and the Game Director. It’s not fully physical as there are minor dramatic tweaks enabled by default. Also night time now makes distant objects much darker so they silhouette even during a full moon.
Clouds
Noise based volumetric clouds generated by compute shaders replace the ray-marched SDF solution to allow easier artistic control at a consistent cost. This also makes it possible to use frame reprojection for lower end systems. Yes, this is basically the same as the Horizon Zero Dawn style clouds. Not much variation shown in these images as I don’t have presets done for ‘storm’ clouds or anything interesting yet.
Fog Quality Settings
There are now three quality “fog” levels:
- Constant color (LOW)
- Real-time updated sky cubemap based (MED)
- Ray cast physically based (HIGH)
The old fog (MED) has been seen before, so here is the new stuff:
Terrain
The new terrain generator is not ready to show off yet unfortunately. However I will show some debug visualizations of the infinite island generator output. Basically the game is setup to generate an infinite amount of island chains in various configurations. Right now you’ll just see islands similar to those in the Pacific. At one point large land masses where generated as well, but it makes it hard to get around and not as fun. Maybe the river system can make these viable later.
You might also notice the new algorithmic erosion if you look closely. This erosion is generated and not simulated, which makes it hella fast.
These islands are being regenerated every frame using a compute shader for stress testing the renderer, and still keep up 60Hz. Normally during game play they would just generate as needed as the player sails around the ocean. On the wall of the main test area there is a ‘poster’ that infinitely scrolls a generated world as part of the testing. The first debug visualization shows a zoomed in look on that poster. False colors are used to get a better feel of the topology of the island. the rest of the debug shots are another tiny generated island in the middle of the ocean for testing.
The river generator for the new terrain system is being reworked to possibly allow the Game Director to make specific types of rivers via grammars across AI choosen end points and sources. This will require more processing than the current algorithmic based rivers. This may get cut as I’m unsure how many people care about this. Speaking about water… we have an update section on water below!
Debug visualization of island sliced at a specific elevation with grid lines and heavy outline for 'shore area' for river topology study
Water
Ray-marched signed distance fields based (SDF) water replaces the old deferred water system. Underwater lighting has also been updated. Currently this water doesn’t have proper LoDs for high elevation camera shots like the old water.
Some VFX are disabled to focus on lighting changes in images below. SDF based water will make it easier to control the shape and volume of water bodies, waves, and add improved interaction later.
I haven’t made an SSR or other type of reflection solution for the new water yet as I plan to make that another pass.