mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-10-31 15:12:28 +00:00 
			
		
		
		
	Settings optin for old burinin version. It seems to be working better on osx.
This commit is contained in:
		| @@ -33,6 +33,9 @@ QtObject{ | |||||||
|     readonly property real minimumFontScaling: 0.25 |     readonly property real minimumFontScaling: 0.25 | ||||||
|     readonly property real maximumFontScaling: 2.50 |     readonly property real maximumFontScaling: 2.50 | ||||||
|  |  | ||||||
|  |     readonly property real minBurnInFadeTime: 160 | ||||||
|  |     readonly property real maxBurnInFadeTime: 1600 | ||||||
|  |  | ||||||
|     // GENERAL SETTINGS /////////////////////////////////////////////////////// |     // GENERAL SETTINGS /////////////////////////////////////////////////////// | ||||||
|  |  | ||||||
|     property int x: 100 |     property int x: 100 | ||||||
| @@ -52,7 +55,9 @@ 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: Qt.platform.os === "osx" ? false : true | ||||||
|  |  | ||||||
|     onWindowScalingChanged: handleFontChanged(); |     onWindowScalingChanged: handleFontChanged(); | ||||||
|  |  | ||||||
| @@ -202,7 +207,8 @@ 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); | ||||||
|     } |     } | ||||||
| @@ -288,6 +294,8 @@ QtObject{ | |||||||
|  |  | ||||||
|         useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand |         useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand | ||||||
|         customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand |         customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand | ||||||
|  |  | ||||||
|  |         useFastBurnIn = settings.useFastBurnIn !== undefined ? settings.useFastBurnIn : useFastBurnIn; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function loadProfileString(profileString){ |     function loadProfileString(profileString){ | ||||||
|   | |||||||
| @@ -13,10 +13,12 @@ Loader { | |||||||
|     property real delay: (1.0 / appSettings.fps) * 1000 |     property real delay: (1.0 / appSettings.fps) * 1000 | ||||||
|     property real burnIn: appSettings.burnIn |     property real burnIn: appSettings.burnIn | ||||||
|     property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn) |     property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn) | ||||||
|     property real _minBurnInFadeTime: 160 |     property real _minBurnInFadeTime: appSettings.minBurnInFadeTime | ||||||
|     property real _maxBurnInFadeTime: 1600 |     property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime | ||||||
|  |  | ||||||
|     active: appSettings.burnIn !== 0 |     active: appSettings.useFastBurnIn && appSettings.burnIn !== 0 | ||||||
|  |  | ||||||
|  |     anchors.fill: parent | ||||||
|  |  | ||||||
|     function completelyUpdate() { |     function completelyUpdate() { | ||||||
|         prevLastUpdate = lastUpdate; |         prevLastUpdate = lastUpdate; | ||||||
| @@ -33,16 +35,6 @@ Loader { | |||||||
|     sourceComponent: Item { |     sourceComponent: Item { | ||||||
|         property alias source: burnInEffectSource |         property alias source: burnInEffectSource | ||||||
|  |  | ||||||
|         property int burnInScaling: scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         width: appSettings.lowResolutionFont |  | ||||||
|                ? kterminal.totalWidth * Math.max(1, burnInScaling) |  | ||||||
|                : kterminal.totalWidth * scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         height: appSettings.lowResolutionFont |  | ||||||
|                 ? kterminal.totalHeight * Math.max(1, burnInScaling) |  | ||||||
|                 : kterminal.totalHeight * scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         ShaderEffectSource { |         ShaderEffectSource { | ||||||
|             id: burnInEffectSource |             id: burnInEffectSource | ||||||
|  |  | ||||||
| @@ -88,7 +80,6 @@ Loader { | |||||||
|             property real prevLastUpdate: burnInEffect.prevLastUpdate |             property real prevLastUpdate: burnInEffect.prevLastUpdate | ||||||
|  |  | ||||||
|             anchors.fill: parent |             anchors.fill: parent | ||||||
|  |  | ||||||
|             blending: false |             blending: false | ||||||
|  |  | ||||||
|             fragmentShader: |             fragmentShader: | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ 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 | ||||||
| @@ -227,7 +228,26 @@ Item{ | |||||||
|         sourceRect: Qt.rect(-kterminal.margin, -kterminal.margin, kterminal.totalWidth, kterminal.totalHeight) |         sourceRect: Qt.rect(-kterminal.margin, -kterminal.margin, kterminal.totalWidth, kterminal.totalHeight) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     BurnInEffect { |     Item { | ||||||
|         id: burnInEffect |         id: burnInContainer | ||||||
|  |  | ||||||
|  |         property int burnInScaling: scaleTexture * appSettings.burnInQuality | ||||||
|  |  | ||||||
|  |         width: Math.round(appSettings.lowResolutionFont | ||||||
|  |                ? kterminal.totalWidth * Math.max(1, burnInScaling) | ||||||
|  |                : kterminal.totalWidth * scaleTexture * appSettings.burnInQuality) | ||||||
|  |  | ||||||
|  |         height: Math.round(appSettings.lowResolutionFont | ||||||
|  |                 ? kterminal.totalHeight * Math.max(1, burnInScaling) | ||||||
|  |                 : kterminal.totalHeight * scaleTexture * appSettings.burnInQuality) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         BurnInEffect { | ||||||
|  |             id: burnInEffect | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         SlowBurnIn { | ||||||
|  |             id: slowBurnInEffect | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -133,6 +133,12 @@ Tab{ | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 SizedLabel{text: Math.round(burnInSlider.value * 100) + "%"} |                 SizedLabel{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,6 +24,7 @@ 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 | ||||||
| @@ -56,9 +57,16 @@ Item { | |||||||
|          property real horizontalSync: appSettings.horizontalSync |          property real horizontalSync: appSettings.horizontalSync | ||||||
|          property real horizontalSyncStrength: Utils.lint(0.05, 0.35, horizontalSync) |          property real horizontalSyncStrength: Utils.lint(0.05, 0.35, horizontalSync) | ||||||
|          property real glowingLine: appSettings.glowingLine * 0.2 |          property real glowingLine: appSettings.glowingLine * 0.2 | ||||||
|          property real burnIn: appSettings.burnIn |  | ||||||
|  |          // Fast burnin properties | ||||||
|  |          property real burnIn: appSettings.useFastBurnIn ? appSettings.burnIn : 0 | ||||||
|          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) | ||||||
| @@ -162,6 +170,8 @@ 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) |              (((staticNoise !== 0 || jitter !== 0) | ||||||
| @@ -292,6 +302,11 @@ 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);" + | ||||||
|  |  | ||||||
|                  "vec3 finalColor = txt_color;" + |                  "vec3 finalColor = txt_color;" + | ||||||
|   | |||||||
							
								
								
									
										122
									
								
								app/qml/SlowBurnIn.qml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								app/qml/SlowBurnIn.qml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | 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 | ||||||
|  |                 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 | ||||||
|  |                 onImagePainted:{ | ||||||
|  |                     burnInSourceEffect.scheduleUpdate(); | ||||||
|  |                     burnInSourceEffect.updateBurnIn = true; | ||||||
|  |                     livetimer.restart(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // Restart blurred source settings change. | ||||||
|  |             Connections{ | ||||||
|  |                 target: appSettings | ||||||
|  |                 onBurnInChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onTerminalFontChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onRasterizationChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onBurnInQualityChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |             } | ||||||
|  |             Connections { | ||||||
|  |                 target: kterminalScrollbar | ||||||
|  |                 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 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -12,6 +12,7 @@ ShaderTerminal { | |||||||
|  |  | ||||||
|     source: terminal.mainSource |     source: terminal.mainSource | ||||||
|     burnInEffect: terminal.burnInEffect |     burnInEffect: terminal.burnInEffect | ||||||
|  |     slowBurnInEffect: terminal.slowBurnInEffect | ||||||
|     virtual_resolution: terminal.virtualResolution |     virtual_resolution: terminal.virtualResolution | ||||||
|  |  | ||||||
|     TimeManager{ |     TimeManager{ | ||||||
|   | |||||||
| @@ -43,5 +43,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>NewTerminalFrame.qml</file> |         <file>NewTerminalFrame.qml</file> | ||||||
|  |         <file>SlowBurnIn.qml</file> | ||||||
|     </qresource> |     </qresource> | ||||||
| </RCC> | </RCC> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user