Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , reacties: 26, views: 5.786 •

Imagination Technologies, het bedrijf achter de PowerVR-gpu die in veel mobiele telefoons wordt gebruikt, heeft het bedrijf Caustic overgenomen. Caustic houdt zich vooral bezig met het hardwarematig versnellen van raytracing.

Samsung Hummingbird S5PC110 met PowerVR gpuImagination Technologies wil na de overname van Caustic, die het bedrijf 27 miljoen dollar koste, de technieken van het bedrijf in de PowerVR-hardware gaan implementeren. Caustic heeft momenteel al een insteekkaart voor de pc in zijn assortiment, die raytracingberekeningen met een factor 20 moet kunnen versnellen. Ontwikkelaars kunnen de hardware aanspreken via de speciale CausticGL-api. Deze is gebaseerd op OpenGL ES 2.0, een api die al door veel smartphones wordt ondersteund.

Raytracing is een methode om de belichting in driedimensionale scènes te berekenen. Vanuit het cameraperspectief worden grote hoeveelheden virtuele lichtstralen de ruimte in geschoten, die daarna weerkaatsen op oppervlakken. Hierbij hebben variabelen als kleur en mate van reflectie invloed op het gedrag van de lichtstraal. Met raytracing kan een extreem realistische belichting worden bereikt, wat echter wel veel rekenkracht vereist.

De grafische hardware van PowerVR wordt in een groot aantal mobiele apparaten gebruikt. Zo maakt Apple gebruik van de gpu's voor zijn iOS-hardware en ook Samsung neemt chips bij het bedrijf af voor onder andere de Galaxy S en Galaxy Tab. De nieuwste PowerVR-chips hebben DirectX-ondersteuning en kunnen zelfs in een multi-gpu-opstelling worden gebruikt.

Reacties (26)

Het is op dit moment mogelijk om realtime te raytracen op een PC middels krachtige NVidia hardware, maar dit zie ik niet snel gebeuren op een mobieltje.

Raytracing is ZWAAR, zo simpel als het concept is, zo zwaar is de berekening om het te maken.
Het is wel zwaar maar hardware is al zo super snel dat dat het met mobieltjes echt wel mogelijk was. Ik kan me herinneren dat ik op mijn Amiga 2000 in 1991 soms wel 20 uur aan het raytracen was om een balletjes te laten stuiteren als animatie. Nou dan zijn wel toch wel van ver gekomen :)
Supersnelle hardware helpt je niet voldoende.

Het cruciale punt is hoe realistische je je raytracing wil maken.
Als je alleen maar reflecties op glimmende oppervlakken wilt berekenen en dat 3 reflecties diep, dan is het niet zo erg moeilijk.

Het gaat echter mis als je echt realistische scenes wilt berekenen. Dan moet je reflecties berekenen op matte oppervlakken. (muren, plafonds etc)

Dat betekent dat 1 lichtstraal die een muur raakt in een halve bol in alle richtingen weerkaatst word. Dat wordt dan bv gedaan door voor die ene lichtstraal 16 reflecterende lichtstralen in alle richtingen verspreid te berekenen.
Als je dat vervolgens dan 3x laat reflecteren, dan krijg je voor die ene invallende lichtstraal ineens 16x16x16 extra stralen te berekenen. (4096)
Kijk maar eens naar de volgende link voor extra uitleg en voorbeelden:
http://www.siggraph.org/e.../radiosity/overview_1.htm

Dan mag je hardware wel 10x zo snel zijn geworden, maar dan kom je alsnog ontzettend veel rekenkracht te kort.
Wil je nog 1 reflectie extra, dan krijg je weer een factor 16 extra.
Je hoeft niet zo'n 'brute force' methode te gebruiken hoor. Daar hebben we in 100 jaar nog niet voldoende rekenkracht voor...

