The last few weeks we have been trying to improve the visual presentation of our game, Antigraviator. I am going to share a few tips and tricks we learned along the way. It's mainly intended for other developers out there.
Let's be honest, out of the box, you will probably agree that Unity does not look visually impressive. However, it is important to realize that it is improving and that there are external solutions. Things like plugins and scripts, that greatly help enhance the visuals.
Reflection probes / light probes
If you are making use of the physically based shading/rendering, reflection probes placed around the level will help materials appear more correct. Especially metallic surfaces, by providing them with reflections off of nearby objects, as the name suggests. Light probes are another feature that helped us with grounding in dynamic moving objects in the scene.
This is a crucial step that often tends to be overlooked. There are multiple solutions, but the new one provided by Unity since 5.4 is the easiest to use and produces great results. However it is not included by default, you have to download it here.
There is no real universal setting for any scene, each of our levels in the game has its own post process settings. Having no completely dark or white pixels on the screen is a good guideline to keep in mind, unless it is a lightsource. The tool offers anti aliasing, SSAO, SSR, depth of field, motion blur, HDR bloom, lens dirt, tonemapping, chromatic aberration, vignette, and a few more in one package.
This is a good solution for global illumination, or bounced lighting, especially for exterior areas. This can be used in combination with standard baked GI. The advantage of this is that it can be manipulated in real time and does not clutter texture memory, unlike standard baked GI. This would become an issue if you tried to bake large open landscapes and structures into lightmaps.
It can get quite performance heavy, but here is a good step by step tutorial provided by Unity on how to optimize the performance and precompute times of this feature.
Putting it together
If we combine all the techniques we mention above we achieve the result in the animated gif below.
We can't wait to see what else Unity will add in the future to even further enhance it's capabilities.