GLSL2JS, WebGL shader debugging

Konzulens:
Dr. Szécsi László
Tárgy:
Önálló laboratórium - Szoftverfejlesztés és rendszertervezés specializáció, BSc Info.
Önálló laboratórium - Irányítórendszerek ágazat, BSc Vill.
Önálló laboratórium 1 - Irányítórendszerek főspecializáció, MSc Vill.
Önálló laboratórium 2 - Irányítórendszerek főspecializáció, MSc Vill.
Önálló laboratórium 1 - Vizuális informatika főspecializáció, MSc Info.
Önálló laboratórium 2 - Vizuális informatika főspecializáció, MSc Info.
Hallgatói létszám:
2
Folytatás:
Szakdolgozat / Diplomaterv
Leírás:
A WebGL kiváló platform böngészőben futó, így kiválóan hordozható, kisebb-nagyobb grafikus alkalmazások fejlesztésére. A grafikus futtató, illetve fejlesztői környezetek közül a legalacsonyabb belépési korláttal rendelkezik. Gyakorlatilag a teljes fejlesztés folyamata, a hibakeresést beleértve, a böngészőben is végigvihető.

Az árnyalóprogramokban történő hibakeresés a grafikus alkalmazások fejlesztésének a mai napig gyenge pontja (bár a Visual Studio grafikus debuggere szélsőséges esetektől eltekintve kiválóan működik --- HLSL forráskódra). Összetettebb grafikus algoritmusok (pl. sugárkövetés) fejlesztése WebGL alatt emiatt nehézkes. Ezen lehetne segíteni, ha a GLSL nyelven írt shadereket a böngészőben lehetne debuggolni. Ez úgy lhetséges, hogy a GLSL kódot JavaScript kódra fordítjuk (ehhez lézetnek ugyan könyvtárak, de azok továbbfejlesztése szükséges pl. a WebGL 2 funkciók lefedéséhez), aztán pedig a source maps technológia segítségével a JS kódot futtatjuk, miközben a GLSL kódban követjük a program végrehajtását. A megfelelő JS kód futtatásának triggereléséhez a GPU többi elemének (elsősorban a raszterizációnak) valamilyen modellezése is szükséges.

A feladat tehát egyrészt a GLSL2JS kód továbbfejlesztése, másrészt a pipeline legkritikusabb részeinek modellezése JavaScriptben. Egyrészt meg lehet ismerkedni a programnyelvek közötti fordítás szépségeivel, másrészt a GPU működésével --- nem csak felhasználói nézőpontból.

A kész program nagyon hasznos lesz a szélesebb (internetes, nemzetközi) közösség és a jövő hallgatói számára egyaránt.