support internal transmissivity and total internal reflection
Closed, ArchivedPublic


A detailed writeup with samples is on the wiki.

This patch cleanly supports the material property of transmissivity (aka transmittance), the relative filtering of light over varying thickness. This supports it for raytracing, ztransparency, and for transparent shadows.

This patch ALSO adds or improves the handling of total internal reflection, the case where a ray could not leave a dense material due to its shallow incident angle.

No new material properties are required. Neither feature improvement drastically affects the runtime cost of the render, but both produce visibly more genuine results.

There are a lot of challenges in a raytracer that does not accurately and rigorously define "inside" and "outside" of various materials, leaving only surface normals to infer some of that information. There are definitely going to be some inaccuracies and some people will find oddly nested models that don't work as expected. Also, this will involve slight adjustments to existing materials to give the best results. But I think this will really advance blender's renderer in the field.