mirror of
https://github.com/Swordfish90/cool-retro-term.git
synced 2025-01-18 20:20:45 +00:00
Remove slow burn-in effect.
This commit is contained in:
parent
552947f507
commit
7b69d41c60
@ -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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user