|
|
|
@ -15,11 +15,14 @@ void main() { |
|
|
|
|
|
|
|
// TODO: Specialization constants for num_samples? |
|
|
|
const int num_samples = imageSamples(msaa_in); |
|
|
|
const ivec3 msaa_size = imageSize(msaa_in); |
|
|
|
const ivec3 out_size = imageSize(output_img); |
|
|
|
const ivec3 scale = out_size / msaa_size; |
|
|
|
for (int curr_sample = 0; curr_sample < num_samples; ++curr_sample) { |
|
|
|
const vec4 pixel = imageLoad(msaa_in, coords, curr_sample); |
|
|
|
|
|
|
|
const int single_sample_x = 2 * coords.x + (curr_sample & 1); |
|
|
|
const int single_sample_y = 2 * coords.y + ((curr_sample / 2) & 1); |
|
|
|
const int single_sample_x = scale.x * coords.x + (curr_sample & 1); |
|
|
|
const int single_sample_y = scale.y * coords.y + ((curr_sample / 2) & 1); |
|
|
|
const ivec3 dest_coords = ivec3(single_sample_x, single_sample_y, coords.z); |
|
|
|
|
|
|
|
if (any(greaterThanEqual(dest_coords, imageSize(output_img)))) { |
|
|
|
|