#!amber

SHADER vertex vert_shader PASSTHROUGH

SHADER fragment frag_setup GLSL
#version 430

layout(location = 0) out vec4 result;

void main() {
  result = vec4(floor(gl_FragCoord.x) / 255.0f, floor(gl_FragCoord.y) / 255.0f, 0, 0);
}
END

SHADER fragment frag_shader GLSL
#version 430

layout(binding = 0) uniform sampler2D tex;

layout(location = 0) out vec4 result;

void main() {
  vec2 base = floor(gl_FragCoord.xy) / 255.0f;
  uint mask = 0;
  mask |= textureOffset(tex, base, ivec2(0, -1)).g < base.y ? 1 : 0;
  mask |= textureOffset(tex, base, ivec2(0, 1)).g > base.y ? 2 : 0;
  mask |= textureOffset(tex, base, ivec2(-1, 0)).r < base.x ? 4 : 0;
  mask |= textureOffset(tex, base, ivec2(1, 0)).r > base.x ? 8 : 0;
  result = vec4(mask/255.0f, 0, 0, 0);
}
END

IMAGE texture FORMAT R8G8B8A8_UNORM DIM_2D WIDTH 256 HEIGHT 256
SAMPLER sampler

PIPELINE graphics setup
  ATTACH vert_shader
  ATTACH frag_setup

  BIND BUFFER texture AS color LOCATION 0
  FRAMEBUFFER_SIZE 256 256
END

RUN setup DRAW_RECT POS 0 0 SIZE 256 256

BUFFER framebuffer FORMAT R8G8B8A8_UNORM

PIPELINE graphics pipeline
  ATTACH vert_shader
  ATTACH frag_shader

  BIND BUFFER texture AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
  BIND BUFFER framebuffer AS color LOCATION 0
  FRAMEBUFFER_SIZE 256 256
END

RUN pipeline DRAW_RECT POS 0 0 SIZE 256 256
EXPECT framebuffer IDX 1 1 SIZE 254 254 EQ_RGBA 15 0 0 0
