| 85 | |
| 86 | template<int K> |
| 87 | __forceinline vbool<K> runIntersectionFilterHelper(RTCFilterFunctionNArguments* args, const Geometry* const geometry, RayQueryContext* context) |
| 88 | { |
| 89 | vint<K>* mask = (vint<K>*) args->valid; |
| 90 | if (geometry->intersectionFilterN) |
| 91 | geometry->intersectionFilterN(args); |
| 92 | |
| 93 | vbool<K> valid_o = *mask != vint<K>(zero); |
| 94 | if (none(valid_o)) return valid_o; |
| 95 | |
| 96 | if (context->getFilter()) { |
| 97 | if (context->enforceArgumentFilterFunction() || geometry->hasArgumentFilterFunctions()) |
| 98 | context->getFilter()(args); |
| 99 | } |
| 100 | |
| 101 | valid_o = *mask != vint<K>(zero); |
| 102 | if (none(valid_o)) return valid_o; |
| 103 | |
| 104 | copyHitToRay(valid_o,*(RayHitK<K>*)args->ray,*(HitK<K>*)args->hit); |
| 105 | return valid_o; |
| 106 | } |
| 107 | |
| 108 | template<int K> |
| 109 | __forceinline vbool<K> runIntersectionFilter(const vbool<K>& valid, const Geometry* const geometry, RayHitK<K>& ray, RayQueryContext* context, HitK<K>& hit) |
nothing calls this directly
no test coverage detected