### Godot version

v4.0.beta16.official [518b9e580]

### System information

Pop!_OS 22.04 (Ubuntu), Compatibility, HAWAII (, LLVM 14.0.0, DRM 2.50, 6.0.12-76060006-generic)

### Issue description

A 3D object with a material with `blend_mode` set to `subtract` and `transparency` set to `alpha` causes the entire editor to render completely black when the renderer is set to `compatibility`.

The editor remains completely black while the object with the material is selected. Selecting a different object fixes it, but moving the editor camera can sometimes cause the editor to return to black again.

- The `forward+` and `mobile` rendering modes work properly.
- The editor seems remains to remain fully functional apart from the rendering.
- This issue does not occur in the running game.
- I was also able to reproduce the error in 2D once, but when I tried it a second time it worked properly without the rendering error.

### Steps to reproduce

In the provided minimal project is a cube with a material added to its `material_override` property. Setting `blend_mode` to `alpha` in the material causes the entire editor to render black.

### Minimal reproduction project

[MinimalProject.zip](https://github.com/godotengine/godot/files/10552568/MinimalProject.zip)

glDisable(GL_SCISSOR_TEST);
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glClear(GL_COLOR_BUFFER_BIT);
	CanvasOcclusionShaderGLES3::ShaderVariant variant = CanvasOcclusionShaderGLES3::MODE_SDF;
	bool success = shadow_render.shader.version_bind_shader(shadow_render.shader_version, variant);
	if (!success) {
		return;
	}
	shadow_render.shader.version_set_uniform(CanvasOcclusionShaderGLES3::PROJECTION, Projection(), shadow_render.shader_version, variant);
	shadow_render.shader.version_set_uniform(CanvasOcclusionShaderGLES3::DIRECTION, 0.0, 0.0, shadow_render.shader_version, variant);
	shadow_render.shader.version_set_uniform(CanvasOcclusionShaderGLES3::Z_FAR, 0.0, shadow_render.shader_version, variant);
	LightOccluderInstance *instance = p_occluders;
	while (instance) {
		OccluderPolygon *oc = occluder_polygon_owner.get_or_null(instance->occluder);
		if (!oc || oc->sdf_vertex_array == 0) {
			instance = instance->next;
			continue;
		}
		Transform2D modelview = to_clip * instance->xform_cache;
		shadow_render.shader.version_set_uniform(CanvasOcclusionShaderGLES3::MODELVIEW1, modelview.columns[0][0], modelview.columns[1][0], 0, modelview.columns[2][0], shadow_render.shader_version, variant);
		shadow_render.shader.version_set_uniform(CanvasOcclusionShaderGLES3::MODELVIEW2, modelview.columns[0][1], modelview.columns[1][1], 0, modelview.columns[2][1], shadow_render.shader_version, variant);
		glBindVertexArray(oc->sdf_vertex_array);
		glDrawElements(oc->sdf_is_lines ? GL_LINES : GL_TRIANGLES, oc->sdf_index_count, GL_UNSIGNED_INT, 0);
		instance = instance->next;
	}
	texture_storage->render_target_sdf_process(p_render_target); 
	glBindVertexArray(0);
	glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
RID RasterizerCanvasGLES3::occluder_polygon_create() {