-Update various tooltips.
-Increase precision of affine and xaos spinners.
-Increase precision of fields written in Xml files to 8.
--Bug fixes
-When rendering on the CPU, if the number of threads didn't divide evenly into the number of rows, it would leave a blank spot on the last few rows.
-Fix numerous parsing bugs when reading .chaos files.
-Added compatibility fixes and/or optimizations to the following variations: asteria, bcircle, bcollide, bipolar, blob2, btransform, cell, circlecrop, circlecrop2, collideoscope, cpow2, cropn, cross, curl, depth_ngon2, depth_sine2, edisc, eRotate, escher, fan2, hex_rand, hypershift, hypershift2, hypertile1, julia, julian, julian2, juliaq, juliascope, lazyjess, log, loonie2, murl, murl2, npolar, oscilloscope2, perspective, phoenix_julia, sphericaln, squish, starblur, starblur2, truchet, truchet_glyph, waffle, wavesn.
-Add a progress bar for sequence previews.
--Bug fixes
-Attempt to prevent crash when dragging in a new file while the previews from the current file are still rendering.
-Remove the Type field from the variations tree and instead just put the type indicator icon next to the variation name.
-Double clicking to toggle variation parameter spinners now resets the value to the default if there is one, else it uses zero. If it is already using the default, it is toggled to 0.
-Add a new button to toggle xaos on and off.
-When duplicating a flame, insert it immediately after the one being duplicated instead of at the end of the file.
-When switching between flames in a file, keep the same xform index selected rather than resetting it to the first xform each time.
-Create a threaded writer for the final render and EmberAnimate so the rendering process does not get delayed by file saving which may take a long time.
-Remove warning which said "Frames per rot cannot be greater than one while Rotations is zero" when generating a sequence.
-Add the Circle_Rand variation from Chaotica.
-Add tool tips to clarify the following items:
--Auto Unique Filenames checkbox in the options dialog.
--Xaos table headers.
--Bug fixes
-Generating sequences using the following variations would be done incorrectly: circletrans1, collideoscope, crob, curlsp, glynnsim1, glynnsim2, hypercrop, julian, julian, mobiusn, nblur, waves2, wavesn.
-Adding/removing nodes from the color curve had accidentally been disabled.
-The applied xaos weight table was not showing normalized weight values.
-Changing the size of a flame was not observing the Apply To All checkbox.
-Do not clamp the Rotate field to +/-180, because this causes the rotation to switch from CW to CCW during sequence generation. Instead, leave it exactly as the user entered it so the rotations proceed in the same direction.
-Fix stylesheets.
-Make various fields in the options window be resettable via double click.
-Get stylesheets working properly on Windows and Linux with Qt6.
-Set default style to Fusion.
--Code changes
-Get build and deployment scripts working with latest versions of Qt6, AppImage, and various library dependencies.
-Add two new macros so it would build with the latest gcc: SINGLETON_DERIVED_DECL_T and SINGLETON_DERIVED_IMPL_T.
-Small changes to opencl.hpp.
-Center progress bars on Linux.
-Proper sizing of vertical header on the xaos visualization table on Linux.
-Add new preset dimensions to the right click menu of the width and height fields in the editor.
-Change QSS stylesheets to properly handle tabs.
-Make tabs rectangular by default. For some reason, they had always been triangular.
--Bug fixes
-Incremental rendering times in the editor were wrong.
--Code changes
-Migrate to Qt6. There is probably more work to be done here.
-Migrate to VS2022.
-Migrate to Wix 4 installer.
-Change installer to install to program files for all users.
-Fix many VS2022 code analysis warnings.
-No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
-Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
-No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT too.
-Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.
This has not been verified on Linux or Mac yet.
-Numbering of rendered files was wrong.
-Truchet_hex_fill was not compiling with some newer Nvidia drivers.
--Code changes
-Update Wix installer to use VS 2019.
--User changes
-Allow users to set the Exp value when using the Exp temporal filter type.
-Set the default temporal filter type to be Box, which does not alter the palette values at all during animation. This is done to avoid confusion when using Gaussian or Exp which can produce darkened images.
--Bug fixes
-Sending a sequence to the final render dialog when the keyframes had non zero rotate and center Y values would produce off center animations when rendered.
-Temporal filters were being unnecessarily recreated many times when rendering or generating sequences.
-Exp filter was always treated like a Box filter.
--Code changes
-Add a new member function SaveCurrentAsXml(QString filename = "") to the controllers which is only used for testing.
-Modernize some C++ code.
-Allow for specifying linear or smooth interpolation when generating a sequence in the Library tab (was formerly hardcoded to smooth). This has the effect of exposing the --unsmoother option used in EmberGenome in the GUI.
-Clarify tool tips of the sequence interpolation fields in the animation group on the Flame tab.
-Change caption of the Bounds tab to be Bounds & Log.
-Fix improper usage of rand() in cpow2, cpow3, hypertile1, hypertile3D1, hypertile3D2, juliac, juliaq.
-Fix program crashing during density filtering on some Nvidia cards.
-hypertile3D1 was wrong.
-Parsing phoenix_julia when coming from Apophysis was wrong.
-Density filtering was freezing on certain Nvidia cards.
--Code changes
-Optimize juliac, npolar.
-Add a new function Crand() which behaves like the legacy C rand() which returns an integer between 0 and 32766, inclusive.
-Use RandBit() in some places.
-Remove Zeps() from vignette, it's not needed.
-Restructure OpenCL code for density filtering such that it does not hang after being compiled on some Nvidia cards, such as the gtx 1660. Remove barriers from conditionals where possible.
-Add support for Chaotica files which specify xform weight as "Base weight" instead of "base_weight".
-Fix bug where Fractorium would crash when a new file was dragged in while previews were still rendering.
--This was done by changing the TreeItemChanged() events in the library tab use a direct connection rather than a queued connection.
--This obviated the need for QCoreApplication::processEvents() calls in the library tree code.
-Fix bug where renaming a flame within a file, then tabbing away did not commit the name change.
--Code changes
-Clean up some warnings about const variables in the latest version of Visual Studio 2019.
-Upgrade installer to latest update of Visual Studio 2019.
-ETA time was wrong with incremental final renders after waiting for a period of time.
--Code changes
-Small change to prevent parsing error when using tbb on some systems.
-Remove the unused field m_RotCenterY from Ember.
-Make a #define for fma() testing, but seems to make no difference.
-Optimize some of the OpenCL iteration kernel generation code.
-Possible fix to an OpenCL compilation bug when using blur curve on AMD on Mac.
-Allow dragging in folders which will be recursively traversed for flame files.
-Allow for adjusting scale via keyboard with the < and > keys.
-Show the count of opened flames on the header of the library tree.
--Bug fixes
-Attempt to preserve xaos when pasting xforms.
--Code changes
-Default flam3 compatibility mode to true.
-Add backward compatibility option for the following variations: cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan, tanh.
-Add the ability to re-order variations by dragging them in the Info tab.
-Fix crash on palette editor when opening it with certain palette files in a particular order.
-An xform with only a post variation in it might have showed up wrong.
-The xforms combo box was obscuring the name of the xforms by not being wide enough.
-Make variation state preservation be a little bit more correct in OpenCL.
--Code changes
-Make all iterators on the CPU use a temporary point.
-Optimization and correction for hexaplay3D and hexnix3D.
-Major optimization on the GPU for flames which only have one xform, by skipping all random xform selection code.
-Changes to how xaos is "preserved" when adding new xforms, copying xforms and duplicating xforms.
--Duplicating xforms when no xaos is present in the flame now maintains not using xaos, and keeps all values as one.
--Duplicating xforms when xaos is present, will result in xaos rows and columns that are the same as the xforms being duplicated, with the new row and column area having values of 1.
--Duplicating xforms when xaos is present, while Control is pressed, will result in xaos rows and columns that have values of 0, with the new row and column area having values of 1.
---Copying xforms has the same behavior as duplicating with Control pressed.
--Bug fixes
-hexaplay3D, hexnix3D and post_smartcrop were wrong on the GPU because they are the rare variations which preserve state between iterations.
-Changing the sub batch size would improperly wrong the wrong number of iterations.
--Code changes
-Some functions in Affine2D made const.
-Change in the index at which points and variation state are preserved between kernel calls.
-Some arguments in some member functions of GLEmberController made const.
-Add new Blur Cuve field which controls how blurring increases when moving from the center out.
--Bug fixes
-Undo Y axis flipping from previous commit, it never worked and is not worth the effort.
--Code changes
-The new field is a member of Ember and is called m_BlurCurve, and the corresponding xml field is called "blur_curve".
-Change how the PositiveYUp option is actually handled to make things more compatible with Apophysis. depending on the value of that option:
--Moving an affine up or down will mean a positive or negative value.
--Locally, the display of the affine will be flipped.
--Bug fixes
-Fix waffle.
-Add new style sheet called uranium that is reminiscent of the old Winamp color scheme of the same name.
-All for keyboard presses to edit affines.
--Q: rotate counter clockwise.
--E: rotate clockwise.
--W: move up.
--S: move down.
--A: move left.
--D: move right.
--G: shrink.
--H: grow.
--Hold shift to decrease amount, control to increase amount.
-Change some menu shortcuts to accommodate these new affine editing shortcuts.
-Random xaos now just provides values of either 0 or 1. Hold control to get the old behavior.
--Bug fixes
-Waffle variation was broken in OpenCL.
-Fix OpenCL compilation bugs in a few variations.
--Code changes
-Pre/post variations are now checked for precalcs when creating the OpenCL kernel code.
-Change some enumeration t
-Fix variations: blob2 (broken on CPU), epispiral, hole.
-Fix reading variations from Apophysis: supershape.
-Bump render was broken.
--Code changes
-Flip precalc sina/cosa and apply everywhere by flipping the usage. Flam3 had these reversed and it made the code confusing to read.
-Improve performance in the following variations: cpow2, dc_cube, julia3d, julia3dz, julian2, log_db, nblur, npolar, waffle, wavesn, xtrb.
--Code changes
-Rand range now uses multiply + shift rather than modulo.
-Fix some potential OpenCL compilation bugs on circlecrop, circlecrop2, oscilloscope2, Truchet_hex_crop.
-Prevent the minus key from changing the current xform when being pressed in a textbox.
--Code changes
-Cleanup some casting in depth_blur, depth_blur2.
-Fix xform selection logic to prevent selecting hidden pre and post xforms.
-Add hex_modulus.
--Bug fixes
-starblur was wrong.
--Code changes
-Optimize Truchet_hex_crop, Truchet_hex_fill.
-Cleanup Truchet_inv.
-Add new file Variations08.h, and move Gnarly and inkdrop there.