Introduction

I have a design background (studied New Media Design in Milan, Italy), but in the year 2001, I’ve started to have some interest into real-time graphics that eventually led me to work in the VR industry. At that time I’ve started to collaborate with Virtools, one of the first solutions for VR and real-time graphics – somewhat similar to what is Unity today. I’ve mostly worked for VR solutions in industrial design for large Italian companies, mostly working on next-gen graphics and shader programming. When Virtools development stopped, I’ve started to use Unity and actively develop assets for Asset Store. The first asset that I’ve made was VR Panorama Pro, a tool that is used to make 360 movies out from Unity scenes. A second one – CScape, is an ultra-optimized city builder that pushes boundaries on the real-time rendering of large worlds. Both of my assets are best sellers and have five stars rating. At this moment, I’m also working as a professor in University Cattolica in Milan – teaching VR and AR related stuff. I also work in the Event industry, mostly doing real-time graphics for events. I’ve won few BEA (Best Event Award) for clients such as MTV EMA Awards, Fiat.

The project

When starting any project of this kind I’m actually starting from an actual problem that I have. And in this case, there was a list of actual problems with any water systems available that I had a chance to explore before:

Almost all systems use some sort of transparent shaders. Using transparent shaders can give serious problems with image effects. This means that we lose a possibility to render shadows and depth based image effects like SSR, AO or DOF.

More realistic systems use one or two additional cameras, requiring to render a scene multiple times (normal scene without water, reflection plane, and refraction view). In VR, this means that we are getting a really big impact on performance by having to render scene 4-6 times (as we have to render stereoscopic view).

Most water systems are made to simulate ocean water, while there are almost no realistic solutions for calm water

Most water systems have a problem with blurry and eventually muddy water.

I must say that at this first stage I wasn’t interested in dynamic (interactive) water but was mainly interested in making a good shader that can work fast for VR and eventually for mobile systems.