Säteenseuranta

Wikipediasta
Siirry navigaatioon Siirry hakuun
POV-Ray-ohjelmalla luotu kuva. Palloista heijastuu ympäristö.

Säteenseuranta tai säteenjäljitys (engl. ray tracing) tarkoittaa kuvan luomista tietokoneella valonsäteiden kulkua (sädeoptiikkaa) jäljittelevän tietokoneohjelman avulla. Tätä kuvan luovaa ohjelmaa sanotaan ray traceriksi ja kuvan luomista renderöinniksi.

Kyseessä on valaistuksen simulointi tietokoneohjelmalla.[1]

Historia[muokkaa | muokkaa wikitekstiä]

Termi säteenseurannalle on peräisin tavasta, jolla linssien toimintaa mallinnettiin paperille.[2] Samaa menetelmää yritettiin soveltaa tietokoneilla, mutta 1960-luvun tietokoneet olivat liian hitaita ja menetelmä jäi pois suosiosta.[2] Vuonna 1968 Arthur Appel julkaisi artikkelin Some techniques for shading machine renderings of solids, joka käsittelee varjoja ja värejä sekä valon säteiden kohtaamista kappaleissa.[3] Myöhemmin tietokoneiden tehon parannuttua menetelmää laajennettiin ja parannettiin erilaisten optisten ilmiöiden käsittelyyn.[2]

Menetelmä[muokkaa | muokkaa wikitekstiä]

Maya- ja Mental Ray -ohjelmilla luotu kuva.

Säteenseurannan keskeinen menetelmä on jäljittää valonlähteistä lähtevien säteiden törmäyksiä kappaleisiin ja edelleen kameran linssiin.[4] Vastakkainen menetelmä on säteensuuntaus (engl. ray casting), jossa kamera lähettää valonsäteitä.[4] Koska vain pieni osa valonlähteen säteistä päätyy kameraan tehokkuussyistä tyypillisemmin käytetään käänteistä valonsäteen mallinnusta, joka ilmenee kirjallisuudessa ja algoritmien kuvauksessa.[5] Säteenseuranta soveltuu hyvin peilimäiseen (engl. specular) valaistukseen ja heijastukseen, mutta huonosti diffuusiin valaistukseen.[6] Säteenseurannan kanssa voidaan käyttää myös radiositeettia diffuusin valaistuksen renderöintiin.[6] Säteenseurantaan on kehitetty photon mapping -laajennus vuonna 1993 sen ongelmakohtien ratkomiseksi.[7]

Säteenseurannassa säteet voidaan jakaa konseptitasolla neljään luokkaan: pikselisäteet tai silmäsäteet jotka kantavat valon suoraan silmään näytöllä olevan pikselin kautta; valaistussäteet tai varjosäteet jotka kantavat valoa valonlähteestä suoraan kappaleen pinnalle; heijastussäteet jotka kantavat kappaleesta heijastunutta valoa; ja läpinäkyvyyssäteet jotka kantavat kappaleen läpi kulkevaa valoa.[5] Matemaattisesti nämä ovat kaikki vain säteitä, mutta laskennan kannalta on kätevämpää toimia näillä luokilla.[5] Pikselin väri muodostuu kaikista siihen osuvien säteiden yhdistelmästä, jolloin pikseli saa yhden värin.[5]

Valon poukkoilu tilassa voidaan esittää matemaattisesti kaavana, joka tunnetaan renderöintiyhtälönä.[8] Säteenseuranta on yksi tehokas menetelmä yhtälön ratkaisuun.[8] Yhtälöön voidaan löytää ratkaisuja stokastisella säteenseurannalla tekniikoilla kuten importance sampling ja polunseurannalla.[8]

Säteenseurannalla päästään realistisiin tuloksiin verrattuna Phong-varjostusmallin tyyppisiin muita kappaleita huomioimattomiin ja valon käyttäytymistä vain karkeasti approksimoiviin menetelmiin. Vastaavasti laskennallinen vaativuus on paljon suurempi. Säteenjäljistyskään ei aina simuloi valon käyttäytymistä täysin oikein.

Renderöivälle maisemalle kuvataan mm. valonlähteiden paikat ja ominaisuudet, näkyvien kappaleiden sijainnit, koot, asennot ja pintamateriaalit jne. Samasta maisemasta voi raytracerilla ottaa kuvia eri kuvakulmista.

Säteenseuranta on laskennallisesti vaativaa ja tarvitsee pitkän laskenta-ajan, sillä valonsäteitä tarvitaan useita[9], jotka leikkaavat geometrisia kappaleita.[10] Vuonna 2001 esitetyn artikkelin mukaan profilointi osoittaa, että pullonkaulana suorituskyvylle ei ole suorittimen nopeus vaan kaistanleveys keskusmuistiin.[10] Artikkeli esittää korkealle optimoidun ratkaisun, joka parantaa suorituskykyä kertaluokkia resurssien paremmalla käytöllä kuten välimuistin ja SIMD-käskyjen hyödyntämisellä.[10]

