claude · @mathr
318 followers · 3214 posts · Server post.lurk.org

zoomasm 3.3 released!

mathr.co.uk/zoomasm/#zoomasm-3

This is a bug fix release, that fixes the OpenGL GLSL shader version string (there was a missing newline character, which some graphics card drivers didn't like - if zoomasm 3.2 worked for you, there's no compelling reason to upgrade).

> Some fractal software supports rendering keyframes in exponential map form, which zoomasm can assemble into a zoom video.

#zoomasm #fractal #zoom #video #software

Last updated 1 year ago

claude · @mathr
293 followers · 2792 posts · Server post.lurk.org

mathr.co.uk/zoomasm/#zoomasm-3
3.2 released
no new features, just compatibility with current library ecosystem (imgui v1.89, openexr 3.1.5).

#zoomasm

Last updated 2 years ago

claude · @mathr
287 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/zoomasm/ zoomasm 3.1 released

is a zoom video assembler which works from EXR keyframes in exponential map format, as output by software including Kalle's Fraktaler 2 +.

Version 3.1 is a maintenance release, fixing compatibility with the current version of miniaudio (which changed API sometime since zoomasm 3.0 was released), as well as a few other small bugs. The Windows builds have had their dependencies bumped to the latest releases.

(The timeline sequencer for GLSL uniform variables work I started last October will come in zoomasm 4.0, which is still very far from ready...)

#zoomasm

Last updated 2 years ago

claude · @mathr
287 followers · 2739 posts · Server post.lurk.org

This week I have mostly been working on 's , making it so that it can control uniform variables declared in the colouring .

In the example attached, the interior colour jumps from black to red when passing near to a particular minibrot.

Some bugs to fix:
- zoom speed display is inaccurate (scaled incorrectly by duration)
- the timeline table should not expand so much horizontally to fill the window
- the timeline table should have scrollbars when the window is smaller than the table
- when the windows are hidden (with Ctrl-F10) the timeline sequencing is disabled
- the initial values should be populated from the KFP palette if one is used
- it crashes when the number of columns is too big for Dear ImGui (upstream ImGui has a limit of 64, I applied a patch from the issue tracker to raise it to 1000 which is hopefully enough, unfortunately it seems harder to patch ImGUI to have no fixed limit at all...)

#shader #glsl #sequencer #timeline #zoomasm

Last updated 3 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/zoomasm/ zoomasm 3.0 released

is a zoom video assembler which works from EXR keyframes in exponential map format, as output by software including Kalle's Fraktaler 2 +.

New in 3.0 is support for KFR/KFP parameter files containing OpenGL GLSL colouring algorithms, so you don't need to do anything fiddly to get your new colourings from KF 2.15.2 or later to work - you can load the files directly in zoomasm's Colour window.

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

kf-2.15.2 released with colouring support (design your own colouring algorithms to post-process the calculated raw fractal iteration data)

Get it from mathr.co.uk/kf/kf.html#kf-2.15

is () for (and via additional programs like and others)

and builds are provided, it is technically possible to compile for but I couldn't get the resulting binary to work on my device. It's a that runs fine in on (where I do my coding). builds seem to be blocked on what might be a bug in a third party library.

#armv7 #linux #wine #EXE #windows #aarch64 #i686 #x86_64 #zoomasm #video #graphics #fractal #escapetime #agpl #freesoftware #DeepZoom #fast #KallesFraktaler2 #KallesFraktaler #kf #glsl #opengl

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Nearly finished kf-2.15.2 and zoomasm-3.0. Will probably release next week after final testing.

The main new feature in is being able to define your own colouring algorithms in OpenGL shader language (). The shader fragment can get raw computed data from KF, such as (smooth) iteration count and analytic distance estimates, and return a colour for the pixel.

There is also an emulation of the previous CPU colouring algorithm, which is modularized so you can use parts of it in your custom shaders.

The main new feature in is being able to load palettes from KF that use OpenGL GLSL colouring shader fragments, so you don't have to repeat work. This includes support for the list-of-colours palette and the other variables in KF's colour dialog.

