mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-04 14:11:59 -07:00
@@ -196,11 +196,11 @@ void CScreencopyFrame::renderMon() {
|
|||||||
CBox monbox = CBox{0, 0, m_monitor->m_pixelSize.x, m_monitor->m_pixelSize.y}
|
CBox monbox = CBox{0, 0, m_monitor->m_pixelSize.x, m_monitor->m_pixelSize.y}
|
||||||
.translate({-m_box.x, -m_box.y}) // vvvv kinda ass-backwards but that's how I designed the renderer... sigh.
|
.translate({-m_box.x, -m_box.y}) // vvvv kinda ass-backwards but that's how I designed the renderer... sigh.
|
||||||
.transform(wlTransformToHyprutils(invertTransform(m_monitor->m_transform)), m_monitor->m_pixelSize.x, m_monitor->m_pixelSize.y);
|
.transform(wlTransformToHyprutils(invertTransform(m_monitor->m_transform)), m_monitor->m_pixelSize.x, m_monitor->m_pixelSize.y);
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(true);
|
g_pHyprOpenGL->pushMonitorTransformEnabled(true);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(false);
|
g_pHyprOpenGL->setRenderModifEnabled(false);
|
||||||
g_pHyprOpenGL->renderTexture(TEXTURE, monbox, 1);
|
g_pHyprOpenGL->renderTexture(TEXTURE, monbox, 1);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(true);
|
g_pHyprOpenGL->setRenderModifEnabled(true);
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(false);
|
g_pHyprOpenGL->popMonitorTransformEnabled();
|
||||||
|
|
||||||
for (auto const& w : g_pCompositor->m_windows) {
|
for (auto const& w : g_pCompositor->m_windows) {
|
||||||
if (!w->m_windowData.noScreenShare.valueOrDefault())
|
if (!w->m_windowData.noScreenShare.valueOrDefault())
|
||||||
|
@@ -361,6 +361,8 @@ CHyprOpenGLImpl::CHyprOpenGLImpl() : m_drmFD(g_pCompositor->m_drmFD) {
|
|||||||
RASSERT(eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT), "Couldn't unset current EGL!");
|
RASSERT(eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT), "Couldn't unset current EGL!");
|
||||||
|
|
||||||
m_globalTimer.reset();
|
m_globalTimer.reset();
|
||||||
|
|
||||||
|
pushMonitorTransformEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CHyprOpenGLImpl::~CHyprOpenGLImpl() {
|
CHyprOpenGLImpl::~CHyprOpenGLImpl() {
|
||||||
@@ -700,6 +702,8 @@ void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP
|
|||||||
m_renderData.outFB = FBO;
|
m_renderData.outFB = FBO;
|
||||||
|
|
||||||
m_renderData.simplePass = true;
|
m_renderData.simplePass = true;
|
||||||
|
|
||||||
|
pushMonitorTransformEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFramebuffer* fb, std::optional<CRegion> finalDamage) {
|
void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFramebuffer* fb, std::optional<CRegion> finalDamage) {
|
||||||
@@ -769,6 +773,8 @@ void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFrameb
|
|||||||
|
|
||||||
m_renderData.mainFB = m_renderData.currentFB;
|
m_renderData.mainFB = m_renderData.currentFB;
|
||||||
m_renderData.outFB = fb ? fb : g_pHyprRenderer->getCurrentRBO()->getFB();
|
m_renderData.outFB = fb ? fb : g_pHyprRenderer->getCurrentRBO()->getFB();
|
||||||
|
|
||||||
|
pushMonitorTransformEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprOpenGLImpl::end() {
|
void CHyprOpenGLImpl::end() {
|
||||||
@@ -779,7 +785,7 @@ void CHyprOpenGLImpl::end() {
|
|||||||
// end the render, copy the data to the main framebuffer
|
// end the render, copy the data to the main framebuffer
|
||||||
if (m_offloadedFramebuffer) {
|
if (m_offloadedFramebuffer) {
|
||||||
m_renderData.damage = m_renderData.finalDamage;
|
m_renderData.damage = m_renderData.finalDamage;
|
||||||
m_endFrame = true;
|
pushMonitorTransformEnabled(true);
|
||||||
|
|
||||||
CBox monbox = {0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y};
|
CBox monbox = {0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y};
|
||||||
|
|
||||||
@@ -821,7 +827,7 @@ void CHyprOpenGLImpl::end() {
|
|||||||
|
|
||||||
m_renderData.useNearestNeighbor = false;
|
m_renderData.useNearestNeighbor = false;
|
||||||
m_applyFinalShader = false;
|
m_applyFinalShader = false;
|
||||||
m_endFrame = false;
|
popMonitorTransformEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset our data
|
// reset our data
|
||||||
@@ -832,6 +838,7 @@ void CHyprOpenGLImpl::end() {
|
|||||||
m_renderData.currentFB = nullptr;
|
m_renderData.currentFB = nullptr;
|
||||||
m_renderData.mainFB = nullptr;
|
m_renderData.mainFB = nullptr;
|
||||||
m_renderData.outFB = nullptr;
|
m_renderData.outFB = nullptr;
|
||||||
|
popMonitorTransformEnabled();
|
||||||
|
|
||||||
// if we dropped to offMain, release it now.
|
// if we dropped to offMain, release it now.
|
||||||
// if there is a plugin constantly using it, this might be a bit slow,
|
// if there is a plugin constantly using it, this might be a bit slow,
|
||||||
@@ -1334,12 +1341,12 @@ void CHyprOpenGLImpl::renderRectWithBlur(const CBox& box, const CHyprColor& col,
|
|||||||
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
||||||
|
|
||||||
scissor(box);
|
scissor(box);
|
||||||
CBox MONITORBOX = {0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y};
|
CBox MONITORBOX = {0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y};
|
||||||
m_endFrame = true; // fix transformed
|
pushMonitorTransformEnabled(true);
|
||||||
const auto SAVEDRENDERMODIF = m_renderData.renderModif;
|
const auto SAVEDRENDERMODIF = m_renderData.renderModif;
|
||||||
m_renderData.renderModif = {}; // fix shit
|
m_renderData.renderModif = {}; // fix shit
|
||||||
renderTextureInternalWithDamage(POUTFB->getTexture(), MONITORBOX, blurA, damage, 0, 2.0f, false, false, false);
|
renderTextureInternalWithDamage(POUTFB->getTexture(), MONITORBOX, blurA, damage, 0, 2.0f, false, false, false);
|
||||||
m_endFrame = false;
|
popMonitorTransformEnabled();
|
||||||
m_renderData.renderModif = SAVEDRENDERMODIF;
|
m_renderData.renderModif = SAVEDRENDERMODIF;
|
||||||
|
|
||||||
glClearStencil(0);
|
glClearStencil(0);
|
||||||
@@ -1362,7 +1369,7 @@ void CHyprOpenGLImpl::renderRectWithDamage(const CBox& box, const CHyprColor& co
|
|||||||
m_renderData.renderModif.applyToBox(newBox);
|
m_renderData.renderModif.applyToBox(newBox);
|
||||||
|
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
||||||
newBox, wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
newBox, wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
useProgram(m_shaders->m_shQUAD.program);
|
useProgram(m_shaders->m_shQUAD.program);
|
||||||
@@ -1498,7 +1505,7 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(SP<CTexture> tex, const CB
|
|||||||
// get the needed transform for this texture
|
// get the needed transform for this texture
|
||||||
const bool TRANSFORMS_MATCH = wlTransformToHyprutils(m_renderData.pMonitor->m_transform) == tex->m_transform; // FIXME: combine them properly!!!
|
const bool TRANSFORMS_MATCH = wlTransformToHyprutils(m_renderData.pMonitor->m_transform) == tex->m_transform; // FIXME: combine them properly!!!
|
||||||
eTransform TRANSFORM = HYPRUTILS_TRANSFORM_NORMAL;
|
eTransform TRANSFORM = HYPRUTILS_TRANSFORM_NORMAL;
|
||||||
if (m_endFrame || TRANSFORMS_MATCH)
|
if (m_monitorTransformEnabled || TRANSFORMS_MATCH)
|
||||||
TRANSFORM = wlTransformToHyprutils(invertTransform(m_renderData.pMonitor->m_transform));
|
TRANSFORM = wlTransformToHyprutils(invertTransform(m_renderData.pMonitor->m_transform));
|
||||||
|
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
||||||
@@ -1689,7 +1696,7 @@ void CHyprOpenGLImpl::renderTexturePrimitive(SP<CTexture> tex, const CBox& box)
|
|||||||
m_renderData.renderModif.applyToBox(newBox);
|
m_renderData.renderModif.applyToBox(newBox);
|
||||||
|
|
||||||
// get transform
|
// get transform
|
||||||
const auto TRANSFORM = wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform));
|
const auto TRANSFORM = wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform));
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
@@ -1727,7 +1734,7 @@ void CHyprOpenGLImpl::renderTextureMatte(SP<CTexture> tex, const CBox& box, CFra
|
|||||||
m_renderData.renderModif.applyToBox(newBox);
|
m_renderData.renderModif.applyToBox(newBox);
|
||||||
|
|
||||||
// get transform
|
// get transform
|
||||||
const auto TRANSFORM = wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform));
|
const auto TRANSFORM = wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform));
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(newBox, TRANSFORM, newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
@@ -2074,10 +2081,10 @@ void CHyprOpenGLImpl::preBlurForCurrentMonitor() {
|
|||||||
|
|
||||||
clear(CHyprColor(0, 0, 0, 0));
|
clear(CHyprColor(0, 0, 0, 0));
|
||||||
|
|
||||||
m_endFrame = true; // fix transformed
|
pushMonitorTransformEnabled(true);
|
||||||
renderTextureInternalWithDamage(POUTFB->getTexture(), CBox{0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y}, 1, fakeDamage, 0,
|
renderTextureInternalWithDamage(POUTFB->getTexture(), CBox{0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y}, 1, fakeDamage, 0,
|
||||||
2.0f, false, true, false);
|
2.0f, false, true, false);
|
||||||
m_endFrame = false;
|
popMonitorTransformEnabled();
|
||||||
|
|
||||||
m_renderData.currentFB->bind();
|
m_renderData.currentFB->bind();
|
||||||
|
|
||||||
@@ -2212,13 +2219,13 @@ void CHyprOpenGLImpl::renderTextureWithBlur(SP<CTexture> tex, const CBox& box, f
|
|||||||
m_renderData.primarySurfaceUVBottomRight = (monitorSpaceBox.pos() + monitorSpaceBox.size()) / m_renderData.pMonitor->m_transformedSize;
|
m_renderData.primarySurfaceUVBottomRight = (monitorSpaceBox.pos() + monitorSpaceBox.size()) / m_renderData.pMonitor->m_transformedSize;
|
||||||
|
|
||||||
static auto PBLURIGNOREOPACITY = CConfigValue<Hyprlang::INT>("decoration:blur:ignore_opacity");
|
static auto PBLURIGNOREOPACITY = CConfigValue<Hyprlang::INT>("decoration:blur:ignore_opacity");
|
||||||
setMonitorTransformEnabled(true);
|
pushMonitorTransformEnabled(true);
|
||||||
if (!USENEWOPTIMIZE)
|
if (!USENEWOPTIMIZE)
|
||||||
setRenderModifEnabled(false);
|
setRenderModifEnabled(false);
|
||||||
renderTextureInternalWithDamage(POUTFB->getTexture(), box, (*PBLURIGNOREOPACITY ? blurA : a * blurA) * overallA, texDamage, round, roundingPower, false, false, true);
|
renderTextureInternalWithDamage(POUTFB->getTexture(), box, (*PBLURIGNOREOPACITY ? blurA : a * blurA) * overallA, texDamage, round, roundingPower, false, false, true);
|
||||||
if (!USENEWOPTIMIZE)
|
if (!USENEWOPTIMIZE)
|
||||||
setRenderModifEnabled(true);
|
setRenderModifEnabled(true);
|
||||||
setMonitorTransformEnabled(false);
|
popMonitorTransformEnabled();
|
||||||
|
|
||||||
m_renderData.primarySurfaceUVTopLeft = LASTTL;
|
m_renderData.primarySurfaceUVTopLeft = LASTTL;
|
||||||
m_renderData.primarySurfaceUVBottomRight = LASTBR;
|
m_renderData.primarySurfaceUVBottomRight = LASTBR;
|
||||||
@@ -2263,7 +2270,7 @@ void CHyprOpenGLImpl::renderBorder(const CBox& box, const CGradientValueData& gr
|
|||||||
round += round == 0 ? 0 : scaledBorderSize;
|
round += round == 0 ? 0 : scaledBorderSize;
|
||||||
|
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
||||||
newBox, wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
newBox, wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
const auto BLEND = m_blend;
|
const auto BLEND = m_blend;
|
||||||
@@ -2350,7 +2357,7 @@ void CHyprOpenGLImpl::renderBorder(const CBox& box, const CGradientValueData& gr
|
|||||||
round += round == 0 ? 0 : scaledBorderSize;
|
round += round == 0 ? 0 : scaledBorderSize;
|
||||||
|
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
||||||
newBox, wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
newBox, wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
const auto BLEND = m_blend;
|
const auto BLEND = m_blend;
|
||||||
@@ -2426,7 +2433,7 @@ void CHyprOpenGLImpl::renderRoundedShadow(const CBox& box, int round, float roun
|
|||||||
const auto col = color;
|
const auto col = color;
|
||||||
|
|
||||||
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
Mat3x3 matrix = m_renderData.monitorProjection.projectBox(
|
||||||
newBox, wlTransformToHyprutils(invertTransform(!m_endFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
newBox, wlTransformToHyprutils(invertTransform(!m_monitorTransformEnabled ? WL_OUTPUT_TRANSFORM_NORMAL : m_renderData.pMonitor->m_transform)), newBox.rot);
|
||||||
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix);
|
||||||
|
|
||||||
blend(true);
|
blend(true);
|
||||||
@@ -2960,8 +2967,14 @@ void CHyprOpenGLImpl::bindBackOnMain() {
|
|||||||
m_renderData.currentFB = m_renderData.mainFB;
|
m_renderData.currentFB = m_renderData.mainFB;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprOpenGLImpl::setMonitorTransformEnabled(bool enabled) {
|
void CHyprOpenGLImpl::pushMonitorTransformEnabled(bool enabled) {
|
||||||
m_endFrame = enabled;
|
m_monitorTransformStack.push(enabled);
|
||||||
|
m_monitorTransformEnabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CHyprOpenGLImpl::popMonitorTransformEnabled() {
|
||||||
|
m_monitorTransformStack.pop();
|
||||||
|
m_monitorTransformEnabled = m_monitorTransformStack.top();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprOpenGLImpl::setRenderModifEnabled(bool enabled) {
|
void CHyprOpenGLImpl::setRenderModifEnabled(bool enabled) {
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <stack>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <cairo/cairo.h>
|
#include <cairo/cairo.h>
|
||||||
@@ -195,7 +196,9 @@ class CHyprOpenGLImpl {
|
|||||||
int outerRound = -1 /* use round */);
|
int outerRound = -1 /* use round */);
|
||||||
void renderTextureMatte(SP<CTexture> tex, const CBox& pBox, CFramebuffer& matte);
|
void renderTextureMatte(SP<CTexture> tex, const CBox& pBox, CFramebuffer& matte);
|
||||||
|
|
||||||
void setMonitorTransformEnabled(bool enabled);
|
void pushMonitorTransformEnabled(bool enabled);
|
||||||
|
void popMonitorTransformEnabled();
|
||||||
|
|
||||||
void setRenderModifEnabled(bool enabled);
|
void setRenderModifEnabled(bool enabled);
|
||||||
|
|
||||||
void saveMatrix();
|
void saveMatrix();
|
||||||
@@ -310,12 +313,14 @@ class CHyprOpenGLImpl {
|
|||||||
std::string m_extensions;
|
std::string m_extensions;
|
||||||
|
|
||||||
bool m_fakeFrame = false;
|
bool m_fakeFrame = false;
|
||||||
bool m_endFrame = false;
|
|
||||||
bool m_applyFinalShader = false;
|
bool m_applyFinalShader = false;
|
||||||
bool m_blend = false;
|
bool m_blend = false;
|
||||||
bool m_offloadedFramebuffer = false;
|
bool m_offloadedFramebuffer = false;
|
||||||
bool m_cmSupported = true;
|
bool m_cmSupported = true;
|
||||||
|
|
||||||
|
bool m_monitorTransformEnabled = false; // do not modify directly
|
||||||
|
std::stack<bool> m_monitorTransformStack;
|
||||||
|
|
||||||
SShader m_finalScreenShader;
|
SShader m_finalScreenShader;
|
||||||
CTimer m_globalTimer;
|
CTimer m_globalTimer;
|
||||||
GLuint m_currentProgram;
|
GLuint m_currentProgram;
|
||||||
|
@@ -206,11 +206,11 @@ void CHyprDropShadowDecoration::render(PHLMONITOR pMonitor, float const& a) {
|
|||||||
|
|
||||||
CBox monbox = {0, 0, pMonitor->m_transformedSize.x, pMonitor->m_transformedSize.y};
|
CBox monbox = {0, 0, pMonitor->m_transformedSize.x, pMonitor->m_transformedSize.y};
|
||||||
|
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(true);
|
g_pHyprOpenGL->pushMonitorTransformEnabled(true);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(false);
|
g_pHyprOpenGL->setRenderModifEnabled(false);
|
||||||
g_pHyprOpenGL->renderTextureMatte(alphaSwapFB.getTexture(), monbox, alphaFB);
|
g_pHyprOpenGL->renderTextureMatte(alphaSwapFB.getTexture(), monbox, alphaFB);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(true);
|
g_pHyprOpenGL->setRenderModifEnabled(true);
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(false);
|
g_pHyprOpenGL->popMonitorTransformEnabled();
|
||||||
|
|
||||||
g_pHyprOpenGL->m_renderData.damage = saveDamage;
|
g_pHyprOpenGL->m_renderData.damage = saveDamage;
|
||||||
} else
|
} else
|
||||||
|
@@ -24,7 +24,7 @@ void CSurfacePassElement::draw(const CRegion& damage) {
|
|||||||
g_pHyprOpenGL->m_renderData.discardMode = m_data.discardMode;
|
g_pHyprOpenGL->m_renderData.discardMode = m_data.discardMode;
|
||||||
g_pHyprOpenGL->m_renderData.discardOpacity = m_data.discardOpacity;
|
g_pHyprOpenGL->m_renderData.discardOpacity = m_data.discardOpacity;
|
||||||
g_pHyprOpenGL->m_renderData.useNearestNeighbor = m_data.useNearestNeighbor;
|
g_pHyprOpenGL->m_renderData.useNearestNeighbor = m_data.useNearestNeighbor;
|
||||||
g_pHyprOpenGL->m_endFrame = m_data.flipEndFrame;
|
g_pHyprOpenGL->pushMonitorTransformEnabled(m_data.flipEndFrame);
|
||||||
|
|
||||||
CScopeGuard x = {[]() {
|
CScopeGuard x = {[]() {
|
||||||
g_pHyprOpenGL->m_renderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
|
g_pHyprOpenGL->m_renderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
|
||||||
@@ -35,7 +35,7 @@ void CSurfacePassElement::draw(const CRegion& damage) {
|
|||||||
g_pHyprOpenGL->m_renderData.discardMode = 0;
|
g_pHyprOpenGL->m_renderData.discardMode = 0;
|
||||||
g_pHyprOpenGL->m_renderData.discardOpacity = 0;
|
g_pHyprOpenGL->m_renderData.discardOpacity = 0;
|
||||||
g_pHyprOpenGL->m_renderData.useNearestNeighbor = false;
|
g_pHyprOpenGL->m_renderData.useNearestNeighbor = false;
|
||||||
g_pHyprOpenGL->m_endFrame = false;
|
g_pHyprOpenGL->popMonitorTransformEnabled();
|
||||||
g_pHyprOpenGL->m_renderData.currentWindow.reset();
|
g_pHyprOpenGL->m_renderData.currentWindow.reset();
|
||||||
g_pHyprOpenGL->m_renderData.surface.reset();
|
g_pHyprOpenGL->m_renderData.surface.reset();
|
||||||
g_pHyprOpenGL->m_renderData.currentLS.reset();
|
g_pHyprOpenGL->m_renderData.currentLS.reset();
|
||||||
|
@@ -9,11 +9,11 @@ CTexPassElement::CTexPassElement(const CTexPassElement::SRenderData& data_) : m_
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CTexPassElement::draw(const CRegion& damage) {
|
void CTexPassElement::draw(const CRegion& damage) {
|
||||||
g_pHyprOpenGL->m_endFrame = m_data.flipEndFrame;
|
g_pHyprOpenGL->pushMonitorTransformEnabled(m_data.flipEndFrame);
|
||||||
|
|
||||||
CScopeGuard x = {[this]() {
|
CScopeGuard x = {[this]() {
|
||||||
//
|
//
|
||||||
g_pHyprOpenGL->m_endFrame = false;
|
g_pHyprOpenGL->popMonitorTransformEnabled();
|
||||||
g_pHyprOpenGL->m_renderData.clipBox = {};
|
g_pHyprOpenGL->m_renderData.clipBox = {};
|
||||||
if (m_data.replaceProjection)
|
if (m_data.replaceProjection)
|
||||||
g_pHyprOpenGL->m_renderData.monitorProjection = g_pHyprOpenGL->m_renderData.pMonitor->m_projMatrix;
|
g_pHyprOpenGL->m_renderData.monitorProjection = g_pHyprOpenGL->m_renderData.pMonitor->m_projMatrix;
|
||||||
|
@@ -7,11 +7,11 @@ CTextureMatteElement::CTextureMatteElement(const CTextureMatteElement::STextureM
|
|||||||
|
|
||||||
void CTextureMatteElement::draw(const CRegion& damage) {
|
void CTextureMatteElement::draw(const CRegion& damage) {
|
||||||
if (m_data.disableTransformAndModify) {
|
if (m_data.disableTransformAndModify) {
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(true);
|
g_pHyprOpenGL->pushMonitorTransformEnabled(true);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(false);
|
g_pHyprOpenGL->setRenderModifEnabled(false);
|
||||||
g_pHyprOpenGL->renderTextureMatte(m_data.tex, m_data.box, *m_data.fb);
|
g_pHyprOpenGL->renderTextureMatte(m_data.tex, m_data.box, *m_data.fb);
|
||||||
g_pHyprOpenGL->setRenderModifEnabled(true);
|
g_pHyprOpenGL->setRenderModifEnabled(true);
|
||||||
g_pHyprOpenGL->setMonitorTransformEnabled(false);
|
g_pHyprOpenGL->popMonitorTransformEnabled();
|
||||||
} else
|
} else
|
||||||
g_pHyprOpenGL->renderTextureMatte(m_data.tex, m_data.box, *m_data.fb);
|
g_pHyprOpenGL->renderTextureMatte(m_data.tex, m_data.box, *m_data.fb);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user