godot/thirdparty/embree/include/embree4/rtcore_builder.h

// Copyright 2009-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "rtcore_scene.h"

RTC_NAMESPACE_BEGIN
  
/* Opaque BVH type */
RTCBVH;

/* Input build primitives for the builder */
struct RTC_ALIGN(32) RTCBuildPrimitive
{};

/* Opaque thread local allocator type */
RTCThreadLocalAllocator;

/* Callback to create a node */
RTCCreateNodeFunction;

/* Callback to set the pointer to all children */
RTCSetNodeChildrenFunction;

/* Callback to set the bounds of all children */
RTCSetNodeBoundsFunction;

/* Callback to create a leaf node */
RTCCreateLeafFunction;

/* Callback to split a build primitive */
RTCSplitPrimitiveFunction;

/* Build flags */
enum RTCBuildFlags
{};

enum RTCBuildConstants
{};

/* Input for builders */
struct RTCBuildArguments
{};

/* Returns the default build settings.  */
RTC_FORCEINLINE struct RTCBuildArguments rtcDefaultBuildArguments()
{}

/* Creates a new BVH. */
RTC_API RTCBVH rtcNewBVH(RTCDevice device);

/* Builds a BVH. */
RTC_API void* rtcBuildBVH(const struct RTCBuildArguments* args);

/* Allocates memory using the thread local allocator. */
RTC_API void* rtcThreadLocalAlloc(RTCThreadLocalAllocator allocator, size_t bytes, size_t align);

/* Retains the BVH (increments reference count). */
RTC_API void rtcRetainBVH(RTCBVH bvh);

/* Releases the BVH (decrements reference count). */
RTC_API void rtcReleaseBVH(RTCBVH bvh);

RTC_NAMESPACE_END