Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. float distfunc (vec3 p)
  2. {
  3.     return min( length(p-vec3(-4.,1,-3.))-2.0, 50.-length(p));
  4. }
  5.  
  6. void mainImage( out vec4 fragColor, in vec2 fragCoord )
  7. {
  8.     vec2 uv = fragCoord.xy / iResolution.x;
  9.     float vr=0.5;
  10.     float cr=15.;
  11.    
  12.     vec3 camo = vec3(sin(iTime*vr)*cr,1.,cos(iTime*vr)*cr);
  13.     vec3 camd = vec3(0,0,0);
  14.     vec3 up = vec3(0.,1.,0.);
  15.    
  16.     vec3 dir = normalize(camd-camo);
  17.    
  18.     dir = normalize(up*(uv.y-iResolution.y/iResolution.x/2.)+cross(dir,up)*(uv.x-0.5)+(dir));
  19.    
  20.    
  21.     vec3 pos = camo;
  22.     float dmas;
  23.     float dmar;
  24.     float dbh;
  25.    
  26.     for (int i=0; i<48; i++)
  27.     {
  28.         dbh = length(pos);
  29.         dmar = min(distfunc(pos),dbh/2.);
  30.         dir-=pos/dbh/dbh/dbh/8.;
  31.         dir=normalize(dir);
  32.         pos += dir*dmar;
  33.  
  34.     }
  35.  
  36.     float do1 = length(pos-vec3(-5.,1,-5.))-2.0;
  37.     float do2 =  50.-length(pos);
  38.    
  39.     vec4 col=vec4(0.,0.,0.,0.);
  40.     if (do1 < do2)
  41.     {
  42.         float dam= (float(mod(pos.x,1.)>.5)-0.5)*(float(mod(pos.z,1.)>.5)-0.5)*(float(mod(pos.y,1.)>.5)-0.5);
  43.         dam = float(dam>0.);
  44.         col=vec4(dam,1.-dam,0.,1.);
  45.     }
  46.     else
  47.     {
  48.         float dam= (float(mod(pos.x,16.)>8.)-0.5)*(float(mod(pos.z,16.)>8.)-0.5)*(float(mod(pos.y,16.)>8.)-0.5);
  49.         dam = float(dam>0.);
  50.         col=vec4(dam,dam,1.-dam,1.);
  51.        
  52.     }
  53.  
  54.     float hit = .1/(distfunc(pos)+.1);
  55.    
  56.     fragColor = (col)*hit;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement