]> git.tdb.fi Git - libs/demoscene.git/blobdiff - data/filmgrain.glsl
Add a film grain postprocessor
[libs/demoscene.git] / data / filmgrain.glsl
diff --git a/data/filmgrain.glsl b/data/filmgrain.glsl
new file mode 100644 (file)
index 0000000..9ae3d8f
--- /dev/null
@@ -0,0 +1,17 @@
+import postprocess;
+
+uniform sampler2DArray grain;
+uniform GrainParams
+{
+       float coarseness;
+       float strength;
+};
+uniform int grain_layer;
+
+#pragma MSP stage(fragment)
+void main()
+{
+       vec3 gcoord = vec3(gl_FragCoord.xy/textureSize(grain, 0).xy/coarseness, grain_layer);
+       vec4 incoming = texture(source, texcoord);
+       frag_color = vec4(incoming.rgb*mix(1.0, texture(grain, gcoord).r, strength), incoming.a);
+}