dorkhub

gd-fractals

Dynamic 3D fractals in Godot 4

kiwijuice56
GDShader54MITupdated 7 months ago
git clone https://github.com/kiwijuice56/gd-fractals.gitkiwijuice56/gd-fractals

gd-fractals

Dynamic 3D mesh fractals rendered using a raymarching shader in Godot 4. Includes seamless integration with Godot's default 3D editor and a plugin to convert .obj meshes into signed distance function textures. See demo project for example usage.

Fractal image Editor example

Usage

  1. Create a MeshInstance3D and attach a QuadMesh to it with orientation set to Face Z.
  2. Set cast_shadow to off. If you want an approximation of shadows, you can add a second MeshInstance3D as a child with cast_shadow set to Shadows Only -- a sphere mesh works okay to give visual depth at least.
  3. Create a ShaderMaterial and attach either rendering/raymarcher.gdshader or rendering/raymarcher_simple.gd_shader. The normal variant allows you to merge mesh fractals with a secondary fractal, while the simple variant allows you to render the secondary fractals by themselves.
  4. Configure the parameters. See examples in demo for reasonable values.

SDF Converter

The mesh fractal shader takes as input the 3D signed distance function texture of a model rather than a triangulated mesh. The SDF converter addon in this repository allows you to convert .obj files into the correct format directly. It uses a Python script, so ensure that you've installed the libraries in addons/sdf_converter/requirements.txt. A size of at least 64 is recommended, but 256 produces good results.

References

I have a small write-up of this project here if you want more details. Below are references for the fractal logic and some distance estimates that I used.

more like this

fernery

A CLI tool for generating images of ferns 🌿 and other Iterated Function Systems

Haskell51

search

search projects, people, and tags