2010-04-19 15:52:20 -04:00
|
|
|
FLAM3 - cosmic recursive fractal flames
|
|
|
|
see the file COPYING for the license covering this software.
|
|
|
|
|
|
|
|
This is free software to render fractal flames as described on
|
|
|
|
http://flam3.com. Flam3-animate makes animations, and flam3-render
|
|
|
|
makes still images. Flam3-genome creates and manipulates genomes
|
|
|
|
(parameter sets). A C library is also installed.
|
|
|
|
|
|
|
|
Note: the following instructions are written for Linux users. Windows
|
|
|
|
users may install the cygwin package to get the "env" command or set
|
|
|
|
the envars in your windows command prompt manually. That means
|
|
|
|
instead of a command like
|
|
|
|
|
|
|
|
env dtime=5 prefix=foo. in=test.flame flam3-animate
|
|
|
|
|
2010-10-04 07:04:45 -04:00
|
|
|
use the following set of commands:
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
set dtime=5
|
|
|
|
set prefix=foo.
|
|
|
|
set in=test.flame
|
|
|
|
flam3-animate
|
|
|
|
|
|
|
|
As usual, to configure, build, and install:
|
|
|
|
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
|
2010-10-04 07:13:51 -04:00
|
|
|
If this has problems, you may need to re-generate some configuration
|
|
|
|
files. Do the following steps:
|
|
|
|
|
|
|
|
libtoolize
|
|
|
|
aclocal
|
|
|
|
automake
|
|
|
|
autoconf
|
|
|
|
|
|
|
|
and then try to configure and install as above.
|
|
|
|
|
2010-04-19 15:52:20 -04:00
|
|
|
This package depends on development packages for libz, libpng,
|
|
|
|
libjpeg, and libxml2.
|
|
|
|
|
|
|
|
To test it, run
|
|
|
|
|
|
|
|
flam3-render < test.flam3
|
|
|
|
|
|
|
|
and it should produce 00000.jpg and 00001.jpg, one image for each
|
|
|
|
<flame> element in the parameter file. To make an animation run
|
|
|
|
|
|
|
|
flam3-animate < test.flam3
|
|
|
|
|
|
|
|
and it should produce 100 files named 00000.jpg through 00099.jpg that
|
|
|
|
interpolate between the two <flame> elements.
|
|
|
|
|
|
|
|
|
|
|
|
envar default meaning
|
|
|
|
===== ======= =======
|
|
|
|
prefix (empty) prefix names of output files with this string.
|
|
|
|
begin j time of first frame to render (j=first time in input file) (animate only)
|
|
|
|
end n-1 time of last frame to render (n=last time specified in the input file) (animate only)
|
|
|
|
time NA time of first and last frame (ie do one frame) (animate only)
|
|
|
|
frame NA synonym for "time" (animate only)
|
|
|
|
in stdin name of input file
|
|
|
|
out NA name of output file (bad idea if rending more than one, use prefix instead)
|
|
|
|
template NA apply defaults based on this genome (genome only)
|
|
|
|
dtime 1 time between frames (animate only)
|
|
|
|
fields 0 if 1 then render fields, ie odd scanlines at time+0.5
|
|
|
|
nstrips 1 number of strips, ie render fractions of a frame at once (render only)
|
|
|
|
qs 1 quality scale, multiply quality of all frames by this
|
|
|
|
ss 1 size scale, multiply size (in pixels) of all frames by this
|
|
|
|
jpeg NA jpeg quality for compression, default is native jpeg default
|
|
|
|
format png "jpg" or "ppm" or "png"
|
|
|
|
pixel_aspect 1.0 aspect ratio of pixels (width over height), eg 0.90909 for NTSC
|
|
|
|
isaac_seed random string to be used in generating random seed. defaults to time(0)
|
|
|
|
seed random integer seed for random numbers, defaults to time+pid. deprecated.
|
|
|
|
nthreads auto number of threads to use (render and animate)
|
|
|
|
verbose 0 if non-zero then print progress meter on stderr
|
|
|
|
bits 33 also 32 or 64: sets bit-width of internal buffers (33 means 32-bit floating-point)
|
|
|
|
bpc 8 bits per channel of color: only png supports 16 (render/animate)
|
|
|
|
image filename replace palette with png, jpg, or ppm image
|
|
|
|
use_vars -1 comma sep list of variation #'s to use when generating a random flame (genome only)
|
|
|
|
dont_use_vars unset comma sep list of variation #'s to NOT use when generating a random flame. (genome only)
|
|
|
|
cross0 NA randomly select one genome from this file to genetically cross (genome only)
|
|
|
|
cross1 NA with one genome from this file (genome only)
|
|
|
|
method NA method for genetic cross: alternate, interpolate, or union. (genome only)
|
|
|
|
mutate NA randomly mutate a random genome from this file (genome only)
|
|
|
|
symmetry NA set symmetry of result. (genome only)
|
|
|
|
clone NA clone random flame in input (genome only)
|
|
|
|
clone_all NA clones all flames in file. useful for applying template to all flames (genome only)
|
|
|
|
animate NA interpolates between all flames in a file, using times specified in file (genome only)
|
|
|
|
sequence NA 360 degree rotation 'loops' times of each control point plus rotating transitions (genome only)
|
|
|
|
loops NA number of times to rotate each control point in sequence (genome only)
|
|
|
|
tries 50 number of tries to make to find a good genome. (genome only)
|
|
|
|
strip NA strip input, frame and nframes control which one. (genome only)
|
|
|
|
transparency 0 make bknd transparent, if format supports it (render/animate)
|
|
|
|
name_enable 0 use 'name' attr in <flame> to name image output if present (render only)
|
|
|
|
nick "" nickname to use in <edit> tags / img comments
|
|
|
|
url "" url to use in <edit> tags / img comments
|
|
|
|
id "" ID to use in <edit> tags / img comments
|
|
|
|
comment "" comment string for <edit> tags (genome only)
|
|
|
|
use_mem auto floating point number of bytes of memory to use (render only)
|
|
|
|
noedits unset omit edit tags from output (genome only)
|
|
|
|
write_genome 0 write out genome associated with center of motion blur window (animate only)
|
|
|
|
print_edit_depth 0 depth to truncate <edit> tag structure. 0 prints all <edit> tags (genome only)
|
|
|
|
intpalette unset round palette entries for importing into older Apophysis versions (genome only)
|
|
|
|
insert_palette unset insert the palette into the image.
|
|
|
|
enable_jpeg_comments 1 enables comments in the jpeg header (render and animate)
|
|
|
|
enable_png_comments 1 enables comments in the png header (render and animate)
|
|
|
|
|
|
|
|
earlyclip 0 enables the early clipping of rgb values for better antialiasing and resizing
|
|
|
|
defaults to 0 for backwards compatibility
|
|
|
|
flam27 0 flam3 2.7 compatibility mode; ensures generated genomes can be used by flam3 2.7.18
|
|
|
|
stagger 0 affects simultaneity of xform interpolation during genome interpolation.
|
|
|
|
represents how 'separate' the xforms are interpolated. set to 1 for each
|
|
|
|
xform to be interpolated individually, fractions control interp overlap.
|
2011-01-02 18:45:52 -05:00
|
|
|
apo_palette 0 set this to 1 to use only the first 255 elements of the palette (apophysis compatibility)
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
for example:
|
|
|
|
|
|
|
|
env dtime=5 prefix=foo. in=test.flam3 flam3-animate
|
|
|
|
|
|
|
|
means to render every 5th frame of parameter file foo.flam3, and store
|
|
|
|
the results in files named foo.XXXX.jpg.
|
|
|
|
|
|
|
|
the flam3-convert program reads from stdin the old format created by
|
|
|
|
the GIMP and writes to stdout the new xml format.
|
|
|
|
|
|
|
|
the flam3-genome program creates random parameter files. it also mutates,
|
|
|
|
rotates, and interpolates existing parameter files. for example to
|
|
|
|
create 10 wholly new control points and render them at normal quality:
|
|
|
|
|
|
|
|
env template=vidres.flam3 repeat=10 flam3-genome > new.flam3
|
|
|
|
flam3-render < new.flam3
|
|
|
|
|
|
|
|
if you left out the "template=vidres.flam3" part then the size,
|
|
|
|
quality, etc parameters would be their default (small) values. you
|
|
|
|
can set the symmetry group:
|
|
|
|
|
|
|
|
env template=vidres.flam3 symmetry=3 flam3-genome > new3.flam3
|
|
|
|
env template=vidres.flam3 symmetry=-2 flam3-genome > new-2.flam3
|
|
|
|
flam3-render < new3.flam3
|
|
|
|
flam3-render < new-2.flam3
|
|
|
|
|
|
|
|
Mutation is done by giving an input flame file to alter:
|
|
|
|
|
|
|
|
env template=vidres.flam3 flam3-genome > parent.flam3
|
|
|
|
env prefix=parent. flam3-render < parent.flam3
|
|
|
|
env template=vidres.flam3 mutate=parent.flam3 repeat=10 flam3-genome > mutation.flam3
|
|
|
|
flam3-render < mutation.flam3
|
|
|
|
|
|
|
|
Normally one wouldn't use the same file for the template and the file
|
|
|
|
to mutate. Crossover is handled similarly:
|
|
|
|
|
|
|
|
env template=vidres.flam3 flam3-genome > parent0.flam3
|
|
|
|
env prefix=parent0. flam3-render < parent0.flam3
|
|
|
|
env template=vidres.flam3 flam3-genome > parent1.flam3
|
|
|
|
env prefix=parent1. flam3-render < parent1.flam3
|
|
|
|
env template=vidres.flam3 cross0=parent0.flam3 cross1=parent1.flam3 flam3-genome > crossover.flam3
|
|
|
|
flam3-render < crossover.flam3
|
|
|
|
|
|
|
|
flam3-genome has 3 ways to produce parameter files for animation in
|
|
|
|
the style of electric sheep. the highest level and most useful from
|
|
|
|
the command line is the sequence method. it takes a collection of
|
|
|
|
control points and makes an animation that has each flame do fractal
|
|
|
|
rotation for 360 degrees, then make a smooth transition to the next.
|
|
|
|
for example:
|
|
|
|
|
|
|
|
env sequence=test.flam3 nframes=20 flam3-genome > seq.flam3
|
|
|
|
flam3-animate < seq.flam3
|
|
|
|
|
|
|
|
creates and renders a 60 frame animation. there are two flames in
|
|
|
|
test.flam3, so the animation consists three stages: the first one
|
|
|
|
rotating, then a transition, then the second one rotating. each stage
|
|
|
|
has 20 frames as specified on the command line. if you want to
|
|
|
|
render only some fraction of a whole animation file, specify the begin
|
|
|
|
and end times:
|
|
|
|
|
|
|
|
env begin=20 end=40 flam3-animate < seq.flam3
|
|
|
|
|
|
|
|
the other two methods are harder to use because they produce files that
|
|
|
|
are only good for one frame of animation. the output consists of 3
|
|
|
|
control points, one for the time requested, one before and one after.
|
|
|
|
that allows proper motion blur. for example:
|
|
|
|
|
|
|
|
env template=vidres.flam3 flam3-genome > rotme.flam3
|
|
|
|
env rotate=rotme.flam3 frame=10 nframes=20 flam3-genome > rot10.flam3
|
|
|
|
env frame=10 flam3-animate < rot10.flam3
|
|
|
|
|
|
|
|
the file rot10.flam3 specifies the animation for just one frame, in
|
|
|
|
this case 10 out of 20 frames in the complete animation. C1
|
|
|
|
continuous electric sheep genetic crossfades are created like this:
|
|
|
|
|
|
|
|
env inter=test.flam3 frame=10 nframes=20 flam3-genome > inter10.flam3
|
|
|
|
env frame=10 flam3-animate < inter10.flam3
|
|
|
|
|
|
|
|
see http://flam3.com/flame.pdf for descriptions & formulas, and
|
|
|
|
see http://electricsheep.wikispaces.com/Variations for updates.
|
|
|
|
|
|
|
|
The complete list of variations:
|
|
|
|
|
|
|
|
0. linear
|
|
|
|
1. sinusoidal
|
|
|
|
2. spherical
|
|
|
|
3. swirl
|
|
|
|
4. horseshoe
|
|
|
|
5. polar
|
|
|
|
6. handkerchief
|
|
|
|
7. heart
|
|
|
|
8. disc
|
|
|
|
9. spiral
|
|
|
|
10. hyperbolic
|
|
|
|
11. diamond
|
|
|
|
12. ex
|
|
|
|
13. julia
|
|
|
|
14. bent
|
|
|
|
15. waves
|
|
|
|
16. fisheye
|
|
|
|
17. popcorn
|
|
|
|
18. exponential
|
|
|
|
19. power
|
|
|
|
20. cosine
|
|
|
|
21. rings
|
|
|
|
22. fan
|
|
|
|
23. blob
|
|
|
|
24. pdj
|
|
|
|
25. fan2
|
|
|
|
26. rings2
|
|
|
|
27. eyefish
|
|
|
|
28. bubble
|
|
|
|
29. cylinder
|
|
|
|
30. perspective
|
|
|
|
31. noise
|
|
|
|
32. julian
|
|
|
|
33. juliascope
|
|
|
|
34. blur
|
|
|
|
35. gaussian_blur
|
|
|
|
36. radial_blur
|
|
|
|
37. pie
|
|
|
|
38. ngon
|
|
|
|
39. curl
|
|
|
|
40. rectangles
|
|
|
|
41. arch
|
|
|
|
42. tangent
|
|
|
|
43. square
|
|
|
|
44. rays
|
|
|
|
45. blade
|
|
|
|
46. secant2
|
|
|
|
47. twintrian
|
|
|
|
48. cross
|
|
|
|
49. disc2
|
|
|
|
50. super_shape
|
|
|
|
51. flower
|
|
|
|
52. conic
|
|
|
|
53. parabola
|
|
|
|
54. bent2
|
|
|
|
55. bipolar
|
|
|
|
56. boarders
|
|
|
|
57. butterfly
|
|
|
|
58. cell
|
|
|
|
59. cpow
|
|
|
|
60. curve
|
|
|
|
61. edisc
|
|
|
|
62. elliptic
|
|
|
|
63. escher
|
|
|
|
64. foci
|
|
|
|
65. lazysusan
|
|
|
|
66. loonie
|
|
|
|
67. pre_blur
|
|
|
|
68. modulus
|
|
|
|
69. oscilloscope
|
|
|
|
70. polar2
|
|
|
|
71. popcorn2
|
|
|
|
72. scry
|
|
|
|
73. separation
|
|
|
|
74. split
|
|
|
|
75. splits
|
|
|
|
76. stripes
|
|
|
|
77. wedge
|
|
|
|
78. wedge_julia
|
|
|
|
79. wedge_sph
|
|
|
|
80. whorl
|
|
|
|
81. waves2
|
|
|
|
82. exp
|
|
|
|
83. log
|
|
|
|
84. sin
|
|
|
|
85. cos
|
|
|
|
86. tan
|
|
|
|
87. sec
|
|
|
|
88. csc
|
|
|
|
89. cot
|
|
|
|
90. sinh
|
|
|
|
91. cosh
|
|
|
|
92. tanh
|
|
|
|
93. sech
|
|
|
|
94. csch
|
|
|
|
95. coth
|
|
|
|
96. auger
|
2010-10-04 07:04:45 -04:00
|
|
|
97. flux
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
see http://flam3.com/flame.pdf for descriptions & formulas for each of
|
|
|
|
these. note that, by default, if a random flame is requested and neither
|
|
|
|
'use_vars' or 'dont_use_vars' are specified, the following variations are
|
|
|
|
not used: noise, blur, gaussian_blur, radial_blur, ngon, square, rays,
|
|
|
|
and cross.
|
|
|
|
|
|
|
|
note: these variations do not use the variation weight to scale their
|
|
|
|
contributions, and so will not be implemented in flam3:
|
|
|
|
circlize
|
|
|
|
|
|
|
|
|
|
|
|
======================================
|
|
|
|
|
|
|
|
todo: eliminate all static storage.
|
|
|
|
|
|
|
|
======================================
|
|
|
|
|
|
|
|
changelog:
|
|
|
|
|
2015-05-17 12:53:02 -04:00
|
|
|
5/17/15 Added hsv_circular and hsv_rgb_palette_blend. Improved
|
|
|
|
edit history of genetic algorithm. Release as 3.0.2.
|
|
|
|
|
2010-12-29 19:04:10 -05:00
|
|
|
12/29/10 Added --version option to flam3-genome. fixed bug in 16 bpc
|
|
|
|
png image writing when using strips. xform opacity now affects
|
|
|
|
calculated width of density estimation filters. Release as 3.0.1.
|
|
|
|
|
2010-10-05 18:46:53 -04:00
|
|
|
10/05/10 Small tweaks. Fuse iterations default to 15 but increase to
|
|
|
|
100 when using earlyclip. flux variation added. Release as 3.0.
|
2010-10-04 07:04:45 -04:00
|
|
|
|
2010-04-19 15:52:20 -04:00
|
|
|
12/20/09 Highlight power now interpolates smoothly from old behavior
|
|
|
|
(-1) to new behavior. flam3-genome 'split' mode was broken, fixed
|
2010-10-04 07:04:45 -04:00
|
|
|
(thanks Exper.) Die gracefully instead of segfault when very small
|
|
|
|
estimator_curve values are specified. Version attribute added to
|
|
|
|
flame tag. Number of iterations used to fuse attractor increased to
|
|
|
|
100. Release as 2.8beta7.
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
11/24/09 Potential speedup of 5% over prior versions. Many threading
|
|
|
|
issues identified and resolved when using flam3 shared library as
|
|
|
|
back end for user interfaces. 14 complex plane variations added.
|
|
|
|
auger variation added. new flam3_make_strip library function to
|
|
|
|
generate stripped genomes for external ui strip renders. bug fix:
|
|
|
|
when rendering strips, use the same random context for each strip
|
|
|
|
to prevent edge effects where strips butt against each other. flam3
|
|
|
|
will now linearly interpolate missing colors in the colormap.
|
|
|
|
Release as 2.8beta6.
|
|
|
|
|
|
|
|
10/16/09 Non-threadsafe progress tracking code in main iteration thread
|
|
|
|
replaced with per-render progress storage. Fixed bug where pausing
|
|
|
|
render during density estimation stage terminated render. Waves2
|
2010-10-04 07:04:45 -04:00
|
|
|
variation fixed (thx Joel F). Release as 2.8beta5.
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
10/07/09 Fixed bug affecting 'animate' mode with flam3-genome. Changed
|
2010-10-04 07:04:45 -04:00
|
|
|
estimate_bounding_box to increase discarded iterations if numerous
|
|
|
|
badvals were encountered during iterations. Exported a few more
|
|
|
|
functions for Windows DLL. Release as 2.8beta4.
|
2010-04-19 15:52:20 -04:00
|
|
|
|
|
|
|
10/03/09 Changed color_speed range from 0 (no color change) to 1
|
|
|
|
(use new xform color). Animate attribute is now 0 for no motion,
|
|
|
|
1 for motion. Removed final xform from stagger algorithm. 'oscope'
|
|
|
|
parameters are now called 'oscilloscope' to match the rest of the
|
|
|
|
parametric variations (backwards compatible, so old genomes can be
|
|
|
|
read.) Stagger now affects morphing as well as sheep rotation, but
|
|
|
|
only using flam3-genome (not flam3-animate). Release as 2.8beta3.
|
|
|
|
|
|
|
|
03/18/09 Major upgrade :
|
|
|
|
- 28 variations added, mostly from the sourceforge plugins pack
|
|
|
|
- significant speed optimization of variations
|
|
|
|
- setting earlyclip env var on commandline will enable an alternate
|
|
|
|
calculation of color values, resulting in better antialiasing
|
|
|
|
- 'highlight_power' flame element controls the white highlights in
|
|
|
|
dense areas, eliminating the hue shift bug
|
|
|
|
- Apophysis chaos and solo xform/plotmode features have been
|
|
|
|
implemented. solo/plotmode are promoted to floating point
|
|
|
|
'opacity'. opacity and chaos are both interpolatable.
|
|
|
|
- <motion> tag now available for xforms...allows cyclic variation
|
|
|
|
of any regular xform parameter/coef/post.
|
|
|
|
- env var 'stagger' affects the simultaneity of xform interpolation
|
|
|
|
when morphing from one flame to another. set to 0 for existing
|
|
|
|
behaviour, set to 1 to make each xform interpolate individually
|
|
|
|
- symmetry has been broken out into color_speed and animate tags
|
|
|
|
with the same sense (which is confusing and will be fixed in a
|
|
|
|
future release).
|
2010-10-04 07:04:45 -04:00
|
|
|
- set the flam27 env var to output backwards compatible genomes
|
|
|
|
(when possible.)
|
2010-04-19 15:52:20 -04:00
|
|
|
- passes the consistency test where rendering an image at double
|
|
|
|
size and filtering it down produces the same results as the
|
|
|
|
original (modulo quality).
|
|
|
|
|
|
|
|
03/17/09 Added fuzz testing with zzuf to the regression tests. 'Strip'
|
|
|
|
mode and genomes with the zoom parameter used now break into pieces
|
|
|
|
properly. insert_palette fixed (broken a few versions ago.) fixed
|
|
|
|
twintrian variation when small weights are used. various rare
|
|
|
|
segfaults and memory leaks fixed. 'palette_mode' attribute added to
|
|
|
|
flame element for smoother palette interpolation in slow animations;
|
|
|
|
possible values are 'step' and 'linear' ('step' mode is default and
|
|
|
|
matches previous behaviour.) Release as 2.7.18.
|
|
|
|
|
|
|
|
11/11/08 Add error checking on the numbers in the input genome. Do
|
|
|
|
not exit on read errors, fail gracefully. Changed sin/cos = tan in
|
|
|
|
the tangent variation. Added polar to list of variations that use
|
|
|
|
the inverted linear identity. Bugfix: temporal_filter_exp was not
|
|
|
|
set properly in template. Apply interpolation attribute in
|
|
|
|
templates. Add/publish datarootdir with pkg-config so the palette
|
|
|
|
file is easy to find (for qosmic). Copyright by Spotworks LLC
|
|
|
|
instead of Spot and Erik. Add fuzz checks to the regression
|
|
|
|
suite. include LNX/OSX/WIN in the version string. In
|
|
|
|
flam3-genome animate command, added one to last flame time, so the
|
|
|
|
end time is inclusive. Release as 2.7.17.
|
|
|
|
|
|
|
|
09/06/08 Added 'clone_all' to flam3_genome to allow application of
|
|
|
|
template to all flames in a file at once, and 'animate' to write
|
|
|
|
a full sequence of interpolations out. 'animate' is similar to
|
|
|
|
'sequence' except that no control point rotation is performed.
|
|
|
|
Fixed non-functional 'write_genome' env var for flam3_animate.
|
|
|
|
Two bugs associated with interpolating from a log interpolation_type
|
|
|
|
to a non-log interpolation_type fixed (rotate angle reduction and
|
|
|
|
special inverted identity). when using flam3_rotate in 'spin_inter'
|
|
|
|
the interp type of the first genome is now used rather than the
|
|
|
|
current genome's interp type. Enforced upper and lower bounds for
|
|
|
|
xform color and upper bound for interpolated colormap values
|
|
|
|
as "smooth" interpolation led to values out of range. If "smooth"
|
|
|
|
interpolation is specified for all flames in a file, the first and
|
|
|
|
second-to-last genome is switched to "linear" with a warning.
|
|
|
|
spatial filters with non-box-filter window functions fixed.
|
|
|
|
Release as 2.7.16.
|
|
|
|
|
|
|
|
|
|
|
|
08/25/08 Added new interpolation types 'old' and 'older', for use in
|
|
|
|
recreating old animations. 'linear' mode now does not rotate padded
|
|
|
|
xforms (results in prettier symmetric singularities). switched to
|
|
|
|
using a 'padding' flag instead of a 'just initialized' flag; padding
|
|
|
|
flag used for implementation of 'old' and 'older' types.
|
|
|
|
interpolation_space now deprecated, instead use interpolation_type.
|
|
|
|
flam3_align is now idempotent (multiple applications do not change
|
|
|
|
the control points.) Default number of temporal samples bumped to
|
|
|
|
1000. Removed CVS headers from source code (now using SVN).
|
|
|
|
Default interpolation mode now log. Removed 'move' and 'split' vars.
|
|
|
|
changes to flam3-genome: sequence mode now returns linear
|
|
|
|
interpolation mode for all control points except first/last of edges
|
|
|
|
- these cps will use the original interpolation mode; inter and
|
|
|
|
rotate modes will now return padded genomes for all control points,
|
|
|
|
all with linear interpolation specified. instead of centering
|
|
|
|
sometimes reframe by golden mean plus noise. Release as 2.7.15.
|
|
|
|
|
|
|
|
07/21/08 Add configuration option for atomic-ops. bug fix: do not
|
|
|
|
truncate floating point palettes. new motion blur features: add
|
|
|
|
temporal_filter_type, can be "box" (default) or "gaussian" or
|
|
|
|
"exp". Temporal_filter_width and temporal_filter_exp are parms to
|
|
|
|
it. 'blur' env var no longer used. Small bug fix: iteration
|
|
|
|
count depends only on the size of the output image, not the padded
|
|
|
|
image (the gutter). When interpolating, only do -pi/pi adjustment
|
|
|
|
for non-asymmetric cases. Julian/juliascope variations use the
|
|
|
|
alternate inverted identity for interpolation (reduces wedge
|
|
|
|
effect). Add python script for regression and consistency
|
|
|
|
checking. Add svn revision number to version string (in the
|
|
|
|
software not of the package). Release as 2.7.14.
|
|
|
|
|
|
|
|
05/28/08 Restored upper limit on particle coordinates. Release as
|
|
|
|
2.7.13.
|
|
|
|
|
|
|
|
05/16/08 Added man pages. Removed upper limit on particle
|
|
|
|
coordinates. fixed FSF address in comments. update to automake
|
|
|
|
1.10.1. added eps to denom of perspective fraction to avoid
|
|
|
|
infinities (thanks fred). Put contents of 'id' env var in png/jpg
|
|
|
|
comment block. Release as 2.7.12.
|
|
|
|
|
|
|
|
04/05/08 Added 16 bit per channel support to PNG via bpc envar.
|
|
|
|
isaac.h is now installed with the flam3 headers. Strip indexing
|
|
|
|
now done with size_t's to fix bug in large images (thanks Paul).
|
|
|
|
Progress callback now returns ETA, and per-thread verbose flag
|
|
|
|
functionality fixed. Enumerated spatial filter types now used in
|
|
|
|
flam3.h, taking the place of function pointers (simplifies the
|
|
|
|
API). Fix bug by moving precalculation of variation variables to
|
|
|
|
flam3_iterate (thanks david). Release as 2.7.11.
|
|
|
|
|
|
|
|
03/15/08 fixed interpolation bug when magnitude of rotation/scaling
|
|
|
|
component of affine transform is 0. replaced secant variation
|
|
|
|
with more flame-friendly secant2 (eliminates gap in y direction,
|
|
|
|
scales y-coordinate by weight). warning message now printed when
|
|
|
|
unrecognized variation is present in an xform. fixed bad
|
|
|
|
inequality when checking for -pi/pi discontinuity during complex
|
|
|
|
interpolation. release as 2.7.10.
|
|
|
|
|
|
|
|
02/08/08 non-zero weights for final xforms no longer allowed, and now
|
|
|
|
have no effect. recompiled windows exes with mingw gcc 4.1 to
|
|
|
|
take advantage of scalability improvements in flam3 2.7.8 (was
|
|
|
|
compiling with mingw gcc 3.4 until now). for fedora package
|
|
|
|
compliance, flam3.pc.in patched by ian weller and moved use of
|
|
|
|
config.h to c files only. release as 2.7.9.
|
|
|
|
|
|
|
|
01/26/08 better scalability across multiple CPUs by using compare and
|
|
|
|
swap (from Tim Hockin). fix bug in large images (>2GB). add
|
|
|
|
flam3_srandom and flam3_malloc/free to better support wrapping
|
|
|
|
with python on windows, which links with a different C
|
|
|
|
runtime. add --enable-shared option to configure script (from
|
|
|
|
Bobby R Ward). release as 2.7.8.
|
|
|
|
|
|
|
|
12/16/07 fixed bug (rare random crash) identified by david burnett.
|
|
|
|
initialize new xforms with better defaults for parametric
|
|
|
|
variations (based on interpolated-against xforms). add id envar,
|
|
|
|
like nick/url. add clone_action envar. return to xform
|
|
|
|
interpolation based on complex logs, but make consistent decisions
|
|
|
|
about counter/clockwise rotation across the sheep edges.
|
|
|
|
interpolation_space attribute to flame element can be set to
|
|
|
|
"linear" to go back to the simpler method, or "log" to use this
|
|
|
|
new (default) method. release as 2.7.7
|
|
|
|
|
|
|
|
10/20/07 fixed action string overflow when many xforms are present.
|
|
|
|
added 'print_edit_depth' env var to control how many levels of
|
|
|
|
<edit> tags are saved when using flam3-genome. Fixed wrong
|
|
|
|
placement of random improve_colors code in flam3-genome. go to
|
|
|
|
five digit filenames. fixed bug in supershape variation. API
|
|
|
|
cleanup, thanks to david bitseff. release 2.7.6.
|
|
|
|
|
|
|
|
08/14/07 various code updates to assist with compiling under msvc++.
|
|
|
|
now can specify --disable-pthread or --enable-pthread to configure
|
|
|
|
to better control compilation. fixed bug preventing renders of
|
|
|
|
flames with more than 128 xforms. release 2.7.5.
|
|
|
|
|
|
|
|
07/12/07 fixed bug in split variation, now compatible with both
|
|
|
|
versions of Apo. added insert_palette option. switched density
|
|
|
|
estimation kernel from Epanichnikov to Gaussian. genetic cross
|
|
|
|
now crosses palettes rather than selecting one of the parent
|
|
|
|
palettes. remove noisy variations from random generation if
|
|
|
|
use_vars or dont_use_vars not specified. fixed metrics calculated
|
|
|
|
on small test render for genetic operations. reduced memory
|
|
|
|
requirements for density estimation filters. 64-bit linux distros
|
|
|
|
now supported. release 2.7.4.
|
|
|
|
|
|
|
|
|
|
|
|
06/21/07 flam3 version, rendered genome, some render statistics and
|
|
|
|
optionally nick/url stored in jpeg/png headers. fixed two bugs
|
|
|
|
in isaac rng code (strongly affected temporal blur). prevent
|
|
|
|
final xform rotation for sheep animation. fixed interpolation
|
|
|
|
when only one flame has final xform. added Supershape, Flower,
|
|
|
|
Conic, Parabola, Move and Split variations. Shape combined with
|
|
|
|
Supershape via 'rnd' parameter. flam3-genome now writes 'name'
|
|
|
|
attribute for rotate and sequence modes. oversample attribute
|
|
|
|
deprecated; supersample now preferred. new build process for
|
|
|
|
windows exes using MinGW/MSYS. added 'intpalette' env var to
|
|
|
|
round floating point palettes to allow older versions of Apophysis
|
|
|
|
to read them. default image type is now PNG, transparency off.
|
|
|
|
density estimation code revised to be more consistent between
|
|
|
|
different supersample levels, which required change to default
|
|
|
|
de params. limit number of de filters to conserve memory. fixed
|
|
|
|
julia variation dependency on non-thread-safe random bit function.
|
|
|
|
removed random number storage for radial blur variation.
|
|
|
|
release 2.7.3.
|
|
|
|
07/26/08: Note, incompat. change made to direction of cp->rotate
|
|
|
|
(as of 2.7.3, rotates shortest distance instead of clockwise)
|
|
|
|
|
|
|
|
02/09/07 use isaac random number generator to avoid differences
|
|
|
|
between mac/pc/linux. use multiple threads to take advantage
|
|
|
|
of multiple CPUs or cores. new variations: disc2, Arch,
|
|
|
|
Tangent, Square, Rays, Blade, Secant, Twintrian, Cross.
|
|
|
|
fixed bug reading hex color format - must remove \n prior to
|
|
|
|
start of colors if present. use EPS in spiral, hyperbolic
|
|
|
|
and spherical to eliminate black spots. fix numbering of
|
|
|
|
disc2, change parameter to estimate_bounding_box. made blur
|
|
|
|
kernel type templatable. removed extraneous 'enabled="1"' in
|
|
|
|
writing out final xform information (no longer needed).
|
|
|
|
release 2.7.2.
|
|
|
|
|
|
|
|
12/31/06 fixed bug in waves precalculation code. curl and rectangles
|
|
|
|
variations from joel faber. remove visibility of
|
|
|
|
rotation_center attribute, fix strips operator to handle
|
|
|
|
rotation without it. added motion exponent and gamma lin
|
|
|
|
thresh to flam3_print. list of variations in the docstring
|
|
|
|
automatically generated. flam3-genome: envar noedits
|
|
|
|
suppresses output of edit history. release 2.7.1.
|
|
|
|
|
|
|
|
09/27/06 print out palette as floating point with up to 6 digits
|
|
|
|
rather than integers (for very slow smooth transitions).
|
|
|
|
Added optimization to only recalculate the xform distrib
|
|
|
|
array when necessary (Thanks Joel Faber). Added settable
|
|
|
|
kernel for downrez. Added XML reading code for new <palette>
|
|
|
|
format for gradients. Functionalized hex gradient read.
|
|
|
|
Removed color shift experimental feature. New
|
|
|
|
'motion_exponent' attribute controls fade of temporal steps.
|
|
|
|
added gaussian_blur and radial_blur vars from apo. added pie
|
|
|
|
and ngon variations from joel faber. add rotation_center
|
|
|
|
attribute. added but disabled image variation from joel.
|
|
|
|
release as 2.7.
|
|
|
|
|
|
|
|
06/26/06 use new libpng api, handle libpng errors properly (from nix
|
|
|
|
at esperi.org.uk). print out palette as floating point with
|
|
|
|
6 digits rather than integers (for very slow smooth
|
|
|
|
transitions).
|
|
|
|
|
|
|
|
06/11/06 disable density estimation for 16 and 32 bit buffers because
|
|
|
|
it doesn't work. Apo team removed "enabled" from final xform
|
|
|
|
specification, so now it defaults to on. make default
|
|
|
|
temporal samples be 60 so that motion blur is the default,
|
|
|
|
but explicitly ignore temporal samples when rendering still
|
|
|
|
frames. add strip genetic operator to flam3-genome for
|
|
|
|
breaking a flame into strips for parallel rendering. add
|
|
|
|
subpixel offsets for antialiasing by averaging multiple
|
|
|
|
images. release as 2.7b8.
|
|
|
|
|
|
|
|
05/25/06 change attribute name "batches" to "passes" because many old
|
|
|
|
genomes have it set, and with density estimation it is
|
|
|
|
harmful.
|
|
|
|
|
|
|
|
04/28/06 remove debugging code, release as 2.7b7.
|
|
|
|
|
|
|
|
04/28/06 add attribute interpolation="smooth" for catmull-rom
|
|
|
|
interpolation. known bug: some frames come out dark.
|
|
|
|
release as 2.7b6.
|
|
|
|
|
|
|
|
04/15/06 rename XML attribute "estimator" to "estimator_radius". fix
|
|
|
|
the progress callback. add use_mem envar. move palette
|
|
|
|
database to external file. cleanup namespace. add new
|
|
|
|
variations blur, julian, and juliascope. fix flam3-convert.
|
|
|
|
add experimental color shifting via "shift" envar. supports
|
|
|
|
finalxform. can read hex palette format. avoids the "square"
|
|
|
|
that appears from NaNs. release as 2.7b5.
|
|
|
|
|
|
|
|
01/11/06 unlimited number of xforms per flame. new variations
|
|
|
|
cylinder and perspective. rename rename de_max_filter to
|
|
|
|
estimator, de_min_filter to estimator_minimum, de_alpha
|
|
|
|
to estimator_curve, and jitters to temporal_samples.
|
|
|
|
release as 2.7b4.
|
|
|
|
|
|
|
|
11/28/05 performance optimization, fix symmetry singularities, added
|
|
|
|
bubble variation, fixed handkerchief variation, templates
|
|
|
|
apply to sequence and rotate flam3-genome commands, added
|
|
|
|
envar "name_enable" to render filenames specified in the
|
|
|
|
"name" attribute of the flame element, small bugfixes,
|
|
|
|
release as 2.7b3.
|
|
|
|
|
|
|
|
11/04/05 verbose on by default. Added 'transparency' envar for png
|
|
|
|
renders without transparency channel. Fixed non-black
|
|
|
|
background jpeg renders. add improve_colors mutation,
|
|
|
|
rewrite most of estimate_bounding_box. added new variations
|
|
|
|
blob pdjd fan2 rings2 eyefish. added '33bit' method for
|
|
|
|
32-bit floats. <edit> tags track history. alter the gamma
|
|
|
|
curve to be linear near 0 to avoid singularity and reduce
|
|
|
|
noise, set with gamma_threshold. release as v2.7b2.
|
|
|
|
|
|
|
|
09/24/05 new density estimator and temporal jitter code from Erik
|
|
|
|
Reckase (note removal of todo items above :). allow gamma,
|
|
|
|
vibrancy, contrast, pixels_per_unit, and brightness to vary
|
|
|
|
as part of the genome rather than as part of the rendering
|
|
|
|
parameters. flam3-genome does not retry when cloning. ditch
|
|
|
|
2nd color coordinates. release as v2.7b1.
|
|
|
|
|
|
|
|
06/27/05 in flam3_dimension, give up and return NaN if 90% or more of
|
|
|
|
the samples are being clipped. release v2.6.
|
|
|
|
|
|
|
|
06/22/05 add envar to control the number of tries.
|
|
|
|
|
|
|
|
06/06/05 add new form of mutation that introduces post xforms.
|
|
|
|
|
|
|
|
05/20/05 fix memory trashing bug resulting from xform overflow. put
|
|
|
|
regular xforms before symmetry in printed genomes. enforce
|
|
|
|
weights non-negative & at least one xform. remove
|
|
|
|
nan-protection from popcorn variation. truncate xforms with
|
|
|
|
very small weight.
|
|
|
|
|
|
|
|
05/13/05 fix bug reported by erik reckase where fan variation could
|
|
|
|
blow up to NaN because the domain of atan2 was not protected.
|
|
|
|
remove protection from all atan2 calls and instead detect NaN
|
|
|
|
results and replace them with noise. count really large
|
|
|
|
values as bad too to prevent blowing up to infinity. enforce
|
|
|
|
0<=hue<1, release v2.6b1.
|
|
|
|
|
|
|
|
05/05/05 report choices made during genome generation in notes
|
|
|
|
attribute. flam3_dimension no longer hangs when most of the
|
|
|
|
attractor is outside the camera. limit number of variations
|
|
|
|
produced by genetic operators to 5. reduce rate of
|
|
|
|
interpolation method of crossover.
|
|
|
|
|
|
|
|
03/17/05 put cloning back in (found by James Rantanen).
|
|
|
|
|
|
|
|
03/08/05 change sawtooth variation (incompatible!). add fan
|
|
|
|
variation. rename sawtooth to rings. release as v2.5.
|
|
|
|
|
|
|
|
03/01/05 fix rotation when nstrips > 1. add flam3_dimension(). minor
|
|
|
|
bugfixes. release as v2.4.
|
|
|
|
|
|
|
|
01/25/05 release as v2.3.
|
|
|
|
|
|
|
|
01/18/05 support post xforms (idea from eric nguyen). support camera
|
|
|
|
rotation.
|
|
|
|
|
|
|
|
12/28/04 release as v2.2.
|
|
|
|
|
|
|
|
12/27/04 preview implementation of image fractalization by adding a
|
|
|
|
color coordinate. changed how random/default color
|
|
|
|
coordinates are selected (they alternate 0 and 1 instead of
|
|
|
|
being distributed between 0 and 1). WARNING: incompatible
|
|
|
|
format change to samples argument of flam3_iterate.
|
|
|
|
|
|
|
|
12/20/04 allow mutation and crossover from files with multiple
|
|
|
|
genomes. a random genome is selected for each repetition.
|
|
|
|
|
|
|
|
12/11/04 fix bug printing out interpolated non-built-in palettes.
|
|
|
|
warn if any images sizes in animation do not match.
|
|
|
|
|
|
|
|
12/01/04 remove debugging code left in flam3-convert, thanks to Paul
|
|
|
|
Fishwick for reporting this. add cosine variation. add
|
|
|
|
sawtooth variation. handle nstrips that do not divide the
|
|
|
|
height. write partial results as strips are computed. fix
|
|
|
|
old bug where in 32 bit mode one of the terms appeared to be
|
|
|
|
calculated at 16 bits. release as v2.1.
|
|
|
|
|
|
|
|
10/28/04 fix docstring bug. release as v2.0.1.
|
|
|
|
|
|
|
|
10/28/04 renaming, cleanup, and modularization. now exports
|
|
|
|
libflam3.a and flam3.h, all names prefixed with flam3_.
|
|
|
|
binaries named with flam3- prefix, genome files use flam3
|
|
|
|
suffix. create and install a flam3.pc pkg-config file.
|
|
|
|
release as v2.0.
|
|
|
|
|
|
|
|
09/21/04 fix bug where code for integer rounding was left in 64-bit
|
|
|
|
floating point version. round remaining time up so we do not
|
|
|
|
say ETA in 0 seconds. do not use static allocation to hold
|
|
|
|
onto memory, just malloc and free what we need every frame.
|
|
|
|
enforce positive oversampling. fix bug in hqi on sequences
|
|
|
|
of images of different sizes. release as v1.15.
|
|
|
|
|
|
|
|
09/17/04 change name of envar to control jpeg compression quality from
|
|
|
|
"quality" to "jpeg". check for bad nbatches values. release
|
|
|
|
as v1.14.
|
|
|
|
|
|
|
|
08/23/04 add about 600 cmaps from Jackie, Pat Phillips, Classylady,
|
|
|
|
and BTomchek. use 64-bit (double) sized buffers. remove
|
|
|
|
white_level. add new variations: exponential & power. fix
|
|
|
|
bug where hue_rotation was left uninitialized. add clone
|
|
|
|
option to pick-flame which just applies template to the input
|
|
|
|
without modifying genome. random_control_point can now put
|
|
|
|
multiple variations in one xform. remove altivec code because
|
|
|
|
it is incompatible with 64-bit buffers. verbose (progress bar
|
|
|
|
on stderr) from Jon Morton. control random number seeds via
|
|
|
|
seed envar. support buffer sizes 16, 32, or 64 bits with
|
|
|
|
three versions of rect.c included into libifs.c.
|
|
|
|
|
|
|
|
03/28/04 fix bug interpolating between flames with different numbers
|
|
|
|
of xforms introduced by the new de/parsing. add modified
|
|
|
|
version of the popcorn variation from apophysis. fix small
|
|
|
|
bug in waves variation. make distribution of variations
|
|
|
|
even. add altivec code from R.J. Berry of warwick.ac.uk.
|
|
|
|
release as v1.13.
|
|
|
|
|
|
|
|
03/26/04 add wave variation. allow negative variational coefs. do
|
|
|
|
not truncate filter width to an integer. add fisheye
|
|
|
|
variation. make variations print by name instead of using a
|
|
|
|
vector, that is say spherical="1" instead of var="0 0 1" or
|
|
|
|
var1="2". it should still read the old format.
|
|
|
|
|
|
|
|
03/07/04 fix bug printing out result of interpolating between
|
|
|
|
symmetries. release as v1.11.
|
|
|
|
|
|
|
|
03/03/04 add new means of crossover: a random point between the
|
|
|
|
parents as defined by linear interpolation. in all kinds of
|
|
|
|
crossover, reset the color coordinates to make sure they are
|
|
|
|
spread out well. somehow lost part of the extra_attributes
|
|
|
|
patch, so put it in again. add pixel_aspect_ratio envar.
|
|
|
|
decrease filter cutoff threshold. the edges of the filter
|
|
|
|
were almost zeros, so making the filter smaller saves time
|
|
|
|
with almost no effect on the results. do not print out the
|
|
|
|
attributes of control points that have default values.
|
|
|
|
release as v1.10.
|
|
|
|
|
|
|
|
02/26/04 remove prefix argument to print_control_point, and add
|
|
|
|
extra_attributes. allow any value for vibrancy parameter.
|
|
|
|
allow variation blending coefs to have any values. do not
|
|
|
|
normalize them. on windows nstrips is computated
|
|
|
|
automatically to fit within memory (leaves at least 20%
|
|
|
|
unused). support png image format and if output is png then
|
|
|
|
compute & output alpha channel. release as v1.9.
|
|
|
|
|
|
|
|
02/01/04 add julia variation, and put bent variation back in. change
|
|
|
|
how colors are computed in presense of symmetry: xforms that
|
|
|
|
come from a symmetry do not change the color index. this
|
|
|
|
prevents the colors from washing out. since an xform may be
|
|
|
|
interpolated between a symmetry and not, this this is a
|
|
|
|
blending factor. add more documentation. add function to
|
|
|
|
compute lyapunov coefs. allow control over symmetries
|
|
|
|
produced by pick-flame. release as v1.8.
|
|
|
|
|
|
|
|
07/20/03 cleanup, update documentation, release as v1.7.
|
|
|
|
|
|
|
|
07/15/03 fix bug in interpolation where in last frame when going from
|
|
|
|
non-symmetric to symmetric it left out some xforms. drop
|
|
|
|
support for "cmap_inter". add var1 as a abbreviation to var
|
|
|
|
in xml output, and do not print trailing 0s in var string.
|
|
|
|
|
|
|
|
07/09/03 change matrix interpolation to be linear rather than complex
|
|
|
|
log to avoid the discontinuity at 180 degrees. this was
|
|
|
|
causing jumpiness in the C1 continuous algorithm. this means
|
|
|
|
that rotation has to be handled with pick-flame. put direct
|
|
|
|
support for symmetries in the de/parser to make control
|
|
|
|
points smaller and easier to understand. support
|
|
|
|
combinations of bilateral & rotational symmetry.
|
|
|
|
|
|
|
|
06/22/03 bug in colormap interpolation. release as v1.6.
|
|
|
|
|
|
|
|
06/20/03 fix some bugs, in particular remove sorting of the xforms
|
|
|
|
when control points are read. they are only sorted when they
|
|
|
|
are generated. updated dates on copyright notices. added
|
|
|
|
time parameter to anim, shorthand for begin & end being the
|
|
|
|
same. added a fairly terrible hack to allow palettes to be
|
|
|
|
specified as blending of two basic palettes. this requires
|
|
|
|
much less bandwidth than sending 256 rgb triples. in
|
|
|
|
pick-flame change default to be enclosed xml output.
|
|
|
|
|
|
|
|
06/09/03 add C1 continuous interpolation to pick-flame (suggested by
|
|
|
|
Cassidy Curtis). added new variations from Ultra Fractal
|
|
|
|
version by Mark Townsend. added symmetry xforms.
|
|
|
|
|
|
|
|
06/02/03 add convert-flame which reads the old file format and writes
|
|
|
|
the new one. release as v1.5.
|
|
|
|
|
|
|
|
03/22/03 fix bug in hqi & anim. somewhere along the way (prolly jpeg)
|
|
|
|
nstrips was broken. add qs and ss params to hqi.
|
|
|
|
discontinue strips for anim because the implementation is a
|
|
|
|
bit problematic (animating zoom??). bump version to 1.4.
|
|
|
|
|
|
|
|
03/05/03 add pick-flame.c to the project, and extend it with mutation
|
|
|
|
and crossover capability. add parse_control_points_from_file
|
|
|
|
(and use it). rename non-xml variants of de/parsers to *_old
|
|
|
|
and rename xml variants to remove _xml. add
|
|
|
|
rotate_control_point. bump version to 1.3.
|
|
|
|
|
|
|
|
02/10/03 increase CHOOSE_XFORM_GRAIN by 10x and use chars instead of
|
|
|
|
ints. remove extra -ljpeg from Makefile. lose hack that
|
|
|
|
ignored density xforms after interpolation. what was that
|
|
|
|
for?? it makes a difference, and just makes interpolation
|
|
|
|
less smooth as far as i can tell. bump version to 1.2.
|
|
|
|
|
|
|
|
01/17/03 release as v1.1.
|
|
|
|
|
|
|
|
01/16/03 support output in jpeg format; this is the default. support
|
|
|
|
win32.
|
|
|
|
|
|
|
|
01/08/03 by default don't render the last frame so that animations
|
|
|
|
dove-tail and loop
|
|
|
|
|
|
|
|
01/06/03 fix how too many xforms are detected so that one more xform
|
|
|
|
is allowed.
|
|
|
|
|
|
|
|
12/22/02 first release as independent package. release as v1.0.
|