summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'servers/rendering/renderer_rd/shaders/effects/tonemap.glsl')
-rw-r--r--servers/rendering/renderer_rd/shaders/effects/tonemap.glsl19
1 files changed, 16 insertions, 3 deletions
diff --git a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
index 38eec2b61a..841f02f673 100644
--- a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
+++ b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
@@ -13,9 +13,22 @@
layout(location = 0) out vec2 uv_interp;
void main() {
- vec2 base_arr[3] = vec2[](vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0));
- gl_Position = vec4(base_arr[gl_VertexIndex], 0.0, 1.0);
- uv_interp = clamp(gl_Position.xy, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
+ // old code, ARM driver bug on Mali-GXXx GPUs and Vulkan API 1.3.xxx
+ // https://github.com/godotengine/godot/pull/92817#issuecomment-2168625982
+ //vec2 base_arr[3] = vec2[](vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0));
+ //gl_Position = vec4(base_arr[gl_VertexIndex], 0.0, 1.0);
+ //uv_interp = clamp(gl_Position.xy, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
+
+ vec2 vertex_base;
+ if (gl_VertexIndex == 0) {
+ vertex_base = vec2(-1.0, -1.0);
+ } else if (gl_VertexIndex == 1) {
+ vertex_base = vec2(-1.0, 3.0);
+ } else {
+ vertex_base = vec2(3.0, -1.0);
+ }
+ gl_Position = vec4(vertex_base, 0.0, 1.0);
+ uv_interp = clamp(vertex_base, vec2(0.0, 0.0), vec2(1.0, 1.0)) * 2.0; // saturate(x) * 2.0
}
#[fragment]