Hi there, I have a question regarding the surface area heuristic ( SAH )
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
Please log in or register to post a reply.
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
= 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.
Thanks guys that cleared it up for me.
Hello, im a bit confused about what are
Ctraversal and Cintersect in the article that you speak of. Any
They are heuristic “cost” values that you can tune to get the best
performing tree. Ctraversal is the cost of splitting a node into child
nodes and Cintersect is the cost of computing a ray-triangle
intersection. The ratio of the two controls how deep the tree gets. The
idea is to stop splitting nodes when it would be more expensive to do so
than just to intersect all the triangles in that node.