### Godot version

v4.0.beta.custom_build [291add339]

### System information

Windows 10, Forward+, NVIDIA GeForce GTX 1050 Ti (31.0.15.1694)

### Issue description

I was testing if #69669 was solved by #70418, which it seemed to be. However, I got a wall of errors at the same time.

In the minimal reproduction project below in this Issue, I get errors when instantiating many of the same `GPUParticle2D` scene. In my earlier Godot 4 build (v4.0.beta.custom_build [2a04b18d3]) I did not get any errors (but got the occasional artifact as was my original issue in #69669).

I suspect the PR #70418 solved the artifact, but possibly introduced new bugs. However, I have not specifically built Godot with, and without the PR in question.

I believe this is the start and end of the errors - after which they repeat.
![wall_of_errors](https://user-images.githubusercontent.com/10490534/209046500-9813150c-d6e4-4a11-8e62-79d370d07009.png)

### Steps to reproduce

- Create a GPUParticle2D scene
- Instantiate the scene several times
- Observe the debugger get flooded with errors

### Minimal reproduction project

This project only instantiates default GPUParticle2D scenes with a default particle material.
[GPU_Particle_Creation_Bug.zip](https://github.com/godotengine/godot/files/10283416/GPU_Particle_Creation_Bug.zip)

u.binding = 9;
		u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
		RID texture;
		if (rb.is_valid() && rb->has_texture(RB_SCOPE_BUFFERS, RB_TEX_BACK_DEPTH)) {
			texture = rb->get_texture(RB_SCOPE_BUFFERS, RB_TEX_BACK_DEPTH);
		} else {
			texture = texture_storage->texture_rd_get_default(RendererRD::TextureStorage::DEFAULT_RD_TEXTURE_DEPTH);
		}
		u.append_id(texture);
		uniforms.push_back(u);
	}
	{
		RD::Uniform u;
		u.binding = 10;
		u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
		RID bbt = rb_data.is_valid() ? rb->get_back_buffer_texture() : RID();
		RID texture = bbt.is_valid() ? bbt : texture_storage->texture_rd_get_default(RendererRD::TextureStorage::DEFAULT_RD_TEXTURE_BLACK);
		u.append_id(texture);
		uniforms.push_back(u);
	}
	if (p_index >= (int)render_pass_uniform_sets.size()) {
		render_pass_uniform_sets.resize(p_index + 1);
	}
	if (render_pass_uniform_sets[p_index].is_valid() && RD::get_singleton()->uniform_set_is_valid(render_pass_uniform_sets[p_index])) {
		RD::get_singleton()->free(render_pass_uniform_sets[p_index]);
	}
	render_pass_uniform_sets[p_index] = RD::get_singleton()->uniform_set_create(uniforms, scene_shader.default_shader_rd, RENDER_PASS_UNIFORM_SET);
	return render_pass_uniform_sets[p_index];
}
void RenderForwardMobile::_setup_lightmaps(const RenderDataRD *p_render_data, const PagedArray<RID> &p_lightmaps, const Transform3D &p_cam_transform) {