Guest User

smoke vs structure - shadertoy version! (Fell^RiFT)

a guest
Jul 2nd, 2012
179
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. precision lowp float;
  2. #define f float
  3. #define n normalize
  4. #define v vec3
  5.  
  6. uniform vec2 resolution;
  7. uniform f time;
  8. f t=time/10.;
  9.  
  10. f b(v p,v b){
  11.         v q=abs(p)-b;
  12.         return min(max(q.x,max(q.y,q.z)),length(max(q,0.)));
  13. }
  14.  
  15. f h(v p){
  16.         v q=v(2.5),a,r,k=v(1e2,1,0);
  17.         p=mod(p,q)-q/2.;
  18.         f d=b(p,v(1)),s=1.;
  19.         for(int i=0;i<3;i++){
  20.                 a=mod(p*s,2.)-1.;
  21.                 s*=(2.+t)/3.;
  22.                 r=1.5-3.0*abs(a);
  23.                 d=max(d,-min(b(r,k.xyy),min(b(r.yzx,k.yxy),b(r.zxy,k.yyx)))/s);
  24.         }
  25.         return d;
  26. }
  27.  
  28. void main(){
  29.         vec2 q=-1.+2.*gl_FragCoord.xy/resolution;
  30.         q.x*=resolution.x/resolution.y;
  31.         f d=0.;
  32.         v p=v(.1*sin(t),.5,6.*t),
  33.         w=n(-p),u=n(cross(v(cos(6.*t),sin(6.*t),0),w)),
  34.         r=n(q.x*u+q.y*n(cross(w,u))+w);
  35.         for(int i=0;i<64;i++){
  36.                 d=h(p)-.001;
  37.                 if(d<.001)break;
  38.                 p+=r*d/4.;
  39.         }
  40.        
  41.         d=0.;
  42.         for(f i=0.;i<9.;i++)
  43.                 d+=h(p+v(cos(i),sin(i),-cos(i))/4.);
  44.        
  45.         t<1.?d*=t:d;
  46.         gl_FragColor=vec4(h(p+.1)*v(1,.4,.2)*d*d,1);
  47. }
RAW Paste Data