playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
34 lines (33 loc) • 1.34 kB
TypeScript
/**
* 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';