FORM 0.0 beta

Jun 2017

Free VR Fractal Visualizer & Manipulation Software for Vive

Have you ever wanted to fly around in fractals in 3D in VR??? NOW YOU CAN

FORM is a VR Fractal Visualizer, controller, and 3D manipulation

Download Binary (15MB)

I haven’t had time ot do all the features I wanted, so I decided to release it in its half baked state. “this is beta software”

i’d love for anyone who has any feedback to email me: nshelton at gmail dot com


  • VR compatible graphics card
  • HTC Vive
  • SteamVR




Public Demo Tips:

  • Click “disable sliders” on the onscreen GUI
  • Encourage clicking the thumb pad (next preset)


  • Right Trigger = forward ; left trigger = backwards
  • Controller orientation controls flying direction.
  • The distance from the controller to head is the speed

Trackball Manipulation

This is a common form of 3D manipulation on 2D screens. In VR it is slightly different, and will take some getting used to but it’s probably worth it because it’s awesome.

  • hold the grip buttons on both hands simultaneously.
  • The midpoint between the hands is the center of the trackball.

While gripping with both hands:

  • To Translate: Move both hands in the same direction
  • To Scale: Increase or decrease the distance between hands
  • To Rotate: Grip Points rotate around the trackball center

Advanced Controls

Onscreen GUI toggles two types of controls I’m working on:

Sliders - using NewtonVR for interactions, there are some sliders to manipulate fractal parameters. These can accidentally be clicked while using the trackball, and are very sensitive.

3D Boxes - The position and rotation of the gray and white box controls some parameters of the fractal. This is under development. Having these visible will override the preset when it is loaded, so it’s better to keep this hidden with the onscreen button.

For beginners or in a public scenario, the advanced controls should probably be disabled.

Common Pitfalls

Zooming in too far : Zooming is awesome, but must be done carefully. You can zoom into the wrong spot, and totally change the scale of the world and then you won’t be able to go anywhere. There is LOD in the renderer that will make things further away less detailed. If you zoom in too far, everything will disappear.

Known Issues

Working on these

  • Squashed Worlds: Some presets are corrupted (because quaternions). So if there is a world that looks very distorted and flattened, just skip to the next one. Or check it out if you want.

  • Inconsistent Scales: polygon geometry (controllers, sliders, ui) is rendered at a different scale than the fractal, so they don’t composite correctly.

About the Fractals

Mandelbox (_FractalType = 0.0)

[Krzysztof Marczak]( // YouTube Mandelbox

Wikipedia - Mandelbox

Tom Lowe’s site on the Mandelbox

syntopia mandelbox



Screenshot from FORM

Hartverdrahtet Demo(_FractalType = 0.5)

Straight out of this sick demo… Found this code which I still don’t understand but produces many interesting variants that are not seen in the original demo like:

Hartverdrahtet Hartverdrahtet Hartverdrahtet

Screenshots from FORM

Kaleidoscopic IFS(_FractalType = 1.0)

I like using long skinnies for primitives instead spheres:


Sphere based:


Knighty // Fractal Forums

iq // Shadertoy


long skinnies from form


Coloring - The renderer colors based on iteration count only, indexing into a color map. Some of my favorites (with more info) can be found here:


For rendering efficiency - there is no lighting, normals calculation, fog, etc. I want to add some of this in the future.

The image is rendered at 60% resolution to keep the frame rate high.


If you have a crappy card and are seeing frame rate issues, go to SteamVR Developer settings, and lower the resolution even further. I add some FXAA to try to cut down on aliasing.

I have many ways to improve the visual detail, probably want to add lighting and fog and everything, using a progressive renderer like I have experimented with on iOS . Also interested in the 3D UI which is pretty rough now but shows some promise. Stay tuned!