From a2e689a0dc47660c068a8248a9177e0fcbbfecd6 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sun, 28 Oct 2018 23:54:56 +0100 Subject: [PATCH] RGB Shift effect now looks much better. --- app/qml/ShaderTerminal.qml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml index 7b92e17..0a0b112 100644 --- a/app/qml/ShaderTerminal.qml +++ b/app/qml/ShaderTerminal.qml @@ -44,7 +44,7 @@ ShaderEffect { property real chromaColor: appSettings.chromaColor; - property real rbgShift: appSettings.rbgShift * 0.2 * (appSettings.chromaColor !== 0 ? 1.0 : 0.0) + property real rbgShift: (appSettings.rbgShift / width) * (appSettings.chromaColor !== 0 ? 1.0 : 0.0) property real flickering: appSettings.flickering property real horizontalSync: appSettings.horizontalSync * 0.5 @@ -264,7 +264,7 @@ ShaderEffect { noise += distortionScale * 7.0;" : "") : "") + - (jitter !== 0 || staticNoise !== 0 ? + (jitter !== 0 || staticNoise !== 0 || rbgShift !== 0 ? "vec4 noiseTexel = texture2D(noiseSource, scaleNoiseSize * coords + vec2(fract(time / 51.0), fract(time / 237.0)));" : "") + @@ -286,13 +286,14 @@ ShaderEffect { "txt_color *= min2(step(vec2(0.0), staticCoords) - step(vec2(1.0), staticCoords));" + (rbgShift !== 0 ? " - float rgb_noise = abs(texture2D(noiseSource, vec2(fract(time/(1024.0 * 128.0)), fract(time/(1024.0*512.0)))).a - 0.5); - vec2 baseDisplacement = vec2(0.02, 0.0) * rbgShift; - vec2 randomDisplacement = vec2(0.05, 0.0) * rbgShift * rgb_noise; - float rcolor = texture2D(source, txt_coords + baseDisplacement + randomDisplacement).r; - float bcolor = texture2D(source, txt_coords - baseDisplacement - randomDisplacement).b; - txt_color.r = rcolor; - txt_color.b = bcolor;" : "") + + vec2 displacement = vec2(32.0, 0.0) * rbgShift * noiseTexel.r; + vec3 rightColor = texture2D(source, txt_coords + displacement).rgb; + vec3 leftColor = texture2D(source, txt_coords - displacement).rgb; + vec3 rgbShiftColor = vec3(0.0); + rgbShiftColor.r = leftColor.r * 0.15 + rightColor.r * 0.7 + txt_color.r * 0.15; + rgbShiftColor.g = leftColor.g * 0.15 + rightColor.g * 0.15 + txt_color.g * 0.7; + rgbShiftColor.b = leftColor.b * 0.7 + rightColor.b * 0.15 + txt_color.b * 0.15; + txt_color = max(txt_color, (rgbShiftColor - txt_color));" : "") + (burnIn !== 0 ? " vec4 txt_blur = texture2D(blurredSource, txt_coords);