From 7587cadd0a4e94c9ba42c00307854052798cf9b2 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Mon, 18 Mar 2024 04:15:04 +0000 Subject: [PATCH] renderer: add support for gles3.2 screen shaders --- src/render/OpenGL.cpp | 2 +- src/render/shaders/Textures.hpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 30803885..f79a10d1 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -547,7 +547,7 @@ void CHyprOpenGLImpl::applyScreenShader(const std::string& path) { std::string fragmentShader((std::istreambuf_iterator(infile)), (std::istreambuf_iterator())); - m_sFinalScreenShader.program = createProgram(TEXVERTSRC, fragmentShader, true); + m_sFinalScreenShader.program = createProgram(fragmentShader.starts_with("#version 320 es") ? TEXVERTSRC320 : TEXVERTSRC, fragmentShader, true); if (!m_sFinalScreenShader.program) { g_pConfigManager->addParseError("Screen shader parser: Screen shader parse failed"); diff --git a/src/render/shaders/Textures.hpp b/src/render/shaders/Textures.hpp index 5e346c1e..59c7304f 100644 --- a/src/render/shaders/Textures.hpp +++ b/src/render/shaders/Textures.hpp @@ -80,6 +80,17 @@ void main() { v_texcoord = texcoord; })#"; +inline const std::string TEXVERTSRC320 = R"#(#version 320 es +uniform mat3 proj; +in vec2 pos; +in vec2 texcoord; +out vec2 v_texcoord; + +void main() { + gl_Position = vec4(proj * vec3(pos, 1.0), 1.0); + v_texcoord = texcoord; +})#"; + inline const std::string TEXFRAGSRCRGBA = R"#( precision highp float; varying vec2 v_texcoord; // is in 0-1