Updated pack sources
This commit is contained in:
73
tools/packsrc/Homecomputer/shaders/Buffer B.frag
Normal file
73
tools/packsrc/Homecomputer/shaders/Buffer B.frag
Normal file
@@ -0,0 +1,73 @@
|
||||
// Homecomputer by nimitz 2016 (twitter: @stormoid)
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
|
||||
// Contact the author for other licensing options
|
||||
|
||||
//Rendering
|
||||
|
||||
/*
|
||||
This buffer renders each particles
|
||||
multiple times per frame to allow particles
|
||||
to move more than one pixel per frame while still
|
||||
leaving a solid trail.
|
||||
*/
|
||||
|
||||
#define time iTime
|
||||
const int numParticles = 100;
|
||||
const int stepsPerFrame = 9;
|
||||
|
||||
mat2 mm2(in float a){float c = cos(a), s = sin(a);return mat2(c,s,-s,c);}
|
||||
float mag(vec3 p){return dot(p,p);}
|
||||
|
||||
vec4 drawParticles(in vec3 ro, in vec3 rd, in float ints)
|
||||
{
|
||||
vec4 rez = vec4(0);
|
||||
vec2 w = 1./iResolution.xy;
|
||||
|
||||
for (int i = 0; i < numParticles; i++)
|
||||
{
|
||||
vec3 pos = texture(iChannel0, vec2(i,100.0)*w).rgb;
|
||||
vec3 vel = texture(iChannel0, vec2(i,0.0)*w).rgb;
|
||||
|
||||
float st = sin(time*0.6);
|
||||
|
||||
for(int j = 0; j < stepsPerFrame; j++)
|
||||
{
|
||||
float d = mag((ro + rd*dot(pos.xyz - ro, rd)) - pos.xyz);
|
||||
d *= 1000.;
|
||||
d = 2./(pow(d,1.+ sin(time*0.6)*0.15)+1.5);
|
||||
d *= (st+4.)*.8;
|
||||
|
||||
rez.rgb += d*(sin(vec3(.7,2.0,2.5)+float(i)*.015 + time*0.3 + vec3(5,1,6))*0.45+0.55)*0.005;
|
||||
|
||||
pos.xyz += vel*0.002*1.5;
|
||||
}
|
||||
}
|
||||
|
||||
return rez;
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord)
|
||||
{
|
||||
vec2 q = fragCoord.xy/iResolution.xy;
|
||||
vec2 p = fragCoord.xy/iResolution.xy-0.5;
|
||||
p.x*=iResolution.x/iResolution.y;
|
||||
|
||||
vec3 ro = vec3(0.,0.,2.7);
|
||||
vec3 rd = normalize(vec3(p,-.5));
|
||||
|
||||
vec3 sndNFO = texture(iChannel2, vec2(0.65, 0.1)).zwx + vec3(-.5, -0.1, -0.0);
|
||||
|
||||
vec4 cola = drawParticles(ro, rd, sndNFO.y)*10.;
|
||||
//if (mod(time+q.x*.15+q.y*0.15,28.) < 14.)cola = vec4(.9,.95,1.,1.)-cola*.9; //Invert colors
|
||||
|
||||
vec2 mv = vec2(pow(sndNFO.z,2.)*0.05,sndNFO.x*.95);
|
||||
mv *= mm2(time*1.);
|
||||
|
||||
vec4 colb = texture(iChannel1, q+mv);
|
||||
//vec4 colb = texture(iChannel1, q);
|
||||
|
||||
vec4 col = mix(cola, colb, 0.91);
|
||||
if (iFrame < 5) col = vec4(0);
|
||||
|
||||
fragColor = col;
|
||||
}
|
||||
Reference in New Issue
Block a user