The Photo-realistic Challenge: Water

If you’re on this blog, I’m guessing you love video games. And you should, they’re awesome. But I’m also guessing your interest is deeper than the average “I buy Madden and CoD every year!” gamer. In this series of articles, I’m going to be going “under the hood,” so to speak, and writing about the challenges that game/ engine/ hardware developers face when making games, how they’ve addressed them over time, and what the future looks like. Today’s subject: water.

 

Back in the halcyon days of the N64/ 3DFX, we didn’t much think about water. The prevailing attitude was one of “holy crap, this is 3D! Crank up the Pearl Jam and let’s pull on Mario’s face!” And it shows: if you examine the water in these early games, they’re usually blue-tinted blocky areas that you can see through. In some games, jumping out of the water made a little splash sprite appear, but that was all the thought that was given to water.

mario-64-face

It’s a me, Mario–hey kid, stop-a that!

Eventually, though, we started to realize that water doesn’t look or act like this. The number of polygons on the screen was going up, the color depth of our video cards made the jump from 16 to 32 bit, and we started wanting more realistic water. Scientists had long since examined the properties of water, and computer engineers started to take an interest in water. Over a long period of time (The Voodoo Graphics PCi Card came out in 1996), video card engineers, API designers, and game developers have slowly addressed the problems with water rendering. But before getting into this, let’s try and understand the problems of water rendering before talking about the answers.

Experiment time! Get a glass and fill it halfway with water. Hold it up to a light. It should reflect that light, while still being translucent. Look very carefully at the line at the top of the water. You should notice that it is slightly bent upward along the side of the glass. This is called the capillary effect. Stick your finger in. The water level will rise (this is called displacement). Now pull it out rapidly. Water will come splashing out along with your finger. This is the capillary effect again, along with the surface tension of the water being splashed about. Now drip it onto a leaf. It will form a ball because the surface of the leaf is hydrophobic. On other surfaces, like a brick, it will soak right in. Drip two drops of water right next to one another on the counter. They should stick together. This is because water is polar, and therefore attracts itself. Now shake your glass vigorously (you did fill it halfway, didn’t you?). The water will slosh about due to a combination of surface tension and inertia. Because of the deformable nature of water (we call water a soft body), its reactions are very difficult to predict.

That was a glass of water and a high school physics-level study on the properties of water. What if you were observing an ocean? Then you would have to account for those basic properties of water when acted on by winds, the tides, and the 1.43 zillion things that live and move in an ocean (yes, there exactly 1.43 zillions lifeforms in each ocean. It’s just science, don’t question it). Kinda gives you an appreciation of the difficulty of realistic water modeling, doesn’t it?

The first (and easiest) problem dealt with was the addition of reflection. Compare water in The Legend of Zelda: Ocarina of Time with Jet Moto. Reflection really helped! There were problems (the dynamic range of lighting in older models of DirectX/ OpenGL made the reflection of bright sources look bad), but it was a start. This reflection problem was fixed with the advent of high dynamic range rendering (HDRR). With HDRR, the lighting model used has been updated to allow for very bright lights. The result is water that doesn’t look “flat” when reflecting light. If your character is standing on the beach staring at the ocean on a sunny day, you will now be properly blinded like you deserve. Progress!

water05

Don’t let the emulator and fond memories fool you: Zelda never looked as good as this.

 

water-06

pretty water…

On the physics end of things, some games gave water a “ripple effect” (for an early example, consider Waverace 64; for a later example, see Morrowind), but it didn’t look right. Newer games have had water slosh about (consider Oblivion, apologies for the guy talking in the link), but it still didn’t look right. Some of the best “current-gen” (yes, I know your computer can do better. No, I don’t care.) examples of water behavior are Bioshock, Red Dead Redemption (skip to 2:00), and Skyrim. They beat the crap out of earlier efforts, but there are still problems. Realistic water was still a dream.

 

The future looks promising. Using a combination of hardware tessellation techniques, advanced physics models, particle effects, and HDRR, excellent water has been rendered. Consider Crysis 3 (running in DirectX 11 mode?your Xbox 360, PS3, or Wii U won’t look like this) or the NVidia Water Demo (DiRT 2 also uses this technique, but frankly I don’t think it looks very good). The PS4 and Super Xbox (whatever they’re calling it) should both be able to render water in this way, which means that the future is bright for us water lovers.

