diff options
Diffstat (limited to 'servers/rendering/renderer_rd/shaders/effects/tonemap.glsl')
-rw-r--r-- | servers/rendering/renderer_rd/shaders/effects/tonemap.glsl | 19 |
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] |