Add 2018-03-07

This commit is contained in:
Jonathan Giroux 2018-04-22 13:40:49 +02:00
parent 53ff6007be
commit e1e649ac3e
14 changed files with 1052 additions and 0 deletions

92
2018-03-07/01-anton.frag Normal file
View File

@ -0,0 +1,92 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
mat2 rot(float a)
{
float c = cos(a); float s = sin(a);
return mat2(c,-s,s,c);
}
float map (vec3 pos) {
float scene = 1000.;
vec3 posP = pos;
//posP.y += sin(posP.x * 1.);
float plane = posP.y + 2.;
vec3 pos2 = pos;
pos2. y += sin(time) * 1. - 2.;
pos2.xz *= rot(time);
pos2.x = abs(pos.x);
pos2.y -= pos2.x;
scene = min(scene,plane);
scene = min(scene, sdSphere(pos2, 1.));
vec3 posCy = pos;
posCy.x = mod(posCy.x +2.5, 5.) - 2.5;
posCy.x += sin(time + pos.z);
float cyle = distance(posCy.xy,vec2(0.,-1.)) - 1.;
scene = min(scene,cyle);
return scene;
}
vec3 normal(vec3 p)
{
vec2 e = vec2(.001,.0);
return normalize(
vec3(
map(p - e.xyy) - map(p + e.xyy),
map(p - e.yxy) - map(p + e.yxy),
map(p - e.yyx) - map(p + e.yyx)
)
);
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(0,5,-10);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./100.) {
float dist = map(pos);
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 light = vec3 (0. + sin(time),-10. , 12.* cos(time));
vec3 norm = normal(pos);
float li = dot(normalize(light - pos), norm);
vec3 color = vec3(1.);
color *= li;
gl_FragColor = vec4(norm * color * .75 + .2, 1);
}

View File

@ -0,0 +1,71 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
float box(vec3 p, vec3 b)
{
vec3 d = abs(p) - b;
return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0));
}
vec3 curve(float t)
{
return vec3(cos(t*0.2), sin(t*0.4), 0.0);
}
float map (vec3 p) {
p -= 0.5;
float p2 = 10.0;
p.x = mod(p.x, p2) - p2 *0.5;
p += curve(p.z);
float scene = 1000.;
//scene = min(scene, sdSphere(pos, 1.));
float period = 2.1;
vec3 q = p;
q.z = mod(p.z, period) - 0.5 * period;
scene = min(scene, box(q, vec3(3.0, 1.0,1.0)));
vec3 q2 =p;
q2.z = mod(p.z + period * 0.5, period) - 0.5 * period;
scene = min(scene, box(q2 - vec3(-1.5, 1.0, 0.0), vec3(1.5, 0.3, 0.5)));
return scene;
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
/*
vec3 map(vec3 p)
{
vec2 eps = vec2(0.01, 0.0);
return normalize(vec3(map(p + eps.xyy) - map(p - eps.xyy), map(p + eps.yxy) - map(p - eps.yxy), map(p + eps.yyx) - map(p - eps.yyx)));
}*/
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(0,3.0,time * 10.0);
vec3 ray = normalize(vec3(uv, 0.6 - length(uv)));//lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./64.) {
float dist = map(pos) * 0.4;
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1.);
color = vec3(exp(-distance(pos, eye) * 0.05)) * shade;
//vec3 rd2 = reflect(ray, )
//vec3 ro2 = pos +
//color *= shade;
gl_FragColor = vec4(color, 1);
}

58
2018-03-07/02-eybor.frag Normal file
View File

@ -0,0 +1,58 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float scene(vec3 p)
{
return p.y;
}
vec3 rm(vec3 o, vec3 r)
{
vec3 p = o;
for(int i = 0; i < 512; ++i)
{
float d = scene(p);
}
return p;
}
float rand(vec2 uv)
{
return fract(sin(dot(vec2(12.9898, 78.233), uv))*43758.5453);
}
vec3 sc(vec3 p, vec2 uv)
{
vec3 co = vec3(0., 0.07, .14);
co += smoothstep(.99, 1., rand(uv));
float md = length(uv-vec2(-.8, .4));
co = mix(co, vec3(1.), 1.-smoothstep(.12, .125, md));
co += .5*exp(-4.*md)*vec3(1.2, 1.1, .8);
co += .2*exp(-2.*md);
return co;
}
void main () {
vec2 uv = -1.+2.*gl_FragCoord.xy / resolution.xy;
uv.x *= gl_FragCoord.x/gl_FragCoord.y;
vec3 rd = normalize(vec3(uv, -1.));
vec3 o = vec3(0., 0., 0.);
vec3 p = rm(o, rd);
vec3 rp = o-(100.-o.y)/(rd/rd.y);
vec3 co = sc(rp, uv);
gl_FragColor = vec4(co, 1);
}

