Well the first calculation for surface area is obviously false as that’s clearly calculating the volume and doubling it.

The second formula appears to be calculating the inverse surface area.

w=width, h=height, d=depth

Surface area

= 2 * (wh + wd + hd)

Inv. surface area

= 1 / (2 * (wh + wd + hd))

= 0.5 / (wh + wd + hd)

The inverse surface area is more useful as you can just multiply by it to divide by the surface area. As you should know, dividing is quite significantly more expensive than multiplying, so you’ll often see people storing inverses for performance reasons.

Hi there, I have a question regarding the surface area heuristic ( SAH ) mentioned here:

http://www.devmaster.net/articles/raytracing_series/part7.php

It says that the surface area is calculated as:

area = 2 * width * height * depth

But when I look at the provided source code it much different. Although, probably not incorrect. Here it’s:

real SAV = 0.5f / (a_Box.w() * a_Box.d() + a_Box.w() * a_Box.h() + a_Box.d() * a_Box.h());

Did Jacco forgot to update is article or is the change based on some optimization?

Thanks,

Christian