]> git.tdb.fi Git - libs/demoscene.git/blob - data/filmgrain.glsl
Add a film grain postprocessor
[libs/demoscene.git] / data / filmgrain.glsl
1 import postprocess;
2
3 uniform sampler2DArray grain;
4 uniform GrainParams
5 {
6         float coarseness;
7         float strength;
8 };
9 uniform int grain_layer;
10
11 #pragma MSP stage(fragment)
12 void main()
13 {
14         vec3 gcoord = vec3(gl_FragCoord.xy/textureSize(grain, 0).xy/coarseness, grain_layer);
15         vec4 incoming = texture(source, texcoord);
16         frag_color = vec4(incoming.rgb*mix(1.0, texture(grain, gcoord).r, strength), incoming.a);
17 }