Grafika 2. ZH E csoport

### **1/a** **Ismertesse, hogy mire használhatók a befoglaló testek (bounding volume)?**

1. A térbeli objektumok takarási viszonyainak meghatározását esetenként segítheti, ha ezeket egyszerűbb formájú testekbe zárjuk, amelyek térbeli elhelyezkedését hatékonyabb algoritmusokkal tudjuk tesztelni.

### **1/b. Adja meg a modelltér jeleneteiből a raszteres kép előállításának lépéseit! Mit értünk képgenerálási pipeline alatt?**

A modelltér jeleneteiből a 2D-s raszteres kép előállítása több lépésben történik.

* Amennyiben a modelltér elemeit már definiáltuk, akkor a képelőállításhoz még:
* Meg kell adni a modelltér objektumait megvilágító fényforrásokat a világkoordináta-rendszerben.
* Rögzítenünk kell a nézőpontot vagy a kameraállást a világkoordináta-rendszerben, ahonnan a jelenetet szemléljük.
* El kell döntenünk, hogy a modelltér milyen objektumait kívánjuk szerepeltetni a generálandó képen. Ehhez egy ablakot (window) kell definiálni a világkoordináta-rendszerben, amelyen keresztül a nézőpontból a jelenetet látjuk. Azok az objektumok, amelyek ezen az „ablakon” kívül esnek, nem vesznek részt a képgenerálásban, azokat kivágjuk. A megjelenítésnek ezt a lépését ablakozásnak és kivágásnak (windowing and clipping) nevezik a szakirodalomban.
* A modelltérnek a jelenetben szereplő objektumait a világkoordináta-rendszerből affin és perspektív transzformációval egy normalizált ábrázolási térbe kell leképeznünk.
* Az ábrázolási térben meg kell határozni az objektumok takarási viszonyait, azaz a nézőpontból látható éleket és felületeket. Ez a látható kép meghatározó algoritmusokkal történik.
* A látható felületelemek képpontjaihoz ezt követően az árnyalási algoritmusokkal hozzárendeljük a fényviszonyoknak és a textúráknak megfelelő színeket.
* A raszteres képernyőn a kiválasztott ablaknak megfelelő pixelekre "vetítjük" a felületelemek képpontjainak színértékeit a monitor fizikai eszközkoordináta-rendszerében.

A vektorgrafikus objektumok definiálásával kezdődő és a képernyőn való megjelenítésükig tartó teljes folyamatot a szakirodalomban képgenerálási pipelinenak (viewing pipeline vagy rendering pipeline) nevezik.

### **2. Mit nevezünk lokális és globális megvilágítási modellnek? Mutassa be az algoritmusok lényegét!**

A **lokális megvilágítási modellekben** az objektumok színét, világosságát más objektumok nem befolyásolják, ezek csak az objektumtól, a fényforrásoktól és a nézőponttól függnek. Ilyenek a háttérmegvilágítás, valamint a diffúz és csillogó fényvisszaverődés.

A **globális megvilágítási modellekben** az objektumok színe nem csak közvetlenül a fényforrásoktól, hanem a más objektumokon áthaladó, illetve a más objektumok által visszavert fénytől is függ. A modelltér objektumainak kölcsönhatását figyelembe kell venni a tükröződő fényvisszaverésnél, az árnyékképzésnél és az átlátszóság kezelésénél.

A z-buffer és scan-line algoritmus csak a diffúz és a spekuláris (tükrözött) visszaverődést, a pontszerű absztrakt fényforrásokat és az ambiens fényt kezeli.

A rekurzív raytracing a lokális megvilágítás kiterjesztése. Kezelni tudja a tükröződéseket és az átlátszóságot. A rekurzív sugárkövetést egyes szakirodalmak a lokális, míg mások a globális megvilágítási modellek közé sorolják. Ennek oka:

* sok renderelő program kiegészítésnek használja a lokális megvilágítási modellhez;
* működését tekintve inkább a globális megvilágítási modellek közé tartozik, mivel az objektumok színe egymástól is függhet.

### **3. Mit lehet modellezni a photon mapping eljárással? Foglalja össze a photon mapping algoritmus lényegét!**

Ezzel a globális megvilágítási eljárással fotorealisztikusan modellezhetők a közvetett megvilágítás hatásai, valamint az úgynevezett kausztikus optikai jelenségek.

