Skip to main content

TEMPLATE

Constant TEMPLATE 

Source
pub const TEMPLATE: &str = r#"const WORKGROUP_SIZE: u32 = {{WORKGROUP_SIZE}}u;

struct ConvertParams {
    bin_count: u32,
    _pad0: vec3<u32>,
    scale: f32,
    _pad1: vec3<u32>,
};

@group(0) @binding(0)
var<storage, read> counts: array<u32>;

@group(0) @binding(1)
var<storage, read_write> values: array<f32>;

@group(0) @binding(2)
var<uniform> params: ConvertParams;

@compute @workgroup_size(WORKGROUP_SIZE)
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
    let idx = gid.x;
    if (idx >= params.bin_count) {
        return;
    }

    let count_value = bitcast<f32>(counts[idx]);
    values[idx] = count_value * params.scale;
}
"#;