#zoomasm #glsl #kf

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/zoomasm 2.1 released!

mostly small bugfixes, only new feature is jump-to-time buttons for waypoints in the timeline editor

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

For 3.0 I want to change the API for colouring GLSL from "one function with loads of arguments with values prefilled for the current pixel" to "one function with no arguments and an API with function calls to get values for the current pixel", which will enable me to add extra features like "get value for neighbouring pixels by offset" or "get value for absolute screen coordinates", which should allow implementing colouring algorithms like embossing flat iteration bands, and simplify overlays like zoom depth display.

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

I added a new feature to , now the timestamps for each waypoint in the timeline window are buttons that jump to the corresponding time.

The idea for this emerged from a discussion on fractalforums.org, but I don't have a specific link handy, and I can't remember if I thought of it or someone else suggested it.

Hopefully will have time to release a new 2.1 version this week, before working on breaking changes for 3.0.

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Worked on another this morning.

Bug: if you select a custom output size, but then enter the dimensions of an existing size preset, the entry boxes disappear and you can't enter any custom sizes any more (only choose from the presets).

Fix: when searching for a matching preset, start search at index 0 (custom size) instead of index 1 (first preset). The first match is chosen, which means "custom" size take priority over presets, even when the values are the same.

Also applies to other things with custom+preset dropdowns like FPS and audio bitrate.

#bugfix #zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Found a bug in 's 360 projection (the distance estimate scaling was wrong).

Trying to do the maths by hand is too hard, so I copied my implementation (for ) from my fragm-examples repository, minus the macro hell, plus some quaternion-to-rotation-matrix code ported from Python that I found online.

Now it looks okish in the view, need to render some tests at various orientations and inject spatial metadata for viewing in VLC to be more sure I got it right...

#equirectangular #CPreProcessor #AutomaticDifferentiation #DualNumber #glsl #zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/zoomasm/#zoomasm-2 2.0 released. zoomasm is an assembler for 2D (and now also 360) zoom videos from exponential map keyframes in EXR format to video files via OpenGL shaders for colouring raw iteration data and FFmpeg for video encoding.

The 360 video metadata need to be injected later, with Google's spatial media tool, I haven't figured out yet if ffmpeg command line can do it...

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Made good progress on 2.0 yesterday, but it probably won't be ready for another couple of weeks as there's still quite a lot on the todo list.

Current list of changes:

- New: `multiwave.glsl` colouring preset.
- New: speculatively load next keyframe in async thread for smoother interactive playback.
- New: advanced mode allows setting arbitrary FFmpeg encoder options.
- New: two pass encoding (in advanced mode only).
- Fix: use conservative latency profile for audio.
- Fix: prefer JACK (if available) to PulseAudio.
- Fix: be more robust when changing soundtracks.
- Fix: detect death spiral and stop playback if keyframe loading can't keep up with real time.
- Fix: recycle audio buffer memory instead of freeing and allocating so often.
- Fix: disable broken MP3 support (no seeking with reverse play).
- Fix: disable broken Ogg support (no duration detection).
- Fix: use `texelFetch()` instead of `texture()` (prevents flickering boxes which might have been an amdgpu driver bug).
- Fix: loading session from command line does not reset last waypoint.
- Fix: avoid OpenGL error clearing an incomplete framebuffer object.
- Fix: enable OpenEXR multithreading.
- Fix: combined single-file build system.
- Win: build both 64bit and 32bit Windows EXEs.

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Some timings of rendering a short zoom video with and :

kf rendering 77 keyframes at 12288x1360:
14mins OpenCL AMD RX 580 GPU
30mins OpenCL AMD 2700x CPU
72mins regular AMD 2700x CPU

exrsubsample 77 keyframes to 1536x170 for interactive use in zoomasm:
13mins

reprojecting 12288x1360 keyframes to 1920x1080p60 zoom video (duration 1min) in zoomasm (includes encoding with ffmpeg):
20mins