Belichting variëert doorgaans niet zo abrupt, dus door slim de richting en het aantal samples te kiezen, en te interpoleren met de resultaten van naburige rays, kan je toch voor het menselijk oog zeer realistische beelden produceren met een fractie van de rekenkracht.
Dat is dan ook precies de reden dat er dan bv maar 16 stralen gebruikt worden voor een halve bol. 16 stralen is al een heel erg klein aantal sampels voor zoiets en dan moet je dus al heel veel interpoleren.
De link die je geeft gaat over radiosity, radiocity is een totaal andere techniek dan raytracing. Wikipedia heeft een goede uitleg van rayracing : http://en.wikipedia.org/w...phics)#Algorithm_overview


Echter, ik denk wel dat het bedrijf Caustic radiocity inbouwt in zijn engine zodat je gemakkelijk andere hoeken binnen een ruimte kun berekenen.
Dit komt omdat radiocity van nature een heatmap kan maken van alle oppervlakten, en deze map kun je direct herbruiken als je een scene vanuit een ander perspectief gebruikt, of je kunt delen uit je vorige scene gebruiken voor je nieuwe scene wat enorm veel processor kracht scheelt.
Radiosity is geen techniek, maar een verschijnsel.
Net zoals schaduw geen techniek is maar een verschijnsel.

Beide verschijnselen kun je berekenen met raytracing.
Het tweede plaatje in mijn link laat al zien daarin raytracing gebruikt word.

Het probleem is dat radiosity (en elke andere vorm van indirecte verlichting) extreem rekenintensief is met raytracing. Maar het is wel cruciaal om een realistische render te krijgen.

Vandaar dat er zoveel onderzoek gedaan word om die verschijnselen op een minder rekenintensieve manier te reproduceren. Minder nauwkeurig maar wel 1000x zo snel en dan vaak goed genoeg voor het doel. (bv zo'n heatmap)
is het niet zo dat je op je beeldscherm toch maar 1920*1200= 2.304.000 beeldpunten hebt en dat je dus theoretisch gezien maar zoveel "stralen" hoeft te tracen?
PowerVR zit qua aantal driehoeken per seconde al rond/boven het niveau van de XBox360 (bijna PS3), en 'krachtige nVidia' is vziw niet op 28nm of kleiner gebakken zoals wat bij dit PowerVR spul de bedoeling is. Verder zijn nVidia desktop-GPU's spul geoptimaliseerd voor prestaties en niet voor laag verbruik. CausticGL moet 20 keer zo snel zijn (door wiskundige optimalisaties) als algorithmen nu. Al met al moet het dus best mogelijk zijn! Maar vermoedelijk eerst op tablets en kleine laptops e.d.

[Reactie gewijzigd door kidde op 16 december 2010 09:55]

Hoeveel impact heeft dit wel niet op de gebruiksduur vraag ik me dan af.
Nu kan raytracing niet gedaan worden op laptops/tablets/phones, dus wordt dat gewoon niet gebruikt.

Met hardware acceleration wel, dus wordt er gebruik van gemaakt, dus heeft het impact op gebruiksduur. Maar hoeveel?
Raytracing is niet zo heel erg zwaar. GPU's zijn gewoonweg heel slecht in divergentie (zowel qua code als qua data).

CPU's zijn daar relatief goed in, maar missen de gather/scatter ondersteuning die GPU's wel hebben. Vroeg of laat zal echter wel gather/scatter toegevoegd worden aan de AVX instructieset. Extra cores helpt natuurlijk ook.

GPU's hebben al veel cores maar die zijn niet onafhankelijk. Het zou veel extra logica vergen om dat te bereiken. Dus de CPU is eigenlijk dichter bij de ideale architectuur voor raytracing dan de GPU...
Dat GPU's niet de ideale architectuur hebben voor raytracing betekent niet ineens dat raytracen zelf niet zo zwaar is. Raytracing is ontzettend zwaar en een voorbeeld daarvan is hierboven al gegeven: mjtdevries in 'nieuws: Maker mobiele PowerVR-chips neemt raytracingbedrijf over'

Er wordt heel veel onderzoek gedaan naar accelleratiestructuren (denk aan octrees, R-trees, enz.) alleen om het process sneller te maken. Deze structuren zijn niet alleen maar om coalesced uit het geheugen te kunnen lezen, maar meer om de complexiteit te verlagen en natuurlijk om zo min mogelijk divergentie te hebben (denk aan warps in CUDA). Maar dat raytracen niet zo heel erg zwaar is, is gewoon onzin.
MultiGPU in GSM's 8)7
Als ik er over denk misschien wel handig als je uiteindelijk een scherm aan je GSM wil/kan hangen.
De mobiele ontwikkeling gaat snel tegenwoordig :)

