import { BinaryUint32BVH } from "../../../../core/bvh2/binary/2/BinaryUint32BVH.js";
import { bvh32_from_indexed_geometry } from "../../../graphics/geometry/bvh/buffered/bvh32_from_indexed_geometry.js";
import { geometry_optimize_uv_tension } from "../../../graphics/geometry/optimization/geometry_optimize_uv_tension.js";
import { Sampler2D } from '../../../graphics/texture/sampler/Sampler2D.js';
import { sampler2d_channel_compute_max } from "../../../graphics/texture/sampler/sampler2d_channel_compute_max.js";
import { sampler2d_channel_compute_min } from "../../../graphics/texture/sampler/sampler2d_channel_compute_min.js";
import BufferedGeometryArraysBuilder from '../BufferedGeometryArraysBuilder.js';

self.Lib = {
    /**
     *
     * @param {Float32Array} vertices
     * @param {Uint32Array} indices
     * @returns {BinaryUint32BVH}
     */
    build_bvh(vertices, indices) {
        const bvh = new BinaryUint32BVH();
        bvh32_from_indexed_geometry(bvh, vertices, indices);

        return bvh;
    },
    Sampler2D,
    BufferedGeometryArraysBuilder,
    tensionOptimizeUV: geometry_optimize_uv_tension,
    sampler2d_channel_compute_min,
    sampler2d_channel_compute_max
};


