Blue /x80 @ Bar Galia

This commit is contained in:
Leon 2018-10-22 23:23:21 +02:00
parent 120fa37184
commit 3a52e910f5
3 changed files with 256 additions and 0 deletions

90
2018-10-20/anatol.frag Normal file
View File

@ -0,0 +1,90 @@
precision mediump float;
uniform vec2 resolution;
uniform float time;
vec3 lookat (vec3 eye, vec3 at, vec2 uv) {
vec3 front = normalize(at-eye);
vec3 right = normalize(cross(front, vec3(0,1,0)));
vec3 up = normalize(cross(front, right));
return normalize(front + right * uv.x + up * uv.y);
}
mat2 rot (float a) {
float c = cos(a), s = sin(a);
return mat2(c,s,-s,c);
}
float hash(float p)
{
return fract(sin(p)*43557.);
}
float obj(vec3 p)
{
float d = length(p.xy+vec2(cos(p.z+cos(time*.5)), sin(p.z+cos(time*.25))))-.1+cos(time)*.4;
d = min(d, -abs(p.y)+2.);
return d;
}
float map(vec3 p)
{
float d = cos(p.x)+cos(p.y*(cos(time)*.5+.5))+cos(p.z) + cos(p.y*10.)*.1;
d = min(d, obj(p));
return d;
}
vec3 normal(vec3 p)
{
vec3 n;
vec2 eps = vec2(0.01, 0.);
float d = map(p);
n.x = d - map(p-eps.xyy);
n.y = d - map(p-eps.yxy);
n.z = d - map(p-eps.yyx);
return normalize(n);
}
vec3 raymarch(vec3 ro, vec3 rd)
{
vec3 p = ro;
for(int i=0; i<64; i++) {
float d = map(p);
p += rd * d;
}
return p;
}
vec3 shade(vec3 ro, vec3 rd, vec3 p, vec3 n)
{
vec3 col = n*.1+.5;
col += vec3(rd.x,rd.y,.2) * length(ro-p)*.08;
return col;
}
void main () {
vec2 uv = gl_FragCoord.xy / resolution;
uv.x *= resolution.x/resolution.y;
vec3 ro = vec3(0.,0.,-2.+time*3.);
vec3 rd = normalize(vec3(uv*2.-1., 1.));
rd.xy = rot(time*.1) * rd.xy;
rd.xz = rot(time*.5) * rd.xz;
vec3 p = raymarch(ro,rd);
vec3 n = normal(p);
vec3 col = vec3(1.);
col *= shade(ro,rd,p,n);
if(obj(p) == map(p))
{
vec3 rro = p;
vec3 rrd = reflect(rd,n);
vec3 rp = raymarch(rro+n*.1, rrd);
vec3 rn = normal(rp);
col *= shade(rro,rrd,rp,rn);
}
gl_FragColor = vec4(col,1.);
}

83
2018-10-20/leon.frag Normal file
View File

