mirror of
https://github.com/CookieCollective/Live-Coding-Sources.git
synced 2025-02-08 05:50:07 +01:00
Cookie Party 2019: shaders
This commit is contained in:
parent
94abc80e68
commit
2b98ca9473
128
2019-10-26/01-anat.glsl
Normal file
128
2019-10-26/01-anat.glsl
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
|
||||||
|
vec4 plas( vec2 v, float time )
|
||||||
|
{
|
||||||
|
float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 );
|
||||||
|
return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
#define saturate(x) clamp(x, 0., 1.)
|
||||||
|
|
||||||
|
float box(vec3 p) {
|
||||||
|
vec3 q = abs(p) - .3;
|
||||||
|
return length(max(q,0.)) + min( max(q.x, max(q.y,q.z)), 0.);
|
||||||
|
}
|
||||||
|
float map(vec3 p) {
|
||||||
|
vec3 pp = p;
|
||||||
|
p = mod(p,1.)-.5;
|
||||||
|
float d = box(p);
|
||||||
|
d = max(d, pp.y+1.);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
float rand(float s) {
|
||||||
|
return fract(sin(s)*42358.);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 albedo(vec3 p) {
|
||||||
|
vec2 id = floor(p.xz);
|
||||||
|
|
||||||
|
vec3 c = vec3(0.);
|
||||||
|
c += vec3(.5,.4,1.) * saturate( cos(length(id)+fGlobalTime*3.) *2.-1.);
|
||||||
|
|
||||||
|
if ( mod(fGlobalTime,10.) > 5.)
|
||||||
|
c = vec3(.2,.7,1.) * saturate(rand(id.x+rand(id.y)+floor(fGlobalTime*6.))*9.-8.);
|
||||||
|
|
||||||
|
c *= rand(id.x + rand(id.y))*5.;
|
||||||
|
c *= step(0.3, 1.-abs(p.y+1.));
|
||||||
|
return c;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vec3 normal(vec3 p) {
|
||||||
|
vec2 eps = vec2(0.01, 0.);
|
||||||
|
float d = map(p);
|
||||||
|
return normalize(vec3(d-map(p-eps.xyy),d-map(p-eps.yxy),d-map(p-eps.yyx)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mat2 rot(float v) {
|
||||||
|
float a = cos(v);
|
||||||
|
float b = sin(v);
|
||||||
|
return mat2(a,b,-b,a);
|
||||||
|
}
|
||||||
|
|
||||||
|
void camPath(inout vec3 ro, inout vec3 rd) {
|
||||||
|
float t = mod(fGlobalTime, 50.);
|
||||||
|
if(t < 10. ) {
|
||||||
|
ro = vec3(t*6.-50.,10., -20.);
|
||||||
|
rd.yz = rot(.6) * rd.yz;
|
||||||
|
} else if (t < 20.) {
|
||||||
|
ro = vec3(0.,4.+cos(t*.5)*4., t*10.);
|
||||||
|
rd.xy = rot(t*.1) * rd.xy;
|
||||||
|
rd.xz = rot(t*.01) * rd.xz;
|
||||||
|
rd.yz = rot(.3) * rd.yz;
|
||||||
|
} else if(t<40.) {
|
||||||
|
|
||||||
|
ro = vec3(0.,1., t*1.);
|
||||||
|
rd.xy = rot(+t*.1) * rd.xy;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd.xz = rot(-t*.1) * rd.xz;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd.yz = rot(-t*.1) * rd.yz;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd.xz = rot(t*.05) * rd.xz;
|
||||||
|
rd = -abs(rd);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
ro = vec3(1.,-2., -t*1.);
|
||||||
|
rd.yz = rot(-.25) * rd.yz;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd.xy = rot(t*.5) * rd.xy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
|
||||||
|
vec3 ro = vec3(0.,2., -15.);
|
||||||
|
vec3 rd = normalize(vec3(uv, 2.-length(uv)*.3));
|
||||||
|
camPath(ro,rd);
|
||||||
|
|
||||||
|
vec3 p = ro;
|
||||||
|
for(int i=0; i<256; i++) {
|
||||||
|
p += rd * map(p);
|
||||||
|
}
|
||||||
|
vec3 n = normal(p);
|
||||||
|
vec3 col = vec3(0.);
|
||||||
|
col += vec3(1.) * abs(n.y)*.01;
|
||||||
|
col += albedo(p)*5.;
|
||||||
|
col += albedo(p+n) * 10. *exp( -length(fract(p)*2.-1.)*4.);
|
||||||
|
|
||||||
|
col = mix(col, vec3(0.), saturate(length(p-ro)*0.03));
|
||||||
|
|
||||||
|
vec2 q = uv *.5+.5;
|
||||||
|
col *= pow( q.x*q.y*(1.-q.x)*(1.-q.y)*10., 0.25)*1.5;
|
||||||
|
col = pow(col, vec3(.4545));
|
||||||
|
out_color = vec4(col,1.);
|
||||||
|
}
|
129
2019-10-26/01-flopine.glsl
Normal file
129
2019-10-26/01-flopine.glsl
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
|
||||||
|
float time = fGlobalTime;
|
||||||
|
float PI = 3.141592;
|
||||||
|
|
||||||
|
float BPM = 70./60.;
|
||||||
|
|
||||||
|
float hash21(vec2 x)
|
||||||
|
{return fract(sin(dot(x,vec2(12.4,13.4)))*12124.4);}
|
||||||
|
|
||||||
|
void moda(inout vec2 p, float rep)
|
||||||
|
{
|
||||||
|
float per = 2.*PI/rep;
|
||||||
|
float a= atan(p.y,p.x);
|
||||||
|
float l = length(p);
|
||||||
|
a = mod(a,per)-per*0.5;
|
||||||
|
p = vec2(cos(a),sin(a))*l;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 rot(float a)
|
||||||
|
{return mat2(cos(a),sin(a),-sin(a),cos(a));}
|
||||||
|
|
||||||
|
float stmin (float a, float b, float k, float n)
|
||||||
|
{
|
||||||
|
float st = k/n;
|
||||||
|
float u = b-k;
|
||||||
|
return min(min(a,b), 0.5*(u+a+abs(mod(u-a+st,2.*st)-st)));
|
||||||
|
}
|
||||||
|
|
||||||
|
float cyl (vec2 p, float r)
|
||||||
|
{return length(p)-r;}
|
||||||
|
|
||||||
|
float od (vec3 p, float d)
|
||||||
|
{
|
||||||
|
p.xz *= rot(time);
|
||||||
|
return dot(p,normalize(sign(p)))-d;
|
||||||
|
}
|
||||||
|
|
||||||
|
float tunnel (vec3 p)
|
||||||
|
{
|
||||||
|
p.x += texture(texNoise, p.yz*0.15+vec2(0.,time)).r*0.9;
|
||||||
|
p.y += texture(texNoise, p.xz*0.1+vec2(0.,time)).r;
|
||||||
|
|
||||||
|
return -cyl(p.xy, 6.);
|
||||||
|
}
|
||||||
|
|
||||||
|
float g1 =0.;
|
||||||
|
float jelly (vec3 p)
|
||||||
|
{
|
||||||
|
|
||||||
|
p.x += mix(0.,-0.5+hash21(p.yz),exp(-fract(time*BPM)*8.)*6.);
|
||||||
|
p.y += mix(0.,-0.5+hash21(p.xz),exp(-fract(time*BPM)*8.)*6.)*0.5;
|
||||||
|
|
||||||
|
p.y += sin(p.z*0.5+time);
|
||||||
|
|
||||||
|
moda(p.xy, 3.);
|
||||||
|
p.x -= 2.5;
|
||||||
|
|
||||||
|
p.xy *=rot(p.z*0.5+time);
|
||||||
|
moda(p.xy, 3.);
|
||||||
|
p.x -= 1.3;
|
||||||
|
|
||||||
|
p.z -= 5.;
|
||||||
|
p.yz *= rot(PI/2.);
|
||||||
|
|
||||||
|
float o = od(p, .5);
|
||||||
|
p.y += 2.;
|
||||||
|
p.xz *= rot(sin(p.y+time));
|
||||||
|
moda(p.xz, 8.);
|
||||||
|
p.x -=.4;
|
||||||
|
float d = stmin(o,max(cyl(p.xz, 0.04+p.y*0.1),abs(p.y)-1.5),0.4, 4.);
|
||||||
|
g1 += 0.1/(0.1+d*d);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
float SDF (vec3 p)
|
||||||
|
{
|
||||||
|
return min(jelly(p),tunnel(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
|
||||||
|
float dither = hash21(uv);
|
||||||
|
|
||||||
|
vec3 ro = vec3(0.001,0.001,-5.),
|
||||||
|
p = ro,
|
||||||
|
rd = normalize(vec3(uv,1.)),
|
||||||
|
col = vec3(0.);
|
||||||
|
|
||||||
|
float shad = 0.;
|
||||||
|
|
||||||
|
for (float i=0.; i<64.; i++)
|
||||||
|
{
|
||||||
|
float d = SDF(p);
|
||||||
|
if (d<0.001)
|
||||||
|
{
|
||||||
|
shad = i/64.;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
d *= 0.8+dither*0.1;
|
||||||
|
p+=d*rd;
|
||||||
|
}
|
||||||
|
|
||||||
|
float t= length(ro-p);
|
||||||
|
col = vec3(shad);
|
||||||
|
col += g1*vec3(0.5,0.4,0.)*0.3;
|
||||||
|
col = mix(col, vec3(0.,0.4,0.6)*0.3, 1.-exp(-0.005*t*t));
|
||||||
|
out_color = vec4(sqrt(col),1.);
|
||||||
|
}
|
48
2019-10-26/02-LJ.glsl
Normal file
48
2019-10-26/02-LJ.glsl
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
#define time fGlobalTime
|
||||||
|
mat2 r2d(float a){float sa=sin(a),ca=cos(a);return mat2(ca,sa,-sa,ca);}
|
||||||
|
vec2 amod(vec2 p,float a){a=mod(atan(p.x,p.y),a)-a*.5;return vec2(cos(a),sin(a))*length(p);}
|
||||||
|
float so(vec3 p){return dot(p,normalize(sign(p+1e-6)));}
|
||||||
|
float map( vec3 p) {
|
||||||
|
vec3 o=p;
|
||||||
|
|
||||||
|
p.z=mod(p.z,4.)-2.;
|
||||||
|
p.xy*=r2d(time*sign(mod(o.z,8.)-4.));
|
||||||
|
//p.x=max(abs(p.x)-.5,0.)-1.;
|
||||||
|
p.yx=amod(p.xy,.5);
|
||||||
|
p.y=max(abs(p.y)-1.,0.);
|
||||||
|
p.z=max(abs(p.z)-.5,0.)-.5;
|
||||||
|
for(int i=0;i<5;i++)
|
||||||
|
p=max(abs(p)-vec3(.0,.1-sin(o.z*.1)*.2,-.1),0.)-vec3(.2,.2,.5),p.xy*=r2d(.4),p.xz*=r2d(.7);
|
||||||
|
return max(so(p)-.15-texture(texFFTSmoothed,.05).r*10.,-so(max(abs(o.xyy)-sin(32.+o.z*.07)*.1,0.))+1.);-max(-o.y-1.,0.);
|
||||||
|
|
||||||
|
}
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
if(fract(time*.2)<.5)uv=abs(amod(uv,2.09)),uv.x=abs(uv.x)-texture(texFFTSmoothed,.02).r*10.;
|
||||||
|
uv.x+=texture(texTex2,uv.yy*100.).r*texture(texFFT,.5).r;
|
||||||
|
vec2 p=uv;
|
||||||
|
vec3 ro=vec3(0,.0,-time*2.-texture(texFFTIntegrated,.22).r*25.),rd=normalize(vec3(2*p*r2d(texture(texFFTIntegrated,.1).r*5.),-1.-texture(texFFT,.01).r*2.)),mp;
|
||||||
|
float md;mp=ro;int ri;
|
||||||
|
for(int i=0;i<100;i++)if(ri=i,mp+=rd*(md=map(mp)),md<.001)break;
|
||||||
|
|
||||||
|
out_color = vec4(float(ri)/100.)*mix(vec4(.4,.5,.7,1),vec4(.7,.5,.3,1),length(uv)+texture(texNoise,uv+time).r)*2.;
|
||||||
|
}
|
115
2019-10-26/02-evvvvil.glsl
Normal file
115
2019-10-26/02-evvvvil.glsl
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
//evvvvil
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
vec2 s,v,e=vec2(.00035,-.00035);float t,tt,g,bb,mm,noi;vec3 po,no,al,ld;
|
||||||
|
vec4 np,c=vec4(0,0,14,0.2);
|
||||||
|
float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);}
|
||||||
|
mat2 r2(float r){ return mat2(cos(r),sin(r),-sin(r),cos(r));}
|
||||||
|
float smin(float a,float b,float h){
|
||||||
|
float k=clamp((a-b)/h*.5+.5,0.,1.);
|
||||||
|
return mix(a,b,k)-k*(1-k)*h;
|
||||||
|
|
||||||
|
}
|
||||||
|
vec2 smin2(vec2 a,vec2 b,float h){
|
||||||
|
float k=clamp((a.x-b.x)/h*.5+.5,0.,1.);
|
||||||
|
return mix(a,b,k)-k*(1-k)*h;
|
||||||
|
}
|
||||||
|
vec2 syn( vec3 p)
|
||||||
|
{
|
||||||
|
p.x-=sin(p.y*15+tt*10)*0.03;
|
||||||
|
noi=texture(texNoise,vec2(.1,.2)*vec2(p.y,dot(p.xz,vec2(.7)))).r;
|
||||||
|
bb=cos(p.y*.25+tt*2)*.5+.5;
|
||||||
|
float h,t=length(p.xz-(sin(p.xz*1.5-tt)*.5+cos(p.y*2+noi*5-tt)*.3))-(1+bb*2);
|
||||||
|
p=abs(p)-(1+bb*2);
|
||||||
|
p.xy*=r2(-.5);
|
||||||
|
p.yz*=r2(.5);
|
||||||
|
p+=cos(p.y)*.2;
|
||||||
|
h=length(p.xz)-(.4+.3*sin(p.y*.5+noi*3)+.3*(.5+.5*sin(p.y*2-tt*3)));
|
||||||
|
t=smin(t,h,.5);
|
||||||
|
return vec2(t*.5,bb);
|
||||||
|
}
|
||||||
|
vec2 mp( vec3 p)
|
||||||
|
{
|
||||||
|
np=vec4(p,1);
|
||||||
|
mm=sin(tt-p.y*.5)*2;
|
||||||
|
vec2 h,t=syn(p);
|
||||||
|
for(int i=0;i<2;i++){
|
||||||
|
np*=2;
|
||||||
|
np.xyz=abs(np.xyz)-vec3(8.5+mm,8.5,8.5+mm);
|
||||||
|
np.xy*=r2(-.4);
|
||||||
|
np.yz*=r2(.2);
|
||||||
|
h=syn(np.xyz);
|
||||||
|
h.x/=np.w;
|
||||||
|
t=smin2(t,h,0.5);
|
||||||
|
}
|
||||||
|
np.xz*=r2(.785);
|
||||||
|
h=vec2(bo(abs(np.xyz)-3.*mm,vec3(0,100,0)),1.);
|
||||||
|
g+=0.1/(0.1+h.x*h.x*.2);
|
||||||
|
h.x=h.x*0.7/np.w;
|
||||||
|
t=t.x<h.x?t:h;
|
||||||
|
bb=texture(texNoise,p.xz*.1).r;
|
||||||
|
h=vec2(0.5*length(p+vec3(0,70,0)-mm+bb*3)-30,1-bb*3);
|
||||||
|
t=smin2(t,h,.5);
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
vec2 tr( vec3 ro,vec3 rd )
|
||||||
|
{
|
||||||
|
vec2 h,t=vec2(.1);
|
||||||
|
for(int i=0;i<128;i++){
|
||||||
|
h=mp(ro+rd*t.x);
|
||||||
|
if(h.x<.0001||t.x>30) break;
|
||||||
|
t.x+=h.x;t.y=h.y;
|
||||||
|
}
|
||||||
|
if(t.x>30) t.x=0;
|
||||||
|
return t;
|
||||||
|
|
||||||
|
}
|
||||||
|
#define a(d) clamp(mp(po+no*d).x/d,0.,1.)
|
||||||
|
#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d)
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
tt=mod(fGlobalTime,62.83);
|
||||||
|
vec3 ro=vec3(cos(tt*c.w+c.x)*c.z,-5+cos(tt*.2)*5,sin(tt*c.w+c.x)*c.z),
|
||||||
|
cw=normalize(vec3(0,sin(tt*.4)*10,0)-ro),
|
||||||
|
cu=normalize(cross(cw,vec3(0,1,0))),
|
||||||
|
cv=normalize(cross(cu,cw)),
|
||||||
|
rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo;
|
||||||
|
ld=normalize(vec3(.1,.3,0));
|
||||||
|
v=vec2(abs(atan(rd.x,rd.z)),rd.y);
|
||||||
|
co=fo=vec3(.2)+texture(texNoise,v*.4).r*.5;;
|
||||||
|
|
||||||
|
s=tr(ro,rd);t=s.x;
|
||||||
|
|
||||||
|
if(t>0){
|
||||||
|
po=ro+rd*t;
|
||||||
|
no=normalize(e.xyy*mp(po+e.xyy).x+
|
||||||
|
e.yyx*mp(po+e.yyx).x+
|
||||||
|
e.xxx*mp(po+e.xxx).x+
|
||||||
|
e.yxy*mp(po+e.yxy).x);
|
||||||
|
al=mix(vec3(.3,.6,.9),vec3(.6,.3,.2),bb*3);
|
||||||
|
float dif=max(0,dot(no,ld)),
|
||||||
|
fr=pow(1+dot(no,rd),4),
|
||||||
|
sp=pow(max(dot(reflect(-ld,no),-rd),0),30);
|
||||||
|
co=mix(sp+al*(a(.2)*a(.4)+.2)*(dif+s(.4)+s(2)),fo,min(fr,.5));
|
||||||
|
co=mix(fo,co,exp(-.0002*t*t*t));//fog
|
||||||
|
}
|
||||||
|
|
||||||
|
out_color = vec4(pow(co+g*0.1,vec3(.45)),1);
|
||||||
|
}
|
60
2019-10-26/03-LJ.glsl
Normal file
60
2019-10-26/03-LJ.glsl
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
#define time fGlobalTime
|
||||||
|
mat2 r2d(float a){float sa=sin(a),ca=cos(a);return mat2(ca,sa,-sa,ca);}
|
||||||
|
float sc(vec3 p){
|
||||||
|
vec3 a=abs(p);return min(min(max(a.x,a.y),max(a.y,a.z)),max(a.x,a.z));
|
||||||
|
}
|
||||||
|
vec2 amod(vec2 p,float a){a=mod(atan(p.x,p.y),a)-a*.5;return vec2(cos(a),sin(a))*length(p);}
|
||||||
|
float rand(float a){return fract(sin(a)*32163.52131);}
|
||||||
|
float map(vec3 p){
|
||||||
|
/* vec3 o=p;
|
||||||
|
p.xy=p.xy=amod(p.xy,radians(120)*sin(o.z*.1)),p.x+=.2;
|
||||||
|
p=mod(p,1)-.5;
|
||||||
|
return sc(p)-.01;
|
||||||
|
*/
|
||||||
|
vec3 o=p;
|
||||||
|
vec3 w=p;
|
||||||
|
w.x=abs(w.x)-3.-rand(floor(w.z*.25));
|
||||||
|
w.z=mod(w.z,4.)-2.;
|
||||||
|
w.xy*=r2d(o.z*.1);
|
||||||
|
w=abs(w);
|
||||||
|
float h=0;
|
||||||
|
if(p.y<1)
|
||||||
|
h=+texture(texNoise,p.xz*.1+texture(texNoise,p.xz*.5+time*.02).g*.1).r+texture(texNoise,p.xz*.02).g*5.;
|
||||||
|
return min(min(p.y+h,length(p.xy+vec2(0,-1))-.1-sin(time+p.z*3.)*cos(p.z*.2)*.05),(max(w.x,w.z)-.1)*.5);
|
||||||
|
|
||||||
|
}
|
||||||
|
vec2 p;
|
||||||
|
float render(float o){
|
||||||
|
float g=time*2.,a=floor(g)+pow(fract(g),5.);
|
||||||
|
vec3 ro=vec3(p*r2d(-length(p))+o+vec2(0,.2),-time*7.-a*5.),rd=normalize(vec3(p*r2d(time*.1),-1)),mp;
|
||||||
|
float md;mp=ro;int ri;
|
||||||
|
for(int i=0;i<70;i++)if(ri=i,mp+=rd*(md=map(mp)),md<.01)break;
|
||||||
|
return float(ri)/70.;
|
||||||
|
}
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
|
||||||
|
p=uv;
|
||||||
|
|
||||||
|
float a=.02;
|
||||||
|
out_color = vec4(vec3(1,0,0)*render(a)+vec3(0,1,1)*render(-a),1);
|
||||||
|
}
|
126
2019-10-26/03-anat.glsl
Normal file
126
2019-10-26/03-anat.glsl
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
|
||||||
|
vec4 plas( vec2 v, float time )
|
||||||
|
{
|
||||||
|
float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 );
|
||||||
|
return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
#define saturate(x) clamp(x, 0., 1.)
|
||||||
|
|
||||||
|
float fbm(vec2 p) {
|
||||||
|
float d = texture(texNoise,p).r * .5;
|
||||||
|
d += texture(texNoise,p*2.).r * .25;
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
float water(vec3 p) {
|
||||||
|
return p.y + texture(texNoise, p.xz*.1+vec2(0.,fGlobalTime*.1)).r*.2+ texture(texNoise, p.xz*.1+vec2(0.,-fGlobalTime*.01)).r*.125 +1.5;
|
||||||
|
}
|
||||||
|
float map(vec3 p) {
|
||||||
|
float d = -(length(p.xy)-2.);
|
||||||
|
d = max(d, p.y-1.);
|
||||||
|
p.z = mod(p.z, 20.)-10.;
|
||||||
|
d = min(d, length(p.yz+vec2(-1.5+sin(p.x*.5+5.),0.))-2.);
|
||||||
|
d += fbm(p.xz*.1)*3.;
|
||||||
|
d = min(d, water(p));
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vec3 raymarch(vec3 ro, vec3 rd) {
|
||||||
|
vec3 p = ro;
|
||||||
|
for(int i=0; i<32; i++ ) {
|
||||||
|
p += rd * map(p)*1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 ld = normalize(vec3(cos(fGlobalTime),.4,1.));
|
||||||
|
|
||||||
|
vec3 sky(vec3 rd) {
|
||||||
|
vec3 c = pow( vec3(.3,.5,1.), vec3(rd.y*2.));
|
||||||
|
c += vec3(1.,.7,.3) / (1.+length(rd-ld)*200.)*20.;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 normal(vec3 p) {
|
||||||
|
float d = map(p);
|
||||||
|
vec2 eps = vec2(0.01, 0.);
|
||||||
|
return normalize(vec3(d-map(p-eps.xyy),d-map(p-eps.yxy),d-map(p-eps.yyx)));
|
||||||
|
}
|
||||||
|
float shadow(vec3 ro, vec3 ld) {
|
||||||
|
vec3 p = ro;
|
||||||
|
for(int i=0; i<8; i++) {
|
||||||
|
p += map(p) * ld;
|
||||||
|
}
|
||||||
|
return step(.5, length(p-ro));
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 rot(float v) {
|
||||||
|
float a = cos(v);
|
||||||
|
float b = sin(v);
|
||||||
|
return mat2(a,b,-b,a);
|
||||||
|
}
|
||||||
|
|
||||||
|
float rand(float v) {
|
||||||
|
return fract(sin(v)*42358.);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 shade(vec3 ro, vec3 rd, vec3 p, vec3 n) {
|
||||||
|
|
||||||
|
vec3 col = vec3(0);
|
||||||
|
float shad = shadow(p, ld);
|
||||||
|
col += vec3(1.,.7,.3) * max(dot(n,ld), 0.)*.2 * shad;
|
||||||
|
|
||||||
|
col += vec3(.7,.3,1.) *3.* saturate(rand(floor(p.z)+floor(fGlobalTime*3.))*9.-8.);
|
||||||
|
col = mix(col, sky(rd), saturate( length(p-ro) * .01));
|
||||||
|
|
||||||
|
return col;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
|
||||||
|
vec3 ro = vec3(0.,-1.,fGlobalTime*3.);
|
||||||
|
vec3 rd = normalize(vec3(uv, 1.));
|
||||||
|
|
||||||
|
vec3 rdd = rd;
|
||||||
|
rd.xy = rot(fGlobalTime*.1) * rd.xy;
|
||||||
|
rd.yz = rot(fGlobalTime*.05) * rd.yz;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd.xy = rot(fGlobalTime*.05) * rd.xy;
|
||||||
|
rd = -abs(rd);
|
||||||
|
rd = mix(rd, rdd, cos(fGlobalTime*.21)*.3+.7);
|
||||||
|
vec3 p = raymarch(ro,rd);
|
||||||
|
vec3 n = normal(p);
|
||||||
|
vec3 col = shade(ro,rd, p, n);
|
||||||
|
|
||||||
|
if(water(p)- map(p) < 0.01) {
|
||||||
|
rd = reflect(rd,n);
|
||||||
|
p = raymarch(p+rd*.1,rd);
|
||||||
|
col = vec3(.1,.7,1.) * shade(ro,rd,p,n);
|
||||||
|
}
|
||||||
|
|
||||||
|
col = pow(col, vec3(.4545));
|
||||||
|
out_color = vec4(col, 1.);
|
||||||
|
}
|
105
2019-10-26/04-evvvvil.glsl
Normal file
105
2019-10-26/04-evvvvil.glsl
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
vec2 s,v,e=vec2(.00035,-.00035);float t,tt,g,d01;vec3 np,pp,bp,al,po,no,ld;
|
||||||
|
vec4 c=vec4(0,5,10,0.2);
|
||||||
|
float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);}
|
||||||
|
mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));}
|
||||||
|
vec2 ball( vec3 p,float d,float mm,float mul,float bro)
|
||||||
|
{
|
||||||
|
p.z=mod(p.z+tt*10,30)-15;
|
||||||
|
bp=p*.28;p*=bro;
|
||||||
|
d01=d*.5+.5;
|
||||||
|
vec2 h,t=vec2(length(p)-5,3);
|
||||||
|
t.x=max(t.x,-bo(p,vec3(2.8*mul)));
|
||||||
|
t.x=min(t.x,length(p)-2*mul);
|
||||||
|
t.x=abs(t.x)-.3;
|
||||||
|
pp=p;pp.xy*=r2(sin(p.z*.2)+tt*(2-d01)*d)*(mul*.5+.5);
|
||||||
|
t.x=max(t.x,bo(abs(abs(p)-vec3(0,0,2))-vec3(0,0,1),vec3(10,3,.6)));
|
||||||
|
np=p;
|
||||||
|
np.xy*=r2(mix(tt,1.59+sin(tt*.5),d01)*d);
|
||||||
|
t.x=max(t.x,np.x);
|
||||||
|
|
||||||
|
h=vec2(length(p)-5,mm);
|
||||||
|
h.x=max(h.x,-bo(p,vec3(2.8*mul)));
|
||||||
|
h.x=min(h.x,length(p)-2*mul);
|
||||||
|
h.x=abs(abs(h.x)-.1)-.05;
|
||||||
|
h.x=max(h.x,bo(abs(abs(p)-vec3(0,0,2))-vec3(0,0,1),vec3(10,4,.7)));
|
||||||
|
h.x=max(h.x,np.x);
|
||||||
|
t=mix(t,h,step(h.x,t.x));
|
||||||
|
t/=bro*1.5;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
vec2 mp( vec3 p)
|
||||||
|
{
|
||||||
|
vec2 h,t=ball(p,-1,6,1,1);
|
||||||
|
h=ball(p,1,5,1,.28);
|
||||||
|
t=mix(t,h,step(h.x,t.x));
|
||||||
|
h=ball(p,-1,6,-1,.19);
|
||||||
|
t=mix(t,h,step(h.x,t.x));
|
||||||
|
h=vec2(length(p.xy)-.5,3);
|
||||||
|
t=mix(t,h,step(h.x,t.x));
|
||||||
|
pp=bp;pp.xy*=r2(-tt+sin(pp.z));
|
||||||
|
h=vec2(bo(pp,vec3(30,0.001,0.01)),6);
|
||||||
|
g+=0.1/(0.1+h.x*h.x*40);
|
||||||
|
t=mix(t,h,step(h.x,t.x));
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
vec2 tr( vec3 ro,vec3 rd )
|
||||||
|
{
|
||||||
|
vec2 h,t=vec2(.1);
|
||||||
|
for(int i=0;i<128;i++){
|
||||||
|
h=mp(ro+rd*t.x);
|
||||||
|
if(h.x<.0001||t.x>120) break;
|
||||||
|
t.x+=h.x;t.y=h.y;
|
||||||
|
}
|
||||||
|
if(t.x>120) t.x=0;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
float a(float d){return clamp(mp(po+no*d).x/d,0.,1.);}
|
||||||
|
float ss(float d){return smoothstep(0.,1.,mp(po+ld*d).x/d);}
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
tt=mod(fGlobalTime,62.83);
|
||||||
|
vec3 ro=vec3(cos(tt*.5)*3,16+sin(tt)*3,-10),
|
||||||
|
cw=normalize(vec3(0)-ro),
|
||||||
|
cu=normalize(cross(cw,vec3(0,1,0))),
|
||||||
|
cv=normalize(cross(cu,cw)),
|
||||||
|
rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo;
|
||||||
|
ld=normalize(vec3(.4,.7,-.2));
|
||||||
|
co=fo=vec3(.3);
|
||||||
|
s=tr(ro,rd);t=s.x;
|
||||||
|
if(t>0){
|
||||||
|
po=ro+rd*t;
|
||||||
|
no=normalize(e.xyy*mp(po+e.xyy).x+
|
||||||
|
e.yyx*mp(po+e.yyx).x+
|
||||||
|
e.yxy*mp(po+e.yxy).x+
|
||||||
|
e.xxx*mp(po+e.xxx).x);
|
||||||
|
al=mix(vec3(.25,.5,.0),vec3(0,.2,.3),min(length(bp)-2.5,1));
|
||||||
|
|
||||||
|
float dif=max(0,dot(no,ld)),
|
||||||
|
spo=20,
|
||||||
|
fr=pow(1+dot(no,rd),4),
|
||||||
|
sp=pow(max(dot(reflect(-ld,no),-rd),0),spo);
|
||||||
|
co=mix(sp+al*(a(.2)*a(.4)+.2)*(dif+ss(.4)+ss(2)),fo,min(fr,.2));
|
||||||
|
co=mix(fo,co,exp(-.00001*t*t*t));
|
||||||
|
}
|
||||||
|
|
||||||
|
out_color = vec4(pow(co+g*.3,vec3(.45)),1);
|
||||||
|
}
|
144
2019-10-26/04-flopine.glsl
Normal file
144
2019-10-26/04-flopine.glsl
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
#version 410 core
|
||||||
|
|
||||||
|
uniform float fGlobalTime; // in seconds
|
||||||
|
uniform vec2 v2Resolution; // viewport resolution (in pixels)
|
||||||
|
|
||||||
|
uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq
|
||||||
|
uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients
|
||||||
|
uniform sampler1D texFFTIntegrated; // this is continually increasing
|
||||||
|
uniform sampler2D texChecker;
|
||||||
|
uniform sampler2D texNoise;
|
||||||
|
uniform sampler2D texTex1;
|
||||||
|
uniform sampler2D texTex2;
|
||||||
|
uniform sampler2D texTex3;
|
||||||
|
uniform sampler2D texTex4;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything
|
||||||
|
|
||||||
|
#define hr vec2(1., sqrt(3.))
|
||||||
|
#define hdetail 5.
|
||||||
|
#define vdetail 15.
|
||||||
|
#define time fGlobalTime
|
||||||
|
#define PI 3.141592
|
||||||
|
|
||||||
|
|
||||||
|
vec2 hash22 (vec2 x)
|
||||||
|
{return fract(sin(vec2(dot(x,vec2(23.4,15.1)),dot(x,vec2(12.4,56.4))))*124.5);}
|
||||||
|
|
||||||
|
float hash21 (vec2 x)
|
||||||
|
{return fract(sin(dot(x,vec2(12.4,15.65)))*1245.21);}
|
||||||
|
|
||||||
|
vec3 voro (vec2 uv)
|
||||||
|
{
|
||||||
|
uv *= vdetail;
|
||||||
|
vec2 uv_id = floor(uv);
|
||||||
|
vec2 uu = fract(uv);
|
||||||
|
|
||||||
|
vec2 m_point, m_nei,m_diff;
|
||||||
|
float m_dist = 10.;
|
||||||
|
|
||||||
|
for (int i=-1; i<=1;i++)
|
||||||
|
{
|
||||||
|
for (int j=-1; j<=1;j++)
|
||||||
|
{
|
||||||
|
vec2 nei = vec2(float(i),float(j));
|
||||||
|
vec2 point = hash22(nei + uv_id);
|
||||||
|
point = 0.5+0.5*sin(2.*PI*point+time);
|
||||||
|
vec2 diff = nei + point - uu;
|
||||||
|
float dist = length(diff);
|
||||||
|
if (dist < m_dist)
|
||||||
|
{
|
||||||
|
m_point = point;
|
||||||
|
m_nei = nei;
|
||||||
|
m_dist = dist;
|
||||||
|
m_diff = diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vec3(m_point, m_dist);
|
||||||
|
}
|
||||||
|
|
||||||
|
float hdist (vec2 uv)
|
||||||
|
{
|
||||||
|
uv = abs(uv);
|
||||||
|
return max(uv.x, dot(uv, normalize(hr)));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 hgrid (vec2 uv)
|
||||||
|
{
|
||||||
|
uv *= hdetail;
|
||||||
|
vec2 ga = mod(uv, hr)-hr*0.5;
|
||||||
|
vec2 gb = mod(uv-hr*0.5, hr)-hr*0.5;
|
||||||
|
|
||||||
|
vec2 guv = (dot(ga,ga) < dot(gb,gb))? ga : gb;
|
||||||
|
|
||||||
|
vec2 id = uv-guv;
|
||||||
|
|
||||||
|
guv.y = 0.5-hdist(guv);
|
||||||
|
|
||||||
|
return vec4 (guv,id);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 blue_grid(vec2 uv)
|
||||||
|
{
|
||||||
|
vec3 v = voro(uv);
|
||||||
|
return clamp(vec3(hash22(v.xy).r,hash22(v.xy).y, 1.),0.,1.);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 frame(vec2 uv)
|
||||||
|
{
|
||||||
|
vec4 hg = hgrid(uv);
|
||||||
|
return blue_grid(uv)*step(0.05, hg.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 rot(float a)
|
||||||
|
{return mat2(cos(a),sin(a),-sin(a),cos(a));}
|
||||||
|
|
||||||
|
float od (vec3 p, float d)
|
||||||
|
{return dot(p,normalize(sign(p)))-d;}
|
||||||
|
|
||||||
|
float g1 = 0.;
|
||||||
|
float SDF (vec3 p)
|
||||||
|
{
|
||||||
|
p.xz *= rot(time);
|
||||||
|
p.yz *= rot(time);
|
||||||
|
p.x -= sin(time);
|
||||||
|
float d = od (p, 1.);
|
||||||
|
g1 += 0.1/(0.1+d*d);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);
|
||||||
|
uv -= 0.5;
|
||||||
|
uv /= vec2(v2Resolution.y / v2Resolution.x, 1);
|
||||||
|
|
||||||
|
vec3 ro = vec3(0.001,0.001,-7.),
|
||||||
|
p = ro,
|
||||||
|
rd = normalize(vec3(uv,1.)),
|
||||||
|
col = vec3(0.01);
|
||||||
|
|
||||||
|
float shad = 0.;
|
||||||
|
|
||||||
|
for (float i=0.; i<64.; i++)
|
||||||
|
{
|
||||||
|
float d = SDF(p);
|
||||||
|
if (d<0.001)
|
||||||
|
{
|
||||||
|
shad = i/64.;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
p += d*rd;
|
||||||
|
}
|
||||||
|
|
||||||
|
col = vec3(1.-shad);
|
||||||
|
col *= g1;
|
||||||
|
col *= frame(uv);
|
||||||
|
|
||||||
|
|
||||||
|
out_color = vec4(col,1.);
|
||||||
|
}
|
41
2019-10-26/Readme.md
Normal file
41
2019-10-26/Readme.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Shader Showdown @ Cookie Party 2019
|
||||||
|
|
||||||
|
On October 26th, 2019 during the [Cookie Party](http://cookie.paris/) at [Au Landi Sauvage](https://www.facebook.com/clossauvage/).
|
||||||
|
|
||||||
|
Evvvvvil is selected to participate to the Grand Final at Revision 2020!
|
||||||
|
|
||||||
|
Thanks to Havoc for judging the Shader Showdown.
|
||||||
|
|
||||||
|
## Rounds
|
||||||
|
|
||||||
|
1. Anat vs Flopine
|
||||||
|
2. Evvvvil vs LJ
|
||||||
|
3. Anat vs LJ (Third place playoff)
|
||||||
|
4. Evvvvil vs Flopine (Final)
|
||||||
|
|
||||||
|
## Tournament view
|
||||||
|
|
||||||
|
```
|
||||||
|
Main Tournament:
|
||||||
|
|
||||||
|
Anat ----
|
||||||
|
} Flopine --
|
||||||
|
Flopine - \
|
||||||
|
} Evvvvil
|
||||||
|
Evvvvil - /
|
||||||
|
} Evvvvvil -
|
||||||
|
LJ ------
|
||||||
|
|
||||||
|
```
|
||||||
|
```
|
||||||
|
Third place playoff:
|
||||||
|
|
||||||
|
Anat ----
|
||||||
|
} LJ
|
||||||
|
LJ ------
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Software
|
||||||
|
|
||||||
|
[Bonzomatic](https://github.com/Gargaj/Bonzomatic)
|
Loading…
Reference in New Issue
Block a user