mirror of
https://github.com/CookieCollective/Live-Coding-Sources.git
synced 2025-02-15 01:09:46 +01:00
Add 2018-03-07
This commit is contained in:
parent
53ff6007be
commit
e1e649ac3e
92
2018-03-07/01-anton.frag
Normal file
92
2018-03-07/01-anton.frag
Normal 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);
|
||||
}
|
71
2018-03-07/01-lamogui.frag
Normal file
71
2018-03-07/01-lamogui.frag
Normal 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
58
2018-03-07/02-eybor.frag
Normal 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);
|
||||
}
|
85
2018-03-07/02-flopine.frag
Normal file
85
2018-03-07/02-flopine.frag
Normal 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
65
2018-03-07/03-elie.frag
Normal 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);
|
||||
}
|
68
2018-03-07/03-nicoptere.frag
Normal file
68
2018-03-07/03-nicoptere.frag
Normal 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
93
2018-03-07/04-anton.frag
Normal 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
124
2018-03-07/04-leon.frag
Normal 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);
|
||||
}
|
70
2018-03-07/05-flopine.frag
Normal file
70
2018-03-07/05-flopine.frag
Normal 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
121
2018-03-07/05-monblaz.frag
Normal 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
23
2018-03-07/Readme.md
Normal 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`)
|
77
2018-03-07/extra-leon.frag
Normal file
77
2018-03-07/extra-leon.frag
Normal 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);
|
||||
}
|
66
2018-03-07/template-bonzomatic.glsl
Normal file
66
2018-03-07/template-bonzomatic.glsl
Normal 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);
|
||||
}
|
39
2018-03-07/template-veda.frag
Normal file
39
2018-03-07/template-veda.frag
Normal 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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user