AMD:n RDNA 2 -arkkitehtuuri säteenseurantatuella jo ensi vuonna

Liittynyt
22.10.2016
Viestejä
7 583
Muuten ihan hyvä postaus, mutta tuollainen asevalikko olisi aika helppo toteuttaa selaimen päässä ilman että siitä tulisi raskasta. Ei youtubenkaan hallintanapit tule streamin mukana. ;)

Mutta joo. Ei tuon kohde ole PC master race 2000€ esports pelikoneineen ja 244Hz 4k näyttöineen. Kyllä kohde on ne joilla on esim ps3 tai vastaava ja eivät halua ostaa uutta konsolia. Kuukausimaksullinen paketti jonka saa helposti katkolle kuulostaa oikein hyvältä. Chromecast ei ole vaatimus. Riittää ihan perus läppäri ja hdmi kaapeli.
Helppoa teoriassa ei käytännössä. Se pitäisi jotenkin täysin erottaa siitä muusta pelienginestä rikkomatta mitään. Käytännössä peli pitäisi alusta alkaen suunnitella tuollaisia temppuja varten.
 

mRkukov

Hrrrr...
Liittynyt
17.10.2016
Viestejä
7 713
Helppoa teoriassa ei käytännössä. Se pitäisi jotenkin täysin erottaa siitä muusta pelienginestä rikkomatta mitään. Käytännössä peli pitäisi alusta alkaen suunnitella tuollaisia temppuja varten.
Valikon rakentaminen client sidelle ei olisi todellakaan mikään iso homma. Käytännössä Stadiaa varten pitää engineä muutenkin customoida, joten yhden valikon irroittaminen ei olisi mikään iso homma. Mahdollistaisi myös valikon customoinnit käyttäjän toimesta. Noh katsotaan mitä sieltä tulee.
 
Liittynyt
22.10.2016
Viestejä
11 097
Olisi kyllä mielenkiitoista saada lisätietoa että mitä tarkasti ottaen kiihdytellään, onko toteutus samantyyppinen kuin RTX korteissa vai ehkä jopa laajempi (RTX toteutushan on melko spesifi tietyn vaiheen kiihdytys) tai sitten huonossa tapauksessa teknisesti totta mutta käytännössä vain markkinataktiikkaa... jotenkin aina särähtää korvaan kun ultimate goal on pilvessä, sen verran kova buzzword kyseessä.
Säteenjäljityksessä on käytännössä kolme sellaista vaihetta, joita voi kiihdyttää raudalla, ja joita perinteinen rasterointi-GPU ei osaa kiihdyttää:

1) BVH-puun rakentaminen. (tarvii tehdä liikkuvien objektien osalta joka frame uusiksi).
2) BVH-puun läpikäynti, törmäystarkastus sen laatikoihin
3) Kolmioiden törmäystarkastus.

Näiden lisäksi on säteenjäljityksessäkin hyödyllinen/käytetty asia, jonka perinteinen rasterointi-GPU osaa jo kiihdyttää raudalla:

4) Tekstuurimäppäys

nVidian nykyrauta osaa näistä asiat 2+3+4. Ja näistä 2 ja 3 ovat hyvin samanlaisia, on melko helppo tehdä rauta joka pystyy molempiin. Ja kaverini teki väikkärinsä vaiheesta 1 ja meni sen jälkeen vajaa vuosi sitten nVidialle töihin, eli nVidialta varmaan tulossa joskus viimeistään 2021, ehkä jo aiemmin.

PowerVRn nykyrauta osaa näistä kaikki.

Oletettavasti ensi vuonna tulevaan RDNA2een tulee vähintään BVH-puun läpikäynti ja kolmioiden törmäystarkastus, ehkä myös BVH-puun rakentaminen. Ja tekstuurimäppäys siinä siis on varmasti, koska rasterointi.


BVH-puu tyypillisesti jaetaan kahteen osaan. Yksi puunhaara staattisille (paikallaanpysyville) kappaleille, ja toinen haara dynaamisille(liikkuvilla kappaleille). Staattinen BVH-puuhaara generoidaan etukäteen (viimeistään pelikentän latautuessa tai ekaa framea rendatessa), dynaaminen BVH-puuhaara generoidaan uudestaan joka framelle. Ja kun tämä tehdään softalla, se vaatii paljon tehoa, ja rajoittaa liikuvien kappaleiden määrää.

