/*! * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ import { vec3 } from "gl-matrix"; import { Core } from "../../main.js"; import { AABB } from "./aabb.js"; import { Hittable } from "./hittable.js"; export declare const SplitMethod: { readonly middle: "middle"; readonly equalCounts: "equalCounts"; readonly sah: "sah"; }; export type SplitMethod = (typeof SplitMethod)[keyof typeof SplitMethod]; export declare class LinearBVHNode { bounds: AABB; primitivesOffset: number; secondChildOffset: number; nPrimitives: number; axis: number; private _centroid; private _size; constructor(); toBuffer(buffer: LinearBVHNodeBufferData, index: number): void; } export declare class BVHAccel { private _core; private _maxPrimsInNode; private _splitMethod; private _primitives; private _orderedPrimitives; get orderedPrimitives(): Hittable[]; private _primitiveInfo; private _totalNodes; private _nodes; get nodes(): LinearBVHNode[]; private _offset; private _normalized; constructor(core: Core, primitives: Hittable[], maxPrimsInNode: number, splitMethod: SplitMethod); private _recursiveBuild; private _flattenBVHTree; } export declare class LinearBVHNodeBufferData extends Float32Array { static readonly SIZE: number; readonly CENTER_OFFSET: number; readonly SIZE_OFFSET: number; readonly PRIMITIVES_OFFSET_OFFSET: number; readonly SECOND_CHILD_OFFSET_OFFSET: number; readonly N_PRIMITIVES_OFFSET: number; readonly AXIS_OFFSET: number; constructor(count: number); getCenter(index: number, value: vec3): void; setCenter(index: number, value: vec3): void; getSize(index: number, value: vec3): void; setSize(index: number, value: vec3): void; getPrimitivesOffset(index: number): number; setPrimitivesOffset(index: number, value: number): void; getSecondChildOffset(index: number): number; setSecondChildOffset(index: number, value: number): void; getNPrimitives(index: number): number; setNPrimitives(index: number, value: number): void; getAxis(index: number): number; setAxis(index: number, value: number): void; }