### Godot version

4.0 beta 17

### System information

Windows 10

### Issue description

Setting the color attribute in ParticleProcessMaterial for GPUParticles2D does not work with compatibility renderer
(works with forward+)

### Steps to reproduce

Set renderer to compatibility
Create a GPUParticles2D
Add ParticleProcessMaterial and set Color attribute (creating a particle shader and setting the `COLOR` is the same)


### Minimal reproduction project

[Particle2DColor.zip](https://github.com/godotengine/godot/files/10678236/Particle2DColor.zip)

instance_color_offset = mesh_storage->multimesh_get_color_offset(multimesh);
				instance_uses_color = mesh_storage->multimesh_uses_colors(multimesh);
				instance_uses_custom_data = mesh_storage->multimesh_uses_custom_data(multimesh);
			} else if (state.canvas_instance_batches[p_index].command_type == Item::Command::TYPE_PARTICLES) {
				const Item::CommandParticles *pt = static_cast<const Item::CommandParticles *>(state.canvas_instance_batches[p_index].command);
				RID particles = pt->particles;
				mesh = particles_storage->particles_get_draw_pass_mesh(particles, 0);
				ERR_BREAK(particles_storage->particles_get_mode(particles) != RS::PARTICLES_MODE_2D);
				particles_storage->particles_request_process(particles);
				if (particles_storage->particles_is_inactive(particles)) {
					break;
				}
				RenderingServerDefault::redraw_request(); 
				int dpc = particles_storage->particles_get_draw_passes(particles);
				if (dpc == 0) {
					break; 
				}
				instance_count = particles_storage->particles_get_amount(particles);
				instance_buffer = particles_storage->particles_get_gl_buffer(particles);
				instance_stride = 12; 
				instance_color_offset = 8; 
				instance_uses_color = true;
				instance_uses_custom_data = true;
			}
			ERR_FAIL_COND(mesh.is_null());
			uint32_t surf_count = mesh_storage->mesh_get_surface_count(mesh);
			for (uint32_t j = 0; j < surf_count; j++) {
				void *surface = mesh_storage->mesh_get_surface(mesh, j);
				RS::PrimitiveType primitive = mesh_storage->mesh_surface_get_primitive(surface);
				ERR_CONTINUE(primitive < 0 || primitive >= RS::PRIMITIVE_MAX);