Käytännössä nvidian nyky-RTXn rajoite on siis suorituskyky suurella määrällä liikkuvia kappaleita. Soveltuu huonosti esim. peleille, joissa kaikki on hajoavaa, tai jossa puiden oksat voivat heilua tuulessa tms.

Soveltuu hyvin pelille, jossa itse kenttä on hyvin staattinen, ja siellä on pieni määrä liikuvia vihollisia.
 
Liittynyt
16.10.2016
Viestejä
12 114
Valikon rakentaminen client sidelle ei olisi todellakaan mikään iso homma. Käytännössä Stadiaa varten pitää engineä muutenkin customoida, joten yhden valikon irroittaminen ei olisi mikään iso homma. Mahdollistaisi myös valikon customoinnit käyttäjän toimesta. Noh katsotaan mitä sieltä tulee.
Noita tilanteita, joissa näkymä vaihtuu nopeasti on käytännössä paljon, esim jonkun nurkan taakse kurkkaaminen, nopea pyörähtämien paikoillaan, paikassa, jossa näkyy yhtään edemmäs ym..
-------------------------
Mites tuo 1 kohta, eikö se mene CUDAlla?
 
Liittynyt
14.12.2016
Viestejä
2 768
Säteenjäljityksessä on käytännössä kolme sellaista vaihetta, joita voi kiihdyttää raudalla, ja joita perinteinen rasterointi-GPU ei osaa kiihdyttää:

1) BVH-puun rakentaminen. (tarvii tehdä liikkuvien objektien osalta joka frame uusiksi).
2) BVH-puun läpikäynti, törmäystarkastus sen laatikoihin
3) Kolmioiden törmäystarkastus.

Näiden lisäksi on säteenjäljityksessäkin hyödyllinen/käytetty asia, jonka perinteinen rasterointi-GPU osaa jo kiihdyttää raudalla:

4) Tekstuurimäppäys

nVidian nykyrauta osaa näistä asiat 2+3+4. Ja näistä 2 ja 3 ovat hyvin samanlaisia, on melko helppo tehdä rauta joka pystyy molempiin. Ja kaverini teki väikkärinsä vaiheesta 1 ja meni sen jälkeen vajaa vuosi sitten nVidialle töihin, eli nVidialta varmaan tulossa joskus viimeistään 2021, ehkä jo aiemmin.

PowerVRn nykyrauta osaa näistä kaikki.

Oletettavasti ensi vuonna tulevaan RDNA2een tulee vähintään BVH-puun läpikäynti ja kolmioiden törmäystarkastus, ehkä myös BVH-puun rakentaminen. Ja tekstuurimäppäys siinä siis on varmasti, koska rasterointi.


BVH-puu tyypillisesti jaetaan kahteen osaan. Yksi puunhaara staattisille (paikallaanpysyville) kappaleille, ja toinen haara dynaamisille(liikkuvilla kappaleille). Staattinen BVH-puuhaara generoidaan etukäteen (viimeistään pelikentän latautuessa tai ekaa framea rendatessa), dynaaminen BVH-puuhaara generoidaan uudestaan joka framelle. Ja kun tämä tehdään softalla, se vaatii paljon tehoa, ja rajoittaa liikuvien kappaleiden määrää.

Käytännössä nvidian nyky-RTXn rajoite on siis suorituskyky suurella määrällä liikkuvia kappaleita. Soveltuu huonosti esim. peleille, joissa kaikki on hajoavaa, tai jossa puiden oksat voivat heilua tuulessa tms.

Soveltuu hyvin pelille, jossa itse kenttä on hyvin staattinen, ja siellä on pieni määrä liikuvia vihollisia.
Kiitos tästä!
Olet useampaa kertaan sanonut, että pilveä ja paikallista ei voi sotkea...
Eli ei siis ole fiksu laske sitä puu osaa pilvessä ja ehkä seuraavaa ja rendata loput gpu:lla? Ilmeisesti tuossakin viiveet olisi se ongelma. Siirrettävää dataahan ei kaiketi olisi samoja määriä kuin rendatun kuvan siirrossa, jota itsekkään pidä järkevänä.
Mutta puhtaana amatöörinä kuvittelisin että datan määrä ei olisi hillitön kahden ensimmäisen vaiheen osalta.
Jos vielä aukaisut tuota niin oppisi wanha taas jotain uutta grafiikan piirron saralta!
 
