#pragma once
#include "node_intersector.h"
namespace embree
{
namespace isa
{
template<int K, bool robust>
struct TravRayK;
TravRayK<K, false>;
TravRayKFast;
TravRayK<K, true>;
TravRayKRobust;
template<int N, int K>
__forceinline vbool<K> intersectNodeK(const typename BVHN<N>::AABBNode* node, size_t i,
const TravRayKFast<K>& ray, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectNodeKRobust(const typename BVHN<N>::AABBNode* node, size_t i,
const TravRayKRobust<K>& ray, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectNodeK(const typename BVHN<N>::AABBNodeMB* node, const size_t i,
const TravRayKFast<K>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectNodeKRobust(const typename BVHN<N>::AABBNodeMB* node, const size_t i,
const TravRayKRobust<K>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectNodeKMB4D(const typename BVHN<N>::NodeRef ref, const size_t i,
const TravRayKFast<K>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectNodeKMB4DRobust(const typename BVHN<N>::NodeRef ref, const size_t i,
const TravRayKRobust<K>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K, bool robust>
__forceinline vbool<K> intersectNodeK(const typename BVHN<N>::OBBNode* node, const size_t i,
const TravRayK<K,robust>& ray, vfloat<K>& dist)
{ … }
template<int N, int K, bool robust>
__forceinline vbool<K> intersectNodeK(const typename BVHN<N>::OBBNodeMB* node, const size_t i,
const TravRayK<K,robust>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectQuantizedNodeK(const typename BVHN<N>::QuantizedBaseNode* node, size_t i,
const TravRayK<K,false>& ray, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectQuantizedNodeK(const typename BVHN<N>::QuantizedBaseNode* node, size_t i,
const TravRayK<K,true>& ray, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectQuantizedNodeMBK(const typename BVHN<N>::QuantizedBaseNodeMB* node, const size_t i,
const TravRayK<K,false>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K>
__forceinline vbool<K> intersectQuantizedNodeMBK(const typename BVHN<N>::QuantizedBaseNodeMB* node, const size_t i,
const TravRayK<K,true>& ray, const vfloat<K>& time, vfloat<K>& dist)
{ … }
template<int N, int K, int types, bool robust>
struct BVHNNodeIntersectorK;
BVHNNodeIntersectorK<N, K, BVH_AN1, false>;
BVHNNodeIntersectorK<N, K, BVH_AN1, true>;
BVHNNodeIntersectorK<N, K, BVH_AN2, false>;
BVHNNodeIntersectorK<N, K, BVH_AN2, true>;
BVHNNodeIntersectorK<N, K, BVH_AN1_UN1, false>;
BVHNNodeIntersectorK<N, K, BVH_AN1_UN1, true>;
BVHNNodeIntersectorK<N, K, BVH_AN2_UN2, false>;
BVHNNodeIntersectorK<N, K, BVH_AN2_UN2, true>;
BVHNNodeIntersectorK<N, K, BVH_AN2_AN4D, false>;
BVHNNodeIntersectorK<N, K, BVH_AN2_AN4D, true>;
BVHNNodeIntersectorK<N, K, BVH_AN2_AN4D_UN2, false>;
BVHNNodeIntersectorK<N, K, BVH_AN2_AN4D_UN2, true>;
template<int N, int K, bool robust>
struct BVHNQuantizedBaseNodeIntersectorK;
BVHNQuantizedBaseNodeIntersectorK<N, K, false>;
BVHNQuantizedBaseNodeIntersectorK<N, K, true>;
}
}