53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
#!amber
|
|
DEVICE_FEATURE sampleRateShading
|
|
SHADER vertex vert_shader GLSL
|
|
#version 440
|
|
layout(location = 0) in vec4 vs_in_position_ndc;
|
|
layout(location = 1) in float vs_in_position_screen;
|
|
layout(location = 0) out float vs_out_pos_screen;
|
|
void main (void)
|
|
{
|
|
gl_Position = vs_in_position_ndc;
|
|
vs_out_pos_screen = vs_in_position_screen;
|
|
}
|
|
END
|
|
SHADER fragment frag_shader GLSL
|
|
#version 440
|
|
layout(location = 0) sample in float fs_in_pos_screen;
|
|
layout(location = 0) out vec4 fs_out_color;
|
|
void main (void)
|
|
{
|
|
const float threshold = 0.0005;
|
|
const float a = interpolateAtSample(fs_in_pos_screen, gl_SampleID);
|
|
const float b = fs_in_pos_screen;
|
|
const bool valuesEqual = (abs(a - b) < threshold);
|
|
if (valuesEqual)
|
|
fs_out_color = vec4(0.0, 1.0, 0.0, 1.0);
|
|
else
|
|
fs_out_color = vec4(1.0, 0.0, 0.0, 1.0);
|
|
}
|
|
END
|
|
BUFFER position DATA_TYPE vec4<float> DATA
|
|
1.0 -1.0 0.0 1.0
|
|
1.0 1.0 0.0 1.0
|
|
-1.0 -1.0 0.0 1.0
|
|
-1.0 1.0 0.0 1.0
|
|
END
|
|
BUFFER position_screen DATA_TYPE float DATA
|
|
64.0
|
|
64.0
|
|
0.0
|
|
0.0
|
|
END
|
|
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
|
|
PIPELINE graphics pipeline
|
|
ATTACH vert_shader
|
|
ATTACH frag_shader
|
|
VERTEX_DATA position LOCATION 0
|
|
VERTEX_DATA position_screen LOCATION 1
|
|
BIND BUFFER framebuffer AS color LOCATION 0
|
|
FRAMEBUFFER_SIZE 64 64
|
|
END
|
|
RUN pipeline DRAW_ARRAY AS TRIANGLE_STRIP START_IDX 0 COUNT 4
|
|
EXPECT framebuffer IDX 0 0 SIZE 64 64 EQ_RGBA 0 255 0 255
|