UNPKG

playcanvas

Version:

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

72 lines (71 loc) 2.67 kB
/** * @import { GraphicsDevice } from '../../platform/graphics/graphics-device.js' * @import { Texture } from '../../platform/graphics/texture.js' */ /** * Render pass that counts digit occurrences per group (Pass 0 of radix sort). * Outputs to R32F prefix sums texture. * * Has two variants: * - sourceLinear=true: First pass, reads from user's linear-layout texture * - sourceLinear=false: Subsequent passes, reads from internal Morton-layout texture * * @category Graphics * @ignore */ export class RenderPassRadixSortCount extends RenderPassShaderQuad { /** * @param {GraphicsDevice} device - The graphics device. * @param {boolean} sourceLinear - Whether to read from linear-layout source texture. * @param {number} bitsPerStep - Bits per radix step (usually 4). * @param {number} groupSize - Log2 of group size (usually 4 for 16 elements). * @param {number} currentBit - Current bit offset for this pass. */ constructor(device: GraphicsDevice, sourceLinear: boolean, bitsPerStep: number, groupSize: number, currentBit: number); /** * Whether this pass reads from linear-layout source texture (first pass). */ sourceLinear: boolean; /** * Bits per radix step (usually 4). */ bitsPerStep: number; /** * Log2 of group size (usually 4 for 16 elements). */ groupSize: number; /** * Current bit offset for this pass. */ currentBit: number; /** * Dynamic params updated per frame. * * @type {{elementCount: number, imageElementsLog2: number}} * @private */ private _dynamicParams; keysTextureId: import("../../index.js").ScopeId; bitsPerStepId: import("../../index.js").ScopeId; groupSizeId: import("../../index.js").ScopeId; elementCountId: import("../../index.js").ScopeId; imageElementsLog2Id: import("../../index.js").ScopeId; currentBitId: import("../../index.js").ScopeId; /** * Sets the keys texture to read from. * * @param {Texture} keysTexture - The keys texture (R32U). */ setKeysTexture(keysTexture: Texture): void; _keysTexture: Texture; /** * Sets dynamic parameters (called each frame). * * @param {number} elementCount - Number of elements to sort. * @param {number} imageElementsLog2 - Log2 of total texture elements. */ setDynamicParams(elementCount: number, imageElementsLog2: number): void; } import { RenderPassShaderQuad } from './render-pass-shader-quad.js'; import type { Texture } from '../../platform/graphics/texture.js'; import type { GraphicsDevice } from '../../platform/graphics/graphics-device.js';