From f7a6502ea217e8f181b8f06be973b2aa34e58723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Teemu=20J=C3=A4rvisalo?= Date: Sun, 28 Jul 2024 20:39:43 +0300 Subject: [PATCH] ajotuksia + valo --- shader.glsl | 39 +++++++++++- shader_minified.h | 150 ++++++++++++++++++++++++---------------------- 2 files changed, 116 insertions(+), 73 deletions(-) diff --git a/shader.glsl b/shader.glsl index 00c50b8..c840a51 100644 --- a/shader.glsl +++ b/shader.glsl @@ -387,7 +387,7 @@ vec3 postProcess(vec3 col) { // zoom camera on glyph lock for extra oomph float cameraZoomAnim(float o) { - float delay = 11.2; + float delay = 10.7; if(u_time > delay) { o += (0.25 - smoothstep(-0.7,0.5,sin((timedSine(1.5, delay, 35.0))))) * 0.1; @@ -439,7 +439,7 @@ vec3 cameraPointAt(vec3 p) { // flash screen with glyph color when it is locked vec3 colorFlashesAnim(in vec3 col) { - float delay = 11.25; + float delay = 10.75; if(u_time > delay) { float x = smoothstep(-1.0,0.8,sin((timedSine(0.8, delay, 8.0)*2.0))); col = mix(col, glyphColor * (x * 1.4), x * 0.76); @@ -459,6 +459,8 @@ void main() float d = rayMarch(ro, rd); + + if (d < 500.) { // Lighting vec3 p = ro + rd * d; @@ -474,6 +476,12 @@ void main() // Color for light 1 // col = vec3(dif * vec3(0.9216, 0.9294, 0.9412)); + + + + + + // Light 2 dif = getLight(p, vec3( -3, 5, 5), 1., 0.2); // Color for light 2 @@ -483,6 +491,33 @@ void main() // Color for light 2 col += vec3(dif * light2Color); + + + vec3 lightPosition = glyph1Pos; + lightPosition.z = lightPosition.z + 0.3; + // dif = getLight(p, lightPosition, 3.75, 1.0); + + + // float minLight = 0.01; + // float radius = sqrt(1.0 / (lightPosition * minLight)) + vec3 ld = lightPosition-p; + float len = length( ld ); // Distance from the light to the surface point. + ld /= len; // Normalizing the light-to-surface, aka light-direction, vector. + // float lightAtten = min( 1.0 / ( 0.25*len*len ), 1.0 ); // Keeps things between 0 and 1. + + // float att = clamp(1.0 - len/radius, 0.0, 1.0); + + + float att = 8.0 / (1.0 + 8.1*len + 0.01*len*len); // light attenuation + + if(u_time > 10.76) { + col += vec3(dif * glyphColor * att); + } + + + + + vec3 n = getNormal(p); vec3 dir = vec3(1. , 10., 1.); float ind = clamp( dot( n, normalize(dir )), 0.0, 1.0 ); diff --git a/shader_minified.h b/shader_minified.h index b89a7e1..6fd6402 100644 --- a/shader_minified.h +++ b/shader_minified.h @@ -37,12 +37,12 @@ const char *__temp_cleaned_shader_glsl = "float m(vec3 v,vec3 y,vec3 m,float x)" "{" "vec3 f=m-y,c=v-y;" - "float i=dot(f,f),a=dot(c,f),s=length(c*i-f*a)-x*i,z=abs(a-i*.5)-i*.5,d=s*s,F=z*z*i,g=max(s,z)<0.?" - "-min(d,F):" + "float i=dot(f,f),a=dot(c,f),s=length(c*i-f*a)-x*i,z=abs(a-i*.5)-i*.5,d=s*s,D=z*z*i,g=max(s,z)<0.?" + "-min(d,D):" "(s>0.?" "d:" "0.)+(z>0.?" - "F:" + "D:" "0.);" "return sign(g)*sqrt(abs(g))/i;" "}" @@ -62,12 +62,12 @@ const char *__temp_cleaned_shader_glsl = "if(v.x+y*v.y>0.)" "v.xy=vec2(v.x-y*v.y,-y*v.x-v.y)/2.;" "v.x-=clamp(v.x,-2.,0.);" - "float i=length(v.xy)*sign(-v.y)*f.x,c=abs(v.z)-f.y;" - "return length(max(vec2(i,c),0.))+min(max(i,c),0.);" + "float i=length(v.xy)*sign(-v.y)*f.x,z=abs(v.z)-f.y;" + "return length(max(vec2(i,z),0.))+min(max(i,z),0.);" "}" "vec3 y=vec3(0,-.5,0);" - "const vec3 a=vec3(1.7,-1.1,0),c=vec3(2,0,0),p=vec3(1.5,1.4,0),r=vec3(0,2,0),z=vec3(1.5,1.4,0),C=vec3(-1.5,1.4,0),D=vec3(-1.7,-1.1,0);" - "vec3 l=vec3(.95,.35,.06),d=vec3(.44,.29,.46),F=vec3(.75,.45,.23),L=vec3(.29,.17,.35),g=vec3(.7,.27,.09),J=vec3(.09,.05,.66),e=vec3(.91,.57,.73),H=vec3(.83,.71,.54);" + "const vec3 l=vec3(1.7,-1.1,0),c=vec3(2,0,0),a=vec3(1.5,1.4,0),z=vec3(0,2,0),p=vec3(1.5,1.4,0),r=vec3(-1.5,1.4,0),C=vec3(-1.7,-1.1,0);" + "vec3 d=vec3(.95,.35,.06),g=vec3(.44,.29,.46),D=vec3(.75,.45,.23),F=vec3(.29,.17,.35),K=vec3(.7,.27,.09),J=vec3(.09,.05,.66),e=vec3(.91,.57,.73),H=vec3(.83,.71,.54);" "float m(float y,float f,float m)" "{" "float i=2.*acos(-1.)/2.;" @@ -103,56 +103,56 @@ const char *__temp_cleaned_shader_glsl = "{" "float y=0.;" "const float i=2.*acos(-1.)/24.;" - "float x=floor(atan(f.y,f.x)/i+.5)*i;" + "float z=floor(atan(f.y,f.x)/i+.5)*i;" "vec3 r=f;" - "r.xy=mat2(cos(x),-sin(x),sin(x),cos(x))*r.xy;" + "r.xy=mat2(cos(z),-sin(z),sin(z),cos(z))*r.xy;" "float c=length(max(abs(r.xy-vec2(1.8,0))-vec2(.24,.14),0.))-.02;" "c=min(c,abs(length(f.xy)-1.8)-.2);" - "float e=abs(length(f.xy)-1.75)-.08;" - "e=n(e,abs(f.z-.1)-.04,.005);" - "c=max(-e,c);" + "float x=abs(length(f.xy)-1.75)-.08;" + "x=n(x,abs(f.z-.1)-.04,.005);" + "c=max(-x,c);" "c=n(c,abs(f.z)-.1,.02);" - "float z=1.;" - "for(int a=0;a<8;a++)" + "float a=1.;" + "for(int e=0;e<8;e++)" "{" "vec3 d=f;" - "float g=24.67/(2.*acos(-1.))+z*(2.*acos(-1.)/8.);" - "if(a==1)" + "float g=24.67/(2.*acos(-1.))+a*(2.*acos(-1.)/8.);" + "if(e==1)" "g+=.2;" - "if(a==7)" + "if(e==7)" "g-=.2;" "d.xy=n(g)*d.xy;" - "float F=(z-2.)*2.+1.5+9.;" - "if(a>0)" + "float D=(a-2.)*2.+1.5+9.;" + "if(e>0)" "{" "d.x-=1.95;" "vec3 l=d;" - "if(v>F)" - "l.x=h(l.x,F);" - "float J=s(vec3(l.x-.14,l.yz),vec2(.22))-.01,H=s(vec3(l),vec2(.2,.12))-.02,w=s(vec3(d.x-.06,d.yz),vec2(.1,.15))-.01,L=max(-J,H);" - "L=min(L,w);" - "c=min(c,L);" - "if(c==L)" + "if(v>D)" + "l.x=h(l.x,D);" + "float J=s(vec3(l.x-.14,l.yz),vec2(.22))-.01,H=s(vec3(l),vec2(.2,.12))-.02,w=s(vec3(d.x-.06,d.yz),vec2(.1,.15))-.01,K=max(-J,H);" + "K=min(K,w);" + "c=min(c,K);" + "if(c==K)" "y=4.;" "if(c==w)" - "if(v>F+.2)" + "if(v>D+.2)" "y=5.;" "}" - "z+=1.;" + "a+=1.;" "}" - "vec3 a=h(f);" - "float F=2.*acos(-1.)/32.;" - "vec3 d=a;" - "d.xy=n(floor(atan(a.y,a.x)/F+.5)*F)*d.xy;" - "float l=m(d.xyz-vec3(1.75,0,0),vec3(.04,.14,.05))-.02;" - "c=min(c,l);" - "if(c==l)" + "vec3 d=h(f);" + "float e=2.*acos(-1.)/32.;" + "vec3 l=d;" + "l.xy=n(floor(atan(d.y,d.x)/e+.5)*e)*l.xy;" + "float D=m(l.xyz-vec3(1.75,0,0),vec3(.04,.14,.05))-.02;" + "c=min(c,D);" + "if(c==D)" "y=4.;" - "float g=1.5,L=1e3;" + "float g=1.5,K=1e3;" "for(int J=0;J<4;J++)" "{" "float w=m(vec3(f.x,f.y+g,f.z),vec3(2,.1,g))-.05;" - "L=min(L,w);" + "K=min(K,w);" "c=min(c,w);" "g+=.2;" "}" @@ -160,15 +160,15 @@ const char *__temp_cleaned_shader_glsl = "w+=n(f.yz,.25);" "w+=.025*n(f.xz*50.+1e2,.05);" "c=min(c,w);" - "float J=1e3,H=m(f,vec3(0),vec3(0,0,-.01),1.6),p=m(f,vec3(0,0,1),vec3(0,0,-1),clamp(2.-v*2.+46.,0.,2.)),C=m(f,vec3(0,0,1),vec3(0,0,-1),1.6),A=0.;" - "A=m(f)*clamp((v-24.)*.5,0.,.25);" - "H+=A;" + "float J=1e3,H=m(f,vec3(0),vec3(0,0,-.01),1.6),p=m(f,vec3(0,0,1),vec3(0,0,-1),clamp(2.-v*2.+46.,0.,2.)),C=m(f,vec3(0,0,1),vec3(0,0,-1),1.6),F=0.;" + "F=m(f)*clamp((v-24.)*.5,0.,.25);" + "H+=F;" "J=max(-p,H);" "J=max(J,C);" "c=min(c,J);" "if(c==J)" "y=1.;" - "else if(c==L)" + "else if(c==K)" "y=2.;" "else if(c==w)" "y=3.;" @@ -179,8 +179,8 @@ const char *__temp_cleaned_shader_glsl = "float f=0.,c;" "for(int i=0;i<100;i++)" "{" - "vec3 x=v+y*f;" - "c=w(x).x;" + "vec3 z=v+y*f;" + "c=w(z).x;" "f+=c;" "if(c<.001||f>5e2)" "break;" @@ -197,15 +197,15 @@ const char *__temp_cleaned_shader_glsl = "float A(vec3 v,vec3 f,float y,float m)" "{" "vec3 c=normalize(f-v),i=A(v);" - "float x=clamp(dot(i,c),0.,y),a=t(v+i*.0025,c);" - "if(a11.2)" - "y+=(.25-smoothstep(-.7,.5,sin(m(1.5,11.2,35.))))*.1;" + "if(v>10.7)" + "y+=(.25-smoothstep(-.7,.5,sin(m(1.5,10.7,35.))))*.1;" "return y;" "}" "vec3 A()" @@ -234,51 +234,59 @@ const char *__temp_cleaned_shader_glsl = "vec3 G(vec3 y)" "{" "if(v>10.5)" - "y=a;" + "y=l;" "if(v>12.)" "y=vec3(0,.1,0);" "return y;" "}" "vec3 I(vec3 f)" "{" - "if(v>11.25)" + "if(v>10.75)" "{" - "float y=smoothstep(-1.,.8,sin(m(.8,11.25,8.)*2.));" - "f=mix(f,y*1.4*l,y*.76);" + "float y=smoothstep(-1.,.8,sin(m(.8,10.75,8.)*2.));" + "f=mix(f,y*1.4*d,y*.76);" "}" "return f;" "}" "void main()" "{" - "vec2 v=(gl_FragCoord.xy*2.-i.xy)/i.y;" - "vec3 f=A(),c=A(v,f,G(y)),m=vec3(0);" - "float a=t(f,c);" - "if(a<5e2)" + "vec2 f=(gl_FragCoord.xy*2.-i.xy)/i.y;" + "vec3 c=A(),z=A(f,c,G(y)),m=vec3(0);" + "float x=t(c,z);" + "if(x<5e2)" "{" - "vec3 x=f+c*a;" - "float s=w(x).y,r=0.;" - "r=A(x,vec3(-3,5,5),1.,.2);" + "vec3 s=c+z*x;" + "float a=w(s).y,r=0.;" + "r=A(s,vec3(-3,5,5),1.,.2);" "m+=vec3(r*e);" - "r=A(x,vec3(3,-2,5),.75,.8);" + "r=A(s,vec3(3,-2,5),.75,.8);" "m+=vec3(r*H);" - "vec3 z=A(x);" - "m+=L*clamp(dot(z,normalize(vec3(1,10,1))),0.,1.);" - "if(s==0.)" + "vec3 n=l;" + "n.z=n.z+.3;" + "vec3 C=n-s;" + "float p=length(C);" + "C/=p;" + "float E=8./(1.+8.1*p+.01*p*p);" + "if(v>10.76)" + "m+=vec3(r*d*E);" + "vec3 h=A(s);" + "m+=F*clamp(dot(h,normalize(vec3(1,10,1))),0.,1.);" + "if(a==0.)" "m*=vec3(.3);" - "else if(s==1.)" + "else if(a==1.)" "m*=vec3(0,0,.5);" - "else if(s==2.)" + "else if(a==2.)" "m*=vec3(.3608,.1765,.0471);" - "else if(s==3.)" + "else if(a==3.)" "m*=vec3(.8471,.8549,.4667);" - "else if(s==4.)" + "else if(a==4.)" "m*=vec3(.1);" - "else if(s==5.)" - "m*=l;" - "m=m*exp(-a*.02)+mix(m,mix(d,F,pow(max(dot(c,vec3(0,.3,-1)),0.),8.)),1.-exp(-a*.02))*(1.-exp(-a*.02));" + "else if(a==5.)" + "m*=d;" + "m=m*exp(-x*.02)+mix(m,mix(g,D,pow(max(dot(z,vec3(0,.3,-1)),0.),8.)),1.-exp(-x*.02))*(1.-exp(-x*.02));" "}" "else" - " m=mix(g,J,c.y*1.2);" + " m=mix(K,J,z.y*1.2);" "m=I(m);" "gl_FragColor=vec4(B(m),1);" "}";