@group(0)
@binding(0)
var<storage, read_write> v_indices: array<u32>; // this is used as both input and output for convenience
@compute
@workgroup_size(1)
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
var arr: array<u32, 1000>;
arr[0] = 0u;
arr[1] = 1u;
arr[2] = 2u;
arr[3] = 3u;
arr[4] = 4u;
arr[5] = 5u;
arr[6] = 6u;
arr[7] = 7u;
arr[8] = 8u;
arr[9] = 9u;
arr[10] = 10u;
arr[11] = 11u;
arr[12] = 12u;
arr[13] = 13u;
arr[14] = 14u;
arr[15] = 15u;
arr[16] = 16u;
arr[17] = 17u;
arr[18] = 18u;
arr[19] = 19u;
arr[20] = 20u;
arr[21] = 21u;
arr[22] = 22u;
arr[23] = 23u;
arr[24] = 24u;
arr[25] = 25u;
arr[26] = 26u;
arr[27] = 27u;
arr[28] = 28u;
arr[29] = 29u;
arr[30] = 30u;
arr[31] = 31u;
arr[32] = 32u;
arr[33] = 33u;
arr[34] = 34u;
arr[35] = 35u;
arr[36] = 36u;
arr[37] = 37u;
arr[38] = 38u;
arr[39] = 39u;
arr[40] = 40u;
arr[41] = 41u;
arr[42] = 42u;
arr[43] = 43u;
arr[44] = 44u;
arr[45] = 45u;
arr[46] = 46u;
arr[47] = 47u;
arr[48] = 48u;
arr[49] = 49u;
arr[50] = 50u;
arr[51] = 51u;
arr[52] = 52u;
arr[53] = 53u;
arr[54] = 54u;
arr[55] = 55u;
arr[56] = 56u;
arr[57] = 57u;
arr[58] = 58u;
arr[59] = 59u;
arr[60] = 60u;
arr[61] = 61u;
arr[62] = 62u;
arr[63] = 63u;
arr[64] = 64u;
arr[65] = 65u;
arr[66] = 66u;
arr[67] = 67u;
arr[68] = 68u;
arr[69] = 69u;
arr[70] = 70u;
arr[71] = 71u;
arr[72] = 72u;
arr[73] = 73u;
arr[74] = 74u;
arr[75] = 75u;
arr[76] = 76u;
arr[77] = 77u;
arr[78] = 78u;
arr[79] = 79u;
arr[80] = 80u;
arr[81] = 81u;
arr[82] = 82u;
arr[83] = 83u;
arr[84] = 84u;
arr[85] = 85u;
arr[86] = 86u;
arr[87] = 87u;
arr[88] = 88u;
arr[89] = 89u;
arr[90] = 90u;
arr[91] = 91u;
arr[92] = 92u;
arr[93] = 93u;
arr[94] = 94u;
arr[95] = 95u;
arr[96] = 96u;
arr[97] = 97u;
arr[98] = 98u;
arr[99] = 99u;
arr[100] = 100u;
arr[101] = 101u;
arr[102] = 102u;
arr[103] = 103u;
arr[104] = 104u;
arr[105] = 105u;
arr[106] = 106u;
arr[107] = 107u;
arr[108] = 108u;
arr[109] = 109u;
arr[110] = 110u;
arr[111] = 111u;
arr[112] = 112u;
arr[113] = 113u;
arr[114] = 114u;
arr[115] = 115u;
arr[116] = 116u;
arr[117] = 117u;
arr[118] = 118u;
arr[119] = 119u;
arr[120] = 120u;
arr[121] = 121u;
arr[122] = 122u;
arr[123] = 123u;
arr[124] = 124u;
arr[125] = 125u;
arr[126] = 126u;
arr[127] = 127u;
arr[128] = 128u;
arr[129] = 129u;
arr[130] = 130u;
arr[131] = 131u;
arr[132] = 132u;
arr[133] = 133u;
arr[134] = 134u;
arr[135] = 135u;
arr[136] = 136u;
arr[137] = 137u;
arr[138] = 138u;
arr[139] = 139u;
arr[140] = 140u;
arr[141] = 141u;
arr[142] = 142u;
arr[143] = 143u;
arr[144] = 144u;
arr[145] = 145u;
arr[146] = 146u;
arr[147] = 147u;
arr[148] = 148u;
arr[149] = 149u;
arr[150] = 150u;
arr[151] = 151u;
arr[152] = 152u;
arr[153] = 153u;
arr[154] = 154u;
arr[155] = 155u;
arr[156] = 156u;
arr[157] = 157u;
arr[158] = 158u;
arr[159] = 159u;
arr[160] = 160u;
arr[161] = 161u;
arr[162] = 162u;
arr[163] = 163u;
arr[164] = 164u;
arr[165] = 165u;
arr[166] = 166u;
arr[167] = 167u;
arr[168] = 168u;
arr[169] = 169u;
arr[170] = 170u;
arr[171] = 171u;
arr[172] = 172u;
arr[173] = 173u;
arr[174] = 174u;
arr[175] = 175u;
arr[176] = 176u;
arr[177] = 177u;
arr[178] = 178u;
arr[179] = 179u;
arr[180] = 180u;
arr[181] = 181u;
arr[182] = 182u;
arr[183] = 183u;
arr[184] = 184u;
arr[185] = 185u;
arr[186] = 186u;
arr[187] = 187u;
arr[188] = 188u;
arr[189] = 189u;
arr[190] = 190u;
arr[191] = 191u;
arr[192] = 192u;
arr[193] = 193u;
arr[194] = 194u;
arr[195] = 195u;
arr[196] = 196u;
arr[197] = 197u;
arr[198] = 198u;
arr[199] = 199u;
arr[200] = 200u;
arr[201] = 201u;
arr[202] = 202u;
arr[203] = 203u;
arr[204] = 204u;
arr[205] = 205u;
arr[206] = 206u;
arr[207] = 207u;
arr[208] = 208u;
arr[209] = 209u;
arr[210] = 210u;
arr[211] = 211u;
arr[212] = 212u;
arr[213] = 213u;
arr[214] = 214u;
arr[215] = 215u;
arr[216] = 216u;
arr[217] = 217u;
arr[218] = 218u;
arr[219] = 219u;
arr[220] = 220u;
arr[221] = 221u;
arr[222] = 222u;
arr[223] = 223u;
arr[224] = 224u;
arr[225] = 225u;
arr[226] = 226u;
arr[227] = 227u;
arr[228] = 228u;
arr[229] = 229u;
arr[230] = 230u;
arr[231] = 231u;
arr[232] = 232u;
arr[233] = 233u;
arr[234] = 234u;
arr[235] = 235u;
arr[236] = 236u;
arr[237] = 237u;
arr[238] = 238u;
arr[239] = 239u;
arr[240] = 240u;
arr[241] = 241u;
arr[242] = 242u;
arr[243] = 243u;
arr[244] = 244u;
arr[245] = 245u;
arr[246] = 246u;
arr[247] = 247u;
arr[248] = 248u;
arr[249] = 249u;
arr[250] = 250u;
arr[251] = 251u;
arr[252] = 252u;
arr[253] = 253u;
arr[254] = 254u;
arr[255] = 255u;
arr[256] = 256u;
arr[257] = 257u;
arr[258] = 258u;
arr[259] = 259u;
arr[260] = 260u;
arr[261] = 261u;
arr[262] = 262u;
arr[263] = 263u;
arr[264] = 264u;
arr[265] = 265u;
arr[266] = 266u;
arr[267] = 267u;
arr[268] = 268u;
arr[269] = 269u;
arr[270] = 270u;
arr[271] = 271u;
arr[272] = 272u;
arr[273] = 273u;
arr[274] = 274u;
arr[275] = 275u;
arr[276] = 276u;
arr[277] = 277u;
arr[278] = 278u;
arr[279] = 279u;
arr[280] = 280u;
arr[281] = 281u;
arr[282] = 282u;
arr[283] = 283u;
arr[284] = 284u;
arr[285] = 285u;
arr[286] = 286u;
arr[287] = 287u;
arr[288] = 288u;
arr[289] = 289u;
arr[290] = 290u;
arr[291] = 291u;
arr[292] = 292u;
arr[293] = 293u;
arr[294] = 294u;
arr[295] = 295u;
arr[296] = 296u;
arr[297] = 297u;
arr[298] = 298u;
arr[299] = 299u;
arr[300] = 300u;
arr[301] = 301u;
arr[302] = 302u;
arr[303] = 303u;
arr[304] = 304u;
arr[305] = 305u;
arr[306] = 306u;
arr[307] = 307u;
arr[308] = 308u;
arr[309] = 309u;
arr[310] = 310u;
arr[311] = 311u;
arr[312] = 312u;
arr[313] = 313u;
arr[314] = 314u;
arr[315] = 315u;
arr[316] = 316u;
arr[317] = 317u;
arr[318] = 318u;
arr[319] = 319u;
arr[320] = 320u;
arr[321] = 321u;
arr[322] = 322u;
arr[323] = 323u;
arr[324] = 324u;
arr[325] = 325u;
arr[326] = 326u;
arr[327] = 327u;
arr[328] = 328u;
arr[329] = 329u;
arr[330] = 330u;
arr[331] = 331u;
arr[332] = 332u;
arr[333] = 333u;
arr[334] = 334u;
arr[335] = 335u;
arr[336] = 336u;
arr[337] = 337u;
arr[338] = 338u;
arr[339] = 339u;
arr[340] = 340u;
arr[341] = 341u;
arr[342] = 342u;
arr[343] = 343u;
arr[344] = 344u;
arr[345] = 345u;
arr[346] = 346u;
arr[347] = 347u;
arr[348] = 348u;
arr[349] = 349u;
arr[350] = 350u;
arr[351] = 351u;
arr[352] = 352u;
arr[353] = 353u;
arr[354] = 354u;
arr[355] = 355u;
arr[356] = 356u;
arr[357] = 357u;
arr[358] = 358u;
arr[359] = 359u;
arr[360] = 360u;
arr[361] = 361u;
arr[362] = 362u;
arr[363] = 363u;
arr[364] = 364u;
arr[365] = 365u;
arr[366] = 366u;
arr[367] = 367u;
arr[368] = 368u;
arr[369] = 369u;
arr[370] = 370u;
arr[371] = 371u;
arr[372] = 372u;
arr[373] = 373u;
arr[374] = 374u;
arr[375] = 375u;
arr[376] = 376u;
arr[377] = 377u;
arr[378] = 378u;
arr[379] = 379u;
arr[380] = 380u;
arr[381] = 381u;
arr[382] = 382u;
arr[383] = 383u;
arr[384] = 384u;
arr[385] = 385u;
arr[386] = 386u;
arr[387] = 387u;
arr[388] = 388u;
arr[389] = 389u;
arr[390] = 390u;
arr[391] = 391u;
arr[392] = 392u;
arr[393] = 393u;
arr[394] = 394u;
arr[395] = 395u;
arr[396] = 396u;
arr[397] = 397u;
arr[398] = 398u;
arr[399] = 399u;
arr[400] = 400u;
arr[401] = 401u;
arr[402] = 402u;
arr[403] = 403u;
arr[404] = 404u;
arr[405] = 405u;
arr[406] = 406u;
arr[407] = 407u;
arr[408] = 408u;
arr[409] = 409u;
arr[410] = 410u;
arr[411] = 411u;
arr[412] = 412u;
arr[413] = 413u;
arr[414] = 414u;
arr[415] = 415u;
arr[416] = 416u;
arr[417] = 417u;
arr[418] = 418u;
arr[419] = 419u;
arr[420] = 420u;
arr[421] = 421u;
arr[422] = 422u;
arr[423] = 423u;
arr[424] = 424u;
arr[425] = 425u;
arr[426] = 426u;
arr[427] = 427u;
arr[428] = 428u;
arr[429] = 429u;
arr[430] = 430u;
arr[431] = 431u;
arr[432] = 432u;
arr[433] = 433u;
arr[434] = 434u;
arr[435] = 435u;
arr[436] = 436u;
arr[437] = 437u;
arr[438] = 438u;
arr[439] = 439u;
arr[440] = 440u;
arr[441] = 441u;
arr[442] = 442u;
arr[443] = 443u;
arr[444] = 444u;
arr[445] = 445u;
arr[446] = 446u;
arr[447] = 447u;
arr[448] = 448u;
arr[449] = 449u;
arr[450] = 450u;
arr[451] = 451u;
arr[452] = 452u;
arr[453] = 453u;
arr[454] = 454u;
arr[455] = 455u;
arr[456] = 456u;
arr[457] = 457u;
arr[458] = 458u;
arr[459] = 459u;
arr[460] = 460u;
arr[461] = 461u;
arr[462] = 462u;
arr[463] = 463u;
arr[464] = 464u;
arr[465] = 465u;
arr[466] = 466u;
arr[467] = 467u;
arr[468] = 468u;
arr[469] = 469u;
arr[470] = 470u;
arr[471] = 471u;
arr[472] = 472u;
arr[473] = 473u;
arr[474] = 474u;
arr[475] = 475u;
arr[476] = 476u;
arr[477] = 477u;
arr[478] = 478u;
arr[479] = 479u;
arr[480] = 480u;
arr[481] = 481u;
arr[482] = 482u;
arr[483] = 483u;
arr[484] = 484u;
arr[485] = 485u;
arr[486] = 486u;
arr[487] = 487u;
arr[488] = 488u;
arr[489] = 489u;
arr[490] = 490u;
arr[491] = 491u;
arr[492] = 492u;
arr[493] = 493u;
arr[494] = 494u;
arr[495] = 495u;
arr[496] = 496u;
arr[497] = 497u;
arr[498] = 498u;
arr[499] = 499u;
arr[500] = 500u;
arr[501] = 501u;
arr[502] = 502u;
arr[503] = 503u;
arr[504] = 504u;
arr[505] = 505u;
arr[506] = 506u;
arr[507] = 507u;
arr[508] = 508u;
arr[509] = 509u;
arr[510] = 510u;
arr[511] = 511u;
arr[512] = 512u;
arr[513] = 513u;
arr[514] = 514u;
arr[515] = 515u;
arr[516] = 516u;
arr[517] = 517u;
arr[518] = 518u;
arr[519] = 519u;
arr[520] = 520u;
arr[521] = 521u;
arr[522] = 522u;
arr[523] = 523u;
arr[524] = 524u;
arr[525] = 525u;
arr[526] = 526u;
arr[527] = 527u;
arr[528] = 528u;
arr[529] = 529u;
arr[530] = 530u;
arr[531] = 531u;
arr[532] = 532u;
arr[533] = 533u;
arr[534] = 534u;
arr[535] = 535u;
arr[536] = 536u;
arr[537] = 537u;
arr[538] = 538u;
arr[539] = 539u;
arr[540] = 540u;
arr[541] = 541u;
arr[542] = 542u;
arr[543] = 543u;
arr[544] = 544u;
arr[545] = 545u;
arr[546] = 546u;
arr[547] = 547u;
arr[548] = 548u;
arr[549] = 549u;
arr[550] = 550u;
arr[551] = 551u;
arr[552] = 552u;
arr[553] = 553u;
arr[554] = 554u;
arr[555] = 555u;
arr[556] = 556u;
arr[557] = 557u;
arr[558] = 558u;
arr[559] = 559u;
arr[560] = 560u;
arr[561] = 561u;
arr[562] = 562u;
arr[563] = 563u;
arr[564] = 564u;
arr[565] = 565u;
arr[566] = 566u;
arr[567] = 567u;
arr[568] = 568u;
arr[569] = 569u;
arr[570] = 570u;
arr[571] = 571u;
arr[572] = 572u;
arr[573] = 573u;
arr[574] = 574u;
arr[575] = 575u;
arr[576] = 576u;
arr[577] = 577u;
arr[578] = 578u;
arr[579] = 579u;
arr[580] = 580u;
arr[581] = 581u;
arr[582] = 582u;
arr[583] = 583u;
arr[584] = 584u;
arr[585] = 585u;
arr[586] = 586u;
arr[587] = 587u;
arr[588] = 588u;
arr[589] = 589u;
arr[590] = 590u;
arr[591] = 591u;
arr[592] = 592u;
arr[593] = 593u;
arr[594] = 594u;
arr[595] = 595u;
arr[596] = 596u;
arr[597] = 597u;
arr[598] = 598u;
arr[599] = 599u;
arr[600] = 600u;
arr[601] = 601u;
arr[602] = 602u;
arr[603] = 603u;
arr[604] = 604u;
arr[605] = 605u;
arr[606] = 606u;
arr[607] = 607u;
arr[608] = 608u;
arr[609] = 609u;
arr[610] = 610u;
arr[611] = 611u;
arr[612] = 612u;
arr[613] = 613u;
arr[614] = 614u;
arr[615] = 615u;
arr[616] = 616u;
arr[617] = 617u;
arr[618] = 618u;
arr[619] = 619u;
arr[620] = 620u;
arr[621] = 621u;
arr[622] = 622u;
arr[623] = 623u;
arr[624] = 624u;
arr[625] = 625u;
arr[626] = 626u;
arr[627] = 627u;
arr[628] = 628u;
arr[629] = 629u;
arr[630] = 630u;
arr[631] = 631u;
arr[632] = 632u;
arr[633] = 633u;
arr[634] = 634u;
arr[635] = 635u;
arr[636] = 636u;
arr[637] = 637u;
arr[638] = 638u;
arr[639] = 639u;
arr[640] = 640u;
arr[641] = 641u;
arr[642] = 642u;
arr[643] = 643u;
arr[644] = 644u;
arr[645] = 645u;
arr[646] = 646u;
arr[647] = 647u;
arr[648] = 648u;
arr[649] = 649u;
arr[650] = 650u;
arr[651] = 651u;
arr[652] = 652u;
arr[653] = 653u;
arr[654] = 654u;
arr[655] = 655u;
arr[656] = 656u;
arr[657] = 657u;
arr[658] = 658u;
arr[659] = 659u;
arr[660] = 660u;
arr[661] = 661u;
arr[662] = 662u;
arr[663] = 663u;
arr[664] = 664u;
arr[665] = 665u;
arr[666] = 666u;
arr[667] = 667u;
arr[668] = 668u;
arr[669] = 669u;
arr[670] = 670u;
arr[671] = 671u;
arr[672] = 672u;
arr[673] = 673u;
arr[674] = 674u;
arr[675] = 675u;
arr[676] = 676u;
arr[677] = 677u;
arr[678] = 678u;
arr[679] = 679u;
arr[680] = 680u;
arr[681] = 681u;
arr[682] = 682u;
arr[683] = 683u;
arr[684] = 684u;
arr[685] = 685u;
arr[686] = 686u;
arr[687] = 687u;
arr[688] = 688u;
arr[689] = 689u;
arr[690] = 690u;
arr[691] = 691u;
arr[692] = 692u;
arr[693] = 693u;
arr[694] = 694u;
arr[695] = 695u;
arr[696] = 696u;
arr[697] = 697u;
arr[698] = 698u;
arr[699] = 699u;
arr[700] = 700u;
arr[701] = 701u;
arr[702] = 702u;
arr[703] = 703u;
arr[704] = 704u;
arr[705] = 705u;
arr[706] = 706u;
arr[707] = 707u;
arr[708] = 708u;
arr[709] = 709u;
arr[710] = 710u;
arr[711] = 711u;
arr[712] = 712u;
arr[713] = 713u;
arr[714] = 714u;
arr[715] = 715u;
arr[716] = 716u;
arr[717] = 717u;
arr[718] = 718u;
arr[719] = 719u;
arr[720] = 720u;
arr[721] = 721u;
arr[722] = 722u;
arr[723] = 723u;
arr[724] = 724u;
arr[725] = 725u;
arr[726] = 726u;
arr[727] = 727u;
arr[728] = 728u;
arr[729] = 729u;
arr[730] = 730u;
arr[731] = 731u;
arr[732] = 732u;
arr[733] = 733u;
arr[734] = 734u;
arr[735] = 735u;
arr[736] = 736u;
arr[737] = 737u;
arr[738] = 738u;
arr[739] = 739u;
arr[740] = 740u;
arr[741] = 741u;
arr[742] = 742u;
arr[743] = 743u;
arr[744] = 744u;
arr[745] = 745u;
arr[746] = 746u;
arr[747] = 747u;
arr[748] = 748u;
arr[749] = 749u;
arr[750] = 750u;
arr[751] = 751u;
arr[752] = 752u;
arr[753] = 753u;
arr[754] = 754u;
arr[755] = 755u;
arr[756] = 756u;
arr[757] = 757u;
arr[758] = 758u;
arr[759] = 759u;
arr[760] = 760u;
arr[761] = 761u;
arr[762] = 762u;
arr[763] = 763u;
arr[764] = 764u;
arr[765] = 765u;
arr[766] = 766u;
arr[767] = 767u;
arr[768] = 768u;
arr[769] = 769u;
arr[770] = 770u;
arr[771] = 771u;
arr[772] = 772u;
arr[773] = 773u;
arr[774] = 774u;
arr[775] = 775u;
arr[776] = 776u;
arr[777] = 777u;
arr[778] = 778u;
arr[779] = 779u;
arr[780] = 780u;
arr[781] = 781u;
arr[782] = 782u;
arr[783] = 783u;
arr[784] = 784u;
arr[785] = 785u;
arr[786] = 786u;
arr[787] = 787u;
arr[788] = 788u;
arr[789] = 789u;
arr[790] = 790u;
arr[791] = 791u;
arr[792] = 792u;
arr[793] = 793u;
arr[794] = 794u;
arr[795] = 795u;
arr[796] = 796u;
arr[797] = 797u;
arr[798] = 798u;
arr[799] = 799u;
arr[800] = 800u;
arr[801] = 801u;
arr[802] = 802u;
arr[803] = 803u;
arr[804] = 804u;
arr[805] = 805u;
arr[806] = 806u;
arr[807] = 807u;
arr[808] = 808u;
arr[809] = 809u;
arr[810] = 810u;
arr[811] = 811u;
arr[812] = 812u;
arr[813] = 813u;
arr[814] = 814u;
arr[815] = 815u;
arr[816] = 816u;
arr[817] = 817u;
arr[818] = 818u;
arr[819] = 819u;
arr[820] = 820u;
arr[821] = 821u;
arr[822] = 822u;
arr[823] = 823u;
arr[824] = 824u;
arr[825] = 825u;
arr[826] = 826u;
arr[827] = 827u;
arr[828] = 828u;
arr[829] = 829u;
arr[830] = 830u;
arr[831] = 831u;
arr[832] = 832u;
arr[833] = 833u;
arr[834] = 834u;
arr[835] = 835u;
arr[836] = 836u;
arr[837] = 837u;
arr[838] = 838u;
arr[839] = 839u;
arr[840] = 840u;
arr[841] = 841u;
arr[842] = 842u;
arr[843] = 843u;
arr[844] = 844u;
arr[845] = 845u;
arr[846] = 846u;
arr[847] = 847u;
arr[848] = 848u;
arr[849] = 849u;
arr[850] = 850u;
arr[851] = 851u;
arr[852] = 852u;
arr[853] = 853u;
arr[854] = 854u;
arr[855] = 855u;
arr[856] = 856u;
arr[857] = 857u;
arr[858] = 858u;
arr[859] = 859u;
arr[860] = 860u;
arr[861] = 861u;
arr[862] = 862u;
arr[863] = 863u;
arr[864] = 864u;
arr[865] = 865u;
arr[866] = 866u;
arr[867] = 867u;
arr[868] = 868u;
arr[869] = 869u;
arr[870] = 870u;
arr[871] = 871u;
arr[872] = 872u;
arr[873] = 873u;
arr[874] = 874u;
arr[875] = 875u;
arr[876] = 876u;
arr[877] = 877u;
arr[878] = 878u;
arr[879] = 879u;
arr[880] = 880u;
arr[881] = 881u;
arr[882] = 882u;
arr[883] = 883u;
arr[884] = 884u;
arr[885] = 885u;
arr[886] = 886u;
arr[887] = 887u;
arr[888] = 888u;
arr[889] = 889u;
arr[890] = 890u;
arr[891] = 891u;
arr[892] = 892u;
arr[893] = 893u;
arr[894] = 894u;
arr[895] = 895u;
arr[896] = 896u;
arr[897] = 897u;
arr[898] = 898u;
arr[899] = 899u;
arr[900] = 900u;
arr[901] = 901u;
arr[902] = 902u;
arr[903] = 903u;
arr[904] = 904u;
arr[905] = 905u;
arr[906] = 906u;
arr[907] = 907u;
arr[908] = 908u;
arr[909] = 909u;
arr[910] = 910u;
arr[911] = 911u;
arr[912] = 912u;
arr[913] = 913u;
arr[914] = 914u;
arr[915] = 915u;
arr[916] = 916u;
arr[917] = 917u;
arr[918] = 918u;
arr[919] = 919u;
arr[920] = 920u;
arr[921] = 921u;
arr[922] = 922u;
arr[923] = 923u;
arr[924] = 924u;
arr[925] = 925u;
arr[926] = 926u;
arr[927] = 927u;
arr[928] = 928u;
arr[929] = 929u;
arr[930] = 930u;
arr[931] = 931u;
arr[932] = 932u;
arr[933] = 933u;
arr[934] = 934u;
arr[935] = 935u;
arr[936] = 936u;
arr[937] = 937u;
arr[938] = 938u;
arr[939] = 939u;
arr[940] = 940u;
arr[941] = 941u;
arr[942] = 942u;
arr[943] = 943u;
arr[944] = 944u;
arr[945] = 945u;
arr[946] = 946u;
arr[947] = 947u;
arr[948] = 948u;
arr[949] = 949u;
arr[950] = 950u;
arr[951] = 951u;
arr[952] = 952u;
arr[953] = 953u;
arr[954] = 954u;
arr[955] = 955u;
arr[956] = 956u;
arr[957] = 957u;
arr[958] = 958u;
arr[959] = 959u;
arr[960] = 960u;
arr[961] = 961u;
arr[962] = 962u;
arr[963] = 963u;
arr[964] = 964u;
arr[965] = 965u;
arr[966] = 966u;
arr[967] = 967u;
arr[968] = 968u;
arr[969] = 969u;
arr[970] = 970u;
arr[971] = 971u;
arr[972] = 972u;
arr[973] = 973u;
arr[974] = 974u;
arr[975] = 975u;
arr[976] = 976u;
arr[977] = 977u;
arr[978] = 978u;
arr[979] = 979u;
arr[980] = 980u;
arr[981] = 981u;
arr[982] = 982u;
arr[983] = 983u;
arr[984] = 984u;
arr[985] = 985u;
arr[986] = 986u;
arr[987] = 987u;
arr[988] = 988u;
arr[989] = 989u;
arr[990] = 990u;
arr[991] = 991u;
arr[992] = 992u;
arr[993] = 993u;
arr[994] = 994u;
arr[995] = 995u;
arr[996] = 996u;
arr[997] = 997u;
arr[998] = 998u;
arr[999] = 999u;
v_indices[0] = arr[0];
v_indices[1] = arr[1];
v_indices[2] = arr[2];
v_indices[3] = arr[3];
v_indices[4] = arr[4];
v_indices[5] = arr[5];
v_indices[6] = arr[6];
v_indices[7] = arr[7];
v_indices[8] = arr[8];
v_indices[9] = arr[9];
v_indices[10] = arr[10];
v_indices[11] = arr[11];
v_indices[12] = arr[12];
v_indices[13] = arr[13];
v_indices[14] = arr[14];
v_indices[15] = arr[15];
v_indices[16] = arr[16];
v_indices[17] = arr[17];
v_indices[18] = arr[18];
v_indices[19] = arr[19];
v_indices[20] = arr[20];
v_indices[21] = arr[21];
v_indices[22] = arr[22];
v_indices[23] = arr[23];
v_indices[24] = arr[24];
v_indices[25] = arr[25];
v_indices[26] = arr[26];
v_indices[27] = arr[27];
v_indices[28] = arr[28];
v_indices[29] = arr[29];
v_indices[30] = arr[30];
v_indices[31] = arr[31];
v_indices[32] = arr[32];
v_indices[33] = arr[33];
v_indices[34] = arr[34];
v_indices[35] = arr[35];
v_indices[36] = arr[36];
v_indices[37] = arr[37];
v_indices[38] = arr[38];
v_indices[39] = arr[39];
v_indices[40] = arr[40];
v_indices[41] = arr[41];
v_indices[42] = arr[42];
v_indices[43] = arr[43];
v_indices[44] = arr[44];
v_indices[45] = arr[45];
v_indices[46] = arr[46];
v_indices[47] = arr[47];
v_indices[48] = arr[48];
v_indices[49] = arr[49];
v_indices[50] = arr[50];
v_indices[51] = arr[51];
v_indices[52] = arr[52];
v_indices[53] = arr[53];
v_indices[54] = arr[54];
v_indices[55] = arr[55];
v_indices[56] = arr[56];
v_indices[57] = arr[57];
v_indices[58] = arr[58];
v_indices[59] = arr[59];
v_indices[60] = arr[60];
v_indices[61] = arr[61];
v_indices[62] = arr[62];
v_indices[63] = arr[63];
v_indices[64] = arr[64];
v_indices[65] = arr[65];
v_indices[66] = arr[66];
v_indices[67] = arr[67];
v_indices[68] = arr[68];
v_indices[69] = arr[69];
v_indices[70] = arr[70];
v_indices[71] = arr[71];
v_indices[72] = arr[72];
v_indices[73] = arr[73];
v_indices[74] = arr[74];
v_indices[75] = arr[75];
v_indices[76] = arr[76];
v_indices[77] = arr[77];
v_indices[78] = arr[78];
v_indices[79] = arr[79];
v_indices[80] = arr[80];
v_indices[81] = arr[81];
v_indices[82] = arr[82];
v_indices[83] = arr[83];
v_indices[84] = arr[84];
v_indices[85] = arr[85];
v_indices[86] = arr[86];
v_indices[87] = arr[87];
v_indices[88] = arr[88];
v_indices[89] = arr[89];
v_indices[90] = arr[90];
v_indices[91] = arr[91];
v_indices[92] = arr[92];
v_indices[93] = arr[93];
v_indices[94] = arr[94];
v_indices[95] = arr[95];
v_indices[96] = arr[96];
v_indices[97] = arr[97];
v_indices[98] = arr[98];
v_indices[99] = arr[99];
v_indices[100] = arr[100];
v_indices[101] = arr[101];
v_indices[102] = arr[102];
v_indices[103] = arr[103];
v_indices[104] = arr[104];
v_indices[105] = arr[105];
v_indices[106] = arr[106];
v_indices[107] = arr[107];
v_indices[108] = arr[108];
v_indices[109] = arr[109];
v_indices[110] = arr[110];
v_indices[111] = arr[111];
v_indices[112] = arr[112];
v_indices[113] = arr[113];
v_indices[114] = arr[114];
v_indices[115] = arr[115];
v_indices[116] = arr[116];
v_indices[117] = arr[117];
v_indices[118] = arr[118];
v_indices[119] = arr[119];
v_indices[120] = arr[120];
v_indices[121] = arr[121];
v_indices[122] = arr[122];
v_indices[123] = arr[123];
v_indices[124] = arr[124];
v_indices[125] = arr[125];
v_indices[126] = arr[126];
v_indices[127] = arr[127];
v_indices[128] = arr[128];
v_indices[129] = arr[129];
v_indices[130] = arr[130];
v_indices[131] = arr[131];
v_indices[132] = arr[132];
v_indices[133] = arr[133];
v_indices[134] = arr[134];
v_indices[135] = arr[135];
v_indices[136] = arr[136];
v_indices[137] = arr[137];
v_indices[138] = arr[138];
v_indices[139] = arr[139];
v_indices[140] = arr[140];
v_indices[141] = arr[141];
v_indices[142] = arr[142];
v_indices[143] = arr[143];
v_indices[144] = arr[144];
v_indices[145] = arr[145];
v_indices[146] = arr[146];
v_indices[147] = arr[147];
v_indices[148] = arr[148];
v_indices[149] = arr[149];
v_indices[150] = arr[150];
v_indices[151] = arr[151];
v_indices[152] = arr[152];
v_indices[153] = arr[153];
v_indices[154] = arr[154];
v_indices[155] = arr[155];
v_indices[156] = arr[156];
v_indices[157] = arr[157];
v_indices[158] = arr[158];
v_indices[159] = arr[159];
v_indices[160] = arr[160];
v_indices[161] = arr[161];
v_indices[162] = arr[162];
v_indices[163] = arr[163];
v_indices[164] = arr[164];
v_indices[165] = arr[165];
v_indices[166] = arr[166];
v_indices[167] = arr[167];
v_indices[168] = arr[168];
v_indices[169] = arr[169];
v_indices[170] = arr[170];
v_indices[171] = arr[171];
v_indices[172] = arr[172];
v_indices[173] = arr[173];
v_indices[174] = arr[174];
v_indices[175] = arr[175];
v_indices[176] = arr[176];
v_indices[177] = arr[177];
v_indices[178] = arr[178];
v_indices[179] = arr[179];
v_indices[180] = arr[180];
v_indices[181] = arr[181];
v_indices[182] = arr[182];
v_indices[183] = arr[183];
v_indices[184] = arr[184];
v_indices[185] = arr[185];
v_indices[186] = arr[186];
v_indices[187] = arr[187];
v_indices[188] = arr[188];
v_indices[189] = arr[189];
v_indices[190] = arr[190];
v_indices[191] = arr[191];
v_indices[192] = arr[192];
v_indices[193] = arr[193];
v_indices[194] = arr[194];
v_indices[195] = arr[195];
v_indices[196] = arr[196];
v_indices[197] = arr[197];
v_indices[198] = arr[198];
v_indices[199] = arr[199];
v_indices[200] = arr[200];
v_indices[201] = arr[201];
v_indices[202] = arr[202];
v_indices[203] = arr[203];
v_indices[204] = arr[204];
v_indices[205] = arr[205];
v_indices[206] = arr[206];
v_indices[207] = arr[207];
v_indices[208] = arr[208];
v_indices[209] = arr[209];
v_indices[210] = arr[210];
v_indices[211] = arr[211];
v_indices[212] = arr[212];
v_indices[213] = arr[213];
v_indices[214] = arr[214];
v_indices[215] = arr[215];
v_indices[216] = arr[216];
v_indices[217] = arr[217];
v_indices[218] = arr[218];
v_indices[219] = arr[219];
v_indices[220] = arr[220];
v_indices[221] = arr[221];
v_indices[222] = arr[222];
v_indices[223] = arr[223];
v_indices[224] = arr[224];
v_indices[225] = arr[225];
v_indices[226] = arr[226];
v_indices[227] = arr[227];
v_indices[228] = arr[228];
v_indices[229] = arr[229];
v_indices[230] = arr[230];
v_indices[231] = arr[231];
v_indices[232] = arr[232];
v_indices[233] = arr[233];
v_indices[234] = arr[234];
v_indices[235] = arr[235];
v_indices[236] = arr[236];
v_indices[237] = arr[237];
v_indices[238] = arr[238];
v_indices[239] = arr[239];
v_indices[240] = arr[240];
v_indices[241] = arr[241];
v_indices[242] = arr[242];
v_indices[243] = arr[243];
v_indices[244] = arr[244];
v_indices[245] = arr[245];
v_indices[246] = arr[246];
v_indices[247] = arr[247];
v_indices[248] = arr[248];
v_indices[249] = arr[249];
v_indices[250] = arr[250];
v_indices[251] = arr[251];
v_indices[252] = arr[252];
v_indices[253] = arr[253];
v_indices[254] = arr[254];
v_indices[255] = arr[255];
v_indices[256] = arr[256];
v_indices[257] = arr[257];
v_indices[258] = arr[258];
v_indices[259] = arr[259];
v_indices[260] = arr[260];
v_indices[261] = arr[261];
v_indices[262] = arr[262];
v_indices[263] = arr[263];
v_indices[264] = arr[264];
v_indices[265] = arr[265];
v_indices[266] = arr[266];
v_indices[267] = arr[267];
v_indices[268] = arr[268];
v_indices[269] = arr[269];
v_indices[270] = arr[270];
v_indices[271] = arr[271];
v_indices[272] = arr[272];
v_indices[273] = arr[273];
v_indices[274] = arr[274];
v_indices[275] = arr[275];
v_indices[276] = arr[276];
v_indices[277] = arr[277];
v_indices[278] = arr[278];
v_indices[279] = arr[279];
v_indices[280] = arr[280];
v_indices[281] = arr[281];
v_indices[282] = arr[282];
v_indices[283] = arr[283];
v_indices[284] = arr[284];
v_indices[285] = arr[285];
v_indices[286] = arr[286];
v_indices[287] = arr[287];
v_indices[288] = arr[288];
v_indices[289] = arr[289];
v_indices[290] = arr[290];
v_indices[291] = arr[291];
v_indices[292] = arr[292];
v_indices[293] = arr[293];
v_indices[294] = arr[294];
v_indices[295] = arr[295];
v_indices[296] = arr[296];
v_indices[297] = arr[297];
v_indices[298] = arr[298];
v_indices[299] = arr[299];
v_indices[300] = arr[300];
v_indices[301] = arr[301];
v_indices[302] = arr[302];
v_indices[303] = arr[303];
v_indices[304] = arr[304];
v_indices[305] = arr[305];
v_indices[306] = arr[306];
v_indices[307] = arr[307];
v_indices[308] = arr[308];
v_indices[309] = arr[309];
v_indices[310] = arr[310];
v_indices[311] = arr[311];
v_indices[312] = arr[312];
v_indices[313] = arr[313];
v_indices[314] = arr[314];
v_indices[315] = arr[315];
v_indices[316] = arr[316];
v_indices[317] = arr[317];
v_indices[318] = arr[318];
v_indices[319] = arr[319];
v_indices[320] = arr[320];
v_indices[321] = arr[321];
v_indices[322] = arr[322];
v_indices[323] = arr[323];
v_indices[324] = arr[324];
v_indices[325] = arr[325];
v_indices[326] = arr[326];
v_indices[327] = arr[327];
v_indices[328] = arr[328];
v_indices[329] = arr[329];
v_indices[330] = arr[330];
v_indices[331] = arr[331];
v_indices[332] = arr[332];
v_indices[333] = arr[333];
v_indices[334] = arr[334];
v_indices[335] = arr[335];
v_indices[336] = arr[336];
v_indices[337] = arr[337];
v_indices[338] = arr[338];
v_indices[339] = arr[339];
v_indices[340] = arr[340];
v_indices[341] = arr[341];
v_indices[342] = arr[342];
v_indices[343] = arr[343];
v_indices[344] = arr[344];
v_indices[345] = arr[345];
v_indices[346] = arr[346];
v_indices[347] = arr[347];
v_indices[348] = arr[348];
v_indices[349] = arr[349];
v_indices[350] = arr[350];
v_indices[351] = arr[351];
v_indices[352] = arr[352];
v_indices[353] = arr[353];
v_indices[354] = arr[354];
v_indices[355] = arr[355];
v_indices[356] = arr[356];
v_indices[357] = arr[357];
v_indices[358] = arr[358];
v_indices[359] = arr[359];
v_indices[360] = arr[360];
v_indices[361] = arr[361];
v_indices[362] = arr[362];
v_indices[363] = arr[363];
v_indices[364] = arr[364];
v_indices[365] = arr[365];
v_indices[366] = arr[366];
v_indices[367] = arr[367];
v_indices[368] = arr[368];
v_indices[369] = arr[369];
v_indices[370] = arr[370];
v_indices[371] = arr[371];
v_indices[372] = arr[372];
v_indices[373] = arr[373];
v_indices[374] = arr[374];
v_indices[375] = arr[375];
v_indices[376] = arr[376];
v_indices[377] = arr[377];
v_indices[378] = arr[378];
v_indices[379] = arr[379];
v_indices[380] = arr[380];
v_indices[381] = arr[381];
v_indices[382] = arr[382];
v_indices[383] = arr[383];
v_indices[384] = arr[384];
v_indices[385] = arr[385];
v_indices[386] = arr[386];
v_indices[387] = arr[387];
v_indices[388] = arr[388];
v_indices[389] = arr[389];
v_indices[390] = arr[390];
v_indices[391] = arr[391];
v_indices[392] = arr[392];
v_indices[393] = arr[393];
v_indices[394] = arr[394];
v_indices[395] = arr[395];
v_indices[396] = arr[396];
v_indices[397] = arr[397];
v_indices[398] = arr[398];
v_indices[399] = arr[399];
v_indices[400] = arr[400];
v_indices[401] = arr[401];
v_indices[402] = arr[402];
v_indices[403] = arr[403];
v_indices[404] = arr[404];
v_indices[405] = arr[405];
v_indices[406] = arr[406];
v_indices[407] = arr[407];
v_indices[408] = arr[408];
v_indices[409] = arr[409];
v_indices[410] = arr[410];
v_indices[411] = arr[411];
v_indices[412] = arr[412];
v_indices[413] = arr[413];
v_indices[414] = arr[414];
v_indices[415] = arr[415];
v_indices[416] = arr[416];
v_indices[417] = arr[417];
v_indices[418] = arr[418];
v_indices[419] = arr[419];
v_indices[420] = arr[420];
v_indices[421] = arr[421];
v_indices[422] = arr[422];
v_indices[423] = arr[423];
v_indices[424] = arr[424];
v_indices[425] = arr[425];
v_indices[426] = arr[426];
v_indices[427] = arr[427];
v_indices[428] = arr[428];
v_indices[429] = arr[429];
v_indices[430] = arr[430];
v_indices[431] = arr[431];
v_indices[432] = arr[432];
v_indices[433] = arr[433];
v_indices[434] = arr[434];
v_indices[435] = arr[435];
v_indices[436] = arr[436];
v_indices[437] = arr[437];
v_indices[438] = arr[438];
v_indices[439] = arr[439];
v_indices[440] = arr[440];
v_indices[441] = arr[441];
v_indices[442] = arr[442];
v_indices[443] = arr[443];
v_indices[444] = arr[444];
v_indices[445] = arr[445];
v_indices[446] = arr[446];
v_indices[447] = arr[447];
v_indices[448] = arr[448];
v_indices[449] = arr[449];
v_indices[450] = arr[450];
v_indices[451] = arr[451];
v_indices[452] = arr[452];
v_indices[453] = arr[453];
v_indices[454] = arr[454];
v_indices[455] = arr[455];
v_indices[456] = arr[456];
v_indices[457] = arr[457];
v_indices[458] = arr[458];
v_indices[459] = arr[459];
v_indices[460] = arr[460];
v_indices[461] = arr[461];
v_indices[462] = arr[462];
v_indices[463] = arr[463];
v_indices[464] = arr[464];
v_indices[465] = arr[465];
v_indices[466] = arr[466];
v_indices[467] = arr[467];
v_indices[468] = arr[468];
v_indices[469] = arr[469];
v_indices[470] = arr[470];
v_indices[471] = arr[471];
v_indices[472] = arr[472];
v_indices[473] = arr[473];
v_indices[474] = arr[474];
v_indices[475] = arr[475];
v_indices[476] = arr[476];
v_indices[477] = arr[477];
v_indices[478] = arr[478];
v_indices[479] = arr[479];
v_indices[480] = arr[480];
v_indices[481] = arr[481];
v_indices[482] = arr[482];
v_indices[483] = arr[483];
v_indices[484] = arr[484];
v_indices[485] = arr[485];
v_indices[486] = arr[486];
v_indices[487] = arr[487];
v_indices[488] = arr[488];
v_indices[489] = arr[489];
v_indices[490] = arr[490];
v_indices[491] = arr[491];
v_indices[492] = arr[492];
v_indices[493] = arr[493];
v_indices[494] = arr[494];
v_indices[495] = arr[495];
v_indices[496] = arr[496];
v_indices[497] = arr[497];
v_indices[498] = arr[498];
v_indices[499] = arr[499];
v_indices[500] = arr[500];
v_indices[501] = arr[501];
v_indices[502] = arr[502];
v_indices[503] = arr[503];
v_indices[504] = arr[504];
v_indices[505] = arr[505];
v_indices[506] = arr[506];
v_indices[507] = arr[507];
v_indices[508] = arr[508];
v_indices[509] = arr[509];
v_indices[510] = arr[510];
v_indices[511] = arr[511];
v_indices[512] = arr[512];
v_indices[513] = arr[513];
v_indices[514] = arr[514];
v_indices[515] = arr[515];
v_indices[516] = arr[516];
v_indices[517] = arr[517];
v_indices[518] = arr[518];
v_indices[519] = arr[519];
v_indices[520] = arr[520];
v_indices[521] = arr[521];
v_indices[522] = arr[522];
v_indices[523] = arr[523];
v_indices[524] = arr[524];
v_indices[525] = arr[525];
v_indices[526] = arr[526];
v_indices[527] = arr[527];
v_indices[528] = arr[528];
v_indices[529] = arr[529];
v_indices[530] = arr[530];
v_indices[531] = arr[531];
v_indices[532] = arr[532];
v_indices[533] = arr[533];
v_indices[534] = arr[534];
v_indices[535] = arr[535];
v_indices[536] = arr[536];
v_indices[537] = arr[537];
v_indices[538] = arr[538];
v_indices[539] = arr[539];
v_indices[540] = arr[540];
v_indices[541] = arr[541];
v_indices[542] = arr[542];
v_indices[543] = arr[543];
v_indices[544] = arr[544];
v_indices[545] = arr[545];
v_indices[546] = arr[546];
v_indices[547] = arr[547];
v_indices[548] = arr[548];
v_indices[549] = arr[549];
v_indices[550] = arr[550];
v_indices[551] = arr[551];
v_indices[552] = arr[552];
v_indices[553] = arr[553];
v_indices[554] = arr[554];
v_indices[555] = arr[555];
v_indices[556] = arr[556];
v_indices[557] = arr[557];
v_indices[558] = arr[558];
v_indices[559] = arr[559];
v_indices[560] = arr[560];
v_indices[561] = arr[561];
v_indices[562] = arr[562];
v_indices[563] = arr[563];
v_indices[564] = arr[564];
v_indices[565] = arr[565];
v_indices[566] = arr[566];
v_indices[567] = arr[567];
v_indices[568] = arr[568];
v_indices[569] = arr[569];
v_indices[570] = arr[570];
v_indices[571] = arr[571];
v_indices[572] = arr[572];
v_indices[573] = arr[573];
v_indices[574] = arr[574];
v_indices[575] = arr[575];
v_indices[576] = arr[576];
v_indices[577] = arr[577];
v_indices[578] = arr[578];
v_indices[579] = arr[579];
v_indices[580] = arr[580];
v_indices[581] = arr[581];
v_indices[582] = arr[582];
v_indices[583] = arr[583];
v_indices[584] = arr[584];
v_indices[585] = arr[585];
v_indices[586] = arr[586];
v_indices[587] = arr[587];
v_indices[588] = arr[588];
v_indices[589] = arr[589];
v_indices[590] = arr[590];
v_indices[591] = arr[591];
v_indices[592] = arr[592];
v_indices[593] = arr[593];
v_indices[594] = arr[594];
v_indices[595] = arr[595];
v_indices[596] = arr[596];
v_indices[597] = arr[597];
v_indices[598] = arr[598];
v_indices[599] = arr[599];
v_indices[600] = arr[600];
v_indices[601] = arr[601];
v_indices[602] = arr[602];
v_indices[603] = arr[603];
v_indices[604] = arr[604];
v_indices[605] = arr[605];
v_indices[606] = arr[606];
v_indices[607] = arr[607];
v_indices[608] = arr[608];
v_indices[609] = arr[609];
v_indices[610] = arr[610];
v_indices[611] = arr[611];
v_indices[612] = arr[612];
v_indices[613] = arr[613];
v_indices[614] = arr[614];
v_indices[615] = arr[615];
v_indices[616] = arr[616];
v_indices[617] = arr[617];
v_indices[618] = arr[618];
v_indices[619] = arr[619];
v_indices[620] = arr[620];
v_indices[621] = arr[621];
v_indices[622] = arr[622];
v_indices[623] = arr[623];
v_indices[624] = arr[624];
v_indices[625] = arr[625];
v_indices[626] = arr[626];
v_indices[627] = arr[627];
v_indices[628] = arr[628];
v_indices[629] = arr[629];
v_indices[630] = arr[630];
v_indices[631] = arr[631];
v_indices[632] = arr[632];
v_indices[633] = arr[633];
v_indices[634] = arr[634];
v_indices[635] = arr[635];
v_indices[636] = arr[636];
v_indices[637] = arr[637];
v_indices[638] = arr[638];
v_indices[639] = arr[639];
v_indices[640] = arr[640];
v_indices[641] = arr[641];
v_indices[642] = arr[642];
v_indices[643] = arr[643];
v_indices[644] = arr[644];
v_indices[645] = arr[645];
v_indices[646] = arr[646];
v_indices[647] = arr[647];
v_indices[648] = arr[648];
v_indices[649] = arr[649];
v_indices[650] = arr[650];
v_indices[651] = arr[651];
v_indices[652] = arr[652];
v_indices[653] = arr[653];
v_indices[654] = arr[654];
v_indices[655] = arr[655];
v_indices[656] = arr[656];
v_indices[657] = arr[657];
v_indices[658] = arr[658];
v_indices[659] = arr[659];
v_indices[660] = arr[660];
v_indices[661] = arr[661];
v_indices[662] = arr[662];
v_indices[663] = arr[663];
v_indices[664] = arr[664];
v_indices[665] = arr[665];
v_indices[666] = arr[666];
v_indices[667] = arr[667];
v_indices[668] = arr[668];
v_indices[669] = arr[669];
v_indices[670] = arr[670];
v_indices[671] = arr[671];
v_indices[672] = arr[672];
v_indices[673] = arr[673];
v_indices[674] = arr[674];
v_indices[675] = arr[675];
v_indices[676] = arr[676];
v_indices[677] = arr[677];
v_indices[678] = arr[678];
v_indices[679] = arr[679];
v_indices[680] = arr[680];
v_indices[681] = arr[681];
v_indices[682] = arr[682];
v_indices[683] = arr[683];
v_indices[684] = arr[684];
v_indices[685] = arr[685];
v_indices[686] = arr[686];
v_indices[687] = arr[687];
v_indices[688] = arr[688];
v_indices[689] = arr[689];
v_indices[690] = arr[690];
v_indices[691] = arr[691];
v_indices[692] = arr[692];
v_indices[693] = arr[693];
v_indices[694] = arr[694];
v_indices[695] = arr[695];
v_indices[696] = arr[696];
v_indices[697] = arr[697];
v_indices[698] = arr[698];
v_indices[699] = arr[699];
v_indices[700] = arr[700];
v_indices[701] = arr[701];
v_indices[702] = arr[702];
v_indices[703] = arr[703];
v_indices[704] = arr[704];
v_indices[705] = arr[705];
v_indices[706] = arr[706];
v_indices[707] = arr[707];
v_indices[708] = arr[708];
v_indices[709] = arr[709];
v_indices[710] = arr[710];
v_indices[711] = arr[711];
v_indices[712] = arr[712];
v_indices[713] = arr[713];
v_indices[714] = arr[714];
v_indices[715] = arr[715];
v_indices[716] = arr[716];
v_indices[717] = arr[717];
v_indices[718] = arr[718];
v_indices[719] = arr[719];
v_indices[720] = arr[720];
v_indices[721] = arr[721];
v_indices[722] = arr[722];
v_indices[723] = arr[723];
v_indices[724] = arr[724];
v_indices[725] = arr[725];
v_indices[726] = arr[726];
v_indices[727] = arr[727];
v_indices[728] = arr[728];
v_indices[729] = arr[729];
v_indices[730] = arr[730];
v_indices[731] = arr[731];
v_indices[732] = arr[732];
v_indices[733] = arr[733];
v_indices[734] = arr[734];
v_indices[735] = arr[735];
v_indices[736] = arr[736];
v_indices[737] = arr[737];
v_indices[738] = arr[738];
v_indices[739] = arr[739];
v_indices[740] = arr[740];
v_indices[741] = arr[741];
v_indices[742] = arr[742];
v_indices[743] = arr[743];
v_indices[744] = arr[744];
v_indices[745] = arr[745];
v_indices[746] = arr[746];
v_indices[747] = arr[747];
v_indices[748] = arr[748];
v_indices[749] = arr[749];
v_indices[750] = arr[750];
v_indices[751] = arr[751];
v_indices[752] = arr[752];
v_indices[753] = arr[753];
v_indices[754] = arr[754];
v_indices[755] = arr[755];
v_indices[756] = arr[756];
v_indices[757] = arr[757];
v_indices[758] = arr[758];
v_indices[759] = arr[759];
v_indices[760] = arr[760];
v_indices[761] = arr[761];
v_indices[762] = arr[762];
v_indices[763] = arr[763];
v_indices[764] = arr[764];
v_indices[765] = arr[765];
v_indices[766] = arr[766];
v_indices[767] = arr[767];
v_indices[768] = arr[768];
v_indices[769] = arr[769];
v_indices[770] = arr[770];
v_indices[771] = arr[771];
v_indices[772] = arr[772];
v_indices[773] = arr[773];
v_indices[774] = arr[774];
v_indices[775] = arr[775];
v_indices[776] = arr[776];
v_indices[777] = arr[777];
v_indices[778] = arr[778];
v_indices[779] = arr[779];
v_indices[780] = arr[780];
v_indices[781] = arr[781];
v_indices[782] = arr[782];
v_indices[783] = arr[783];
v_indices[784] = arr[784];
v_indices[785] = arr[785];
v_indices[786] = arr[786];
v_indices[787] = arr[787];
v_indices[788] = arr[788];
v_indices[789] = arr[789];
v_indices[790] = arr[790];
v_indices[791] = arr[791];
v_indices[792] = arr[792];
v_indices[793] = arr[793];
v_indices[794] = arr[794];
v_indices[795] = arr[795];
v_indices[796] = arr[796];
v_indices[797] = arr[797];
v_indices[798] = arr[798];
v_indices[799] = arr[799];
v_indices[800] = arr[800];
v_indices[801] = arr[801];
v_indices[802] = arr[802];
v_indices[803] = arr[803];
v_indices[804] = arr[804];
v_indices[805] = arr[805];
v_indices[806] = arr[806];
v_indices[807] = arr[807];
v_indices[808] = arr[808];
v_indices[809] = arr[809];
v_indices[810] = arr[810];
v_indices[811] = arr[811];
v_indices[812] = arr[812];
v_indices[813] = arr[813];
v_indices[814] = arr[814];
v_indices[815] = arr[815];
v_indices[816] = arr[816];
v_indices[817] = arr[817];
v_indices[818] = arr[818];
v_indices[819] = arr[819];
v_indices[820] = arr[820];
v_indices[821] = arr[821];
v_indices[822] = arr[822];
v_indices[823] = arr[823];
v_indices[824] = arr[824];
v_indices[825] = arr[825];
v_indices[826] = arr[826];
v_indices[827] = arr[827];
v_indices[828] = arr[828];
v_indices[829] = arr[829];
v_indices[830] = arr[830];
v_indices[831] = arr[831];
v_indices[832] = arr[832];
v_indices[833] = arr[833];
v_indices[834] = arr[834];
v_indices[835] = arr[835];
v_indices[836] = arr[836];
v_indices[837] = arr[837];
v_indices[838] = arr[838];
v_indices[839] = arr[839];
v_indices[840] = arr[840];
v_indices[841] = arr[841];
v_indices[842] = arr[842];
v_indices[843] = arr[843];
v_indices[844] = arr[844];
v_indices[845] = arr[845];
v_indices[846] = arr[846];
v_indices[847] = arr[847];
v_indices[848] = arr[848];
v_indices[849] = arr[849];
v_indices[850] = arr[850];
v_indices[851] = arr[851];
v_indices[852] = arr[852];
v_indices[853] = arr[853];
v_indices[854] = arr[854];
v_indices[855] = arr[855];
v_indices[856] = arr[856];
v_indices[857] = arr[857];
v_indices[858] = arr[858];
v_indices[859] = arr[859];
v_indices[860] = arr[860];
v_indices[861] = arr[861];
v_indices[862] = arr[862];
v_indices[863] = arr[863];
v_indices[864] = arr[864];
v_indices[865] = arr[865];
v_indices[866] = arr[866];
v_indices[867] = arr[867];
v_indices[868] = arr[868];
v_indices[869] = arr[869];
v_indices[870] = arr[870];
v_indices[871] = arr[871];
v_indices[872] = arr[872];
v_indices[873] = arr[873];
v_indices[874] = arr[874];
v_indices[875] = arr[875];
v_indices[876] = arr[876];
v_indices[877] = arr[877];
v_indices[878] = arr[878];
v_indices[879] = arr[879];
v_indices[880] = arr[880];
v_indices[881] = arr[881];
v_indices[882] = arr[882];
v_indices[883] = arr[883];
v_indices[884] = arr[884];
v_indices[885] = arr[885];
v_indices[886] = arr[886];
v_indices[887] = arr[887];
v_indices[888] = arr[888];
v_indices[889] = arr[889];
v_indices[890] = arr[890];
v_indices[891] = arr[891];
v_indices[892] = arr[892];
v_indices[893] = arr[893];
v_indices[894] = arr[894];
v_indices[895] = arr[895];
v_indices[896] = arr[896];
v_indices[897] = arr[897];
v_indices[898] = arr[898];
v_indices[899] = arr[899];
v_indices[900] = arr[900];
v_indices[901] = arr[901];
v_indices[902] = arr[902];
v_indices[903] = arr[903];
v_indices[904] = arr[904];
v_indices[905] = arr[905];
v_indices[906] = arr[906];
v_indices[907] = arr[907];
v_indices[908] = arr[908];
v_indices[909] = arr[909];
v_indices[910] = arr[910];
v_indices[911] = arr[911];
v_indices[912] = arr[912];
v_indices[913] = arr[913];
v_indices[914] = arr[914];
v_indices[915] = arr[915];
v_indices[916] = arr[916];
v_indices[917] = arr[917];
v_indices[918] = arr[918];
v_indices[919] = arr[919];
v_indices[920] = arr[920];
v_indices[921] = arr[921];
v_indices[922] = arr[922];
v_indices[923] = arr[923];
v_indices[924] = arr[924];
v_indices[925] = arr[925];
v_indices[926] = arr[926];
v_indices[927] = arr[927];
v_indices[928] = arr[928];
v_indices[929] = arr[929];
v_indices[930] = arr[930];
v_indices[931] = arr[931];
v_indices[932] = arr[932];
v_indices[933] = arr[933];
v_indices[934] = arr[934];
v_indices[935] = arr[935];
v_indices[936] = arr[936];
v_indices[937] = arr[937];
v_indices[938] = arr[938];
v_indices[939] = arr[939];
v_indices[940] = arr[940];
v_indices[941] = arr[941];
v_indices[942] = arr[942];
v_indices[943] = arr[943];
v_indices[944] = arr[944];
v_indices[945] = arr[945];
v_indices[946] = arr[946];
v_indices[947] = arr[947];
v_indices[948] = arr[948];
v_indices[949] = arr[949];
v_indices[950] = arr[950];
v_indices[951] = arr[951];
v_indices[952] = arr[952];
v_indices[953] = arr[953];
v_indices[954] = arr[954];
v_indices[955] = arr[955];
v_indices[956] = arr[956];
v_indices[957] = arr[957];
v_indices[958] = arr[958];
v_indices[959] = arr[959];
v_indices[960] = arr[960];
v_indices[961] = arr[961];
v_indices[962] = arr[962];
v_indices[963] = arr[963];
v_indices[964] = arr[964];
v_indices[965] = arr[965];
v_indices[966] = arr[966];
v_indices[967] = arr[967];
v_indices[968] = arr[968];
v_indices[969] = arr[969];
v_indices[970] = arr[970];
v_indices[971] = arr[971];
v_indices[972] = arr[972];
v_indices[973] = arr[973];
v_indices[974] = arr[974];
v_indices[975] = arr[975];
v_indices[976] = arr[976];
v_indices[977] = arr[977];
v_indices[978] = arr[978];
v_indices[979] = arr[979];
v_indices[980] = arr[980];
v_indices[981] = arr[981];
v_indices[982] = arr[982];
v_indices[983] = arr[983];
v_indices[984] = arr[984];
v_indices[985] = arr[985];
v_indices[986] = arr[986];
v_indices[987] = arr[987];
v_indices[988] = arr[988];
v_indices[989] = arr[989];
v_indices[990] = arr[990];
v_indices[991] = arr[991];
v_indices[992] = arr[992];
v_indices[993] = arr[993];
v_indices[994] = arr[994];
v_indices[995] = arr[995];
v_indices[996] = arr[996];
v_indices[997] = arr[997];
v_indices[998] = arr[998];
v_indices[999] = arr[999];
}
あれ
goから越境してrustやるの嫌じゃな~~~。
そもそも、wgpuのレポジトリ見てても動かし方がよくわからん。
なんとなくIssueをcompute shader
で検索して眺めてみる。すでにIssueが出てれば幸甚。
なかったわ。一般的には巨大シェーダーを動かす動機がないらしい。
wgpuのレポジトリにExampleを発見したので動かしてみる。
wgpuでboidsが動いた。やったねたえちゃん!
巨大シェーダー実証の元としてhello-computeが良さそう。コードが簡単。見覚えもある。
サクッとシェーダーを書き換えてみたら動いた。いいぞ。
条件分岐が1万行の巨大シェーダーを試してみた結果、wgpuにおいてはそんなに時間がかからない。500msとかそんなもん。じゃあRustでwgpu使って遺伝的プログラミングすればええやんという判断が浮かび上がってくるが、Rust難しすぎてあれなのであれ。覚悟を決めるのに1週間ぐらいかかるやつ。
とはいえ現状は wgpu → wgpu-native → go-webgpu という依存をしており、wgpuを直接ぶったたくよりも隔靴搔痒となる。依存しているコードがどこでどう変わるかもわからない。wgpuはブラウザでも使われているらしいので、多分大丈夫だろう。
本丸の遺伝的プログラミングのコードは2000行程度なので、1週間もあれば行ける気がする。Rustを理解できれば。
その前にgo-webgpuをアップデートすべく、go get -u
を叩く。よし、最新版でも直ってない。wgpuに乗り換えだ。
遺伝的プログラミングのコード全部を書き換えるのは骨が折れる。泣く。なので、wgpuを叩く部分だけRustで書けばええんちゃうんかという判断が生えてくる。『wgpu-go』や。
念のためにgoでもrustで動かしたのとまったく同じシェーダーを実行してみる。いや、普通に動く。先生……!これは……!条件分岐の数がCreateComputePipelineの処理時間に影響していると思われていたが、実はそうではなかった可能性が高い。Rustのwgpuで行った検証も不十分だった可能性が高い。
配列アクセスが悪いのではないかと思い至り、配列利用型巨大WGSLシェーダーを動かしてみたが普通に動く。機序がわからん。キショい。
関数実行が悪いのではないかと思い至り、配列及関数利用型巨大WGSLシェーダーを動かしてみたが普通に動く。静的だと最適化してないかこいつ。
関数がインライン展開されている気がしてきた。多分。わからんけど。そう考えると、関数の再起呼び出しができないのも、配列の添え字に変数が使えないのもしっくりくる。
「気晴らしにcompute.toysとか言うので遊んでみるかぁ」つって、何気なく配列の添え字に変数を入れてみたところ、なんと動いた。はぁ?じゃあっつって、最新版のgo-webgpuだとどうなんのよって試したら配列の添え字に変数を入れても動く。CreatePipelineも300ms以内に終わる。はぁ???今までの苦労は何だったんだ。3日返してほしい。
なお、最新版が出てきたのは5 days agoである。タイムリー。