Added blur_passes config

This commit is contained in:
vaxerski 2022-04-09 17:06:09 +02:00
parent 25299b80bb
commit 91a6c53197
3 changed files with 9 additions and 2 deletions

View file

@ -30,6 +30,9 @@ decoration {
rounding=10 rounding=10
blur=1 blur=1
blur_size=8 # minimum 2 blur_size=8 # minimum 2
blur_passes=1 # minimum 1, more passes = more resource intensive.
# Your blur "amount" is blur_size * blur_passes, but high blur_size (over around 30-ish) will produce artifacts.
# if you want heavy blur, you need to up the blur_passes.
} }
animations { animations {

View file

@ -25,6 +25,7 @@ CConfigManager::CConfigManager() {
configValues["decoration:rounding"].intValue = 1; configValues["decoration:rounding"].intValue = 1;
configValues["decoration:blur"].intValue = 1; configValues["decoration:blur"].intValue = 1;
configValues["decoration:blur_size"].intValue = 8; configValues["decoration:blur_size"].intValue = 8;
configValues["decoration:blur_passes"].intValue = 1;
configValues["dwindle:pseudotile"].intValue = 0; configValues["dwindle:pseudotile"].intValue = 0;

View file

@ -324,6 +324,7 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, float matrix[9]
wlr_matrix_transpose(glMatrix, glMatrix); wlr_matrix_transpose(glMatrix, glMatrix);
const auto RADIUS = g_pConfigManager->getInt("decoration:blur_size") + 2; const auto RADIUS = g_pConfigManager->getInt("decoration:blur_size") + 2;
const auto BLURPASSES = g_pConfigManager->getInt("decoration:blur_passes");
const auto PFRAMEBUFFER = &m_mMonitorFramebuffers[m_RenderData.pMonitor]; const auto PFRAMEBUFFER = &m_mMonitorFramebuffers[m_RenderData.pMonitor];
auto drawWithShader = [&](CShader* pShader) { auto drawWithShader = [&](CShader* pShader) {
@ -352,8 +353,10 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, float matrix[9]
glDisableVertexAttribArray(pShader->texAttrib); glDisableVertexAttribArray(pShader->texAttrib);
}; };
drawWithShader(&m_shBLUR1); // horizontal pass for (int i = 0; i < BLURPASSES; ++i) {
drawWithShader(&m_shBLUR2); // vertical pass drawWithShader(&m_shBLUR1); // horizontal pass
drawWithShader(&m_shBLUR2); // vertical pass
}
glBindTexture(tex.m_iTarget, 0); glBindTexture(tex.m_iTarget, 0);