|
/*{ |
|
"pixelRatio": 0.5, |
|
"vertexCount": 1000, |
|
"vertexMode": "TRI_FAN", |
|
"PASSES": [{ |
|
"TARGET": "renderBuffer", |
|
"vs": "./particle.vert", |
|
}, { |
|
}], |
|
}*/ |
|
precision mediump float; |
|
uniform float time; |
|
uniform vec2 resolution; |
|
uniform int PASSINDEX; |
|
uniform sampler2D renderBuffer; |
|
uniform sampler2D backbuffer; |
|
varying vec4 v_color; |
|
|
|
mat2 mm2(in float a){float c = cos(a), s = sin(a);return mat2(c,s,-s,c);} |
|
mat2 m2 = mat2(0.95534, 0.29552, -0.29552, 0.95534); |
|
float tri(in float x){return clamp(abs(fract(x)-.5),0.01,0.49);} |
|
vec2 tri2(in vec2 p){return vec2(tri(p.x)+tri(p.y),tri(p.y+tri(p.x)));} |
|
|
|
float triNoise2d(in vec2 p, float spd) |
|
{ |
|
float z=1.8; |
|
float z2=2.5; |
|
float rz = 0.; |
|
p *= mm2(p.x*0.06); |
|
vec2 bp = p; |
|
for (float i=0.; i<5.; i++ ) |
|
{ |
|
vec2 dg = tri2(bp*1.85)*.75; |
|
dg *= mm2(time*spd); |
|
p -= dg/z2; |
|
|
|
bp *= 1.3; |
|
z2 *= .45; |
|
z *= .42; |
|
p *= 1.21 + (rz-1.0)*.02; |
|
|
|
rz += tri(p.x+tri(p.y))*z; |
|
p*= -m2; |
|
} |
|
return clamp(1./pow(rz*29., 1.3),0.,.55); |
|
} |
|
|
|
void main() { |
|
vec2 p = (gl_FragCoord.xy * 2. - resolution) / min(resolution.x, resolution.y); |
|
vec2 uv = gl_FragCoord.xy / resolution; |
|
// p = fract(abs(p)); |
|
// float t = fract(time * .1) * .8 + .2; |
|
// float t = .7; |
|
// uv = abs(mod(uv - .5, t * 2.) - t); |
|
// float d = .001; |
|
// p = abs(p); |
|
|
|
// uv.y = (uv.y - .5) * .5 + .5; |
|
uv = (uv - .5) * 1.2 + .5; |
|
// uv = (uv - .25) * (uv - .255) + .5; |
|
|
|
gl_FragColor = vec4(1); |
|
gl_FragColor.r = texture2D(renderBuffer, uv).g * .9; |
|
gl_FragColor += texture2D(backbuffer, uv).r * .3; |
|
// gl_FragColor.b = .8; |
|
gl_FragColor.gb = 1.3 - triNoise2d(uv, time *.02)*.0 - texture2D(backbuffer, uv + .01).gr; |
|
gl_FragColor.g = .7 - texture2D(renderBuffer, uv + .02).r;// * .2; |
|
gl_FragColor /= .7 - triNoise2d(uv * 3.2, time *.01); |
|
} |