From a calm puddle to a stormy ocean: rendering water in Uncharted

  • Authors:
  • Carlos Gonzalez-Ochoa;Doug Holder;Eben Cook

  • Affiliations:
  • Naughty Dog, Inc.;Naughty Dog, Inc.;Naughty Dog, Inc.

  • Venue:
  • ACM SIGGRAPH 2012 Talks
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

The Uncharted series of video games for the PS3 have been recognized by their distinct cinematic gaming experience and high quality graphics. Although the core game mechanics are centered around exploration and combat; and less on water game play, water has still been a major design element of the game. The complexity of the game mechanics and rendering of the water has increased over the three games in the series. The range of water types goes from simple puddles, pools to lakes and rivers, and, finally an ocean storm environment. The games art style is realistic, but not fully photo-realistic and the water rendering has to match the style. Our water shader uses general optical principles but adds artistic controls to realize the style of the game. One of the biggest challenges we solved was processing and rendering water with dramatic movement and striking shading while using a small portion of the available resources (memory, SPU and GPU). The water system runs in parallel with other game systems and everything is running at 30 fps. In Uncharted 3, the water system was used to drive a cruise ship, in which the whole level resided and thus became a central element of the gameplay. The water would drive the cruise-ship which in turn moves the player, enemies, effects and physics objects. In addition there were levels with swimming in rough water, flooding water, crashing waves and floating platforms that had their own technological challenges. Our engine uses different render engines depending on the type of water. All of these engines are procedural systems and, because of the game design, not one uses real-time physics simulations. One renders non-LOD meshes with calm and semi-moving water bodies (rivers, lakes, and puddles), another uses a hierarchical LOD system with displacement for open bodies of water, like the ocean, and the last uses a skinning mechanism with particles for the flooding events.