View File

@ -0,0 +1,85 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
mat2 rot (float a)
{
float c = cos(a);
float s = sin(a);
return mat2(c,s,-s,c);
}
vec2 moda (vec2 p, float per)
{
float a = atan(p.y,p.x);
float l = length(p);
a = mod(a-per/2.,per)-per/2.;
return vec2(cos(a),sin(a))*l;
}
vec3 palette (float t, vec3 a, vec3 b, vec3 c, vec3 d)
{
return a+b*cos(2.*3.141592*(c*t+d));
}
float sdSphere (vec3 p, float r) { return length(p) - r; }
float box (vec3 p, vec3 c)
{
return length(max(abs(p)-c,0.));
}
float prim (vec3 p)
{
float c = box(p,vec3 (1.));
float s = sdSphere(p, sin(time)*0.3+1.3);
return max(-s,c);
}
float prim2 (vec3 p)
{
float per = 1.2;
p.y = mod(p.y-per/2.,per)-per/2.;
return prim(p);
}
float tent (vec3 p) {
p.xz *= rot(3.141592/2.);
p.yz = moda(p.yz, 2.*3.141592/8.);
p.x += sin(p.y+time);
return prim2(p);
}
float map(vec3 p)
{
p.xz *= rot(time);
p.yz *= rot(time*0.5);
p.xz = moda(p.xz, 2.*3.141592/5.);
return tent(p);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 ray = normalize(vec3(uv*2.,1.));
vec3 pos = vec3(0.001,0.001,-16.);
float shade = 0.;
for (float i = 0.; i <= 70.; i ++) {
float dist = map(pos);
if (dist < .001)
{
shade = i/60.;
break;
}
pos += dist * ray*0.5;
}
vec3 pal = palette(length(pos),
vec3(0.5),
vec3(0.5),
vec3(0.2),
vec3(0.0,0.1,0.5));
vec3 color = vec3(shade)*pal;
gl_FragColor = vec4(pow(color,vec3(0.45)), 1);
}

65
2018-03-07/03-elie.frag Normal file
View File

@ -0,0 +1,65 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
float map (vec3 pos) {
float scene = 1000.;
//pos = mod(pos, vec3(10.0)) - vec3(5);
pos.x *= 1. / (1. + pos.y);
scene = min(scene, sdSphere(pos, 1. + pos.x * (2.0 + 0.5 * sin(time * 1.5))));
return scene;
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
float grain(vec2 uv) {
return fract(sin(dot(uv, vec2(31.492, 271.0))));
}
vec3 mainmain(vec2 uv) {
vec3 eye = vec3(0,1,-3);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./30.) {
float dist = map(pos);
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1., 0.5, 0.);
color.r += 0.2 * sin(1.0*time);
color += 0.5*dot(vec3(0.5, exp(pow(sin(time), 2.)), 0.5), pos);
color.z += 0.6*grain(uv + grain(uv) * vec2(1.0, 2.0+sin(100.*time)));
float s = sin(time);
float c = cos(time);
vec3 c2 = color;
c2.r = s * color.g + c * color.r;
c2.g = -s * color.r + c * color.g;
color += (0.2) * c2;
color *= shade;
return color;
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 c = vec3(0);
float r = pow(10., -2.-2.*(1.-pow(sin(2.*time), 10.) - pow(sin(2.315*time), 10.)));
c += mainmain(uv+vec2(r, r));
c += mainmain(uv+vec2(r, -r));
c += mainmain(uv+vec2(-r, r));
c += mainmain(uv+vec2(-r, -r));
c /= 4.;
gl_FragColor = vec4(c, 1);
}

