59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
#!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
|