### Godot version

4.0.beta10.official [d0398f62f]

### System information

Windows 10, Vulkan, NVIDIA GeForce RTX 2060m (31.0.15.2698)

### Issue description

I'm getting some kind of clustering/blocky artifact when using spotlights, with no fog or any fancy rendering stuff whatsoever.
I've looked through a bunch of similar issues, but the only ones I could find were related to volumetric fog or other environment effects that I am not using.
Not sure if I'm just missing something, but I think I've played with every option in the spotlight and every option in a WorldEnvironment and nothing makes it go away.

The only lead I have is that the intensity of the artifact seems to be affected by the spot angle. It cycles in a sawtooth pattern every ~0.07 degrees.

![image](https://user-images.githubusercontent.com/13819558/209914720-77a637ea-8cc7-4cff-8216-363f9150885a.png)

Lmk if you need more info or need me to try anything.

### Steps to reproduce

1. New Project (Forward+)
2. Put down some MeshInstance3Ds as a backdrop
3. Put a SpotLight3D
4. Raise spotlight intensity, lower spot angle, and increase range to see it better
5. Slowly increase spot angle to see cycling effect

### Minimal reproduction project

[testspotlight.zip](https://github.com/godotengine/godot/files/10318069/testspotlight.zip)

ERR_FAIL_COND(p_max_elements == 0);
	ERR_FAIL_COND(p_screen_size.x < 1);
	ERR_FAIL_COND(p_screen_size.y < 1);
	_clear();
	screen_size = p_screen_size;
	cluster_screen_size.width = (p_screen_size.width - 1) / cluster_size + 1;
	cluster_screen_size.height = (p_screen_size.height - 1) / cluster_size + 1;
	max_elements_by_type = p_max_elements;
	if (max_elements_by_type % 32) { 
		max_elements_by_type += 32 - (max_elements_by_type % 32);
	}
	cluster_buffer_size = cluster_screen_size.x * cluster_screen_size.y * (max_elements_by_type / 32 + 32) * ELEMENT_TYPE_MAX * 4;
	render_element_max = max_elements_by_type * ELEMENT_TYPE_MAX;
	uint32_t element_tag_bits_size = render_element_max / 32;
	uint32_t element_tag_depth_bits_size = render_element_max;
	cluster_render_buffer_size = cluster_screen_size.x * cluster_screen_size.y * (element_tag_bits_size + element_tag_depth_bits_size) * 4; 
	cluster_render_buffer = RD::get_singleton()->storage_buffer_create(cluster_render_buffer_size);
	cluster_buffer = RD::get_singleton()->storage_buffer_create(cluster_buffer_size);
	render_elements = static_cast<RenderElementData *>(memalloc(sizeof(RenderElementData *) * render_element_max));
	render_element_count = 0;
	element_buffer = RD::get_singleton()->storage_buffer_create(sizeof(RenderElementData) * render_element_max);
	uint32_t div_value = 1 << divisor;
	if (use_msaa) {