I really wanted to make the world of Verdant Skies beautiful- and as a developer, I figured the best way I could contribute was with fancy graphical effects like these reflections.
Verdant Skies Reflections
I wrote the reflection shader with the help of Scott (thanks Scott!). At first, it started as just a way to animate the water, so the first thing to add was the rippling pattern that occurs on the surface. I won’t get too technical here, but if you’re interested in details, the core idea is using a normal map to displace your UV texture lookup.
In order to actually generate the reflections, we select everything that is “reflect-able” and draw it separately. We also draw the background color, which represents the color of the sky that is reflected by the water:
![Reflection map](http://kortham.net/temp/upshot_hnZVGlR5.png)
Then we composite that reflection map on top of the water that we’re drawing.
![Blend in the reflections...](http://kortham.net/temp/upshot_MpbErgZN.png)
The animated reflections are looking pretty cool, but it doesn’t really look like water.. kind of like a shimmery mirror. So we blend in a texture as the last step. Have you ever noticed that when you look across a big body of water and see a reflection, that moving doesn’t really change what’s reflected there? There’s a pretty constant gradient because of how the sky is reflecting in the angle of the water.
![](http://kortham.net/temp/upshot_deeodhIz.png)
(not in game art… it’s a picture of a lake from Wikipedia)
In the 2D world of verdant skies, we simulate that by blending in a hand-painted water texture. The final result gives you a nice subtle color and texture difference from top to bottom:
![](http://kortham.net/temp/upshot_kKnyfukI.png)
But this is what our water really looks like!
In other Verdant Skies news: Beth has been hard at work doing the level design for the real map. I’ve got a huge list of mostly small usability bugs to fix. Lizzy has been working on the art for the player- there’s a lot of art to make for our fully customizable characters! More to come about that in a later post…