Master's Thesis

Ubershaders and Optimized Shaders for Virtual Scene Rendering

Final Thesis 7.33 MB

Author of thesis: Ing. Adam Ruža

Acad. year: 2025/2026

Supervisor: Ing. Jan Pečiva, Ph.D.

Reviewer: Ing. Tomáš Chlubna, Ph.D.

Abstract:

This work is dedicated to an implementation of a C++ library for a management of specific shaders in Vulkan. The library manages Vulkan Pipeline and Shader objects used for rendering a virtual 3D scene on a graphics card. Shaders and pipelines can be created in a various degree of optimization, thus trading ability to render broader range of objects for better performance. The most general option able to render the most objects is called an Ubershader. Creating too many optimized pipelines can be time demanding. This library aims to mitigate this problem by leveraging caching and asynchronous threads.

Keywords:

Vulkan, C++, Rendering, Shader

Date of defence

25.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaEznamka

Grading

E

Process 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 E.

Topics for thesis defence

  1. V textu je psáno „V prípade optimalizácie atribútov...odbudne potreba Geometry shaderu, pretože nie je potrebné vykonávať interpoláciu atribútov“. Proč je použití geometry shaderu pro interpolaci atributů považováno za standardní přístup? Většinou se implicitní interpolace atributů v pipeline použivá bez nutnosti dělat tuto operaci ručně v geometry shaderu.
  2. Proč je fakt že „Súbory zaberajú miesto na disku rádovo v kB až MB“ problémem z hlediska načítání shaderů? Tato velikost se nezdá být příliš velká. Jak často lze předpokládat, že v reálných aplikacích budou shadery velké např. desítky MB?
  3. Vysvětlete, jaký je rozdíl mezi obr. 4.1 a 4.2. Kde je viditelné, že na obr. 4.2 je barva uložena ve vrcholech modelu?
  4. Vysvětlete konkrétněji proč je doba kompilace výrazně vyšší u zapnuté optimalizace textur oproti, například, kombinaci textur a materiálů, viz tab. 4.2.
  5. V kapitole meření je uvedeno, že „Pozícia kamery v scéne môže byť zásadný faktor na počet spustení fragment shadera.“ Jak bylo měření prováděno? Jak byla kamera umístěná do scény? Měnila se její pozice?
  6. Konzultoval jste textovou část s vedoucím?

Language of thesis

Slovak

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Computer Graphics and Interaction (NGRI)

Composition of Committee

prof. Ing. Adam Herout, Ph.D. (předseda)
prof. Dr. Ing. Pavel Zemčík, dr. h. c. (místopředseda)
doc. RNDr. Milan Češka, Ph.D. (člen)
Ing. David Bařina, Ph.D. (člen)
doc. Ing. Vítězslav Beran, Ph.D. (člen)
Ing. Tomáš Milet, Ph.D. (člen)

Supervisor’s report
Ing. Jan Pečiva, Ph.D.

Práce je nadstandardní jak svým rozsahem, tak svou hloubkou. Bylo potřeba pochopit mnoho pokročilých témat z oblasti renderingu, grafického rozhraní Vulkan, physically-based renderingu a vícevláknového programování a synchronizace. Dále bylo potřeba vytvořit softwarové řešení nemalého rozsahu složeného z generátoru shaderů, jejich asynchronní kompilace, řízení cache pro tyto shadery, rendrování scény využívající jak obecných ubershaderů, tak optimalizovaných shaderů. Dále celý měřící systém, který změřil parametry celého řešení a ukázal tak na správný způsob rendrování scény, který přináší optimální výkonnostní výsledky.


Pro splnění tak rozsáhlého úkolu s tak dobrými výsledky navrhuji hodnocení A-100 bodů.

Evaluation criteria Verbal classification
Information about assignment

Práce se zabývá velmi pokročilým tématem na pomezí grafických shaderů, jejich generování, ukládání do cache, přepínáním, ale i různými osvětlovacími modely. Nakonec jsou zde otázky efektivity, které práce měřila a které vyžadovaly hluboké porozumění mnoha z těchto témat.

