mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 15:36:14 +03:00
235 lines
6.5 KiB
GLSL
235 lines
6.5 KiB
GLSL
#ifndef VOGEL_DISK_GLSL
|
|
#define VOGEL_DISK_GLSL
|
|
|
|
vec2 vogelDiskSample(uint sampleIndex, uint sampleCount, float angle)
|
|
{
|
|
const float goldenAngle = 2.399963f;
|
|
|
|
float r = sqrt(sampleIndex + 0.5f) / sqrt(sampleCount);
|
|
float theta = sampleIndex * goldenAngle + angle;
|
|
|
|
float sine = sin(theta);
|
|
float cosine = cos(theta);
|
|
|
|
return vec2(cosine, sine) * r;
|
|
}
|
|
|
|
// Some precompute vogel disk array.
|
|
|
|
// 80 tap disk sample array split to 64 and 16.
|
|
|
|
// 64 tap.
|
|
const vec2 kVeogelDisk_80_64[64] = vec2[]
|
|
(
|
|
vec2(-0.100968,0.0924954),
|
|
vec2(0.0154547,-0.1761),
|
|
vec2(0.127264,0.165993),
|
|
vec2(-0.233545,-0.0413106),
|
|
vec2(-0.0739981,0.275271),
|
|
vec2(-0.141124,-0.271724),
|
|
vec2(0.306182,0.111816),
|
|
vec2(-0.31853,0.131486),
|
|
vec2(0.113473,0.361765),
|
|
vec2(-0.342006,-0.198197),
|
|
vec2(0.40121,-0.0882065),
|
|
vec2(-0.244851,0.348279),
|
|
vec2(0.347265,0.292672),
|
|
vec2(-0.467308,0.019327),
|
|
vec2(0.340863,-0.339208),
|
|
vec2(-0.0228028,0.493184),
|
|
vec2(0.513782,0.0691243),
|
|
vec2(-0.435323,0.302892),
|
|
vec2(0.118952,-0.528773),
|
|
vec2(0.275143,0.480152),
|
|
vec2(0.522471,-0.2414),
|
|
vec2(-0.226342,0.54085),
|
|
vec2(-0.202017,-0.56164),
|
|
vec2(0.537533,0.282505),
|
|
vec2(0.339367,-0.527807),
|
|
vec2(0.107963,0.628167),
|
|
vec2(-0.511623,-0.396221),
|
|
vec2(0.654454,-0.0542268),
|
|
vec2(0.00328842,-0.675455),
|
|
vec2(0.460013,0.507088),
|
|
vec2(-0.690762,-0.064013),
|
|
vec2(0.559717,-0.424814),
|
|
vec2(-0.383616,-0.609581),
|
|
vec2(0.702951,0.192637),
|
|
vec2(-0.656044,0.336685),
|
|
vec2(0.259249,-0.699314),
|
|
vec2(-0.68895,-0.326493),
|
|
vec2(0.736345,-0.227036),
|
|
vec2(-0.393677,0.671765),
|
|
vec2(-0.165162,-0.769072),
|
|
vec2(-0.796179,0.0992387),
|
|
vec2(0.525068,-0.61689),
|
|
vec2(0.0298145,0.817228),
|
|
vec2(-0.579358,-0.587873),
|
|
vec2(-0.647842,0.535304),
|
|
vec2(0.117129,-0.839661),
|
|
vec2(0.484978,0.704305),
|
|
vec2(-0.840452,-0.193367),
|
|
vec2(-0.270539,0.834002),
|
|
vec2(-0.366819,-0.804173),
|
|
vec2(0.820175,0.34794),
|
|
vec2(-0.846389,0.299793),
|
|
vec2(0.228106,0.882733),
|
|
vec2(-0.770202,-0.500539),
|
|
vec2(0.912719,-0.152298),
|
|
vec2(-0.574281,0.734133),
|
|
vec2(0.690846,0.645354),
|
|
vec2(-0.951927,-0.00926903),
|
|
vec2(0.71305,-0.640555),
|
|
vec2(-0.0937233,0.960451),
|
|
vec2(0.961228,0.179697),
|
|
vec2(-0.835572,0.520163),
|
|
vec2(0.266462,-0.954069),
|
|
vec2(0.450828,0.889103)
|
|
);
|
|
|
|
// 16 tap.
|
|
const vec2 kVeogelDisk_80_16[16] = vec2[]
|
|
(
|
|
vec2(0.0790569,0),
|
|
vec2(0.221234,-0.140732),
|
|
vec2(0.153552,-0.328134),
|
|
vec2(-0.056569,-0.43652),
|
|
vec2(-0.324336,-0.388659),
|
|
vec2(-0.537872,-0.171591),
|
|
vec2(-0.597058,0.15739),
|
|
vec2(-0.452361,0.488999),
|
|
vec2(-0.127343,0.700024),
|
|
vec2(0.28436,0.698491),
|
|
vec2(0.647731,0.460103),
|
|
vec2(0.831831,0.0425135),
|
|
vec2(0.75662,-0.428692),
|
|
vec2(0.424849,-0.798908),
|
|
vec2(-0.0729619,-0.93591),
|
|
vec2(-0.583544,-0.776677)
|
|
);
|
|
|
|
const vec2 kVeogelDisk_43[43] = vec2[]
|
|
(
|
|
vec2(0,0),
|
|
vec2(0.36363637,0),
|
|
vec2(0.22672357,0.28430238),
|
|
vec2(-0.08091671,0.35451925),
|
|
vec2(-0.32762504,0.15777594),
|
|
vec2(-0.32762504,-0.15777591),
|
|
vec2(-0.08091656,-0.35451928),
|
|
vec2(0.22672352,-0.2843024),
|
|
vec2(0.6818182,0),
|
|
vec2(0.614297,0.29582983),
|
|
vec2(0.42510667,0.5330669),
|
|
vec2(0.15171885,0.6647236),
|
|
vec2(-0.15171883,0.6647236),
|
|
vec2(-0.4251068,0.53306687),
|
|
vec2(-0.614297,0.29582986),
|
|
vec2(-0.6818182,0),
|
|
vec2(-0.614297,-0.29582983),
|
|
vec2(-0.42510656,-0.53306705),
|
|
vec2(-0.15171856,-0.66472363),
|
|
vec2(0.1517192,-0.6647235),
|
|
vec2(0.4251066,-0.53306705),
|
|
vec2(0.614297,-0.29582983),
|
|
vec2(1,0),
|
|
vec2(0.9555728,0.2947552),
|
|
vec2(0.82623875,0.5633201),
|
|
vec2(0.6234898,0.7818315),
|
|
vec2(0.36534098,0.93087375),
|
|
vec2(0.07473,0.9972038),
|
|
vec2(-0.22252095,0.9749279),
|
|
vec2(-0.50000006,0.8660254),
|
|
vec2(-0.73305196,0.6801727),
|
|
vec2(-0.90096885,0.43388382),
|
|
vec2(-0.98883086,0.14904208),
|
|
vec2(-0.9888308,-0.14904249),
|
|
vec2(-0.90096885,-0.43388376),
|
|
vec2(-0.73305184,-0.6801728),
|
|
vec2(-0.4999999,-0.86602545),
|
|
vec2(-0.222521,-0.9749279),
|
|
vec2(0.07473029,-0.99720377),
|
|
vec2(0.36534148,-0.9308736),
|
|
vec2(0.6234897,-0.7818316),
|
|
vec2(0.8262388,-0.56332),
|
|
vec2(0.9555729,-0.29475483)
|
|
);
|
|
|
|
const vec2 kVeogelDisk_71[71] = vec2[]
|
|
(
|
|
vec2(0,0),
|
|
vec2(0.2758621,0),
|
|
vec2(0.1719972,0.21567768),
|
|
vec2(-0.061385095,0.26894566),
|
|
vec2(-0.24854316,0.1196921),
|
|
vec2(-0.24854316,-0.11969208),
|
|
vec2(-0.061384983,-0.2689457),
|
|
vec2(0.17199717,-0.21567771),
|
|
vec2(0.51724136,0),
|
|
vec2(0.46601835,0.22442262),
|
|
vec2(0.32249472,0.40439558),
|
|
vec2(0.11509705,0.50427306),
|
|
vec2(-0.11509704,0.50427306),
|
|
vec2(-0.3224948,0.40439552),
|
|
vec2(-0.46601835,0.22442265),
|
|
vec2(-0.51724136,0),
|
|
vec2(-0.46601835,-0.22442262),
|
|
vec2(-0.32249463,-0.40439564),
|
|
vec2(-0.11509683,-0.5042731),
|
|
vec2(0.11509732,-0.504273),
|
|
vec2(0.32249466,-0.40439564),
|
|
vec2(0.46601835,-0.22442262),
|
|
vec2(0.7586207,0),
|
|
vec2(0.7249173,0.22360738),
|
|
vec2(0.6268018,0.4273463),
|
|
vec2(0.47299224,0.59311354),
|
|
vec2(0.27715522,0.7061801),
|
|
vec2(0.056691725,0.75649947),
|
|
vec2(-0.168809,0.7396005),
|
|
vec2(-0.3793104,0.65698475),
|
|
vec2(-0.55610836,0.51599306),
|
|
vec2(-0.6834936,0.32915324),
|
|
vec2(-0.7501475,0.113066405),
|
|
vec2(-0.7501475,-0.11306671),
|
|
vec2(-0.6834936,-0.32915318),
|
|
vec2(-0.5561083,-0.5159932),
|
|
vec2(-0.37931028,-0.6569848),
|
|
vec2(-0.16880904,-0.7396005),
|
|
vec2(0.056691945,-0.7564994),
|
|
vec2(0.2771556,-0.7061799),
|
|
vec2(0.47299215,-0.59311366),
|
|
vec2(0.62680185,-0.4273462),
|
|
vec2(0.72491735,-0.22360711),
|
|
vec2(1,0),
|
|
vec2(0.9749279,0.22252093),
|
|
vec2(0.90096885,0.43388376),
|
|
vec2(0.7818315,0.6234898),
|
|
vec2(0.6234898,0.7818315),
|
|
vec2(0.43388364,0.9009689),
|
|
vec2(0.22252098,0.9749279),
|
|
vec2(0,1),
|
|
vec2(-0.22252095,0.9749279),
|
|
vec2(-0.43388385,0.90096885),
|
|
vec2(-0.62349,0.7818314),
|
|
vec2(-0.7818317,0.62348956),
|
|
vec2(-0.90096885,0.43388382),
|
|
vec2(-0.9749279,0.22252093),
|
|
vec2(-1,0),
|
|
vec2(-0.9749279,-0.22252087),
|
|
vec2(-0.90096885,-0.43388376),
|
|
vec2(-0.7818314,-0.6234899),
|
|
vec2(-0.6234896,-0.7818316),
|
|
vec2(-0.43388346,-0.900969),
|
|
vec2(-0.22252055,-0.974928),
|
|
vec2(0,-1),
|
|
vec2(0.2225215,-0.9749278),
|
|
vec2(0.4338835,-0.90096897),
|
|
vec2(0.6234897,-0.7818316),
|
|
vec2(0.78183144,-0.62348986),
|
|
vec2(0.90096885,-0.43388376),
|
|
vec2(0.9749279,-0.22252086)
|
|
);
|
|
|
|
#endif
|
|
|