the start of a rendering journey

rendering static sky

by Nicholas Francis
Jun 10, 2013

For Static Sky we want to render a neon, cyberpunk world that runs smoothly on an iPad. In this blog post, we’ll outline a roadmap for a series of updates that will go into detail on how we are doing that.

Many colored dynamic lights with glow! Yay for programmer art!

I’ve been spending the past month more-or-less focused on the rendering side of Static Sky, and over the coming weeks, I’ll be writing a series of posts covering the techniques we are using. My plan so far is:


We yanked out Unity’s lighting system and replaced it with our own, super fast one that’s specialised for rendering tons of bumped dynamic lights at 60FPS

Physically-based Shading

monkeyheadsIn order to get a solid noir look, we went with a heavily optimised CookTorrance approximation. In these posts I’ll be going over how we did it & how we made the workflow bearable.

Using these shading models, we were able to get a much more vibrant and realistic look than what’s normally available.

  • Part 1: The model explained
  • Part 2: Optimizing with lookup tables
  • Part 3: How the workflow works


Glow & Image Effects

For our GDC demo, we used a traditional alpha-keyed glow (optimised like mad, of course). For the actual game, we’ve adopted techniques that help make our physically based shaders really shine, including an inexpensive hack that fakes HDR (we call it XDR, eXtended Dynamic Range, and I will go over how we did it and how we made it fast) and filmic tone mapping.

  • Part 1: Glow
  • Part 2: Tonemapping
  • Part 3: Optimization

by Genjin
June 13, 2013

Those reflections would interest me too. They look a lot like Image Based Reflections. And that on Mobile? How did you do it?

by Nicholas Francis
June 13, 2013

Nope, not image based – just really careful culling. Take a look here:

by Gustave
June 24, 2013

How did you manage to replace the Unity lighting system? Are you using GL directly + shaders then turning off lighting in Unity?

by Nicholas Francis
July 6, 2013

Basically we just ignore Unity’s lighting system. We don’t use GL – just send constants directly to the shader system (Shader.SetGlobalVector is your friend)…

Add Your Comment