--- /dev/null
+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);
+}