1- const float DISK_RADIUS = 2500 ;
2- const int NUM_ELEMENTS_DISK = 16 ;
1+ const int NUM_ELEMENTS_DISK = 64 ;
32
43const vec2 poissonDisk[NUM_ELEMENTS_DISK] = vec2 [](
5- vec2 (- 0.94201624 , - 0.39906216 ),
6- vec2 (0.94558609 , - 0.76890725 ),
7- vec2 (- 0.094184101 , - 0.92938870 ),
8- vec2 (0.34495938 , 0.29387760 ),
9- vec2 (- 0.91588581 , 0.45771432 ),
10- vec2 (- 0.81544232 , - 0.87912464 ),
11- vec2 (- 0.38277543 , 0.27676845 ),
12- vec2 (0.97484398 , 0.75648379 ),
13- vec2 (0.44323325 , - 0.97511554 ),
14- vec2 (0.53742981 , - 0.47373420 ),
15- vec2 (- 0.26496911 , - 0.41893023 ),
16- vec2 (0.79197514 , 0.19090188 ),
17- vec2 (- 0.24188840 , 0.99706507 ),
18- vec2 (- 0.81409955 , 0.91437590 ),
19- vec2 (0.19984126 , 0.78641367 ),
20- vec2 (0.14383161 , - 0.14100790 )
4+ vec2 (- 0 .5119625f, - 0 .4827938f),
5+ vec2 (- 0 .2171264f, - 0 .4768726f),
6+ vec2 (- 0 .7552931f, - 0 .2426507f),
7+ vec2 (- 0 .7136765f, - 0 .4496614f),
8+ vec2 (- 0 .5938849f, - 0 .6895654f),
9+ vec2 (- 0 .3148003f, - 0 .7047654f),
10+ vec2 (- 0 .42215f, - 0 .2024607f),
11+ vec2 (- 0 .9466816f, - 0 .2014508f),
12+ vec2 (- 0 .8409063f, - 0 .03465778f),
13+ vec2 (- 0 .6517572f, - 0 .07476326f),
14+ vec2 (- 0 .1041822f, - 0 .02521214f),
15+ vec2 (- 0 .3042712f, - 0 .02195431f),
16+ vec2 (- 0 .5082307f, 0 .1079806f),
17+ vec2 (- 0 .08429877f, - 0 .2316298f),
18+ vec2 (- 0 .9879128f, 0 .1113683f),
19+ vec2 (- 0 .3859636f, 0 .3363545f),
20+ vec2 (- 0 .1925334f, 0 .1787288f),
21+ vec2 (0 .003256182f, 0 .138135f),
22+ vec2 (- 0 .8706837f, 0 .3010679f),
23+ vec2 (- 0 .6982038f, 0 .1904326f),
24+ vec2 (0 .1975043f, 0 .2221317f),
25+ vec2 (0 .1507788f, 0 .4204168f),
26+ vec2 (0 .3514056f, 0 .09865579f),
27+ vec2 (0 .1558783f, - 0 .08460935f),
28+ vec2 (- 0 .0684978f, 0 .4461993f),
29+ vec2 (0 .3780522f, 0 .3478679f),
30+ vec2 (0 .3956799f, - 0 .1469177f),
31+ vec2 (0 .5838975f, 0 .1054943f),
32+ vec2 (0 .6155105f, 0 .3245716f),
33+ vec2 (0 .3928624f, - 0 .4417621f),
34+ vec2 (0 .1749884f, - 0 .4202175f),
35+ vec2 (0 .6813727f, - 0 .2424808f),
36+ vec2 (- 0 .6707711f, 0 .4912741f),
37+ vec2 (0 .0005130528f, - 0 .8058334f),
38+ vec2 (0 .02703013f, - 0 .6010728f),
39+ vec2 (- 0 .1658188f, - 0 .9695674f),
40+ vec2 (0 .4060591f, - 0 .7100726f),
41+ vec2 (0 .7713396f, - 0 .4713659f),
42+ vec2 (0 .573212f, - 0 .51544f),
43+ vec2 (- 0 .3448896f, - 0 .9046497f),
44+ vec2 (0 .1268544f, - 0 .9874692f),
45+ vec2 (0 .7418533f, - 0 .6667366f),
46+ vec2 (0 .3492522f, 0 .5924662f),
47+ vec2 (0 .5679897f, 0 .5343465f),
48+ vec2 (0 .5663417f, 0 .7708698f),
49+ vec2 (0 .7375497f, 0 .6691415f),
50+ vec2 (0 .2271994f, - 0 .6163502f),
51+ vec2 (0 .2312844f, 0 .8725659f),
52+ vec2 (0 .4216993f, 0 .9002838f),
53+ vec2 (0 .4262091f, - 0 .9013284f),
54+ vec2 (0 .2001408f, - 0 .808381f),
55+ vec2 (0 .149394f, 0 .6650763f),
56+ vec2 (- 0 .09640376f, 0 .9843736f),
57+ vec2 (0 .7682328f, - 0 .07273844f),
58+ vec2 (0 .04146584f, 0 .8313184f),
59+ vec2 (0 .9705266f, - 0 .1143304f),
60+ vec2 (0 .9670017f, 0 .1293385f),
61+ vec2 (0 .9015037f, - 0 .3306949f),
62+ vec2 (- 0 .5085648f, 0 .7534177f),
63+ vec2 (0 .9055501f, 0 .3758393f),
64+ vec2 (0 .7599946f, 0 .1809109f),
65+ vec2 (- 0 .2483695f, 0 .7942952f),
66+ vec2 (- 0 .4241052f, 0 .5581087f),
67+ vec2 (- 0 .1020106f, 0 .6724468f)
2168 );
2269
2370// Returns a pseudo random number based on a vec3 and an int.
@@ -28,8 +75,8 @@ float PseudoRandom(vec3 seed, int i)
2875 return fract (sin (dotValue) * 43758.5453 );
2976}
3077
31- vec2 GetPoissonDiskCoord(vec2 projCoords, int i)
78+ vec2 GetPoissonDiskCoord(vec2 projCoords, int i, float radius )
3279{
3380 int index = int (float (NUM_ELEMENTS_DISK) * PseudoRandom(projCoords.xyy, i)) % NUM_ELEMENTS_DISK;
34- return projCoords.xy + poissonDisk[index] / DISK_RADIUS ;
81+ return projCoords.xy + poissonDisk[index] / radius ;
3582}
0 commit comments