diff --git a/Builds/QtCreator/defaults.pri b/Builds/QtCreator/defaults.pri index 2c11e49..000fe27 100644 --- a/Builds/QtCreator/defaults.pri +++ b/Builds/QtCreator/defaults.pri @@ -1,4 +1,4 @@ -VERSION = 1.0.0.2 +VERSION = 1.0.0.4 win32:CONFIG += skip_target_version_ext CONFIG += c++14 #message(PWD: $$absolute_path($$PWD)) diff --git a/Data/Version History.txt b/Data/Version History.txt index fb91913..f68c1f9 100644 --- a/Data/Version History.txt +++ b/Data/Version History.txt @@ -1,3 +1,38 @@ +1.0.0.4 07/01/2017 +--User changes + -Add support for adjusting xform color indices in the palette editor. Fixed palettes can now be displayed there, but they will have no color arrows as they are not editable. + -Add support for independent dimension scaling in the EmberRender and EmberAnimate programs to bring them in line with the final render dialog Fractorium. The options are -ws, -hs and -scaletype. + -Limit size of the left side of the palette editor. + -dark.qss is now per-OS. + +--Bug fixes + -Opacity was accidentally being set to zero sometimes which could cause flickering when animating. + -Fractorium would occasionally freeze after dismissing the final render dialog because some values were not properly re-initialized. + -File paths with a space in them did not work in the command line programs. + -Any Xml file in the search paths would erroneously be treated as a palette file. + -The following variations were wrong: coshq, cothq. + -During iteration, the color index could become nan if all xform color speeds were negative. This could lead to bad results on the GPU. Fix to check for nan. Minimal speed difference. + -Fix crash when opening palette editor with a flame whose palette specifies no originating file. + -Any measurement of time which was sub-millisecond was wrong. + +--Code changes + -Remove VS 2013 build files. + -Qualify many calls with std:: to avoid colliding with glm:: + -Change some for loops to while loops when iterating through xforms. + -Allow FractoriumEmberController::UpdateXform() to be able to apply the action to an xform at a specific index. + -Remove old code blocks build files that were never used. + -Make GetPath() return empty string if no path is present in the passed in file path. + -GetTotalXform() was always counting the final xform, even if it was unused. + -Make the following variations safer by using Zeps(): sinq, sinhq, secq, sechq, tanq, tanhq, cosq, coshq, cotq, cothq, cscq, cschq, estiq. + -Always pass -cl-no-signed-zeros -cl-denorms-are-zero to kernel compiles for both single and double. + -Flush all denormals to zero for all executable programs. This will likely lead to a speedup for badly behaving flames. + -Make the following variations safer by using Zeps(): conic, bipolar, edisc, whorl, tan, csc, cot, tanh, sech, csch, coth, auger, bwraps, hypertile3d, hypertile3d1, ortho, poincare, rational3, barycentroid, sschecks, cscq, cschq, scry_3D, splitbrdr, hexcrop, nblur, crob. + -Small optimization for gdoffs, use precalcAtanYX. + -Properly propagate z through circlesplit, cylinder2 and tile_log variations. + -Some values in truchet_fill could've been NaN. + -Make most installation files read only. + -Use auto in more places. + 1.0.0.3 04/06/2017 --User changes -Remove opacity adjustment from legacy flam3 code base, it can lead to erroneous results. diff --git a/Source/EmberCL/IterOpenCLKernelCreator.cpp b/Source/EmberCL/IterOpenCLKernelCreator.cpp index 883f8ba..6136700 100644 --- a/Source/EmberCL/IterOpenCLKernelCreator.cpp +++ b/Source/EmberCL/IterOpenCLKernelCreator.cpp @@ -203,6 +203,7 @@ string IterOpenCLKernelCreator::CreateIterKernelString(const Ember& ember, } xformFuncs << "\toutPoint->m_ColorX = tempColor + xform->m_DirectColor * (outPoint->m_ColorX - tempColor);\n"; + xformFuncs << "\n"; xformFuncs << "\tif (isnan(outPoint->m_ColorX))\n"; xformFuncs << "\t outPoint->m_ColorX = 0.0; \n"; xformFuncs << "}\n" diff --git a/Source/EmberCL/OpenCLWrapper.cpp b/Source/EmberCL/OpenCLWrapper.cpp index e7aa7a9..35898c0 100644 --- a/Source/EmberCL/OpenCLWrapper.cpp +++ b/Source/EmberCL/OpenCLWrapper.cpp @@ -1029,7 +1029,7 @@ bool OpenCLWrapper::CreateSPK(const string& name, const string& program, const s if (doublePrecision) err = spk.m_Program.build(m_DeviceVec, "-cl-mad-enable -cl-no-signed-zeros -cl-denorms-are-zero");//Tinker with other options later. else - err = spk.m_Program.build(m_DeviceVec, "-cl-mad-enable -cl-no-signed-zeros -cl-single-precision-constant -cl-denorms-are-zero"); + err = spk.m_Program.build(m_DeviceVec, "-cl-mad-enable -cl-no-signed-zeros -cl-denorms-are-zero -cl-single-precision-constant"); //err = spk.m_Program.build(m_DeviceVec, "-cl-single-precision-constant"); //err = spk.m_Program.build(m_DeviceVec, "-cl-mad-enable -cl-single-precision-constant"); diff --git a/Source/EmberTester/EmberTester.cpp b/Source/EmberTester/EmberTester.cpp index 9050b34..31ed6d3 100644 --- a/Source/EmberTester/EmberTester.cpp +++ b/Source/EmberTester/EmberTester.cpp @@ -1039,18 +1039,20 @@ bool TestConstants() void TestFuncs() { - //auto vlf(VariationList::Instance()); - //vector stringVec; - //stringVec.push_back("/ ("); - ////stringVec.push_back("log("); - //for (size_t i = 0; i < vlf->Size(); i++) - //{ - // auto var = vlf->GetVariation(i); - // if (SearchVar(var, stringVec, false)) - // { - // cout << var->Name() << endl; - // } - //} + auto vlf(VariationList::Instance()); + vector stringVec; + stringVec.push_back("M_PI"); + + //stringVec.push_back("log("); + for (size_t i = 0; i < vlf->Size(); i++) + { + auto var = vlf->GetVariation(i); + + if (SearchVar(var, stringVec, false)) + { + cout << var->Name() << endl; + } + } } bool TestGlobalFuncs() @@ -1963,8 +1965,8 @@ int _tmain(int argc, _TCHAR* argv[]) vector> dv; list> fl; list> dl; - /* TestFuncs(); - string line = "title=\"cj_aerie\" smooth=no", delim = " =\""; + TestFuncs(); + /* string line = "title=\"cj_aerie\" smooth=no", delim = " =\""; auto vec = Split(line, delim, true); for (auto& s : vec) cout << s << endl; @@ -1990,25 +1992,25 @@ int _tmain(int argc, _TCHAR* argv[]) return 1; */ //MakeTestAllVarsRegPrePostComboFile("testallvarsout.flame"); - /* return 0; + return 0; + /* + TestThreadedKernel(); - TestThreadedKernel(); + auto palf = PaletteList::Instance(); + Palette* pal = palf->GetRandomPalette(); - auto palf = PaletteList::Instance(); - Palette* pal = palf->GetRandomPalette(); + cout << pal->Size() << endl; - cout << pal->Size() << endl; + double d = 1; - double d = 1; + for (int i = 0; i < 10; i++) + { + cout << "log10(" << d << ") = " << std::max(1u, uint(std::log10(d)) + 1u) << endl; + d *= 10; + } - for (int i = 0; i < 10; i++) - { - cout << "log10(" << d << ") = " << std::max(1u, uint(std::log10(d)) + 1u) << endl; - d *= 10; - } - - return 0;*/ + return 0;*/ /* uint i, iters = (uint)10e7; size_t total = 0; diff --git a/debian/changelog b/debian/changelog index aa8e8f7..9a61d42 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +fractorium (1.0.0.4-0ubuntu1) xenial; urgency=low + + * release 1.0.0.4 + + -- Matt Feemster Sat, 01 Jul 2017 08:54:30 -0700 + fractorium (1.0.0.3-0ubuntu1) xenial; urgency=low * release 1.0.0.3 diff --git a/package-linux.sh b/package-linux.sh index c91c8fb..5494a91 100755 --- a/package-linux.sh +++ b/package-linux.sh @@ -115,7 +115,7 @@ tar --exclude='package-linux.sh' \ ./Data/tatasz_pack_02_dark.gradient \ ./Data/tatasz_pack_02_warmer.gradient \ ./Data/tatasz_pack_03.gradient \ - ./Data/dark.qss \ + ./Data/dark_linux.qss \ . [ $? -ne 0 ] && echo "Tar command failed." && exit 2