float TriangleMesh::IntersectRay_TriangleIndex(const Ray &ray, int &outTriangleIndex) const { #ifdef MATH_AVX if (simdCapability == SIMD_AVX) return IntersectRay_TriangleIndex_AVX(ray, outTriangleIndex); #endif #ifdef MATH_SSE41 if (simdCapability == SIMD_SSE41) return IntersectRay_TriangleIndex_SSE41(ray, outTriangleIndex); #endif #ifdef MATH_SSE2 if (simdCapability == SIMD_SSE2) return IntersectRay_TriangleIndex_SSE2(ray, outTriangleIndex); #endif float u, v; return IntersectRay_TriangleIndex_UV_CPP(ray, outTriangleIndex, u, v); }
float TriangleMesh::IntersectRay_TriangleIndex(const Ray &ray, int &outTriangleIndex) const { #ifndef MATH_AUTOMATIC_SSE // TODO: Restore support for this when MATH_AUTOMATIC_SSE is defined! #ifdef MATH_AVX if (simdCapability == SIMD_AVX) return IntersectRay_TriangleIndex_AVX(ray, outTriangleIndex); #endif #ifdef MATH_SSE41 if (simdCapability == SIMD_SSE41) return IntersectRay_TriangleIndex_SSE41(ray, outTriangleIndex); #endif #ifdef MATH_SSE2 if (simdCapability == SIMD_SSE2) return IntersectRay_TriangleIndex_SSE2(ray, outTriangleIndex); #endif #endif float u, v; return IntersectRay_TriangleIndex_UV_CPP(ray, outTriangleIndex, u, v); }