diff options
Diffstat (limited to 'thirdparty/embree-aarch64/kernels/common/hit.h')
-rw-r--r-- | thirdparty/embree-aarch64/kernels/common/hit.h | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/thirdparty/embree-aarch64/kernels/common/hit.h b/thirdparty/embree-aarch64/kernels/common/hit.h deleted file mode 100644 index 32a198cdfe..0000000000 --- a/thirdparty/embree-aarch64/kernels/common/hit.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2009-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#pragma once - -#include "default.h" -#include "ray.h" -#include "instance_stack.h" - -namespace embree -{ - /* Hit structure for K hits */ - template<int K> - struct HitK - { - /* Default construction does nothing */ - __forceinline HitK() {} - - /* Constructs a hit */ - __forceinline HitK(const RTCIntersectContext* context, const vuint<K>& geomID, const vuint<K>& primID, const vfloat<K>& u, const vfloat<K>& v, const Vec3vf<K>& Ng) - : Ng(Ng), u(u), v(v), primID(primID), geomID(geomID) - { - for (unsigned l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l) - instID[l] = RTC_INVALID_GEOMETRY_ID; - instance_id_stack::copy(context->instID, instID); - } - - /* Returns the size of the hit */ - static __forceinline size_t size() { return K; } - - public: - Vec3vf<K> Ng; // geometry normal - vfloat<K> u; // barycentric u coordinate of hit - vfloat<K> v; // barycentric v coordinate of hit - vuint<K> primID; // primitive ID - vuint<K> geomID; // geometry ID - vuint<K> instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance ID - }; - - /* Specialization for a single hit */ - template<> - struct __aligned(16) HitK<1> - { - /* Default construction does nothing */ - __forceinline HitK() {} - - /* Constructs a hit */ - __forceinline HitK(const RTCIntersectContext* context, unsigned int geomID, unsigned int primID, float u, float v, const Vec3fa& Ng) - : Ng(Ng.x,Ng.y,Ng.z), u(u), v(v), primID(primID), geomID(geomID) - { - instance_id_stack::copy(context->instID, instID); - } - - /* Returns the size of the hit */ - static __forceinline size_t size() { return 1; } - - public: - Vec3<float> Ng; // geometry normal - float u; // barycentric u coordinate of hit - float v; // barycentric v coordinate of hit - unsigned int primID; // primitive ID - unsigned int geomID; // geometry ID - unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance ID - }; - - /* Shortcuts */ - typedef HitK<1> Hit; - typedef HitK<4> Hit4; - typedef HitK<8> Hit8; - typedef HitK<16> Hit16; - - /* Outputs hit to stream */ - template<int K> - __forceinline embree_ostream operator<<(embree_ostream cout, const HitK<K>& ray) - { - cout << "{ " << embree_endl - << " Ng = " << ray.Ng << embree_endl - << " u = " << ray.u << embree_endl - << " v = " << ray.v << embree_endl - << " primID = " << ray.primID << embree_endl - << " geomID = " << ray.geomID << embree_endl - << " instID ="; - for (unsigned l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l) - { - cout << " " << ray.instID[l]; - } - cout << embree_endl; - return cout << "}"; - } - - template<typename Hit> - __forceinline void copyHitToRay(RayHit& ray, const Hit& hit) - { - ray.Ng = hit.Ng; - ray.u = hit.u; - ray.v = hit.v; - ray.primID = hit.primID; - ray.geomID = hit.geomID; - instance_id_stack::copy(hit.instID, ray.instID); - } - - template<int K> - __forceinline void copyHitToRay(const vbool<K> &mask, RayHitK<K> &ray, const HitK<K> &hit) - { - vfloat<K>::storeu(mask,&ray.Ng.x, hit.Ng.x); - vfloat<K>::storeu(mask,&ray.Ng.y, hit.Ng.y); - vfloat<K>::storeu(mask,&ray.Ng.z, hit.Ng.z); - vfloat<K>::storeu(mask,&ray.u, hit.u); - vfloat<K>::storeu(mask,&ray.v, hit.v); - vuint<K>::storeu(mask,&ray.primID, hit.primID); - vuint<K>::storeu(mask,&ray.geomID, hit.geomID); - instance_id_stack::copy(hit.instID, ray.instID, mask); - } -} |