| #!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 |