--Bug fixes

-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.
This commit is contained in:
Person 2021-08-08 15:20:09 -06:00
parent 2219ea755f
commit f476afa545
6 changed files with 19 additions and 18 deletions

View File

@ -168,19 +168,19 @@
<File Id="tbb.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\tbb.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/> <File Id="tbb.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\tbb.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component> </Component>
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd"> <Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30036\x64\Microsoft.VC142.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component> </Component>
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8"> <Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30036\x64\Microsoft.VC142.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component> </Component>
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f"> <Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30036\x64\Microsoft.VC142.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component> </Component>
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4"> <Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30036\x64\Microsoft.VC142.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component> </Component>
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e"> <Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.26.28720\x64\Microsoft.VC142.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30036\x64\Microsoft.VC142.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component> </Component>
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e"> <Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes"/> <File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>

View File

@ -86,7 +86,7 @@ public:
string holesweight = "parVars[" + ToUpper(m_Params[i++].Name()) + index; string holesweight = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
ss << "\t{\n" ss << "\t{\n"
<< "\t\treal_t theta = precalcAtanyx;\n" << "\t\treal_t theta = precalcAtanyx;\n"
<< "\t\treal_t t = (!" << thicknessweight << " ? " << weight << " : MwcNext01(mwc) * " << thicknessweight << ") / cos(" << n << " * theta) - " << holesweight << ";\n" << "\t\treal_t t = (" << thicknessweight << " == (real_t)(0.0) ? " << weight << " : MwcNext01(mwc) * " << thicknessweight << ") / cos(" << n << " * theta) - " << holesweight << ";\n"
<< "\n" << "\n"
<< "\t\tif (fabs(t) != 0)\n" << "\t\tif (fabs(t) != 0)\n"
<< "\t\t{\n" << "\t\t{\n"

View File

@ -1597,8 +1597,8 @@ public:
<< "\n" << "\n"
<< "\t\t//exponential to make a tiled circle\n" << "\t\t//exponential to make a tiled circle\n"
<< "\t\treal_t rangle = floor(MwcNext01(mwc) * " << p3nprecalc << ") * M_2PI * " << p13nprecalc << ";\n" << "\t\treal_t rangle = floor(MwcNext01(mwc) * " << p3nprecalc << ") * M_2PI * " << p13nprecalc << ";\n"
<< "\t\treal_t y_aux = " << flipy << " ? (add ? vIn.y : -vIn.y) : vIn.y;\n" << "\t\treal_t y_aux = " << flipy << " != (real_t)(0.0) ? (add ? vIn.y : -vIn.y) : vIn.y;\n"
<< "\t\treal_t x_aux = " << flipx << " ? (add ? vIn.x : -vIn.x) : vIn.x;\n" << "\t\treal_t x_aux = " << flipx << " != (real_t)(0.0) ? (add ? vIn.x : -vIn.x) : vIn.x;\n"
<< "\t\treal_t FY = y_aux * " << p13nprecalc << ";\n" << "\t\treal_t FY = y_aux * " << p13nprecalc << ";\n"
<< "\t\treal_t FX = x_aux * " << p13nprecalc << ";\n" << "\t\treal_t FX = x_aux * " << p13nprecalc << ";\n"
<< "\t\treal_t ang = fma(FY, MPI, rangle);\n" << "\t\treal_t ang = fma(FY, MPI, rangle);\n"
@ -7303,7 +7303,7 @@ public:
sinx = T(0.5) * (T(1.0) + std::sin(helper.In.y * m_Freqx)); sinx = T(0.5) * (T(1.0) + std::sin(helper.In.y * m_Freqx));
} }
T offsetx = std::pow(sinx, px) * m_Scalex; T offsetx = T(std::pow(sinx, px) * m_Scalex);
if (m_Modey < T(0.5)) if (m_Modey < T(0.5))
{ {
@ -7314,7 +7314,7 @@ public:
siny = T(0.5) * (T(1.0) + std::sin(helper.In.x * m_Freqy)); siny = T(0.5) * (T(1.0) + std::sin(helper.In.x * m_Freqy));
} }
T offsety = std::pow(siny, py) * m_Scaley; T offsety = T(std::pow(siny, py) * m_Scaley);
helper.Out.x = m_Weight * (helper.In.x + offsetx); helper.Out.x = m_Weight * (helper.In.x + offsetx);
helper.Out.y = m_Weight * (helper.In.y + offsety); helper.Out.y = m_Weight * (helper.In.y + offsety);
helper.Out.z = DefaultZ(helper); helper.Out.z = DefaultZ(helper);

View File

@ -208,13 +208,13 @@ public:
QString base = original.completeBaseName(); QString base = original.completeBaseName();
const QString path = original.absolutePath() + '/'; const QString path = original.absolutePath() + '/';
const QString extension = original.suffix(); const QString extension = original.suffix();
newPath = path + base + "." + extension;
do while (QFile::exists(newPath))
{ {
base = IncrementTrailingUnderscoreInt(base); base = IncrementTrailingUnderscoreInt(base);
newPath = path + base + "." + extension; newPath = path + base + "." + extension;
} }
while (QFile::exists(newPath));
return newPath; return newPath;
} }

View File

