### Godot version

4.x

### System information

Any

### Issue description

Myself and @clayjohn looked into this before but were busy focusing on other things at the time so didn't investigate this further.

In the scene shader of the compatibility renderer, the forward and mobile implementation we have a variation of this check:
```
#ifdef USE_OPAQUE_PREPASS
	if (alpha < scene_data.opaque_prepass_threshold) {
		discard;
	}
#endif // USE_OPAQUE_PREPASS
```

As best as I can tell USE_OPAQUE_PREPASS is set by default for our StandardMaterial so this code is always included however for normal fully opaque materials we wouldn't want this code to be included especially when we're optimising for depth prepass or shadow rendering and want the fragment code completely filtered out. The scenario we were investigating had this introducing a needless texture read because it couldn't filter out this check. While it was inconclusive how much impact this had, theory states that including this when not needed has a detrimental impact.

I'm not entirely sure what the check is supposed to accomplish but it seems to only be applicable when rendering transparent objects during depth pre-pass or shadow rendering.

### Steps to reproduce

Create any scene that includes a `StandardMaterial` and uses an albedo texture. Examine the shader code sent to the depth pre-pass and shadow passes.

### Minimal reproduction project

n/a
if (depth_draw == DEPTH_DRAW_OPAQUE && !uses_alpha_clip) {
							depth_stencil.enable_depth_write = false; 
						}
					} else if (k == SHADER_VERSION_SHADOW_PASS || k == SHADER_VERSION_SHADOW_PASS_MULTIVIEW || k == SHADER_VERSION_SHADOW_PASS_DP) {
						
					} else if (k == SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL) {
						blend_state = RD::PipelineColorBlendState::create_disabled(5); 
					} else {
						pipelines[i][j][k].clear();
						continue; 
					}
				} else {
					if (k == SHADER_VERSION_COLOR_PASS || k == SHADER_VERSION_COLOR_PASS_MULTIVIEW || k == SHADER_VERSION_LIGHTMAP_COLOR_PASS || k == SHADER_VERSION_LIGHTMAP_COLOR_PASS_MULTIVIEW) {
						blend_state = blend_state_opaque;
					} else if (k == SHADER_VERSION_SHADOW_PASS || k == SHADER_VERSION_SHADOW_PASS_MULTIVIEW || k == SHADER_VERSION_SHADOW_PASS_DP) {
						
					} else if (k == SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL) {
						blend_state = RD::PipelineColorBlendState::create_disabled(5); 
					} else {
						
					}
				}
				RID shader_variant = shader_singleton->shader.version_get_shader(version, k);
				pipelines[i][j][k].setup(shader_variant, primitive_rd, raster_state, multisample_state, depth_stencil, blend_state, 0, singleton->default_specialization_constants);
			}
		}
	}
	valid = true;
}
bool SceneShaderForwardMobile::ShaderData::is_animated() const {