### Godot version

4.0 beta 13

### System information

Windows 10 960m

### Issue description

I have noticed that more 3 omni lights will render meshes incorrectly. Initially I thought it might have been a light limit over 8 issue, but increasing it to 16 made no difference.

This is an example of the issue:

![omni_8_opengl](https://user-images.githubusercontent.com/7741669/213618701-1f67202e-8e1f-4715-a1b7-c9900292d025.jpg)

This has 8 overlapping omni lights, but it seems like any more than 3 has this kind of incorrect lighting issue. If you toggle on and off random selections of lights in the sample file, there can be seen that some combinations work and some don't.

@clayjohn I am guessing that this is related to the light fix you did for Vulkan recently? I don't usually use opengl in 4.0 but I was trying to use the light limit option to increase it for the vulkan mobile render. Is the opengl light limit render option meant to also work for vulkan mobile?

### Steps to reproduce

- add several plane meshes that butt up against each other
- add 3 or more omni lights and move them around to see the lighting overlap

### Minimal reproduction project

[omni_opengl.zip](https://github.com/godotengine/godot/files/10463259/omni_opengl.zip)

render_data.view_count = p_camera_data->view_count;
		for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
			render_data.view_eye_offset[v] = p_camera_data->view_offset[v].origin;
			render_data.view_projection[v] = p_camera_data->view_projection[v];
		}
		render_data.z_near = p_camera_data->main_projection.get_z_near();
		render_data.z_far = p_camera_data->main_projection.get_z_far();
		render_data.instances = &p_instances;
		render_data.lights = &p_lights;
		render_data.reflection_probes = &p_reflection_probes;
		render_data.environment = p_environment;
		render_data.camera_attributes = p_camera_attributes;
		render_data.reflection_probe = p_reflection_probe;
		render_data.reflection_probe_pass = p_reflection_probe_pass;
		
		render_data.lod_distance_multiplier = p_camera_data->main_projection.get_lod_multiplier();
		if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_DISABLE_LOD) {
			render_data.screen_mesh_lod_threshold = 0.0;
		} else {
			render_data.screen_mesh_lod_threshold = p_screen_mesh_lod_threshold;
		}
		render_data.render_info = r_render_info;
	}
	PagedArray<RID> empty;
	if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_UNSHADED) {
		render_data.lights = &empty;
		render_data.reflection_probes = &empty;
	}
	bool reverse_cull = render_data.cam_transform.basis.determinant() < 0;