Rendering Polarization Effects

Matt Hilliard, Pieter Panman, May 8th 2003

Objective

The goal of this project was to reproduce the sort of polaration-related effects visible to someone wearing polarized sunglasses. In the real world this generally means being able to see into bodies of water or through panes of glass when without the polarized sunglasses there would be too much reflection to do so.

Initial Approach

After some initial research we decided to attempt a holistic model for polarization phenomena. We located a research paper describing the authors' integration of polarization effects with the Torrence-Sparrow reflectance model. The result was an entirely physically-based rendering system capturing all the normal characteristics of reflection as well as polarization phenomona. Polarization in this scheme was defined as part of 2x2 coherence matrices which stored information both about the polarization as well as the overall intensity of the light.
Regrettably, the mathmatics behind both this representation of light as well as the Torrence-Sparrow model itself in the end defeated us. The paper we were using did not explain its implementation very well, and there are not many other cases of implementation of this effect in computer graphics to work from. Additionally, generally speaking analysis on the level of what were thinking is usually done in medical science or particle physics Also, neither of us were trained in electromagnetic physics beyond the introductory level and this proved to be a much more significant obstacle to understanding the math than we had expected.

Simplified Approach

With time running out and no progress being made on the approach described above, we took a simpler path. Instead of a super-high fidelity simulation, we modeled an approximation designed to achieve the effects stated in the objective. We modified lrt's photon mapper to attenuate specular reflection off a glass surface based on the Brewster Angle. The Brewster Angle is the angle at which all specular reflecting light is completely polarized. Using an unfortunately arbitrary function we completely attentuate light reflecting at the Brewster angle but smoothly ramp up to not attentuating it at all past 15 degrees to either side of the Brewster Angle. The Brewster Angle is defined as the arctan of the ratio of the indices of refraction at the interface. For our implementation we use the index of refraction given in the rib file and assume the other side of the interface is air (and thus 1.0).

Results

We ran into several limitations with LRT. First, we could not get natural lighting to work with photon mapping. Then the heightfield segfaults decently when photon mapping it. So we had to make do with a texture and point lights.
Although time constraints did not allow us to put together nearly as nice a scene as we had hoped, we do have images to show the effect in action.
The first picture is the scene rendered using the stock LRT at a 30 degree incline from the water surface. Clearly, everything reflects from the background, and it is very hard to see underwater.

orig_outnew800%20(30).jpg

The second picture is the same scene rendered with the modified LRT. In this picture it is clear that at the brewster angle for water, almost all the reflections are reduced, and it is much easier to see the bottom. The half ring is where the angle of incidence to the water is close to the brewster angle. Note that the face that's underwater is also more visible.
Awesomehw1.jpg

For the grand finale, we have composed a short movie that shows the effect as we go from an angle of 10 degrees to 45. Due to time constraints it increments in 5 degree jumps, but with a little fading it shows clearly the effect of filtering the polarized reflections.
Download Movie
Also, here are the other images that are in the movie.
The zipped file that contains all the changes and rib files is here. To render a scene, type "lrt decls.rib new.rib face.rib newend.rib".

Interesting pictures

Of course we must conclude with some interesting pictures we came up with during this project.

AwesomeHomework1
In this image, the lightsources reflect off of the water and do some funky caustics on the sky (okay, so not realistic), which then reflect on the water into the eye.

wow
Yeah.. okay, so that black thing is an area light. It is reflecting on the sphere, and apparently it is giving off light, as the wall behind it picks it up. Cool.