„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés
| 1 460. sor: | 1 460. sor: | ||
=== A kétirányú sugárkövetés === | === A kétirányú sugárkövetés === | ||
A globális illumináció implementálásakor sokak fájó szívvel válnak meg a kódban a lokális illumináció résztől, lévén, hogy hiába írták meg, ha nem jó semmire. De ez nem így van. Egyrészt a negyedik és az ötödik házihoz nagyon nagy segítséget fog nyújtani, hogy érted, hogy hogyan működik a lokális illumináció, hiszen az OpenGL is ezt fogja használni. Másrészt még a sugárkövetés házi végleges formájába is hasznos lehet az a kód. | |||
* A spekuláris hatás, kétirányú sugárkövetéssel: | A kétirányú sugárkövetés ötlete, hogy használjuk a lokális és a globális illuminációt egyszerre. A diffúz anyagot világítsuk meg lokálisan, és csak azok a fotonok keltsenek rajta kausztikát, amik nem triviális úton (egyenes vonalon, végig a levegőben, kölcsönhatás nélkül) jutottak el a fényforrásból az anyagig. Tehát ha a foton ütközésekor a rekurziós szint 0, akkor az közvetlenül a fényforrásból jutott el hozzánk, azt ne mentsük el. | ||
A kétirányú sugárkövetés előnyei: | |||
* Rengeteg erőforrást meg tud spórolni. Az üvegkocka esetében sokkal kevesebb foton elég egy ugyanolyan minőségű kép előállításához. | |||
* A spekuláris hatást is figyelembe tudjuk venni. | |||
A kétirányú sugárkövetés hátrányai: | |||
* Nem triviális a konstansokat úgy beállítani, hogy a lokális és a globális illumináció konzisztens legyen. | |||
* Az árnyékok széle recésebb lesz. A bilineáris szűrés miatt a globális illumináció pontosabban határozza meg az árnyékok szélét, mint az a módszer, amit a lokális illuminációnál használtunk. | |||
Példaprogram: [[Média:Grafpp_raytrace_ketiranyu_sugarkovetes.cpp|Kétirányú sugárkövetés]] | |||
A korábbi jelenet, csak globális (bal oldalt) és kétirányú (jobb oldalt) sugárkövetéssel, mindkét esetben 500 000 fotonnal | |||
http://i.imgur.com/IAJ813F.jpg http://i.imgur.com/DJwySzu.jpg | |||
A spekuláris hatás, kétirányú sugárkövetéssel: | |||
http://i.imgur.com/U0KlYK2.png | http://i.imgur.com/U0KlYK2.png | ||