summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2023-12-28 22:28:58 +0100
committervaxerski <vaxry@vaxry.net>2023-12-28 22:29:04 +0100
commit4f3ee4c645c70a25072545ed8251412290e108f8 (patch)
tree9df280338649fff1fcf696e96ae362997adcc01a /src/render/Renderer.cpp
parent5f65946c84ed6ba3703e865d9a70f98cbb1ae479 (diff)
renderer: add decoration:blur:popups_ignorealpha
fixes #4282
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 5c827216..ddae866b 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -50,7 +50,8 @@ CHyprRenderer::CHyprRenderer() {
}
static void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
- static auto* const PBLURPOPUPS = &g_pConfigManager->getConfigValuePtr("decoration:blur:popups")->intValue;
+ static auto* const PBLURPOPUPS = &g_pConfigManager->getConfigValuePtr("decoration:blur:popups")->intValue;
+ static auto* const PBLURPOPUPSIGNOREALPHA = &g_pConfigManager->getConfigValuePtr("decoration:blur:popups_ignorealpha")->floatValue;
const auto TEXTURE = wlr_surface_get_texture(surface);
const auto RDATA = (SRenderData*)data;
@@ -136,9 +137,16 @@ static void renderSurface(struct wlr_surface* surface, int x, int y, void* data)
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true);
}
} else {
- if (RDATA->blur && RDATA->popup && *PBLURPOPUPS)
+ if (RDATA->blur && RDATA->popup && *PBLURPOPUPS) {
+
+ if (*PBLURPOPUPSIGNOREALPHA != 1.f) {
+ g_pHyprOpenGL->m_RenderData.discardMode |= DISCARD_ALPHA;
+ g_pHyprOpenGL->m_RenderData.discardOpacity = *PBLURPOPUPSIGNOREALPHA;
+ }
+
g_pHyprOpenGL->renderTextureWithBlur(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, surface, rounding, true);
- else
+ g_pHyprOpenGL->m_RenderData.discardMode &= ~DISCARD_ALPHA;
+ } else
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true);
}