--Bug fixes
-Strips renders crashed.
-Better handling of large memory allocations by forcing a free of previous allocations.
-Final render dialog did not properly save last used extension setting.
-Density filtering progress bar in final render dialog did not update if only log scaling was being used.
--Add support for Exr files which use 32-bit floats for each RGBA channel. Seems to come out too washed out.
--Allow for clearing an individual color curve.
--Allow for saving multiple image types in EmberRender and EmberAnimate. All writes are threaded.
--Remove --bpc command line argument. Add format png16 as a replacement.
--Remove --enable_jpg_comments and --enable_png_comments command line arguments, and replace them with --enable_comments which applies to jpg, png and exr.
--Add menu items to variations and affine spinners which allow for easy entry of specific numeric values like pi.
--Make final render dialog be wider rather than so tall.
Bug fixes:
--Fix some OpenCL compile errors on Mac.
--Remove ability to save bitmap files on all platforms but Windows.
Code changes:
--New dependency on OpenEXR.
--Allow Curves class to interact with objects of a different template type.
--Make m_Curves member of Ember always use float as template type.
--Set the length of the curves array to always be 2^17 which should offer enough precision with new 32-bit float pixel types.
--Set pixel types to always be 32-bit float. This results in a major reduction of code in the final accumulation part of Renderer.h/cpp.
--Remove corresponding code from RendererCL and FinalAccumOpenCLKernelCreator.
--Remove Transparency, NumChannels and BytesPerPixel setters from Renderer.h/cpp.
--Add new global functions to format final image buffers and place all alpha calculation and scaling code in them.
--Blending is no longer needed in OpenGLWidget because of the new pixel type.
--Make new class, AffineDoubleSpinBox.
--Attempt to make file save dialog code work the same on all OSes.
--Remove some unused functions.
-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.
-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.
-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.
-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 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.