Liittynyt
22.10.2016
Viestejä
11 097
Kiitos tästä!
Olet useampaa kertaan sanonut, että pilveä ja paikallista ei voi sotkea...
Eli ei siis ole fiksu laske sitä puu osaa pilvessä ja ehkä seuraavaa ja rendata loput gpu:lla? Ilmeisesti tuossakin viiveet olisi se ongelma. Siirrettävää dataahan ei kaiketi olisi samoja määriä kuin rendatun kuvan siirrossa, jota itsekkään pidä järkevänä.
Mutta puhtaana amatöörinä kuvittelisin että datan määrä ei olisi hillitön kahden ensimmäisen vaiheen osalta.
Jos vielä aukaisut tuota niin oppisi wanha taas jotain uutta grafiikan piirron saralta!
Rasteroinnissa piirrettään kolmioita. Otetaan kolmio, piirretään se, otetaan toinen kolmio, piirretään se, jne.

Säteenjäljityksessä ei piirretä kolmioita lähtien kolmioista, vaan siinä tarkastetaan sitä, mihin säteet osuu.

Lauotaan yksi säde, tarkastetaan kaikista kolmioista, että mihin se osuu, mahdollisesti lauotaan osumakohdasta uusi sekundäärisäde. Sitten lauotaan toinen säde jne.

Jotta voidaan tehdä tarkastus kaikista kolmoista, pitää säteenjäljitystä tekevällä laitteella olla omassa nopeassa muistissaan kaikki kolmiot.

Ei voida jakaa eri laitteiden välillä, että "hoida sinä nämä kolmiot, minä hoidan nämä kolmiot"

Ja BVH-puu on tietorakenne, jolla voidaan optimoida sitä osumatarkastusta niihin kolmioihin. Kolmioita sortataan ja luokitellaan siten, että voidaan sen perusteella hylätä suuri osa kolmioista. Ennalta ei kuitenkaan voida tietää, mitkä kolmioit hylätään, koko BVH-puu ja kolmiodata pitää olla melko nopeassa muistissa (DRAM)

BVH-puu koostuu laatioista, uloimman tason laatikko on niin iso, että sinne mahtuu sisään scenen kaikki kolmiot.

Yksinkertaisessa (*) radix-2-BVH-puussa tämän sisällä on sitten kaksi laatikkoa, molemmat sisältävät (noin) puolet kolmioista. Avaruudellisesti nämä laatikot kuitenkin overläppäävät tosiaan selvästi.

Ja seuraavalla tasolla taas molemmat näistä laatikoista sisältävät 2 laatikkoa, joissa molemmissa (noin) puolet näiden laatikoiden kolmoista.

Lopulta matalimmalla tasolla meillä on laatikoita, joissa on vain 1 tai 2 kolmiota. Sitten niistä tehdään se kolmioiden osumatarkastus.

Jos säde ei osu BVH-puun laatikkoon, se ei voi osua mihinkään laatikossa olevaan kolmioon.

Eli, kun laatikko käsitellään, tarkastetaan sen molemmat lapsilaatikot, että osuuko säe niihin. Ja jos säde osuu lapsilaatikkoon, laitetaan lapsilaatikko jonoon odottamaan käsittelyä. Jos säde ei osu lapsilaatikkoon, se ei voi osua mihinkään siellä olevaan kolmioon ja tarkastettavien kolmioiden määrä putoaa n. puoleen. Ja jos se seuraavalla tasollakaan ei osu toiseen laatikkoon, se putoaa neljäsosaan alkuperäisestä jne.

Toki välillä käy niin, että osutaan molempiin laatikon alilaatikoihin, sitten pitää tarkastaa molemmat.

Yhden (tai kahden) laatikon tai kolmion törmäystarkastus kestää raudalla luokkaa joitain kellojaksoja, (riippuen raudasta), softalla suuruusluokkaa sata kellojaksoa, eli joitain kymmeniä nanosekunteja, karkeasti ottaen samaa suuruusluokkaa kuin DRAM-muistin hakuaika. Ja puun läpikäynti on melko sarjallinen operaatio, lapsilaatikon osoite selviää vasta kun ylemmän tason laatikko on luettu, ja se, tarviiko sitä käsitellä, selviää vasta, kun ylemmän tason laatikko on kokonaan käsitelty. Yhden säteen sisällä rinnakkaisuutta on melko huonosti, lähinnä siellä on rinnakkaisuutta vain
1) kolmen levyisiä geometriavektoreita
2) laatikon molempien lapsilaatikoiden törmäystarkastus voidaan tehdä yhtä aikaa.

