Lighting – Monsters Rising (iOS)
I worked on Monsters Rising as a Technical Artist. I was involved in all stages of development right from pre-production to production. One of my major tasks were setting the mood and atmosphere for the game through lighting, fog and post processing. Below are Screenshots from the iPad build of the game which can be downloaded from the app store (iOS). I lit 19 different levels over the course of the project and each level had a minimum of 3 lighting variations and a maximum of 5. It was a fun task and I enjoyed every bit of it.
Some of the challenges we faced during development were:
1) Color banding due to limited lightmap color range. We solved this by modulating the already modulated lightmap by 1.375 times more. By doing this we lost some contrast but we were able to compensate that by turning up the bleach bypass post process opacity.
2) We initially had a lot of unique lightmaps which ended up increasing the draw call count which had quite a negative impact on cpu performance on the iPad 2. We solved this increasing the lightmap resolution while maintaining the texel per world unit size. This allowed us to fit more objects in the same lightmap. Though this resulted in extremely large 4k lightmaps, we were able to downscale it and achieve decent results which you can see below.
3) Gamma space lighting compensation: We faced the issue where when an object of a particular color was lit by a light the same color, it would get saturated very quickly but the surrounding objects wouldn’t receive much color from the light. So we could not saturate the light too much or certain objects would look too saturated. But we could not desaturate it too much or else the world would look like it was being lit by white light. We solved this by modifying the lighting model to allow some of the fog color to be mixed with the diffuse map. This solved our problem and everything finally looked harmonious.
4) Since all our lights were baked we leveraged unity’s light probe system along with a custom shader that I wrote to light up the characters. The shader supports a user defined ramp which controls the rim light, specualar and diffuse light. This allowed us to fine tune the lighting per character that made them stand out. Reaching this goal was not an easy one and it took quite a bit of iteration and trial and error as sometimes characters would get too dark in the shadows and too bright when under a street light. The intial shader had too many tuneables and took forever to tweak a character. In the end we hard coded some values and had only a brightness tuneable and a glow color tuneable which made tweaking them a lot easier.