Project: Visualizing the Mandelbulb

Click to see gallery of full-sized images…

Click to see gallery of full-sized images…

Introduction

The Mandelbulb is a 3D representation of the classic Mandelbrot Set discovered by Paul Nylander and Daniel White, where spherical coordinates are used instead of the usual complex numbers to generate the fractal. Collaborating with two other teammates at the exclusive Northwest Advanced Programming Workshop during my senior year of high school, this project utilizes raymarching, a quaternion-based camera, and ambient occlusion in GLSL shaders to create a simple real-time Mandelbulb viewer, and paved the road to my expertise in OpenGL. The original project can be found here (for linux-based systems), with a more updated version for Visual Studio 2019 here.

 

Controls

MU: changing the pointlight’s intensity

ZX: changing the raytracing step

CV: changing the Mandelbulb’s bailout

PO: changing the Mandelbulb’s power

78: changing the Mandelbulb’s phi shift

90: changing the Mandelbulb’s theta shift

Ctrl+key: increases the change speed

Shift+key: decreases the change speed

Alt+Ctrl/Shift+key: magnifies speed change

WASD: up/left/down/right movement

RF: zooming in/out

IJKL: camera rotation

QE: camera roll

Mouse Click: arcball camera rotation

TY: moving the pointlight on the X-axis

GH: moving the pointlight on the Y-axis

BN: moving the pointlight on the Z-axis

 

Gallery

Increasing the raymarching step from 0.01 to 0.5

Increasing the raymarching step from 0.01 to 0.5

Increasing the Mandelbulb’s power from 0 to 20

Increasing the Mandelbulb’s power from 0 to 20

Decreasing the phi shift, looping from 0 to 2π

Decreasing the phi shift, looping from 0 to 2π

Decreasing the theta shift, looping from 0 to 2π

Decreasing the theta shift, looping from 0 to 2π

Increasing the power 2 Mandelbulb’s bailout from 0 to 100

Increasing the power 2 Mandelbulb’s bailout from 0 to 100

Increasing the Mandelbulb’s power from 0 to 200

Increasing the Mandelbulb’s power from 0 to 200

Increasing the phi shift, looping from 0 to 2π

Increasing the phi shift, looping from 0 to 2π

Increasing the theta shift, looping from 0 to 2π

Increasing the theta shift, looping from 0 to 2π

Increasing the power 8 Mandelbulb’s bailout from 0 to 40

Increasing the power 8 Mandelbulb’s bailout from 0 to 40

The power 2 Mandelbulb

The power 2 Mandelbulb

The power 8 Mandelbulb

The power 8 Mandelbulb

The power 8 Mandelbulb, looking down from the top

The power 8 Mandelbulb, looking down from the top

“Eyes”: The power 42 Mandelbulb

“Eyes”: The power 42 Mandelbulb

The “Mandelman” hiding…

The “Mandelman” hiding…

… and peeking out

… and peeking out

“Sunset on the Mandelbulb”

“Sunset on the Mandelbulb”

“Autumn Sunset on the Mandelbulb”

“Autumn Sunset on the Mandelbulb”

Julia Set of the power 2 Mandelbulb at (-0.7269, 0.1889, 0)

Julia Set of the power 2 Mandelbulb at (-0.7269, 0.1889, 0)

Previous
Previous

Project: Fractal Planets

Next
Next

Project: BigDouble