Reaaliaikainen fotorealistinen grafiikka ei ole nykytietokoneilla mahdollista säteenseurantamenetelmällä, mutta aiheesta on tehty demoja sekä laitteistotuella tehtävää käsittelyä on esitelty.[9] GPGPU-ohjelmoinnilla tehtävästä säteenseurannasta on tehty tutkielmia.[11] Reaaliaikaisessa grafiikassa kuten videopeleissä käytetään tyypillisesti rasterointi-menetelmää valaistukseen sääteenseurannan sijaan.[12] 2000-luvun alkupuolella useat tutkijat kiinnostuivat reaaliaikaisen säteenseurannan kehittämisestä tietokoneiden suorituskyvyn ja rinnakkaisuuden kehityksen myötä.[13] Wald, Slusallek ja Benthin kirjoittivat merkittävän artikkelin korkealle optimoidusta säteenseurannasta, joka oli huomattavasti aikaisempia tehokkaampi.[13]

Reaaliaikainen säteenseuranta[muokkaa | muokkaa wikitekstiä]

Videopeleissä säteenseurantaa käytetään rasterointimenetelmän kanssa, jossa säteenseurannalla tuotetut varjot ja valaistus yhdistetään.[14] Säteenseurantaa voidaan käyttää heijastuksille ja varjoille parantamaan kuvan laatua, jolloin se helpottaa kehittäjän työtä.[15] Ilman säteenseurantaa on käytettävä varjokarttoja (engl. shadow mapping) varjojen esittämiseen ja valaistukseen voidaan käyttää valaistuksen "leipomista" valaistuskartalla (engl. light baking, engl. lightmap) etukäteen.[16][17] Grafiikkaprosessoreihin lisätty säteenseurannan tuki ei kokonaan korvaa rasterointia, vaan sitä käytetään tiettyihin valikoituihin tehosteisiin laskennallisen vaativuuden johdosta.[18] Lisäksi sitä voidaan käyttää vain tiettyihin kappaleisiin ja vain toissijaisiin säteisiin, jotka vaikuttavat näyttävimpiin kohtiin.[18]

Ohjelmistot[muokkaa | muokkaa wikitekstiä]

Esimerkkejä säteenseurantaohjelmista ovat avoimen lähdekoodin POV-Ray ja suomalainen kaupallinen Realsoft 3D.

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Realtime Ray Tracing and its use for Interactive Global Illumination graphics.stanford.edu. Viitattu 21.1.2017.
  2. a b c Glassner, Andrew S.: An Introduction to Ray Tracing, s. ix–x. Academic Press, 1989. ISBN 0-12-286160-4. Teoksen verkkoversio. (englanniksi)
  3. Arthur Appel: Some techniques for shading machine renderings of solids (PDF) dl.acm.org. doi:10.1145/1468075.1468082. Viitattu 11.7.2022. (englanniksi)
  4. a b Ray-tracing and other Rendering Approaches (PDF) nccastaff.bournemouth.ac.uk. Arkistoitu 17.11.2018. Viitattu 18.12.2017.
  5. a b c d Glassner, Andrew S.: An Introduction to Ray Tracing, s. 5–10. Academic Press, 1989. ISBN 0-12-286160-4. Teoksen verkkoversio. (englanniksi)
  6. a b Hughes, John F. & van Dam, Andries: Introduction to Radiosity (PDF) eecs.umich.edu. Viitattu 18.12.2017.
  7. A Practical Guide to Global Illumination using Photon Mapping (PDF) cs.princeton.edu. 14.8.2001. Viitattu 29.1.2021. (englanniksi) 
  8. a b c Glassner, Andrew S.: An Introduction to Ray Tracing, s. 29. Academic Press, 1989. ISBN 0-12-286160-4. Teoksen verkkoversio. (englanniksi)
  9. a b Imagination Demos Realtime Ray Tracing Tom's Hardware. Arkistoitu 2.2.2017. Viitattu 21.1.2017.
  10. a b c Ingo Wald & Philipp Slusallek & Carsten Benthin & Markus Wagner: Interactive Rendering with Coherent Ray Tracing researchgate.net. syyskuu 2001. doi:10.1111/1467-8659.00508. Viitattu 2.1.2020. (englanniksi)
  11. Henri Pirinen: GPGPU-säteenseuranta Jyväskylän Yliopisto. Viitattu 21.1.2017.
  12. Introduction to Realtime Ray Tracing eng.utah.edu. Viitattu 21.1.2017.
  13. a b Pharr, Matt & Jakob, Wenzel & Humphreys, Greg: Physically Based Rendering, s. 50. Third Edition. Morgan Kaufmann, 2017. ISBN 978-0-12-800645-0. (englanniksi)
  14. Ray Tracing In Vulkan khronos.org. 17.3.2020. Viitattu 23.11.2020. (englanniksi)
  15. Eric Ravenscraft: Should Anyone Actually Care About Ray Tracing? wired.com. 3.3.2021. Viitattu 14.12.2022. (englanniksi)
  16. Eric Ravenscraft: Can Fancy New Graphics Tech Save Burned-Out Game Developers? onezero.medium.com. 7.5.2019. Viitattu 14.12.2022. (englanniksi)
  17. Light baking help.autodesk.com. Viitattu 14.12.2022. (englanniksi)
  18. a b Turing RT Cores: Hybrid Rendering and Real Time Raytracing anandtech.com. 14.9.2018. Viitattu 22.1.2021. (englanniksi) 

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]