Student projevil zájem o toto téma a pilně na něm pracoval. Splnil všechny body zadání k plné spokojenosti svého vedoucího. Rozsah celé práce považuji za nadstandardní s velmi zajímavými výsledky.

Activity during solution, consultations, communication

Práce byla dokončena včas a její obsah prokonzultován.

Publication activity, awards

Výsledný software je v plánu začlenit do vizualizační knihovny CADR pro vizualizaci CAD modelů, která je vyvíjena ve spolupráci se Švýcarskou firmou Cadwork Informatik CI AG v rámci smluvního výzkumu s fakultou. Vzhledem k velmi přínosným praktickým výsledkům jsem diplomovou práci navrhl na ocenění mimořádným stipendiem určeným právě pro mimořádné firemní diplomové práce.

Celá práce byla zveřejněna na internetu formou open-source.

Work with literature

Během řešení si student sám sháněl literaturu dle momentálně řešených problémů.

Activity during solution, consultations, communication

Student byl aktivní a chodil na konzultace. Na ně byl velmi dobře připraven s mnoha detaily svého řešení a mnoha novými poznatky. O jeho nadšení pro projekt svědčí i délka konzultací, která se v mnoha případech protáhla i na 4 hodiny velmi zajímavého času.

Points proposed by supervisor: 100

Grade proposed by supervisor: A

Reviewer’s report
Ing. Tomáš Chlubna, Ph.D.

Realizační část práce je nadprůměrná, dosažené výsledky jsou vynikající a dobře zhodnocené a autor prokázal pokročilé znalosti v oblasti optimalizací vykreslování 3D geometrie na GPU. Textová zpráva je zatížena velkým množstvím nedostatků ve všech směrech a kvalitativně nedosahuje požadované úrovně pro diplomovou práci.


Implementace je komplexní a má vědecký potenciál. Také je publikována jako součást existujícího frameworku a provedená měření jsou velmi podrobná a vypovídající o excelentní úrovni realizace. Textová zpráva však je pravým opakem a trpí závažnými nedostatky z hlediska prezentace, struktury, i formální úpravy. Autor by měl být schopen tyto nedostatky opravit tak, aby mohl práci odevzdat na nové posouzení v letním termínu obhajob. Prosím komisi o zvážení návrhu přepsání textu a nové obhajoby ještě tento akademický rok.

Evaluation criteria Verbal classification Points Max. points
The extent to which the requirements of the assignment have been met

Evaluation level: assignment fulfilled

Všechny body zadání byly plněny.

Extent of the technical report

Evaluation level: is within the usual extent

Rozsahem je zpráva v obvyklém rozmezí, nicméně nevhodné rozložení informací mezi kapitolami a nadbytečné popisy kódu výrazně zhoršují čitelnost.

Dle nástroje FIT Thesis Checker je teoretická kapitola dlouhá 46, zatímco kapitola návrhu a implementace 25 normostran. Tento nepoměr se odráží na zhoršené čitelnosti, kdy v teorii se nachází místy zbytečné informace (např. popis vývoje GPU architektur na str. 8-22), zatímco v návrhové části chybí vysokoúrovňový popis řešení. Samotné řešení je celkově popsáno spíše nedostatečně.

V textu je vloženo velké množství zdrojových kódů (odhadem by zabraly asi 7 stran celkově). Tyto kódy jsou ve většině případů jen ukázky API bez významné informační hodnoty pro pochopení práce. Stejně tak příloha A je naprosto zbytečná a jedná se jen o 9 stran souvislého kódu. I některé algoritmy, jako např. Alg. 3, jsou spíše přepisem kódu včetně implementačních detailů (např. ukazatele). Podobně, celá str. 47 je zbytečně zabraná vizualizací struktury adresáře projektu.

Presentation level of the technical report

