Bliss-Shader/shaders/lib/bokeh.glsl

474 lines
21 KiB
GLSL

#if DOF_QUALITY == 0 // Original choc hex bokeh
#define BOKEH_SAMPLES 60
#define HEXAGONAL_BOKEH
const vec2 bokeh_offsets[60] = vec2[60] (
vec2( 0.2165, 0.1250 ),
vec2( 0.0000, 0.2500 ),
vec2( -0.2165, 0.1250 ),
vec2( -0.2165, -0.1250 ),
vec2( -0.0000, -0.2500 ),
vec2( 0.2165, -0.1250 ),
vec2( 0.4330, 0.2500 ),
vec2( 0.0000, 0.5000 ),
vec2( -0.4330, 0.2500 ),
vec2( -0.4330, -0.2500 ),
vec2( -0.0000, -0.5000 ),
vec2( 0.4330, -0.2500 ),
vec2( 0.6495, 0.3750 ),
vec2( 0.0000, 0.7500 ),
vec2( -0.6495, 0.3750 ),
vec2( -0.6495, -0.3750 ),
vec2( -0.0000, -0.7500 ),
vec2( 0.6495, -0.3750 ),
vec2( 0.8660, 0.5000 ),
vec2( 0.0000, 1.0000 ),
vec2( -0.8660, 0.5000 ),
vec2( -0.8660, -0.5000 ),
vec2( -0.0000, -1.0000 ),
vec2( 0.8660, -0.5000 ),
vec2( 0.2163, 0.3754 ),
vec2( -0.2170, 0.3750 ),
vec2( -0.4333, -0.0004 ),
vec2( -0.2163, -0.3754 ),
vec2( 0.2170, -0.3750 ),
vec2( 0.4333, 0.0004 ),
vec2( 0.4328, 0.5004 ),
vec2( -0.2170, 0.6250 ),
vec2( -0.6498, 0.1246 ),
vec2( -0.4328, -0.5004 ),
vec2( 0.2170, -0.6250 ),
vec2( 0.6498, -0.1246 ),
vec2( 0.6493, 0.6254 ),
vec2( -0.2170, 0.8750 ),
vec2( -0.8663, 0.2496 ),
vec2( -0.6493, -0.6254 ),
vec2( 0.2170, -0.8750 ),
vec2( 0.8663, -0.2496 ),
vec2( 0.2160, 0.6259 ),
vec2( -0.4340, 0.5000 ),
vec2( -0.6500, -0.1259 ),
vec2( -0.2160, -0.6259 ),
vec2( 0.4340, -0.5000 ),
vec2( 0.6500, 0.1259 ),
vec2( 0.4325, 0.7509 ),
vec2( -0.4340, 0.7500 ),
vec2( -0.8665, -0.0009 ),
vec2( -0.4325, -0.7509 ),
vec2( 0.4340, -0.7500 ),
vec2( 0.8665, 0.0009 ),
vec2( 0.2158, 0.8763 ),
vec2( -0.6510, 0.6250 ),
vec2( -0.8668, -0.2513 ),
vec2( -0.2158, -0.8763 ),
vec2( 0.6510, -0.6250 ),
vec2( 0.8668, 0.2513 ));
#elif DOF_QUALITY == 1 // Low quality bokeh
#define BOKEH_SAMPLES 32
const vec2 bokeh_offsets[32] = vec2[32](
vec2(0.12064426510477419, 0.015554431411765697),
vec2(-0.16400077998918963, 0.16180237012184204),
vec2(0.020080498035937415, -0.2628838391620438),
vec2(0.19686650437195816, 0.27801320993574674),
vec2(-0.37362329188851157, -0.049763799980476156),
vec2(0.34544673107582735, -0.20696126421568928),
vec2(-0.12135781397691386, 0.4507963336805642),
vec2(-0.22749138875333694, -0.41407969197383454),
vec2(0.4797593802468298, 0.19235249500691445),
vec2(-0.5079968434096749, 0.22345015963708734),
vec2(0.23843255951864029, -0.5032700515259672),
vec2(0.17505863904522073, 0.587555727235086),
vec2(-0.5451127409909945, -0.29782530685850084),
vec2(0.6300137885218894, -0.12390992876509886),
vec2(-0.391501580064061, 0.5662295575692019),
vec2(-0.09379538975841809, -0.6746452122696498),
vec2(0.5447160222309757, 0.47831268960533435),
vec2(-0.7432342062047558, 0.04610937594275518),
vec2(0.5345993903170301, -0.520777903066999),
vec2(-0.0404139208253129, 0.7953459466435174),
vec2(-0.517173266802963, -0.5989723613060595),
vec2(0.8080038585189984, 0.12485626574164435),
vec2(-0.6926663754026566, 0.494463047083117),
vec2(0.183730322451809, -0.8205069509230769),
vec2(0.43067753069940745, 0.7747454863024757),
vec2(-0.8548041452377114, -0.25576180722119723),
vec2(0.8217466662308877, -0.3661258311820314),
vec2(-0.36224393661662146, 0.87070999332353),
vec2(-0.32376306917956177, -0.8724793262829371),
vec2(0.8455529005007657, 0.46224259051084376),
vec2(-0.9483903811252437, 0.2643989345002705),
vec2(0.5322400733549763, -0.818975339518135)
);
#elif DOF_QUALITY == 2 // Medium quality bokeh
#define BOKEH_SAMPLES 64
const vec2 bokeh_offsets[64] = vec2[64](
vec2(0.07966914016126773, -0.0005732549414365655),
vec2(-0.12160530145582471, 0.10283965425501301),
vec2(0.008559818525228833, -0.197458844206032),
vec2(0.13356640242431705, 0.18501312713480866),
vec2(-0.269830801109193, -0.04676021929400281),
vec2(0.23862848827685754, -0.15791561224005177),
vec2(-0.09145217101863704, 0.3071892456093635),
vec2(-0.16649994145461533, -0.30437045701653237),
vec2(0.33360187330480306, 0.12444185472734362),
vec2(-0.3648472506019276, 0.14643122426640393),
vec2(0.16295804188571, -0.36743756507231173),
vec2(0.11814591296857804, 0.40389274018272564),
vec2(-0.39109215347150406, -0.22216619295880746),
vec2(0.43984778429926974, -0.0991894497563406),
vec2(-0.2824726599141313, 0.38881286099524415),
vec2(-0.07196259394779835, -0.48861810336110434),
vec2(0.3795331553348995, 0.3266462474773111),
vec2(-0.5311851850227693, 0.021032353535204915),
vec2(0.3723796163057802, -0.3798174856209827),
vec2(-0.03421619527550065, 0.5508226133906681),
vec2(-0.37133596181036055, -0.43510931729303065),
vec2(0.5657057697780938, 0.07671481330934922),
vec2(-0.49542832895271105, 0.33806627476843804),
vec2(0.12427771910967947, -0.5917579278786026),
vec2(0.2988957646566429, 0.536255888187953),
vec2(-0.6100770454895419, -0.19242280712483223),
vec2(0.5754234023037136, -0.27046195686657265),
vec2(-0.2617843818309086, 0.6041130418557645),
vec2(-0.2345742995202231, -0.6285079469299325),
vec2(0.59225695199046, 0.315282971433257),
vec2(-0.6762525075113398, 0.17538638065344198),
vec2(0.37071132728294354, -0.5906749150680255),
vec2(0.1119798859418661, 0.7017402283731283),
vec2(-0.5807270152810202, -0.4435682524557845),
vec2(0.7229827225912143, -0.06119326417718071),
vec2(-0.5144794788954391, 0.5461387788248901),
vec2(-0.005035179534685496, -0.7557546423829214),
vec2(0.5055857377426614, 0.5663728829872585),
vec2(-0.7810140733390272, -0.07214936952359105),
vec2(0.6170681003447506, -0.47552351060683423),
vec2(-0.15109977600025168, 0.7820762666899624),
vec2(-0.43760314844428994, -0.6821127366950525),
vec2(0.7772009255491943, 0.21481487028437787),
vec2(-0.742204728724318, 0.3758394044302885),
vec2(0.28114246867378123, -0.7824253564882913),
vec2(0.3091922614465049, 0.7803683548608),
vec2(-0.7789831306606206, -0.36561570268862775),
vec2(0.8145440939773348, -0.2543941296975529),
vec2(-0.4488757377357506, 0.7504758305912105),
vec2(-0.1933624476019976, -0.8604246222601459),
vec2(0.7154581485450054, 0.513848417434855),
vec2(-0.8988765686147268, 0.11036534262592021),
vec2(0.5783350546530844, -0.6902686901177914),
vec2(0.024600692161986272, 0.9131155784626814),
vec2(-0.6564461645240188, -0.657849672537283),
vec2(0.9212949234450745, 0.04697899281368057),
vec2(-0.7330423210662792, 0.5978985715758123),
vec2(0.12225611512756368, -0.9393399804201348),
vec2(0.5334856827883492, 0.7868760176859764),
vec2(-0.948368229388031, -0.21678429915641398),
vec2(0.8372175428305082, -0.4798472000523386),
vec2(-0.31121110469716806, 0.9318623471900049),
vec2(-0.41881630178513873, -0.899674402337137),
vec2(0.9082566602526256, 0.38845471061254216)
);
#elif DOF_QUALITY == 3 // High quality bokeh
#define BOKEH_SAMPLES 96
const vec2 bokeh_offsets[96] = vec2[96](
vec2(0.07121012932580298, -0.005700790092752472),
vec2(-0.09312976408269022, 0.07873549668993801),
vec2(0.013149611337887245, -0.16645720056123525),
vec2(0.1152170596849477, 0.14582985633924836),
vec2(-0.21415537775596927, -0.043412288570053574),
vec2(0.20099989356868228, -0.13417028686218047),
vec2(-0.06850983617645874, 0.24558623934474322),
vec2(-0.1297860841436839, -0.25375016688247776),
vec2(0.2785453377231323, 0.09637361951611127),
vec2(-0.29173598389867905, 0.1143278645615103),
vec2(0.1392152328130355, -0.30524424497902103),
vec2(0.10262628276810476, 0.3245443120276563),
vec2(-0.3131648573584685, -0.1866306663416654),
vec2(0.3652947607876658, -0.08622057598322416),
vec2(-0.22447741224677245, 0.3122316422302745),
vec2(-0.052596663134391534, -0.4041877401668016),
vec2(0.3160480724583331, 0.2614728148450268),
vec2(-0.42755033863187675, 0.011940115357288394),
vec2(0.3102072322995241, -0.31535240777916773),
vec2(-0.021776857676125607, 0.4445120511380856),
vec2(-0.29703399441499195, -0.36049799929262627),
vec2(0.4680573756135771, 0.05740465338052286),
vec2(-0.3983549879059493, 0.27079722808233325),
vec2(0.1076328815172257, -0.4884010542428246),
vec2(0.25020791867460324, 0.432618369814755),
vec2(-0.4919652729660237, -0.1623452935030104),
vec2(0.47599178934545766, -0.22606399244564834),
vec2(-0.20758550392653913, 0.4880235037760105),
vec2(-0.1853685647531024, -0.5184073191472642),
vec2(0.48973632510956305, 0.2521947388069187),
vec2(-0.5459973114481342, 0.13796965075175446),
vec2(0.3088450800163787, -0.48751677798588744),
vec2(0.0975917427828865, 0.5677357677730314),
vec2(-0.46800107365064036, -0.3674046909313041),
vec2(0.5964734698442213, -0.05519682036954475),
vec2(-0.4139101866969282, 0.4406877162294968),
vec2(0.002049341904248123, -0.6223038109189813),
vec2(0.41896957501138105, 0.45720879309620605),
vec2(-0.6315347717590759, -0.06414244292517278),
vec2(0.5099945429097319, -0.39349604995429904),
vec2(-0.11721190170447472, 0.6333298683840053),
vec2(-0.3511409257292949, -0.5621754467118343),
vec2(0.6407424471834575, 0.17016287772655794),
vec2(-0.59984707457312, 0.3016388593021738),
vec2(0.23571241320439879, -0.6440803577969166),
vec2(0.25861497309905895, 0.6319353642149682),
vec2(-0.6298765140060968, -0.3037567005718222),
vec2(0.6712330165260425, -0.21294466649920604),
vec2(-0.36034495634397506, 0.6075282203535491),
vec2(-0.15171922856817155, -0.707766491614509),
vec2(0.5903296808625542, 0.4143227465576124),
vec2(-0.7277690961712949, 0.08488019551391128),
vec2(0.4783691435335692, -0.5688347547957064),
vec2(0.02624692981739339, 0.7403230184135525),
vec2(-0.529825500118305, -0.5423647377841855),
vec2(0.7583947037976506, 0.033125457614728814),
vec2(-0.5923660000472654, 0.48294941004015257),
vec2(0.1059822487778383, -0.772200611734827),
vec2(0.44174978474925664, 0.6372488486615551),
vec2(-0.7681788679771326, -0.18223636845309496),
vec2(0.6897458099924982, -0.3970263276035467),
vec2(-0.2479422541533022, 0.755629690982855),
vec2(-0.33580152966568444, -0.7398138028495373),
vec2(0.7477490064797803, 0.31193921366734034),
vec2(-0.7736080489368817, 0.26795577022080547),
vec2(0.3868886663966537, -0.7349923110069412),
vec2(0.2072555967697858, 0.8001249720762448),
vec2(-0.7040443194892538, -0.4626423043345493),
vec2(0.8322384822401724, -0.1447122942561253),
vec2(-0.5252166762643815, 0.664457295558192),
vec2(-0.06754632697534207, -0.8600666846898691),
vec2(0.6296824993369153, 0.5834370562363421),
vec2(-0.869944526760866, -0.014179400625216068),
vec2(0.6499749876116837, -0.590431834076035),
vec2(-0.08653298327805949, 0.8710652567467342),
vec2(-0.5336452473653825, -0.7147165352819029),
vec2(0.8765151038515352, 0.15835652829089225),
vec2(-0.7637367481190092, 0.46912680629507475),
vec2(0.24230314452308632, -0.8766382336302021),
vec2(0.41057390183400766, 0.8059431929582904),
vec2(-0.8580075067207172, -0.32820494707410347),
vec2(0.8541129534247509, -0.3489366841323772),
vec2(-0.4020475845121665, 0.8300639316319863),
vec2(-0.271383304434805, -0.8982601300128057),
vec2(0.806149237823113, 0.4726141519370287),
vec2(-0.9246093490373926, 0.18793390244305297),
vec2(0.5525228823894455, -0.7768686415915086),
vec2(0.11248781322457736, 0.9422381490453825),
vec2(-0.7290593513744651, -0.6315956494365766),
vec2(0.9641126469581356, -0.03618111342429133),
vec2(-0.6958327822205611, 0.6724277225888768),
vec2(0.05364990040181975, -0.9804535309203316),
vec2(0.6205795080163646, 0.7540570525272473),
vec2(-0.9777078995622647, -0.14683634641243257),
vec2(0.8189512244871316, -0.564380296276503),
vec2(-0.22935101607289898, 0.965189829782074)
);
#elif DOF_QUALITY == 4 // Ultra quality bokeh
#define BOKEH_SAMPLES 128
const vec2 bokeh_offsets[128] = vec2[128](
vec2(0.0663717288408725, -0.0013834293391071473),
vec2(-0.07595079370610941, 0.07174054001593103),
vec2(0.016089845306454117, -0.1406025646260119),
vec2(0.10448284847446448, 0.12984595992288336),
vec2(-0.18076204965577036, -0.03404254503522808),
vec2(0.1787729618263991, -0.11264127715283463),
vec2(-0.05462931069997152, 0.2162375217952921),
vec2(-0.10769609808818306, -0.21620049103190728),
vec2(0.24592928641190032, 0.08701560245846723),
vec2(-0.24794882541635205, 0.10256443477355368),
vec2(0.12526587604780554, -0.26079567080797356),
vec2(0.09357891581109577, 0.284617218572553),
vec2(-0.26650677420701185, -0.15807329847424043),
vec2(0.3210564905494301, -0.07111560942753943),
vec2(-0.18970119374354508, 0.27395413373961097),
vec2(-0.040848098590723636, -0.3464832511798149),
vec2(0.27840760740397325, 0.22999569975767717),
vec2(-0.3655675068138925, 0.013894042926387594),
vec2(0.27334929144700043, -0.2695495965784895),
vec2(-0.014157364124171042, 0.38851232827676874),
vec2(-0.25253703711299613, -0.3086468256980197),
vec2(0.4100515255479846, 0.053267487825832176),
vec2(-0.3402835914128429, 0.2380708784965685),
vec2(0.09791475751438991, -0.41941412050652843),
vec2(0.22138836163818915, 0.3782120981062479),
vec2(-0.4213524763303703, -0.13704154865558862),
vec2(0.4169229294039292, -0.1922235606360057),
vec2(-0.1750723720198253, 0.42619435161677505),
vec2(-0.15583193830129546, -0.44540030818645854),
vec2(0.42882604653886824, 0.22196065021043188),
vec2(-0.46814559427413643, 0.12303882220514525),
vec2(0.2721696329659735, -0.41864831480405745),
vec2(0.08921887628752824, 0.4952271972313669),
vec2(-0.4005988709418946, -0.3146281961132203),
vec2(0.5212631254064987, -0.04424824894529297),
vec2(-0.35375478872674765, 0.3852003570933512),
vec2(0.006476729988070734, -0.5353773094248466),
vec2(0.36754024321057777, 0.3995080293577968),
vec2(-0.542223207878615, -0.0519953853311339),
vec2(0.44637017778921256, -0.33722397584639424),
vec2(-0.09680653666400772, 0.5520333546988624),
vec2(-0.29939501415200226, -0.4833046185334542),
vec2(0.5596011843818348, 0.1509189745951235),
vec2(-0.5147808571281486, 0.26478051462710167),
vec2(0.20883488566029573, -0.5542363522278412),
vec2(0.22866908434076613, 0.5508256786627931),
vec2(-0.5407871145385126, -0.2595074195620819),
vec2(0.5860067920083645, -0.18086189108585835),
vec2(-0.30736593848152494, 0.5296884720449828),
vec2(-0.1266907583446624, -0.6093901619826914),
vec2(0.5159424480728841, 0.3623676235874931),
vec2(-0.6255645775356298, 0.07706200529609625),
vec2(0.41898177852462715, -0.4890717485057145),
vec2(0.027432455831161814, 0.6446921406553703),
vec2(-0.4541403948372952, -0.46614804133513105),
vec2(0.6614910274222918, 0.032241087509198955),
vec2(-0.5083020565411538, 0.42180005754033856),
vec2(0.0964852676297621, -0.6651917468773848),
vec2(0.3872684835471157, 0.5554272911761509),
vec2(-0.6605604664806174, -0.15426772487094212),
vec2(0.6020393414453297, -0.34028128597305507),
vec2(-0.21002234293038552, 0.6579481079477967),
vec2(-0.2861107074822046, -0.6371439476352124),
vec2(0.6522715831040163, 0.2737008831753178),
vec2(-0.6652622751135028, 0.2356101038047024),
vec2(0.3397573613737368, -0.6329684132153847),
vec2(0.1841905597170904, 0.6964821517232016),
vec2(-0.6050183182298694, -0.39710638871623194),
vec2(0.7254416154649453, -0.12177092336287425),
vec2(-0.45014903629822983, 0.5789904973861583),
vec2(-0.05379488725502444, -0.7412859981872281),
vec2(0.5500229885821982, 0.5088249119127414),
vec2(-0.7486921122201893, -0.008726121449014926),
vec2(0.5675967989341455, -0.5077753678100256),
vec2(-0.07023781394610165, 0.7579182403995453),
vec2(-0.45744839298930007, -0.6154090763560658),
vec2(0.7637862945741366, 0.14069437605788096),
vec2(-0.656713477836827, 0.4098293315506553),
vec2(0.21454262641179686, -0.7556373805496136),
vec2(0.36026937695710076, 0.7015208788118822),
vec2(-0.7383543496199366, -0.28068022211104154),
vec2(0.7443854632051411, -0.29863443306808585),
vec2(-0.34348147387975525, 0.7224100512613486),
vec2(-0.23032288796555528, -0.7743624920949431),
vec2(0.7028476670342306, 0.4128494614683644),
vec2(-0.7960332370050228, 0.16630913345088935),
vec2(0.48320080015941314, -0.6692343793188953),
vec2(0.10211925170659499, 0.8195557731909884),
vec2(-0.6266819713189401, -0.5434242776289469),
vec2(0.839647992213555, -0.027780163659783332),
vec2(-0.5979069183510588, 0.5858930896737415),
vec2(0.05116412449643274, -0.8455440653042995),
vec2(0.5421395668481722, 0.656586163094272),
vec2(-0.8420179306636936, -0.12361040648919945),
vec2(0.7139345127041803, -0.4852140742679803),
vec2(-0.19392185846495172, 0.8394325117685132),
vec2(-0.4204487200571126, -0.7589178553865392),
vec2(0.8327210388300782, 0.27198001249322223),
vec2(-0.7960210362439597, 0.35875934008010707),
vec2(0.3521694740750743, -0.8113417187989848),
vec2(0.2956218966152538, 0.8352993597773058),
vec2(-0.7802993418734316, -0.4233366042943169),
vec2(0.8713623792816834, -0.22102227243790618),
vec2(-0.4898157243847507, 0.7501925472112333),
vec2(-0.1404730904953662, -0.8933311986231547),
vec2(0.7161931362879647, 0.5614815300362244),
vec2(-0.9058628529093994, 0.06505632357778653),
vec2(0.6327340635903044, -0.6679986961411009),
vec2(-0.009601876744475778, 0.9192004679524599),
vec2(-0.6108521377052276, -0.6924574614793783),
vec2(0.9281555629938579, 0.09338283007560376),
vec2(-0.7450460329935668, 0.555586889447176),
vec2(0.18065981280216364, -0.9220637339884982),
vec2(0.4976041523666884, 0.8004563576254236),
vec2(-0.9058072969449353, -0.26025660300795816),
vec2(0.8531917506909307, -0.4268234961929668),
vec2(-0.33647364470405444, 0.8898636052739477),
vec2(-0.3487004193922513, -0.8922603177419213),
vec2(0.8692854206244577, 0.4191405201257309),
vec2(-0.922200158608347, 0.27426963027794127),
vec2(0.5026010788472942, -0.8336545903450451),
vec2(0.19912047190109702, 0.953130414632473),
vec2(-0.7881026276127884, -0.575672440830542),
vec2(0.9797345166178452, -0.1133457865497118),
vec2(-0.6426714284056454, 0.743356925293099),
vec2(-0.022557857722768027, -0.9912168632834627),
vec2(0.694719000547024, 0.7134671125059463),
vec2(-0.992326501717018, -0.062069798758671524)
);
#endif
#if defined(DOF_JITTER) || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE)
const vec2 jitter_offsets[64] = vec2[](
vec2(0.08838834764831845, 0),
vec2(-0.1846432401149469, -0.8598513673187094),
vec2(0.017279026012279545, -0.19688558926459543),
vec2(-0.3024918972101173, 0.9324356021314415),
vec2(-0.9396490219009803, -0.21621104421497742),
vec2(0.24734769576390825, -0.1573423572986152),
vec2(-0.41009709429808805, -0.8991011473957005),
vec2(0.5744249772651445, 0.07728806825078578),
vec2(0.3423210807918538, 0.12501510966878018),
vec2(-0.44015653024869994, 0.751049085532647),
vec2(0.17167724937276072, -0.36686431013087517),
vec2(0.12686512045562875, 0.4044659951241622),
vec2(-0.42888394095723925, -0.6815394817536159),
vec2(0.4485669917863205, -0.09861619481490404),
vec2(-0.27375345242708055, 0.3893861159366807),
vec2(-0.06324338646074763, -0.4880448484196678),
vec2(0.3882523628219502, 0.32721950241874764),
vec2(-0.14238056851320097, 0.782649521631399),
vec2(0.3810988237928309, -0.37924423067954616),
vec2(-0.025496987788449936, 0.5513958683321046),
vec2(-0.3626167543233098, -0.4345360623515941),
vec2(0.9169758677396763, 0.3890279655539787),
vec2(-0.48670912146566037, 0.3386395297098746),
vec2(0.13299692659673018, -0.591184672937166),
vec2(-0.2530651743438579, 0.6046862967972011),
vec2(-0.6013578380024912, -0.19184955218339567),
vec2(0.9300141309321251, 0.047552247755117134),
vec2(-0.35612804311487684, 0.1470044792078405),
vec2(-0.2258550920331724, -0.6279346919884959),
vec2(0.6257873078318013, -0.47495025566539767),
vec2(-0.6675333000242891, 0.17595963559487854),
vec2(0.3794305347699942, -0.5901016601265889),
vec2(0.12069909342891681, 0.7023134833145649),
vec2(-0.5720078077939695, -0.44299499751434795),
vec2(0.731701930078265, -0.06062000923574415),
vec2(-0.5057602714083884, 0.5467120337663267),
vec2(0.2898616761608319, -0.7818521015468547),
vec2(0.514304945229712, 0.5669461379286951),
vec2(-0.7722948658519765, -0.07157611458215449),
vec2(0.6009761594775107, 0.31585622637469357),
vec2(-0.5224659775357187, 0.02160560847664148),
vec2(-0.3823729459844533, -0.2215929380173709),
vec2(0.785920133036245, 0.21538812522581444),
vec2(-0.7334855212372673, 0.3764126593717251),
vec2(0.1309753226146144, -0.9387667254786982),
vec2(0.31791146893355565, 0.7809416098022366),
vec2(0.3076149721436936, 0.5368291431293896),
vec2(0.8232633014643855, -0.2538208747561163),
vec2(-0.77026392317357, -0.3650424477471912),
vec2(-0.112886093968774, 0.10341290919644958),
vec2(0.7241773560320561, 0.5144216723762915),
vec2(-0.8901573611276761, 0.11093859756735677),
vec2(0.5870542621401351, -0.6896954351763548),
vec2(0.033319899649036984, 0.913688833404118),
vec2(-0.6477269570369681, -0.6572764175958464),
vec2(0.5841426097907643, -0.2698887019251361),
vec2(-0.7243231135792285, 0.5984718265172488),
vec2(0.003684027952365215, -0.7551813874414849),
vec2(0.5422048902753999, 0.7874492726274129),
vec2(-0.15778073396756462, -0.3037972020750958),
vec2(0.8459367503175589, -0.47927394511090204),
vec2(0.14228560991136777, 0.18558638207624523),
vec2(-0.08273296353158632, 0.30776250055080007),
vec2(-0.26111159362214226, -0.046186964352566244)
);
#endif
mat2 rotate(float angle){
return mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
}