Skip to content

Simple implementations of sampling patterns, with objective tests to compare them

License

Notifications You must be signed in to change notification settings

Atrix256/SampleZoo

Repository files navigation

SampleZoo

Table of Contents

Blue Noise Algorithms

_1d Samples

  • Blue Noise - Randomized sequences that have only high frequency content

  • Irrational Numbers - Multiply an irrational number by the squence index and take that mod 1 to make it be in [0,1)

  • LDS - Low discrepancy sequences

  • Regular - Uniformly spaced samples

  • Uniform Random - Randomized sample positions using a uniform random number distribution.

_1d Tests

  • DFT - Transforms sampling patterns into frequency space

  • Discrepancy - Calculate metrics about actual point density compared to expected point density if the points were uniformly spaced.

  • Integration - Use sample points to integrate 1d functions

  • Numberline - Makes numberlines

_2d Samples

  • Blue Noise - Randomized sequences that have only high frequency content

  • Irrational Numbers - Using irrational numbers to make 2d low discrepancy sequences

  • LDS - Low discrepancy sequences

  • Hammersley (LDS) - Low discrepancy sequences

  • Regular - Uniformly spaced samples

  • Uniform Random - Randomized sample positions using a uniform random number distribution.

_2d Tests

  • DFT - Transforms sampling patterns into frequency space

  • Discrepancy - Calculate metrics about actual point density compared to expected point density if the points were uniformly spaced.

  • Integration - Use sample points to integrate 2d functions

  • Plot - Plots sequences

SampleZoo

Simple copy/paste-able implementations of sampling patterns, with objective and subjective tests to compare them, along with understandable explanations.

Created by Alan Wolfe

email: alan.wolfe@gmail.com

twitter: https://twitter.com/Atrix256

Building and running this code: building

Everything in this repository is under the MIT License unless otherwise stated in the source file.

Full list of contributors here: credits

Information on how to contribute to this project: contributing

Why Does This Exist??

My interest in sampling patterns is mainly for use in numerical integration techniques in real time graphics. In that situation, you usually want a sequence that will converge with as few samples as possible, and give a pleasing error pattern when it hasn't fully converged.

This stuff is surprisingly nuanced, and new sampling techniques come out every year as researchers continue to push the envelope.

It can be hard to find implementations for some sampling patterns, especially if they are newly published. Furthermore, each sampling paper seems to use different testing methods to show properties of their sequences, which can make it hard to compare against other sample sequences.

My goal is to get as many implemented and tested as possible, including new ones as they come out, so this stuff is more accessible and usable by the folks who could benefit from it.

It's a lot of work for one person though, so Sample Zoo need your help!

Other Software Used

About

Simple implementations of sampling patterns, with objective tests to compare them

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published