mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-10-31 07:04:20 +00:00 
			
		
		
		
	Remove slow burn-in effect.
This commit is contained in:
		| @@ -54,9 +54,7 @@ QtObject { | |||||||
|     property bool verbose: false |     property bool verbose: false | ||||||
|  |  | ||||||
|     property real bloomQuality: 0.5 |     property real bloomQuality: 0.5 | ||||||
|  |  | ||||||
|     property real burnInQuality: 0.5 |     property real burnInQuality: 0.5 | ||||||
|     property bool useFastBurnIn: true |  | ||||||
|  |  | ||||||
|     property bool blinkingCursor: false |     property bool blinkingCursor: false | ||||||
|  |  | ||||||
| @@ -244,8 +242,7 @@ QtObject { | |||||||
|             "bloomQuality": bloomQuality, |             "bloomQuality": bloomQuality, | ||||||
|             "burnInQuality": burnInQuality, |             "burnInQuality": burnInQuality, | ||||||
|             "useCustomCommand": useCustomCommand, |             "useCustomCommand": useCustomCommand, | ||||||
|             "customCommand": customCommand, |             "customCommand": customCommand | ||||||
|             "useFastBurnIn": useFastBurnIn |  | ||||||
|         } |         } | ||||||
|         return stringify(settings) |         return stringify(settings) | ||||||
|     } |     } | ||||||
| @@ -340,9 +337,6 @@ QtObject { | |||||||
|                 !== undefined ? settings.useCustomCommand : useCustomCommand |                 !== undefined ? settings.useCustomCommand : useCustomCommand | ||||||
|         customCommand = settings.customCommand |         customCommand = settings.customCommand | ||||||
|                 !== undefined ? settings.customCommand : customCommand |                 !== undefined ? settings.customCommand : customCommand | ||||||
|  |  | ||||||
|         useFastBurnIn = settings.useFastBurnIn |  | ||||||
|                 !== undefined ? settings.useFastBurnIn : useFastBurnIn |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function loadProfileString(profileString) { |     function loadProfileString(profileString) { | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ Loader { | |||||||
|     property real _minBurnInFadeTime: appSettings.minBurnInFadeTime |     property real _minBurnInFadeTime: appSettings.minBurnInFadeTime | ||||||
|     property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime |     property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime | ||||||
|  |  | ||||||
|     active: appSettings.useFastBurnIn && appSettings.burnIn !== 0 |     active: appSettings.burnIn !== 0 | ||||||
|  |  | ||||||
|     anchors.fill: parent |     anchors.fill: parent | ||||||
|  |  | ||||||
|   | |||||||
| @@ -34,7 +34,6 @@ Item{ | |||||||
|  |  | ||||||
|     property ShaderEffectSource mainSource: kterminalSource |     property ShaderEffectSource mainSource: kterminalSource | ||||||
|     property BurnInEffect burnInEffect: burnInEffect |     property BurnInEffect burnInEffect: burnInEffect | ||||||
|     property SlowBurnIn slowBurnInEffect: slowBurnInEffect |  | ||||||
|     property real fontWidth: 1.0 |     property real fontWidth: 1.0 | ||||||
|     property real screenScaling: 1.0 |     property real screenScaling: 1.0 | ||||||
|     property real scaleTexture: 1.0 |     property real scaleTexture: 1.0 | ||||||
| @@ -276,9 +275,5 @@ Item{ | |||||||
|         BurnInEffect { |         BurnInEffect { | ||||||
|             id: burnInEffect |             id: burnInEffect | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         SlowBurnIn { |  | ||||||
|             id: slowBurnInEffect |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -154,12 +154,6 @@ ColumnLayout { | |||||||
|             Label { |             Label { | ||||||
|                 text: Math.round(burnInSlider.value * 100) + "%" |                 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 |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,7 +24,6 @@ import QtGraphicalEffects 1.0 | |||||||
| import "utils.js" as Utils | import "utils.js" as Utils | ||||||
|  |  | ||||||
| Item { | Item { | ||||||
|     property SlowBurnIn slowBurnInEffect |  | ||||||
|     property ShaderEffectSource source |     property ShaderEffectSource source | ||||||
|     property BurnInEffect burnInEffect |     property BurnInEffect burnInEffect | ||||||
|     property ShaderEffectSource bloomSource |     property ShaderEffectSource bloomSource | ||||||
| @@ -67,14 +66,10 @@ Item { | |||||||
|          property real glowingLine: appSettings.glowingLine * 0.2 |          property real glowingLine: appSettings.glowingLine * 0.2 | ||||||
|  |  | ||||||
|          // Fast burnin properties |          // Fast burnin properties | ||||||
|          property real burnIn: appSettings.useFastBurnIn ? appSettings.burnIn : 0 |          property real burnIn: appSettings.burnIn | ||||||
|          property real burnInLastUpdate: burnInEffect.lastUpdate |          property real burnInLastUpdate: burnInEffect.lastUpdate | ||||||
|          property real burnInTime: burnInEffect.burnInFadeTime |          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 real jitter: appSettings.jitter | ||||||
|          property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * 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) |          property real shadowLength: 0.25 * screenCurvature * Utils.lint(0.50, 1.5, ambientLight) | ||||||
| @@ -185,8 +180,6 @@ Item { | |||||||
|                  uniform sampler2D burnInSource; |                  uniform sampler2D burnInSource; | ||||||
|                  uniform highp float burnInLastUpdate; |                  uniform highp float burnInLastUpdate; | ||||||
|                  uniform highp float burnInTime;" : "") + |                  uniform highp float burnInTime;" : "") + | ||||||
|              (slowBurnIn !== 0 ? " |  | ||||||
|                  uniform sampler2D slowBurnInSource;" : "") + |  | ||||||
|              (staticNoise !== 0 ? " |              (staticNoise !== 0 ? " | ||||||
|                  uniform highp float staticNoise;" : "") + |                  uniform highp float staticNoise;" : "") + | ||||||
|              (((staticNoise !== 0 || jitter !== 0) ||(fallBack && (flickering || horizontalSync))) ? " |              (((staticNoise !== 0 || jitter !== 0) ||(fallBack && (flickering || horizontalSync))) ? " | ||||||
| @@ -314,11 +307,6 @@ Item { | |||||||
|                      txt_color = max(txt_color, convertWithChroma(burnInColor));" |                      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 += fontColor.rgb * vec3(color);" + | ||||||
|  |  | ||||||
|                   "txt_color = applyRasterization(staticCoords, txt_color, virtualResolution, rasterizationIntensity);\n" + |                   "txt_color = applyRasterization(staticCoords, txt_color, virtualResolution, rasterizationIntensity);\n" + | ||||||
|   | |||||||
| @@ -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 <http://www.gnu.org/licenses/>. |  | ||||||
| *******************************************************************************/ |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -33,7 +33,6 @@ ShaderTerminal { | |||||||
|  |  | ||||||
|     source: terminal.mainSource |     source: terminal.mainSource | ||||||
|     burnInEffect: terminal.burnInEffect |     burnInEffect: terminal.burnInEffect | ||||||
|     slowBurnInEffect: terminal.slowBurnInEffect |  | ||||||
|     virtualResolution: terminal.virtualResolution |     virtualResolution: terminal.virtualResolution | ||||||
|     screenResolution: Qt.size( |     screenResolution: Qt.size( | ||||||
|         terminalWindow.width * devicePixelRatio * appSettings.windowScaling, |         terminalWindow.width * devicePixelRatio * appSettings.windowScaling, | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
|         <file>BurnInEffect.qml</file> |         <file>BurnInEffect.qml</file> | ||||||
|         <file>fonts/modern-terminus/TerminusTTF-4.46.0.ttf</file> |         <file>fonts/modern-terminus/TerminusTTF-4.46.0.ttf</file> | ||||||
|         <file>TerminalFrame.qml</file> |         <file>TerminalFrame.qml</file> | ||||||
|         <file>SlowBurnIn.qml</file> |  | ||||||
|         <file>menus/WindowMenu.qml</file> |         <file>menus/WindowMenu.qml</file> | ||||||
|         <file>menus/FullContextMenu.qml</file> |         <file>menus/FullContextMenu.qml</file> | ||||||
|         <file>menus/ShortContextMenu.qml</file> |         <file>menus/ShortContextMenu.qml</file> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user