EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Namespaces | Functions
EBGeometry_TriangleRay.hpp File Reference

The one triangle ray-crossing kernel, written once for a scalar and for every SIMD::Pack. More...

#include "EBGeometry_GPU.hpp"
#include "EBGeometry_Math.hpp"
#include "EBGeometry_SIMD.hpp"
#include "EBGeometry_TriangleDistance.hpp"
Include dependency graph for EBGeometry_TriangleRay.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  EBGeometry
 Namespace containing all of EBGeometry's functionality.
 
namespace  EBGeometry::TriangleRay
 The triangle ray-crossing kernel.
 

Functions

template<class V , class Source >
EBGEOMETRY_HOST_ALWAYS_INLINE V EBGeometry::TriangleRay::crossing (const Source &a_triangle, const TriangleDistance::Vec3V< V > &a_origin, const TriangleDistance::Vec3V< V > &a_direction, const V a_tMin, const V a_tMax) noexcept
 Where a ray crosses a triangle, or one triangle per lane (Möller–Trumbore).
 

Detailed Description

The one triangle ray-crossing kernel, written once for a scalar and for every SIMD::Pack.

TriangleSoAT's lanes and SIMD groups call TriangleRay::crossing(), with V = T for one triangle and V = SIMD::Pack<T, N> for N triangles at once.

Author
Robert Marskar