Added rotation and skew to FragM's Camera2D code. Doing it only in the shaders is not possible because the mouse interactions don't match up with the image.

mildly strobing video 

```
fract(0.5 * dwell + time / 3.0) < 0.5
? vec3(1.0, 0.0, 0.0)
: vec3(1.0);
```

Where dwell (aka ) is computed 4x per pixel for image-space distance estimation (because using dFdx and dFdy on computed data is too low-resolution and fraught with peril in the event of incoherent control flow, works fine for the input smooth coordinates to know where to offset the 4x dwell computations).

For some reason I always seem to end up with that look a bit like insects

rendered a with version of

the trick is to replace (in your camera frag vertex block) all uses of the `Zoom` uniform by `Zoom*pow(2.0, ZoomFactor)` and add a Linear easing curve to new `ZoomFactor` uniform.

keep ZoomFactor at 0 while navigating for sanity

this toot brought to you by "Qt's InExpo easing curve is a bit rubbish" code.qt.io/cgit/qt/qtbase.git/

I ported some of the formulas I use in to , for faster rendering. Because of legacy baggage in the existing code of I started work on a new framework for 2D fragment within FragM.

Similar in spirit to (my physically inspired raytracer for FragM), only with the added complication of wanting to support double precision ( 4) where available, while still working to some extent (without so deep zooms) on single precision float (OpenGL 3) if that is all the can do. Only single precision is implemented so far.

there were three but I couldn't catch them all in the same frame

```
Formula
z:=(y+i|x|)^p+c
z:=(x+iy)^p+c
z:=(y+i(-x))^p+c
z:=(|y|+i(-x))^p+c

p=2
q=2
d=1.0
e=0.0
a=0.115385984615401059999
b=0.570927230791718799994
r=6.103515625e-5
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

```
Formula
z:=(y+i|x|)^p+c
z:=((-|y|)+ix)^p+c

p=3
q=2
d=1.0
e=0.0
a=-0.951463728118373499999999987
b=-0.528032363504725900000000004
r=2.3283064365386963e-10
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

```
Formula
z:=(x+i|y|)^p+c

p=3
q=2
d=1.0
e=0.0
a=0.221810726706229480000000003
b=1.07709091783090300000000002
r=1.1641532182693481e-10
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

```
Formula
z:=(|x|+i(-y))^p+c
z:=(y+i(-x))^p+c
z:=((-|x|)+iy)^p+c
z:=(x+i(-|y|))^p+c

p=3
q=2
d=1.0
e=0.0
a=0.64752288063777459999995
b=0.48262893915836135999996
r=9.5367431640625e-7
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

```
Formula
z:=(x+iy)^p+c
z:=(y+i(-|x|))^p+c
z:=((-y)+i(-x))^p+c

p=5
q=2
d=1.0
e=0.0
a=0.5461096108486259000015
b=-0.4409497686985499600001
r=1.52587890625e-5
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

```
Formula
z:=((-y)+i(-x))^p+c
z:=((-x)+iy)^p+c
z:=(x+i(-y))^p+c

p=3
q=2
d=1.0
e=0.0
a=0.19261979731673805999999
b=-0.66241965269418789999997
r=4.76837158203125e-7
t=(1.0,0.0,0.0,1.0)
n=4096

de=0.25
```

Show more
lurk.org

Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that. This is part of a family of services that include mailing lists, group chat, and XMPP.