summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Renderer.cpp5
-rw-r--r--src/render/Renderer.hpp1
2 files changed, 5 insertions, 1 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index bf3740da..b79ca13f 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -2129,6 +2129,7 @@ void IHyprRenderer::setProjectionType(eRenderProjectionType projectionType) {
case RPT_MONITOR: m_renderData.targetProjection = m_renderData.pMonitor->getTransformMatrix(); break;
case RPT_MIRROR: m_renderData.targetProjection = getMirrorProjection(m_renderData.pMonitor); break;
case RPT_FB: m_renderData.targetProjection = getFBProjection(m_renderData.pMonitor, m_renderData.fbSize); break;
+ case RPT_EXPORT: m_renderData.targetProjection = Mat3x3::identity(); break;
default: UNREACHABLE();
}
}
@@ -2140,7 +2141,9 @@ Mat3x3 IHyprRenderer::getBoxProjection(const CBox& box, std::optional<eTransform
}
Mat3x3 IHyprRenderer::projectBoxToTarget(const CBox& box, std::optional<eTransform> transform) {
- return m_renderData.pMonitor->getScaleMatrix().copy().multiply(getBoxProjection(box, transform));
+ return (m_renderData.projectionType == RPT_EXPORT ? Mat3x3::outputProjection(m_renderData.fbSize, HYPRUTILS_TRANSFORM_NORMAL) : m_renderData.pMonitor->getScaleMatrix())
+ .copy()
+ .multiply(getBoxProjection(box, transform));
}
SP<ITexture> IHyprRenderer::blurMainFramebuffer(float a, CRegion* originalDamage) {
diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp
index 1d099ee3..6f92dc50 100644
--- a/src/render/Renderer.hpp
+++ b/src/render/Renderer.hpp
@@ -77,6 +77,7 @@ enum eRenderProjectionType : uint8_t {
RPT_MONITOR,
RPT_MIRROR,
RPT_FB,
+ RPT_EXPORT,
};
struct SRenderData {