A simple Julia Set implementation written in x86_64 assembly and C. It uses AVX2 instruction set to accelerate computations by processing four double-precision pixels simultaneously in 256-bit vectors. Moreover, a custom threadpool is used to utilize all of the CPU's power. The generated pixel buffer is rendered using SDL3. There is no GPU acceleration - computations are performed only on CPU. The project was developed on Linux so it is recommended to test it on the same environment.
demo1.mp4
demo2.mp4
Required tools:
- x86_64 CPU with AVX2 support
- CMake 3.25+, make, NASM
- pthreads
- SDL3 development libraries
Clone the repo with submodules:
git clone --recursive git@github.com:xFidle/julia-set.gitBuild executable:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make Run executable:
./src/julia-setTo interact with program use controls listed below:
| Key | Action |
|---|---|
| H/J/K/L or arrows | Change fractal shape (real/imaginary components) |
| W/S/A/D | Change camera's position |
| Z/X | Zoom in/out |
| R | Reset to default view |
| ESC | Quit |