Posts Tagged ‘bent normal’

More about Occlusion(part III)

Wednesday, July 22nd, 2009

There is a siggraph 2002 paper talking about how the ILM uses “Reflective Occlusion” and “Bent normal” techniques to generate fast and reasonablely accurate fake GI passes for light.

First we start with a reflective occlusion pass, actually it’s very easy to set up in the mib_amb_occlusion:

ref occ

Reflective Occ shader set up

This shader set up makes sure we are using “reflective occlusion” instead of ambient occlusion.
The image below shows the difference of normal Ambient Occlusion and Reflective occlusion. Obviously the reflective occlusion is more rely on camera angle and the surrounding objects:

occ compare

compare of Reflective Occ and Ambient Occlusion

And below is the compare of a same reflective occ pass with 2 different reflection passes:

ref occ result

result of reflective Occlusion

Then, it comes to the bent normal part. The goal of using this technique is to get a flexible fake GI pass (or indirect light pass) based on the given environment image.

Before we use the mib_bent_normal_env shader in MR, we need to do:

a. Bake(use mib_lightmap_write) the ambient occlusion into texture, before that we need to UV the geometry properly , in my case is the skullĀ  model, without too many overlapping areas.

b. Bake(same as “a”) the bent normal into texture, just change the mode from 0 to 2(world space ) or 3 (object space) in the mib_amb_occlusion shader.

Then set up the mib_bent_normal_env as below:

ref occ

mib_bent_normal_env set up

And the render of mib_bent_normal_env will look like a GI pass based on the env map we provided:

Here is the result:


result of bent normal render and usage with reflection pass and a key light pass

In the siggraph paper, mighty ILM people were using customized Renderman shader to generate the reflective occlusion, baked AO and bent normal, and shader to use the baked textures. I tested with Mib_ambient_occlusion instead, but the whole idea is pretty mucn the same.

Be to noticed: this technique is not suitablt for a deforming object, and dramatic camera movement may also cause problem because of the baked textures.

Originally I did this test just for a fake GI test for a student film project I am working on. But I also had fun while was playing this, which is important ^____^.

mib_bent_normal_env shader