@@ -11,9 +11,22 @@ layout(location = 0) out vec2 uv_interp;
1111/* clang-format on */
1212
1313void 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