indicatrix 0.9.0

A physically-based spectral gemstone renderer that turns GemCAD-style cutting instructions into rendered output.
Documentation
@compute @workgroup_size(64)
fn ew_finalize(@builtin(global_invocation_id) gid: vec3<u32>) {
    let i = gid.x;
    if (i >= ew.chunk_rays) {
        return;
    }
    let tag = ray_core[i].ray_meta.z;
    let should_finalize = (tag == TAG_FINALIZE) || (ew.finalize_all != 0u && tag != TAG_DONE);
    if (!should_finalize) {
        return;
    }

    var s = ew_load(i);
    var local_radiance = s.radiance;
    transport_finalize_ray(
        ray_core[i].ray_meta.w,
        s.lambdas,
        &local_radiance,
        s.split_radiance,
        s.path_pdf,
        s.compat,
        s.path_escaped,
        s.nee_xyz,
    );
    s.radiance = local_radiance;

    ray_core[i].ray_meta.z = TAG_DONE;
}