From 7b69d41c607562b86a7897dee155277b5670269a Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 8 Jan 2022 22:32:42 +0100 Subject: [PATCH] Remove slow burn-in effect. --- app/qml/ApplicationSettings.qml | 8 +- app/qml/BurnInEffect.qml | 2 +- app/qml/PreprocessedTerminal.qml | 5 - app/qml/SettingsAdvancedTab.qml | 6 -- app/qml/ShaderTerminal.qml | 14 +-- app/qml/SlowBurnIn.qml | 157 ------------------------------- app/qml/TerminalContainer.qml | 1 - app/qml/resources.qrc | 1 - 8 files changed, 3 insertions(+), 191 deletions(-) delete mode 100644 app/qml/SlowBurnIn.qml diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 544c193..424f0bd 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -54,9 +54,7 @@ QtObject { property bool verbose: false property real bloomQuality: 0.5 - property real burnInQuality: 0.5 - property bool useFastBurnIn: true property bool blinkingCursor: false @@ -244,8 +242,7 @@ QtObject { "bloomQuality": bloomQuality, "burnInQuality": burnInQuality, "useCustomCommand": useCustomCommand, - "customCommand": customCommand, - "useFastBurnIn": useFastBurnIn + "customCommand": customCommand } return stringify(settings) } @@ -340,9 +337,6 @@ QtObject { !== undefined ? settings.useCustomCommand : useCustomCommand customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand - - useFastBurnIn = settings.useFastBurnIn - !== undefined ? settings.useFastBurnIn : useFastBurnIn } function loadProfileString(profileString) { diff --git a/app/qml/BurnInEffect.qml b/app/qml/BurnInEffect.qml index 9d38f99..a100df6 100644 --- a/app/qml/BurnInEffect.qml +++ b/app/qml/BurnInEffect.qml @@ -35,7 +35,7 @@ Loader { property real _minBurnInFadeTime: appSettings.minBurnInFadeTime property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime - active: appSettings.useFastBurnIn && appSettings.burnIn !== 0 + active: appSettings.burnIn !== 0 anchors.fill: parent diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index d6823db..85660e9 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -34,7 +34,6 @@ Item{ property ShaderEffectSource mainSource: kterminalSource property BurnInEffect burnInEffect: burnInEffect - property SlowBurnIn slowBurnInEffect: slowBurnInEffect property real fontWidth: 1.0 property real screenScaling: 1.0 property real scaleTexture: 1.0 @@ -276,9 +275,5 @@ Item{ BurnInEffect { id: burnInEffect } - - SlowBurnIn { - id: slowBurnInEffect - } } } diff --git a/app/qml/SettingsAdvancedTab.qml b/app/qml/SettingsAdvancedTab.qml index 2a4e238..f7eb161 100644 --- a/app/qml/SettingsAdvancedTab.qml +++ b/app/qml/SettingsAdvancedTab.qml @@ -154,12 +154,6 @@ ColumnLayout { Label { text: Math.round(burnInSlider.value * 100) + "%" } - CheckBox { - Layout.columnSpan: 2 - text: qsTr("Burnin optimization (Might display timing artifacts)") - checked: appSettings.useFastBurnIn - onCheckedChanged: appSettings.useFastBurnIn = checked - } } } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 4164320..2de0d9b 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -24,7 +24,6 @@ import QtGraphicalEffects 1.0 import "utils.js" as Utils Item { - property SlowBurnIn slowBurnInEffect property ShaderEffectSource source property BurnInEffect burnInEffect property ShaderEffectSource bloomSource @@ -67,14 +66,10 @@ Item { property real glowingLine: appSettings.glowingLine * 0.2 // Fast burnin properties - property real burnIn: appSettings.useFastBurnIn ? appSettings.burnIn : 0 + property real burnIn: appSettings.burnIn property real burnInLastUpdate: burnInEffect.lastUpdate property real burnInTime: burnInEffect.burnInFadeTime - // Slow burnin properties - property real slowBurnIn: appSettings.useFastBurnIn ? 0 : appSettings.burnIn - property ShaderEffectSource slowBurnInSource: slowBurnInEffect.source - property real jitter: appSettings.jitter property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * jitter) property real shadowLength: 0.25 * screenCurvature * Utils.lint(0.50, 1.5, ambientLight) @@ -185,8 +180,6 @@ Item { uniform sampler2D burnInSource; uniform highp float burnInLastUpdate; uniform highp float burnInTime;" : "") + - (slowBurnIn !== 0 ? " - uniform sampler2D slowBurnInSource;" : "") + (staticNoise !== 0 ? " uniform highp float staticNoise;" : "") + (((staticNoise !== 0 || jitter !== 0) ||(fallBack && (flickering || horizontalSync))) ? " @@ -314,11 +307,6 @@ Item { txt_color = max(txt_color, convertWithChroma(burnInColor));" : "") + - (slowBurnIn !== 0 ? " - vec4 txt_blur = texture2D(slowBurnInSource, staticCoords); - txt_color = max(txt_color, convertWithChroma(txt_blur.rgb * txt_blur.a)); - " : "") + - "txt_color += fontColor.rgb * vec3(color);" + "txt_color = applyRasterization(staticCoords, txt_color, virtualResolution, rasterizationIntensity);\n" + diff --git a/app/qml/SlowBurnIn.qml b/app/qml/SlowBurnIn.qml deleted file mode 100644 index 1c2bd7a..0000000 --- a/app/qml/SlowBurnIn.qml +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2013-2021 "Filippo Scognamiglio" -* https://github.com/Swordfish90/cool-retro-term -* -* This file is part of cool-retro-term. -* -* cool-retro-term is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*******************************************************************************/ - -import QtQuick 2.0 - -import "utils.js" as Utils - -Loader { - property ShaderEffectSource source: item ? item.source : null - - active: !appSettings.useFastBurnIn && appSettings.burnIn !== 0 - anchors.fill: parent - - sourceComponent: Item { - property alias source: burnInSourceEffect - property int burnInScaling: scaleTexture * appSettings.burnInQuality - - ShaderEffectSource { - property bool updateBurnIn: false - property real burnIn: appSettings.burnIn - property real fps: appSettings.fps !== 0 ? appSettings.fps : 60 - property real burnInFadeTime: Utils.lint(minBurnInFadeTime, maxBurnInFadeTime, burnIn) - property real burnInCoefficient: 1000 / (fps * burnInFadeTime) - property real minBurnInFadeTime: appSettings.minBurnInFadeTime - property real maxBurnInFadeTime: appSettings.maxBurnInFadeTime - - id: burnInSourceEffect - - anchors.fill: parent - - sourceItem: burnInEffect - recursive: true - live: false - hideSource: true - wrapMode: kterminalSource.wrapMode - - visible: false - - function restartBlurSource(){ - livetimer.restart(); - } - - // This updates the burnin synched with the timer. - Connections { - target: burnInSourceEffect.updateBurnIn ? timeManager : null - ignoreUnknownSignals: false - - function onTimeChanged() { - burnInSourceEffect.scheduleUpdate() - } - } - - Timer { - id: livetimer - - // The interval assumes 60 fps. This is the time needed burnout a white pixel. - // We multiply 1.1 to have a little bit of margin over the theoretical value. - // This solution is not extremely clean, but it's probably the best to avoid measuring fps. - - interval: burnInSourceEffect.burnInFadeTime * 1.1 - running: true - onTriggered: burnInSourceEffect.updateBurnIn = false; - } - Connections { - target: kterminal - - function onImagePainted() { - burnInSourceEffect.scheduleUpdate(); - burnInSourceEffect.updateBurnIn = true; - livetimer.restart(); - } - } - // Restart blurred source settings change. - Connections { - target: appSettings - - function onBurnInChanged() { - burnInSourceEffect.restartBlurSource() - } - - function onTerminalFontChanged() { - burnInSourceEffect.restartBlurSource() - } - - function onRasterizationChanged() { - burnInSourceEffect.restartBlurSource() - } - - function onBurnInQualityChanged() { - burnInSourceEffect.restartBlurSource() - } - } - Connections { - target: kterminalScrollbar - - function onOpacityChanged() { - burnInSourceEffect.restartBlurSource() - } - } - - ShaderEffect { - id: burnInEffect - - property variant txt_source: kterminalSource - property variant blurredSource: burnInSourceEffect - property real burnInCoefficient: burnInSourceEffect.burnInCoefficient - - anchors.fill: parent - blending: false - - fragmentShader: - "#ifdef GL_ES - precision mediump float; - #endif\n" + - - "uniform lowp float qt_Opacity;" + - "uniform lowp sampler2D txt_source;" + - - "varying highp vec2 qt_TexCoord0; - uniform lowp sampler2D blurredSource; - uniform highp float burnInCoefficient;" + - - "float max3(vec3 v) { - return max (max (v.x, v.y), v.z); - }" + - - "void main() {" + - "vec2 coords = qt_TexCoord0;" + - "vec3 origColor = texture2D(txt_source, coords).rgb;" + - "vec3 blur_color = texture2D(blurredSource, coords).rgb - vec3(burnInCoefficient);" + - "vec3 color = min(origColor + blur_color, max(origColor, blur_color));" + - - "gl_FragColor = vec4(color, max3(color - origColor));" + - "}" - - onStatusChanged: if (log) console.log(log) //Print warning messages - } - } - } -} diff --git a/app/qml/TerminalContainer.qml b/app/qml/TerminalContainer.qml index 9896354..b6be435 100644 --- a/app/qml/TerminalContainer.qml +++ b/app/qml/TerminalContainer.qml @@ -33,7 +33,6 @@ ShaderTerminal { source: terminal.mainSource burnInEffect: terminal.burnInEffect - slowBurnInEffect: terminal.slowBurnInEffect virtualResolution: terminal.virtualResolution screenResolution: Qt.size( terminalWindow.width * devicePixelRatio * appSettings.windowScaling, diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index f4f4431..1114d8d 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -41,7 +41,6 @@ BurnInEffect.qml fonts/modern-terminus/TerminusTTF-4.46.0.ttf TerminalFrame.qml - SlowBurnIn.qml menus/WindowMenu.qml menus/FullContextMenu.qml menus/ShortContextMenu.qml