• Godot Help
  • Is there a way to preserve shader image quality at small MeshInstance scales??

Hi all. I have a (godot 4) project where i need to show a circle outline superimposed on a flat map. the circle will change size during the scene and the 3d camera will move away from/towards the circle in response so that it remains easily readable on the screen.

the way i've tried setting up the circle is to use a MeshInstance, containing a plane mesh, with a little shader drawing the circle against a transparent background. this seems to work well until i scale down the MshInstance and move the camera close to it. when i do that the quality of the circle image becomes very poor. is there a way i can keep this general setup but have the circle display without quality loss no matter how small the MeshInstance is scaled down?

the circle shader:

shader_type spatial;
render_mode unshaded;
float circle(vec2 position, float radius, float feather){
	return smoothstep(radius, radius + feather, length(position - vec2(0.5)));
}
void fragment() {
	// Place fragment code here.
	ALBEDO = vec3(1,1,1);
	float bigcirc = circle(UV, .498, 0.0005);
	float smallcirc = circle(UV, .48, 0.0005);
	ALPHA = smallcirc-bigcirc;
}

a screenshot showing the unwanteds quality loss of the circle image on the right: