From b47b2e022bfa74cd94d3296aae6bd34ca4afff02 Mon Sep 17 00:00:00 2001 From: tech kaczynski Date: Mon, 2 Nov 2026 03:23:17 +1000 Subject: new shaders for foliage, new material settings, added lots of assets. --- editor.c | 113 ++++++++++++- ent.c | 190 +++++++++++++++++----- ent.h | 1 + env.c | 17 +- res.c | 19 ++- res/mdl/fun_game_nimbin_buildings.glb | Bin 0 -> 305940 bytes res/mdl/fun_game_nimbin_roads.glb | Bin 0 -> 215708 bytes res/mdl/fun_game_nimbin_terrain.glb | Bin 0 -> 711820 bytes res/mdl/psx-houses/House_10_1.glb | Bin 0 -> 599200 bytes res/mdl/psx-houses/House_10_10.glb | Bin 0 -> 586548 bytes res/mdl/psx-houses/House_10_2.glb | Bin 0 -> 604484 bytes res/mdl/psx-houses/House_10_3.glb | Bin 0 -> 592076 bytes res/mdl/psx-houses/House_10_4.glb | Bin 0 -> 602352 bytes res/mdl/psx-houses/House_10_5.glb | Bin 0 -> 591816 bytes res/mdl/psx-houses/House_10_6.glb | Bin 0 -> 591644 bytes res/mdl/psx-houses/House_10_7.glb | Bin 0 -> 586192 bytes res/mdl/psx-houses/House_10_8.glb | Bin 0 -> 590348 bytes res/mdl/psx-houses/House_10_9.glb | Bin 0 -> 595648 bytes res/mdl/psx-houses/House_1_1.glb | Bin 0 -> 574104 bytes res/mdl/psx-houses/House_1_10.glb | Bin 0 -> 561712 bytes res/mdl/psx-houses/House_1_2.glb | Bin 0 -> 578656 bytes res/mdl/psx-houses/House_1_3.glb | Bin 0 -> 566980 bytes res/mdl/psx-houses/House_1_4.glb | Bin 0 -> 577576 bytes res/mdl/psx-houses/House_1_5.glb | Bin 0 -> 566976 bytes res/mdl/psx-houses/House_1_6.glb | Bin 0 -> 566808 bytes res/mdl/psx-houses/House_1_7.glb | Bin 0 -> 561356 bytes res/mdl/psx-houses/House_1_8.glb | Bin 0 -> 565512 bytes res/mdl/psx-houses/House_1_9.glb | Bin 0 -> 570936 bytes res/mdl/psx-houses/House_2_1.glb | Bin 0 -> 526164 bytes res/mdl/psx-houses/House_2_10.glb | Bin 0 -> 513512 bytes res/mdl/psx-houses/House_2_2.glb | Bin 0 -> 531448 bytes res/mdl/psx-houses/House_2_3.glb | Bin 0 -> 519040 bytes res/mdl/psx-houses/House_2_4.glb | Bin 0 -> 529316 bytes res/mdl/psx-houses/House_2_5.glb | Bin 0 -> 518780 bytes res/mdl/psx-houses/House_2_6.glb | Bin 0 -> 518608 bytes res/mdl/psx-houses/House_2_7.glb | Bin 0 -> 513160 bytes res/mdl/psx-houses/House_2_8.glb | Bin 0 -> 517312 bytes res/mdl/psx-houses/House_2_9.glb | Bin 0 -> 522612 bytes res/mdl/psx-houses/House_3_1.glb | Bin 0 -> 441492 bytes res/mdl/psx-houses/House_3_10.glb | Bin 0 -> 428844 bytes res/mdl/psx-houses/House_3_2.glb | Bin 0 -> 446780 bytes res/mdl/psx-houses/House_3_3.glb | Bin 0 -> 434372 bytes res/mdl/psx-houses/House_3_4.glb | Bin 0 -> 444648 bytes res/mdl/psx-houses/House_3_5.glb | Bin 0 -> 434112 bytes res/mdl/psx-houses/House_3_6.glb | Bin 0 -> 433940 bytes res/mdl/psx-houses/House_3_7.glb | Bin 0 -> 428488 bytes res/mdl/psx-houses/House_3_8.glb | Bin 0 -> 432644 bytes res/mdl/psx-houses/House_3_9.glb | Bin 0 -> 437944 bytes res/mdl/psx-houses/House_4_1.glb | Bin 0 -> 521852 bytes res/mdl/psx-houses/House_4_10.glb | Bin 0 -> 509200 bytes res/mdl/psx-houses/House_4_2.glb | Bin 0 -> 527140 bytes res/mdl/psx-houses/House_4_3.glb | Bin 0 -> 514728 bytes res/mdl/psx-houses/House_4_4.glb | Bin 0 -> 525008 bytes res/mdl/psx-houses/House_4_5.glb | Bin 0 -> 514468 bytes res/mdl/psx-houses/House_4_6.glb | Bin 0 -> 514300 bytes res/mdl/psx-houses/House_4_7.glb | Bin 0 -> 508848 bytes res/mdl/psx-houses/House_4_8.glb | Bin 0 -> 513004 bytes res/mdl/psx-houses/House_4_9.glb | Bin 0 -> 518300 bytes res/mdl/psx-houses/House_5_1.glb | Bin 0 -> 518840 bytes res/mdl/psx-houses/House_5_10.glb | Bin 0 -> 506188 bytes res/mdl/psx-houses/House_5_2.glb | Bin 0 -> 524124 bytes res/mdl/psx-houses/House_5_3.glb | Bin 0 -> 511716 bytes res/mdl/psx-houses/House_5_4.glb | Bin 0 -> 521992 bytes res/mdl/psx-houses/House_5_5.glb | Bin 0 -> 511456 bytes res/mdl/psx-houses/House_5_6.glb | Bin 0 -> 511284 bytes res/mdl/psx-houses/House_5_7.glb | Bin 0 -> 505836 bytes res/mdl/psx-houses/House_5_8.glb | Bin 0 -> 509988 bytes res/mdl/psx-houses/House_5_9.glb | Bin 0 -> 515288 bytes res/mdl/psx-houses/House_6_1.glb | Bin 0 -> 533624 bytes res/mdl/psx-houses/House_6_10.glb | Bin 0 -> 521008 bytes res/mdl/psx-houses/House_6_2.glb | Bin 0 -> 538944 bytes res/mdl/psx-houses/House_6_3.glb | Bin 0 -> 526536 bytes res/mdl/psx-houses/House_6_4.glb | Bin 0 -> 536812 bytes res/mdl/psx-houses/House_6_5.glb | Bin 0 -> 526272 bytes res/mdl/psx-houses/House_6_6.glb | Bin 0 -> 526104 bytes res/mdl/psx-houses/House_6_7.glb | Bin 0 -> 520648 bytes res/mdl/psx-houses/House_6_8.glb | Bin 0 -> 524808 bytes res/mdl/psx-houses/House_6_9.glb | Bin 0 -> 530104 bytes res/mdl/psx-houses/House_7_1.glb | Bin 0 -> 529288 bytes res/mdl/psx-houses/House_7_10.glb | Bin 0 -> 516640 bytes res/mdl/psx-houses/House_7_2.glb | Bin 0 -> 534576 bytes res/mdl/psx-houses/House_7_3.glb | Bin 0 -> 522168 bytes res/mdl/psx-houses/House_7_4.glb | Bin 0 -> 532444 bytes res/mdl/psx-houses/House_7_5.glb | Bin 0 -> 521904 bytes res/mdl/psx-houses/House_7_6.glb | Bin 0 -> 521736 bytes res/mdl/psx-houses/House_7_7.glb | Bin 0 -> 516280 bytes res/mdl/psx-houses/House_7_8.glb | Bin 0 -> 520440 bytes res/mdl/psx-houses/House_7_9.glb | Bin 0 -> 525736 bytes res/mdl/psx-houses/House_8_1.glb | Bin 0 -> 520692 bytes res/mdl/psx-houses/House_8_10.glb | Bin 0 -> 508040 bytes res/mdl/psx-houses/House_8_2.glb | Bin 0 -> 525976 bytes res/mdl/psx-houses/House_8_3.glb | Bin 0 -> 513568 bytes res/mdl/psx-houses/House_8_4.glb | Bin 0 -> 523844 bytes res/mdl/psx-houses/House_8_5.glb | Bin 0 -> 513308 bytes res/mdl/psx-houses/House_8_6.glb | Bin 0 -> 513136 bytes res/mdl/psx-houses/House_8_7.glb | Bin 0 -> 507688 bytes res/mdl/psx-houses/House_8_8.glb | Bin 0 -> 511840 bytes res/mdl/psx-houses/House_8_9.glb | Bin 0 -> 517140 bytes res/mdl/psx-houses/House_9_1.glb | Bin 0 -> 557840 bytes res/mdl/psx-houses/House_9_10.glb | Bin 0 -> 545188 bytes res/mdl/psx-houses/House_9_2.glb | Bin 0 -> 563124 bytes res/mdl/psx-houses/House_9_3.glb | Bin 0 -> 550716 bytes res/mdl/psx-houses/House_9_4.glb | Bin 0 -> 560996 bytes res/mdl/psx-houses/House_9_5.glb | Bin 0 -> 550456 bytes res/mdl/psx-houses/House_9_6.glb | Bin 0 -> 550288 bytes res/mdl/psx-houses/House_9_7.glb | Bin 0 -> 544836 bytes res/mdl/psx-houses/House_9_8.glb | Bin 0 -> 548992 bytes res/mdl/psx-houses/House_9_9.glb | Bin 0 -> 554288 bytes res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb | Bin 0 -> 29660 bytes res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb | Bin 0 -> 71448 bytes res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb | Bin 0 -> 49372 bytes res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb | Bin 0 -> 48088 bytes res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb | Bin 0 -> 112068 bytes res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb | Bin 0 -> 84272 bytes res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb | Bin 0 -> 58460 bytes res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb | Bin 0 -> 87352 bytes res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb | Bin 0 -> 42472 bytes res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb | Bin 0 -> 41052 bytes res/mdl/psx-trees/Tree_1.glb | Bin 0 -> 71824 bytes res/mdl/psx-trees/Tree_10.glb | Bin 0 -> 30144 bytes res/mdl/psx-trees/Tree_2.glb | Bin 0 -> 49872 bytes res/mdl/psx-trees/Tree_3.glb | Bin 0 -> 48664 bytes res/mdl/psx-trees/Tree_4.glb | Bin 0 -> 112584 bytes res/mdl/psx-trees/Tree_5.glb | Bin 0 -> 84812 bytes res/mdl/psx-trees/Tree_6.glb | Bin 0 -> 58944 bytes res/mdl/psx-trees/Tree_7.glb | Bin 0 -> 87804 bytes res/mdl/psx-trees/Tree_8.glb | Bin 0 -> 42992 bytes res/mdl/psx-trees/Tree_9.glb | Bin 0 -> 41552 bytes res/save/scene.fgs | Bin 2985 -> 14870 bytes res/sdr/mdl_foliage.vs | 43 +++++ res/sdr/mdl_two_sided_cutoff.fs | 51 ++++++ res/sdr/mdl_vtx_lit.vs | 47 ++---- res/sdr/mdl_vtx_lit_cutoff.fs | 25 +++ res/tex/Aquilarius-TEXTURES/texture1.png | Bin 0 -> 459484 bytes res/tex/Aquilarius-TEXTURES/texture10.png | Bin 0 -> 464696 bytes res/tex/Aquilarius-TEXTURES/texture100.png | Bin 0 -> 9922 bytes res/tex/Aquilarius-TEXTURES/texture101.png | Bin 0 -> 6728 bytes res/tex/Aquilarius-TEXTURES/texture102.png | Bin 0 -> 10856 bytes res/tex/Aquilarius-TEXTURES/texture103.png | Bin 0 -> 7065 bytes res/tex/Aquilarius-TEXTURES/texture104.png | Bin 0 -> 6372 bytes res/tex/Aquilarius-TEXTURES/texture105.png | Bin 0 -> 7580 bytes res/tex/Aquilarius-TEXTURES/texture106.png | Bin 0 -> 4913 bytes res/tex/Aquilarius-TEXTURES/texture107.png | Bin 0 -> 8564 bytes res/tex/Aquilarius-TEXTURES/texture108.png | Bin 0 -> 8353 bytes res/tex/Aquilarius-TEXTURES/texture109.png | Bin 0 -> 6687 bytes res/tex/Aquilarius-TEXTURES/texture11.png | Bin 0 -> 306405 bytes res/tex/Aquilarius-TEXTURES/texture110.png | Bin 0 -> 7348 bytes res/tex/Aquilarius-TEXTURES/texture111.png | Bin 0 -> 8990 bytes res/tex/Aquilarius-TEXTURES/texture112.png | Bin 0 -> 10174 bytes res/tex/Aquilarius-TEXTURES/texture113.png | Bin 0 -> 8654 bytes res/tex/Aquilarius-TEXTURES/texture114.png | Bin 0 -> 7632 bytes res/tex/Aquilarius-TEXTURES/texture115.png | Bin 0 -> 5587 bytes res/tex/Aquilarius-TEXTURES/texture116.png | Bin 0 -> 10369 bytes res/tex/Aquilarius-TEXTURES/texture117.png | Bin 0 -> 7891 bytes res/tex/Aquilarius-TEXTURES/texture118.png | Bin 0 -> 9117 bytes res/tex/Aquilarius-TEXTURES/texture119.png | Bin 0 -> 8870 bytes res/tex/Aquilarius-TEXTURES/texture12.png | Bin 0 -> 157560 bytes res/tex/Aquilarius-TEXTURES/texture121.png | Bin 0 -> 7010 bytes res/tex/Aquilarius-TEXTURES/texture122.png | Bin 0 -> 7838 bytes res/tex/Aquilarius-TEXTURES/texture123.png | Bin 0 -> 8031 bytes res/tex/Aquilarius-TEXTURES/texture124.png | Bin 0 -> 8894 bytes res/tex/Aquilarius-TEXTURES/texture125.png | Bin 0 -> 11036 bytes res/tex/Aquilarius-TEXTURES/texture126.png | Bin 0 -> 10441 bytes res/tex/Aquilarius-TEXTURES/texture127.png | Bin 0 -> 10406 bytes res/tex/Aquilarius-TEXTURES/texture128.png | Bin 0 -> 8985 bytes res/tex/Aquilarius-TEXTURES/texture129.png | Bin 0 -> 10436 bytes res/tex/Aquilarius-TEXTURES/texture13.png | Bin 0 -> 109658 bytes res/tex/Aquilarius-TEXTURES/texture130.png | Bin 0 -> 9176 bytes res/tex/Aquilarius-TEXTURES/texture131.png | Bin 0 -> 7736 bytes res/tex/Aquilarius-TEXTURES/texture132.png | Bin 0 -> 7698 bytes res/tex/Aquilarius-TEXTURES/texture133.png | Bin 0 -> 6287 bytes res/tex/Aquilarius-TEXTURES/texture134.png | Bin 0 -> 37703 bytes res/tex/Aquilarius-TEXTURES/texture135.png | Bin 0 -> 37419 bytes res/tex/Aquilarius-TEXTURES/texture136.png | Bin 0 -> 24683 bytes res/tex/Aquilarius-TEXTURES/texture137.png | Bin 0 -> 19434 bytes res/tex/Aquilarius-TEXTURES/texture138.png | Bin 0 -> 17858 bytes res/tex/Aquilarius-TEXTURES/texture139.png | Bin 0 -> 6070 bytes res/tex/Aquilarius-TEXTURES/texture14.png | Bin 0 -> 292603 bytes res/tex/Aquilarius-TEXTURES/texture140.png | Bin 0 -> 23514 bytes res/tex/Aquilarius-TEXTURES/texture141.png | Bin 0 -> 17441 bytes res/tex/Aquilarius-TEXTURES/texture142.png | Bin 0 -> 30962 bytes res/tex/Aquilarius-TEXTURES/texture143.png | Bin 0 -> 13452 bytes res/tex/Aquilarius-TEXTURES/texture144.png | Bin 0 -> 1300960 bytes res/tex/Aquilarius-TEXTURES/texture145.png | Bin 0 -> 5279 bytes res/tex/Aquilarius-TEXTURES/texture146.png | Bin 0 -> 4670 bytes res/tex/Aquilarius-TEXTURES/texture147.png | Bin 0 -> 5382 bytes res/tex/Aquilarius-TEXTURES/texture148.png | Bin 0 -> 1422 bytes res/tex/Aquilarius-TEXTURES/texture149.png | Bin 0 -> 43148 bytes res/tex/Aquilarius-TEXTURES/texture15.png | Bin 0 -> 120510 bytes res/tex/Aquilarius-TEXTURES/texture150.png | Bin 0 -> 6959 bytes res/tex/Aquilarius-TEXTURES/texture151.png | Bin 0 -> 2467 bytes res/tex/Aquilarius-TEXTURES/texture16.png | Bin 0 -> 134129 bytes res/tex/Aquilarius-TEXTURES/texture17.png | Bin 0 -> 104214 bytes res/tex/Aquilarius-TEXTURES/texture18.png | Bin 0 -> 148525 bytes res/tex/Aquilarius-TEXTURES/texture19.png | Bin 0 -> 39731 bytes res/tex/Aquilarius-TEXTURES/texture2.png | Bin 0 -> 62621 bytes res/tex/Aquilarius-TEXTURES/texture20.png | Bin 0 -> 158170 bytes res/tex/Aquilarius-TEXTURES/texture21.png | Bin 0 -> 150704 bytes res/tex/Aquilarius-TEXTURES/texture22.png | Bin 0 -> 151632 bytes res/tex/Aquilarius-TEXTURES/texture23.png | Bin 0 -> 2458 bytes res/tex/Aquilarius-TEXTURES/texture24.png | Bin 0 -> 2447 bytes res/tex/Aquilarius-TEXTURES/texture25.png | Bin 0 -> 8472 bytes res/tex/Aquilarius-TEXTURES/texture26.png | Bin 0 -> 8374 bytes res/tex/Aquilarius-TEXTURES/texture27.png | Bin 0 -> 3401 bytes res/tex/Aquilarius-TEXTURES/texture28.png | Bin 0 -> 3528 bytes res/tex/Aquilarius-TEXTURES/texture29.png | Bin 0 -> 3400 bytes res/tex/Aquilarius-TEXTURES/texture3.png | Bin 0 -> 298391 bytes res/tex/Aquilarius-TEXTURES/texture30.png | Bin 0 -> 3000 bytes res/tex/Aquilarius-TEXTURES/texture31.png | Bin 0 -> 77657 bytes res/tex/Aquilarius-TEXTURES/texture32.png | Bin 0 -> 72079 bytes res/tex/Aquilarius-TEXTURES/texture33.png | Bin 0 -> 6823 bytes res/tex/Aquilarius-TEXTURES/texture34.png | Bin 0 -> 4135 bytes res/tex/Aquilarius-TEXTURES/texture35.png | Bin 0 -> 4672 bytes res/tex/Aquilarius-TEXTURES/texture36.png | Bin 0 -> 18974 bytes res/tex/Aquilarius-TEXTURES/texture37.png | Bin 0 -> 20916 bytes res/tex/Aquilarius-TEXTURES/texture38.png | Bin 0 -> 20525 bytes res/tex/Aquilarius-TEXTURES/texture39.png | Bin 0 -> 7581 bytes res/tex/Aquilarius-TEXTURES/texture4.png | Bin 0 -> 446944 bytes res/tex/Aquilarius-TEXTURES/texture40.png | Bin 0 -> 4484 bytes res/tex/Aquilarius-TEXTURES/texture41.png | Bin 0 -> 3552 bytes res/tex/Aquilarius-TEXTURES/texture42.png | Bin 0 -> 1895 bytes res/tex/Aquilarius-TEXTURES/texture43.png | Bin 0 -> 21981 bytes res/tex/Aquilarius-TEXTURES/texture44.png | Bin 0 -> 22516 bytes res/tex/Aquilarius-TEXTURES/texture45.png | Bin 0 -> 22011 bytes res/tex/Aquilarius-TEXTURES/texture46.png | Bin 0 -> 29066 bytes res/tex/Aquilarius-TEXTURES/texture47.png | Bin 0 -> 31479 bytes res/tex/Aquilarius-TEXTURES/texture48.png | Bin 0 -> 6302 bytes res/tex/Aquilarius-TEXTURES/texture49.png | Bin 0 -> 107088 bytes res/tex/Aquilarius-TEXTURES/texture5.png | Bin 0 -> 537789 bytes res/tex/Aquilarius-TEXTURES/texture50.png | Bin 0 -> 121833 bytes res/tex/Aquilarius-TEXTURES/texture51.png | Bin 0 -> 91328 bytes res/tex/Aquilarius-TEXTURES/texture52.png | Bin 0 -> 100497 bytes res/tex/Aquilarius-TEXTURES/texture53.png | Bin 0 -> 5591 bytes res/tex/Aquilarius-TEXTURES/texture54.png | Bin 0 -> 7823 bytes res/tex/Aquilarius-TEXTURES/texture55.png | Bin 0 -> 5323 bytes res/tex/Aquilarius-TEXTURES/texture56.png | Bin 0 -> 9583 bytes res/tex/Aquilarius-TEXTURES/texture57.png | Bin 0 -> 26162 bytes res/tex/Aquilarius-TEXTURES/texture58.png | Bin 0 -> 10426 bytes res/tex/Aquilarius-TEXTURES/texture59.png | Bin 0 -> 20151 bytes res/tex/Aquilarius-TEXTURES/texture6.png | Bin 0 -> 382005 bytes res/tex/Aquilarius-TEXTURES/texture60.png | Bin 0 -> 29026 bytes res/tex/Aquilarius-TEXTURES/texture61.png | Bin 0 -> 17282 bytes res/tex/Aquilarius-TEXTURES/texture62.png | Bin 0 -> 61010 bytes res/tex/Aquilarius-TEXTURES/texture63.png | Bin 0 -> 89621 bytes res/tex/Aquilarius-TEXTURES/texture64.png | Bin 0 -> 28929 bytes res/tex/Aquilarius-TEXTURES/texture65.png | Bin 0 -> 34311 bytes res/tex/Aquilarius-TEXTURES/texture66.png | Bin 0 -> 84158 bytes res/tex/Aquilarius-TEXTURES/texture67.png | Bin 0 -> 94625 bytes res/tex/Aquilarius-TEXTURES/texture68.png | Bin 0 -> 20141 bytes res/tex/Aquilarius-TEXTURES/texture69.png | Bin 0 -> 98482 bytes res/tex/Aquilarius-TEXTURES/texture7.png | Bin 0 -> 133949 bytes res/tex/Aquilarius-TEXTURES/texture70.png | Bin 0 -> 35563 bytes res/tex/Aquilarius-TEXTURES/texture71.png | Bin 0 -> 21795 bytes res/tex/Aquilarius-TEXTURES/texture72.png | Bin 0 -> 14719 bytes res/tex/Aquilarius-TEXTURES/texture73.png | Bin 0 -> 28814 bytes res/tex/Aquilarius-TEXTURES/texture74.png | Bin 0 -> 31655 bytes res/tex/Aquilarius-TEXTURES/texture75.png | Bin 0 -> 27346 bytes res/tex/Aquilarius-TEXTURES/texture76.png | Bin 0 -> 33051 bytes res/tex/Aquilarius-TEXTURES/texture77.png | Bin 0 -> 17157 bytes res/tex/Aquilarius-TEXTURES/texture78.png | Bin 0 -> 33252 bytes res/tex/Aquilarius-TEXTURES/texture79.png | Bin 0 -> 30563 bytes res/tex/Aquilarius-TEXTURES/texture8.png | Bin 0 -> 414518 bytes res/tex/Aquilarius-TEXTURES/texture80.png | Bin 0 -> 20570 bytes res/tex/Aquilarius-TEXTURES/texture81.png | Bin 0 -> 20752 bytes res/tex/Aquilarius-TEXTURES/texture82.png | Bin 0 -> 32822 bytes res/tex/Aquilarius-TEXTURES/texture83.png | Bin 0 -> 13729 bytes res/tex/Aquilarius-TEXTURES/texture84.png | Bin 0 -> 11697 bytes res/tex/Aquilarius-TEXTURES/texture85.png | Bin 0 -> 7315 bytes res/tex/Aquilarius-TEXTURES/texture86.png | Bin 0 -> 7409 bytes res/tex/Aquilarius-TEXTURES/texture87.png | Bin 0 -> 26682 bytes res/tex/Aquilarius-TEXTURES/texture88.png | Bin 0 -> 10818 bytes res/tex/Aquilarius-TEXTURES/texture89.png | Bin 0 -> 8909 bytes res/tex/Aquilarius-TEXTURES/texture9.png | Bin 0 -> 106116 bytes res/tex/Aquilarius-TEXTURES/texture90.png | Bin 0 -> 8462 bytes res/tex/Aquilarius-TEXTURES/texture91.png | Bin 0 -> 5468 bytes res/tex/Aquilarius-TEXTURES/texture92.png | Bin 0 -> 86331 bytes res/tex/Aquilarius-TEXTURES/texture93.png | Bin 0 -> 24923 bytes res/tex/Aquilarius-TEXTURES/texture94.png | Bin 0 -> 14292 bytes res/tex/Aquilarius-TEXTURES/texture95.png | Bin 0 -> 6488 bytes res/tex/Aquilarius-TEXTURES/texture96.png | Bin 0 -> 9819 bytes res/tex/Aquilarius-TEXTURES/texture97.png | Bin 0 -> 7847 bytes res/tex/Aquilarius-TEXTURES/texture98.png | Bin 0 -> 10117 bytes res/tex/Aquilarius-TEXTURES/texture99.png | Bin 0 -> 9756 bytes res/tex/Road_Empty.png | Bin 0 -> 15898 bytes res/tex/psx_tex/Grass 1/Grass 1.spp | Bin 0 -> 17860432 bytes res/tex/psx_tex/Grass 1/Grass1_PSX.jpg | Bin 0 -> 40582 bytes res/tex/psx_tex/Grass 1/Grass1_PSX.png | Bin 0 -> 44517 bytes res/tex/psx_tex/Grass 1/Grass1_Texture.jpg | Bin 0 -> 96431 bytes res/tex/psx_tex/Grass 1/Grass1_Texture.png | Bin 0 -> 496408 bytes res/tex/psx_tex/Grass 2/Grass 2.spp | Bin 0 -> 18426390 bytes res/tex/psx_tex/Grass 2/Grass2_PSX.jpg | Bin 0 -> 39767 bytes res/tex/psx_tex/Grass 2/Grass2_PSX.png | Bin 0 -> 43991 bytes res/tex/psx_tex/Grass 2/Grass2_Texture.jpg | Bin 0 -> 55709 bytes res/tex/psx_tex/Grass 2/Grass2_Texture.png | Bin 0 -> 343854 bytes res/tex/psx_tex/Grass 3/Grass 3.spp | Bin 0 -> 18425790 bytes res/tex/psx_tex/Grass 3/Grass3_PSX.jpg | Bin 0 -> 39990 bytes res/tex/psx_tex/Grass 3/Grass3_PSX.png | Bin 0 -> 44237 bytes res/tex/psx_tex/Grass 3/Grass3_Texture.jpg | Bin 0 -> 57984 bytes res/tex/psx_tex/Grass 3/Grass3_Texture.png | Bin 0 -> 348880 bytes res/tex/psx_tex/Grass 4/Grass 4.spp | Bin 0 -> 18294959 bytes res/tex/psx_tex/Grass 4/Grass4_PSX.jpg | Bin 0 -> 35731 bytes res/tex/psx_tex/Grass 4/Grass4_PSX.png | Bin 0 -> 40714 bytes res/tex/psx_tex/Grass 4/Grass4_Texture.jpg | Bin 0 -> 30563 bytes res/tex/psx_tex/Grass 4/Grass4_Texture.png | Bin 0 -> 201643 bytes res/tex/psx_tex/Grass 5/Grass 5.spp | Bin 0 -> 18097804 bytes res/tex/psx_tex/Grass 5/Grass5_PSX.jpg | Bin 0 -> 37008 bytes res/tex/psx_tex/Grass 5/Grass5_PSX.png | Bin 0 -> 41943 bytes res/tex/psx_tex/Grass 5/Grass5_Texture.jpg | Bin 0 -> 43298 bytes res/tex/psx_tex/Grass 5/Grass5_Texture.png | Bin 0 -> 265946 bytes save.c | 143 +++++++++++++++- 310 files changed, 556 insertions(+), 93 deletions(-) create mode 100644 res/mdl/fun_game_nimbin_buildings.glb create mode 100644 res/mdl/fun_game_nimbin_roads.glb create mode 100644 res/mdl/fun_game_nimbin_terrain.glb create mode 100644 res/mdl/psx-houses/House_10_1.glb create mode 100644 res/mdl/psx-houses/House_10_10.glb create mode 100644 res/mdl/psx-houses/House_10_2.glb create mode 100644 res/mdl/psx-houses/House_10_3.glb create mode 100644 res/mdl/psx-houses/House_10_4.glb create mode 100644 res/mdl/psx-houses/House_10_5.glb create mode 100644 res/mdl/psx-houses/House_10_6.glb create mode 100644 res/mdl/psx-houses/House_10_7.glb create mode 100644 res/mdl/psx-houses/House_10_8.glb create mode 100644 res/mdl/psx-houses/House_10_9.glb create mode 100644 res/mdl/psx-houses/House_1_1.glb create mode 100644 res/mdl/psx-houses/House_1_10.glb create mode 100644 res/mdl/psx-houses/House_1_2.glb create mode 100644 res/mdl/psx-houses/House_1_3.glb create mode 100644 res/mdl/psx-houses/House_1_4.glb create mode 100644 res/mdl/psx-houses/House_1_5.glb create mode 100644 res/mdl/psx-houses/House_1_6.glb create mode 100644 res/mdl/psx-houses/House_1_7.glb create mode 100644 res/mdl/psx-houses/House_1_8.glb create mode 100644 res/mdl/psx-houses/House_1_9.glb create mode 100644 res/mdl/psx-houses/House_2_1.glb create mode 100644 res/mdl/psx-houses/House_2_10.glb create mode 100644 res/mdl/psx-houses/House_2_2.glb create mode 100644 res/mdl/psx-houses/House_2_3.glb create mode 100644 res/mdl/psx-houses/House_2_4.glb create mode 100644 res/mdl/psx-houses/House_2_5.glb create mode 100644 res/mdl/psx-houses/House_2_6.glb create mode 100644 res/mdl/psx-houses/House_2_7.glb create mode 100644 res/mdl/psx-houses/House_2_8.glb create mode 100644 res/mdl/psx-houses/House_2_9.glb create mode 100644 res/mdl/psx-houses/House_3_1.glb create mode 100644 res/mdl/psx-houses/House_3_10.glb create mode 100644 res/mdl/psx-houses/House_3_2.glb create mode 100644 res/mdl/psx-houses/House_3_3.glb create mode 100644 res/mdl/psx-houses/House_3_4.glb create mode 100644 res/mdl/psx-houses/House_3_5.glb create mode 100644 res/mdl/psx-houses/House_3_6.glb create mode 100644 res/mdl/psx-houses/House_3_7.glb create mode 100644 res/mdl/psx-houses/House_3_8.glb create mode 100644 res/mdl/psx-houses/House_3_9.glb create mode 100644 res/mdl/psx-houses/House_4_1.glb create mode 100644 res/mdl/psx-houses/House_4_10.glb create mode 100644 res/mdl/psx-houses/House_4_2.glb create mode 100644 res/mdl/psx-houses/House_4_3.glb create mode 100644 res/mdl/psx-houses/House_4_4.glb create mode 100644 res/mdl/psx-houses/House_4_5.glb create mode 100644 res/mdl/psx-houses/House_4_6.glb create mode 100644 res/mdl/psx-houses/House_4_7.glb create mode 100644 res/mdl/psx-houses/House_4_8.glb create mode 100644 res/mdl/psx-houses/House_4_9.glb create mode 100644 res/mdl/psx-houses/House_5_1.glb create mode 100644 res/mdl/psx-houses/House_5_10.glb create mode 100644 res/mdl/psx-houses/House_5_2.glb create mode 100644 res/mdl/psx-houses/House_5_3.glb create mode 100644 res/mdl/psx-houses/House_5_4.glb create mode 100644 res/mdl/psx-houses/House_5_5.glb create mode 100644 res/mdl/psx-houses/House_5_6.glb create mode 100644 res/mdl/psx-houses/House_5_7.glb create mode 100644 res/mdl/psx-houses/House_5_8.glb create mode 100644 res/mdl/psx-houses/House_5_9.glb create mode 100644 res/mdl/psx-houses/House_6_1.glb create mode 100644 res/mdl/psx-houses/House_6_10.glb create mode 100644 res/mdl/psx-houses/House_6_2.glb create mode 100644 res/mdl/psx-houses/House_6_3.glb create mode 100644 res/mdl/psx-houses/House_6_4.glb create mode 100644 res/mdl/psx-houses/House_6_5.glb create mode 100644 res/mdl/psx-houses/House_6_6.glb create mode 100644 res/mdl/psx-houses/House_6_7.glb create mode 100644 res/mdl/psx-houses/House_6_8.glb create mode 100644 res/mdl/psx-houses/House_6_9.glb create mode 100644 res/mdl/psx-houses/House_7_1.glb create mode 100644 res/mdl/psx-houses/House_7_10.glb create mode 100644 res/mdl/psx-houses/House_7_2.glb create mode 100644 res/mdl/psx-houses/House_7_3.glb create mode 100644 res/mdl/psx-houses/House_7_4.glb create mode 100644 res/mdl/psx-houses/House_7_5.glb create mode 100644 res/mdl/psx-houses/House_7_6.glb create mode 100644 res/mdl/psx-houses/House_7_7.glb create mode 100644 res/mdl/psx-houses/House_7_8.glb create mode 100644 res/mdl/psx-houses/House_7_9.glb create mode 100644 res/mdl/psx-houses/House_8_1.glb create mode 100644 res/mdl/psx-houses/House_8_10.glb create mode 100644 res/mdl/psx-houses/House_8_2.glb create mode 100644 res/mdl/psx-houses/House_8_3.glb create mode 100644 res/mdl/psx-houses/House_8_4.glb create mode 100644 res/mdl/psx-houses/House_8_5.glb create mode 100644 res/mdl/psx-houses/House_8_6.glb create mode 100644 res/mdl/psx-houses/House_8_7.glb create mode 100644 res/mdl/psx-houses/House_8_8.glb create mode 100644 res/mdl/psx-houses/House_8_9.glb create mode 100644 res/mdl/psx-houses/House_9_1.glb create mode 100644 res/mdl/psx-houses/House_9_10.glb create mode 100644 res/mdl/psx-houses/House_9_2.glb create mode 100644 res/mdl/psx-houses/House_9_3.glb create mode 100644 res/mdl/psx-houses/House_9_4.glb create mode 100644 res/mdl/psx-houses/House_9_5.glb create mode 100644 res/mdl/psx-houses/House_9_6.glb create mode 100644 res/mdl/psx-houses/House_9_7.glb create mode 100644 res/mdl/psx-houses/House_9_8.glb create mode 100644 res/mdl/psx-houses/House_9_9.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb create mode 100644 res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb create mode 100644 res/mdl/psx-trees/Tree_1.glb create mode 100644 res/mdl/psx-trees/Tree_10.glb create mode 100644 res/mdl/psx-trees/Tree_2.glb create mode 100644 res/mdl/psx-trees/Tree_3.glb create mode 100644 res/mdl/psx-trees/Tree_4.glb create mode 100644 res/mdl/psx-trees/Tree_5.glb create mode 100644 res/mdl/psx-trees/Tree_6.glb create mode 100644 res/mdl/psx-trees/Tree_7.glb create mode 100644 res/mdl/psx-trees/Tree_8.glb create mode 100644 res/mdl/psx-trees/Tree_9.glb create mode 100644 res/sdr/mdl_foliage.vs create mode 100644 res/sdr/mdl_two_sided_cutoff.fs create mode 100644 res/sdr/mdl_vtx_lit_cutoff.fs create mode 100644 res/tex/Aquilarius-TEXTURES/texture1.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture10.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture100.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture101.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture102.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture103.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture104.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture105.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture106.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture107.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture108.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture109.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture11.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture110.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture111.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture112.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture113.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture114.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture115.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture116.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture117.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture118.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture119.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture12.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture121.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture122.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture123.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture124.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture125.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture126.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture127.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture128.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture129.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture13.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture130.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture131.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture132.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture133.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture134.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture135.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture136.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture137.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture138.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture139.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture14.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture140.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture141.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture142.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture143.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture144.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture145.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture146.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture147.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture148.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture149.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture15.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture150.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture151.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture16.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture17.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture18.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture19.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture2.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture20.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture21.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture22.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture23.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture24.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture25.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture26.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture27.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture28.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture29.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture3.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture30.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture31.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture32.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture33.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture34.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture35.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture36.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture37.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture38.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture39.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture4.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture40.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture41.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture42.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture43.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture44.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture45.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture46.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture47.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture48.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture49.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture5.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture50.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture51.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture52.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture53.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture54.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture55.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture56.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture57.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture58.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture59.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture6.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture60.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture61.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture62.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture63.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture64.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture65.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture66.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture67.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture68.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture69.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture7.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture70.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture71.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture72.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture73.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture74.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture75.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture76.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture77.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture78.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture79.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture8.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture80.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture81.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture82.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture83.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture84.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture85.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture86.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture87.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture88.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture89.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture9.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture90.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture91.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture92.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture93.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture94.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture95.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture96.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture97.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture98.png create mode 100644 res/tex/Aquilarius-TEXTURES/texture99.png create mode 100644 res/tex/Road_Empty.png create mode 100644 res/tex/psx_tex/Grass 1/Grass 1.spp create mode 100644 res/tex/psx_tex/Grass 1/Grass1_PSX.jpg create mode 100644 res/tex/psx_tex/Grass 1/Grass1_PSX.png create mode 100644 res/tex/psx_tex/Grass 1/Grass1_Texture.jpg create mode 100644 res/tex/psx_tex/Grass 1/Grass1_Texture.png create mode 100644 res/tex/psx_tex/Grass 2/Grass 2.spp create mode 100644 res/tex/psx_tex/Grass 2/Grass2_PSX.jpg create mode 100644 res/tex/psx_tex/Grass 2/Grass2_PSX.png create mode 100644 res/tex/psx_tex/Grass 2/Grass2_Texture.jpg create mode 100644 res/tex/psx_tex/Grass 2/Grass2_Texture.png create mode 100644 res/tex/psx_tex/Grass 3/Grass 3.spp create mode 100644 res/tex/psx_tex/Grass 3/Grass3_PSX.jpg create mode 100644 res/tex/psx_tex/Grass 3/Grass3_PSX.png create mode 100644 res/tex/psx_tex/Grass 3/Grass3_Texture.jpg create mode 100644 res/tex/psx_tex/Grass 3/Grass3_Texture.png create mode 100644 res/tex/psx_tex/Grass 4/Grass 4.spp create mode 100644 res/tex/psx_tex/Grass 4/Grass4_PSX.jpg create mode 100644 res/tex/psx_tex/Grass 4/Grass4_PSX.png create mode 100644 res/tex/psx_tex/Grass 4/Grass4_Texture.jpg create mode 100644 res/tex/psx_tex/Grass 4/Grass4_Texture.png create mode 100644 res/tex/psx_tex/Grass 5/Grass 5.spp create mode 100644 res/tex/psx_tex/Grass 5/Grass5_PSX.jpg create mode 100644 res/tex/psx_tex/Grass 5/Grass5_PSX.png create mode 100644 res/tex/psx_tex/Grass 5/Grass5_Texture.jpg create mode 100644 res/tex/psx_tex/Grass 5/Grass5_Texture.png diff --git a/editor.c b/editor.c index 785a46e..0a61ad3 100644 --- a/editor.c +++ b/editor.c @@ -76,12 +76,14 @@ static struct { } command_menu; static const cstr material_shader_keys[] = { - "model", - "model_cutoff" + "default", + "alpha_cutoff", + "alpha_cutoff_nocull", + "foliage", }; static const char material_shader_labels[] = - "Model;Model (cutoff)"; + "default;alpha_cutoff;alpha_cutoff_nocull;foliage"; /* forward decl */ static bool selection_root(Entity *ent); @@ -613,13 +615,19 @@ action_commit(EditorAction *action) { changed |= strcmp(a->tex_key ? a->tex_key : "", b->tex_key ? - b->tex_key : "") != 0; + b->tex_key : + "") != 0; changed |= strcmp(a->shader_key ? a->shader_key : "", b->shader_key ? b->shader_key : "") != 0; + + changed |= a->uv_scale.x != b->uv_scale.x || + a->uv_scale.y != b->uv_scale.y || + a->uv_offset.x != b->uv_offset.x || + a->uv_offset.y != b->uv_offset.y; } } break; @@ -875,7 +883,9 @@ editor_update(void) { /* sorry about the indentation :^) */ switch (ed.interact) { case ED_INTERACT_NONE: - if (!ed.focus_captured && IsKeyPressed(KEY_SPACE)) { + if (!ed.focus_captured && + ed.mode == ED_MODE_SCENE && + IsKeyPressed(KEY_SPACE)) { ed.panel[ED_PNL_CENTER].type = ED_PNL_TYPE_SPACE; ed.panel[ED_PNL_CENTER].enabled = true; } @@ -2909,7 +2919,7 @@ panel_properties(EditorPanelContainer container, bool input) { } group.y = next_y; - group.height = material_count ? 170 : 80; + group.height = material_count ? 230 : 80; GuiGroupBox(group, "Model"); row = (Rect){ @@ -3035,7 +3045,7 @@ panel_properties(EditorPanelContainer container, bool input) { row.x, row.y, 64, row.height }, "Shader"); - cstr shader_key = "model"; + cstr shader_key = "default"; if ((u32)mat_idx < model->mat_cnt) { cstr key = model->materials[mat_idx].shader_key; @@ -3057,6 +3067,90 @@ panel_properties(EditorPanelContainer container, bool input) { shader_bounds = control; shader_visible = true; + Vec2 uv[2] = { + {1, 1}, + {0, 0}, + }; + + if ((u32)mat_idx < model->mat_cnt) { + uv[0] = model->materials[mat_idx].uv_scale; + uv[1] = model->materials[mat_idx].uv_offset; + } + + cstr uv_labels[2] = {"Tiling", "Offset"}; + + for (int i = 0; i < 2; ++i) { + row.y += 30; + + GuiLabel((Rect){ + row.x, row.y, 64, row.height + }, uv_labels[i]); + + f32 width = control.width / 2; + f32 *values[2] = {&uv[i].x, &uv[i].y}; + + for (int axis = 0; axis < 2; ++axis) { + Rect box = { + control.x + axis * width, + row.y, + width - 4, + row.height, + }; + + f32 value = *values[axis]; + + if (!panel_float(&edit, box, &value, false)) { + continue; + } + + if (!isfinite(value) || value == *values[axis]) { + continue; + } + + EditorAction action = + action_begin(ED_ACTION_MODEL, false); + + if ((u32)mat_idx >= model->mat_cnt) { + u32 count = material_count; + MaterialOverride *materials; + + materials = realloc(model->materials, + count * sizeof(*materials)); + + if (!materials) { + perror("material UV: alloc failed."); + exit(1); + } + + memset(materials + model->mat_cnt, 0, + (count - model->mat_cnt) * + sizeof(*materials)); + + for (u32 j = model->mat_cnt; j < count; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + + model->materials = materials; + model->mat_cnt = count; + } + + MaterialOverride *material; + material = &model->materials[mat_idx]; + + Vec2 *target = i == 0 ? + &material->uv_scale : &material->uv_offset; + + if (axis == 0) { + target->x = value; + } else { + target->y = value; + } + + *values[axis] = value; + action_commit(&action); + } + } + model_end: next_y = group.y + group.height + pad + 20 + 16; @@ -3378,10 +3472,15 @@ editor_set_material(cstr key, u32 mat_idx, MaterialProperty prop) { (count - model->mat_cnt) * sizeof(*materials)); + for (u32 i = model->mat_cnt; i < count; ++i) { + materials[i].uv_scale = (Vec2){1, 1}; + } + model->materials = materials; model->mat_cnt = count; } + MaterialOverride *material; material = &model->materials[mat_idx]; diff --git a/ent.c b/ent.c index 055239e..0cec83e 100644 --- a/ent.c +++ b/ent.c @@ -260,60 +260,170 @@ entity_draw_mdl(u64 id) { model->mdl = &asset->mdl; } - Model mdl = *model->mdl; - mdl.transform = entity_world_matrix(id); + Model *mdl = model->mdl; + Matrix transform = entity_world_matrix(id); Color tint = ent->ed.selected && ed.mode == ED_MODE_SCENE ? - (Color){100, 100, 100, 255} : BLACK; + (Color){100, 100, 100, 255} : BLACK; - u32 count = MIN(model->mat_cnt, (u32)mdl.materialCount); + for (int i = 0; i < mdl->meshCount; ++i) { + u32 mat_idx = mdl->meshMaterial[i]; + Material material = mdl->materials[mat_idx]; - if (!count) { - DrawModel(mdl, (Vec3){0}, 1, tint); - return; - } + MaterialMap *albedo = &material.maps[MATERIAL_MAP_ALBEDO]; + MaterialMap saved_albedo = *albedo; - struct { - MaterialMap albedo; - Shader shader; - } saved[count]; + Vec2 uv_scale = {1, 1}; + Vec2 uv_offset = {0, 0}; + cstr shader_key = "default"; - for (u32 i = 0; i < count; ++i) { - Material *material = &mdl.materials[i]; - MaterialMap *albedo; - albedo = &material->maps[MATERIAL_MAP_ALBEDO]; + if (mat_idx < model->mat_cnt) { + const MaterialOverride *override; + override = &model->materials[mat_idx]; - saved[i].albedo = *albedo; - saved[i].shader = material->shader; + uv_scale = override->uv_scale; + uv_offset = override->uv_offset; - MaterialOverride *override = &model->materials[i]; + if (override->tex_key) { + Asset *asset = asset_get(override->tex_key); + if (asset) { + albedo->texture = asset->tex; + } + } - if (override->tex_key) { - Asset *asset = asset_get(override->tex_key); - if (asset) { - albedo->texture = asset->tex; + if (override->shader_key) { + shader_key = override->shader_key; } } - if (override->shader_key) { - FunShader *shader; - shader = shader_get(override->shader_key); + FunShader *shader = shader_get(shader_key); + if (!shader) { + *albedo = saved_albedo; + continue; + } + material.shader = shader->sdr; + + SetShaderValue( + material.shader, + fun_shader_uniform(shader_key, "uv_tiling"), + &uv_scale, + SHADER_UNIFORM_VEC2 + ); + + SetShaderValue( + material.shader, + fun_shader_uniform(shader_key, "uv_offset"), + &uv_offset, + SHADER_UNIFORM_VEC2 + ); + + /* Match DrawModel's material tint multiplication. */ + Color colour = albedo->color; + albedo->color = (Color){ + (u8)((int)colour.r * tint.r / 255), + (u8)((int)colour.g * tint.g / 255), + (u8)((int)colour.b * tint.b / 255), + (u8)((int)colour.a * tint.a / 255), + }; - if (shader) { - material->shader = shader->sdr; - } + /* Preserve DrawModel's GPU skinning support. */ + int loc = SHADER_LOC_MATRIX_BONETRANSFORMS; + if (material.shader.locs != NULL && + material.shader.locs[loc] != -1 && + mdl->boneMatrices != NULL) { + rlEnableShader(material.shader.id); + rlSetUniformMatrices( + material.shader.locs[loc], + mdl->boneMatrices, + mdl->skeleton.boneCount + ); } - } - DrawModel(mdl, (Vec3){0}, 1, tint); + bool nocull = + strcmp(shader_key, "alpha_cutoff_nocull") == 0 || + strcmp(shader_key, "foliage") == 0; - for (u32 i = 0; i < count; ++i) { - Material *material = &mdl.materials[i]; - material->maps[MATERIAL_MAP_ALBEDO] = saved[i].albedo; - material->shader = saved[i].shader; + if (nocull) { + rlDisableBackfaceCulling(); + } + + DrawMesh(mdl->meshes[i], material, transform); + + if (nocull) { + rlEnableBackfaceCulling(); + } + + *albedo = saved_albedo; } } +// static void +// entity_draw_mdl(u64 id) { +// Entity *ent = entity_get(id); +// ModelCmp *model = &ent->mdl; + +// if (!model->mdl) { +// Asset *asset = asset_get(model->key); +// if (!asset) { +// return; +// } +// model->mdl = &asset->mdl; +// } + +// Model mdl = *model->mdl; +// mdl.transform = entity_world_matrix(id); + +// Color tint = ent->ed.selected && ed.mode == ED_MODE_SCENE ? +// (Color){100, 100, 100, 255} : BLACK; + +// u32 count = MIN(model->mat_cnt, (u32)mdl.materialCount); + +// if (!count) { +// DrawModel(mdl, (Vec3){0}, 1, tint); +// return; +// } + +// struct { +// MaterialMap albedo; +// Shader shader; +// } saved[count]; + +// for (u32 i = 0; i < count; ++i) { +// Material *material = &mdl.materials[i]; +// MaterialMap *albedo; +// albedo = &material->maps[MATERIAL_MAP_ALBEDO]; + +// saved[i].albedo = *albedo; +// saved[i].shader = material->shader; + +// MaterialOverride *override = &model->materials[i]; + +// if (override->tex_key) { +// Asset *asset = asset_get(override->tex_key); +// if (asset) { +// albedo->texture = asset->tex; +// } +// } + +// if (override->shader_key) { +// FunShader *shader; +// shader = shader_get(override->shader_key); + +// if (shader) { +// material->shader = shader->sdr; +// } +// } +// } + +// DrawModel(mdl, (Vec3){0}, 1, tint); + +// for (u32 i = 0; i < count; ++i) { +// Material *material = &mdl.materials[i]; +// material->maps[MATERIAL_MAP_ALBEDO] = saved[i].albedo; +// material->shader = saved[i].shader; +// } +// } + void entity_system_update(void) { entity_process_delete_queue(); @@ -453,9 +563,15 @@ entity_model_copy(const ModelCmp *src) { MaterialOverride *to = ©.materials[i]; to->tex_key = from->tex_key ? - strdup(from->tex_key) : NULL; + strdup(from->tex_key) : + NULL; + to->shader_key = from->shader_key ? - strdup(from->shader_key) : NULL; + strdup(from->shader_key) : + NULL; + + to->uv_scale = from->uv_scale; + to->uv_offset = from->uv_offset; } } diff --git a/ent.h b/ent.h index 41eb60f..620c34e 100644 --- a/ent.h +++ b/ent.h @@ -23,6 +23,7 @@ typedef enum { typedef struct { char *tex_key; char *shader_key; + Vec2 uv_scale, uv_offset; } MaterialOverride; typedef struct { diff --git a/env.c b/env.c index 20466f8..31c7971 100644 --- a/env.c +++ b/env.c @@ -10,26 +10,22 @@ static const Color SKY_DAY_ZENITH = { 20, 71, 158, 255 }; static f32 sky_smoothstep(f32 edge_0, f32 edge_1, f32 value) { f32 amount = (value - edge_0) / (edge_1 - edge_0); - if (amount < 0.0f) { amount = 0.0f; } else if (amount > 1.0f) { amount = 1.0f; } - return amount * amount * (3.0f - 2.0f * amount); } static Vec3 sky_get_sun_direction(f32 cycle) { f32 angle = cycle * 2.0f * PI - PI * 0.5f; - Vec3 dir = (Vec3) { cosf(angle), sinf(angle), 0.0f }; - return Vector3Normalize(dir); } @@ -45,9 +41,8 @@ sky_draw_symbol(Texture tex, Vec3 dir, Camera3D cam, f32 angular_diameter, return; } - Vec3 cam_fwd = Vector3Normalize( - Vector3Subtract(cam.target, cam.position)); - + Vec3 cam_fwd = + Vector3Normalize(Vector3Subtract(cam.target, cam.position)); f32 fwd_facing = Vector3DotProduct(cam_fwd, dir); // don't draw if behind the camera @@ -184,7 +179,7 @@ env_update_shader(cstr key) { return; } - Shader sdr = shader_get(key)->sdr; + Shader sdr = res->sdr; SetTraceLogLevel(LOG_DEBUG); SetShaderValue( sdr, @@ -271,8 +266,10 @@ env_exit(void) { void env_update(void) { sky_update_lighting(); - env_update_shader("model"); - env_update_shader("model_cutoff"); + env_update_shader("default"); + env_update_shader("alpha_cutoff"); + env_update_shader("alpha_cutoff_nocull"); + env_update_shader("foliage"); } void diff --git a/res.c b/res.c index f48ef86..f4c8597 100644 --- a/res.c +++ b/res.c @@ -38,7 +38,7 @@ asset_load_data(cstr key) { } for (int i = 0; i < mdl.materialCount; ++i) { - mdl.materials[i].shader = shader_get("model")->sdr; + mdl.materials[i].shader = shader_get("default")->sdr; } asset->tag = ASSET_TAG_MODEL; @@ -55,6 +55,7 @@ asset_load_data(cstr key) { } GenTextureMipmaps(&tex); + SetTextureWrap(tex, TEXTURE_WRAP_REPEAT); // SetTextureFilter(tex, TEXTURE_FILTER_ANISOTROPIC_16X); SetTextureFilter(tex, TEXTURE_FILTER_TRILINEAR); // SetTextureFilter(tex, TEXTURE_FILTER_BILINEAR); @@ -143,14 +144,22 @@ res_init(void) { map_init(&res.sdr); map_init(&res.assets); - fun_shader_create("model", + fun_shader_create("default", "res/sdr/mdl_vtx_lit.vs", "res/sdr/mdl_vtx_lit.fs"); - fun_shader_create("model_cutoff", + fun_shader_create("alpha_cutoff", "res/sdr/mdl_vtx_lit.vs", "res/sdr/mdl_vtx_lit_cutoff.fs"); + fun_shader_create("alpha_cutoff_nocull", + "res/sdr/mdl_vtx_lit.vs", + "res/sdr/mdl_two_sided_cutoff.fs"); + + fun_shader_create("foliage", + "res/sdr/mdl_foliage.vs", + "res/sdr/mdl_vtx_lit_cutoff.fs"); + fun_shader_create("sky", NULL, "res/sdr/sky.fs"); cstr filter = ".glb;.png;.ttf;.otf;.ogg"; @@ -278,14 +287,14 @@ fun_shader_uniform(cstr skey, cstr ukey) { return *ret; } - BeginShaderMode(sdr->sdr); + // BeginShaderMode(sdr->sdr); int loc = rlGetLocationUniform(sdr->sdr.id, ukey); if (loc < 0) { TraceLog(LOG_ERROR, "shader '%s' uniform '%s' not found.\n", skey, ukey); exit(1); } - EndShaderMode(); + // EndShaderMode(); map_set(&sdr->uniforms, ukey, loc); ret = map_get(&sdr->uniforms, ukey); diff --git a/res/mdl/fun_game_nimbin_buildings.glb b/res/mdl/fun_game_nimbin_buildings.glb new file mode 100644 index 0000000..fba1be0 Binary files /dev/null and b/res/mdl/fun_game_nimbin_buildings.glb differ diff --git a/res/mdl/fun_game_nimbin_roads.glb b/res/mdl/fun_game_nimbin_roads.glb new file mode 100644 index 0000000..3bd9c55 Binary files /dev/null and b/res/mdl/fun_game_nimbin_roads.glb differ diff --git a/res/mdl/fun_game_nimbin_terrain.glb b/res/mdl/fun_game_nimbin_terrain.glb new file mode 100644 index 0000000..f3c226e Binary files /dev/null and b/res/mdl/fun_game_nimbin_terrain.glb differ diff --git a/res/mdl/psx-houses/House_10_1.glb b/res/mdl/psx-houses/House_10_1.glb new file mode 100644 index 0000000..4923936 Binary files /dev/null and b/res/mdl/psx-houses/House_10_1.glb differ diff --git a/res/mdl/psx-houses/House_10_10.glb b/res/mdl/psx-houses/House_10_10.glb new file mode 100644 index 0000000..115dcca Binary files /dev/null and b/res/mdl/psx-houses/House_10_10.glb differ diff --git a/res/mdl/psx-houses/House_10_2.glb b/res/mdl/psx-houses/House_10_2.glb new file mode 100644 index 0000000..e6d8eb6 Binary files /dev/null and b/res/mdl/psx-houses/House_10_2.glb differ diff --git a/res/mdl/psx-houses/House_10_3.glb b/res/mdl/psx-houses/House_10_3.glb new file mode 100644 index 0000000..bcccdf4 Binary files /dev/null and b/res/mdl/psx-houses/House_10_3.glb differ diff --git a/res/mdl/psx-houses/House_10_4.glb b/res/mdl/psx-houses/House_10_4.glb new file mode 100644 index 0000000..4c05500 Binary files /dev/null and b/res/mdl/psx-houses/House_10_4.glb differ diff --git a/res/mdl/psx-houses/House_10_5.glb b/res/mdl/psx-houses/House_10_5.glb new file mode 100644 index 0000000..9397dfa Binary files /dev/null and b/res/mdl/psx-houses/House_10_5.glb differ diff --git a/res/mdl/psx-houses/House_10_6.glb b/res/mdl/psx-houses/House_10_6.glb new file mode 100644 index 0000000..0c71a80 Binary files /dev/null and b/res/mdl/psx-houses/House_10_6.glb differ diff --git a/res/mdl/psx-houses/House_10_7.glb b/res/mdl/psx-houses/House_10_7.glb new file mode 100644 index 0000000..f5e14bd Binary files /dev/null and b/res/mdl/psx-houses/House_10_7.glb differ diff --git a/res/mdl/psx-houses/House_10_8.glb b/res/mdl/psx-houses/House_10_8.glb new file mode 100644 index 0000000..4d965ae Binary files /dev/null and b/res/mdl/psx-houses/House_10_8.glb differ diff --git a/res/mdl/psx-houses/House_10_9.glb b/res/mdl/psx-houses/House_10_9.glb new file mode 100644 index 0000000..9e49655 Binary files /dev/null and b/res/mdl/psx-houses/House_10_9.glb differ diff --git a/res/mdl/psx-houses/House_1_1.glb b/res/mdl/psx-houses/House_1_1.glb new file mode 100644 index 0000000..b46282f Binary files /dev/null and b/res/mdl/psx-houses/House_1_1.glb differ diff --git a/res/mdl/psx-houses/House_1_10.glb b/res/mdl/psx-houses/House_1_10.glb new file mode 100644 index 0000000..7518197 Binary files /dev/null and b/res/mdl/psx-houses/House_1_10.glb differ diff --git a/res/mdl/psx-houses/House_1_2.glb b/res/mdl/psx-houses/House_1_2.glb new file mode 100644 index 0000000..d75c4f7 Binary files /dev/null and b/res/mdl/psx-houses/House_1_2.glb differ diff --git a/res/mdl/psx-houses/House_1_3.glb b/res/mdl/psx-houses/House_1_3.glb new file mode 100644 index 0000000..aeb75d8 Binary files /dev/null and b/res/mdl/psx-houses/House_1_3.glb differ diff --git a/res/mdl/psx-houses/House_1_4.glb b/res/mdl/psx-houses/House_1_4.glb new file mode 100644 index 0000000..00ffd96 Binary files /dev/null and b/res/mdl/psx-houses/House_1_4.glb differ diff --git a/res/mdl/psx-houses/House_1_5.glb b/res/mdl/psx-houses/House_1_5.glb new file mode 100644 index 0000000..1190205 Binary files /dev/null and b/res/mdl/psx-houses/House_1_5.glb differ diff --git a/res/mdl/psx-houses/House_1_6.glb b/res/mdl/psx-houses/House_1_6.glb new file mode 100644 index 0000000..af88915 Binary files /dev/null and b/res/mdl/psx-houses/House_1_6.glb differ diff --git a/res/mdl/psx-houses/House_1_7.glb b/res/mdl/psx-houses/House_1_7.glb new file mode 100644 index 0000000..27f90b7 Binary files /dev/null and b/res/mdl/psx-houses/House_1_7.glb differ diff --git a/res/mdl/psx-houses/House_1_8.glb b/res/mdl/psx-houses/House_1_8.glb new file mode 100644 index 0000000..de169cb Binary files /dev/null and b/res/mdl/psx-houses/House_1_8.glb differ diff --git a/res/mdl/psx-houses/House_1_9.glb b/res/mdl/psx-houses/House_1_9.glb new file mode 100644 index 0000000..a8e5372 Binary files /dev/null and b/res/mdl/psx-houses/House_1_9.glb differ diff --git a/res/mdl/psx-houses/House_2_1.glb b/res/mdl/psx-houses/House_2_1.glb new file mode 100644 index 0000000..9d37cbc Binary files /dev/null and b/res/mdl/psx-houses/House_2_1.glb differ diff --git a/res/mdl/psx-houses/House_2_10.glb b/res/mdl/psx-houses/House_2_10.glb new file mode 100644 index 0000000..6ded621 Binary files /dev/null and b/res/mdl/psx-houses/House_2_10.glb differ diff --git a/res/mdl/psx-houses/House_2_2.glb b/res/mdl/psx-houses/House_2_2.glb new file mode 100644 index 0000000..96e4e0f Binary files /dev/null and b/res/mdl/psx-houses/House_2_2.glb differ diff --git a/res/mdl/psx-houses/House_2_3.glb b/res/mdl/psx-houses/House_2_3.glb new file mode 100644 index 0000000..3dcdb6f Binary files /dev/null and b/res/mdl/psx-houses/House_2_3.glb differ diff --git a/res/mdl/psx-houses/House_2_4.glb b/res/mdl/psx-houses/House_2_4.glb new file mode 100644 index 0000000..c729a33 Binary files /dev/null and b/res/mdl/psx-houses/House_2_4.glb differ diff --git a/res/mdl/psx-houses/House_2_5.glb b/res/mdl/psx-houses/House_2_5.glb new file mode 100644 index 0000000..ff0e087 Binary files /dev/null and b/res/mdl/psx-houses/House_2_5.glb differ diff --git a/res/mdl/psx-houses/House_2_6.glb b/res/mdl/psx-houses/House_2_6.glb new file mode 100644 index 0000000..41d8a7b Binary files /dev/null and b/res/mdl/psx-houses/House_2_6.glb differ diff --git a/res/mdl/psx-houses/House_2_7.glb b/res/mdl/psx-houses/House_2_7.glb new file mode 100644 index 0000000..9b0102c Binary files /dev/null and b/res/mdl/psx-houses/House_2_7.glb differ diff --git a/res/mdl/psx-houses/House_2_8.glb b/res/mdl/psx-houses/House_2_8.glb new file mode 100644 index 0000000..976ad5e Binary files /dev/null and b/res/mdl/psx-houses/House_2_8.glb differ diff --git a/res/mdl/psx-houses/House_2_9.glb b/res/mdl/psx-houses/House_2_9.glb new file mode 100644 index 0000000..7612e6e Binary files /dev/null and b/res/mdl/psx-houses/House_2_9.glb differ diff --git a/res/mdl/psx-houses/House_3_1.glb b/res/mdl/psx-houses/House_3_1.glb new file mode 100644 index 0000000..a5c0030 Binary files /dev/null and b/res/mdl/psx-houses/House_3_1.glb differ diff --git a/res/mdl/psx-houses/House_3_10.glb b/res/mdl/psx-houses/House_3_10.glb new file mode 100644 index 0000000..ef774c9 Binary files /dev/null and b/res/mdl/psx-houses/House_3_10.glb differ diff --git a/res/mdl/psx-houses/House_3_2.glb b/res/mdl/psx-houses/House_3_2.glb new file mode 100644 index 0000000..751c69b Binary files /dev/null and b/res/mdl/psx-houses/House_3_2.glb differ diff --git a/res/mdl/psx-houses/House_3_3.glb b/res/mdl/psx-houses/House_3_3.glb new file mode 100644 index 0000000..5120ec2 Binary files /dev/null and b/res/mdl/psx-houses/House_3_3.glb differ diff --git a/res/mdl/psx-houses/House_3_4.glb b/res/mdl/psx-houses/House_3_4.glb new file mode 100644 index 0000000..bc2f54e Binary files /dev/null and b/res/mdl/psx-houses/House_3_4.glb differ diff --git a/res/mdl/psx-houses/House_3_5.glb b/res/mdl/psx-houses/House_3_5.glb new file mode 100644 index 0000000..a663bc3 Binary files /dev/null and b/res/mdl/psx-houses/House_3_5.glb differ diff --git a/res/mdl/psx-houses/House_3_6.glb b/res/mdl/psx-houses/House_3_6.glb new file mode 100644 index 0000000..f2d330c Binary files /dev/null and b/res/mdl/psx-houses/House_3_6.glb differ diff --git a/res/mdl/psx-houses/House_3_7.glb b/res/mdl/psx-houses/House_3_7.glb new file mode 100644 index 0000000..4082efb Binary files /dev/null and b/res/mdl/psx-houses/House_3_7.glb differ diff --git a/res/mdl/psx-houses/House_3_8.glb b/res/mdl/psx-houses/House_3_8.glb new file mode 100644 index 0000000..4246a4c Binary files /dev/null and b/res/mdl/psx-houses/House_3_8.glb differ diff --git a/res/mdl/psx-houses/House_3_9.glb b/res/mdl/psx-houses/House_3_9.glb new file mode 100644 index 0000000..dd8c4ff Binary files /dev/null and b/res/mdl/psx-houses/House_3_9.glb differ diff --git a/res/mdl/psx-houses/House_4_1.glb b/res/mdl/psx-houses/House_4_1.glb new file mode 100644 index 0000000..b93e9af Binary files /dev/null and b/res/mdl/psx-houses/House_4_1.glb differ diff --git a/res/mdl/psx-houses/House_4_10.glb b/res/mdl/psx-houses/House_4_10.glb new file mode 100644 index 0000000..2b633a4 Binary files /dev/null and b/res/mdl/psx-houses/House_4_10.glb differ diff --git a/res/mdl/psx-houses/House_4_2.glb b/res/mdl/psx-houses/House_4_2.glb new file mode 100644 index 0000000..38dd4b4 Binary files /dev/null and b/res/mdl/psx-houses/House_4_2.glb differ diff --git a/res/mdl/psx-houses/House_4_3.glb b/res/mdl/psx-houses/House_4_3.glb new file mode 100644 index 0000000..0633dbe Binary files /dev/null and b/res/mdl/psx-houses/House_4_3.glb differ diff --git a/res/mdl/psx-houses/House_4_4.glb b/res/mdl/psx-houses/House_4_4.glb new file mode 100644 index 0000000..8cb8a99 Binary files /dev/null and b/res/mdl/psx-houses/House_4_4.glb differ diff --git a/res/mdl/psx-houses/House_4_5.glb b/res/mdl/psx-houses/House_4_5.glb new file mode 100644 index 0000000..9398a84 Binary files /dev/null and b/res/mdl/psx-houses/House_4_5.glb differ diff --git a/res/mdl/psx-houses/House_4_6.glb b/res/mdl/psx-houses/House_4_6.glb new file mode 100644 index 0000000..6eed569 Binary files /dev/null and b/res/mdl/psx-houses/House_4_6.glb differ diff --git a/res/mdl/psx-houses/House_4_7.glb b/res/mdl/psx-houses/House_4_7.glb new file mode 100644 index 0000000..0e9128f Binary files /dev/null and b/res/mdl/psx-houses/House_4_7.glb differ diff --git a/res/mdl/psx-houses/House_4_8.glb b/res/mdl/psx-houses/House_4_8.glb new file mode 100644 index 0000000..a693082 Binary files /dev/null and b/res/mdl/psx-houses/House_4_8.glb differ diff --git a/res/mdl/psx-houses/House_4_9.glb b/res/mdl/psx-houses/House_4_9.glb new file mode 100644 index 0000000..b2fbf4d Binary files /dev/null and b/res/mdl/psx-houses/House_4_9.glb differ diff --git a/res/mdl/psx-houses/House_5_1.glb b/res/mdl/psx-houses/House_5_1.glb new file mode 100644 index 0000000..fabd441 Binary files /dev/null and b/res/mdl/psx-houses/House_5_1.glb differ diff --git a/res/mdl/psx-houses/House_5_10.glb b/res/mdl/psx-houses/House_5_10.glb new file mode 100644 index 0000000..a2ccf18 Binary files /dev/null and b/res/mdl/psx-houses/House_5_10.glb differ diff --git a/res/mdl/psx-houses/House_5_2.glb b/res/mdl/psx-houses/House_5_2.glb new file mode 100644 index 0000000..1b0f1a8 Binary files /dev/null and b/res/mdl/psx-houses/House_5_2.glb differ diff --git a/res/mdl/psx-houses/House_5_3.glb b/res/mdl/psx-houses/House_5_3.glb new file mode 100644 index 0000000..f6f5d4f Binary files /dev/null and b/res/mdl/psx-houses/House_5_3.glb differ diff --git a/res/mdl/psx-houses/House_5_4.glb b/res/mdl/psx-houses/House_5_4.glb new file mode 100644 index 0000000..c672e70 Binary files /dev/null and b/res/mdl/psx-houses/House_5_4.glb differ diff --git a/res/mdl/psx-houses/House_5_5.glb b/res/mdl/psx-houses/House_5_5.glb new file mode 100644 index 0000000..950662b Binary files /dev/null and b/res/mdl/psx-houses/House_5_5.glb differ diff --git a/res/mdl/psx-houses/House_5_6.glb b/res/mdl/psx-houses/House_5_6.glb new file mode 100644 index 0000000..d059536 Binary files /dev/null and b/res/mdl/psx-houses/House_5_6.glb differ diff --git a/res/mdl/psx-houses/House_5_7.glb b/res/mdl/psx-houses/House_5_7.glb new file mode 100644 index 0000000..c58039a Binary files /dev/null and b/res/mdl/psx-houses/House_5_7.glb differ diff --git a/res/mdl/psx-houses/House_5_8.glb b/res/mdl/psx-houses/House_5_8.glb new file mode 100644 index 0000000..ecf2737 Binary files /dev/null and b/res/mdl/psx-houses/House_5_8.glb differ diff --git a/res/mdl/psx-houses/House_5_9.glb b/res/mdl/psx-houses/House_5_9.glb new file mode 100644 index 0000000..d81c955 Binary files /dev/null and b/res/mdl/psx-houses/House_5_9.glb differ diff --git a/res/mdl/psx-houses/House_6_1.glb b/res/mdl/psx-houses/House_6_1.glb new file mode 100644 index 0000000..295b2c8 Binary files /dev/null and b/res/mdl/psx-houses/House_6_1.glb differ diff --git a/res/mdl/psx-houses/House_6_10.glb b/res/mdl/psx-houses/House_6_10.glb new file mode 100644 index 0000000..ef8ba78 Binary files /dev/null and b/res/mdl/psx-houses/House_6_10.glb differ diff --git a/res/mdl/psx-houses/House_6_2.glb b/res/mdl/psx-houses/House_6_2.glb new file mode 100644 index 0000000..65cb86f Binary files /dev/null and b/res/mdl/psx-houses/House_6_2.glb differ diff --git a/res/mdl/psx-houses/House_6_3.glb b/res/mdl/psx-houses/House_6_3.glb new file mode 100644 index 0000000..1b11a30 Binary files /dev/null and b/res/mdl/psx-houses/House_6_3.glb differ diff --git a/res/mdl/psx-houses/House_6_4.glb b/res/mdl/psx-houses/House_6_4.glb new file mode 100644 index 0000000..8db9ea8 Binary files /dev/null and b/res/mdl/psx-houses/House_6_4.glb differ diff --git a/res/mdl/psx-houses/House_6_5.glb b/res/mdl/psx-houses/House_6_5.glb new file mode 100644 index 0000000..5b8bcaf Binary files /dev/null and b/res/mdl/psx-houses/House_6_5.glb differ diff --git a/res/mdl/psx-houses/House_6_6.glb b/res/mdl/psx-houses/House_6_6.glb new file mode 100644 index 0000000..d1ce847 Binary files /dev/null and b/res/mdl/psx-houses/House_6_6.glb differ diff --git a/res/mdl/psx-houses/House_6_7.glb b/res/mdl/psx-houses/House_6_7.glb new file mode 100644 index 0000000..bbcf4f9 Binary files /dev/null and b/res/mdl/psx-houses/House_6_7.glb differ diff --git a/res/mdl/psx-houses/House_6_8.glb b/res/mdl/psx-houses/House_6_8.glb new file mode 100644 index 0000000..4f1ff29 Binary files /dev/null and b/res/mdl/psx-houses/House_6_8.glb differ diff --git a/res/mdl/psx-houses/House_6_9.glb b/res/mdl/psx-houses/House_6_9.glb new file mode 100644 index 0000000..4fb5c90 Binary files /dev/null and b/res/mdl/psx-houses/House_6_9.glb differ diff --git a/res/mdl/psx-houses/House_7_1.glb b/res/mdl/psx-houses/House_7_1.glb new file mode 100644 index 0000000..6fe8577 Binary files /dev/null and b/res/mdl/psx-houses/House_7_1.glb differ diff --git a/res/mdl/psx-houses/House_7_10.glb b/res/mdl/psx-houses/House_7_10.glb new file mode 100644 index 0000000..0dc2ce9 Binary files /dev/null and b/res/mdl/psx-houses/House_7_10.glb differ diff --git a/res/mdl/psx-houses/House_7_2.glb b/res/mdl/psx-houses/House_7_2.glb new file mode 100644 index 0000000..ee6be9d Binary files /dev/null and b/res/mdl/psx-houses/House_7_2.glb differ diff --git a/res/mdl/psx-houses/House_7_3.glb b/res/mdl/psx-houses/House_7_3.glb new file mode 100644 index 0000000..f4faab9 Binary files /dev/null and b/res/mdl/psx-houses/House_7_3.glb differ diff --git a/res/mdl/psx-houses/House_7_4.glb b/res/mdl/psx-houses/House_7_4.glb new file mode 100644 index 0000000..9b1ee14 Binary files /dev/null and b/res/mdl/psx-houses/House_7_4.glb differ diff --git a/res/mdl/psx-houses/House_7_5.glb b/res/mdl/psx-houses/House_7_5.glb new file mode 100644 index 0000000..24c189c Binary files /dev/null and b/res/mdl/psx-houses/House_7_5.glb differ diff --git a/res/mdl/psx-houses/House_7_6.glb b/res/mdl/psx-houses/House_7_6.glb new file mode 100644 index 0000000..255d1ee Binary files /dev/null and b/res/mdl/psx-houses/House_7_6.glb differ diff --git a/res/mdl/psx-houses/House_7_7.glb b/res/mdl/psx-houses/House_7_7.glb new file mode 100644 index 0000000..57b3f30 Binary files /dev/null and b/res/mdl/psx-houses/House_7_7.glb differ diff --git a/res/mdl/psx-houses/House_7_8.glb b/res/mdl/psx-houses/House_7_8.glb new file mode 100644 index 0000000..e6cb504 Binary files /dev/null and b/res/mdl/psx-houses/House_7_8.glb differ diff --git a/res/mdl/psx-houses/House_7_9.glb b/res/mdl/psx-houses/House_7_9.glb new file mode 100644 index 0000000..d8b5d40 Binary files /dev/null and b/res/mdl/psx-houses/House_7_9.glb differ diff --git a/res/mdl/psx-houses/House_8_1.glb b/res/mdl/psx-houses/House_8_1.glb new file mode 100644 index 0000000..6a74627 Binary files /dev/null and b/res/mdl/psx-houses/House_8_1.glb differ diff --git a/res/mdl/psx-houses/House_8_10.glb b/res/mdl/psx-houses/House_8_10.glb new file mode 100644 index 0000000..e94b674 Binary files /dev/null and b/res/mdl/psx-houses/House_8_10.glb differ diff --git a/res/mdl/psx-houses/House_8_2.glb b/res/mdl/psx-houses/House_8_2.glb new file mode 100644 index 0000000..54e481c Binary files /dev/null and b/res/mdl/psx-houses/House_8_2.glb differ diff --git a/res/mdl/psx-houses/House_8_3.glb b/res/mdl/psx-houses/House_8_3.glb new file mode 100644 index 0000000..39f95f0 Binary files /dev/null and b/res/mdl/psx-houses/House_8_3.glb differ diff --git a/res/mdl/psx-houses/House_8_4.glb b/res/mdl/psx-houses/House_8_4.glb new file mode 100644 index 0000000..93ce6c2 Binary files /dev/null and b/res/mdl/psx-houses/House_8_4.glb differ diff --git a/res/mdl/psx-houses/House_8_5.glb b/res/mdl/psx-houses/House_8_5.glb new file mode 100644 index 0000000..3ca2dd3 Binary files /dev/null and b/res/mdl/psx-houses/House_8_5.glb differ diff --git a/res/mdl/psx-houses/House_8_6.glb b/res/mdl/psx-houses/House_8_6.glb new file mode 100644 index 0000000..79f83c0 Binary files /dev/null and b/res/mdl/psx-houses/House_8_6.glb differ diff --git a/res/mdl/psx-houses/House_8_7.glb b/res/mdl/psx-houses/House_8_7.glb new file mode 100644 index 0000000..6222dc8 Binary files /dev/null and b/res/mdl/psx-houses/House_8_7.glb differ diff --git a/res/mdl/psx-houses/House_8_8.glb b/res/mdl/psx-houses/House_8_8.glb new file mode 100644 index 0000000..3a75efc Binary files /dev/null and b/res/mdl/psx-houses/House_8_8.glb differ diff --git a/res/mdl/psx-houses/House_8_9.glb b/res/mdl/psx-houses/House_8_9.glb new file mode 100644 index 0000000..29ce0be Binary files /dev/null and b/res/mdl/psx-houses/House_8_9.glb differ diff --git a/res/mdl/psx-houses/House_9_1.glb b/res/mdl/psx-houses/House_9_1.glb new file mode 100644 index 0000000..f36d294 Binary files /dev/null and b/res/mdl/psx-houses/House_9_1.glb differ diff --git a/res/mdl/psx-houses/House_9_10.glb b/res/mdl/psx-houses/House_9_10.glb new file mode 100644 index 0000000..766b2fc Binary files /dev/null and b/res/mdl/psx-houses/House_9_10.glb differ diff --git a/res/mdl/psx-houses/House_9_2.glb b/res/mdl/psx-houses/House_9_2.glb new file mode 100644 index 0000000..1c8cebc Binary files /dev/null and b/res/mdl/psx-houses/House_9_2.glb differ diff --git a/res/mdl/psx-houses/House_9_3.glb b/res/mdl/psx-houses/House_9_3.glb new file mode 100644 index 0000000..c417127 Binary files /dev/null and b/res/mdl/psx-houses/House_9_3.glb differ diff --git a/res/mdl/psx-houses/House_9_4.glb b/res/mdl/psx-houses/House_9_4.glb new file mode 100644 index 0000000..90adca1 Binary files /dev/null and b/res/mdl/psx-houses/House_9_4.glb differ diff --git a/res/mdl/psx-houses/House_9_5.glb b/res/mdl/psx-houses/House_9_5.glb new file mode 100644 index 0000000..9f6132c Binary files /dev/null and b/res/mdl/psx-houses/House_9_5.glb differ diff --git a/res/mdl/psx-houses/House_9_6.glb b/res/mdl/psx-houses/House_9_6.glb new file mode 100644 index 0000000..174cf36 Binary files /dev/null and b/res/mdl/psx-houses/House_9_6.glb differ diff --git a/res/mdl/psx-houses/House_9_7.glb b/res/mdl/psx-houses/House_9_7.glb new file mode 100644 index 0000000..cefa147 Binary files /dev/null and b/res/mdl/psx-houses/House_9_7.glb differ diff --git a/res/mdl/psx-houses/House_9_8.glb b/res/mdl/psx-houses/House_9_8.glb new file mode 100644 index 0000000..5b10186 Binary files /dev/null and b/res/mdl/psx-houses/House_9_8.glb differ diff --git a/res/mdl/psx-houses/House_9_9.glb b/res/mdl/psx-houses/House_9_9.glb new file mode 100644 index 0000000..6f26503 Binary files /dev/null and b/res/mdl/psx-houses/House_9_9.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb new file mode 100644 index 0000000..cb1abcf Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb new file mode 100644 index 0000000..cc30da2 Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb new file mode 100644 index 0000000..9808648 Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb new file mode 100644 index 0000000..a9c59ca Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb new file mode 100644 index 0000000..feafc2c Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb new file mode 100644 index 0000000..f85213d Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb new file mode 100644 index 0000000..2e562fe Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb new file mode 100644 index 0000000..9afe303 Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb new file mode 100644 index 0000000..d1837f9 Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb differ diff --git a/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb new file mode 100644 index 0000000..5b7784b Binary files /dev/null and b/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb differ diff --git a/res/mdl/psx-trees/Tree_1.glb b/res/mdl/psx-trees/Tree_1.glb new file mode 100644 index 0000000..2295697 Binary files /dev/null and b/res/mdl/psx-trees/Tree_1.glb differ diff --git a/res/mdl/psx-trees/Tree_10.glb b/res/mdl/psx-trees/Tree_10.glb new file mode 100644 index 0000000..cca9372 Binary files /dev/null and b/res/mdl/psx-trees/Tree_10.glb differ diff --git a/res/mdl/psx-trees/Tree_2.glb b/res/mdl/psx-trees/Tree_2.glb new file mode 100644 index 0000000..a0dd0c5 Binary files /dev/null and b/res/mdl/psx-trees/Tree_2.glb differ diff --git a/res/mdl/psx-trees/Tree_3.glb b/res/mdl/psx-trees/Tree_3.glb new file mode 100644 index 0000000..409ec19 Binary files /dev/null and b/res/mdl/psx-trees/Tree_3.glb differ diff --git a/res/mdl/psx-trees/Tree_4.glb b/res/mdl/psx-trees/Tree_4.glb new file mode 100644 index 0000000..eaed0a3 Binary files /dev/null and b/res/mdl/psx-trees/Tree_4.glb differ diff --git a/res/mdl/psx-trees/Tree_5.glb b/res/mdl/psx-trees/Tree_5.glb new file mode 100644 index 0000000..933952b Binary files /dev/null and b/res/mdl/psx-trees/Tree_5.glb differ diff --git a/res/mdl/psx-trees/Tree_6.glb b/res/mdl/psx-trees/Tree_6.glb new file mode 100644 index 0000000..442c973 Binary files /dev/null and b/res/mdl/psx-trees/Tree_6.glb differ diff --git a/res/mdl/psx-trees/Tree_7.glb b/res/mdl/psx-trees/Tree_7.glb new file mode 100644 index 0000000..800f1bb Binary files /dev/null and b/res/mdl/psx-trees/Tree_7.glb differ diff --git a/res/mdl/psx-trees/Tree_8.glb b/res/mdl/psx-trees/Tree_8.glb new file mode 100644 index 0000000..37aeb71 Binary files /dev/null and b/res/mdl/psx-trees/Tree_8.glb differ diff --git a/res/mdl/psx-trees/Tree_9.glb b/res/mdl/psx-trees/Tree_9.glb new file mode 100644 index 0000000..3035c6b Binary files /dev/null and b/res/mdl/psx-trees/Tree_9.glb differ diff --git a/res/save/scene.fgs b/res/save/scene.fgs index 23f4927..cd1e8dc 100644 Binary files a/res/save/scene.fgs and b/res/save/scene.fgs differ diff --git a/res/sdr/mdl_foliage.vs b/res/sdr/mdl_foliage.vs new file mode 100644 index 0000000..db9d7b6 --- /dev/null +++ b/res/sdr/mdl_foliage.vs @@ -0,0 +1,43 @@ +#version 330 + +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec3 vertexNormal; +in vec4 vertexColor; + +uniform mat4 mvp; +uniform mat4 matNormal; + +uniform vec3 sun_direction; +uniform vec3 sun_colour; +uniform float sun_intensity; + +uniform vec3 moon_direction; +uniform vec3 moon_colour; +uniform float moon_intensity; + +uniform vec3 ambient_colour; +uniform float ambient_intensity; + +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + +out vec2 frag_texcoord; +out vec4 frag_colour; +out vec3 frag_lighting; + +void main() { + vec3 world_normal = normalize((matNormal * vec4(vertexNormal, 0.0)).xyz); + float sun_diffuse = abs(dot(world_normal, sun_direction)); + float moon_diffuse = abs(dot(world_normal, moon_direction)); + + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; + + frag_lighting = ambient_light + sun_light + moon_light; + frag_texcoord = vertexTexCoord * uv_tiling + uv_offset; + frag_colour = vertexColor; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/res/sdr/mdl_two_sided_cutoff.fs b/res/sdr/mdl_two_sided_cutoff.fs new file mode 100644 index 0000000..c4ac07e --- /dev/null +++ b/res/sdr/mdl_two_sided_cutoff.fs @@ -0,0 +1,51 @@ +#version 330 + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +uniform vec3 sun_direction; +uniform vec3 sun_colour; +uniform float sun_intensity; + +uniform vec3 moon_direction; +uniform vec3 moon_colour; +uniform float moon_intensity; + +uniform vec3 ambient_colour; +uniform float ambient_intensity; + +in vec2 frag_texcoord; +in vec4 frag_colour; +in vec3 frag_normal; + +out vec4 finalColor; + +void main() { + vec4 texel = texture(texture0, frag_texcoord) * frag_colour; + + if (texel.a < 0.5) { + discard; + } + + texel.rgb += colDiffuse.rgb; + + vec3 normal = normalize(frag_normal); + + if (!gl_FrontFacing) { + normal = -normal; + } + + float sun_diffuse = max(dot(normal, sun_direction), 0.0); + float moon_diffuse = max(dot(normal, moon_direction), 0.0); + + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; + + vec3 lighting = max( + ambient_light + sun_light + moon_light, + vec3(0.0) + ); + + finalColor = vec4(texel.rgb * lighting, 1.0); +} diff --git a/res/sdr/mdl_vtx_lit.vs b/res/sdr/mdl_vtx_lit.vs index c69cb3d..d9b2bce 100644 --- a/res/sdr/mdl_vtx_lit.vs +++ b/res/sdr/mdl_vtx_lit.vs @@ -19,46 +19,27 @@ uniform float moon_intensity; uniform vec3 ambient_colour; uniform float ambient_intensity; +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + out vec2 frag_texcoord; out vec4 frag_colour; out vec3 frag_lighting; +out vec3 frag_normal; -void -main() { - vec3 world_normal = normalize( - (matNormal * vec4(vertexNormal, 0.0)).xyz - ); - - float sun_diffuse = max( - dot(world_normal, sun_direction), - 0.0 - ); - - float moon_diffuse = max( - dot(world_normal, moon_direction), - 0.0 - ); - - vec3 ambient_light = - ambient_colour * ambient_intensity; - - vec3 sun_light = - sun_colour * - sun_intensity * - sun_diffuse; - - vec3 moon_light = - moon_colour * - moon_intensity * - moon_diffuse; +void main() { + vec3 world_normal = normalize((matNormal * vec4(vertexNormal, 0.0)).xyz); + float sun_diffuse = max(dot(world_normal, sun_direction), 0.0); + float moon_diffuse = max(dot(world_normal, moon_direction), 0.0); - frag_lighting = - ambient_light + - sun_light + - moon_light; + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; - frag_texcoord = vertexTexCoord; + frag_lighting = ambient_light + sun_light + moon_light; + frag_texcoord = vertexTexCoord * uv_tiling + uv_offset; frag_colour = vertexColor; + frag_normal = world_normal; gl_Position = mvp * vec4(vertexPosition, 1.0); } diff --git a/res/sdr/mdl_vtx_lit_cutoff.fs b/res/sdr/mdl_vtx_lit_cutoff.fs new file mode 100644 index 0000000..79b3ce2 --- /dev/null +++ b/res/sdr/mdl_vtx_lit_cutoff.fs @@ -0,0 +1,25 @@ +#version 330 + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +in vec2 frag_texcoord; +in vec4 frag_colour; +in vec3 frag_lighting; + +out vec4 finalColor; + +void +main() { + vec4 texel = texture(texture0, frag_texcoord) * frag_colour; + + if (texel.a < 0.5) { + discard; + } + + texel.rgb += colDiffuse.rgb; + + vec3 lighting = max(frag_lighting, vec3(0.0)); + + finalColor = vec4(texel.rgb * lighting, 1.0); +} diff --git a/res/tex/Aquilarius-TEXTURES/texture1.png b/res/tex/Aquilarius-TEXTURES/texture1.png new file mode 100644 index 0000000..0d023cd Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture1.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture10.png b/res/tex/Aquilarius-TEXTURES/texture10.png new file mode 100644 index 0000000..3abed86 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture10.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture100.png b/res/tex/Aquilarius-TEXTURES/texture100.png new file mode 100644 index 0000000..90f434b Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture100.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture101.png b/res/tex/Aquilarius-TEXTURES/texture101.png new file mode 100644 index 0000000..f9a5db3 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture101.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture102.png b/res/tex/Aquilarius-TEXTURES/texture102.png new file mode 100644 index 0000000..12287b2 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture102.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture103.png b/res/tex/Aquilarius-TEXTURES/texture103.png new file mode 100644 index 0000000..492af83 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture103.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture104.png b/res/tex/Aquilarius-TEXTURES/texture104.png new file mode 100644 index 0000000..712a1fb Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture104.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture105.png b/res/tex/Aquilarius-TEXTURES/texture105.png new file mode 100644 index 0000000..c461b9c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture105.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture106.png b/res/tex/Aquilarius-TEXTURES/texture106.png new file mode 100644 index 0000000..e7f944c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture106.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture107.png b/res/tex/Aquilarius-TEXTURES/texture107.png new file mode 100644 index 0000000..f6b66a1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture107.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture108.png b/res/tex/Aquilarius-TEXTURES/texture108.png new file mode 100644 index 0000000..075b45c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture108.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture109.png b/res/tex/Aquilarius-TEXTURES/texture109.png new file mode 100644 index 0000000..5392cc9 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture109.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture11.png b/res/tex/Aquilarius-TEXTURES/texture11.png new file mode 100644 index 0000000..655d2b8 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture11.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture110.png b/res/tex/Aquilarius-TEXTURES/texture110.png new file mode 100644 index 0000000..e3075f4 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture110.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture111.png b/res/tex/Aquilarius-TEXTURES/texture111.png new file mode 100644 index 0000000..d9fcdef Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture111.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture112.png b/res/tex/Aquilarius-TEXTURES/texture112.png new file mode 100644 index 0000000..f5af861 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture112.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture113.png b/res/tex/Aquilarius-TEXTURES/texture113.png new file mode 100644 index 0000000..ff4a217 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture113.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture114.png b/res/tex/Aquilarius-TEXTURES/texture114.png new file mode 100644 index 0000000..944dc82 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture114.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture115.png b/res/tex/Aquilarius-TEXTURES/texture115.png new file mode 100644 index 0000000..efe5a75 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture115.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture116.png b/res/tex/Aquilarius-TEXTURES/texture116.png new file mode 100644 index 0000000..56adac2 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture116.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture117.png b/res/tex/Aquilarius-TEXTURES/texture117.png new file mode 100644 index 0000000..c5837a8 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture117.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture118.png b/res/tex/Aquilarius-TEXTURES/texture118.png new file mode 100644 index 0000000..b1f5bbc Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture118.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture119.png b/res/tex/Aquilarius-TEXTURES/texture119.png new file mode 100644 index 0000000..a627a50 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture119.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture12.png b/res/tex/Aquilarius-TEXTURES/texture12.png new file mode 100644 index 0000000..67fc2a0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture12.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture121.png b/res/tex/Aquilarius-TEXTURES/texture121.png new file mode 100644 index 0000000..631a570 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture121.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture122.png b/res/tex/Aquilarius-TEXTURES/texture122.png new file mode 100644 index 0000000..84d8059 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture122.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture123.png b/res/tex/Aquilarius-TEXTURES/texture123.png new file mode 100644 index 0000000..cf3e6fb Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture123.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture124.png b/res/tex/Aquilarius-TEXTURES/texture124.png new file mode 100644 index 0000000..75294c5 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture124.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture125.png b/res/tex/Aquilarius-TEXTURES/texture125.png new file mode 100644 index 0000000..900f863 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture125.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture126.png b/res/tex/Aquilarius-TEXTURES/texture126.png new file mode 100644 index 0000000..c89a5f4 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture126.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture127.png b/res/tex/Aquilarius-TEXTURES/texture127.png new file mode 100644 index 0000000..ed9dca7 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture127.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture128.png b/res/tex/Aquilarius-TEXTURES/texture128.png new file mode 100644 index 0000000..7de1d1c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture128.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture129.png b/res/tex/Aquilarius-TEXTURES/texture129.png new file mode 100644 index 0000000..1e90003 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture129.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture13.png b/res/tex/Aquilarius-TEXTURES/texture13.png new file mode 100644 index 0000000..b9be89d Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture13.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture130.png b/res/tex/Aquilarius-TEXTURES/texture130.png new file mode 100644 index 0000000..85684d1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture130.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture131.png b/res/tex/Aquilarius-TEXTURES/texture131.png new file mode 100644 index 0000000..c51b830 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture131.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture132.png b/res/tex/Aquilarius-TEXTURES/texture132.png new file mode 100644 index 0000000..5f0cfa4 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture132.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture133.png b/res/tex/Aquilarius-TEXTURES/texture133.png new file mode 100644 index 0000000..41a83f0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture133.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture134.png b/res/tex/Aquilarius-TEXTURES/texture134.png new file mode 100644 index 0000000..97ca751 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture134.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture135.png b/res/tex/Aquilarius-TEXTURES/texture135.png new file mode 100644 index 0000000..fd6b1a0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture135.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture136.png b/res/tex/Aquilarius-TEXTURES/texture136.png new file mode 100644 index 0000000..03d6b12 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture136.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture137.png b/res/tex/Aquilarius-TEXTURES/texture137.png new file mode 100644 index 0000000..b6b0e9a Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture137.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture138.png b/res/tex/Aquilarius-TEXTURES/texture138.png new file mode 100644 index 0000000..b3437a4 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture138.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture139.png b/res/tex/Aquilarius-TEXTURES/texture139.png new file mode 100644 index 0000000..8658732 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture139.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture14.png b/res/tex/Aquilarius-TEXTURES/texture14.png new file mode 100644 index 0000000..2648dd1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture14.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture140.png b/res/tex/Aquilarius-TEXTURES/texture140.png new file mode 100644 index 0000000..516a246 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture140.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture141.png b/res/tex/Aquilarius-TEXTURES/texture141.png new file mode 100644 index 0000000..db0a72c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture141.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture142.png b/res/tex/Aquilarius-TEXTURES/texture142.png new file mode 100644 index 0000000..7f2e638 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture142.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture143.png b/res/tex/Aquilarius-TEXTURES/texture143.png new file mode 100644 index 0000000..bcd2eb0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture143.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture144.png b/res/tex/Aquilarius-TEXTURES/texture144.png new file mode 100644 index 0000000..14794a6 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture144.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture145.png b/res/tex/Aquilarius-TEXTURES/texture145.png new file mode 100644 index 0000000..98bcf83 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture145.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture146.png b/res/tex/Aquilarius-TEXTURES/texture146.png new file mode 100644 index 0000000..fec6a29 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture146.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture147.png b/res/tex/Aquilarius-TEXTURES/texture147.png new file mode 100644 index 0000000..d1706d2 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture147.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture148.png b/res/tex/Aquilarius-TEXTURES/texture148.png new file mode 100644 index 0000000..6406494 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture148.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture149.png b/res/tex/Aquilarius-TEXTURES/texture149.png new file mode 100644 index 0000000..adfe2ba Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture149.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture15.png b/res/tex/Aquilarius-TEXTURES/texture15.png new file mode 100644 index 0000000..c67da24 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture15.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture150.png b/res/tex/Aquilarius-TEXTURES/texture150.png new file mode 100644 index 0000000..484753b Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture150.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture151.png b/res/tex/Aquilarius-TEXTURES/texture151.png new file mode 100644 index 0000000..8de2f79 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture151.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture16.png b/res/tex/Aquilarius-TEXTURES/texture16.png new file mode 100644 index 0000000..3c1bba0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture16.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture17.png b/res/tex/Aquilarius-TEXTURES/texture17.png new file mode 100644 index 0000000..a62f45d Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture17.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture18.png b/res/tex/Aquilarius-TEXTURES/texture18.png new file mode 100644 index 0000000..d7705e6 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture18.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture19.png b/res/tex/Aquilarius-TEXTURES/texture19.png new file mode 100644 index 0000000..e4abbaf Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture19.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture2.png b/res/tex/Aquilarius-TEXTURES/texture2.png new file mode 100644 index 0000000..edc56ef Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture2.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture20.png b/res/tex/Aquilarius-TEXTURES/texture20.png new file mode 100644 index 0000000..9ff2ef7 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture20.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture21.png b/res/tex/Aquilarius-TEXTURES/texture21.png new file mode 100644 index 0000000..874c4d6 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture21.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture22.png b/res/tex/Aquilarius-TEXTURES/texture22.png new file mode 100644 index 0000000..b5b19d1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture22.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture23.png b/res/tex/Aquilarius-TEXTURES/texture23.png new file mode 100644 index 0000000..9b8e421 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture23.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture24.png b/res/tex/Aquilarius-TEXTURES/texture24.png new file mode 100644 index 0000000..9831fce Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture24.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture25.png b/res/tex/Aquilarius-TEXTURES/texture25.png new file mode 100644 index 0000000..c249625 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture25.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture26.png b/res/tex/Aquilarius-TEXTURES/texture26.png new file mode 100644 index 0000000..cac0461 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture26.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture27.png b/res/tex/Aquilarius-TEXTURES/texture27.png new file mode 100644 index 0000000..3ad4df5 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture27.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture28.png b/res/tex/Aquilarius-TEXTURES/texture28.png new file mode 100644 index 0000000..04e6bef Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture28.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture29.png b/res/tex/Aquilarius-TEXTURES/texture29.png new file mode 100644 index 0000000..b1c6820 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture29.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture3.png b/res/tex/Aquilarius-TEXTURES/texture3.png new file mode 100644 index 0000000..03e7661 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture3.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture30.png b/res/tex/Aquilarius-TEXTURES/texture30.png new file mode 100644 index 0000000..cff1761 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture30.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture31.png b/res/tex/Aquilarius-TEXTURES/texture31.png new file mode 100644 index 0000000..bc35ea5 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture31.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture32.png b/res/tex/Aquilarius-TEXTURES/texture32.png new file mode 100644 index 0000000..b5cdccc Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture32.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture33.png b/res/tex/Aquilarius-TEXTURES/texture33.png new file mode 100644 index 0000000..87ba5d1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture33.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture34.png b/res/tex/Aquilarius-TEXTURES/texture34.png new file mode 100644 index 0000000..4e12590 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture34.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture35.png b/res/tex/Aquilarius-TEXTURES/texture35.png new file mode 100644 index 0000000..7d69adb Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture35.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture36.png b/res/tex/Aquilarius-TEXTURES/texture36.png new file mode 100644 index 0000000..f83d577 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture36.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture37.png b/res/tex/Aquilarius-TEXTURES/texture37.png new file mode 100644 index 0000000..d707e6e Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture37.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture38.png b/res/tex/Aquilarius-TEXTURES/texture38.png new file mode 100644 index 0000000..fd68a3c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture38.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture39.png b/res/tex/Aquilarius-TEXTURES/texture39.png new file mode 100644 index 0000000..21d8c17 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture39.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture4.png b/res/tex/Aquilarius-TEXTURES/texture4.png new file mode 100644 index 0000000..b74ad17 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture4.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture40.png b/res/tex/Aquilarius-TEXTURES/texture40.png new file mode 100644 index 0000000..3d0e975 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture40.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture41.png b/res/tex/Aquilarius-TEXTURES/texture41.png new file mode 100644 index 0000000..c8fc94e Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture41.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture42.png b/res/tex/Aquilarius-TEXTURES/texture42.png new file mode 100644 index 0000000..9d28a33 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture42.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture43.png b/res/tex/Aquilarius-TEXTURES/texture43.png new file mode 100644 index 0000000..b181cf8 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture43.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture44.png b/res/tex/Aquilarius-TEXTURES/texture44.png new file mode 100644 index 0000000..e9ed177 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture44.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture45.png b/res/tex/Aquilarius-TEXTURES/texture45.png new file mode 100644 index 0000000..eaee880 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture45.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture46.png b/res/tex/Aquilarius-TEXTURES/texture46.png new file mode 100644 index 0000000..ffa8700 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture46.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture47.png b/res/tex/Aquilarius-TEXTURES/texture47.png new file mode 100644 index 0000000..a25b01b Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture47.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture48.png b/res/tex/Aquilarius-TEXTURES/texture48.png new file mode 100644 index 0000000..dbdcd1f Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture48.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture49.png b/res/tex/Aquilarius-TEXTURES/texture49.png new file mode 100644 index 0000000..a32b66e Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture49.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture5.png b/res/tex/Aquilarius-TEXTURES/texture5.png new file mode 100644 index 0000000..f9908ac Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture5.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture50.png b/res/tex/Aquilarius-TEXTURES/texture50.png new file mode 100644 index 0000000..801460a Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture50.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture51.png b/res/tex/Aquilarius-TEXTURES/texture51.png new file mode 100644 index 0000000..c458b7a Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture51.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture52.png b/res/tex/Aquilarius-TEXTURES/texture52.png new file mode 100644 index 0000000..f653e3d Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture52.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture53.png b/res/tex/Aquilarius-TEXTURES/texture53.png new file mode 100644 index 0000000..968dbc6 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture53.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture54.png b/res/tex/Aquilarius-TEXTURES/texture54.png new file mode 100644 index 0000000..d2c49a0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture54.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture55.png b/res/tex/Aquilarius-TEXTURES/texture55.png new file mode 100644 index 0000000..1658ed4 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture55.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture56.png b/res/tex/Aquilarius-TEXTURES/texture56.png new file mode 100644 index 0000000..ddff4bf Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture56.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture57.png b/res/tex/Aquilarius-TEXTURES/texture57.png new file mode 100644 index 0000000..5295e1a Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture57.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture58.png b/res/tex/Aquilarius-TEXTURES/texture58.png new file mode 100644 index 0000000..7529ccb Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture58.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture59.png b/res/tex/Aquilarius-TEXTURES/texture59.png new file mode 100644 index 0000000..13d26da Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture59.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture6.png b/res/tex/Aquilarius-TEXTURES/texture6.png new file mode 100644 index 0000000..8a3be00 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture6.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture60.png b/res/tex/Aquilarius-TEXTURES/texture60.png new file mode 100644 index 0000000..0fe0f2a Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture60.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture61.png b/res/tex/Aquilarius-TEXTURES/texture61.png new file mode 100644 index 0000000..1790d99 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture61.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture62.png b/res/tex/Aquilarius-TEXTURES/texture62.png new file mode 100644 index 0000000..5bfd80d Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture62.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture63.png b/res/tex/Aquilarius-TEXTURES/texture63.png new file mode 100644 index 0000000..c607d15 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture63.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture64.png b/res/tex/Aquilarius-TEXTURES/texture64.png new file mode 100644 index 0000000..0b51541 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture64.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture65.png b/res/tex/Aquilarius-TEXTURES/texture65.png new file mode 100644 index 0000000..0b67e11 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture65.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture66.png b/res/tex/Aquilarius-TEXTURES/texture66.png new file mode 100644 index 0000000..62c309c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture66.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture67.png b/res/tex/Aquilarius-TEXTURES/texture67.png new file mode 100644 index 0000000..c535440 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture67.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture68.png b/res/tex/Aquilarius-TEXTURES/texture68.png new file mode 100644 index 0000000..d2a4901 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture68.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture69.png b/res/tex/Aquilarius-TEXTURES/texture69.png new file mode 100644 index 0000000..5da78ee Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture69.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture7.png b/res/tex/Aquilarius-TEXTURES/texture7.png new file mode 100644 index 0000000..5f77dfc Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture7.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture70.png b/res/tex/Aquilarius-TEXTURES/texture70.png new file mode 100644 index 0000000..d8c59f6 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture70.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture71.png b/res/tex/Aquilarius-TEXTURES/texture71.png new file mode 100644 index 0000000..81a29fb Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture71.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture72.png b/res/tex/Aquilarius-TEXTURES/texture72.png new file mode 100644 index 0000000..614cfde Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture72.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture73.png b/res/tex/Aquilarius-TEXTURES/texture73.png new file mode 100644 index 0000000..ab7a561 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture73.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture74.png b/res/tex/Aquilarius-TEXTURES/texture74.png new file mode 100644 index 0000000..c68c368 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture74.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture75.png b/res/tex/Aquilarius-TEXTURES/texture75.png new file mode 100644 index 0000000..fac10db Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture75.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture76.png b/res/tex/Aquilarius-TEXTURES/texture76.png new file mode 100644 index 0000000..c05aa1e Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture76.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture77.png b/res/tex/Aquilarius-TEXTURES/texture77.png new file mode 100644 index 0000000..200e3d7 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture77.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture78.png b/res/tex/Aquilarius-TEXTURES/texture78.png new file mode 100644 index 0000000..1d992a7 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture78.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture79.png b/res/tex/Aquilarius-TEXTURES/texture79.png new file mode 100644 index 0000000..01f3032 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture79.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture8.png b/res/tex/Aquilarius-TEXTURES/texture8.png new file mode 100644 index 0000000..29aa67b Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture8.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture80.png b/res/tex/Aquilarius-TEXTURES/texture80.png new file mode 100644 index 0000000..6342352 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture80.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture81.png b/res/tex/Aquilarius-TEXTURES/texture81.png new file mode 100644 index 0000000..70718d8 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture81.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture82.png b/res/tex/Aquilarius-TEXTURES/texture82.png new file mode 100644 index 0000000..6220c7e Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture82.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture83.png b/res/tex/Aquilarius-TEXTURES/texture83.png new file mode 100644 index 0000000..ca66da0 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture83.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture84.png b/res/tex/Aquilarius-TEXTURES/texture84.png new file mode 100644 index 0000000..f219f59 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture84.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture85.png b/res/tex/Aquilarius-TEXTURES/texture85.png new file mode 100644 index 0000000..162abfa Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture85.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture86.png b/res/tex/Aquilarius-TEXTURES/texture86.png new file mode 100644 index 0000000..06d4afe Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture86.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture87.png b/res/tex/Aquilarius-TEXTURES/texture87.png new file mode 100644 index 0000000..ced81ac Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture87.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture88.png b/res/tex/Aquilarius-TEXTURES/texture88.png new file mode 100644 index 0000000..98133b1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture88.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture89.png b/res/tex/Aquilarius-TEXTURES/texture89.png new file mode 100644 index 0000000..1c27096 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture89.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture9.png b/res/tex/Aquilarius-TEXTURES/texture9.png new file mode 100644 index 0000000..fd1fe9d Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture9.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture90.png b/res/tex/Aquilarius-TEXTURES/texture90.png new file mode 100644 index 0000000..7701390 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture90.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture91.png b/res/tex/Aquilarius-TEXTURES/texture91.png new file mode 100644 index 0000000..1b5283c Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture91.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture92.png b/res/tex/Aquilarius-TEXTURES/texture92.png new file mode 100644 index 0000000..6386815 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture92.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture93.png b/res/tex/Aquilarius-TEXTURES/texture93.png new file mode 100644 index 0000000..83dcabd Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture93.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture94.png b/res/tex/Aquilarius-TEXTURES/texture94.png new file mode 100644 index 0000000..1a27d66 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture94.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture95.png b/res/tex/Aquilarius-TEXTURES/texture95.png new file mode 100644 index 0000000..66129df Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture95.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture96.png b/res/tex/Aquilarius-TEXTURES/texture96.png new file mode 100644 index 0000000..d994873 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture96.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture97.png b/res/tex/Aquilarius-TEXTURES/texture97.png new file mode 100644 index 0000000..08acc17 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture97.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture98.png b/res/tex/Aquilarius-TEXTURES/texture98.png new file mode 100644 index 0000000..4026be1 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture98.png differ diff --git a/res/tex/Aquilarius-TEXTURES/texture99.png b/res/tex/Aquilarius-TEXTURES/texture99.png new file mode 100644 index 0000000..ae7ff96 Binary files /dev/null and b/res/tex/Aquilarius-TEXTURES/texture99.png differ diff --git a/res/tex/Road_Empty.png b/res/tex/Road_Empty.png new file mode 100644 index 0000000..42c6e67 Binary files /dev/null and b/res/tex/Road_Empty.png differ diff --git a/res/tex/psx_tex/Grass 1/Grass 1.spp b/res/tex/psx_tex/Grass 1/Grass 1.spp new file mode 100644 index 0000000..4f4aab6 Binary files /dev/null and b/res/tex/psx_tex/Grass 1/Grass 1.spp differ diff --git a/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg b/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg new file mode 100644 index 0000000..da59715 Binary files /dev/null and b/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg differ diff --git a/res/tex/psx_tex/Grass 1/Grass1_PSX.png b/res/tex/psx_tex/Grass 1/Grass1_PSX.png new file mode 100644 index 0000000..750247c Binary files /dev/null and b/res/tex/psx_tex/Grass 1/Grass1_PSX.png differ diff --git a/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg b/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg new file mode 100644 index 0000000..7950ce7 Binary files /dev/null and b/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg differ diff --git a/res/tex/psx_tex/Grass 1/Grass1_Texture.png b/res/tex/psx_tex/Grass 1/Grass1_Texture.png new file mode 100644 index 0000000..f56b691 Binary files /dev/null and b/res/tex/psx_tex/Grass 1/Grass1_Texture.png differ diff --git a/res/tex/psx_tex/Grass 2/Grass 2.spp b/res/tex/psx_tex/Grass 2/Grass 2.spp new file mode 100644 index 0000000..654d4e2 Binary files /dev/null and b/res/tex/psx_tex/Grass 2/Grass 2.spp differ diff --git a/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg b/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg new file mode 100644 index 0000000..379cf02 Binary files /dev/null and b/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg differ diff --git a/res/tex/psx_tex/Grass 2/Grass2_PSX.png b/res/tex/psx_tex/Grass 2/Grass2_PSX.png new file mode 100644 index 0000000..5c9ecc6 Binary files /dev/null and b/res/tex/psx_tex/Grass 2/Grass2_PSX.png differ diff --git a/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg b/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg new file mode 100644 index 0000000..5de2ee7 Binary files /dev/null and b/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg differ diff --git a/res/tex/psx_tex/Grass 2/Grass2_Texture.png b/res/tex/psx_tex/Grass 2/Grass2_Texture.png new file mode 100644 index 0000000..9634f4e Binary files /dev/null and b/res/tex/psx_tex/Grass 2/Grass2_Texture.png differ diff --git a/res/tex/psx_tex/Grass 3/Grass 3.spp b/res/tex/psx_tex/Grass 3/Grass 3.spp new file mode 100644 index 0000000..fe005ad Binary files /dev/null and b/res/tex/psx_tex/Grass 3/Grass 3.spp differ diff --git a/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg b/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg new file mode 100644 index 0000000..83f4f49 Binary files /dev/null and b/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg differ diff --git a/res/tex/psx_tex/Grass 3/Grass3_PSX.png b/res/tex/psx_tex/Grass 3/Grass3_PSX.png new file mode 100644 index 0000000..95f6319 Binary files /dev/null and b/res/tex/psx_tex/Grass 3/Grass3_PSX.png differ diff --git a/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg b/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg new file mode 100644 index 0000000..c0de3ba Binary files /dev/null and b/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg differ diff --git a/res/tex/psx_tex/Grass 3/Grass3_Texture.png b/res/tex/psx_tex/Grass 3/Grass3_Texture.png new file mode 100644 index 0000000..f159256 Binary files /dev/null and b/res/tex/psx_tex/Grass 3/Grass3_Texture.png differ diff --git a/res/tex/psx_tex/Grass 4/Grass 4.spp b/res/tex/psx_tex/Grass 4/Grass 4.spp new file mode 100644 index 0000000..f51d0b2 Binary files /dev/null and b/res/tex/psx_tex/Grass 4/Grass 4.spp differ diff --git a/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg b/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg new file mode 100644 index 0000000..c13851e Binary files /dev/null and b/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg differ diff --git a/res/tex/psx_tex/Grass 4/Grass4_PSX.png b/res/tex/psx_tex/Grass 4/Grass4_PSX.png new file mode 100644 index 0000000..6b31070 Binary files /dev/null and b/res/tex/psx_tex/Grass 4/Grass4_PSX.png differ diff --git a/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg b/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg new file mode 100644 index 0000000..cb318af Binary files /dev/null and b/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg differ diff --git a/res/tex/psx_tex/Grass 4/Grass4_Texture.png b/res/tex/psx_tex/Grass 4/Grass4_Texture.png new file mode 100644 index 0000000..ba9cac1 Binary files /dev/null and b/res/tex/psx_tex/Grass 4/Grass4_Texture.png differ diff --git a/res/tex/psx_tex/Grass 5/Grass 5.spp b/res/tex/psx_tex/Grass 5/Grass 5.spp new file mode 100644 index 0000000..447b52b Binary files /dev/null and b/res/tex/psx_tex/Grass 5/Grass 5.spp differ diff --git a/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg b/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg new file mode 100644 index 0000000..13c70da Binary files /dev/null and b/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg differ diff --git a/res/tex/psx_tex/Grass 5/Grass5_PSX.png b/res/tex/psx_tex/Grass 5/Grass5_PSX.png new file mode 100644 index 0000000..6214c42 Binary files /dev/null and b/res/tex/psx_tex/Grass 5/Grass5_PSX.png differ diff --git a/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg b/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg new file mode 100644 index 0000000..81021d6 Binary files /dev/null and b/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg differ diff --git a/res/tex/psx_tex/Grass 5/Grass5_Texture.png b/res/tex/psx_tex/Grass 5/Grass5_Texture.png new file mode 100644 index 0000000..6302bbb Binary files /dev/null and b/res/tex/psx_tex/Grass 5/Grass5_Texture.png differ diff --git a/save.c b/save.c index 427ad3c..4790446 100644 --- a/save.c +++ b/save.c @@ -564,6 +564,10 @@ read_material_chunk(FILE *fp, SaveLoadContext *ctx, MaterialProperty prop) { (slots - model->mat_cnt) * sizeof(*materials)); + for (size_t j = model->mat_cnt; j < slots; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + model->materials = materials; model->mat_cnt = slots; } @@ -589,6 +593,24 @@ read_material_chunk(FILE *fp, SaveLoadContext *ctx, MaterialProperty prop) { } key[key_len] = '\0'; + + if (prop == MAT_PROP_SHADER) { + cstr replacement = NULL; + + if (strcmp(key, "model") == 0) { + replacement = "default"; + } else if (strcmp(key, "model_cutoff") == 0) { + replacement = "alpha_cutoff"; + } else if (strcmp(key, "vegetation") == 0) { + replacement = "alpha_cutoff_nocull"; + } + + if (replacement) { + free(key); + key = strdup(replacement); + } + } + *field = key; } @@ -656,6 +678,118 @@ write_material_chunk(FILE *fp, MaterialProperty prop) { return chunk_end(fp, &chunk); } +static bool +read_material_uv_chunk(FILE *fp, SaveLoadContext *ctx) { + u32 count; + if (!read_u32_le(fp, &count)) { + return false; + } + + for (u32 i = 0; i < count; ++i) { + u64 pid; + u32 mat_idx; + Vec2 scale, offset; + + if (!read_u64_le(fp, &pid) || + !read_u32_le(fp, &mat_idx) || + !read_f32_le(fp, &scale.x) || + !read_f32_le(fp, &scale.y) || + !read_f32_le(fp, &offset.x) || + !read_f32_le(fp, &offset.y)) { + return false; + } + + if (!pid || pid >= ctx->next_pid || + mat_idx == UINT32_MAX) { + return false; + } + + Entity *ent = entity_get(entity_id_from_pid(pid)); + if (!ent || !ent->mdl.has) { + return false; + } + + ModelCmp *model = &ent->mdl; + + if (mat_idx >= model->mat_cnt) { + size_t slots = (size_t)mat_idx + 1; + if (slots > SIZE_MAX / sizeof(MaterialOverride)) { + return false; + } + + MaterialOverride *materials; + materials = realloc(model->materials, + slots * sizeof(*materials)); + + if (!materials) { + return false; + } + + memset(materials + model->mat_cnt, 0, + (slots - model->mat_cnt) * + sizeof(*materials)); + + for (size_t j = model->mat_cnt; j < slots; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + + model->materials = materials; + model->mat_cnt = slots; + } + + MaterialOverride *material; + material = &model->materials[mat_idx]; + material->uv_scale = scale; + material->uv_offset = offset; + } + + return true; +} + +static bool +write_material_uv_chunk(FILE *fp) { + SaveChunk chunk = {0}; + u32 count = 0; + + for (u32 i = 0; i < entity_count(); ++i) { + const Entity *ent = &entity_data()[i]; + + if (!ent->pid || !ent->mdl.has) { + continue; + } + + count += ent->mdl.mat_cnt; + } + + if (!chunk_begin(fp, "MUVS", &chunk) || !write_u32_le(fp, count)) { + return false; + } + + for (u32 i = 0; i < entity_count(); ++i) { + const Entity *ent = &entity_data()[i]; + + if (!ent->pid || !ent->mdl.has) { + continue; + } + + for (u32 j = 0; j < ent->mdl.mat_cnt; ++j) { + const MaterialOverride *material; + material = &ent->mdl.materials[j]; + + if (!write_u64_le(fp, ent->pid) || + !write_u32_le(fp, j) || + !write_f32_le(fp, material->uv_scale.x) || + !write_f32_le(fp, material->uv_scale.y) || + !write_f32_le(fp, material->uv_offset.x) || + !write_f32_le(fp, material->uv_offset.y)) { + return false; + } + } + } + + return chunk_end(fp, &chunk); +} + static bool read_physics_shape(FILE *fp, PhysicsShape *shape) { *shape = (PhysicsShape){0}; @@ -1192,9 +1326,15 @@ save_file_read(cstr path) { MaterialProperty prop; prop = memcmp(label, "MTEX", 4) == 0 ? - MAT_PROP_TEXTURE : MAT_PROP_SHADER; + MAT_PROP_TEXTURE : MAT_PROP_SHADER; success = read_material_chunk(fp, &ctx, prop); + } else if (memcmp(label, "MUVS", 4) == 0) { + if (!read_entt) { + success = false; + break; + } + success = read_material_uv_chunk(fp, &ctx); } else if (memcmp(label, "PHYS", 4) == 0) { if (!read_entt) { TraceLog(LOG_ERROR, "PHYS found before ENTT."); @@ -1257,6 +1397,7 @@ save_file_write(cstr path) { write_model_chunk(fp) && write_material_chunk(fp, MAT_PROP_TEXTURE) && write_material_chunk(fp, MAT_PROP_SHADER) && + write_material_uv_chunk(fp) && write_physics_chunk(fp); if (fclose(fp) != 0) { -- cgit v1.2.3