2 DEVICE_FEATURE sampleRateShading
3 SHADER vertex vert_shader GLSL
5 layout(location = 0) in vec4 vs_in_position_ndc;
6 layout(location = 1) in float vs_in_position_screen;
7 layout(location = 0) out float vs_out_pos_screen;
10 gl_Position = vs_in_position_ndc;
11 vs_out_pos_screen = vs_in_position_screen;
14 SHADER fragment frag_shader GLSL
16 layout(location = 0) sample in float fs_in_pos_screen;
17 layout(location = 0) out vec4 fs_out_color;
20 const float threshold = 0.0005;
21 const float a = interpolateAtSample(fs_in_pos_screen, gl_SampleID);
22 const float b = fs_in_pos_screen;
23 const bool valuesEqual = (abs(a - b) < threshold);
25 fs_out_color = vec4(0.0, 1.0, 0.0, 1.0);
27 fs_out_color = vec4(1.0, 0.0, 0.0, 1.0);
30 BUFFER position DATA_TYPE vec4<float> DATA
36 BUFFER position_screen DATA_TYPE float DATA
42 BUFFER framebuffer FORMAT B8G8R8A8_UNORM
43 PIPELINE graphics pipeline
46 VERTEX_DATA position LOCATION 0
47 VERTEX_DATA position_screen LOCATION 1
48 BIND BUFFER framebuffer AS color LOCATION 0
49 FRAMEBUFFER_SIZE 64 64
51 RUN pipeline DRAW_ARRAY AS TRIANGLE_STRIP START_IDX 0 COUNT 4
52 EXPECT framebuffer IDX 0 0 SIZE 64 64 EQ_RGBA 0 255 0 255