Yhden primäärisäteen renderöimiseksi voidaan joutua tekemään karkeasti n. 20 törmäystarkastusta, kokonaisuudessaan aika on siis softalla luokkaa parituhatta kellojaksoa(vajaa mikrosekunti), raudalla selvästi vähemmän.

Jokaista primäärisädettä kohden sitten tosin lauotaan tyypillisesti n. 3-4 sekundäärisädettä, eli puhutaan kokonaisuudessaan luokkaa parista mikrosekunnista, joka menee esim. yhdeltä ytimeltä yhden pikselin rendaamiseen.

Tämä on niin sarjallinen ja nopea operaatio, että tämän sisällä ei ole mitään järkeä yrittää rinnakkaistaa mitään erimerkiksi monilla säikeillä. Koko säde jäljitetään loppuun asti yhdessä säikeessä.

Sen sijaan eri säteitä voidaan laukoa loputtomasti rinnakkain eri säikeissä, myös eri säteiden laskeminen saman ytimen eri SIMD-linjoissa voi kehittyneellä SIMD-käskykannalla olla mahdollista, joskin ei triviaalia. Tällöin kolmiodata ja BVH-puu on kaikille säikeille/säteille yhteistä read-only-dataa.

ELi ruutu voidaan jakaa vaikka tuhansiin tiiliin, joista jokaista tiiltä rendaa eri prosessori, jotka voivat kyllä olla eri tietokoneissa. Kaikkein pitää kuitenkin päästä nopeasti käsiksi siihen BVH-puuhun ja kolmiodataan, eli jos niillä ei ole jaettua muistia, ne pitäisi duplikoida kaikille, ja kun scene muuttuu (eli kun mikä tahansa liikkuu, käytännössä siis joka frame), geometriadata ja päivitetty BVH-puu pitää uudelleen siirtää kaikille muille.

Käytännössä kolmiodata on luonnostaan paikassa, missä itse pelienginekin pyörii. Sen lähettäminen minnekään tahansa muualle kuluttaa aika paljon kaistaa. Jokaista kolmiota kohden 1-3 verteksiä(16-48 tavua) ja esim. joku viite tekstuuriin, sen kordinaatit, sekä pari lukua pinnan ominaisuuksista, niin ollaan helposti 32-64 tavussa per kolmio. Ja BVH-puussa laatikoita on suurinpiirtein sama määrä kuin kolmioita on, siitä luokkaa 32 tavua lisää. Ollaan helposti 64-96 tavussa per kolmio, ja meillä voi kolmioita olla esim. 250000 kpl.

Geometriadatan muistintarve helposti kymmeniä megatavuja. Tätä kun alkaa lähettämään 60 FPSää verkon yli, kaista menee yli gigatavu sekunnissa. Tai siten joka laite generoi uudestaan saman BVH-puun ja ollaan silti sadoissa megatavuissa sekunnisa. Vaikka 90% scenestä olisi staattista, ja lähetettäisiin vain muutokset(ja BVH-puun ylimpänä haarana olisi jako staattisiin ja dynaamisiin) , ollaan silti kymmenissä megatavuissa sekunnissa.

Onnistuu nopeassa lähiverkossa laskentaclusterissa, ei internetin yli.

Käytännössä, jos yritettäisiin hajauttaa ison verkon yli, pitäisi alkaa duplikoida aika paljon koko pelienginestä, että kaikki eri rendaajat osaisivat laskea kaikkien pelin kolmioiden paikat. Ja tässä tehdään entistä enemmän samaa homma monessa paikassa, ja tulee entistä pahempia synkronointiongelmia.

Järkevä/mahdollinen malli on, että samalla palvelinclusterilla pilvessä pyörii sekä pelin verkkopeliserver(jonka takia siellä on se pelienginen data) että säteenjäljitysrendausfarmi, mutta sitten ei enää kannata lähettää sinne pelaajan kotikoneelle/päätelaitteelle mitään rendattavaksi, vaan lähettää asiakkaalle vain valmis kuva.