A fotonkövetés alapgondolata, hogy minden fényforrásból a fényforrás intenzitásának megfelelő számú és energiájú fotont lőnek be a modelltérbe, véletlenszerű irányokba. Ezek az objektumok felületével „ütköznek" és visszaverődnek, megtörnek vagy elnyelődnek, amelynek során a fotonok energiája is megváltozik.

A fotonok útját a fényforrásból kiinduló nyomkövetéssel (path tracing) kísérjük figyelemmel, és adataikat ún. foton térkép (photon map) segítségével tartjuk nyilván.

A globális megvilágítás meghatározását követően a raszteres kép előállítása általában a raytracing renderelő algoritmussal történik, minden felületi pont kiszámításánál figyelembe véve a pontot elérő fotonok energiáját.

### **4. Mi az X-Windows System? Az X11 szabvány szerint mit tartalmaz a grafikus munkahely? Mi az X-szerver feladata? Mi a feladata a Windows Manager kliensnek?**

Az X-Windows System hardverfüggetlen, a raszteres grafikára alapozott ablakozó megjelenítés szabványa.

A grafikus munkahely az X11 szerint képernyőt (screen), billentyűzetet (keyboard) és mutatóeszközt (egér, tablet) kezelő architektúra, amelyen az X-szerver program fut. (Felhívjuk a figyelmet, hogy a szabvány terminológiája eltér pl. a LAN-nál megszokottól.) Ez lehet például egy PC, amely az X-szervert futtatja, vagy egy X-terminál, amely beégetett vagy programként futó X-szervert tartalmaz.

Az X-szerver feladata a grafikus megjelenítés (2D-s rajzolás), és a felhasználó inputjainak a fogadása. Az X-szerver hálózati kliensekkel, az úgynevezett alkalmazásokkal (applications) tarthat kapcsolatot, amelyek számára hozzáférést biztosít a grafikus munkahelyhez.

Az X11 felhasználói felülete a Windows-ból jól ismert ablakozó rendszer. Az ablakok méretezését és általában a menedzselését a Windows Manager program végzi, mely az X-szerver számára szintén egy kliens.

### **5. Mi a 2D/3D-s gyorsító csipek alkalmazásának lényege? Mi a lényege a stream modellnek? Mi a feladata a geometriai processzornak? Mi a feladata a raszterprocesszornak? Mi a grafikus sínrendszer feladata?**

A 2D/3D gyorsítás lényege az, hogy a két-, illetve a háromdimenziós képek előállításához szükséges számítások egy részét a grafikus kártyán lévő csip (GPU) veszi át, ezáltal tehermentesíti a központi processzort (CPU). A feladatmegosztás a 2D és a 3D gyorsító áramkörök között a következő:

* A 2D gyorsító áramkörök feladata a Windows ablakkezelő funkcióihoz (pl. egy ablak megnyitása) szükséges vonalkezelési és színkitöltési feladatok végrehajtása.
* A 3D gyorsító áramkörök a rendering pipeline geometriai és raszterizációs szakaszaihoz tartozó algoritmusokat valósítják meg.

A grafikus processzor felépítésére a **stream modellt** alkalmazzák. Ennek két lényeges eleme van: az adatfolyam vagy stream és az ezt feldolgozó műveletvégző egység, a kernel. A modellben stream alatt egymástól független, azonos típusú adatok sorozatát értjük. A kernel a stream egy elemére egy adott műveletet képes végrehajtani.

A grafikus processzor két alapvető részből épül fel:

* a **geometriai processzor** végzi el vertexfeldolgozó egységeivel a regiszterekben átadott háromszög vertexadatfolyamon először a transzformációs és megvilágítási számításokat, majd ezt követően végrehajtja a kivágást és a képernyőablakra történő vetítést;
* a **raszterprocesszor** a háromszögek csúcsponti értékei alapján interpolációval kiszámítja a belső háromszögpontok szín és megvilágítási értékeit, az így kapott pixelek adatait továbbadja a pixelfeldolgozó egységeknek. Itt megtörténik a végső láthatóság kiszámítása (z-buffer), a textúrázás és a speciális effektusok kihatásainak figyelembevétele.

A **grafikus sínrendszer** feladata a központi egység (CPU és RAM) és a GPU közötti adatátvitel biztosítása, ami napjaink grafikus kártyáinál másodpercenként 500-1000 millió háromszögre vonatkozó vertex, szín és textúra koordináta (4D és 2D vektor) adat átvitelét jelenti. Emellett ennek a sínrendszernek kell biztosítani a grafikus processzor shader programjainak (korábbi GPU-knál az ún. fix eljárások) továbbítását is.