export raw histogram data

This commit is contained in:
Claude Heiland-Allen
2023-12-05 11:18:40 +00:00
parent 6ef145e76e
commit a7b4cc70d6
10 changed files with 122 additions and 6 deletions

View File

@ -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;

View File

@ -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>

View File

@ -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;