summaryrefslogtreecommitdiffstats
path: root/thirdparty/embree/kernels/geometry/disc_intersector.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/embree/kernels/geometry/disc_intersector.h')
-rw-r--r--thirdparty/embree/kernels/geometry/disc_intersector.h59
1 files changed, 47 insertions, 12 deletions
diff --git a/thirdparty/embree/kernels/geometry/disc_intersector.h b/thirdparty/embree/kernels/geometry/disc_intersector.h
index ec6fa9c4f3..2997d36202 100644
--- a/thirdparty/embree/kernels/geometry/disc_intersector.h
+++ b/thirdparty/embree/kernels/geometry/disc_intersector.h
@@ -23,18 +23,24 @@ namespace embree
__forceinline void finalize() {}
- __forceinline Vec2f uv(const size_t i) const
- {
+ __forceinline Vec2f uv(const size_t i) const {
return Vec2f(vu[i], vv[i]);
}
- __forceinline float t(const size_t i) const
- {
+ __forceinline Vec2vf<M> uv() const {
+ return Vec2vf<M>(vu, vv);
+ }
+ __forceinline float t(const size_t i) const {
return vt[i];
}
- __forceinline Vec3fa Ng(const size_t i) const
- {
+ __forceinline vfloat<M> t() const {
+ return vt;
+ }
+ __forceinline Vec3fa Ng(const size_t i) const {
return Vec3fa(vNg.x[i], vNg.y[i], vNg.z[i]);
}
+ __forceinline Vec3vf<M> Ng() const {
+ return vNg;
+ }
public:
vfloat<M> vu;
@@ -43,16 +49,45 @@ namespace embree
Vec3vf<M> vNg;
};
+ template<>
+ struct DiscIntersectorHitM<1>
+ {
+ __forceinline DiscIntersectorHitM() {}
+
+ __forceinline DiscIntersectorHitM(const float& u, const float& v, const float& t, const Vec3fa& Ng)
+ : vu(u), vv(v), vt(t), vNg(Ng) {}
+
+ __forceinline void finalize() {}
+
+ __forceinline Vec2f uv() const {
+ return Vec2f(vu, vv);
+ }
+
+ __forceinline float t() const {
+ return vt;
+ }
+
+ __forceinline Vec3fa Ng() const {
+ return vNg;
+ }
+
+ public:
+ float vu;
+ float vv;
+ float vt;
+ Vec3fa vNg;
+ };
+
template<int M>
struct DiscIntersector1
{
typedef CurvePrecalculations1 Precalculations;
- template<typename Epilog>
+ template<typename Ray, typename Epilog>
static __forceinline bool intersect(
const vbool<M>& valid_i,
Ray& ray,
- IntersectContext* context,
+ RayQueryContext* context,
const Points* geom,
const Precalculations& pre,
const Vec4vf<M>& v0i,
@@ -97,10 +132,10 @@ namespace embree
return epilog(valid, hit);
}
- template<typename Epilog>
+ template<typename Ray, typename Epilog>
static __forceinline bool intersect(const vbool<M>& valid_i,
Ray& ray,
- IntersectContext* context,
+ RayQueryContext* context,
const Points* geom,
const Precalculations& pre,
const Vec4vf<M>& v0i,
@@ -145,7 +180,7 @@ namespace embree
static __forceinline bool intersect(const vbool<M>& valid_i,
RayK<K>& ray,
size_t k,
- IntersectContext* context,
+ RayQueryContext* context,
const Points* geom,
const Precalculations& pre,
const Vec4vf<M>& v0i,
@@ -194,7 +229,7 @@ namespace embree
static __forceinline bool intersect(const vbool<M>& valid_i,
RayK<K>& ray,
size_t k,
- IntersectContext* context,
+ RayQueryContext* context,
const Points* geom,
const Precalculations& pre,
const Vec4vf<M>& v0i,