water07

The future of water! (picture from Crysis 1)

 

 

In closing, I feel it is appropriate to pay homage to Homer Simpson:

Screw Flanders.

  1. squiggs’s avatar

    cool, if you mange, first, to run zillions of tiny particles at ounce then more power to you.

    Reply

  2. GlueGun’s avatar

    Dang, this post got me up and running. : D
    but I think super nintendo Mario world 2 would beat
    it in my standerd, just posting my thoughts here…

    Reply

  3. ils’s avatar

    great article :)
    but i wouldn’t bet my money on “realistic water” on next gen consoles

    yes the hardware probably enough to render those water but combine with other effects (TressFX, “next-gen skin shader” for example) i don’t think hardware for next gen consoles will be enough.

    its all depends on the developers, which effects they would prefer in their game (or each stage/chapter render things differently)

    just my 2cents :)

    Reply

    1. TStrauss’s avatar

      I never promised “realistic water,” silly! The physics of water are incredibly complex. New techniques like tessellation (TressFX was an early implementation of tessellation–the new model is much better) are a huge advance. So is GPU assisted physics, which is finally being incorporated into Havok.

      Even looking at early current gen vs. later current gen, you see huge advances in water. It is safe to say the future will be better! Call me an optimist.

      Reply

  4. caladbolgII’s avatar

    I loved water in games for either drowning random enemies or making my characters swim. The more realistic it gets the more I can see my enemies drown :))

    Reply

  5. Jess Franco’s avatar

    As a gamer/sex cinematographer, it is less important to make how the water looks like visually as opposed o how water can be used within the game concept.

    Reply

    1. the wizard’s avatar

      Mmm.. interesting.

      Reply

  6. Nyanboro’s avatar

    I like water.

    Reply

    1. squiggs’s avatar

      never had it before, is it any good?

      Reply

  7. Chasez671’s avatar

    I always took some time while playing games to appreciate how the water looked like. For example, in Halo or Skyrim, I would just stare at the water and wonder how the game makers managed to make it look so great.

    Reply

    1. Minimur12’s avatar

      I’m not the only one!

      Reply

      1. nevercall’s avatar

        water…

        that is exactly the reason why I got interested in 3d Modeling and game making.. dynamics, shaders, rendering technique.. etc.. :)

        Reply

    2. Kyu’s avatar

      Skyrim water GREAT?
      I assume you haven’t seen water mods then…

      Reply

      1. Chasez671’s avatar

        I have seen them, but I still think the regular Skyrim water looks good. Not the best, but still good.

        Reply

  8. E’s avatar

    Wow dude, you had me remembering Biology and crap. Nice article. I thoroughly enjoyed it. I am most definitely a lover of water (especially in games) and I always pay attention to the visual changes from game to game and generation to generation. Assassin’s Creed and Skyrim are definitely two that have made amazing improvements and strides to improving the way water looks, feels, and reacts (still one of my FAVORITE things about AC is the way your clothes darken and water drips from you as you emerge from it). As a gamer who is all about the small details I am most assuredly looking forward to seeing how next gen games will improve on this in the areas where current gen games are still sorely lacking. Sidenote: As an Otaku, I also enjoy how water looks in games like Naruto. Granted, that is a bit more animated than most games (okay completely animated) but still adds to the experience of giving you the feel of being in an animated Shinobi world. The water looks as true to form as it could in such a game.
    Great article TStrauss! Keep ‘em coming. -Eric

    Reply

  9. Raziel’s avatar

    Fact 100% of people who drink water will DIE!!!!!!

    Reply

    1. Minimur12’s avatar

      +1
      xD

      Reply

    2. squiggs’s avatar

      doubt it!

      Reply

  10. natsu’s avatar

    are you a new blogger??

    i suggest that you put pictures in between paragraphs so that we readers will have something to look at… having long continuous text like that kinda makes me uninterested with the topic or it activates the “lazy” side of me.. hahaha… (except for long posts related to vita hacking.. haha)

    for example.. 139b67b23G9G23 (you wouldn’t read this string of text right??)

    well, maybe its just me…

    *end of suggestion*

    Reply

    1. NonyMouse’s avatar

      I found the structure and image placement pleasant.

      Reply

    2. TStrauss’s avatar

      I appreciate the feedback. The blog system here is a bit different than what I’m used to (blogger), so image placement might not have been ideal. Hopefully that will improve over time.

      As far as the quantity of images, that’s a tightrope walk. I’ve seen both too little image use and too much. I’m assuming you are referencing the block of text about water properties that doesn’t have an image? I actually considered finding a picture of a glass of water, but then I thought, “God, I don’t want to insult people! They know what a glass of water looks like!”

      All the same, I will take that under advisement for the future.

      Reply

  11. DS_Marine’s avatar

    Nice article.
    Specially since I had the chance to see all the hardware since the early de facto trident tvga9680, then the diamond mm series (2d), and the creative vodoo/banshe cards with loop cable to get in between your 2d card and the monitor :D
    I think the 1st time I was shocked at water was in Lineage II. And yeah I always wondered how many resources they devoted to water rendering in relation to other stuff…
    Skyrim? DX11? didn’t see, I’m just a casual gamer now…

    Reply

    1. TStrauss’s avatar

      The loop cable! That went away with the Voodoo Banshee if memory serves. Good times!

      Reply

  12. Kyu’s avatar

    One of the better waters I saw was in Super Mario Sunshine (at that time at least).

    Reply

  13. Bullshiters’s avatar

    Dude! nice article I have a good read, you manage to keep it interesting till the ending.
    Talk about light or shadow next time : )

    Reply

    1. JeoWay’s avatar

      I actually would prefer the sky and grass :)

      P.S – Nice name :D

      Reply

  14. Alex’s avatar

    But the last image is from crysis 1 ._., it was true that crysis had a nice water

    Reply

    1. TStrauss’s avatar

      You’re right. Crysis 3 doesn’t exactly have beachfronts to give pretty screenshots. You can see Crysis 3 water in action here http://mondemp3.com/video_j3BhfKbbCik____Crysis-3-DX11-water-effects-.html

      Still, I’ll get a note under that image for the sake of clarity.

      Reply

      1. gunblade’s avatar

        nice still seemed like to thik at times to see the ground and stuff but yea cool

        Reply

  15. alpmaster007’s avatar

    What about dead island it has nice water

    Reply

  16. Lucas’s avatar

    Just wanted to tell you this article is much better than the gaming cliches one. I wouldn’t mind seeing more of this type of articles. Thank you guys.

    Reply

  17. lololol’s avatar

    Realistic water was and still a dream. A wet one.

    Reply

  18. lololol’s avatar

    WTF my pic is different

    Reply

    1. lol’s avatar

      You look like urkle

      Reply

  19. DS_Marine’s avatar

    test

    Reply

  20. lololol’s avatar

    name lololol
    email lol@hotmail.com
    i dont mind the trolls using it

    Reply

  21. Fl0w’s avatar

    Since water is ‘polar’ wouldn’t it be possible to make a water magnet?

    Reply

    1. gunblade’s avatar

      mositer vaperater

      Reply

  22. Z’s avatar

    I’m so glad there’s actually someone in Wololo that actually knows these stuff

    Reply

  23. Guy’s avatar

    The next article should be on trees!!! So many pixels go into one.

    Reply

  24. w7y7a7t7t’s avatar

    definitely an interesting read. I’ve never put much thought into water effects, however, thinking back it did kinda “make or break” a few games.

    Reply

  25. Erich’s avatar

    If that final pic is any indication, it would appear that once water is perfected, they can move on to… realistic rocks :-P

    Reply

  26. Speed4Runs’s avatar

    The water rendered by Source Engine looks better.

    Reply

  27. Georald Camposano’s avatar

    I remember being wowed by the xbox when it comes to water. Dead or Alive, Halo and that boat game Blood Wake all had pretty looking water when they first came out

    Reply

Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>