Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added alignment definitions to RTCHitNt and RTCRayNt
Added alignment definitions to RTCHitNt and RTCRayNt templates so they match the C definitions provided. As the alignment calculation is nasty without requiring the alignof keyword, or constexpr functions, this could instead be hidden behind a macro. Maybe RTC_ALIGN_SOA_AT_LEAST(N, MIN)? The code is equivalent to: ``` constexpr std::size_t AlignSOAAtLeast(unsigned N, std::size_t min_alignment) noexcept { if (std::has_single_bit<unsigned>(N)) { return std::max<std::size_t>(min_alignment, N * alignof(float)); } else { return min_alignment; } } ``` Checking this works is as simple as adding a few static assertions: ``` static_assert(alignof(embree::RTCRayNt<1>) == alignof(embree::RTCRay)); static_assert(alignof(embree::RTCRayNt<4>) == alignof(embree::RTCRay4)); static_assert(alignof(embree::RTCRayNt<8>) == alignof(embree::RTCRay8)); static_assert(alignof(embree::RTCRayNt<16>) == alignof(embree::RTCRay16)); ```
- Loading branch information