<VRTDataset rasterXSize="256" rasterYSize="256">
  <VRTRasterBand dataType="Byte" band="1" subClass="VRTDerivedRasterBand">
    <ColorInterp>Gray</ColorInterp>
    <PixelFunctionType>mandelbrot</PixelFunctionType>
    <PixelFunctionLanguage>Python</PixelFunctionLanguage>
    <PixelFunctionCode><![CDATA[
def mandelbrot(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize, raster_ysize, r, gt, **kwargs):
    scale_y = 1.0 * (out_ar.shape[0] - 2 * r) / ysize
    scale_x = 1.0 * (out_ar.shape[1] - 2 * r) / xsize
    for j in range( out_ar.shape[0]):
        y0 = 2.0 * (yoff + j / scale_y) / raster_ysize - 1
        for i in range(out_ar.shape[1]):
            x0 = 3.5 * (xoff + i / scale_x) / raster_xsize - 2.5
            x = 0.0
            y = 0.0
            iteration = 0
            max_iteration = 100
            x2 = 0.0
            y2 = 0.0
            while x2 + y2 < 4 and iteration < max_iteration:
                y = 2*x*y + y0
                x = x2 - y2 + x0
                x2 = x * x
                y2 = y * y
                iteration += 1

            out_ar[j][i] = iteration * 255 / max_iteration
]]>
    </PixelFunctionCode>
  </VRTRasterBand>
</VRTDataset>