View File

@ -0,0 +1,68 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float noise (vec3 p ){
vec4 a = dot( floor( p ), vec3( 1.,57.,21.) ) + vec4( 0.,57.,21., 78. );
vec3 f = -.5 * cos( fract( p ) * acos( -1. ) ) + .5;
a = mix( sin( cos( a ) * a ), sin( cos( 1. + a ) * (1. + a )) , f.x);
a.xy = mix( a.xz, a.yw, f.y );
return mix( a.x, a.y, f.z );
}
float fbm( vec3 p ){
float v = 0.;
float a = .5;
for( int i =0; i < 4; i++ ){
v += a * noise( p );
p *= 2.;
a *= .5;
}
return v;
}
float blend( float a, float b, float k ){
float h = clamp( ( b-a )/k, 0.,1. );
return mix( b, a, h)-k*h*(1.-h);
}
float map( vec3 p ){
float st = abs( sin( time ) );
vec3 off = vec3(0.,st *5., 0.) ;
float s = length( p + off ) - 3.;
float n = fbm( p + time );
float pl = dot( p, vec3(0.,1.,0.)) + 1.;
return n + blend( s , pl, st );
}
void main () {
vec2 uv = gl_FragCoord.xy / resolution.xy * 2. - 1.;
uv.x *= resolution.x / resolution.y;
float t =0.;
vec3 o = vec3( 0., 0., -5.);
vec3 d = vec3( uv, 1.);
vec3 p;
float v;
for ( int i =0; i < 16; i++ ){
p = o + d* t;
v = map(p);
if( v < 0.01 )break;
t += v;
}
vec3 col = vec3(1. - t/16. );
gl_FragColor = vec4(col, 1);
}

93
2018-03-07/04-anton.frag Normal file
View File

@ -0,0 +1,93 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
mat2 rot(float a)
{
float c = cos(a);float s = sin(a);
return mat2(c,s,-s,c);
}
float map (vec3 pos) {
float scene = 1000.;
pos.xy *= rot(pos.z * .025);
pos.xy *= rot(pos.z * .1 + time * 1.1);
pos.x -= 10.;
pos.x = abs(pos.x);
pos.z = mod(pos.z + 1., 2.) - 1.;
vec3 cp = abs(pos);
vec3 cp1 = cp + vec3(1.,0.,0.) * 3.;
vec3 cp2 = cp + vec3(-1.,0.,0.)* 3.;
vec3 cp3 = cp + vec3(0.,1.,0.)* 3.;
vec3 cp4 = cp + vec3(0.,-1.,0.) * 3.;
float decal = sin(time * 1. + pos.z * 5. + pos.x * .1) *.5 + .5;
decal = decal * .5 + .5;
float c = max(max(cp1.x,cp1.y),cp1.z)-decal;
scene = min(scene, c);
c = max(max(cp2.x,cp2.y),cp2.z)-decal;
scene = min(scene, c);
c = max(max(cp3.x,cp3.y),cp3.z)-decal;
scene = min(scene, c);
c = max(max(cp4.x,cp4.y),cp4.z)-decal;
scene = min(scene, c);
return scene;
}
vec3 dumbCol(float d)
{
return vec3(sin(d * .1) * .5 + .5, cos(d * .25) * .5 + .5, cos(d * 1.) *.5 + .5);
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(5.5,2.,-time * 3. + sin(time * 2.) * .5 + .5);
uv.x = abs(uv.x);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./60.) {
float dist = map(pos);
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1.);
color *= shade;
float c = length(uv - vec2(.05,.0));
float t = fract(time * .3) * 5.;
c = step(c, .05 + t) -step(c, .03 + t);
gl_FragColor = vec4(dumbCol(pos.z) * color + c, 1);
}

124
2018-03-07/04-leon.frag Normal file
View File

