Remix.run Logo
Poisson Disk Sampling(stripeacross.com)
111 points by vismit2000 8 hours ago | 17 comments
akkartik 5 hours ago | parent | next [-]

Still one of the most satisfying debug UIs I ever came up with.

https://akkartik.name/post/2023-11-04-devlog

saidnooneever 3 hours ago | parent | next [-]

seing this kind of visualisations helped me a lot in gfx. always much respect for ppl who understand it well enough to make these things. after a long time tinkering i am still not there for sure :D.

thanks, these are great!

cowthulhu 4 hours ago | parent | prev [-]

The third one especially is both (really) cool looking and legible!

jacobolus 8 hours ago | parent | prev | next [-]

Folks may find https://observablehq.com/@fil/poisson-distribution-generator... useful

jacobolus 7 hours ago | parent [-]

Also fun: https://observablehq.com/@jrus/spheredisksample

PiXeL161616 2 hours ago | parent | prev | next [-]

Never found a way to do this per-pixel in a shader, Bridson's needs the active list. Ended up hashing cells and jittering inside them instead.

setr 2 hours ago | parent [-]

TFA links to PixelPie as a GPU implementation https://www.cs.umd.edu/gvil/projects/pixelpie.shtml

Terr_ 4 hours ago | parent | prev | next [-]

> Consider when the algorithm places a point p and then samples its annulus to get a new point q.

I was confused for a while thinking p and q were swapped here, relative to the visualization below. [0] However I now think what I missed is that that the visualization is showing two points that are already firmly-established, and the question is where a potential third (unseen, unnamed) point could be placed.

So metaphorically speaking, it's about picking a new direction of travel that isn't guaranteed to be into your own recent footsteps.

[0] You might say I have problems minding my p's and q's.

kleiba2 7 hours ago | parent | prev | next [-]

Possibly interesting post from Casey Muratori, regarding random placement of grass in games: https://caseymuratori.com/blog_0013, using blue noise.

setr 5 hours ago | parent [-]

Also Casey, but his much cooler/deterministic solution to grass placement, to avoid lines

https://caseymuratori.com/blog_0011

hingler36 7 hours ago | parent | prev | next [-]

I love these kinds of problems, because they try to produce what humans perceive as random instead of something truly random. Another great example of this is blue noise

saidnooneever 3 hours ago | parent [-]

funny you mention. blue noise was also the first one that popped in my mind. spent a lot of time looking for blue noise without knowing it at some point ::) while working on a system that was also using poisson disk sampling.

addag 7 hours ago | parent | prev | next [-]

I'm wondering if it can be used as a low-discrepancy sequence

jacobolus 5 hours ago | parent [-]

For a low-discrepancy sequence you are usually trying to generate one point at a time, up to some arbitrary number. Here the goal is to generate (roughly) a specific number of points that fill a whole region.

So you probably could figure out a way to use this method to make a low-discrepancy sequence but it's probably not going to be particularly suitable compared to alternatives.

a_e_k 2 minutes ago | parent [-]

That's the the difference between a low-discrepancy sequence and low-discrepancy set. The first can generate an infinite number of points, the later targets exactly a specific number. You can often get lower discrepancy if you know up front exactly how many points you'll want.

All that said, there's definitely been research into samplers that combine low-discrepancy with blue noise properties (often including retaining those properties even in lower-dimensional projections produced by dropping axis).

WithinReason 6 hours ago | parent | prev | next [-]

I see the generated points often form lines which would cause aliasing in computer graphics, why not use low discrepancy sequences instead?

jonstewart 5 hours ago | parent | prev [-]

Oh, that’s rather a different sort of disk sampling than I imagined.