diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-03-04 14:59:27 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-03-04 14:59:27 +0000 |
| commit | b69f40815fb9302526858bbf699bc6942f8bbd3e (patch) | |
| tree | e4e8abd22e3e47cabd4914bd34b6e3df5de74c84 /src/render/OpenGL.cpp | |
| parent | f678789dfd4936f3b3420352f0d0b6fd5af9bdb5 (diff) | |
opengl: use a passthru shader for final wlr copy
Diffstat (limited to 'src/render/OpenGL.cpp')
| -rw-r--r-- | src/render/OpenGL.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 1d13037b..6a9baedf 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -195,6 +195,13 @@ void CHyprOpenGLImpl::initShaders() { m_RenderData.pCurrentMonData->m_shRGBA.applyTint = glGetUniformLocation(prog, "applyTint"); m_RenderData.pCurrentMonData->m_shRGBA.tint = glGetUniformLocation(prog, "tint"); + prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBAPASSTHRU); + m_RenderData.pCurrentMonData->m_shPASSTHRURGBA.program = prog; + m_RenderData.pCurrentMonData->m_shPASSTHRURGBA.proj = glGetUniformLocation(prog, "proj"); + m_RenderData.pCurrentMonData->m_shPASSTHRURGBA.tex = glGetUniformLocation(prog, "tex"); + m_RenderData.pCurrentMonData->m_shPASSTHRURGBA.texAttrib = glGetAttribLocation(prog, "texcoord"); + m_RenderData.pCurrentMonData->m_shPASSTHRURGBA.posAttrib = glGetAttribLocation(prog, "pos"); + prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBX); m_RenderData.pCurrentMonData->m_shRGBX.program = prog; m_RenderData.pCurrentMonData->m_shRGBX.tex = glGetUniformLocation(prog, "tex"); @@ -489,11 +496,16 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_b shader = &m_sFinalScreenShader; usingFinalShader = true; } else { - switch (tex.m_iType) { - case TEXTURE_RGBA: shader = &m_RenderData.pCurrentMonData->m_shRGBA; break; - case TEXTURE_RGBX: shader = &m_RenderData.pCurrentMonData->m_shRGBX; break; - case TEXTURE_EXTERNAL: shader = &m_RenderData.pCurrentMonData->m_shEXT; break; - default: RASSERT(false, "tex.m_iTarget unsupported!"); + if (m_bApplyFinalShader) { + shader = &m_RenderData.pCurrentMonData->m_shPASSTHRURGBA; + usingFinalShader = true; + } else { + switch (tex.m_iType) { + case TEXTURE_RGBA: shader = &m_RenderData.pCurrentMonData->m_shRGBA; break; + case TEXTURE_RGBX: shader = &m_RenderData.pCurrentMonData->m_shRGBX; break; + case TEXTURE_EXTERNAL: shader = &m_RenderData.pCurrentMonData->m_shEXT; break; + default: RASSERT(false, "tex.m_iTarget unsupported!"); + } } } |
