From 21c7f2c23e73f609724bc162e0e204be1d660350 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Fri, 20 Jun 2014 01:54:14 +0200 Subject: [PATCH] Smooth static noise and fixes --- app/ShaderManager.qml | 6 +++--- app/Terminal.qml | 25 ++++++++++++++++--------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/ShaderManager.qml b/app/ShaderManager.qml index 0643a48..9cf0198 100644 --- a/app/ShaderManager.qml +++ b/app/ShaderManager.qml @@ -32,7 +32,6 @@ ShaderEffect { property real bloom: shadersettings.bloom_strength property int rasterization: shadersettings.rasterization - property real rasterization_strength: 0.5 property real noise_strength: shadersettings.noise_strength property real screen_distorsion: shadersettings.screen_distortion @@ -151,7 +150,8 @@ ShaderEffect { "float color = texture2D(source, coords).a;" + (noise_strength !== 0 ? " - color += texture2D(noiseSource, qt_TexCoord0 * 0.25 + fract(time / 100.0)).a * noise * (1.0 - distance * distance * 2.0);" : "") + + float noiseVal = texture2D(noiseSource, qt_TexCoord0 + vec2(fract(time / 51.0), fract(time / 237.0))).a; + color += noiseVal * noise * (1.0 - distance * 1.3);" : "") + (glowing_line_strength !== 0 ? " color += randomPass(coords) * glowing_line_strength;" : "") + @@ -161,7 +161,7 @@ ShaderEffect { "vec3 finalColor = mix(background_color, font_color, color).rgb;" + "finalColor = mix(finalColor * 1.1, vec3(0.0), 1.2 * distance * distance);" + - "finalColor *= (texture2D(rasterizationSource, coords).a) / "+rasterization_strength+";" + + "finalColor *= texture2D(rasterizationSource, coords).a;" + (brightness_flickering !== 0 ? " finalColor *= brightness;" : "") + diff --git a/app/Terminal.qml b/app/Terminal.qml index 68b4fc9..9c6b9c7 100644 --- a/app/Terminal.qml +++ b/app/Terminal.qml @@ -250,16 +250,16 @@ Item{ (mScanlines == shadersettings.pixel_rasterization ? " coords.x = floor(virtual_resolution.x * coords.x) / virtual_resolution.x;" : "") : "") + - - "float color = texture2D(source, coords + delta).r * 256.0;" + + "coords = coords + delta;" + + "float color = texture2D(source, coords).r * 256.0;" + (mBlur !== 0 ? - "float blurredSourceColor = texture2D(blurredSource, qt_TexCoord0).a * 256.0;" + + "float blurredSourceColor = texture2D(blurredSource, coords).a * 256.0;" + "blurredSourceColor = blurredSourceColor - blurredSourceColor * " + (1.0 - motionBlurCoefficient) * fpsAttenuation+ ";" + "color = step(1.0, color) * color + step(color, 1.0) * blurredSourceColor;" : "") + - "gl_FragColor.a = vec4(floor(color) / 256.0);" + + "gl_FragColor.a = floor(color) / 256.0;" + "}" } ////////////////////////////////////////////////////////////////////// @@ -301,7 +301,7 @@ Item{ varying highp vec2 qt_TexCoord0; uniform highp vec2 virtual_resolution;" + - "highp float rand(vec2 co) + "highp float noise(vec2 co) { highp float a = 12.9898; highp float b = 78.233; @@ -311,13 +311,20 @@ Item{ return fract(sin(sn) * c); } - float stepNoise(vec2 p){ - vec2 newP = p * virtual_resolution; - return rand(newP); + vec2 sw(vec2 p) {return vec2( floor(p.x) , floor(p.y) );} + vec2 se(vec2 p) {return vec2( ceil(p.x) , floor(p.y) );} + vec2 nw(vec2 p) {return vec2( floor(p.x) , ceil(p.y) );} + vec2 ne(vec2 p) {return vec2( ceil(p.x) , ceil(p.y) );} + + float smoothNoise(vec2 p) { + vec2 inter = smoothstep(0., 1., fract(p)); + float s = mix(noise(sw(p)), noise(se(p)), inter.x); + float n = mix(noise(nw(p)), noise(ne(p)), inter.x); + return mix(s, n, inter.y); }" + "void main() {" + - "gl_FragColor.a = stepNoise(qt_TexCoord0);" + + "gl_FragColor.a = smoothNoise(qt_TexCoord0 * virtual_resolution);" + "}" } ShaderEffectSource{