-Query matrices when drawing affines even if they are set not to be drawn because the values are used elsewhere.
-No longer need to move library items on a delayed timer when dragging and dropping.
-Fix strange spurious crash in library tab when switching between SP and DP.
-Compensate for severe Qt bug where dragging and dropping disjoint items in the Library tree would resort the dropped items in special situations.
-Move Info.plist to Data folder.
-Ensure RTTI is included in build.
-Add darker versions of .png icons.
-Add a palette editor.
-Add support for reading .ugr/.gradient/.gradients palette files.
-Allow toggling on spinners whose minimum value is not zero.
-Allow toggling display of image, affines and grid.
-Add new variations: cylinder2, circlesplit, tile_log, truchet_fill, waves2_radial.
--Bug fixes
-cpow2 was wrong.
-Palettes with rapid changes in color would produce slightly different outputs from Apo/Chaotica. This was due to a long standing bug from flam3.
-Use exec() on Apple and show() on all other OSes for dialog boxes.
-Trying to render a sequence with no frames would crash.
-Selecting multiple xforms and rotating them would produce the wrong rotation.
-Better handling when parsing flames using different encoding, such as unicode and UTF-8.
-Switching between SP/DP didn't reselect the selected flame in the Library tab.
--Code changes
-Make all types concerning palettes be floats, including PaletteTableWidgetItem.
-PaletteTableWidgetItem is no longer templated because all palettes are float.
-Include the source colors for user created gradients.
-Change parallel_for() calls to work with very old versions of TBB which are lingering on some systems.
-Split conditional out of accumulation loop on the CPU for better performance.
-Vectorize summing when doing density filter for better performance.
-Make all usage of palettes be of type float, double is pointless.
-Allow palettes to reside in multiple folders, while ensuring only one of each name is added.
-Refactor some palette path searching code.
-Make ReadFile() throw and catch an exception if the file operation fails.
-A little extra safety in foci and foci3D with a call to Zeps().
-Cast to (real_t) in the OpenCL string for the w variation, which was having trouble compiling on Mac.
-Fixing missing comma between paths in InitPaletteList().
-Move Xml and PaletteList classes into cpp to shorten build times when working on them.
-Remove default param values for IterOpenCLKernelCreator<T>::SharedDataIndexDefines in cpp file.
-Change more NULL to nullptr.
--User changes
-Add many tooltips to help clarify functionality.
-Select multiple flames in library for del/move. Still only one allowed to be set as the current.
-Show checkbox for current flame. Remember this is not necessarily what's selected.
-User can now drag a square to select xforms, which keeps in sync with checkboxes.
-Remove --nframes from command line. Replace with new params: --loopframes, --interpframes, --interploops.
-Add two new options to EmberGenome: --cwloops --cwinterploops to specify whether rotation should go clockwise instead of the default counter clockwise.
-Add these to Fractorium as checkboxes.
-Apply All now also works for toggling animate flag on xforms.
-Options dialog now allows user to set whether double click toggles spinners, or right click does.
--Bug fixes
-Selecting final and non-final xforms, and then dragging the non-final did not drag the final with it.
-Selecting all xforms when a final was present, then deleting crashed the program.
-Remove support for ppm files in the command line programs, it's an outdated format.
-Switching between SP and DP kept reapplying the palette adjustments.
--Code changes
-Move build system to Visual Studio 2015 and Qt 5.6.
-SSE used during addition of points to the histogram.
-Remove last remnants of old flam3 C code and replace with C++.
-Remove unused code involving tbb::task_group.
-Make settings object a global shared_ptr singleton, so it doesn't have to be passed around.
-Make stagger a double instead of a bool.
-Save stagger values to settings.
-Random stagger was being set in the wrong place.
-Save rotation values as double rather than int.
-Add animation sequence creation to Fractorium.
-Add two new options to EmberGenome which are used when generating an animation sequence.:
--startcount: Add this number to the filename of each flame.
--padding: Override the automatically calculated amount of padding zeroes added to each filename.
--Bug fixes
-Prevent filenames in command line programs from using scientific notation when rendering a large number of frames.
-Fix tab orders to match newer GUI items which were overlooked in previous releases.
-Re-render previews if transparency value in the options dialog was changed. Re-rendering was previously only done if early clip or y axis up was changed.
-Use transparency when rendering thumbnail previews.
--Code changes
-Wrap EmberCommon.h in a namespace called EmberCommon.
-Move FormatName() from EmberGenome to EmberCommon.h/cpp
-Add a prefix parameter to EmberFile::DefaultFilename() to allow for creating a default filename for sequences.
-When showing the final render dialog, allow specifying where it came from: the toolbar or the render sequence button.
-Refactor all preview rendering code out into its own class hierarchy with overrides for the main window and the final render dialog.
-Remove all preview render cancelling functions, they are now built into the new class hierarchy and a new render will not start until the previous one is stopped.
-Add two new function ConstrainLow() and ConstrainHigh() which wrap constraining two min/max spinboxes to each others' values.
-Add a bool to FractoriumEmberControllerBase::CopyEmberFile() to specify whether to copy the main file or the sequence file. This is somewhat of a hack and was done in a rush.
-Add a bool to FractoriumEmberControllerBase::SetEmberFile() to specify whether to move the file rather than copy. This is used in FinalRenderEmberController and improves efficiency.
-Add wrapper functions for variations filter dialog settings.
-Add a new option --statevars to EmberGenome to list the variations which change state.
-Allow for filtering in the Variations Dialog based on the same types listed in the EmberGenome options.
--Code changes
-More correctly populate VariationList::m_ParametricVariations and VariationList::m_NonParametricVariations to account for variations which have params only used for precalc.
-Consolidate some of the code in VariationList which searches by name.
-Add new options to EmberGenome to better help assess which variations have certain characteristics. The options are:
--sumvars: Display the names of all regular variations which have the default behavior of summing their outputs and exit.
--assignvars: Display the names of all regular variations which have the non-standard behavior of assigning their outputs and exit.
--ppsumvars: Display the names of all pre/post variations which have the non-standard behavior of summing their outputs and exit.
--ppassignvars: Display the names of all pre/post variations which have the default behavior of assigning their outputs and exit.
--dcvars: Display the names of all variations which use direct coloring and exit.
--parvars: Display the names of all variations which have parameters and exit.
--nonparvars: Display the names of all variations which do not have parameters (weight only) and exit.
--Code changes
-Make VariationList vectors have const elements since no callers should ever change them.
-Add new function to VariationList to retrieve a const ref to the parametric variations.
-Move some search functions out of EmberTester and into EmberCommon.h.
-General code cleanup.
-Remove --time option for EmberAnimate, it was redundant with --frame.
-Make --enable_jpg_comments and --enable_png_comments just be bools that when present mean true, rather than having to specify =true.
-Add a new argument --ts for EmberAnimate to allow the user to specify the temporal samples value to use for the entire animation. Useful for testing.
--Bug fixes
-Properly seed rands in EmberAnimate when specifying --isaac_seed and using more than one device with --opencl.
--Code changes
--Small cleanup to flatten/unflatten all code.
--Make EmberOptionEntry<T>::operator() return a const reference instead of a copy.
-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.