@ -0,0 +1,124 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
#define PI 3.14159
#define TAU (PI*2.)
#define repeat(p,c) (mod(p,c)-c/2.)
float sdSphere (vec3 p, float r) { return length(p) - r; }
float sdCyl (vec2 p, float r) { return length(p) - r; }
float sdDisk (vec3 p, float r, float h) { return max(length(p.xz) - r, abs(p.y) - h); }
float sdIso (vec3 p, float r) { return dot(p, normalize(sign(p))) - r; }
mat2 rot (float a) {
float c = cos(a), s = sin(a);
return mat2(c,-s,s,c);
}
void amod (inout vec2 p, float c) {
float an = TAU/c;
float a = mod(atan(p.y,p.x), an)-an/2.;
p = vec2(cos(a),sin(a)) * length(p);
}
float map (vec3 pos) {
float scene = 1000.;
vec3 p = pos;
vec3 pppp = p;
p.xz *= rot(p.y * (.5 + .1 * sin(time * .1)) * .2);
amod(p.xz, 5.);
p.x -= 6.;
vec3 ppp = p;
scene = min(scene, sdCyl(p.xz, .04));
float d = length(p);
p = abs(p);
p.xz *= rot(time + d * .1);
p.yz *= rot(time + d * .1);
p.xy *= rot(time + d * .1);
scene = min(scene, sdCyl(p.xy, .04));
scene = min(scene, sdCyl(p.xz, .04));
scene = min(scene, sdCyl(p.zy, .04));
float r = .3;
vec3 pp = p;
p.x = repeat(p.x - time, 1.);
scene = min(scene, sdIso(p, r));
scene = min(scene, sdCyl(p.xz, .03));
p = pp;
p.y = repeat(p.y - time, 1.);
scene = min(scene, sdIso(p, r));
scene = min(scene, sdCyl(p.yz, .03));
p = pp;
p.z = repeat(p.z - time, 1.);
scene = min(scene, sdIso(p, r));
scene = min(scene, sdCyl(p.xz, .03));
scene = min(scene, sdCyl(p.yz, .03));
scene = max(scene, sdSphere(pos, 8.));
p = pppp;
p.xz *= rot(p.y * .05);
amod(p.xz, 16.);
p.x -= 6. + 4. * (.5+.5*sin(p.y * .2 + time));
scene = min(scene, sdCyl(p.xz, .05));
p = pppp;
p.xz *= rot(-p.y * .05);
amod(p.xz, 16.);
p.x -= 6. + 4. * (.5+.5*sin(p.y * .2 + time));
scene = min(scene, sdCyl(p.xz, .05));
p = pppp;
p.y = repeat(p.y + time * 5., 10.);
p.y += sin(atan(p.z,p.x)*5. + time * 5.);
pp = pppp;
amod(pp.xz, 32.);
pp.x -= 9.;
scene = min(scene, max(max(sdDisk(p, 10., .01), -sdCyl(p.xz, 8.)), -sdCyl(pp.xz, .5)));
//amod(p.yz, 32.);
//p.z -= 5.;
p.xz = repeat(p.xz, 2.);
p.xz *= rot(d*.1);
//scene = min(scene, sdCyl(p.xy, .01));
//scene = min(scene, sdCyl(p.zy, .01));
return scene;
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(0,10,-15);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./30.) {
float dist = map(pos);
if (dist < .01) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1.);
color = mix(vec3(.9,.2,.4),vec3(.1,.2,.8),sin(length(pos)*.6+time*5.));
color *= shade;
gl_FragColor = vec4(color, 1);
}

View File

@ -0,0 +1,70 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
mat2 rot (float a)
{
float c = cos(a);
float s = sin(a);
return mat2 (c,s,-s,c);
}
vec2 moda (vec2 p, float per)
{
float a = atan(p.y,p.x);
float l = length(p);
a = mod(a-per/2., per)-per/2.;
return vec2(cos(a),sin(a))*l;
}
vec3 palette (float t, vec3 a, vec3 b, vec3 c, vec3 d)
{
return a+b*cos(2.*3.141592*(t+d));
}
float cylY (vec3 p, float r)
{
return length(p.yz)-r;
}
float stars (vec3 p)
{
float per = 0.5;
p.xy = moda(p.xy, 2.*3.141592/5.);
p.xy *= rot(time);
p.xy = mod(p.xy-per/2.,per)-per/2.;
return cylY(p,-p.x);
}
float sdSphere (vec3 p, float r) { return length(p) - r; }
float map (vec3 p)
{
return stars(p);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 ray = normalize(vec3(uv,1.));
vec3 pos = vec3(0.001,0.001,-3.);
float shade = 1.;
for (float i = 0.; i <= 60.; i ++) {
float dist = map(pos);
if (dist < .001) {
shade = i/60.;
break;
}
pos += dist * ray;
}
vec3 pal = palette(length(pos.z),
vec3(0.5),
vec3(0.5),
vec3(3.),
vec3(0.0,0.1,time));
vec3 color = vec3(1.-shade)*pal;
gl_FragColor = vec4(color, 1);
}