Voor er iemand gaat zeuren op het feit dat ik het GSM's noem: zo noemen we dat nu eenmaal in BE. :p
Was toch in BE de afkorting van Geen Snoer Meer....
Ware het niet dat "snoer" een "Hollands" woord is. Wij zeggen draad :p
ehm.. dat kan al? er zijn gsm's met beeld kabels (HTC HD serie, Samsung Galaxy S)
Ik hoop dat Samsung snel met een bad-ass opvolger komt van de Omnia 7. Wel met de SGX544MP en Dual-Core. :P
't Is natuurlijk een kwestie van tijd (en marktverzadiging en software-aanbod etc.) dat ook in mobieltjes hele massa's streamprocessoren zitten zoals in de huidige desktop-GPU's. Het is op dit moment op sommige mobieltjes al heel goed mogelijk om 3D te renderen, maar wat mist is nog wat realisme in de vorm van global illumination. Raytracing, radiosity, ambient occlusion zijn voorbeelden van hoe dit gedaan kan worden maar deze technieken hebben heel wat extra rekenkracht nodig.

Zoals ik al zei, een kewstie van afwachten :)
Ray-tracing heeft geen extra rekenkracht nodig.

Intel's Larrabee architectuur haalt met veel moeite 1 TFLOPS aan ruwe rekenkracht, terwijl AMD's GPU tegenwoordig 3 TFLOPS halen, maar Larrabee is tientallen keren sneller in ray-tracing.

Dat komt omdat klassieke GPU-architecturen cores hebben die grotendeels synchroon lopen. Als ze verschillende code moeten uitvoeren of ver uiteenliggende data nodig hebben, gaan de prestaties sterk achteruit. Rasterizatie heeft daar weinig last van, maar ray-tracing is van nature divergent.

Daarom dat de meeste ray-tracing renderfarms nog CPU'ss gebruiken. Om ook GPU's beter geschikt te maken voor ray-tracing zal men CPU-technologie moeten gebruiken, en gaat de relatieve rekenkracht achteruit.

In de toekomst zou de GPU wel eens overbodig kunnen worden. CPUs hebben enkel gather/scatter ondersteuning en nog wat meer cores nodig (zoals Larrabee) om ray-tracing bruikbaar te maken.
verdiepende info over ray tracing.

Als ik het dus goed begrijp is dit gewoon een soort van advanced graphics? Wat in videokaarten gedaan wordt door de shaders?
Neen. Ray-tracing is een volledig andere manier van renderen.

Met klassieke rasterizatie teken je gewoon elk object afzonderlijk. Het werkt dus als het ware in 'laagjes'. Wat verder weg ligt wordt overtekend. Met ray-tracing wordt er per beeldpunt een 'straal' uitgestuurd en wordt berekend welk object dit doorsnijdt. De straal kan dan afkaatsen of afbuigen voor effecten zoals schaduw en refractie. Een beeldpunt wordt dus ook nooit overtekend.

