@MASTERSTHESIS\{IMM2006-04905, author = "T. K. Berthelsen", title = "Real-time Ray Tracing p{\aa} et {SMP} Multiprocessor system", year = "2006", school = "Informatics and Mathematical Modelling, Technical University of Denmark, {DTU}", address = "Richard Petersens Plads, Building 321, {DK-}2800 Kgs. Lyngby", type = "", note = "Supervised by Bernd Dammann og Jackob Andreas B{\ae}rentzen, {IMM}.", url = "http://www2.compute.dtu.dk/pubdb/pubs/4905-full.html", abstract = "Raytracing er en kraftfuld teknik til rendering af billeder med h{\o}j realisme, der p{\aa} mange m{\aa}der er traditionel (hardware) trekantsrasterisering overlejen. Raytracere har dog den svaghed at de stiller h{\o}je krav om r{\aa} computerkraft. Denne svaghed har betydet at valget s{\aa} godt som altid falder p{\aa} rasterisering, n{\aa}r der skal genereres billeder i real-time. Ved rasterisering m{\aa} de fleste effekter, som f{\aa}r et billede til at se realistisk ud, designes kunstigt, hvorimod raytraceren, s{\aa} at sige, tilbyder disse effekter direkte (som en naturlig del af raytraceralgoritmen). Ved brug af en tilstr{\ae}kkeligt god raytracer vil der s{\aa}ledes kun v{\ae}re behov for design af selve scenen, der skal renderes, i form af specifikationer for objekter, overfladematerialer og lyskilder. Resten (skygger, refleksioner, transmissioner m.m.) vil blive givet som et naturligt resultat af raytracer algoritmen. – Det vil s{\aa}ledes ikke l{\ae}ngere v{\ae}re n{\o}dvendigt at bruge mandetimer p{\aa} kunstigt at designe disse effekter. Dette projekt handler om hvordan raytracing kan effektiveres, s{\aa} det bliver muligt at navigere rundt i en {3D} scene i real-time. Det essentielle i denne rapport er s{\aa}ledes de teknikker, der muligg{\o}r real-time navigation ved brug parallelisering samt en effektiv datastruktur og gradvist forbedret billedkvalitet (ved rendering af et gradvist forfinet grid og brug af interpolation). Projektet har resulteret i parallelisering af en forholdsvis simpel raytracer der kan indl{\ae}se scener fra wavefront filer. Der er udviklet to l{\o}sninger for parallelisering af raytraceren. En l{\o}sning der g{\o}r brug af OpenMP til at simplificere parallelisering, samt en mere kompleks l{\o}sning der benytter {POSIX} threads. Begge l{\o}sninger kan rendere scener best{\aa}ende af omkring 450.000 trekanter (renderingstiden skalerer logaritmisk i forhold til antallet af trekanter) p{\aa} 512x512 pixels p{\aa} ca. 1 sekund. {POSIX} threads l{\o}sningen viser sig dog overlegen, da den l{\o}bende leverer outputs i form af interpolerede billeder, der g{\o}r det muligt at navigere kameraet rundt i scenen i real-time." }