(*) Tässä esimerkissä siis vielä jätetty tekemättä tuo optimointi, mistä edellisessä viestissäni mainitsin. Se on kuitenkin vain yksi taso lisää puuhun, eikä sinänsä muuta puun toimintaperiaatetta mitenkään. Puu vaan ei ole tasapainossa, tämän tason osalta ei jakaudu puolet ja puolet, jos lisätty tämä ylimäräinen taso staattisen ja dynaamisen geometrian erottelemiseksi.
 
Viimeksi muokattu:

sushukka

Premium-jäsen
Liittynyt
16.04.2017
Viestejä
1 357
Muuten ihan hyvä postaus, mutta tuollainen asevalikko olisi aika helppo toteuttaa selaimen päässä ilman että siitä tulisi raskasta. Ei youtubenkaan hallintanapit tule streamin mukana. ;)

Mutta joo. Ei tuon kohde ole PC master race 2000€ esports pelikoneineen ja 244Hz 4k näyttöineen. Kyllä kohde on ne joilla on esim ps3 tai vastaava ja eivät halua ostaa uutta konsolia. Kuukausimaksullinen paketti jonka saa helposti katkolle kuulostaa oikein hyvältä. Chromecast ei ole vaatimus. Riittää ihan perus läppäri ja hdmi kaapeli.
Stadian kanssa Chromecast on minimi-investointi. Joka jonnella ei ole sitä läppäriä ja jos on, niin sillä läppärilläkin on hintansa, joka on todennäköisesti enemmän kuin tuo Chromecast. Sen läppärin pitää sitten myös pystyä tuuppaamaan 4K-kuvaa ulos ja purkaa korkeabittivirtaista HEVC tai VP9, joka ei onnistu kovin vanhalla raudalla.
Sivujuttuna kävin eilen kirjastossa ja sielläpä oli jäätävä valikoima Xbox360/One- ja PS3/PS4-pelejä lainattavana. Jos olisi konsoli, niin varmaan kävisin pelit lainaamassa tuolta kun ei maksa mitään. Muutaman pelin kun pelaa, niin siinä on koko konsolin hinta jo maksettu pois vs. striimauspalvelut.

Valikon rakentaminen client sidelle ei olisi todellakaan mikään iso homma. Käytännössä Stadiaa varten pitää engineä muutenkin customoida, joten yhden valikon irroittaminen ei olisi mikään iso homma. Mahdollistaisi myös valikon customoinnit käyttäjän toimesta. Noh katsotaan mitä sieltä tulee.
Kyllä se nyt aika iso homma on. On ihan eri asia paketoida peli striimattavaan muotoon ulkoapäin kuin lähteä ronkkimaan sen sisäistä toimintalogiikkaa tai alkaa purkaa sen sisälmyksiä ulos. Juuri sen vähäisen muutostarpeen takia noita pelejä on Stadialla nyt niin monta listallaan. Veikkaan että Googlella on joku melko kevyt itse tehty ohjainrajapinta, joka välittää verkon takana olevan käyttäjän komennot paikalliselle virtuaaliohjaimelle tms. Itse peli ei tajua tuon taivaallista siitä pyöriikö se lokaalisti käyttäjän koneella vai ei. Tuo sanomani asepopup oli vain esimerkki. Peleistä löytyy nyt tuhat muutakin kohtaa, jotka ovat hyvin hankalia videostriimaukselle. Ei Googlella ole mitään mahkuja lähteä kaivamaan pelien sisältä jotain inventaariota, karttaa tms ja tuuppaa niitä jotenkin erillisessä javascript/html5-putkessa käyttäjälle. Toisekseen samat latenssiongelmat ne vaanivat ihan sama mitä tekniikka käytetään. Se asepopu päivittynee myös sen mukaan paljonko on panoksia/energiaa/perunoita, minimappi päivittyy jatkuvasti vihollisen ja omien liikkeiden mukaan. Ei vain toimi. Joku save-load-tapainen voisi olla toteutettavissa monellakin tapaa, mutta sillä ei taas voitettaisi oikein yhtään mitään latenssien tai muutenkaan käyttäjäkokemuksen parantumisena.
 
