UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

34 lines (33 loc) 1.34 kB
/** * Balances splat budget across multiple octree instances by adjusting LOD levels. * Uses sqrt-based bucket distribution to give more precision to nearby geometry. * Bucket 0 = nearest to camera (highest priority), bucket N-1 = farthest (lowest priority). * * @ignore */ export class GSplatBudgetBalancer { /** * Buckets storing NodeInfo references. * @type {Array<Array>|null} * @private */ private _buckets; /** * Initialize bucket infrastructure on first use. * @private */ private _initBuckets; /** * Balances splat budget across all octree instances by adjusting LOD levels. * Uses sqrt-based bucket distribution to give more precision to nearby geometry. * Makes multiple passes, adjusting by one LOD level per pass, until budget is reached * or all nodes hit their respective limits (per-instance rangeMin or rangeMax). * * @param {Map<GSplatPlacement, GSplatOctreeInstance>} octreeInstances - Map of * GSplatOctreeInstance objects. * @param {number} budget - Target splat budget for octrees. */ balance(octreeInstances: Map<GSplatPlacement, GSplatOctreeInstance>, budget: number): void; } import type { GSplatPlacement } from './gsplat-placement.js'; import type { GSplatOctreeInstance } from './gsplat-octree-instance.js';