Skip to content

Commit 674f1da

Browse files
committed
Merge pull request #109994 from clayjohn/mali-glow-bug
Use vertex shader workaround for Mali GXX GPUs for glow shader
2 parents 21fbf03 + 4b84207 commit 674f1da

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

servers/rendering/renderer_rd/shaders/effects/blur_raster.glsl

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,22 @@ layout(location = 0) out vec2 uv_interp;
1111
/* clang-format on */
1212

1313
void main() {
14-
vec2 base_arr[3] = vec2[](vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0));
15-
gl_Position = vec4(base_arr[gl_VertexIndex], 0.0, 1.0);
16-
uv_interp = clamp(gl_Position.xy, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
14+
// old code, ARM driver bug on Mali-GXXx GPUs and Vulkan API 1.3.xxx
15+
// https://github.com/godotengine/godot/pull/92817#issuecomment-2168625982
16+
//vec2 base_arr[3] = vec2[](vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0));
17+
//gl_Position = vec4(base_arr[gl_VertexIndex], 0.0, 1.0);
18+
//uv_interp = clamp(gl_Position.xy, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
19+
20+
vec2 vertex_base;
21+
if (gl_VertexIndex == 0) {
22+
vertex_base = vec2(-1.0, -1.0);
23+
} else if (gl_VertexIndex == 1) {
24+
vertex_base = vec2(-1.0, 3.0);
25+
} else {
26+
vertex_base = vec2(3.0, -1.0);
27+
}
28+
gl_Position = vec4(vertex_base, 0.0, 1.0);
29+
uv_interp = clamp(vertex_base, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
1730
}
1831

1932
/* clang-format off */

0 commit comments

Comments
 (0)