Inscription #75928496#75,928,496htmlInscription #75816308#75,816,308svgInscription #75792249#75,792,249htmlInscription #74997799#74,997,799htmlInscription #74913101#74,913,101webpInscription #74492203#74,492,203pngInscription #74130716#74,130,716htmlInscription #74010412#74,010,412svgInscription #73961566#73,961,566htmlInscription #73925042#73,925,042html#73,920,386jsInscription #73857252#73,857,252htmlInscription #73472885#73,472,885htmlInscription #72948327#72,948,327htmldmt-mint.natsnow#72,624,438tapInscription #72458099#72,458,099pngInscription #71839954#71,839,954htmlInscription #70732172#70,732,172html#70,629,209jsInscription #70571282#70,571,282html#70,534,222js#70,447,948textInscription #68273118#68,273,118htmlInscription #68273117#68,273,117htmlInscription #65989717#65,989,717pngInscription #65879589#65,879,589pngInscription #65495036#65,495,036html// psrdnoise (c) Stefan Gustavson and Ian McEwan, // ver. 2021-12-02, published under the MIT license: // https://github.com/stegu/psrdnoise/ float psrdnoise(vec2 x, vec2 period, float alpha, out vec2 gradient) { vec2 uv = vec2(x.x+x.y*0.5, x.y); vec2 i0 = floor(uv), f0 = fract(uv); float cmp = step(f0.y, f0.x); vec2 o1 = vec2(cmp, 1.0-cmp); vec2 i1 = i0 + o1, i2 = i0 + 1.0; vec2 v0 = vec2(i0.x - i0.y*0.5, i0.y); vec2 v1 = vec2(v0.x + o1.x - o1.y*0.5, v0.y + o1.y); vec2 v2 = vec2(v0.x + 0.5, v0.y + 1.0); vec2 x0 = x - v0, x1 = x - v1, x2 = x - v2; vec3 iu, iv, xw, yw; if(any(greaterThan(period, vec2(0.0)))) { xw = vec3(v0.x, v1.x, v2.x); yw = vec3(v0.y, v1.y, v2.y); if(period.x > 0.0) xw = mod(vec3(v0.x, v1.x, v2.x), period.x); if(period.y > 0.0) yw = mod(vec3(v0.y, v1.y, v2.y), period.y); iu = floor(xw + 0.5*yw + 0.5); iv = floor(yw + 0.5); } else { iu = vec3(i0.x, i1.x, i2.x); iv = vec3(i0.y, i1.y, i2.y); } vec3 hash = mod(iu, 289.0); hash = mod((hash*51.0 + 2.0)*hash + iv, 289.0); hash = mod((hash*34.0 + 10.0)*hash, 289.0); vec3 psi = hash*0.07482 + alpha; vec3 gx = cos(psi); vec3 gy = sin(psi); vec2 g0 = vec2(gx.x, gy.x); vec2 g1 = vec2(gx.y, gy.y); vec2 g2 = vec2(gx.z, gy.z); vec3 w = 0.8 - vec3(dot(x0, x0), dot(x1, x1), dot(x2, x2)); w = max(w, 0.0); vec3 w2 = w*w; vec3 w4 = w2*w2; vec3 gdotx = vec3(dot(g0, x0), dot(g1, x1), dot(g2, x2)); float n = dot(w4, gdotx); vec3 w3 = w2*w; vec3 dw = -8.0*w3*gdotx; vec2 dn0 = w4.x*g0 + dw.x*x0; vec2 dn1 = w4.y*g1 + dw.y*x1; vec2 dn2 = w4.z*g2 + dw.z*x2; gradient = 10.9*(dn0 + dn1 + dn2); return 10.9*n; }#64,751,422text// psrdnoise (c) Stefan Gustavson and Ian McEwan, // ver. 2021-12-02, published under the MIT license: // https://github.com/stegu/psrdnoise/ vec4 permute(vec4 i) { vec4 im = mod(i, 289.0); return mod(((im*34.0)+10.0)*im, 289.0); } float psrdnoise(vec3 x, vec3 period, float alpha, out vec3 gradient) { const mat3 M = mat3(0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0); const mat3 Mi = mat3(-0.5, 0.5, 0.5, 0.5,-0.5, 0.5, 0.5, 0.5,-0.5); vec3 uvw = M * x; vec3 i0 = floor(uvw), f0 = fract(uvw); vec3 g_ = step(f0.xyx, f0.yzz), l_ = 1.0 - g_; vec3 g = vec3(l_.z, g_.xy), l = vec3(l_.xy, g_.z); vec3 o1 = min( g, l ), o2 = max( g, l ); vec3 i1 = i0 + o1, i2 = i0 + o2, i3 = i0 + vec3(1.0); vec3 v0 = Mi * i0, v1 = Mi * i1, v2 = Mi * i2, v3 = Mi * i3; vec3 x0 = x - v0, x1 = x - v1, x2 = x - v2, x3 = x - v3; if(any(greaterThan(period, vec3(0.0)))) { vec4 vx = vec4(v0.x, v1.x, v2.x, v3.x); vec4 vy = vec4(v0.y, v1.y, v2.y, v3.y); vec4 vz = vec4(v0.z, v1.z, v2.z, v3.z); if(period.x > 0.0) vx = mod(vx, period.x); if(period.y > 0.0) vy = mod(vy, period.y); if(period.z > 0.0) vz = mod(vz, period.z); i0 = floor(M * vec3(vx.x, vy.x, vz.x) + 0.5); i1 = floor(M * vec3(vx.y, vy.y, vz.y) + 0.5); i2 = floor(M * vec3(vx.z, vy.z, vz.z) + 0.5); i3 = floor(M * vec3(vx.w, vy.w, vz.w) + 0.5); } vec4 hash = permute( permute( permute( vec4(i0.z, i1.z, i2.z, i3.z )) + vec4(i0.y, i1.y, i2.y, i3.y )) + vec4(i0.x, i1.x, i2.x, i3.x )); vec4 theta = hash * 3.883222077; vec4 sz = hash * -0.006920415 + 0.996539792; vec4 psi = hash * 0.108705628; vec4 Ct = cos(theta), St = sin(theta); vec4 sz_prime = sqrt( 1.0 - sz*sz ); vec4 gx, gy, gz; if(alpha != 0.0) { vec4 px = Ct * sz_prime, py = St * sz_prime, pz = sz; vec4 Sp = sin(psi), Cp = cos(psi), Ctp = St*Sp - Ct*Cp; vec4 qx = mix( Ctp*St, Sp, sz), qy = mix(-Ctp*Ct, Cp, sz); vec4 qz = -(py*Cp + px*Sp); vec4 Sa = vec4(sin(alpha)), Ca = vec4(cos(alpha)); gx = Ca*px + Sa*qx; gy = Ca*py + Sa*qy; gz = Ca*pz + Sa*qz; } else { gx = Ct * sz_prime; gy = St * sz_prime; gz = sz; } vec3 g0 = vec3(gx.x, gy.x, gz.x), g1 = vec3(gx.y, gy.y, gz.y); vec3 g2 = vec3(gx.z, gy.z, gz.z), g3 = vec3(gx.w, gy.w, gz.w); vec4 w = 0.5-vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)); w = max(w, 0.0); vec4 w2 = w * w, w3 = w2 * w; vec4 gdotx = vec4(dot(g0,x0), dot(g1,x1), dot(g2,x2), dot(g3,x3)); float n = dot(w3, gdotx); vec4 dw = -6.0 * w2 * gdotx; vec3 dn0 = w3.x * g0 + dw.x * x0; vec3 dn1 = w3.y * g1 + dw.y * x1; vec3 dn2 = w3.z * g2 + dw.z * x2; vec3 dn3 = w3.w * g3 + dw.w * x3; gradient = 39.5 * (dn0 + dn1 + dn2 + dn3); return 39.5 * n; }#64,748,379text#64,487,108#64,431,947Inscription #64343238#64,343,238htmlInscription #64342948#64,342,948htmlInscription #64320039#64,320,039htmlInscription #61756502#61,756,502htmlInscription #61576015#61,576,015htmlInscription #61569076#61,569,076htmlInscription #61249426#61,249,426htmlInscription #60598843#60,598,843htmlInscription #60598819#60,598,819htmlInscription #60533514#60,533,514htmlInscription #59887784#59,887,784htmlInscription #59887782#59,887,782htmlInscription #59662836#59,662,836htmlInscription #59271363#59,271,363htmlInscription #57174533#57,174,533html#56,607,610jsInscription #56427009#56,427,009htmlInscription #55593776#55,593,776webpInscription #55507777#55,507,777htmlInscription #55494009#55,494,009htmlInscription #54200560#54,200,560htmlInscription #54190819#54,190,819htmlInscription #54190814#54,190,814htmlInscription #54188901#54,188,901htmlInscription #54108139#54,108,139htmlInscription #53982670#53,982,670htmlInscription #53981799#53,981,799htmlInscription #53676152#53,676,152html#53,660,808js