diff --git a/app/SettingsWindow.qml b/app/SettingsWindow.qml index 3b05dc3..34ea734 100644 --- a/app/SettingsWindow.qml +++ b/app/SettingsWindow.qml @@ -86,8 +86,8 @@ ApplicationWindow { height: 50 Layout.fillWidth: true Layout.columnSpan: 2 - onButton_colorChanged: shadersettings.font_color = button_color; - Component.onCompleted: button_color = shadersettings.font_color; + onButton_colorChanged: shadersettings._font_color = button_color; + Component.onCompleted: button_color = shadersettings._font_color; } } } @@ -112,8 +112,20 @@ ApplicationWindow { Layout.fillWidth: true Layout.columnSpan: 2 - onButton_colorChanged: shadersettings.background_color= button_color - Component.onCompleted: button_color = shadersettings.background_color; + onButton_colorChanged: shadersettings._background_color= button_color + Component.onCompleted: button_color = shadersettings._background_color; + } + } + } + GroupBox{ + title: qsTr("Background") + Layout.fillWidth: true + Layout.fillHeight:true + ColumnLayout{ + SettingComponent{ + name: "Contrast" + onValueChanged: shadersettings.contrast = value + _value: shadersettings.contrast } } } diff --git a/app/ShaderManager.qml b/app/ShaderManager.qml index a19fa42..a5db8b0 100644 --- a/app/ShaderManager.qml +++ b/app/ShaderManager.qml @@ -42,9 +42,9 @@ ShaderEffect { property real _A: 0.4 + Math.random() * 0.4 property real _B: 0.2 + Math.random() * 0.4 property real _C: 1.2 - _A - _B - property real a: (0.1 + Math.random() * 0.4) * 0.05 - property real b: (0.3 + Math.random() * 0.4) * 0.05 - property real c: (0.6 + Math.random() * 0.4) * 0.05 + property real a: (0.0 + Math.random() * 0.4) * 0.05 + property real b: (0.1 + Math.random() * 0.4) * 0.05 + property real c: (0.4 + Math.random() * 0.4) * 0.05 property real randval: (_A * Math.cos(a * time + _B) + _B * Math.sin(b * time + _C) + @@ -83,7 +83,6 @@ ShaderEffect { repeat: true } - //TODO fix the glow line which is after the first time fragmentShader: " uniform sampler2D source; uniform highp float qt_Opacity; @@ -106,13 +105,20 @@ ShaderEffect { (shadersettings.screen_flickering !== 0 ? "uniform highp float horizontal_distortion;" : "") + - "float rand(vec2 co, float time){ - return fract(sin(dot(co.xy ,vec2(0.37898 * time ,0.78233))) * 437.5875453); + + "highp float rand(vec2 co) + { + highp float a = 12.9898; + highp float b = 78.233; + highp float c = 43758.5453; + highp float dt= dot(co.xy ,vec2(a,b)); + highp float sn= mod(dt,3.14); + return fract(sin(sn) * c); } float stepNoise(vec2 p){ - vec2 newP = p * txt_Size*0.25; - return rand(floor(newP), time); + vec2 newP = p * txt_Size*0.5; + return rand(floor(newP) + fract(time / 100.0)); } float getScanlineIntensity(vec2 pos){ @@ -122,7 +128,7 @@ ShaderEffect { (glowing_line_strength !== 0 ? "float randomPass(vec2 coords){ - return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0002))) * glowing_line_strength; + return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0001))) * glowing_line_strength; }" : "") + diff --git a/app/ShaderSettings.qml b/app/ShaderSettings.qml index 5612c79..ae8c12a 100644 --- a/app/ShaderSettings.qml +++ b/app/ShaderSettings.qml @@ -24,9 +24,20 @@ Item{ property bool fullscreen: false property real ambient_light: 0.2 + property real contrast: 0.9 - property string background_color: "#002200" - property string font_color: "#00ff00" + function mix(c1, c2, alpha){ + return Qt.rgba(c1.r * alpha + c2.r * (1-alpha), + c1.g * alpha + c2.g * (1-alpha), + c1.b * alpha + c2.b * (1-alpha), + c1.a * alpha + c2.a * (1-alpha)) + } + + //Private atttributes might need processing + property color _background_color: "#002200" + property color _font_color: "#00ff00" + property color font_color: mix(_font_color, _background_color, 0.5 + (contrast * 0.5)) + property color background_color: mix(_background_color, _font_color, 0.5 + (contrast * 0.5)) property real noise_strength: 0.1 property real screen_distortion: 0.15 @@ -130,6 +141,8 @@ Item{ settings = JSON.parse(settings); + contrast = settings.contrast ? settings.contrast : contrast; + ambient_light = settings.ambient_light ? settings.ambient_light : ambient_light; background_color = settings.background_color ? settings.background_color : background_color; font_color = settings.font_color ? settings.font_color : font_color; @@ -152,6 +165,7 @@ Item{ function storeCurrentSettings(){ var settings = { ambient_light : ambient_light, + contrast : contrast, background_color: background_color, font_color: font_color, screen_flickering: screen_flickering, diff --git a/app/app.qmlproject.user b/app/app.qmlproject.user index 0bfa497..e2d3b1a 100644 --- a/app/app.qmlproject.user +++ b/app/app.qmlproject.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/app/main.qml b/app/main.qml index d756156..e45260e 100644 --- a/app/main.qml +++ b/app/main.qml @@ -115,7 +115,7 @@ ApplicationWindow{ z: 2.0 anchors.fill: parent cached: true - opacity: shadersettings.ambient_light * 0.66 + opacity: shadersettings.ambient_light * 0.4 gradient: Gradient{ GradientStop{position: 0.0; color: "white"} GradientStop{position: 0.7; color: "#00000000"}