DHART
|
#include <nanort.h>
Classes | |
struct | RayCoeff |
Public Member Functions | |
TriangleIntersector (const T *vertices, const unsigned int *faces, const size_t vertex_stride_bytes) | |
bool | Intersect (T *t_inout, const unsigned int prim_index) const |
Do ray intersection stuff for prim_index th primitive and return hit distance t , barycentric coordinate u and v . Returns true if there's intersection. More... | |
T | GetT () const |
Returns the nearest hit distance. More... | |
void | Update (T t, unsigned int prim_idx) const |
Update is called when initializing intersection and nearest hit is found. More... | |
void | PrepareTraversal (const Ray< T > &ray, const BVHTraceOptions &trace_options) const |
Prepare BVH traversal (e.g. compute inverse ray direction) This function is called only once in BVH traversal. More... | |
void | PostTraversal (const Ray< T > &ray, bool hit, H *isect) const |
Post BVH traversal stuff. Fill isect if there is a hit. More... | |
Private Attributes | |
const T * | vertices_ |
const unsigned int * | faces_ |
const size_t | vertex_stride_bytes_ |
real3< T > | ray_org_ |
RayCoeff | ray_coeff_ |
BVHTraceOptions | trace_options_ |
T | t_min_ |
T | t_ |
T | u_ |
T | v_ |
unsigned int | prim_id_ |
struct nanort::TriangleIntersector::RayCoeff |
|
inline |
|
inline |
Returns the nearest hit distance.
Definition at line 1106 of file nanort.h.
References nanort::TriangleIntersector< T, H >::t_.
|
inline |
Do ray intersection stuff for prim_index
th primitive and return hit distance t
, barycentric coordinate u
and v
. Returns true if there's intersection.
Definition at line 1007 of file nanort.h.
References nanort::BVHTraceOptions::cull_back_face, nanort::TriangleIntersector< T, H >::faces_, nanort::get_vertex_addr(), nanort::TriangleIntersector< T, H >::RayCoeff::kx, nanort::TriangleIntersector< T, H >::RayCoeff::ky, nanort::TriangleIntersector< T, H >::RayCoeff::kz, nanort::BVHTraceOptions::prim_ids_range, nanort::TriangleIntersector< T, H >::ray_coeff_, nanort::TriangleIntersector< T, H >::ray_org_, nanort::BVHTraceOptions::skip_prim_id, nanort::TriangleIntersector< T, H >::RayCoeff::Sx, nanort::TriangleIntersector< T, H >::RayCoeff::Sy, nanort::TriangleIntersector< T, H >::RayCoeff::Sz, nanort::TriangleIntersector< T, H >::t_min_, nanort::TriangleIntersector< T, H >::trace_options_, nanort::TriangleIntersector< T, H >::u_, nanort::TriangleIntersector< T, H >::v_, nanort::TriangleIntersector< T, H >::vertex_stride_bytes_, and nanort::TriangleIntersector< T, H >::vertices_.
|
inline |
Post BVH traversal stuff. Fill isect
if there is a hit.
Definition at line 1158 of file nanort.h.
References nanort::TriangleIntersector< T, H >::prim_id_, nanort::TriangleIntersector< T, H >::t_, nanort::TriangleIntersector< T, H >::u_, and nanort::TriangleIntersector< T, H >::v_.
|
inline |
Prepare BVH traversal (e.g. compute inverse ray direction) This function is called only once in BVH traversal.
Definition at line 1116 of file nanort.h.
References nanort::Ray< T >::dir, nanort::TriangleIntersector< T, H >::RayCoeff::kx, nanort::TriangleIntersector< T, H >::RayCoeff::ky, nanort::TriangleIntersector< T, H >::RayCoeff::kz, nanort::Ray< T >::min_t, nanort::Ray< T >::org, nanort::TriangleIntersector< T, H >::ray_coeff_, nanort::TriangleIntersector< T, H >::ray_org_, nanort::TriangleIntersector< T, H >::RayCoeff::Sx, nanort::TriangleIntersector< T, H >::RayCoeff::Sy, nanort::TriangleIntersector< T, H >::RayCoeff::Sz, nanort::TriangleIntersector< T, H >::t_min_, nanort::TriangleIntersector< T, H >::trace_options_, nanort::TriangleIntersector< T, H >::u_, and nanort::TriangleIntersector< T, H >::v_.
|
inline |
Update is called when initializing intersection and nearest hit is found.
Definition at line 1109 of file nanort.h.
References nanort::TriangleIntersector< T, H >::prim_id_, and nanort::TriangleIntersector< T, H >::t_.
|
private |
Definition at line 1170 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect().
|
mutableprivate |
Definition at line 1181 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::PostTraversal(), and nanort::TriangleIntersector< T, H >::Update().
|
mutableprivate |
Definition at line 1174 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
mutableprivate |
Definition at line 1173 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
mutableprivate |
Definition at line 1178 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::GetT(), nanort::TriangleIntersector< T, H >::PostTraversal(), and nanort::TriangleIntersector< T, H >::Update().
|
mutableprivate |
Definition at line 1176 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
mutableprivate |
Definition at line 1175 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
mutableprivate |
Definition at line 1179 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), nanort::TriangleIntersector< T, H >::PostTraversal(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
mutableprivate |
Definition at line 1180 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect(), nanort::TriangleIntersector< T, H >::PostTraversal(), and nanort::TriangleIntersector< T, H >::PrepareTraversal().
|
private |
Definition at line 1171 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect().
|
private |
Definition at line 1169 of file nanort.h.
Referenced by nanort::TriangleIntersector< T, H >::Intersect().