#declare MinRe=-2;
#declare MaxRe=1;
#declare MinIm=-1;
#declare MaxIm=1;
#declare Iter=20;
#declare XSize=3;
#declare ZSize=2;
#declare ReRes=80;
#declare ImRes=80;
#declare Radius=.03;
#declare Height=.5;
#declare Color=<1,1,0>;

camera { location <-3,3,-3> look_at 0 angle 35 }
light_source { <10,100,-30> color 1 }

//---------------------------------

#declare Im=MinIm;
#declare PosZ=-ZSize/2;
#while (PosZ<=ZSize/2)
  #declare Re=MinRe;
  #declare PosX=-XSize/2;
  #while (PosX<=XSize/2)
    #declare Zr=Re;
    #declare Zi=Im;
    #declare bri=1;
    #declare n=Iter;
    #while (n>0)
      #declare Zr2=Zr*Zr;
      #declare Zi2=Zi*Zi;
      #if (Zr2+Zi2>4)
         #declare bri=sqrt(1-(n-1)/Iter);
         #declare n=0;
      #else
        #declare Zi=2*Zr*Zi+Im;
        #declare Zr=Zr2-Zi2+Re;
        #declare n=n-1;
      #end
    #end
    sphere
    { <PosX,Height*bri,PosZ>,Radius
      pigment { rgb Color*bri }
    }
    #declare Re=Re+(MaxRe-MinRe)/ReRes;
    #declare PosX=PosX+XSize/ReRes;
  #end
  #declare Im=Im+(MaxIm-MinIm)/ImRes;
  #declare PosZ=PosZ+ZSize/ImRes;
#end