U ovom projektu ostvarena je simulacija tkanine pomoću sistema opruga. Koriste se tri tipa opruga između točaka tkanine koji simuliraju strukturalnu čvrstoću tkanine, otpor tkanine na smicanje, te otpor na savijanje. Iscrtavanje scene vrši se pomoću Vulkan sučelja, dok se izračuni opruga te kolizija izvršavaju na procesoru, nakon čega se učitavaju u memoriju grafičkog koprocesora.
Izvor slike i ideje: UCI CS114: Cloth Simulation using Mass-Spring System
Nakon kloniranja repozitorija, potrebno je učitat git pod-repozitorije. Konkretno, koristi se Vulkan Memory Allocator za lakše upravljanje memorijom na grafičkoj kartici.
git submodule init
git submodule update
Za prevođenje je također potrebno instalirat Vulkan SDK. Makefile se treba urediti tako da se varijabla VULKAN_SDK_PATH postavi na putanju do trenutne instalacije Vulkan SDK-a.
Za prevođenje se koristi standardni makefile. make
prevodi izvorne datoteke u izvršnu datoteku SimulacijaTkanine. make shaders
prevodi shadere iz GLSL oblika u SPIR-V izvršni oblik koji se učitavaju na grafičku karticu. Izvršni program (SimulacijaTkanine) pretpostavlja da se izvršni shaderi nalaze u direktoriju shaders relativno na putanju u kojoj se program izvršava.
Ukoliko je Vulkan SDK instaliran globalno, dovoljno je samo pokrenut program SimulacijaTkanine. U suprotnom, potrebno je postavit okolišnu (environment) varijablu LD_LIBRARY_PATH na putanju do Vulkan biblioteke, te ako je program preveden s podrškom za debugiranje, varijablu VK_LAYER_PATH na putanju do Vulkan validacijskih slojeva (validation layers). Komanda make test
automatski postavlja navedene varijable s obziron na postavljeni VULKAN_SDK_PATH u Makefile-u te pokreće program.
Kroz scenu se pogled mijenja micanjem kursora, a kreće se pomoću tipka W, A, S i D, razmaknicom za dizanje, te X za spuštanje. Tipkom F se uključuje mreža linija tkanine, a tipkom G mreža opruga. Budući da se kod iscrtavanja opruga kod svake sličice u grafičku memoriju učitava velika količina podataka, ne preporuča se uključivanje tog iscrtavnja kod više od 100 točaka tkanine (n > 10).
Program opcionalno prima dvije vrijednosti kod pokretanja: redni broj scene (1-3) te broj točaka (n) uz duž jedne dimenzije tkanine. Ukupni broj točaka tkanine je n2. Ako se program pokreće pomoću make-a, sintaksa za postavljanje navedenih vrijednosti je sljedeća:
make test SCENE=1 POINTS=10