diff --git a/libs/pcg/include/psemek/pcg/sample.hpp b/libs/pcg/include/psemek/pcg/sample.hpp new file mode 100644 index 00000000..9443c155 --- /dev/null +++ b/libs/pcg/include/psemek/pcg/sample.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +namespace psemek::pcg +{ + + template + auto sample(Gen && gen, std::size_t width, std::size_t height) + { + using R = decltype(gen(0.f, 0.f)); + + gfx::basic_pixmap result({width, height}); + + for (std::size_t j = 0; j < height; ++j) + { + for (std::size_t i = 0; i < width; ++i) + { + float ti = (i + 0.5f) / width; + float tj = (j + 0.5f) / height; + + result(i, j) = gen(ti, tj); + } + } + + return result; + } + +}