All times wall-clock, on a desktop with other light usage happening at the same time. Formula was a hybrid of cubic Mandelbrot and cubic Burning Ship, maximum iteration count at the end was about 24000.

OpenCL on GPU is about 5.1 times faster than the regular CPU implementation, and 2.1 times faster than the OpenCL on CPU. OpenCL on CPU is about 2.4x faster than regular CPU, presumably because the branches in inner loops are resolved at kernel compile time instead of run time.

As exrsubsample is probably IO bound, and I used a slow USB2 external hard drive for the data, it's possible that the timings could be improved using a RAM disk. Required space for this project is 20GB.

#zoomasm #kf

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

If anyone works with and can fix the bidrectional communication so that it doesn't , and is prepared to send me patches under AGPL3v+, I'm sure the winbound users would appreciate it. Thanks!

#zoomasm #deadlock #subprocess #windows #microsoft

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/blog/2020-11-08_zo
1.1 released

- New: F9 key toggles user interface transparency.
- New: .ppm output file saves an image sequence without FFmpeg.
- Fix: no more garbage audio output for an instant on device open.
- Fix: fix build with recent upstream imgui changes.
- Fix: when loading a session, don’t reset the last timeline waypoint zoom depth to the default for the input keyframe count.
- Fix: reduce timeline Z slider range to avoid glitches at extremes.
- Fix: add an example preset that was missing from the distribution.
- Doc: add demo/tutorial videos to documentation.
- Doc: round recommended keyframe image sizes to multiples of 16 so that exrsubsample can be used without worrying about edge effects.
- Win: include presets/ folder in Windows distribution.
- Win: include PDF manual in Windows distribution.
- Win: update imgui, miniaudio, tomlplusplus to latest versions. miniaudio needed a small patch to build as C++ void* casts must be explicit (unlike as in C); this will hopefully be fixed upstream soon.

#zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

kf-2.15.1 released!
with OpenCL acceleration, hybrid formula designer, exponential map, and more
get it from mathr.co.uk/kf/kf.html#kf-2.15

- support for perturbation iterations (requires double precision support on device: should work, some might not)
- editor (design your own fractal formula)
- coordinate transformation (useful for export to for efficient assembly)
- rotation and skew transformations are rewritten to be more flexible (but old skewed/rotated KFR locations will not load correctly)
- kf-tile.exe tool supports the new rotation and skew transformations
- the bitrotten skew animation feature is removed
- a few speed changes in built in formulas (one example, RedShiftRider 4 with derivatives is almost 2x faster due to using complex analytic derivatives instead of 2x2 Jacobian matrix derivatives)
- flip imaginary part of Buffalo power 2 (to match other powers; derivative was flipped already)
- slope implementation rewritten (appearance is different but it is now independent of zoom level and iteration count)
- smooth (log) iteration count is offset so dwell bands match up with the phase channel

#kf #KallesFraktaler #burningship #MandelbrotSet #mandelbrot #freesoftware #software #free #fractals #fractal #DeepZoom #zoom #deep #video #zoomasm #ExponentialMap #HybridFormula #gpu #cpu #opencl

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

mathr.co.uk/zoomasm
I released version 1.0 "felicitats" yesterday. It's a tool for assembling from exponential strip keyframes with RGB and/or raw iteration data in EXR format - the colouring is controlled by an snippet with a few presets included (or write your own).

(However, the only software I know of that can export keyframes for input to zoomasm, is 2.15 branch which is not yet released... so getting that done is my new focus.)

#kf #shader #fragment #glsl #opengl #video #animation #zoom #fractal #zoomasm

Last updated 4 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

I implemented (hopefully ) , as well as linear and step modes, for depth in my tool for assembling animations from exponential strip keyframes. Much smoother than the piecewise linear that was the only option before (no more speed discontinuities at waypoints, unless you want them).

#fractal #zoomasm #animation #zoom #interpolation #cubic #monotone

Last updated 4 years ago