Я могу ответить на часть вашего вопроса.Я полагаю, что здесь получаются следующие выводы:
out vec3 barycentricCoord
Точка пересечения, P, заданная в барицентрических координатах.
out vec3 triangleNormal
Нормаль треугольника (вектор, перпендикулярный грани треугольника).).
out float hit
Расстояние от точки пересечения до луча.
Эта страница содержит действительно полезную информацию, очень четкую и дает более подробное объяснение:
https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-tracing-rendering-a-triangle/moller-trumbore-ray-triangle-intersection
Это многое объясняет о вычислениях и том, что представляет математика.Но из того, что я мог видеть, я интерпретирую эти выводы как значение.
Я все еще ломаю эту строку:
const vec3 e2 = ( 1.0 / dot( triangleNormal, ray.Direction ) ) * ( p0 - ray.Origin );
Но эта часть линии,
dot( triangleNormal, ray.Direction )
похоже, что он проверяет, перпендикулярны ли луч и треугольник нормали.Что, если они есть, это означает, что пересечения не произошло, потому что луч параллелен треугольнику.