Snadný vulkan
Easy Vulkan

Author
Advisor
Milet, TomášReferee
Chlubna, TomášGrade
DAltmetrics
Metadata
Show full item recordAbstract
Zatiaľ čo staršie grafické API (Application Programming Interface) ako OpenGL alebo DirectX verzie 11 a nižšej sa v súčasnosti stále bežne používajú, novšie rozhrania API, najmä DirectX 12 a Vulkan, prinášajú mnohé vylepšenia, ako je lepší výkon, natívny Ray-tracing na podporovanom hardvéri a efektívnejšie využitie CPU a GPU. Vylepšenia výkonu a efektívnosti sú výsledkom povahy rozhraní DirectX 12 a Vulkan API. Obidve sú pomerne nízkoúrovňové API. To znamená, že GPU je možné ovládať na oveľa nižšej úrovni, čo má za následok oveľa viac kódu potrebného, aby boli dosiahlnuté podobné výsledky ako pri použití staršieho rozhrania API. Táto práca predstavuje nový framework, vkEasy, ktorý zapuzdruje Vulkan API takým spôsobom, že väčšina jeho funkcií zostáva použiteľná, ale výrazne uľahčuje používanie Vulkan API na vkresľovacie alebo výpočtové operácie. Zdrojový kód obsahuje príklady, ktoré boli implementované pomocou vkEasy, aby ukázali jednoduchosť vkEasy a porovnali ho s kódom napísaným v čistom Vulkane. Bolo pozorované priemerne 94% zníženie potrebných riadkov kódu. While older graphics APIs (Application Programming Interface) like OpenGL or DirectX of version 11 and lower are still commonly used nowadays, newer APIs especially DirectX 12 and Vulkan bring many enhancements like better performance, native Ray-tracing on supported hardware, and more efficient CPU and GPU usage. Performance and efficiency enhancements are the results of the nature of DirectX 12 and Vulkan APIs. Both are quite low-level APIs. That means that GPUs can be controlled on a much lower level which results in much more code that needs to be written to get similar results as when an older API is used. This thesis presents a new framework, vkEasy, that encapsulates Vulkan API in a way that most of its features stay usable, but makes it much easier to use Vulkan API for rendering or compute operations. Source code contains examples that were implemented using vkEasy to show simplicity of vkEasy and to compare it to raw Vulkan code. Average 94 % reduction in needed lines of code was observed.
Keywords
Vulkan, jednoduchý, SPIR-V, GLSL, grafický, framework, knižnica, zjednodušenie, render graf, VMA, Shaderc, Vulkan, easy, SPIR-V, GLSL, graphics, framework, library, simplification, render graph, VMA, ShadercLanguage
angličtina (English)Study brunch
Počítačová grafika a interakceComposition of Committee
prof. Dr. Ing. Pavel Zemčík, dr. h. c. (předseda) doc. Ing. Peter Chudý, Ph.D., MBA (místopředseda) Ing. David Bařina, Ph.D. (člen) doc. RNDr. Milan Češka, Ph.D. (člen) Ing. František Grézl, Ph.D. (člen) Ing. Tomáš Milet, Ph.D. (člen)Date of defence
2022-06-22Process of defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm D. Otázky u obhajoby: V sekci 2.2 je psáno "...users who do not know connections between objects can be confused same as I was when I started implementing vkEasy with zero knowledge about Vulkan." - Z této věty chápu, že jste začal implementovat knihovnu bez znalosti Vulkan API, což se zdá být velmi nepravděpodobné. Prosím objasněte toto tvrzení. Jak je z implementačního hlediska vyhodnocen zmíněný "frame graph"? Stručně popište implementovaný algoritmus. Proč nebyl použit v textu doporučený zdroj o V-EZ API? Srovnejte Vaše řešení s tímto API. Vyhodnocoval jste výkonnost řešení? Jak probíhalo testování? Jaké bylo pokrytí funkcí API Vulkan?Result of the defence
práce byla úspěšně obhájenaPersistent identifier
http://hdl.handle.net/11012/207843Source
HALÁS, T. Snadný vulkan [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2022.Collections
- 2022 [127]