1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-21 14:57:09 +00:00

Fix use of discard in shaders

discard was being included in all shaders set to depth pass opaque, which is the majority of shaders

Instead it should only be used with alpha prepass materials
This commit is contained in:
Clay
2023-07-24 23:21:04 +02:00
parent f6187014ec
commit 7c812cd7e9
6 changed files with 27 additions and 17 deletions

View File

@@ -875,11 +875,15 @@ void fragment_shader(in SceneData scene_data) {
alpha = compute_alpha_antialiasing_edge(alpha, alpha_texture_coordinate, alpha_antialiasing_edge);
#endif // ALPHA_ANTIALIASING_EDGE_USED
#ifdef MODE_RENDER_DEPTH
#ifdef USE_OPAQUE_PREPASS
#ifndef ALPHA_SCISSOR_USED
if (alpha < scene_data.opaque_prepass_threshold) {
discard;
}
#endif // !ALPHA_SCISSOR_USED
#endif // USE_OPAQUE_PREPASS
#endif // MODE_RENDER_DEPTH
#endif // !USE_SHADOW_TO_OPACITY
@@ -2038,8 +2042,8 @@ void fragment_shader(in SceneData scene_data) {
if (alpha < alpha_scissor) {
discard;
}
#endif // ALPHA_SCISSOR_USED
#else
#ifdef MODE_RENDER_DEPTH
#ifdef USE_OPAQUE_PREPASS
if (alpha < scene_data.opaque_prepass_threshold) {
@@ -2047,6 +2051,8 @@ void fragment_shader(in SceneData scene_data) {
}
#endif // USE_OPAQUE_PREPASS
#endif // MODE_RENDER_DEPTH
#endif // ALPHA_SCISSOR_USED
#endif // USE_SHADOW_TO_OPACITY