code / hill-noise

Lines837 Lua675 GLSL103 Markdown59
(32 lines)
1 #define TAU 6.283185307179586476925286766559005768394338798750211641949
2 #define MAX_RESOLUTION 64
3 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));
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]);
20 return cdf(noise/sigma);
23 vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)
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.);