diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-18 18:23:10 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-18 18:23:10 +0200 |
| commit | cbf0d366b4c8aef0048309a8f6577c736b4ac401 (patch) | |
| tree | 75fa85bcbd59d5167c925f6ca8c5c55d598d2853 /src/render | |
| parent | 7ae87a233c7c2c9c010f947f5d15f2968d03433b (diff) | |
fixed discardopaque with custom alpha
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/Renderer.cpp | 7 | ||||
| -rw-r--r-- | src/render/Shaders.hpp | 6 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 6bcda2b8..a764c38c 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -20,9 +20,9 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) { scaleBox(&windowBox, RDATA->output->scale); if (RDATA->surface && surface == RDATA->surface) - g_pHyprOpenGL->renderTextureWithBlur(TEXTURE, &windowBox, RDATA->fadeAlpha, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding")); + g_pHyprOpenGL->renderTextureWithBlur(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding")); else - g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding")); + g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding")); wlr_surface_send_frame_done(surface, RDATA->when); @@ -89,7 +89,8 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, SMonitor* pMonitor, timespec* renderdata.w = pWindow->m_vRealSize.x; renderdata.h = pWindow->m_vRealSize.y; renderdata.dontRound = pWindow->m_bIsFullscreen; - renderdata.fadeAlpha = pWindow->m_fAlpha * (pWindow == g_pCompositor->m_pLastWindow ? g_pConfigManager->getFloat("decoration:active_opacity") : g_pConfigManager->getFloat("decoration:inactive_opacity")); + renderdata.fadeAlpha = pWindow->m_fAlpha; + renderdata.alpha = pWindow == g_pCompositor->m_pLastWindow ? g_pConfigManager->getFloat("decoration:active_opacity") : g_pConfigManager->getFloat("decoration:inactive_opacity"); wlr_surface_for_each_surface(g_pXWaylandManager->getWindowSurface(pWindow), renderSurface, &renderdata); diff --git a/src/render/Shaders.hpp b/src/render/Shaders.hpp index 0263f22f..719c0c4a 100644 --- a/src/render/Shaders.hpp +++ b/src/render/Shaders.hpp @@ -53,7 +53,7 @@ void main() { vec4 pixColor = texture2D(tex, v_texcoord); - if (discardOpaque == 1 && pixColor[3] == 1.0) { + if (discardOpaque == 1 && pixColor[3] * alpha == 1.0) { discard; return; } @@ -111,7 +111,7 @@ uniform int discardOpaque; void main() { - if (discardOpaque == 1) { + if (discardOpaque == 1 && alpha == 1.0) { discard; return; } @@ -274,7 +274,7 @@ void main() { vec4 pixColor = texture2D(texture0, v_texcoord); - if (discardOpaque == 1 && pixColor[3] == 1.0) { + if (discardOpaque == 1 && pixColor[3] * alpha == 1.0) { discard; return; } |