Liittynyt
14.12.2016
Viestejä
2 768
Kiitos tästä!
Olet useampaa kertaan sanonut, että pilveä ja paikallista ei voi sotkea...
Eli ei siis ole fiksu laske sitä puu osaa pilvessä ja ehkä seuraavaa ja rendata loput gpu:lla? Ilmeisesti tuossakin viiveet olisi se ongelma. Siirrettävää dataahan ei kaiketi olisi samoja määriä kuin rendatun kuvan siirrossa, jota itsekkään pidä järkevänä.
Mutta puhtaana amatöörinä kuvittelisin että datan määrä ei olisi hillitön kahden ensimmäisen vaiheen osalta.
Jos vielä aukaisut tuota niin oppisi wanha taas jotain uutta grafiikan piirron saralta!
Rasteroinnissa piirrettään kolmioita. Otetaan kolmio, piirretään se, otetaan toinen kolmio, piirretään se, jne.

Säteenjäljityksessä ei piirretä kolmioita lähtien kolmioista, vaan siinä tarkastetaan sitä, mihin säteet osuu.

Lauotaan yksi säde, tarkastetaan kaikista kolmioista, että mihin se osuu, mahdollisesti lauotaan osumakohdasta uusi sekundäärisäde. Sitten lauotaan toinen säde jne.

Jotta voidaan tehdä tarkastus kaikista kolmoista, pitää säteenjäljitystä tekevällä laitteella olla omassa nopeassa muistissaan kaikki kolmiot.

Ei voida jakaa eri laitteiden välillä, että "hoida sinä nämä kolmiot, minä hoidan nämä kolmiot"

Ja BVH-puu on tietorakenne, jolla voidaan optimoida sitä osumatarkastusta niihin kolmioihin. Kolmioita sortataan ja luokitellaan siten, että voidaan sen perusteella hylätä suuri osa kolmioista. Ennalta ei kuitenkaan voida tietää, mitkä kolmioit hylätään, koko BVH-puu ja kolmiodata pitää olla melko nopeassa muistissa (DRAM)

BVH-puu koostuu laatioista, uloimman tason laatikko on niin iso, että sinne mahtuu sisään scenen kaikki kolmiot.

Yksinkertaisessa (*) radix-2-BVH-puussa tämän sisällä on sitten kaksi laatikkoa, molemmat sisältävät (noin) puolet kolmioista. Avaruudellisesti nämä laatikot kuitenkin overläppäävät tosiaan selvästi.

Ja seuraavalla tasolla taas molemmat näistä laatikoista sisältävät 2 laatikkoa, joissa molemmissa (noin) puolet näiden laatikoiden kolmoista.

Lopulta matalimmalla tasolla meillä on laatikoita, joissa on vain 1 tai 2 kolmiota. Sitten niistä tehdään se kolmioiden osumatarkastus.

Jos säde ei osu BVH-puun laatikkoon, se ei voi osua mihinkään laatikossa olevaan kolmioon.

Eli, kun laatikko käsitellään, tarkastetaan sen molemmat lapsilaatikot, että osuuko säe niihin. Ja jos säde osuu lapsilaatikkoon, laitetaan lapsilaatikko jonoon odottamaan käsittelyä. Jos säde ei osu lapsilaatikkoon, se ei voi osua mihinkään siellä olevaan kolmioon ja tarkastettavien kolmioiden määrä putoaa n. puoleen. Ja jos se seuraavalla tasollakaan ei osu toiseen laatikkoon, se putoaa neljäsosaan alkuperäisestä jne.

Toki välillä käy niin, että osutaan molempiin laatikon alilaatikoihin, sitten pitää tarkastaa molemmat.

Yhden (tai kahden) laatikon tai kolmion törmäystarkastus kestää raudalla luokkaa joitain kellojaksoja, (riippuen raudasta), softalla suuruusluokkaa sata kellojaksoa, eli joitain kymmeniä nanosekunteja, karkeasti ottaen samaa suuruusluokkaa kuin DRAM-muistin hakuaika. Ja puun läpikäynti on melko sarjallinen operaatio, lapsilaatikon osoite selviää vasta kun ylemmän tason laatikko on luettu, ja se, tarviiko sitä käsitellä, selviää vasta, kun ylemmän tason laatikko on kokonaan käsitelty. Yhden säteen sisällä rinnakkaisuutta on melko huonosti, lähinnä siellä on rinnakkaisuutta vain
1) kolmen levyisiä geometriavektoreita
2) laatikon molempien lapsilaatikoiden törmäystarkastus voidaan tehdä yhtä aikaa.