Shaders zijn ontwikkeld om belichtsberekeningen te doen bij rasterizatie. Je kan ze ook wel gebruiken om aan ray-tracing te doen, maar omdat de berekeningen en gebruikte data per beeldpunt enorm kan verschillen is de synchrone parallele architectuur van de GPU daar niet zo geschikt voor.
Je kan het zo zien: aan de ene kant heb je rasterizatie, een nogal brute manier om een boel driehoekjes op elkaar te stapelen en in de diepte te sorteren, zodat het driehoekje dat dichterbij is dan de andere niet achter de andere verdwijnt (z-buffer). Aan de andere kant heb je raytracing, een manier die werkt zoals natuurkundigen het gedrag van licht modelleren (zie c0d1f1ed's uitleg).

Rasterizatie is razendsnel, maar fysisch klopt er niets van. Je hebt bv. niet eens schaduwen. Aan rasterizatie worden steeds trucs toegevoegd om het realistischer te maken. Soms (steeds vaker) wordt er in in shaders geraytracet, omdat bepaalde effecten voor elkaar te krijgen.

Raytracing is traag, maar fysisch zo perfect als je maar wilt gaan. Aan raytracing worden steeds trucs toegevoegd om het sneller te maken. Zoals belichting interpoleren tussen punten waar de belichting nauwelijks verandert, dat scheelt een hoop rekenen.

[Reactie gewijzigd door wintermute. op 16 december 2010 12:25]

Zou dat in houden dat we binnen kort eindelijk ook de PowerVR chips in de PC terug gaan vinden. In middels zijn deze chips zo ver gevorderd dat ze 1080p zonder problemen verwerken, nu raytracing versnelling hebben DirectX ondersteunen en openGL ES (een relatief kleinen stap naar openGL...
Als je kijk naar het energie verbruik van deze chips dan kunnen de AMD en Nvidia chips daar nog een puntje aan zuigen, en voor veel zeker huis tuin en keuken oplossingen is het helemaal niet erg als ze niet de laatste black ops in 1920x1080 vloeiend kunnen draaien met alle toeters en bellen op max.

Ik zie het wel zitten bijvoorbeeld voor een netbook oplossing waarbij je gewoon een chipje er in hebt zitten dat netjes 1080p weergeeft en voor de rest zich niet verslikt in de Flash content etc... en ondertussen maar een paar watt verstookt als het ding echt 100% belast is. Prik er een ARM dual of binnen kort quad core naast en niemand die meer een Intel chip nodig heeft in zo'n ding. Dat windows er niet op draait ach dat maakt helemaal niets uit met android op het ding of misschien MeeGo mocht dat ooit nog eens echt iets worden kunnen de meeste mensen ook goed uit de voeten.
In middels zijn deze chips zo ver gevorderd dat ze 1080p zonder problemen verwerken...
Video is een heel ander verhaal dan rendering. De benodigde bandbreedte is vele malen kleiner en de logica hoeft slechts één functie te vervullen (dus geen programmeerbare cores nodig).
Als je kijk naar het energie verbruik van deze chips dan kunnen de AMD en Nvidia chips daar nog een puntje aan zuigen...
Dat geloof je toch zelf niet?

De prestaties verdubbelen vergt meer dan het dubbele aan verbruik. IMG kan dus niet zomaar z'n architectuur opschalen en NVIDIA's of AMD's GPUs verslaan bij gelijk of lager stroomverbruik.

NVIDIA heeft trouwens zelf ook chips voor in mobiele telefoons, die heel erg zuinig zijn.
Heel gaaf, raytracing blijft enorm potentieel hebben.
Als je kijkt naar Real-Time Raytracing Engines zoals Arauna (van Hollandse bodem!) is het duidelijk dat dit echt toekomst heeft. Nu is het wachten tot de hardware het aankan. Hopen dus dat dit een stap in de goede richting is.

Ik vraag me wel af wat ATI en NVIDIA gaan doen, sinds raytracing een GPU vrijwel overbodig maakt. Krijgen we straks videokaart assassinations.
Ik vraag me wel af wat ATI en NVIDIA gaan doen, sinds raytracing een GPU vrijwel overbodig maakt. Krijgen we straks videokaart assassinations.
Hoewel GPUs inderdaad momenteel niet zo geschikt zijn voor ray-tracing, valt sterk te betwijfelen of dat hun doodsteek betekent: http://www.beyond3d.com/content/articles/94

Echter krijgt de CPU wel steeds meer rekenkracht (via multi-core, AVX, FMA en gather/scatter) zodat de GPU ook voor rasterizatie er concurrentie bij krijgt. Binnen enkele jaren zal wellicht de taak van de IGP door de CPU zelf vervuld worden.

Op dit item kan niet meer gereageerd worden.