@ -733,11 +733,11 @@ tuple<size_t, size_t, size_t> FinalRenderEmberController<T>::SyncAndComputeMemor
/// <param name="name">The base filename to compose a full path for</param> /// <param name="name">The base filename to compose a full path for</param>
/// <returns>The fully composed path</returns> /// <returns>The fully composed path</returns>
template <typename T> template <typename T>
QString FinalRenderEmberController<T>::ComposePath(const QString& name) QString FinalRenderEmberController<T>::ComposePath(const QString& name, bool unique)
{ {
const auto path = MakeEnd(m_Settings->SaveFolder(), '/');//Base path. const auto path = MakeEnd(m_Settings->SaveFolder(), '/');//Base path.
const auto full = path + m_FinalRenderDialog->Prefix() + name + m_FinalRenderDialog->Suffix() + "." + m_FinalRenderDialog->Ext(); const auto full = path + m_FinalRenderDialog->Prefix() + name + m_FinalRenderDialog->Suffix() + "." + m_FinalRenderDialog->Ext();
return EmberFile<T>::UniqueFilename(full); return unique ? EmberFile<T>::UniqueFilename(full) : full;
} }
/// <summary> /// <summary>
@ -939,14 +939,15 @@ void FinalRenderEmberController<T>::RenderComplete(Ember<T>& ember, const EmberS
rlg l(m_ProgressCs); rlg l(m_ProgressCs);
const auto renderTimeString = renderTimer.Format(renderTimer.Toc()); const auto renderTimeString = renderTimer.Format(renderTimer.Toc());
QString status; QString status;
const auto filename = ComposePath(QString::fromStdString(ember.m_Name)); const auto filename = ComposePath(QString::fromStdString(ember.m_Name), false);
const auto itersString = ToString<qulonglong>(stats.m_Iters); const auto itersString = ToString<qulonglong>(stats.m_Iters);
const auto itersPerSecString = ToString<qulonglong>(static_cast<size_t>(stats.m_Iters / (stats.m_IterMs / 1000.0))); const auto itersPerSecString = ToString<qulonglong>(static_cast<size_t>(stats.m_Iters / (stats.m_IterMs / 1000.0)));
if (m_GuiState.m_SaveXml) if (m_GuiState.m_SaveXml)
{ {
const QFileInfo xmlFileInfo(filename);//Create another one in case it was modified for batch rendering. const QFileInfo xmlFileInfo(filename);//Create another one in case it was modified for batch rendering.
const QString newPath = xmlFileInfo.absolutePath() + '/' + xmlFileInfo.completeBaseName() + ".flame"; QString newPath = xmlFileInfo.absolutePath() + '/' + xmlFileInfo.completeBaseName() + ".flame";
newPath = EmberFile<T>::UniqueFilename(newPath);
const xmlDocPtr tempEdit = ember.m_Edits; const xmlDocPtr tempEdit = ember.m_Edits;
ember.m_Edits = m_XmlWriter.CreateNewEditdoc(&ember, nullptr, "edit", m_Settings->Nick().toStdString(), m_Settings->Url().toStdString(), m_Settings->Id().toStdString(), "", 0, 0); ember.m_Edits = m_XmlWriter.CreateNewEditdoc(&ember, nullptr, "edit", m_Settings->Nick().toStdString(), m_Settings->Url().toStdString(), m_Settings->Id().toStdString(), "", 0, 0);
m_XmlWriter.Save(newPath.toStdString().c_str(), ember, 0, true, false, true);//Note that the ember passed is used, rather than m_Ember because it's what was actually rendered. m_XmlWriter.Save(newPath.toStdString().c_str(), ember, 0, true, false, true);//Note that the ember passed is used, rather than m_Ember because it's what was actually rendered.

View File

@ -68,7 +68,7 @@ public:
virtual void ResetProgress(bool total = true) { } virtual void ResetProgress(bool total = true) { }
virtual tuple<size_t, size_t, size_t> SyncAndComputeMemory() { return tuple<size_t, size_t, size_t>(0, 0, 0); } virtual tuple<size_t, size_t, size_t> SyncAndComputeMemory() { return tuple<size_t, size_t, size_t>(0, 0, 0); }
virtual double OriginalAspect() { return 1; } virtual double OriginalAspect() { return 1; }
virtual QString ComposePath(const QString& name) { return ""; } virtual QString ComposePath(const QString& name, bool unique = true) { return ""; }
virtual bool BumpQualityRender(double d) { return false; } virtual bool BumpQualityRender(double d) { return false; }
virtual QString SaveCurrentAgain() { return ""; } virtual QString SaveCurrentAgain() { return ""; }
virtual void CancelRender() { } virtual void CancelRender() { }
@ -132,7 +132,7 @@ public:
tuple<size_t, size_t, size_t> SyncAndComputeMemory() override; tuple<size_t, size_t, size_t> SyncAndComputeMemory() override;
double OriginalAspect() override { return double(m_Ember->m_OrigFinalRasW) / m_Ember->m_OrigFinalRasH; } double OriginalAspect() override { return double(m_Ember->m_OrigFinalRasW) / m_Ember->m_OrigFinalRasH; }
QString Name() const override { return QString::fromStdString(m_Ember->m_Name); } QString Name() const override { return QString::fromStdString(m_Ember->m_Name); }
QString ComposePath(const QString& name) override; QString ComposePath(const QString& name, bool unique = true) override;
QString SaveCurrentAgain() override; QString SaveCurrentAgain() override;
void CancelRender() override; void CancelRender() override;
QString CheckMemory(const tuple<size_t, size_t, size_t>& p) override; QString CheckMemory(const tuple<size_t, size_t, size_t>& p) override;