Struktura zprávy se odchyluje od standardního formátu, spojení návrhu a implementace vede k zhoršené čitelnosti a některé části by bylo vhodné restrukturovat.

V úvodu chybí popis struktury zprávy. Mezi nadpisem 2 a 2.1, i jinde, chybí úvodní text. Sekce 2.1 obecně popisující Vulkan, mohla být umístěna dříve, jelikož je Vulkan v předchozích sekcích zmiňován. Některé věty se nezdají být fakticky správně, např. ...derivovaný z uhla lomu (ior) materiálu. Pojem ior správně značí index of refraction a ne úhel. V algoritmech se místy vyskytují tzv. magické konstanty, které by bylo lépe jasně označit. Na str. 68-73 v kapitole měření se nachází popisy standardních materiálů, které patří spíše do teorie.

Popis návrhu a implementace je spojen do jedné kapitoly. Toto spojení zhoršuje pochopitelnost, jelikož jasný popis návrhu z vyšší úrovně v textu chybí. Popis implementačních detailů je pak místy velmi chaotický a jejich kontext není jasný. Některé výsledky měření mohly být vysázeny jako grafy, např. tab. 4.3.

56 100
Formal preparation of a technical report

Text je zatížen velkým množstvím chyb, které jsou místy základní a zřetelně viditelné a výrazně snižují celkovou kvalitu práce.

V textu jsou patrné překlepy a chyby (např. tečka místo čárky, nadbytečná slova, chybějící tečky na konci vět, chybějící nebo nadbytečné mezery, proměnlivé rody slov jako pipeline někdy v ženském a jindy v mužském rodě, pravděpodobně zdeformované názvy proměnných jako 0○, či náhodné písmenka bez významu). Chyba hned v první větě celé práce, v abstraktu, kazí první dojem a odráží kvalitu textu ve zbytku práce. Anglický překlad abstraktu je až příliš volný a používá jiné termíny než slovenský. Některé chyby jsou jasně viditelné (např. chyba ve slově primitivúm, kde se správný tvar nachází hned o řádek výše na stejné pozici) a ukazují, že text nebyl důkladně překontrolován autorem. První mluvnická osoba množného čísla místy narušuje technický ráz textu. Na některých místech jsou nevhodně použity spojovníky místo pomlček. Odkazy vysázené přímo v textu v závěru mohly být raději v poznámce pod čarou.

Odkazy na objekty místy nejsou konzistentní, např. odkaz pseudoalgrotimus 3 obsahuje překlep, odkazuje na objekt typu algoritmus (bez předpony pseudo), a samotný název v popisku je navíc anglicky Algorithm. Mnoho objektů není referencováno v textu (např. obr. 2.22, kód 1, rovnice 2.2, tab 2.1, apod.) Některé objekty nejsou ani označeny číslem (např. kód na str. 23 či obrázek na str. 50). Místy jsou odkazy uvedeny bez typu objektu (např. viď 2.5 přičemž tento odkaz navíc ukazuje na jiné číslo rovnice, než je uvedeno). V rovnici 2.1 není definována proměnná n. Písmo použité v obr. 2.24 nekoresponduje se související rovnicí (názvy proměnných v kurzívě). V rovnici 2.3 je použit symbol * pro násobení, zatímco jinde je správně tečka. 

Obrázky schémat, vytvořené autorem, jsou pěkné a jsou ve vektorovém formátu. Nicméně popisky obrázků jsou nekonzistentní, např. v obr. 2.2 je popisek rozdělen nesmyslně na dva řádky, některé popisky končí tečkou a jiné ne. Ve třech popiscích (obr. 3.7-9) je zkopírován chybný tvar slova. Seznamy jsou často v nestandardním formátu bez odsazení položek (např. str. 23), jednotlivé položky nejsou odděleny interpunkcí a některé seznamy nejsou ani uvedeny větou. Obr. 2.25 je překreslen dle předlohy z citovaného zdroje ale kvalita se zhoršila (nekonzistentně zarovnané a přetékající texty).

