diff options
author | Alexander Hartmann <alex.hart.278@gmail.com> | 2024-06-05 22:57:24 +0200 |
---|---|---|
committer | Alex <alex.hart.278@gmail.com> | 2024-07-20 22:01:35 +0200 |
commit | 78ede4f8b61733b36774ed51e0f237f52cd3eb4c (patch) | |
tree | 1fb0699d8cf95607421f0095b1dfc02a2dbc08d7 | |
parent | 96a386f3c424af96d950ee5098b4b0e4907c9508 (diff) | |
download | redot-engine-78ede4f8b61733b36774ed51e0f237f52cd3eb4c.tar.gz |
Fix glsl shader for Android Mali-GXXx GPUs and Vulkan API 1.3.xxx
-rw-r--r-- | servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl | 19 | ||||
-rw-r--r-- | servers/rendering/renderer_rd/shaders/effects/tonemap.glsl | 19 |
2 files changed, 32 insertions, 6 deletions
diff --git a/servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl b/servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl index 2010b58474..f2b93059b0 100644 --- a/servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl +++ b/servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl @@ -11,9 +11,22 @@ layout(location = 0) out vec2 uv_interp; /* clang-format on */ 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 } /* clang-format off */ 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] |