121
2018-03-07/05-monblaz.frag Normal file
View File

@ -0,0 +1,121 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
mat2 r2d(float a){
float c = cos(a), s=sin(a);
return mat2(c, s, -s, c);
}
void lw(inout vec3 p) {
p.xz *= r2d(time);
p.xy *= r2d(time);
//return p;
}
float g=0.;
float map (vec3 p) {
float pl=p.y+1.;
lw(p);
//float scene = 1000.;
//scene = min(scene, sdSphere(pos, 1.));
float d = length(max(abs(p) - .7, 0.));
d = min(d, pl);
g+=.01/(.01+d*d);
return d;
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
vec3 tex(vec2 p){
float pl=1., o=0.;
float t = sin(time*20.);
float a = -.35 + t*.02;
p.x *=1.2;
p*=r2d(a);
p*=.07;
p+=vec2(.71, t*.014 - .56) + t*.017;
for(int i=0;i<13;i++) {
p.x = abs(p.x);
p*=2.;
p+=vec2(-2., .85) - t*.04;
p /= min(dot(p,p), 1.03);
float l = length(p*p);
o += exp(-1.2 / abs(l-pl));
pl = l;
}
o*=.07;
o*=o;
return vec3(.8, .8*o, o*o*.9) * o * 2. + .1;
}
vec3 normal(vec3 p) {
vec2 e = vec2(.01, 0.);
return normalize(vec3(
map(p+e.xyy) - map(p-e.xyy),
map(p+e.yxy) - map(p-e.yxy),
map(p+e.yyx) - map(p-e.yyx)
));
}
vec3 boxmap(vec3 p, vec3 n) {
vec3 m = pow(n, vec3(32.));
vec3 x = tex(p.yz);
vec3 y = tex(p.zx);
vec3 z = tex(p.xy);
return (m.x*x, m.y*y, m.z*z) / (m.x+m.y+m.z);
}
void main () {
// vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec2 uv = (gl_FragCoord.xy/resolution.xy) - .5;
uv.x *= resolution.x / resolution.y;
// vec3 eye = vec3(0,1,-3);
//S vec3 ray = lookAt(eye, vec3(0), uv);
//vec3 pos = eye;
vec3 ro = vec3(0, 0, -4);
vec3 rd = normalize(vec3(uv, 1));
vec3 p;
// float shade = 0.;
float t = 0.;
for (float i = 0.; i < 1.; i += .01) {
p=ro+rd*t;
float dist = map(p);
if (dist < .001) {
//shade = 1.-i;
break;
}
t += dist;
}
vec3 n = normal(p);
lw(p);lw(n);
vec3 color = boxmap(p, n);//tex(uv);
//color += g*.01;
// color = vec3(n);;
// color *= shade;
gl_FragColor = vec4(color, 1);
}

23
2018-03-07/Readme.md Normal file
View File

@ -0,0 +1,23 @@
# Shader Showdown Paris #3
On November 25th, 2017 at [Nogozon](https://www.facebook.com/nogozon/).
[Video on YouTube](https://youtu.be/55ayUl_07-E)
## Rounds
1. Lamogui vs Ponk
2. Anton vs Koltes
3. Ponk vs Remi
4. Anton vs Lamogui
## Extras
- Flopine
- Shader exquis #1
- Shader exquis #2
## Software
- [Bonzomatic](https://github.com/Gargaj/Bonzomatic) (`.glsl`)
- [VEDA](https://veda.gl/) (`.frag`)

View File

@ -0,0 +1,77 @@
// fluxus
// dave griffits
precision mediump float;
uniform float time;
uniform vec2 resolution;
#define PI 3.14159
#define TAU (PI*2.)
#define repeat(p,c) (mod(p+c/2.,c)-c/2.)
float sdSphere (vec3 p, float r) { return length(p) - r; }
float sdCylinder (vec2 p, float r) { return length(p) - r; }
float sdIso (vec3 p, float r) { return dot(p, normalize(sign(p))) - r; }
vec2 amod (vec2 p, float c) {
float ac = TAU/c;
float a = mod(atan(p.y,p.x), ac)-ac/2.;
return vec2(cos(a),sin(a)) * length(p);
}
mat2 rot (float a) {
float c = cos(a), s = sin(a);
return mat2(c,-s,s,c);
}
float map (vec3 pos) {
float scene = 1000.;
vec3 p = pos;
// p.xz = amod(p.xz, 5.);
p = repeat(p, 3.);
p.xz *= rot(p.y + time * .3);
// p = abs(p);
// p.x -= .5;
p.xz *= rot(time*.9);
p.yz *= rot(time*.6);
p.yx *= rot(time*.3);
scene = min(scene, sdIso(p, .5));
// scene = min(scene, sdCylinder(p.xz, .01));
// scene = min(scene, sdCylinder(p.yz, .01));
// scene = min(scene, sdCylinder(p.yx, .01));
return scene;
}
vec3 getNormal (vec3 p) {
vec2 e = vec2(.001,0.);
return normalize(vec3(map(p+e.xyy)-map(p-e.xyy), map(p+e.yxy)-map(p-e.yxy), map(p+e.yyx)-map(p-e.yyx)));
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(0,.5,-2);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./30.) {
float dist = map(pos);
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1.);
color = getNormal(pos) * .5 + .5;
color *= shade;
gl_FragColor = vec4(color, 1);
}

View File

@ -0,0 +1,66 @@
#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 rotate(vec2 p, float a)
{
float c = cos(a);
float s = sin(a);
return mat2(c, s, -s, c) * p;
}
float noise(vec3 p)
{
return texture(texNoise, p.xy * 0.01 + p.z * 0.07).r + texture(texNoise, p.xy * 0.6 + p.z * 0.7).r * 1.2;
}
float map(vec3 p)
{
p.xy = rotate(p.xy, p.z * 0.4);
return noise(p) * smoothstep(-.4, -1.0, p.y) * smoothstep(-3.0, -1.0, p.y);
}
float map2(vec3 p)
{
p *= 0.4;
return cos(p.x) + cos(p.y) + cos(p.z);
}
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 r = vec3(0.0);
vec3 dir = normalize(vec3(uv, 1.0 - length(uv) * sin(fGlobalTime) * 4.0));
vec3 pos = vec3(0.0, 0.4, fGlobalTime * 1.0);
for (int i = 0; i < 50; i++)
{
float d = map2(pos) * map(pos);
pos += dir * 0.4;
r += d;
}
//vec3 color = noise(vec3(uv, fGlobalTime));
vec3 color = r * 0.2 * mix(vec3(0.7, 0.4, 0.2), vec3(0.0, 0.0, 0.8), uv.x + uv.y);
color += vec3(0.0, 0.0, 0.1);
out_color = vec4(color, 1.0);
}

View File

@ -0,0 +1,39 @@
precision mediump float;
uniform float time;
uniform vec2 resolution;
float sdSphere (vec3 p, float r) { return length(p) - r; }
float map (vec3 pos) {
float scene = 1000.;
scene = min(scene, sdSphere(pos, 1.));
return scene;
}
vec3 lookAt (vec3 eye, vec3 at, vec2 uv) {
vec3 forward = normalize(at - eye);
vec3 right = normalize(cross(forward, vec3(0,1,0)));
vec3 up = normalize(cross(right, forward));
return normalize(forward + right * uv.x + up * uv.y);
}
void main () {
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 eye = vec3(0,1,-3);
vec3 ray = lookAt(eye, vec3(0), uv);
vec3 pos = eye;
float shade = 0.;
for (float i = 0.; i <= 1.; i += 1./30.) {
float dist = map(pos);
if (dist < .001) {
shade = 1.-i;
break;
}
pos += dist * ray;
}
vec3 color = vec3(1.);
color *= shade;
gl_FragColor = vec4(color, 1);
}