Na str. 8 se v textu nachází duplicitní věta a část zdrojového kódu z prostředí LaTeX. Na str. 28 a 44 se nachází velká vertikální mezera. Některé pojmy jako vkCreateGraphicsPipelines jsou vysázeny v rozdílných typech písma. Speciálně vysázené pojmy často způsobují nevhodné zalomení řádků (např. str. 32), nebo přetékání za okraj stránky (např. str. 35).

36 100
Work with literature

V textu je na vhodných místech citováno 30 relevantních a většinou odborných zdrojů, některé citace jsou neúplné.

Zdroj [26] je odkazem na oficiální Vulkan tutorial. Zdroje [3, 8, 22, 24] jsou odkazy na blogy. V citacích [4, 21, 25] chybí informace jako název periodika či DOI.

Před odkazy na poznámky pod čarou se často nachází nevhodně mezery. Poznámek pod čarou se v textu místy nachází až příliš, např. odkazy 37 a 38 na str. 32 odkazují na stejnou webovou adresu, lišící se pouze jinou sekcí textu.

89 100
Realisation output

Implementace je komplexní a plně funkční. Implementované optimalizace přináší jasné zlepšení efektivity vykreslování.

V implementaci jsou použity pokročilé principy moderního C++ a programování GPU. Organizace kódu je na dobré úrovni. Výsledná knihovna je integrována do interaktivní 3D scény, která dobře demonstruje efektivitu navržených optimalizací.

Výsledky byly velmi podrobně zhodnoceny a měření je detailní, zahrnující rychlost kompilace shaderů i samotného vykreslování scény, použití různých scén, kombinace implementovaných optimalizací a vše je realizováno na čtyřech odlišných HW konfiguracích.

100 100
Usability of results

Práce rozšiřuje existující software, implementuje inovativní optimalizační metody a také je velmi dobře porovnává. Práce je vědeckého charakteru a mohla by vést i k publikaci.

Výsledné kódy jsou volně dostupné jako open-source software. Vytvořená knihovna a ukázková aplikace ukazují výkonnostní výhody navržených optimalizací a mohou tak sloužit jako podklady k v praxi využitelným postupům při programování 3D aplikací.

The difficulty of the assignment

Evaluation level: more difficult assignment

Splnění zadání vyžaduje dobré znalosti o optimalizacích výpočtů na GPU a také o poměrně složitém Vulkan API.

Implementace optimalizací shaderů je komplexní a autor do hloubky nastudoval danou problematiku.

Topics for thesis defence:
  1. Proč je fakt že „Súbory zaberajú miesto na disku rádovo v kB až MB“ problémem z hlediska načítání shaderů? Tato velikost se nezdá být příliš velká. Jak často lze předpokládat, že v reálných aplikacích budou shadery velké např. desítky MB?
  2. V textu je psáno „V prípade optimalizácie atribútov...odbudne potreba Geometry shaderu, pretože nie je potrebné vykonávať interpoláciu atribútov“. Proč je použití geometry shaderu pro interpolaci atributů považováno za standardní přístup? Většinou se implicitní interpolace atributů v pipeline použivá bez nutnosti dělat tuto operaci ručně v geometry shaderu.
  3. Vysvětlete, jaký je rozdíl mezi obr. 4.1 a 4.2. Kde je viditelné, že na obr. 4.2 je barva uložena ve vrcholech modelu?
  4. Vysvětlete konkrétněji proč je doba kompilace výrazně vyšší u zapnuté optimalizace textur oproti, například, kombinaci textur a materiálů, viz tab. 4.2.
  5. V kapitole meření je uvedeno, že „Pozícia kamery v scéne môže byť zásadný faktor na počet spustení fragment shadera.“ Jak bylo měření prováděno? Jak byla kamera umístěná do scény? Měnila se její pozice?
Points proposed by reviewer: 49

Grade proposed by reviewer: F

Responsibility: Mgr. et Mgr. Hana Odstrčilová