-Highlight power is now on by default.
-Allow for adjustments on the Flame tab to apply to all open flames in the file.
-Add two new buttons to the color tab to randomize and toggle the xform color indices.
-Remove the --strip option from EmberGenome. It was useless and was likely just a carry over from flam3 during its early debugging stages when testing strips.
-Make randoms in EmberGenome have default dimensions of 1920 x 1080.
-Prevent --inter and --rotate in EmberGenome from rotating backward before the first flame since it doesn't really make sense.
-Ensure every loaded flame has at least one xform in it.
-Change dark.qss to hide dotted selection outline around checkboxes. Users must reload it to take effect.
--Bug fixes
-The saving of last.flame during editing was appending the file when it should have been replacing.
-It was impossible for EmberGenome to create a random flame. It can now be done by specifying no arguments: EmberGenome.exe
-Crossing in EmberGenome was not logging the performed actions to the edit Xml tag.
-Apply sub batch size and fuse count to template files used on the command line.
-Use new default filter types with template files.
--Code changes
-Use cerr in SheepTools instead of cout.
-Set m_SubBatchSize and m_FuseCount to default values in Ember::Clear().
-Clean up some command line options text formatting.
-Always force times of each flame to increase from zero when saving a file.
-Remove check for times when doing a sequence in EmberGenome because the original times are never used there.
--Bug fixes
-Multi-GPU synchronization was not actually thread safe and was likely doing less iters than requested. It is now properly synchronized.
--Code changes
-Optimize Interpolater by making it a non-static class by adding some members used for caching values during interpolation.
-Cache values in SheepTools as well, which was already a non-static class.
-General cleanup.
--Bug fixes:
-Fix crash when using smooth interpolation in EmberGenome.
-Print error and exit EmberGenome when sequencing if times are not
sorted.
--Code changes:
-Another attempt at Singleton. This reverts the design to what it was
before with a fix to the code that was causing it not to behave like a
singleton should.
-crackle is now 5-10 times faster as a result of using cached values as is done on the CPU. These were previously omitted due to a bug elsewhere in the code that was erroneously attributed to the crackle caching mechanism.
-Report precision in command line programs.
-Edits will not save back to the file in memory on render completion when preview renderer is running.
--Bug fixes
-dc_perlin was crashing on Nvidia when using SP.
-Duplicate images were randomly getting added to the file in memory.
-Crash when opening an Xml with less than 2 flames in it.
--Code changes
-Use raw array of floats in OpenCL for perlin noise, rather than float3/double3.
-Add some default cases to dc_perlin.
-Redo singleton pattern yet again. Deriving from a templated Singleton<T> class was creating a separate instance per module. Now only one instance of each type will ever be created and it will be wrapped in a shared_ptr which guarantees its deletion as main() exits.
-The concept of "saving back to file in memory" has been removed. The current ember is saved back to memory whenever the render completes and the thumbnail will be updated each time.
-Command line programs now default to using double precision.
-The --bits argument has been removed and replaced with --sp to specify single precision. If omitted, DP is used.
-Remove the --seed option, it was never used.
-Remove the --sub_batch_size option, it has been part of the Xml for a long time.
-Remove --hex_palette argument for EmberRender, it only makes sense in EmberAnimate and EmberGenome.
-Set enable_jpg_comments and enable_png_comments to false by default. It was a very bad idea to have them be true because it reveals the flame parameters used to render the image which many artists guard closely.
--Bug fixes
-Continuous update was broken.
-Undo list was broken with new Library tab design.
-Force repaint on xform checkbox change to ensure circles are immediately drawn around selected xforms.
--Code changes
-Remove save to back to file in memory icon, document-hf-insert.png.
-Remove the option --intpalette to format the palette in the xml as ints. If they are not hex formatted, then they should always be float. This option was pointless.
-Cleanup some options text for the command line programs.
-Allow for dragging around flames in the library tab. This is useful for setting up the order of an animation.
-Make the opening of large files in Fractorium much more efficient when not-appending.
-Make the opening of large files in all EmberRender and EmberAnimate more efficient.
-Better error reporting when opening files.
--Bug fixes
-Get rid of leftover artifacts that would appear on preview thumbnails when either switching SP/DP or re-rendering previews.
-Filename extension was not being appended on Linux when saving as Xml, thus making it impossible to drag that file back in becase drop is filtered on extension.
--Code changes
-Move GCC compiler spec to C++14. Building with 5.3 now on linux.
-Use inline member data initializers.
-Make a #define for static for use in Utils.h to make things a little cleaner.
-Make various functions able to take arbitrary collections as their parameters rather than just vectors.
-Make library collection a list rather than vector. This alleviates the need to re-sync pointers whenever the collection changes.
-Subclass QTreeWidget for the library tree. Two new files added for this.
-Remove all usage of #ifdef ROW_ONLY_DE in DEOpenCLKernelCreator, it was never used.
-Add move constructor and assignment operator to EmberFile.
-Add the ability to use a pointer to outside memory in the renderer for the vector of Ember<T>.
-Make a lot more functions const where they should be.
-Better handling of crossed min/max DE filter values on the GUI.
-Changes to spatial and density filter values will no longer restart the entire render.
-Support reading cam_zoom from xml as zoom since JWildfire uses cam_zoom.
-Change drag n drop behavior: the default is now to append, hold Ctrl to overwrite.
-Set max value of zoom to 25 because it will crash with values around 28 or 29 due to numeric overflow when scaling quality.
-Update links in About Dialog.
-Rename some controls in Options Dialog.
-Move the color curves control to the Palette tab.
--Bug fixes
-Remove extra space in info tree text when dealing with a linked xform.
-Update summary xform name field whenever xform name changes.
-Get rid of selection border on summary tab xform tree cells.
-Only add variations from Xml that have a non-zero weight. There seemed to be spurious flattens coming from Apo with a weight of 0.
--Code changes
-Gutters are now a fixed size of 8 * supersample.
-Use stl data() member to get pointer to first element instead of &vec[0].
-Eliminate extra calls in renderer to ComputeBounds(), CreateSpatialFilter() and CreateTemporalFilter() to only be done at the start of a render.
-Another attempt at vectorizing LogScaleDensityFilter(). Vectorizes, but not sure if it helps.
-Some other loop optimizations in Renderer.
-No longer check temporal samples in response to some control changes, they are always 1 in the interactive renderer.
-Remove some warnings about interpolation type on first and last flames.
--Code changes
-Make DE block size always be 16x16, this should help stability on some Nvidia cards. No changes for AMD cards since they were that size already.
-Since the block size is now so small, do not reduce it further when supersampling.
-Clean up some variable names and documentation around OpenCL DE to be more clear.
-Make the default interpolation type be smooth.
-Correctly label interpolation types in the combo in the animation table on the Flame tab.
--Set the default combo index to be smooth.
-Attempt to prevent crash when selecting OpenCL in the final render dialog when unsupported hardware is present.
--This works by selecting the last known good device in the main window.
-Make usage of VarFuncs more consistent by moving some global functions there.
-Make CircleTrans1 a little safer by calling Zeps() on m_Sc during precalc.
-Begin prepping for 0.9.9.5 release.
-Really fix locking of affine scale.
--Code changes
-Remove dependency projects from the solution. Move to a project design where they are built once via command line and stored in a /Deps folder.
--Because of this, libpng is built as a static lib instead of a dll because that's what its command line makefile supports.
--Remove libpng16.dll from Wix installer.
-Remove all configs except for debug and release.
-Remove all platforms except for x64.
-Add #define __TBB_NO_IMPLICIT_LINKAGE 1 to prevent tbb from locking for tbb_debug.lib by default on debug builds.
-Put Ember.rc in a filter folder in the project.
-Place pragma warning disable statements in PCH files rather than in projects. This makes it easier when using Qt Creator.
-Move all resource files to the MSVC folder.
-Set all targets in QtCreator project to their lowercase names to be more *nix friendly. Set -l link statements to use these new lowercase names for ember and embercl.
-Rework projects to favor shadow builds.
-Remove the symlinks.sh file and all references to it. It was never needed. Instead, just specify multiple include and link paths in the .pro files.
-Change WIN32 to _WIN32.
-Fix a few code warnings.
-Fix crash when using Lanczos2 filter with color curves due to negative numbers. Fix by passing abs() of first argument to pow() in Renderer::GammaCorrection().
-Fix crash in hexes with SP. Rounding error caused out of bounds index.
-Draw selection circles around all selected xforms plus the current one.
--Bug fixes
-Add control key as a modifier to increase the amount a spinbox is changed when using right mouse drag to edit. Previously only observed shift key to decrease the value.
-Change the copy/paste selected xforms shortcuts to be Ctrl+X+C and Ctrl+X+V.
--Code changes
-Add function Fractorium::IsXformSelected() to determine if an xform has been selected with the checkboxes.
-Devices settings was empty on first run, so switching to OpenCL had no effect until the user manually selected a device in the options dialog. Fix by defaulting to device 0 if present.
-Split VariationList into .h/cpp files.
--Make VariationList.cpp the only place where the variations files are included from. This speeds up the build, but variations can no longer be directly instantiated.
--Variations are no longer exported.
-Add 4 new possible arguments to EmberGenome:
--allvars: Print the names of all supported variations.
--regvars: Print the names of all supported regular variations.
--prevars: Print the names of all supported pre variations.
--postvars: Print the names of all supported post variations.
-Add variations changes to the list of functionality that can be applied to all xforms using the Select tab.
-Allow for graphical affine adjustments to apply to multiple selected xforms.
-Slight optimization of the pie variation.
-Undo state is only saved when the render completes and the mouse buttons are released. This helps avoid intermediate steps for quickly completing renders while dragging.
-Add some keyboard shortcuts for toolbar and menu items.
-Make info tab tree always expanded.
--Bug fixes
-Make precalcs for all hypertile variations safer by using Zeps() for denominators.
-Changing the current xform with more than one selected would set all xform's color index value that of the current one.
-Use hard found palette path information for randoms as well.
-OpenCL build and assignment errors for Z value in epispiral variation.
-Unitialized local variables in hexaplay3D, crob, pRose3D.
--Code changes
-Change static member variables from m_ to s_.
-Get rid of excessive endl and replace with "\n".
-Remove old IMAGEGL2D define from before Nvidia supported OpenCL 1.2.
-Remove old CriticalSection code and use std::recursive_mutex.
-Make Affine2D Rotate() and RotateTrans() take radians instead of angles.
-More C++11 work.
-General cleanup.
-Allow locking of the scale at which affine circles are displayed.
-Allow user to toggle whether xform will be animated when generating sequences. Also show the animate value when loading.
--Code changes
-More conversion to C++11 style code.
-Add another value to the eXformUpdate enum called UPDATE_CURRENT_AND_SELECTED in anticipation of future work.
-Remove some old #defines.
-Allow for pausing the renderer in the main window. This makes is more efficient when entering many parameters, such as when following a tutorial.
-Add support for new variations: erf, gamma, jac_cn, jac_dn, jac_sn, logDB, pressure_wave, pRose3D, splits3D, w, waves2b, x, xerf, y, z.
-Inform user of the start and stop of file parsing in EmberAnimate because the files could potentially be very large.
-Move the follwing fields to a new table called Animation: Interpolation, Affine Interpolation, Temporal Samples, Temporal Filter Width, Temporal Filter Type.
-These currently have no effect on the interactive renderer and instead are used when running flames through EmberGenome to generate sequences, and then animating them in Fractorium or EmberAnimate.
-Add new parameter overrides for EmberRender and EmberAnimate which directly assign values to all flames being rendered, rather than scale:
--quality
--demin
--demax
--Bug fixes
-Left pad instead of right pad names of sequence outputs from EmberGenome.
-Unique file naming was broken for files which already had an underscore in them.
-Properly report that png is the default format of EmberRender and EmberAnimate output instead of erroneously claiming it was jpg.
-Make command line programs search these folders in this order for the palette file:
./
~/.fractorium
~/.config/fractorium
/usr/share/fractorium
/usr/local/share/fractorium
-Fix possible bad values in hexes.
-Better assignment of Z variables.
-Fix boarders due to use of poorly implemented rint() function from flam3. Use std::rint() now.
-wedge_sph was completely wrong due to having accidentally swapped the mapping of two parameters.
-Make juliascope juliascope_power parameter be of type REAL_NONZERO since it's used as a denominator.
-Make Z assignment compatible with the originals in:
-arch, bcircle, bCollide, bent, bent2, bisplit, blob, blur_linear, blur_square, bMod, boarders, boarders2, bSwirl, bTransform, butterfly, cardioid, cell, circleblur, circlize, circlize2, circus, collideoscope, cos, cosine, cosh, coth, cpow, cpow2, crescents, cropn, csc, csch, curl, curve, dc_gridout, deltaa, diamond, disc2, eclipse, eCollide, edisc, eJulia, elliptic, eMod, eMotion, ennepers, epispiral, ePush, eRotate, eScale, eSwirl, ex, exp, expo, exponential, fan, fdisc, fibonacci, fibonacci2, fisheye, flipcircle, flipy, flower, flux, funnel, glynnia, GlynnSim1, GlynnSim2, GlynnSim3, gridout, handkerchief, heart, hole, idisc, julia, julian2, juliaNab, kaleidoscope, lazyTravis, Lissajous, mask, MobiusN, mobius_strip, modulus, murl, murl2, npolar, ortho, oscilloscope, parabola, perspective, petal, phoenix_julia, pie (was also inconsistent between cpu and gpu), poincare, popcorn, popcorn2, power, pow_block, rational3, rays, rblur, rings, rippled, roundspher, sec, secant2, sigmoid, sin, sineblur, sinh, sinusgrid, sphericaln, spiralwing, spirograph, split, squarize, squirrel, squish, sschecks, starblur, stripes, stwin, super_shape, tan, tancos, tangent, tanh, TwinTrian, twoface, unpolar, waves, wavesn, wedge_julia, whorl, xheart, zblur, zscale.
--Code changes
-Generalize Variation::PrecalcHelper() and rename to PrePostPrecalcHelper().
--Do the same for the OpenCL version and rename it PrePostPrecalcOpenCLString().
-Rename Variation::m_AssignType to m_PrePostAssignType since it's only relevant to pre/post variations.
-Add the following modes to synth:
-MODE_SHIFTNSTRETCH 14
-MODE_SHIFTTANGENT 15
-MODE_XMIRROR 17
-MODE_XYMIRROR 18
-MODE_SPHERICAL2 19
-Clamp synth_mode, synth_*_type and synth_*_layer to valid values.
--Bug fixes
-synth was broken due to passing synth_mode to Interpolate, rather than synth_smooth.
-Fix bad include and link path in EmberAnimate project.
-Add post_smartcrop.
--Bug fixes
-Fix bug in crackle.
-Wrong point assignment in hexaplay3D, hexnix3D.
-Improper Z assignment in rblur.
-Fix inconsistency with original in circlecrop.
-Put EMBER_ROOT bakc to ./../../../ in default.pri. This is TBD.
--Code changes
-Convert all enums to class enum to be consistent with C++11 style.
-Convert some if/else statements in filter classes to case statements.
-Add overloaded stream operators to print various enums.
-Optimize crob, nBlur.
-Fix weird assignment statement in falloff3.
-Cleanup in VarFuncs::SimplexNoise3D().
-Replace fabs() with std::abs().
-General cleanup.
-Convert all enums to class enum to be consistent with C++11 style.
-Convert some if/else statements in filter classes to case statements.
-Add overloaded stream operators to print various enums.
-Convert all enums to class enum to be consistent with C++11 style.
-Convert some if/else statements in filter classes to case statements.
-Add overloaded stream operators to print various enums.