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 maximumFontScaling: 2.50 | ||||
|  | ||||
|     readonly property real minBurnInFadeTime: 160 | ||||
|     readonly property real maxBurnInFadeTime: 1600 | ||||
|  | ||||
|     // GENERAL SETTINGS /////////////////////////////////////////////////////// | ||||
|  | ||||
|     property int x: 100 | ||||
| @@ -52,7 +55,9 @@ QtObject{ | ||||
|     property bool verbose: false | ||||
|  | ||||
|     property real bloomQuality: 0.5 | ||||
|  | ||||
|     property real burnInQuality: 0.5 | ||||
|     property bool useFastBurnIn: Qt.platform.os === "osx" ? false : true | ||||
|  | ||||
|     onWindowScalingChanged: handleFontChanged(); | ||||
|  | ||||
| @@ -202,7 +207,8 @@ QtObject{ | ||||
|             bloomQuality: bloomQuality, | ||||
|             burnInQuality: burnInQuality, | ||||
|             useCustomCommand: useCustomCommand, | ||||
|             customCommand: customCommand | ||||
|             customCommand: customCommand, | ||||
|             useFastBurnIn: useFastBurnIn | ||||
|         } | ||||
|         return stringify(settings); | ||||
|     } | ||||
| @@ -288,6 +294,8 @@ QtObject{ | ||||
|  | ||||
|         useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand | ||||
|         customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand | ||||
|  | ||||
|         useFastBurnIn = settings.useFastBurnIn !== undefined ? settings.useFastBurnIn : useFastBurnIn; | ||||
|     } | ||||
|  | ||||
|     function loadProfileString(profileString){ | ||||
|   | ||||
| @@ -13,10 +13,12 @@ Loader { | ||||
|     property real delay: (1.0 / appSettings.fps) * 1000 | ||||
|     property real burnIn: appSettings.burnIn | ||||
|     property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn) | ||||
|     property real _minBurnInFadeTime: 160 | ||||
|     property real _maxBurnInFadeTime: 1600 | ||||
|     property real _minBurnInFadeTime: appSettings.minBurnInFadeTime | ||||
|     property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime | ||||
|  | ||||
|     active: appSettings.burnIn !== 0 | ||||
|     active: appSettings.useFastBurnIn && appSettings.burnIn !== 0 | ||||
|  | ||||
|     anchors.fill: parent | ||||
|  | ||||
|     function completelyUpdate() { | ||||
|         prevLastUpdate = lastUpdate; | ||||
| @@ -33,16 +35,6 @@ Loader { | ||||
|     sourceComponent: Item { | ||||
|         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 { | ||||
|             id: burnInEffectSource | ||||
|  | ||||
| @@ -88,7 +80,6 @@ Loader { | ||||
|             property real prevLastUpdate: burnInEffect.prevLastUpdate | ||||
|  | ||||
|             anchors.fill: parent | ||||
|  | ||||
|             blending: false | ||||
|  | ||||
|             fragmentShader: | ||||
|   | ||||
| @@ -33,6 +33,7 @@ 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 | ||||
| @@ -227,7 +228,26 @@ Item{ | ||||
|         sourceRect: Qt.rect(-kterminal.margin, -kterminal.margin, kterminal.totalWidth, kterminal.totalHeight) | ||||
|     } | ||||
|  | ||||
|     Item { | ||||
|         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) + "%"} | ||||
|                 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 | ||||
|  | ||||
| Item { | ||||
|     property SlowBurnIn slowBurnInEffect | ||||
|     property ShaderEffectSource source | ||||
|     property BurnInEffect burnInEffect | ||||
|     property ShaderEffectSource bloomSource | ||||
| @@ -56,9 +57,16 @@ Item { | ||||
|          property real horizontalSync: appSettings.horizontalSync | ||||
|          property real horizontalSyncStrength: Utils.lint(0.05, 0.35, horizontalSync) | ||||
|          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 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) | ||||
| @@ -162,6 +170,8 @@ 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) | ||||
| @@ -292,6 +302,11 @@ 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);" + | ||||
|  | ||||
|                  "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 | ||||
|     burnInEffect: terminal.burnInEffect | ||||
|     slowBurnInEffect: terminal.slowBurnInEffect | ||||
|     virtual_resolution: terminal.virtualResolution | ||||
|  | ||||
|     TimeManager{ | ||||
|   | ||||
| @@ -43,5 +43,6 @@ | ||||
|         <file>BurnInEffect.qml</file> | ||||
|         <file>fonts/modern-terminus/TerminusTTF-4.46.0.ttf</file> | ||||
|         <file>NewTerminalFrame.qml</file> | ||||
|         <file>SlowBurnIn.qml</file> | ||||
|     </qresource> | ||||
| </RCC> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user