Advertisement
beep

vectron example

Oct 23rd, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include "octane-oslintrin.h"
  2. shader OslGeometry(
  3. int Iterations = 10,
  4. float Power = 2.0,
  5. float Bailout = 20,
  6. output _sdf c = _SDFDEF)
  7. {
  8. vector pos = P;
  9.  
  10. float power = Power;
  11.  
  12. float w = fmod(_wipes(), 300.0) / 300.0;
  13.  
  14. power = w * 5 + 5.0;
  15.  
  16. vector z = P;
  17. float dr = 1.0;
  18. float r = 0.0;
  19. for (int i = 0; i < Iterations ; i++) {
  20. r = length(z);
  21. if (r>Bailout) break;
  22.  
  23. // convert to polar coordinates
  24. float theta = acos(z[2]/r);
  25. float phi = atan2(z[1],z[0]);
  26. dr = pow( r, power-1.0)*power*dr + 1.0;
  27.  
  28. // scale and rotate the point
  29. float zr = pow( r,power);
  30. theta = theta*power;
  31. phi = phi*power;
  32.  
  33. // convert back to cartesian coordinates
  34. z = zr*vector(sin(theta)*cos(phi), sin(phi)*sin(theta), cos(theta));
  35. z+=pos;
  36. }
  37. c.dist = 0.5*log(r)*r/dr;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement