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.

Historia
--------

Termi säteenseurannalle on peräisin tavasta, jolla linssien toimintaa mallinnettiin paperille. Samaa menetelmää yritettiin soveltaa tietokoneilla, mutta 1960-luvun tietokoneet olivat liian hitaita ja menetelmä jäi pois suosiosta. 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.
Myöhemmin tietokoneiden tehon parannuttua menetelmää laajennettiin ja parannettiin erilaisten optisten ilmiöiden käsittelyyn.

Menetelmä
---------

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. Vastakkainen menetelmä on säteensuuntaus (engl. *ray casting*), jossa kamera lähettää valonsäteitä. 
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.
Säteenseuranta soveltuu hyvin peilimäiseen (engl. *specular*) valaistukseen ja heijastukseen, mutta huonosti diffuusiin valaistukseen. Säteenseurannan kanssa voidaan käyttää myös radiositeettia diffuusin valaistuksen renderöintiin. Säteenseurantaan on kehitetty photon mapping -laajennus vuonna 1993 sen ongelmakohtien ratkomiseksi.

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. Matemaattisesti nämä ovat kaikki vain säteitä, mutta laskennan kannalta on kätevämpää toimia näillä luokilla. Pikselin väri muodostuu kaikista siihen osuvien säteiden yhdistelmästä, jolloin pikseli saa yhden värin.

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

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, jotka leikkaavat geometrisia kappaleita.
Vuonna 2001 esitetyn artikkelin mukaan profilointi osoittaa, että pullonkaulana suorituskyvylle ei ole suorittimen nopeus vaan kaistanleveys keskusmuistiin. Artikkeli esittää korkealle optimoidun ratkaisun, joka parantaa suorituskykyä kertaluokkia resurssien paremmalla käytöllä kuten välimuistin ja SIMD-käskyjen hyödyntämisellä.

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

### Reaaliaikainen säteenseuranta

Videopeleissä säteenseurantaa käytetään rasterointimenetelmän kanssa, jossa säteenseurannalla tuotetut varjot ja valaistus yhdistetään. Säteenseurantaa voidaan käyttää heijastuksille ja varjoille parantamaan kuvan laatua, jolloin se helpottaa kehittäjän työtä. 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.
Grafiikkaprosessoreihin lisätty säteenseurannan tuki ei kokonaan korvaa rasterointia, vaan sitä käytetään tiettyihin valikoituihin tehosteisiin laskennallisen vaativuuden johdosta. Lisäksi sitä voidaan käyttää vain tiettyihin kappaleisiin ja vain toissijaisiin säteisiin, jotka vaikuttavat näyttävimpiin kohtiin.

Ohjelmistot
-----------

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

Katso myös
----------

* Luettelo säteenseurantaohjelmistoista
* Säteensuuntaus
* Radiositeetti

Lähteet
-------

1. ↑  Realtime Ray Tracing and its use for Interactive Global Illumination *graphics.stanford.edu*. Viitattu 21.1.2017.
2. 1 2 3  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. 1 2  Ray-tracing and other Rendering Approaches (PDF) *nccastaff.bournemouth.ac.uk*.  Arkistoitu 17.11.2018. Viitattu 18.12.2017.
5. 1 2 3 4  Glassner, Andrew S.: *An Introduction to Ray Tracing*, s. 5–10. Academic Press, 1989. ISBN 0-12-286160-4. Teoksen verkkoversio. (englanniksi)
6. 1 2  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. 1 2 3  Glassner, Andrew S.: *An Introduction to Ray Tracing*, s. 29. Academic Press, 1989. ISBN 0-12-286160-4. Teoksen verkkoversio. (englanniksi)
9. 1 2  Imagination Demos Realtime Ray Tracing Tom's Hardware.  Arkistoitu 2.2.2017. Viitattu 21.1.2017.
10. 1 2 3  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. 1 2  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. 1 2  Turing RT Cores: Hybrid Rendering and Real Time Raytracing *anandtech.com*.  14.9.2018. Viitattu 22.1.2021. (englanniksi)

Aiheesta muualla
----------------

* Kuvia tai muita tiedostoja aiheesta **Säteenseuranta** Wikimedia Commonsissa