orkgroup_size(16, 16, 1) fn cs(
        @builtin(workgroup_id) workgroup_id: vec3u,
        @builtin(local_invocation_id) local_invocation_id: vec3u,
      ) {
        let size = textureDimensions(ourTexture, 0);
        let position = workgroup_id.xy * vec2u(16,16) + 
                       local_invocation_id.xy;
        if (all(position < size)) {
          let numBins = f32(256); //arrayLength(&histogram));
          let lastBinIndex = u32(numBins - 1);
          var channels = textureLoad(ourTexture, p