3D grafikas atveidošana reālā laikā ar Vulkan API
Author
Bendrups, Alfrēds
Co-author
Latvijas Universitāte. Datorikas fakultāte
Advisor
Freivalds, Kārlis
Date
2017Metadata
Show full item recordAbstract
Maģistra darba mērķis veikt pētījumu par dažādām 3D grafikas atveidošanas iespējām uz mūsdienu datoriem, fokusējoties uz Vulkan programmsaskarni (turpmāk API), apskatot tās stiprās un vājas puses kā arī atšķirības no alternatīvām. Līdz šim tirgu ir dominējušas 2 API, lai izmantotu videokartes grafisko procesoru (turpmāk GPU) grafikas atveidošanai – OpenGL un DirectX. Tā kā mūsdienās 3D grafikas detalizācija un sarežģītība ir augoša, ir nepieciešami jauni risinājumi, kas precīzāk atbilst mūsdienu datoru arhitektūrai un ierīču daudzveidībai, kā arī dotu izstrādātājiem lielāku kontroli pār visiem notiekošajiem aprēķinu procesiem. Darba ietvaros ir izstrādāti divi 3D grafikas dzinēji. Vienā ir izmantots OpenGL, bet otrā Vulkan. Izstrādātie dzinēji nodrošina sekojošu funkcionalitāti: 3D objektu ielāde no modelēšanas programmām (.obj failu formāts), novērotāja kamera un perspektīva, 3D modeļa attēlošana, objektu tranformācijas (XYZ pozīcija, XYZ rotācija, izmērs), tekstūru kartēšana uz objektu virsmām un virziena gaisma. Abu izstrādāto dzinēju veiktspējas ir salīdzinātas pēc sekojošiem parametriem: kadri sekundē, CPU kopējā noslodze, RAM un VRAM patēriņš un daudzu CPU kodolu lietojums. Izstrādātais Vulkan dzinējs ir ievērojami ātrāks par OpenGL analogu. Atslēgvārdi: Vulkan API, OpenGL, DirectX, 3D graphics, Rendering, GPU computing. The main purpose of this paper is to make a research in the field of different avalaible 3D graphics rendering choices on contemporary computer systems with a in-depth focus on Vulkan API, looking into it’s strength, weaknesses as well as differences from the it’s alternatives and the current user-cases and their successes or failures. So far the graphics market has been dominated by 2 APIs to render 3D graphics – OpenGL and DirectX (Direct3D). Since the complexity and the level of detail in 3D graphics is ever-growing, developers are in need of more robust tools which can utilize the architecture of the modern computer devices as well as give the developers better control over the internal computation processes. Vulkan API is considered to be the next level graphics and GPU computation API, which promises to solve many problems and needs of contemporary computer systems. Two seperate graphics engines have been developed within the scope of this paper – one using OpenGL and another using Vulkan. Both engines support .obj model loading, texture mapping, object transformations (translation, rotation and scaling), viewer camera and perspective and directional lights. The performance of both engines is compared using the following parameters: frames per second, total CPU usage, RAM and VRAM usage and ability to utilize multiple CPU cores. Keywords: Vulkan API, OpenGL, DirectX, 3D graphics, Rendering, GPU computing.