Voxel shader (for MagicaVoxel) to generate pseudofractal volumes.
Installing and updating
Copy the files in
shaders/ to the
shader/ folder in your installation of MagicaVoxel.
In MagicaVoxel, execute xs pseudofractal 1.0 1.0 1.0 1.01 26. 0.4 0 in its console.
xs pseudofractal xscale yscale zscale distOrder seed threshold cleaning
- xscale : The scale on the X axis. Small number stretches the axis, large number condenses it.
- yscale : The scale on the Y axis. Small number stretches the axis, large number condenses it.
- zscale : The scale on the Z axis. Small number stretches the axis, large number condenses it.
- distOrder : The algorithm uses Minkowski distance which is a generalization of Euclidean and Manhattan distance. This parameter control the "order" of the distance. Values larger than 2 tend to result in squarish structure with flat surfaces. Values very close to 1 (i.e. 1.001) tend to result in regular octahedra. Recommended values are between 0.5 and 2.5.
- seed : The "magic" value used to generate the pseudofractal. To be specific it is used as a modulus. A value of 0 will always result in an empty volume.
- threshold : Controls the ratio of live (solid) voxels. A value of 0 means that all voxels are considered as dead. A value of 1 means that all voxels are considered as alive.
- cleaning : If set and above 0, single / isolated voxels will be removed from the resulting volume.
- Start with the
*scaleset to 1,
distOrderset to 2. or 1.001,
seedset to a number other than 1 and 0 and
thresholdset to 0.5.
- Tweak the
seeduntil you have an interesting volume.
- Fine tune the
thresholdand eventually enable
cleaningif there too many isolated voxels.
- For best result, render in MagicaVoxel with marching cubes (requires 0.98.2 or lower as the current version do not support voxel shapes).
Included are two variants of the shader.
pseudofractal-sub allows to carve an existing volume with the negative space of the pseudofractal.
pseudofractal-add allows to add the pseudofractal to an existing volume without affecting any of its own voxels.
Both variants use the same parameters as the main shader.
xs pseudofractal 1.0 1.0 1.0 1.0 0.7 0.4 1
xs pseudofractal 1.10 1.10 1.10 1.00001 0.1 0.5 1
xs pseudofractal .25 .25 .25 1.33 1.91 0.55 1
xs pseudofractal .5 .5 .5 1.995 0.751 0.55 1
xs pseudofractal 1.5 1.5 0.5 2.0 0.179929 0.5 1
- Thank to Alien who first introduced me to pseudofractals ;)
- Check Jes Wolfe's talk on the subject (youtube) if you want to learn more about pseudofractals.
- If you're interested in this kind of structure generation but want something more predictable and less random, please check cellular-automata-voxel-shader.
1.1.0 (2018-10-05) :
- Add sub and add variants.
- Add examples in doc.
1.0.1 (2018-09-19) :
- Fixed an issue which would make the shader fail to work properly on some GPU.
1.0.0 (2018-09-18) :
- First implementation.