KŘÍŽ, D. Jazyk pro prototypování vizualizací [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2025.

Posudky

Posudek vedoucího

Milet, Tomáš

Se studentovou prací jsem spokojen. Student konzultoval pravidelně. Na konzultacích byl připraven. Jeho pozitivní přístup hodnotím velmi kladně. Výborně.

Dílčí hodnocení
Kritérium Známka Body Slovní hodnocení
Informace k zadání Student hledal zadání, které by bylo užitečné a dostatečně komplikované, a které by jej zároveň bavilo. Vybral si tvorbu vlastního jazyka pro vizualizace a pro prototypování grafických efektů. Zadání je složité.
Práce s literaturou Student pracoval s doporučenými zdroji a vyhledával si vlastní.
Aktivita během řešení, konzultace, komunikace Student konzultoval pravidelně, na konzultace chodil připravený. Ukázal aktuální stav práce a vždy efektivním způsobem sdělil, co právě řeší a s čím potřebuje poradit.
Aktivita při dokončování Student byl aktivní, ale v závěru se mu nedostávalo času kvůli množství práce i mimo fakultu. Vzhledem k nekompatibilitě studentových rozvrhů a rozvrhů vedoucího, nebyl finální text práce zkonzultován. Jeho průběžný stav však ano.
Publikační činnost, ocenění Studentova práce má potenciál být využita jako engine pro budování nejrůznějších vizualizací.
Navrhovaná známka
A
Body
90

Posudek oponenta

Pečiva, Jan

Práce má inovativní téma. Praktická část se blíží rozsahu, který se pohybuje na spodní hranici toho, co je přijatelné pro diplomovou práci. Projekt byl pravděpodobně dokončován do poslední chvíle, neboť některé funkcionality vyžadovaly triviální zásahy do zdrojových souborů pro jejich demonstraci. Měření pak bylo provedeno chybně, čímž jsou znehodnoceny z něj vyvozené závěry. Nicméně z práce jde vidět, že student zvládnul mnoho netriviálních témat z počítačové grafiky, včetně programování shaderů. Textová část je náročná na pochopení a obsahuje množství nepřesností. Nicméně je úhledná a s kvalitní bibliografií. Celkově práci hodnotím jako E-55 bodů .

Dílčí hodnocení
Kritérium Známka Body Slovní hodnocení
Náročnost zadání
Rozsah splnění požadavků zadání Zadání bylo splněno s touto výhradou: Měření v závěru práce bylo provedeno chybně a znehodnotilo jakékoliv na něj navazující úvahy.
Rozsah technické zprávy Technická zpráva se svým rozsahem pohybuje zhruba kousek pod maximálním rozsahem.
Prezentační úroveň technické zprávy 65 Text práce je těžký na pochopení všech souvislostí. Styl připomíná down-to-top přístup, kdy se nejprve věnuje detailům a teprve pak postupuje vzhůru k celému konceptu. Protože je práce složena z několika částí, několikrát vystupujeme od detailů k celému konceptu, který však je celkový až v na konci práce. Detaily se tak ztrácejí pro chybějící celkový koncept, který je přítomen až na konci, a navíc bych subjektivně neřekl, že je celkový koncept srozumitelně prezentován. Chybějí především detaily kolem Engine, který musí odpovídajícím způsobem provádět vykreslovací příkazy. Autor tyto věci prezentuje jako ExecutionSequence a ExecutionNode třídy. Ale chybí jakési propojení z jeho rozšíření shaderového jazyka na stranu Engine a co konkrétně Engine provádí, co konkrétně kdy provádějí ExecutionSequence a Execution Node, nebo co se děje v oblasti bufferů, atd. Domnívám se, že ač je tato oblast jaksi pokrytá, že by mohla být jasnější a srozumitelnější. Některé jiné části by naopak mohly být stručnější. Práce se často nevyjadřuje přesně. Například: "[GPU] memory is severely limited. However, [GPUs] are able to compute missing data quickly" (strana 5) - je opravdu paměť typické grafické karty těžce omezená? Co do propustnosti ani velikosti určitě ne. Dopočítání chybějících dat? Nejsem si úplně jist, co přesně autor myslel. Jindy práce příliš generalizuje. Například: "programs written in OpenGL are not the most performant" (strana 13). Tato věc obecně neplatí, protože mnohé dobře napsané aplikace se mohou overheadu OpenGL driveru vyhnout a být tak rychlé, jako aplikace napsané například ve Vulkan. Tomuto tématu se říkalo AZDO - Approaching Zero Driver Overhead. Na několika místech práce uvádí i nepravdivé informace: "Vulkan first-class support is given to GLSL" (strana 12). Ve skutečnosti Vulkan samotný bez použití extensions nepodporuje GLSL. Nebo "[OpenGL] is graphics first API" (strana 14). Ve skutečnosti OpenGL vzešlo z IRIS GL, tedy není první. Či "shaders are not compiled at runtime [with Vulkan] as they were with OpenGL" (strana 15) - shaders jsou kompilovány i Vulkan driverem, konkrétně ze SPIR-V do nativního kódu daného grafického čipu. Podobné chyby jsou přítomny na dalších místech. Za neštastné také považuji vkládání různých poznámek či upřesnění do věty formou závorek. U kraťoučké poznámky se to snad dá tolerovat, ale velmi dlouhé souvětí vložené doprostřed věty do závorek jako "drobná" vysvětlující poznámka dělá původní větu nečitelnou, neboť čtenář ztratí začátek věty dříve, než dočte dlouhé souvětí poznámky (strana 69). Celkově hodnotím prezentační úroveň práce spíše podprůměrně. 
Formální úprava technické zprávy 80 Práce je napsána anglicky, což hodnotím pozitivně. Na některých místech obsahuje gramatické chyby, ale je srozumitelná. Z typografické stránky působí práce úhledně a líbivě. Obsahuje obrázky, náčrtky a definice, na které je z textu korektně odkazováno.
Práce s literaturou 75 Bibliografie obsahuje 40 položek z toho jsem napočítal 21 velmi solidních vědeckých zdrojů. Jejich výběr velmi vhodně odpovídá zpracovávanému tématu. Práce ve většině kapitol cituje z těchto zdrojů. Pouze kapitoly věnující se teorii uvádějí souhrn zdrojů, ze kterých kapitola vychází, hned na začátku. Ve zbytku kapitoly je pak citací často dosti poskromnu. Co se týká nastudované teorie a vlastních úvah - nejsou příliš odděleny. Teoretická část je proniknuta vlastními myšlenkami a hodnoceními a často se ztrácí bariera mezi nimi. Problém je pak umocněn tím, že odkazy do literatury značící cizí myšlenky jsou uvedeny souhrnně na začátku kapitoly. Mnohem vhodnější se tak jeví striktně oddělit teorii a vlastní úvahy do různých kapitol práce.
Realizační výstup 50 Rozsah realizačního výstupu se blíží spodní hranici toho, co bychom očekávali za akceptovatelné pro diplomovou práci. Zjednodušeně řečeno se jedná jednoduchý prohlížeč 3D modelů s přidaným interpretrem, který interpretuje rozšíření GLSL jazyka navržená v rámci projektu. Celkově zahrnuje realizační výstup interpretr, jádro aplikace včetně otevření OpenGL okna, OpenGL kód pro vykreslování objektů, vnitřní logiku pro správu dat scény a systém pro načítání zdrojů z disku ve více vláknech. Celkově asi 2500 řádků kódu, nepočítaje rozsáhlé hlavičkové soubory, ani triviální jednořádkové funkce či jednoduchý kód testů. Kód je funkční, některá funkcionalita až po dodatečných zásazích autora do zdrojových souborů, ale jednalo se pouze o triviální víceméně jednořádkové opravy. Projekt také působí dojmem dokončování až do poslední chvíle. Kód není efektivně napsaný. Jako příklad bych uvedl použití shared_ptr privátně v objektu, aniž by tento shared_ptr mohl být jakkoliv sdílen mimo daný objekt. Na druhé straně se zdá kód dobře čitelný a dobře navržený, možná až příliš právě na úkor efektivity a na úkor vyššího množství paměťových alokací. Proměření výsledné výkonnosti bylo provedeno chybně a následná interpretace výsledků tak nestaví na realitě. Vpodstatě bylo změřeno, že se jeden trojúhelník rendruje 16ms jak v nativní aplikaci, tak v nástroji vytvořeném v této diplomové práci. Pochopitelně byla změřena doba vertikální synchronizace obrazovky, nikoliv doba rendrování jednoho trojúhelníku, která je řádově milionkrát kratší. Navzdory těmto nedostatkům bych vyzdvhl inovativnost projektu a jeho funkčnost například i na tessellačních shaderech, dobrý návrh i úhledný kód a přítomnost testů.
Využitelnost výsledků Práce je využitelná pro rychlé prototypování grafických shaderů, pro experimentování s nimi, ale i například při vyuce. Práce byla prezentována na konferenci Excel@FIT.
Navrhovaná známka
E
Body
55

Otázky

eVSKP id 165519