--User changes

-Disable Start button in final render dialog when Pause is clicked.

--Bug fixes
 -Rapidly changing spinner values was causing the OpenCL renderer to report a failure, when it was really just aborting.

--Code changes
 -Renderers never internally set abort to true due to a failure. Abort is only set to true by the calling code.
This commit is contained in:
Person
2018-10-05 19:50:38 -07:00
parent 784bd9cca2
commit a0b658481a
15 changed files with 36 additions and 36 deletions

View File

@ -37,7 +37,7 @@ static void sincos(float x, float* s, float* c)
namespace EmberNs
{
#define EMBER_VERSION "1.0.0.12"
#define EMBER_VERSION "1.0.0.13"
#define EPS6 T(1e-6)
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
#define ISAAC_SIZE 4

View File

@ -528,8 +528,15 @@ eRenderStatus Renderer<T, bucketT>::Run(vector<v4F>& finalImage, double time, si
sampleItersToDo = std::min<size_t>(sampleItersToDo, itersPerTemporalSample - m_LastIter);
EmberStats stats = Iterate(sampleItersToDo, temporalSample);//The heavy work is done here.
//Abort does not indicate an error, it just means the process was interrupted, most likely by the user on the GUI.
if (m_Abort)
{
success = eRenderStatus::RENDER_ABORT;
goto Finish;
}
//If no iters were executed, something went catastrophically wrong.
if (stats.m_Iters == 0)
if (!stats.m_Success && stats.m_Iters == 0)
{
AddToReport("Zero iterations ran, rendering failed, aborting.\n");
success = eRenderStatus::RENDER_ERROR;
@ -537,12 +544,6 @@ eRenderStatus Renderer<T, bucketT>::Run(vector<v4F>& finalImage, double time, si
goto Finish;
}
if (m_Abort)
{
success = eRenderStatus::RENDER_ABORT;
goto Finish;
}
//Accumulate stats whether this batch ran to completion or exited prematurely.
m_LastIter += stats.m_Iters;//Sum of iter count of all threads, reset each temporal sample.
m_Stats.m_Iters += stats.m_Iters;//Sum of iter count of all threads, cumulative from beginning to end.

View File

@ -61,6 +61,7 @@ public:
void Clear()
{
m_Success = true;
m_Iters = 0;
m_Badvals = 0;
m_IterMs = 0;
@ -69,6 +70,7 @@ public:
EmberStats& operator += (const EmberStats& stats)
{
m_Success &= stats.m_Success;
m_Iters += stats.m_Iters;
m_Badvals += stats.m_Badvals;
m_IterMs += stats.m_IterMs;
@ -76,6 +78,7 @@ public:
return *this;
}
bool m_Success = true;
size_t m_Iters, m_Badvals;
double m_IterMs, m_RenderMs;
};