Got my first #Vulkan triangle oh my god
Got my first vertex-indexed rectangle.
Got my first #Vulkan #Mandelbrot set

Love is in the output.

#Vulkan #Mandelbrot #devlog

I didn't think integrating Imgui into it would be so easy.
Output is inside a #DearImGui window ✅
Need to figure out where these ugly spec violations happen.

Deeper #Mandelbrot zooming with #perturbation ✅

#devlog

codeberg.org/Microfractal/Bultom
Here is it. Unforunately not really usable, not cross platform, has some vulkan validation errors & no coloring options at the moment. I just made it public, so you can see and perhaps understand how perturbation and linear acceleration works.🥴
Ah and it has linear approximation as mentioned before ✅

Some progress:
Separated computation into a map stage (iterations, distance estimates..)
and an image stage (RGBA), so image recoloring does not need to recompute the fractal again ✅
Wrapped DearImGui input scalars ✅
Custom DearImGui-like color editor ✅
Wrapped Vulkan compute shader into a structure ✅

#DevLog #cpp #Graphics #Mandelbrot #Fractal #DearImgui

TODO:
Higher quality by averaging multiple images (made out of sightly randomized map pixels), formula must be something like
newColor = Lerp(oldColor, newColor, 1.0 / weight)
Saving images as png ✅

#FractalFriday

Finally got FloatExp numbers to work. A FloatExp datatype is a real-valued struct, which contain a floating point number and an extra integer, which holds the exponent.

Then, a real number {mantissa, exponent} can be represented using mantissa×2^exponent.

Using this method, numbers far beyond the range of single and double precision floating point numbers can be represented.

This image is computed using a 32+32 bit floatexp (32 bit mantissa and 32 bit exponent). Plain 32 bit floats are not enough. Of course, perturbation and linear acceleration is also used.

#Devlog #Fractal #Mandelbrot #DeepZoom #FloatingPoint #FloatExp

Added progress reporting. Getting the numerator & denominator is done using lambdas.

#DevLog #DearImGui #MandelbrotSet #Graphics

Got something like waypoint coloring to work, currenty hardcoded as static arrays in the shader.

#DevLog

Added the "extend" modes mirror and clamp.

Here's one example that uses a mirrored colormap. Coordinates found by @mathr "millionaires 8": https://mathr.co.uk/web/millionaires.html#008

#Mandelbrot #MandelbrotSet #Fractal #DeepZoom #JuliaMorphing #MathArt

Finally got a working GUI to edit a colormap. I'm still not 100% satisfied but much better than the other attempts.

#Devlog #Graphics #RGBA #Colormap #Colorgradient

I finally got exchange of colormap data between host and shader to work.

#Mandelbrot #Fractal #GUI #DearImGui #Colors #Devlog

Currently rewriting some of the #Vulkan initialization code. Main part is done, using the C++ Vulkan wrapper reduces the mess in some blocks.
Now my colormap editor has a more nice looking appearance. Notice the cosine interpolation between all the points.
I started to separate the fractal generator into an external shared library. The idea is to execute arbitrary code separately from the core application. The Mandelbrot set is not the only thing im interested in and future graphical projects like cellular automata, raytracing or data visualization should also fit into that project, with possible data exchange.

Got higher quality images to work using multisampling / pixel value averaging.

#Mandelbrot #Fractal #Devlog #Graphics

Major parts rewritten.
Looks much better in my opinion.

#Devlog #Mandelbrot #Fractals #DearImGui

Stress tested it using a ~1e-13874 sized deep zoom with around 38,000,000 iterations per pixel (usually much fever computation iterations due to linear approximation acceleration). Worked fine, no timeout or vulkan "device lost" errors, which happened with some deep zooms before. Coordinates: https://www.deviantart.com/dinkydauset/art/Tiling-iteration-Julia-ghost-819880424

#Devlog #Mandelbrot #Fractal

Rendered result from the screenshot
Now rewriting everything to C++ using modules, because my math headers went crazy.
Conversion of the core program to modules is almost done. I also found some dead branches (never executed logic) which is now removed.

I made an object selection engine, which will be used as a base in the colormap-editor and many other widgets that rely on the fearture to (multi)select some markers/objects.

#DevLog #Programming #GUI #DearImGui #Graphics

Progress! Just wrapped a bunch of ImGui functions into simplified ones. I also made a few new custom widgets, for example the coordinate axis on the left and the bottom of the plot. Scientific data visualization vibes lol.

By the way, here is a domain coloring visualization of the function f²(z), where f(z) = exsec(rot(z, time*0.5)),

where t is approximately time in seconds,
exsec is the complex exsecant and rot(z, t) rotates a complex number z around the origin by t radians.

#DevLog #DearImGui #Programming #Math #DomainColoring #ComplexNumbers