playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
80 lines (79 loc) • 2.79 kB
TypeScript
/**
* @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).
*
* @type {boolean}
*/
sourceLinear: boolean;
/**
* Bits per radix step (usually 4).
*
* @type {number}
*/
bitsPerStep: number;
/**
* Log2 of group size (usually 4 for 16 elements).
*
* @type {number}
*/
groupSize: number;
/**
* Current bit offset for this pass.
*
* @type {number}
*/
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';