Advertisement
Guest User

Sphere shader

a guest
Mar 25th, 2017
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. number cx = 0.5;
  2. number cy = 0.5;
  3. number cz = 25;
  4.  
  5. number R = 0.2;
  6.  
  7. number x0=0.5;
  8. number y0=0.5;
  9. number z0=0;
  10.  
  11. extern number rot;
  12.  
  13. vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords ){
  14.  
  15.  
  16.   number y1=texture_coords.y;
  17.   number x1=texture_coords.x;
  18.   number z1=50;
  19.      
  20.   number dx = x1 - x0;
  21.   number dy = y1 - y0;
  22.   number dz = z1 - z0;
  23.      
  24.   number a = dx*dx + dy*dy + dz*dz;
  25.   number b = 2*dx*(x0-cx) +  2*dy*(y0-cy) +  2*dz*(z0-cz);
  26.   number c = cx*cx + cy*cy + cz*cz + x0*x0 + y0*y0 + z0*z0 + -2*(cx*x0 + cy*y0 + cz*z0) - R*R;
  27.      
  28.   number t = (-b-sqrt(pow(b,2)-4*a*c))/(2*a);
  29.        
  30.   if (t > 0) {
  31.        
  32.        
  33.        
  34.        
  35.     number nx=(texture_coords.x-cx)/R/2;
  36.     number ny=(texture_coords.y-cy)/R/2;
  37.        
  38.     number tu = asin(nx)/3.14 + 0.5 ;
  39.     number tv = asin(ny)/3.14 + 0.5 ;
  40.        
  41.     vec2 texcoords = vec2(mod(tu+rot,1),tv);
  42.        
  43.     vec4 pixel = Texel(texture, texcoords );
  44.     return pixel;
  45.    
  46.   }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement