#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);
}


