You've already forked godot
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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user