1// Copyright 2009-2021 Intel Corporation
2// SPDX-License-Identifier: Apache-2.0
3
4#pragma once
5
6#include "bvh_node_ref.h"
7
8namespace embree
9{
10
11 /*! BVHN Base Node */
12 template<typename NodeRef, int N>
13 struct BaseNode_t
14 {
15 /*! Clears the node. */
16 __forceinline void clear()
17 {
18 for (size_t i=0; i<N; i++)
19 children[i] = NodeRef::emptyNode;
20 }
21
22 /*! Returns reference to specified child */
23 __forceinline NodeRef& child(size_t i) { assert(i<N); return children[i]; }
24 __forceinline const NodeRef& child(size_t i) const { assert(i<N); return children[i]; }
25
26 /*! verifies the node */
27 __forceinline bool verify() const
28 {
29 for (size_t i=0; i<N; i++) {
30 if (child(i) == NodeRef::emptyNode) {
31 for (; i<N; i++) {
32 if (child(i) != NodeRef::emptyNode)
33 return false;
34 }
35 break;
36 }
37 }
38 return true;
39 }
40
41 NodeRef children[N]; //!< Pointer to the N children (can be a node or leaf)
42 };
43}
44