WasmGPU.compute.kernels.compactU32¶
Summary¶
WasmGPU.compute.kernels.compactU32 compacts u32 values using a u32 mask/flag buffer.
Flags are treated as keep markers (non-zero kept, zero dropped).
The output includes both compacted data and a one-scalar count buffer.
Use this for filtering pipelines and sparse output generation.
Syntax¶
WasmGPU.compute.kernels.compactU32(input: StorageBuffer, flags: StorageBuffer, opts?: CompactOptions): CompactResult
const result = wgpu.compute.kernels.compactU32(input, flags, opts);
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
input |
StorageBuffer |
Yes | Source u32 values to compact. |
flags |
StorageBuffer |
Yes | u32 keep/discard mask aligned with input. |
opts |
CompactOptions |
No | Optional compaction settings (count, out, encoder/label/validation). |
Returns¶
{ output: StorageBuffer; count: StorageBuffer } - Compacted output buffer and one-scalar selected-count buffer.
Type Details¶
type CompactOptions = {
encoder?: GPUCommandEncoder;
label?: string;
validateLimits?: boolean;
count?: number;
out?: StorageBuffer;
};
type CompactResult = {
output: StorageBuffer;
count: StorageBuffer;
};
Example¶
const canvas = document.querySelector("canvas");
const wgpu = await WasmGPU.create(canvas);
const input = wgpu.compute.createStorageBuffer({ data: new Uint32Array([10, 20, 30, 40]), copySrc: true });
const flags = wgpu.compute.createStorageBuffer({ data: new Uint32Array([1, 0, 1, 0]), copySrc: true });
const result = wgpu.compute.kernels.compactU32(input, flags);
console.log(await wgpu.compute.readback.readScalarU32(result.count));