summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2023-10-21 14:15:48 +0100
committerVaxry <vaxry@vaxry.net>2023-10-21 14:15:56 +0100
commit92311d260ab25c11adab05678663bdccaff11fa6 (patch)
treed632d8998a979cb8582eede8dcb0d6f6002f19bd /src/render/Renderer.cpp
parentaf72404259f7a39069d1449bedbc49b3e6ae4fbc (diff)
renderer: add transformers
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index c153b855..255bdf33 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -406,6 +406,12 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
// render window decorations first, if not fullscreen full
if (mode == RENDER_PASS_ALL || mode == RENDER_PASS_MAIN) {
+
+ const bool TRANSFORMERSPRESENT = !pWindow->m_vTransformers.empty();
+
+ if (TRANSFORMERSPRESENT)
+ g_pHyprOpenGL->bindOffMain();
+
if (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL)
for (auto& wd : pWindow->m_dWindowDecorations)
wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha, offset);
@@ -443,6 +449,17 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
g_pHyprOpenGL->renderBorder(&windowBox, g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColorPrevious, renderdata.rounding, borderSize, a2);
}
}
+
+ if (TRANSFORMERSPRESENT) {
+
+ CFramebuffer* last = g_pHyprOpenGL->m_RenderData.currentFB;
+ for (auto& t : pWindow->m_vTransformers) {
+ last = t->transform(last);
+ }
+
+ g_pHyprOpenGL->bindBackOnMain();
+ g_pHyprOpenGL->renderOffToMain(last);
+ }
}
if (mode == RENDER_PASS_ALL || mode == RENDER_PASS_POPUP) {