Yhden primäärisäteen renderöimiseksi voidaan joutua tekemään karkeasti n. 20 törmäystarkastusta, kokonaisuudessaan aika on siis softalla luokkaa parituhatta kellojaksoa(vajaa mikrosekunti), raudalla selvästi vähemmän.

Jokaista primäärisädettä kohden sitten tosin lauotaan tyypillisesti n. 3-4 sekundäärisädettä, eli puhutaan kokonaisuudessaan luokkaa parista mikrosekunnista, joka menee esim. yhdeltä ytimeltä yhden pikselin rendaamiseen.

Tämä on niin sarjallinen ja nopea operaatio, että tämän sisällä ei ole mitään järkeä yrittää rinnakkaistaa mitään erimerkiksi monilla säikeillä. Koko säde jäljitetään loppuun asti yhdessä säikeessä.

Sen sijaan eri säteitä voidaan laukoa loputtomasti rinnakkain eri säikeissä, myös eri säteiden laskeminen saman ytimen eri SIMD-linjoissa voi kehittyneellä SIMD-käskykannalla olla mahdollista, joskin ei triviaalia. Tällöin kolmiodata ja BVH-puu on kaikille säikeille/säteille yhteistä read-only-dataa.

ELi ruutu voidaan jakaa vaikka tuhansiin tiiliin, joista jokaista tiiltä rendaa eri prosessori, jotka voivat kyllä olla eri tietokoneissa. Kaikkein pitää kuitenkin päästä nopeasti käsiksi siihen BVH-puuhun ja kolmiodataan, eli jos niillä ei ole jaettua muistia, ne pitäisi duplikoida kaikille, ja kun scene muuttuu (eli kun mikä tahansa liikkuu, käytännössä siis joka frame), geometriadata ja päivitetty BVH-puu pitää uudelleen siirtää kaikille muille.

Käytännössä kolmiodata on luonnostaan paikassa, missä itse pelienginekin pyörii. Sen lähettäminen minnekään tahansa muualle kuluttaa aika paljon kaistaa. Jokaista kolmiota kohden 1-3 verteksiä(16-48 tavua) ja esim. joku viite tekstuuriin, sen kordinaatit, sekä pari lukua pinnan ominaisuuksista, niin ollaan helposti 32-64 tavussa per kolmio. Ja BVH-puussa laatikoita on suurinpiirtein sama määrä kuin kolmioita on, siitä luokkaa 32 tavua lisää. Ollaan helposti 64-96 tavussa per kolmio, ja meillä voi kolmioita olla esim. 250000 kpl.

Geometriadatan muistintarve helposti kymmeniä megatavuja. Tätä kun alkaa lähettämään 60 FPSää verkon yli, kaista menee yli gigatavu sekunnissa. Tai siten joka laite generoi uudestaan saman BVH-puun ja ollaan silti sadoissa megatavuissa sekunnisa. Vaikka 90% scenestä olisi staattista, ja lähetettäisiin vain muutokset(ja BVH-puun ylimpänä haarana olisi jako staattisiin ja dynaamisiin) , ollaan silti kymmenissä megatavuissa sekunnissa.

Onnistuu nopeassa lähiverkossa laskentaclusterissa, ei internetin yli.

Käytännössä, jos yritettäisiin hajauttaa ison verkon yli, pitäisi alkaa duplikoida aika paljon koko pelienginestä, että kaikki eri rendaajat osaisivat laskea kaikkien pelin kolmioiden paikat. Ja tässä tehdään entistä enemmän samaa homma monessa paikassa, ja tulee entistä pahempia synkronointiongelmia.

Järkevä/mahdollinen malli on, että samalla palvelinclusterilla pilvessä pyörii sekä pelin verkkopeliserver(jonka takia siellä on se pelienginen data) että säteenjäljitysrendausfarmi, mutta sitten ei enää kannata lähettää sinne pelaajan kotikoneelle/päätelaitteelle mitään rendattavaksi, vaan lähettää asiakkaalle vain valmis kuva.

(*) Tässä esimerkissä siis vielä jätetty tekemättä tuo optimointi, mistä edellisessä viestissäni mainitsin. Se on kuitenkin vain yksi taso lisää puuhun, eikä sinänsä muuta puun toimintaperiaatetta mitenkään. Puu vaan ei ole tasapainossa, tämän tason osalta ei jakaudu puolet ja puolet, jos lisätty tämä ylimäräinen taso staattisen ja dynaamisen geometrian erottelemiseksi.
Tuosta selvisi matematiikkaa, joten jep... Selvitti itselle paljon tuota ongelmavyyhteä. Osa tietoteknisestä puolesta meni ohi kun ei ole sen alan terminologia aivoihin iskostettuna mutta matemaattisesta puolesta pääsi kärryille.
Kuvittelin että jotain laskentaa olisi voinut ulkoistaa, mutta koska riippuvan noin paljon toisistaan niin odotteluksi menisi.

