diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml index 424f0bd8..c3f890d5 100644 --- a/app/qml/ApplicationSettings.qml +++ b/app/qml/ApplicationSettings.qml @@ -71,6 +71,7 @@ QtObject { property string _backgroundColor: "#000000" property string _fontColor: "#ff8100" + property string _frameColor: "#ffffff" property string saturatedColor: Utils.mix(Utils.strToColor("#FFFFFF"), Utils.strToColor(_fontColor), saturationColor * 0.5) @@ -81,6 +82,7 @@ QtObject { _backgroundColor), Utils.strToColor(saturatedColor), 0.7 + (contrast * 0.3)) + property color frameColor: Utils.strToColor(_frameColor) property real staticNoise: 0.12 property real screenCurvature: 0.3 @@ -90,6 +92,7 @@ QtObject { property real chromaColor: 0.25 property real saturationColor: 0.25 + property real frameGloss: 0 property real jitter: 0.2 @@ -251,11 +254,13 @@ QtObject { var settings = { "backgroundColor": _backgroundColor, "fontColor": _fontColor, + "frameColor": _frameColor, "flickering": flickering, "horizontalSync": horizontalSync, "staticNoise": staticNoise, "chromaColor": chromaColor, "saturationColor": saturationColor, + "frameGloss": frameGloss, "screenCurvature": screenCurvature, "glowingLine": glowingLine, "burnIn": burnIn, @@ -345,6 +350,7 @@ QtObject { _backgroundColor = settings.backgroundColor !== undefined ? settings.backgroundColor : _backgroundColor _fontColor = settings.fontColor !== undefined ? settings.fontColor : _fontColor + _frameColor = settings.frameColor !== undefined ? settings.frameColor : _frameColor horizontalSync = settings.horizontalSync !== undefined ? settings.horizontalSync : horizontalSync @@ -353,6 +359,7 @@ QtObject { chromaColor = settings.chromaColor !== undefined ? settings.chromaColor : chromaColor saturationColor = settings.saturationColor !== undefined ? settings.saturationColor : saturationColor + frameGloss = settings.frameGloss !== undefined ? settings.frameGloss : frameGloss screenCurvature = settings.screenCurvature !== undefined ? settings.screenCurvature : screenCurvature glowingLine = settings.glowingLine !== undefined ? settings.glowingLine : glowingLine @@ -459,6 +466,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0.2483, "screenCurvature": 0.3, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.1198, "windowOpacity": 1, "margin": 0.5, @@ -488,6 +497,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0.0, "screenCurvature": 0.3, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.1198, "windowOpacity": 1, "margin": 0.5, @@ -517,6 +528,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0.5, "screenCurvature": 0.3, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.15, "windowOpacity": 1, "margin": 0.5, @@ -546,6 +559,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0, "screenCurvature": 0, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.15, "windowOpacity": 1, "margin": 0.5, @@ -575,6 +590,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0, "screenCurvature": 0.5, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.099, "windowOpacity": 1, "margin": 0.5, @@ -604,6 +621,8 @@ QtObject { "rbgShift": 0.2969, "saturationColor": 0, "screenCurvature": 0.5, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.2969, "windowOpacity": 1, "margin": 0.5, @@ -633,6 +652,8 @@ QtObject { "rbgShift": 0.3524, "saturationColor": 0, "screenCurvature": 0.4, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.0503, "windowOpacity": 1, "margin": 0.5, @@ -662,6 +683,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0, "screenCurvature": 0.2, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0, "windowOpacity": 1, "margin": 0.5, @@ -691,6 +714,8 @@ QtObject { "rbgShift": 0, "saturationColor": 0.4983, "screenCurvature": 0, + "frameColor": "#ffffff", + "frameGloss": 0, "staticNoise": 0.0955, "windowOpacity": 0.7, "margin": 0.1, diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml index 222ea781..3a424b28 100644 --- a/app/qml/SettingsTerminalTab.qml +++ b/app/qml/SettingsTerminalTab.qml @@ -149,6 +149,11 @@ ColumnLayout { value: appSettings.saturationColor enabled: appSettings.chromaColor !== 0 } + CheckableSlider { + name: qsTr("Frame Gloss") + onNewValue: appSettings.frameGloss = newValue + value: appSettings.frameGloss + } } RowLayout { Layout.fillWidth: true @@ -166,6 +171,13 @@ ColumnLayout { onColorSelected: appSettings._backgroundColor = color color: appSettings._backgroundColor } + ColorButton { + name: qsTr("Frame") + height: 50 + Layout.fillWidth: true + onColorSelected: appSettings._frameColor = color + color: appSettings._frameColor + } } } } diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 2de0d9b0..1c1ba3ed 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -37,6 +37,8 @@ Item { property real ambientLight: appSettings.ambientLight * 0.2 + property real frameGloss: appSettings.frameGloss + property size virtualResolution property size screenResolution @@ -59,6 +61,7 @@ Item { property real screenCurvature: parent.screenCurvature property real chromaColor: parent.chromaColor property real ambientLight: parent.ambientLight + property real frameGloss: parent.frameGloss property real flickering: appSettings.flickering property real horizontalSync: appSettings.horizontalSync @@ -172,6 +175,7 @@ Item { uniform highp vec4 fontColor; uniform highp vec4 backgroundColor; uniform lowp float shadowLength; + uniform lowp float frameGloss; uniform highp vec2 virtualResolution; uniform lowp float rasterizationIntensity;\n" + @@ -321,7 +325,7 @@ Item { (displayTerminalFrame ? "vec4 frameColor = texture2D(frameSource, qt_TexCoord0); - finalColor = mix(finalColor, frameColor.rgb, frameColor.a);" + finalColor = mix(finalColor, frameColor.rgb + (finalColor*frameGloss), frameColor.a);" : "") + "gl_FragColor = vec4(finalColor, qt_Opacity);" + diff --git a/app/qml/TerminalFrame.qml b/app/qml/TerminalFrame.qml index 3e1baef3..bfa75eee 100644 --- a/app/qml/TerminalFrame.qml +++ b/app/qml/TerminalFrame.qml @@ -22,13 +22,13 @@ import QtQuick 2.0 import "utils.js" as Utils ShaderEffect { - property color _staticFrameColor: "#fff" + property color _frameColor: appSettings.frameColor property color _backgroundColor: appSettings.backgroundColor property color _fontColor: appSettings.fontColor property color _lightColor: Utils.mix(_fontColor, _backgroundColor, 0.2) property real _ambientLight: Utils.lint(0.2, 0.8, appSettings.ambientLight) - property color frameColor: Utils.mix(_staticFrameColor, _lightColor, _ambientLight) + property color frameColor: Utils.mix(_frameColor, _lightColor, _ambientLight) property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize // Coefficient of the log curve used to approximate shadowing