summaryrefslogtreecommitdiff
path: root/shaders/gl_phosphor_persistence_fragment.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/gl_phosphor_persistence_fragment.glsl')
-rw-r--r--shaders/gl_phosphor_persistence_fragment.glsl17
1 files changed, 17 insertions, 0 deletions
diff --git a/shaders/gl_phosphor_persistence_fragment.glsl b/shaders/gl_phosphor_persistence_fragment.glsl
new file mode 100644
index 0000000..1633a2e
--- /dev/null
+++ b/shaders/gl_phosphor_persistence_fragment.glsl
@@ -0,0 +1,17 @@
+out vec4 outcolor;
+in vec2 frag_texture_coord;
+
+uniform sampler2D current_frame;
+uniform sampler2D previous_frame;
+uniform float decay;
+
+void main() {
+ vec3 current = texture(current_frame, frag_texture_coord).rgb;
+ vec3 previous = texture(previous_frame, frag_texture_coord).rgb;
+
+ // Mix current frame with decayed previous frame
+ // Higher decay = more trail (0.5 = subtle, 0.7 = noticeable)
+ vec3 result = max(current, previous * decay);
+
+ outcolor = vec4(result, 1.0);
+}