@ -0,0 +1,83 @@
precision mediump float;
uniform vec2 resolution;
uniform float time;
vec3 lookat (vec3 eye, vec3 at, vec2 uv) {
vec3 front = normalize(at-eye);
vec3 right = normalize(cross(front, vec3(0,1,0)));
vec3 up = normalize(cross(front, right));
return normalize(front + right * uv.x + up * uv.y);
}
mat2 rot (float a) {
float c = cos(a), s = sin(a);
return mat2(c,-s,s,c);
}
float smin (float a, float b, float r) {
float h = clamp(.5+.5*(b-a), 0., 1.);
return mix(b,a,h)-r*h*(1.-h);
}
float repeat( float p, float c) { return mod(p,c)-c/2.; }
float map (vec3 pos) {
float scene = 10.;
const float count = 8.;
// pos.xz *= rot(length(pos));
vec3 p = pos;
// p.xz *
float s = 10.;
for (float i = count; i > 0.; --i) {
float r = i / count;
pos = abs(pos)-.2*r;
pos.xz *= rot(time * .05);
// pos.xz *= rot(sin(time * 4.)*.5);
pos.yz *= rot(time * .01);
// pos.yx *= rot(time * 1.5);
float b = .24 * r;
// scene = smin(scene, length(pos)-.1*r, b);//+.5*sin(time));
// scene = smin(scene, length(pos.xz)-.1*r, b);//+.5*sin(time));
scene = min(scene, max(pos.x, max(pos.y, pos.z)));
vec3 pp = pos;
// pp.xy *= rot(time * .2);
// pp.zy *= rot(sin(time*8.) * .2);
// pp.xz *= rot(time * .4);
s = min(s, length(pp.yz)-.01);
pp.x = repeat(pp.x + time * .01, .4);
s = min(s, length(pp)-.1*r);
// s = min(s, length(pp.xz)-.01*r);
}
scene = max(-scene, length(p)-1.);
scene = min(scene, s);
// scene = length(pos)-.1;//+.5 * sin(time*5.);
return scene;
}
void main () {
vec2 uv = gl_FragCoord.xy / resolution;
uv = uv * 2. - 1.;
uv.x *= resolution.x / resolution.y;
vec3 eye = vec3(0,0,-3.);
eye.z += sin(time * 2.) * .25;
eye.xz *= rot(time*.5);
eye.yz *= rot(time*.5);
vec3 target = vec3(0);
vec3 ray = lookat(eye, target, uv);
float shade = 0.;
const float count = 30.;
for (float i = count; i > 0.; --i) {
float dist = map(eye);
if (dist < .001) {
shade = i / count;
break;
}
eye += ray * dist;
}
vec3 color = vec3(.5) + vec3(.5) * cos(time*vec3(.1,.2,.3)*4. + shade * 4.);
gl_FragColor = vec4(color*shade, 1.);
}

83
2018-10-20/theo.frag Normal file
View File

@ -0,0 +1,83 @@
precision mediump float;
uniform vec2 resolution;
uniform float time;
vec3 lookat (vec3 eye, vec3 at, vec2 uv) {
vec3 front = normalize(at-eye);
vec3 right = normalize(cross(front, vec3(0,1,0)));
vec3 up = normalize(cross(front, right));
return normalize(front + right * uv.x + up * uv.y);
}
mat2 rot (float a) {
float c = cos(a), s = sin(a);
return mat2(c,-s,s,c);
}
float smin (float a, float b, float r) {
float h = clamp(.5+.5*(b-a), 0., 1.);
return mix(b,a,h)-r*h*(1.-h);
}
float repeat( float p, float c) { return mod(p,c)-c/2.; }
float box(vec3 p, vec3 b) {
b=abs(p)-b;
return min(max(b.x, max(b.y, b.z)),0.) + length(max(b, 0.));
}
float sc(vec3 p,float d){
p=abs(p);p=max(p,p.yzx);
return min(p.x,min(p.y,p.z))-d;
}
mat2 r2d(float a){float c=cos(a),s=sin(a);return mat2(c,s,-s,c);}
vec3 re(vec3 p, float d){return mod(p-d*.5,d)-d*.5;}
float g=0.;
float de(vec3 p){
//p.y+=.5;
float t = time*6.;
float s1 = .77+2.5*(t*.1+sin(t)*.1);
p.xz*=r2d(s1);
p.xy*=r2d(s1);
float d= box(p, vec3(1));
float s=1.;
vec3 q = p;
for(int m=0;m<3;m++) {
q = re(p*s, 2.);
s*=3.;
d = max(d, -sc(2.-abs(q)*3., 1.)/s);
}
d = min(d, sc(1.-abs(q), .1));
g+=.01/(.01+d*d);
return d;
return sc(p,.3);
return length(p)-1.;
}
void main () {
vec2 uv = gl_FragCoord.xy / resolution;
uv -= .5;
uv.x *= resolution.x / resolution.y + tan(time)*.4;
vec3 ro=vec3(0,0,-2),rd=normalize(vec3(uv,.7-length(uv))),p;
float ri,t=0.;
for(float i=0.;i<1.;i+=.01) {
ri=i;
p = ro+rd*t;
float d = de(p);
//if(d<.001)break;
d = max(abs(d), .002);
t+=d*.5;
}
vec3 c = mix(vec3(.1, .3, .3), vec3(.1, .1, .2), length(uv*2.)+ri);
c.r+=(sin(time*4.)*.5+.5)*.1;
c+=g*.007;
gl_FragColor = vec4(c, 1);
}