#version 310 es
precision mediump float;


const uint width = 128u;
layout (binding = 1) buffer Result_1 {
  float values[];
} result;

struct tint_symbol_2 {
  uvec3 GlobalInvocationId;
};

uniform highp sampler2D tex_1;

void tint_symbol_inner(uvec3 GlobalInvocationId) {
  result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
}

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol(tint_symbol_2 tint_symbol_1) {
  tint_symbol_inner(tint_symbol_1.GlobalInvocationId);
  return;
}
void main() {
  tint_symbol_2 inputs;
  inputs.GlobalInvocationId = gl_GlobalInvocationID;
  tint_symbol(inputs);
}


