Path: blob/master/thirdparty/embree/kernels/bvh/bvh_collider.h
9912 views
// Copyright 2009-2021 Intel Corporation1// SPDX-License-Identifier: Apache-2.023#pragma once45#include "bvh.h"6#include "../geometry/trianglev.h"7#include "../geometry/object.h"89namespace embree10{11namespace isa12{13template<int N>14class BVHNCollider15{16typedef BVHN<N> BVH;17typedef typename BVH::NodeRef NodeRef;18typedef typename BVH::AABBNode AABBNode;1920struct CollideJob21{22CollideJob () {}2324CollideJob (NodeRef ref0, const BBox3fa& bounds0, size_t depth0,25NodeRef ref1, const BBox3fa& bounds1, size_t depth1)26: ref0(ref0), bounds0(bounds0), depth0(depth0), ref1(ref1), bounds1(bounds1), depth1(depth1) {}2728NodeRef ref0;29BBox3fa bounds0;30size_t depth0;31NodeRef ref1;32BBox3fa bounds1;33size_t depth1;34};3536typedef vector_t<CollideJob, aligned_allocator<CollideJob,16>> jobvector;3738void split(const CollideJob& job, jobvector& jobs);3940public:41__forceinline BVHNCollider (Scene* scene0, Scene* scene1, RTCCollideFunc callback, void* userPtr)42: scene0(scene0), scene1(scene1), callback(callback), userPtr(userPtr) {}4344public:45virtual void processLeaf(NodeRef leaf0, NodeRef leaf1) = 0;46void collide_recurse(NodeRef node0, const BBox3fa& bounds0, NodeRef node1, const BBox3fa& bounds1, size_t depth0, size_t depth1);47void collide_recurse_entry(NodeRef node0, const BBox3fa& bounds0, NodeRef node1, const BBox3fa& bounds1);4849protected:50Scene* scene0;51Scene* scene1;52RTCCollideFunc callback;53void* userPtr;54};5556template<int N>57class BVHNColliderUserGeom : public BVHNCollider<N>58{59typedef BVHN<N> BVH;60typedef typename BVH::NodeRef NodeRef;61typedef typename BVH::AABBNode AABBNode;6263__forceinline BVHNColliderUserGeom (Scene* scene0, Scene* scene1, RTCCollideFunc callback, void* userPtr)64: BVHNCollider<N>(scene0,scene1,callback,userPtr) {}6566virtual void processLeaf(NodeRef leaf0, NodeRef leaf1);67public:68static void collide(BVH* __restrict__ bvh0, BVH* __restrict__ bvh1, RTCCollideFunc callback, void* userPtr);69};70}71}727374