1 #ifndef MOBILERT_SAMPLER_HPP 2 #define MOBILERT_SAMPLER_HPP 15 ::std::atomic<::std::uint32_t>
sample_ {};
16 const ::std::uint32_t
domainSize_ {::std::numeric_limits<::std::uint32_t>::max()};
17 ::std::uint32_t
samples_ {::std::numeric_limits<::std::uint32_t>::max()};
22 explicit Sampler(::std::uint32_t width, ::std::uint32_t height,
23 ::std::uint32_t samples);
45 virtual float getSample(::std::uint32_t sample) = 0;
58 template <const ::std::
size_t S>
60 const ::std::uint32_t selectedSample {this->
sample_.fetch_add(1, ::std::memory_order_relaxed)};
67 #endif //MOBILERT_SAMPLER_HPP
::std::uint32_t samples_
Definition: Sampler.hpp:17
::std::atomic<::std::uint32_t > sample_
Definition: Sampler.hpp:15
const ::std::uint32_t domainSize_
Definition: Sampler.hpp:16
Definition: Sampler.hpp:13
void stopSampling()
Definition: Sampler.cpp:35
float getSampleFromArray(const ::std::array< float, S > &values)
Definition: Sampler.hpp:59
Sampler & operator=(const Sampler &sampler)=delete
float getSample()
Definition: Sampler.cpp:44
const ::std::uint32_t ArrayMask
Definition: Constants.hpp:70
virtual ~Sampler()
Definition: Sampler.cpp:22
void resetSampling()
Definition: Sampler.cpp:28