godot/thirdparty/embree/kernels/bvh/bvh_intersector_stream_filters.h
jfons 767e374dce Upgrade Embree to the latest official release.
Since Embree v3.13.0 supports AARCH64, switch back to the
official repo instead of using Embree-aarch64.

`thirdparty/embree/patches/godot-changes.patch` should now contain
an accurate diff of the changes done to the library.
2021-05-21 17:00:24 +02:00

41 lines
1.7 KiB
C++

// Copyright 2009-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "../common/default.h"
#include "../common/ray.h"
#include "../common/scene.h"
namespace embree
{
namespace isa
{
class RayStreamFilter
{
public:
static void intersectAOS(Scene* scene, RTCRayHit* rays, size_t N, size_t stride, IntersectContext* context);
static void intersectAOP(Scene* scene, RTCRayHit** rays, size_t N, IntersectContext* context);
static void intersectSOA(Scene* scene, char* rays, size_t N, size_t numPackets, size_t stride, IntersectContext* context);
static void intersectSOP(Scene* scene, const RTCRayHitNp* rays, size_t N, IntersectContext* context);
static void occludedAOS(Scene* scene, RTCRay* rays, size_t N, size_t stride, IntersectContext* context);
static void occludedAOP(Scene* scene, RTCRay** rays, size_t N, IntersectContext* context);
static void occludedSOA(Scene* scene, char* rays, size_t N, size_t numPackets, size_t stride, IntersectContext* context);
static void occludedSOP(Scene* scene, const RTCRayNp* rays, size_t N, IntersectContext* context);
private:
template<int K, bool intersect>
static void filterAOS(Scene* scene, void* rays, size_t N, size_t stride, IntersectContext* context);
template<int K, bool intersect>
static void filterAOP(Scene* scene, void** rays, size_t N, IntersectContext* context);
template<int K, bool intersect>
static void filterSOA(Scene* scene, char* rays, size_t N, size_t numPackets, size_t stride, IntersectContext* context);
template<int K, bool intersect>
static void filterSOP(Scene* scene, const void* rays, size_t N, IntersectContext* context);
};
}
};