Skip to content

WasmGPU.compute.kernels.compactF32

Summary

WasmGPU.compute.kernels.compactF32 compacts float values using a u32 flag buffer. Non-zero flags keep values; zero flags discard values. The method returns both compacted output and selected-count buffer. Use this for filtering float datasets before downstream kernels.

Syntax

WasmGPU.compute.kernels.compactF32(input: StorageBuffer, flags: StorageBuffer, opts?: CompactOptions): CompactResult
const result = wgpu.compute.kernels.compactF32(input, flags, opts);

Parameters

Name Type Required Description
input StorageBuffer Yes Source f32 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 float output plus 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 Float32Array([1.0, 2.0, 3.0, 4.0]), copySrc: true });
const flags = wgpu.compute.createStorageBuffer({ data: new Uint32Array([0, 1, 1, 0]), copySrc: true });
const result = wgpu.compute.kernels.compactF32(input, flags);

console.log(await wgpu.compute.readback.readScalarU32(result.count));

See Also