Mandelbrot.frag 565 B

1234567891011121314151617181920212223242526272829303132
  1. #define MAX_ITER 64.0
  2. varying vec2 pixel;
  3. uniform float positionX;
  4. uniform float positionY;
  5. uniform float scale;
  6. uniform sampler2D colorMap;
  7. void main() {
  8. float x, y, x0, y0;
  9. x = x0 = (pixel.x * scale + positionX);
  10. y = y0 = (pixel.y * scale + positionY);
  11. float x2 = x*x;
  12. float y2 = y*y;
  13. float iteration = 0.0;
  14. while(x2 + y2 < 4.0 && iteration < MAX_ITER) {
  15. y = 2.0 * x * y + y0;
  16. x = x2 - y2 + x0;
  17. x2 = x*x;
  18. y2 = y*y;
  19. iteration++;
  20. };
  21. gl_FragColor = texture2D(colorMap, vec2(iteration/MAX_ITER, iteration/MAX_ITER));
  22. }