VisPy je interaktivna 2D/3D biblioteka za vizualizaciju
podataka temeljena na
OpenGL biblioteci. Svrha VisPy
modula je pružiti jednostavno sučelje za kreiranje jednostavnih ili složenih grafičkih vizualizacija. VisPy
mogu koristiti korisnici koji imaju manje ili više znanja o programiranju 2D/3D računalne grafike budući da
sami modul sadrži nekoliko razina na kojima se može kreirati sadržaj, a koje se razlikuju prema složenosti.
Korisnici VisPya mogu se podijeliti u dvije kategorije:
Korisnici u ovoj kategoriji mogu pisati vlastite vizualizacije pomoću vispy.gloo (zahtijeva poznavanje OpenGL/GLSL-a).
Znanstvenici kojima je potreban alat visokih performansi za izradu kompleksnih grafikona i vizualizacija. Koriste se sučelja vispy.plot i vispy.scene za rad na visokoj razini.
Jedina obvezna biblioteka koju VisPy zahtijeva je numpy. Ostale biblioteke preuzimaju se i uključuju prema potrebi onoga što se kreira. Također, VisPy zahtijeva najmanje jedan alat za kreiranje OpenGL konteksta kao što su pyqt v4,v5 ili v6, zatim pyside v2 ili v6, glfw, sdl2, wx, pyglet ili tkinter.
VisPy intenzivno koristi grafičku karticu instaliranu na vašem sustavu. Točnije, VisPy koristi grafičku procesorsku jedinicu (GPU) kroz shadere. VisPy stoga zahtijeva relativno noviju grafičku karticu kao i ažurirani upravljački program za video kako bi vispy mogao pristupiti programabilnom cjevovodu (za razliku od fiksnog cjevovoda).
Prije instaliranja VisPy-a trebate osigurati da je na vašem računalu instalirana radna verzija pythona, uključujući sve neophodne pakete navedene ranije. Jednostavan način za instaliranje većine ovih zahtjeva je instaliranje Anaconda python distribucije. Anaconda će umjesto vas instalirati većinu VisPy ovisnosti. Ako vaše računalo nema dovoljno prostora na tvrdom disku ili želite minimalnu instalaciju pythona, možete instalirati Miniconda paket. Nakon što se Anaconda instalira, stvorite conda python okruženje.
Shaderi su dijelovi programa koji izravno komuniciraju s GPU i izvode se tijekom renderiranja. Ovisno o prirodi shadera (postoji mnogo vrsta ovisno o verziji OpenGL-a koju koristite), oni će djelovati u različitim fazama cjevovoda renderiranja.
Ideja modernog GL-a je da su vrhovi pohranjeni na GPU-u i da ih je potrebno učitati samo jednom u GPU prije renderiranja. Način da se to učini je izgraditi međuspremnike na CPU i poslati ih na GPU. Ako se podaci ne promijene, ne morate ih ponovno učitavati. To je velika razlika u odnosu na prethodni fiksni cjevovod gdje su se podaci učitavali pri svakom pozivu za renderiranje (samo su prikazni popisi ugrađeni u GPU memoriju).
Attribute tip varijable odnosi se na tip koji sadrži atribut koji opisuje određeni čvor. Primjerice
prikazuje isječak shadera koji sadrži vektor veličine 2 i vektor veličine 4 a koji se respektivno odnose na poziciju i boju točke.
UNIFORMUniform tip varijable odnosi se na varijable čija je vrijednost "uniformna" odnosno konstantna za svaki iscrtani čvor. Primjerice
prikazuje isječak shadera koji, uz dvije ranije navedene varijable sadrži i varijablu tipa uniform koja pohranjuje vrijednost faktora skaliranja koji mora biti jednak za svaki čvor.
VARYINGVarying tip varijable odnosi se na podatak koji se prenosi između sloja fragmenta i sloja čvora. Primjerice, prosljeđujemo boju čvora fragmentu za sjenčanje
a zatim u fragment shaderu napišemo
Za početak će se prikazati najjednostavniji primjer shader programa. Prvi korak je uvoz potrebnih bibioteka kao što je prikazano u nastavku
Za potrebe projekta preuzeto s vispy.org.
Slika 1: Jednostavan primjer iscrtavanja
Autorski rad.
Slika 2: Kvadrat u VisPyju
Autorski rad.
Slika 3: Cvijet u VisPyju (autorski rad)
Za potrebe projekta preuzeto s vispy.org.
Slika 4: Rotirajuća kocka u VisPyju
Za potrebe projekta preuzeto s vispy.org.
Slika 5: Geometrijska tijela u VisPyju