### Godot version

4.0beta10 (4.0beta11)

### System information

Windows 11, Vulkan API 1.3.224 - Vulkan NVIDIA GeForce RTX 3080 Ti

### Issue description

GPUParticle2D seems to jitter since Godot Beta 10 (I have the same problem Godot Beta 11).

Here is what I expect (screen capture of the project in Godot Beta 9):
![Animation](https://user-images.githubusercontent.com/6784639/211841608-c7b268ab-98c6-4c2c-9e42-b7730e44ea20.gif)

Here is what I got in Godot 4.0beta10 and Godot 4.0beta11:
![Animation2](https://user-images.githubusercontent.com/6784639/211841773-bdfc7c45-c262-4be9-b5b7-18856ddcb6f3.gif)


### Steps to reproduce

1. Make 2DScene
2. Add GPUParticle2D
3. Set the Process Material of this GPUParticle2D to a new ParticleProcessMaterial
4. Move the particle around (or make a animationPlayer to move the Particle)

### Minimal reproduction project

[TestProject.zip](https://github.com/godotengine/godot/files/10393668/TestProject.zip)

if (particles->trail_bind_pose_buffer.is_valid()) {
						u.append_id(particles->trail_bind_pose_buffer);
					} else {
						u.append_id(MeshStorage::get_singleton()->get_default_rd_storage_buffer());
					}
					uniforms.push_back(u);
				}
				particles->trail_bind_pose_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, particles_shader.copy_shader.version_get_shader(particles_shader.copy_shader_version, 0), 2);
			}
			if (particles->trail_bind_pose_buffer.is_valid() && particles->trail_bind_poses_dirty) {
				if (particles_shader.pose_update_buffer.size() < uint32_t(particles->trail_bind_poses.size()) * 16) {
					particles_shader.pose_update_buffer.resize(particles->trail_bind_poses.size() * 16);
				}
				for (int i = 0; i < particles->trail_bind_poses.size(); i++) {
					RendererRD::MaterialStorage::store_transform(particles->trail_bind_poses[i], &particles_shader.pose_update_buffer[i * 16]);
				}
				RD::get_singleton()->buffer_update(particles->trail_bind_pose_buffer, 0, particles->trail_bind_poses.size() * 16 * sizeof(float), particles_shader.pose_update_buffer.ptr());
			}
		}
		bool zero_time_scale = Engine::get_singleton()->get_time_scale() <= 0.0;
		bool updated = false;
		if (particles->clear && particles->pre_process_time > 0.0) {
			double frame_time;
			if (fixed_fps > 0) {
				frame_time = 1.0 / fixed_fps;
			} else {
				frame_time = 1.0 / 30.0;
			}
			double todo = particles->pre_process_time;
			while (todo >= 0) {