mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-10-31 15:12:28 +00:00 
			
		
		
		
	Added a really cool motion blur to the screen!
This commit is contained in:
		| @@ -28,6 +28,7 @@ RowLayout { | ||||
|     property double _value: 0.0 | ||||
|     property double min_value: 0.0 | ||||
|     property double max_value: 1.0 | ||||
|     property double stepSize: 0.01 | ||||
|  | ||||
|     id: setting_component | ||||
|     anchors.left: parent.left | ||||
| @@ -43,7 +44,7 @@ RowLayout { | ||||
|     } | ||||
|     Slider{ | ||||
|         id: slider | ||||
|         stepSize: 0.01 | ||||
|         stepSize: parent.stepSize | ||||
|         minimumValue: min_value | ||||
|         maximumValue: max_value | ||||
|         onValueChanged: setting_component._value = slider.value; | ||||
| @@ -55,6 +56,6 @@ RowLayout { | ||||
|     } | ||||
|     Text{ | ||||
|         id: textfield | ||||
|         text: Math.round(((_value - min_value) / (max_value - min_value)) * 100) + "%" | ||||
|         text: Math.round(((value - min_value) / (max_value - min_value)) * 100) + "%" | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -138,6 +138,11 @@ ApplicationWindow { | ||||
|                         checked: shadersettings.scanlines | ||||
|                         onCheckedChanged: shadersettings.scanlines = checked; | ||||
|                     } | ||||
|                     SettingComponent{ | ||||
|                         name: "Motion Blur" | ||||
|                         onValueChanged: shadersettings.motion_blur = value | ||||
|                         _value: shadersettings.motion_blur | ||||
|                     } | ||||
|                     SettingComponent{ | ||||
|                         name: "Noise" | ||||
|                         onValueChanged: shadersettings.noise_strength = value | ||||
|   | ||||
| @@ -32,8 +32,9 @@ Item{ | ||||
|     property real noise_strength: 0.1 | ||||
|     property real screen_distortion: 0.15 | ||||
|     property real glowing_line_strength: 0.4 | ||||
|     property real motion_blur: 0.65 | ||||
|  | ||||
|     property bool scanlines: true | ||||
|     property bool scanlines: false | ||||
|  | ||||
|     property string frame_source: frames_list.get(frames_index).source | ||||
|     property int frames_index: 2 | ||||
| @@ -112,6 +113,8 @@ Item{ | ||||
|         glowing_line_strength = settings.glowing_line_strength ? settings.glowing_line_strength : glowing_line_strength; | ||||
|         scanlines = settings.scanlines ? settings.scanlines : scanlines; | ||||
|  | ||||
|         motion_blur = settings.motion_blur ? settings.motion_blur : motion_blur | ||||
|  | ||||
|         frames_index = settings.frames_index ? settings.frames_index : frames_index; | ||||
|  | ||||
|         font_index = settings.font_index ? settings.font_index : font_index; | ||||
| @@ -130,7 +133,8 @@ Item{ | ||||
|             scanlines: scanlines, | ||||
|             frames_index: frames_index, | ||||
|             font_index: font_index, | ||||
|             font_scaling: font_scaling | ||||
|             font_scaling: font_scaling, | ||||
|             motion_blur: motion_blur | ||||
|         } | ||||
|  | ||||
|         console.log(JSON.stringify(settings)); | ||||
| @@ -153,21 +157,21 @@ Item{ | ||||
|  | ||||
|  | ||||
|     ListModel{ | ||||
|          id: profileslist | ||||
|          ListElement{ | ||||
|              text: "Default" | ||||
|              obj_name: "DEFAULT" | ||||
|              obj_string: '{"ambient_light":0.3,"background_color":"#000000","font_color":"#00ff3b","font_index":0,"font_scaling":1,"frames_index":2,"glowing_line_strength":0.4,"noise_strength":0.1,"scanlines":true,"screen_distortion":0.15,"screen_flickering":0.07}' | ||||
|          } | ||||
|          ListElement{ | ||||
|              text: "Commodore 64" | ||||
|              obj_name: "COMMODORE64" | ||||
|              obj_string: '{"ambient_light":0.2,"background_color":"#5048b2","font_color":"#8bcad1","font_index":2,"font_scaling":1,"frames_index":1,"glowing_line_strength":0.2,"noise_strength":0.05,"scanlines":false,"screen_distortion":0.1,"screen_flickering":0.03}' | ||||
|          } | ||||
|          ListElement{ | ||||
|              text: "IBM Dos" | ||||
|              obj_name: "IBMDOS" | ||||
|              obj_string: '{"ambient_light":0.4,"background_color":"#000000","font_color":"#ffffff","font_index":3,"font_scaling":1,"frames_index":1,"glowing_line_strength":0,"noise_strength":0,"scanlines":false,"screen_distortion":0.05,"screen_flickering":0.00}' | ||||
|          } | ||||
|         id: profileslist | ||||
|         ListElement{ | ||||
|             text: "Default" | ||||
|             obj_name: "DEFAULT" | ||||
|             obj_string: '{"ambient_light":0.3,"background_color":"#000000","font_color":"#00ff3b","font_index":0,"font_scaling":1,"frames_index":2,"glowing_line_strength":0.4,"noise_strength":0.1,"scanlines":true,"screen_distortion":0.15,"screen_flickering":0.07}' | ||||
|         } | ||||
|         ListElement{ | ||||
|             text: "Commodore 64" | ||||
|             obj_name: "COMMODORE64" | ||||
|             obj_string: '{"ambient_light":0.2,"background_color":"#5048b2","font_color":"#8bcad1","font_index":2,"font_scaling":1,"frames_index":1,"glowing_line_strength":0.2,"noise_strength":0.05,"scanlines":false,"screen_distortion":0.1,"screen_flickering":0.03}' | ||||
|         } | ||||
|         ListElement{ | ||||
|             text: "IBM Dos" | ||||
|             obj_name: "IBMDOS" | ||||
|             obj_string: '{"ambient_light":0.4,"background_color":"#000000","font_color":"#ffffff","font_index":3,"font_scaling":1,"frames_index":1,"glowing_line_strength":0,"noise_strength":0,"scanlines":false,"screen_distortion":0.05,"screen_flickering":0.00}' | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,26 +2,71 @@ import QtQuick 2.0 | ||||
|  | ||||
| import org.kde.konsole 0.1 | ||||
|  | ||||
| KTerminal { | ||||
|     font.pointSize: shadersettings.fontSize | ||||
|     font.family: shadersettings.font.name | ||||
| Item{ | ||||
|     id: terminalContainer | ||||
|     property real blur: shadersettings.motion_blur | ||||
|     property real motionBlurCoefficient: (_minBlurCoefficient)*blur + (_maxBlurCoefficient)*(1.0-blur) | ||||
|     property real _minBlurCoefficient: 0.015 | ||||
|     property real _maxBlurCoefficient: 0.10 | ||||
|     KTerminal { | ||||
|         id: kterminal | ||||
|         font.pointSize: shadersettings.fontSize | ||||
|         font.family: shadersettings.font.name | ||||
|         width: parent.width | ||||
|         height: parent.height | ||||
|  | ||||
|     colorScheme: "WhiteOnBlack" | ||||
|         colorScheme: "MyWhiteOnBlack" | ||||
|  | ||||
|     session: KSession { | ||||
|         id: ksession | ||||
|         kbScheme: "linux" | ||||
|         session: KSession { | ||||
|             id: ksession | ||||
|             kbScheme: "linux" | ||||
|  | ||||
|         onFinished: { | ||||
|             Qt.quit() | ||||
|             onFinished: { | ||||
|                 Qt.quit() | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         Component.onCompleted: { | ||||
|             font.pointSize = shadersettings.fontSize; | ||||
|             font.family = shadersettings.font.name; | ||||
|             forceActiveFocus(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     Component.onCompleted: { | ||||
|         font.pointSize = shadersettings.fontSize; | ||||
|         font.family = shadersettings.font.name; | ||||
|         console.log(shadersettings.font.name); | ||||
|     } | ||||
|     Loader{ | ||||
|         anchors.fill: parent | ||||
|         active: parent.blur !== 0 | ||||
|  | ||||
|     Component.onDestruction: console.log("Destroy") | ||||
|         sourceComponent: Item{ | ||||
|             ShaderEffectSource{ | ||||
|                 id: source | ||||
|                 sourceItem: kterminal | ||||
|                 hideSource: true | ||||
|             } | ||||
|             ShaderEffectSource{ | ||||
|                 id: blurredSource | ||||
|                 sourceItem: blurredterminal | ||||
|                 recursive: true | ||||
|                 live: true | ||||
|             } | ||||
|             ShaderEffect { | ||||
|                 id: blurredterminal | ||||
|                 anchors.fill: parent | ||||
|                 property variant source: source | ||||
|                 property variant blurredSource: blurredSource | ||||
|                 z: 2 | ||||
|                 fragmentShader: | ||||
|                     "uniform lowp float qt_Opacity;" + | ||||
|                     "uniform lowp sampler2D source;" + | ||||
|                     "uniform lowp sampler2D blurredSource;" + | ||||
|                     "varying highp vec2 qt_TexCoord0;" + | ||||
|  | ||||
|                     "void main() {" + | ||||
|                     "    float sourceColor = texture2D(source, qt_TexCoord0).r * 512.0;" + | ||||
|                     "    float blurredSourceColor = texture2D(blurredSource, qt_TexCoord0).r * 512.0;" + | ||||
|                     "    gl_FragColor = vec4(vec3(floor(mix(blurredSourceColor, sourceColor, " + motionBlurCoefficient + "))) / 512.0, 1.0);" + | ||||
|                     "}" | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -98,10 +98,18 @@ ApplicationWindow{ | ||||
|  | ||||
|         Loader{ | ||||
|             id: terminal | ||||
|  | ||||
|             width: parent.width | ||||
|             height: parent.height | ||||
|         } | ||||
|  | ||||
|         MouseArea{ | ||||
|             acceptedButtons: Qt.NoButton | ||||
|             anchors.fill: parent | ||||
|             onWheel: | ||||
|                 wheel.angleDelta.y > 0 ? terminal.item.scrollUp() : terminal.item.scrollDown() | ||||
|         } | ||||
|  | ||||
|         RadialGradient{ | ||||
|             id: ambientreflection | ||||
|             z: 2.0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user