static const char* glsl_frag_resolve = R"glsl(

layout(set = 0, binding = 0) uniform sampler2DMS tex;

layout(location = 0) in vec3 worldpos;
layout(location = 0) out vec4 fragcolor;

vec4 samplePixel(ivec2 pos, int count)
{
	vec4 c = vec4(0.0);
	for (int i = 0; i < count; i++)
	{
		c += texelFetch(tex, pos, i);
	}
	if (c.a > 0.0)
		c /= c.a;
	return c;
}

void main()
{
	int count = textureSamples(tex);
	ivec2 size = textureSize(tex);
	ivec2 pos = ivec2(gl_FragCoord.xy);

	vec4 c = samplePixel(pos, count);
	if (c.a == 0.0)
	{
		for (int y = -1; y <= 1; y++)
		{
			for (int x = -1; x <= 1; x++)
			{
				if (x != 0 || y != 0)
				{
					ivec2 pos2;
					pos2.x = clamp(pos.x + x, 0, size.x - 1);
					pos2.y = clamp(pos.y + y, 0, size.y - 1);
					c += samplePixel(pos2, count);
				}
			}
		}
		if (c.a > 0.0)
			c /= c.a;
	}

	fragcolor = c;
}

)glsl";
