summaryrefslogtreecommitdiff
path: root/shaders/gl_phosphor_persistence_fragment.glsl
diff options
context:
space:
mode:
authorPeter Fors <peter.fors@mindkiller.com>2025-10-09 22:07:52 +0200
committerPeter Fors <peter.fors@mindkiller.com>2025-10-09 22:07:52 +0200
commit030724a9aea346e4a9843d5842fb28c6d6c4cf1a (patch)
treef06fb84aaef64b2f4e2d81b3d2d3eef71bad83ec /shaders/gl_phosphor_persistence_fragment.glsl
parent412b2ef851516c1de8ba5006ddd284192cbcaf9b (diff)
Rearrangement and refactoring and optimizations and more accuracy
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);
+}