# What is the algorithm used in pbrt-v3 for triangle intersection?

Where's this algorithm come from? Any references?

And a specific question, when the authors compute the transformation from world space to ray-triangle intersection coordinate space, what's the permutation step for?

The permutation is described in section 3.6.2, page 158-159.

A reason behind this permutation is that a shear matrix (which involves dividing z component of ray direction) is computed to transform from world space to ray triangle intersection coordinate space. Permuting the coordinates is to avoid divide-by-0 error by mapping nonzero component to +z.