### Godot version

v4.0.beta14.official [28a24639c]

### System information

Windows 10, OpenGL

### Issue description

Vulkan and Mobile:
![Godot_v4 0-beta14_win64_kEcRNiMfNJ](https://user-images.githubusercontent.com/7782218/213967627-8e8755d9-2fe2-43b3-b197-f9f2840b7580.gif)

OpenGL:
![Godot_v4 0-beta14_win64_MQ233TZuPq](https://user-images.githubusercontent.com/7782218/213967651-ae463a6f-c867-4312-bdf1-525e1d7def01.gif)

At first I thought it was related to `set_buffer()`, but it turned out that `set_instance_*` also work incorrectly.
Probably the custom information is also set incorrectly, but I haven't checked it yet.

### Steps to reproduce

* Open MRP
* In the editor, select `MeshInstance3D` node and change the `Count` property
* -- or --
* Start the project and move the slider

You can also switch the renderer to Vulkan and compare.

### Minimal reproduction project

[set_buffer().zip](https://github.com/godotengine/godot/files/10476834/set_buffer.zip)

Transform2D inverse_transform = transform.affine_inverse();
					skeleton_shader.shader.version_set_uniform(SkeletonShaderGLES3::INVERSE_TRANSFORM_X, inverse_transform[0], skeleton_shader.shader_version, variant, specialization);
					skeleton_shader.shader.version_set_uniform(SkeletonShaderGLES3::INVERSE_TRANSFORM_Y, inverse_transform[1], skeleton_shader.shader_version, variant, specialization);
					skeleton_shader.shader.version_set_uniform(SkeletonShaderGLES3::INVERSE_TRANSFORM_OFFSET, inverse_transform[2], skeleton_shader.shader_version, variant, specialization);
					
					_compute_skeleton(mi, sk, i);
					can_use_skeleton = false;
				} else {
					
					glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, mi->surfaces[i].vertex_buffer);
					glBeginTransformFeedback(GL_POINTS);
					glDrawArrays(GL_POINTS, 0, mi->mesh->surfaces[i]->vertex_count);
					glEndTransformFeedback();
				}
				glBindVertexArray(0);
				glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
			}
			
			if (can_use_skeleton) {
				SkeletonShaderGLES3::ShaderVariant variant = SkeletonShaderGLES3::MODE_BASE_PASS;
				uint64_t specialization = 0;
				specialization |= array_is_2d ? SkeletonShaderGLES3::MODE_2D : 0;
				specialization |= SkeletonShaderGLES3::USE_SKELETON;
				specialization |= SkeletonShaderGLES3::FINAL_PASS;
				specialization |= use_8_weights ? SkeletonShaderGLES3::USE_EIGHT_WEIGHTS : 0;
				if (!array_is_2d) {
					if ((mi->surfaces[i].format_cache & (1 << RS::ARRAY_NORMAL))) {
						specialization |= SkeletonShaderGLES3::USE_NORMAL;
					}
					if ((mi->surfaces[i].format_cache & (1 << RS::ARRAY_TANGENT))) {