#extension GL_EXT_gpu_shader4: enable uniform vec2 resolution; uniform float time; uniform sampler2D tex0; uniform sampler2D tex1; uniform sampler2D tex2; uniform sampler2D tex3; float coolfFunc3d2( int n ) { n = (n << 13) ^ n; n = (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff; return float(n); } //----------------------------------------------------------------------------- float noise3f( in vec3 x, int sem ) { ivec3 ip = ivec3(floor(x)); vec3 f = fract(x); f = f*f*(3.0-2.0*f); //f = f*f*f*(f*(f*6.0-15.0)+10.0); int n = ip.x + ip.y * 57 + 113*ip.z + sem; float res = mix(mix(mix( coolfFunc3d2(n+(0+57*0+113*0)), coolfFunc3d2(n+(1+57*0+113*0)),f.x), mix( coolfFunc3d2(n+(0+57*1+113*0)), coolfFunc3d2(n+(1+57*1+113*0)),f.x),f.y), mix(mix( coolfFunc3d2(n+(0+57*0+113*1)), coolfFunc3d2(n+(1+57*0+113*1)),f.x), mix( coolfFunc3d2(n+(0+57*1+113*1)), coolfFunc3d2(n+(1+57*1+113*1)),f.x),f.y),f.z); return 1.0 - res*(1.0/1073741824.0); } //---------------------------------------------------------------------------- vec2 celular( in vec3 x ) { ivec3 ip = ivec3(floor(x)); vec3 f = fract(x); vec2 dmin = vec2( 1.0, 1.0 ); for( int k=-1; k<=1; k++ ) for( int j=-1; j<=1; j++ ) for( int i=-1; i<=1; i++ ) { int nn = (ip.x+i) + 57*(ip.y+j) + 113*(ip.z+k); vec3 di = vec3(float(i),float(j),float(k)) - f + vec3(coolfFunc3d2(nn), coolfFunc3d2(nn+1217), coolfFunc3d2(nn+2513))/2147483647.0; float d2 = dot(di,di); if( d2