playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
54 lines (53 loc) • 2.31 kB
TypeScript
/**
* @import { GraphicsDevice } from '../../platform/graphics/graphics-device.js'
* @import { StorageBuffer } from '../../platform/graphics/storage-buffer.js'
* @import { Texture } from '../../platform/graphics/texture.js'
*/
export class GSplatSorter extends EventHandler {
/**
* @param {GraphicsDevice} device - The graphics device.
* @param {import('../scene.js').Scene} [scene] - The scene to fire sort timing events on.
*/
constructor(device: GraphicsDevice, scene?: import("../scene.js").Scene);
worker: Worker;
/** @type {Texture|StorageBuffer} */
target: Texture | StorageBuffer;
/** @type {ArrayBuffer} */
orderData: ArrayBuffer;
centers: any;
scene: import("../scene.js").Scene;
/** @type {UploadStream} */
uploadStream: UploadStream;
/**
* Pending sorted result from the worker, applied on the next applyPendingSorted() call.
* When multiple results arrive between frames, only the latest is kept.
*
* @type {{ count: number, data: Uint32Array }|null}
*/
pendingSorted: {
count: number;
data: Uint32Array;
} | null;
destroy(): void;
/**
* @param {Texture|StorageBuffer} target - The GPU target for order data uploads.
* @param {number} numSplats - The number of splats.
* @param {Float32Array} centers - The splat center positions.
* @param {Uint32Array} [chunks] - Optional chunk data.
*/
init(target: Texture | StorageBuffer, numSplats: number, centers: Float32Array, chunks?: Uint32Array): void;
/**
* Applies the most recent pending sorted result (if any), uploading order data to the GPU.
* Call once per frame from the instance's update().
*
* @returns {number} The splat count from the applied result, or -1 if nothing was pending.
*/
applyPendingSorted(): number;
setMapping(mapping: any): void;
setCamera(pos: any, dir: any): void;
}
import { EventHandler } from '../../core/event-handler.js';
import type { Texture } from '../../platform/graphics/texture.js';
import type { StorageBuffer } from '../../platform/graphics/storage-buffer.js';
import { UploadStream } from '../../platform/graphics/upload-stream.js';
import type { GraphicsDevice } from '../../platform/graphics/graphics-device.js';