(32 lines)
1 #define TAU 6.2831853071795864769252867665590057683943387987502116419492 #define MAX_RESOLUTION 643 extern int resolution;4 extern float sigma;5 extern float amplitudes[MAX_RESOLUTION];6 extern float offsets[MAX_RESOLUTION];7 extern float range_min, range_max;8 extern bool draw_outline = false;10 float cdf(float x) {11 return .5 + .5*sign(x)*sqrt(1.-exp(-4./TAU * x*x));12 }14 float noise1d(float x) {15 float noise = 0.;16 for (int i=0; i < resolution; i++) {17 float a = amplitudes[i];18 noise += a*cos(x/a + offsets[i]);19 }20 return cdf(noise/sigma);21 }23 vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)24 {25 float x = mix(range_min,range_max,texture_coords.x);26 float n = noise1d(x);27 if (draw_outline) {28 return texture_coords.y > (1.-n) ? vec4(1.,1.,1.,1.) : vec4(0.,0.,0.,1.);29 } else {30 return vec4(n,n,n,1.);31 }32 }