Kiitos uudestaan! Mukava lukea näitä taustatietoja. Näihin ei juuri törmää noissa englanninkielisillä sivostoissa. Paria poikkeusta lukuunottamatta.
Suomen Keskustelupalstat ovan usein informatiivisempi kuin valtamedian syventävät artikkelit!
 
Liittynyt
30.03.2018
Viestejä
201
Noilla ajankohdilla nyt ei ole sen kysymyksen kanssa yhtään mitään tekemistä.

No ei tietenkään ole, amd on omien sanojensa mukaan sitoutunut tukemaan raytracing -teknologiaa mutta nähtävästi siellä ei panosteta tähän asiaan. Yritys lupaili viime vuonna kehittää omia ratkaisuja säteenseurannalle mutta aikataulu oli avoin. PC pelaaminen + amd:n 'suunnittelema' pilvipohjainen raytracing kiihdytys kuulostaa mielenkiintoiselta, joskin hieman erikoiselta ratkaisulta. Siellä tietenkin toivotaan että joku muu taho pystyy ratkaisemaan heidän tarvitseman pilvipalvelun kymmenien - satojen millisekuntien viiveet jolloin amd selviäisi tästäkin pienellä budjetilla tai pelkällä kiitoksella.

Onneksi isoin peluri on tukenut microsoftin kehittämää directx raytracing -teknologiaa raudalla jo 9kk ja tämän vuoden puolella pascal korteilla ajuritasolla, ilman tämän(kin) nvidian panostusta tekniikan käyttöönotto jäisi 100varmasti demo asteelle.



 

Kaotik

Banhammer
Ylläpidon jäsen
Liittynyt
14.10.2016
Viestejä
21 518

No ei tietenkään ole, amd on omien sanojensa mukaan sitoutunut tukemaan raytracing -teknologiaa mutta nähtävästi siellä ei panosteta tähän asiaan. Yritys lupaili viime vuonna kehittää omia ratkaisuja säteenseurannalle mutta aikataulu oli avoin. PC pelaaminen + amd:n 'suunnittelema' pilvipohjainen raytracing kiihdytys kuulostaa mielenkiintoiselta, joskin hieman erikoiselta ratkaisulta. Siellä tietenkin toivotaan että joku muu taho pystyy ratkaisemaan heidän tarvitseman pilvipalvelun kymmenien - satojen millisekuntien viiveet jolloin amd selviäisi tästäkin pienellä budjetilla tai pelkällä kiitoksella.

Onneksi isoin peluri on tukenut microsoftin kehittämää directx raytracing -teknologiaa raudalla jo 9kk ja tämän vuoden puolella pascal korteilla ajuritasolla, ilman tämän(kin) nvidian panostusta tekniikan käyttöönotto jäisi 100varmasti demo asteelle.
No kyllä tulee taas sellaista värilasisoopaa, että huhhuh.
Ei se ole ihan yksi tai kaksi teknologiaa mitä joku valmistaja on tuonut markkinoille toista aiemmin. Esimerkiksi tesselaation kiihdytys tuli AMDltä kolmisen vuotta ennen NVIDIAa.

AMD kehittää koko ajan omia RT-ratkaisujaan ja niitä on myös olemassa ja tuettuna tällä hetkelläkin, ne ei vaan ole suunniteltu reaaliaikaiseen pelikäyttöön (reaaliaikaisuus onnistuu kuitenkin)
Se pilvipohjainen kohta erikseen alleviivaa että kyse on täysin säteenseurannalla toteutetuista skeneistä, tuohon tapaan mitä DXR:ää käytetään ajetaan ihan paikallisesti RDNA2-näyttiksistä lähtien
 
Viimeksi muokattu:
Toggle Sidebar

Uusimmat viestit

Statistiikka

Viestiketjut
239 324
Viestejä
4 192 019
Jäsenet
70 723
Uusin jäsen
RSpa76

Hinta.fi

Ylös Bottom