mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-06-30 21:36:33 -04:00
export raw histogram data
This commit is contained in:
@ -1137,6 +1137,25 @@ eRenderStatus Renderer<T, bucketT>::AccumulatorToFinalImage(vector<v4F>& pixels,
|
||||
return eRenderStatus::RENDER_ERROR;
|
||||
}
|
||||
|
||||
if (RawHistogram())
|
||||
{
|
||||
auto p = pixels.data() + finalOffset;
|
||||
auto q = m_AccumulatorBuckets.data();
|
||||
auto bytes = sizeof(*p) * FinalRasW();
|
||||
parallel_for(size_t(0), FinalRasH(), size_t(1), [&](size_t j)
|
||||
{
|
||||
auto pixelsRowStart = (m_YAxisUp ? ((FinalRasH() - j) - 1) : j) * FinalRasW();//Pull out of inner loop for optimization.
|
||||
auto rowStart = j * m_SuperRasW;
|
||||
memcpy(p + pixelsRowStart, q + rowStart, bytes);
|
||||
}
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
, tbb::static_partitioner()
|
||||
#endif
|
||||
);
|
||||
LeaveFinalAccum();
|
||||
return m_Abort ? eRenderStatus::RENDER_ABORT : eRenderStatus::RENDER_OK;
|
||||
}
|
||||
|
||||
//Timing t(4);
|
||||
const size_t filterWidth = m_SpatialFilter->FinalFilterWidth();
|
||||
bucketT g, linRange, vibrancy;
|
||||
|
@ -374,6 +374,40 @@ void RendererBase::ReclaimOnResize(bool reclaimOnResize)
|
||||
ChangeVal([&] { m_ReclaimOnResize = reclaimOnResize; }, eProcessAction::FULL_RENDER);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get whether to output raw histogram values instead of gamma corrected
|
||||
/// colours.
|
||||
/// Default: false.
|
||||
/// </summary>
|
||||
/// <returns>True if raw, else false.</returns>
|
||||
bool RendererBase::RawHistogram() const { return m_RawHistogram; }
|
||||
|
||||
/// <summary>
|
||||
/// Set whether to output raw histogram values instead of gamma corrected
|
||||
/// colours.
|
||||
/// </summary>
|
||||
/// <param name="rawHistogram">True if raw, else false.</param>
|
||||
void RendererBase::RawHistogram(bool rawHistogram)
|
||||
{
|
||||
ChangeVal([&] { m_RawHistogram = rawHistogram; }, eProcessAction::ACCUM_ONLY);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get whether to output raw histogram values before density filtering.
|
||||
/// Default: false.
|
||||
/// </summary>
|
||||
/// <returns>True if raw, else false.</returns>
|
||||
bool RendererBase::RawHistogramPreDensity() const { return m_RawHistogramPreDensity; }
|
||||
|
||||
/// <summary>
|
||||
/// Set whether to output raw histogram values before density filtering.
|
||||
/// </summary>
|
||||
/// <param name="rawHistogram">True if pre density, else false.</param>
|
||||
void RendererBase::RawHistogramPreDensity(bool rawHistogramPreDensity)
|
||||
{
|
||||
ChangeVal([&] { m_RawHistogramPreDensity = rawHistogramPreDensity; }, eProcessAction::ACCUM_ONLY);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the callback object.
|
||||
/// </summary>
|
||||
|
@ -156,6 +156,10 @@ public:
|
||||
void InsertPalette(bool insertPalette);
|
||||
bool ReclaimOnResize() const;
|
||||
void ReclaimOnResize(bool reclaimOnResize);
|
||||
bool RawHistogram() const;
|
||||
void RawHistogram(bool rawHistogram);
|
||||
bool RawHistogramPreDensity() const;
|
||||
void RawHistogramPreDensity(bool rawHistogramPreDensity);
|
||||
void Callback(RenderCallback* callback);
|
||||
void ThreadCount(size_t threads, const char* seedString = nullptr);
|
||||
size_t BytesPerChannel() const;
|
||||
@ -207,6 +211,8 @@ protected:
|
||||
bool m_InFinalAccum = false;
|
||||
bool m_InsertPalette = false;
|
||||
bool m_ReclaimOnResize = false;
|
||||
bool m_RawHistogram = false;
|
||||
bool m_RawHistogramPreDensity = false;
|
||||
bool m_CurvesSet = false;
|
||||
volatile bool m_Abort = false;
|
||||
volatile bool m_Pause = false;
|
||||
|
Reference in New Issue
Block a user