Furakutaru
(fractal)
was the product of an A-level Computer Science project,
completed by Oliver Dixon at Wakefield College in
Wakefield, England throughout 2019 and 2020. This description will
chiefly concern the program, however the original report (with some
redactions in the appendices) can be downloaded
here.
Remark #1: I wrote the Furakutaru program and report
when I was sixteen-years-old. Four years later, my standards have
since been significantly raised in technical, mathematical, and
typographical disciplines! However, upon reflection, I found the
majority of the report surprisingly acceptable notwithstanding my
relative inexperience.
Remark #2: This submission was, unfortunately, never formally
assessed by the examining body (AQA): this was due to the COVID-19
emergency and subsequent cancellations of examinations and
assessments throughout Further and Higher Education institutions
across the UK. I ultimately received an 'A' in A-Level Computer
Science, but this work
did not
contribute towards that eventual classification.
Origins and Rationale
The origins of the product lie in the following observations:
Most fractal types (Mandelbrot, Julia, etc.), and all
configurations thereof, can be rasterised with repeated
invocations of a pixel-independent algorithm, such as the
discrete
Escape-Time technique. More advanced continuous plotting
methods are also well-researched, and for very high levels of
magnification, results from Perturbation Theory can be exploited
to obviate the use of slow arbitrary precision numerical
libraries.
Concentrating on the property of pixel independence, we can
make the obvious remark that some performance benefit could be
achieved with the SIMD/MIMD capabilities of modern x86 CPUs. (For the purposes
of fractal-rendering, the repeated invocations of some given
algorithm motivate a closer inspection of SIMD.)
Alternatively, GPUs are suited
perfectly for these massive SIMD-style operations. Instead of
running 2n (where n is small) CPU
instructions in parallel, we can exploit the ability of a GPU to
concurrently execute code over its thousands of cores, and collate
the results as a raster.
OpenGL and its derivatives provide a pleasant,
portable, and high-level interface between userspace programs and
native GPU bytecode. The [Open]GL Shading Language (GLSL) is a
C-like L3
intermediary language available to application developers
which can be used to specify concurrent operations. N.B. Since
2020, the generally superior Vulkan has become the more sensible
choice for the majority of projects, and the public documentation
for its many APIs has
improved significantly.
Many existing widely available fractal-rendering programs have a
tedious and overly complicated control GUI. It would be nice to
display the minimum amount of information (i.e., the raster) in the
X
window and transmit the metadata through a universal text interface,
using standard UNIX devices (e.g. stdout). Options
could be specified at runtime through stdin, or as
initial parameters given as command-line arguments.
Furakutaru is the culmination of the attempts to rectify and
implement some of the problems and ideas outlined by these
observations.
Screenshots
These are raster figures taken from the original report, showing the X11
window with the corresponding terminal invocation. Higher-resolution
versions can be found in the
screenshots/ directory.