Šta je novo?

Rasterizacija ili raytracing

audiofreak

Banned
Banovan
Učlanjen(a)
21.07.2003
Poruke
3,894
Poena
410
Nedavno se na Intelovom blogu pisalo o real-time raytracingu kao o "ubici" rasterizacije:
Link

Medjutim, mnogi su izneli suprotna misljenja u komentarima, pa cak i drugi covek iz Intela ciji komentar su objavili kao novi article:
Link

Ovo ce pre svega biti zanimljivo Jugoslavu, a mene zanima sta on misli o svemu tome. Molim ostale da se uzdrze od (zajedljivih?) komentara posebno ukoliko nisu upuceni u tematiku.
 
Ja sam poceo sa ray-tracingom... ali ne u realnom vremenu.. pa smo napravili da radi u realnom vremenu u 320x200 sa 5-6 sarenih lopti... Onda sam kupio Voodoo2 i presao na Glide 🙂

Raytracing je samo "drugaciji pogled" na 3d scenu. Zbog nacina kako radi RT, u poredjenju sa rasterizacijom neki problemi su trivijalni (senke, refleksije i refrakcije) ali se javljaju drugi problemi. Nekakav hibrid izmedju rasterizacije i RT-a bi sada super dosao.

RT radi tako so se kroz svaki pixel na ekranu ispaljuje zrak i trazi se najbliza povrsina koju je pogodio. Ako u sceni ima mnogo objekata i poligona provaravanje svih trouglova po pixelu je izuzetni skup proces. Neke optimizacije (oct-tree), BSP i sl mogu doneti znacajno ubrzanje. Medjutim.. najbrze bi bilo kada bi se klasicnim rasterizatorom popunio ekran sa korektnim informacijama pa u sledecem prolazu za svaki pixel sumirati uticaj svetla i senki. Za sada ovaj pristup najvise lici deferred renderingu.

Drugi prolaz je sakupljanje boja iz svih izvora svetla. Medjutim treba voditi racuna o senkama, tako da je opet potrebno sa povrsine objekta ispaliti po 1 zrak ka svakom izvoru svetla i proveriti da li neki drugi objekat zaklanja svetlo. Ovo je izuzetno skup korak jer se sa povecanje broja izvora svetla povecava i broj provera. Opet... koriscenjem oct-tree ili neceg slicnog moguce je dobiti ubrzanje.

Ovaj prolaz bi se mogao uraditi ponovo sa rasterizatorom i nekom "fish-eye" kamerom... prvo se iscrtaju izvori svetla (kao kruzne "tufne") pa se preko crta ambient bojom svi objekti. Rezultat se downsempluje na 1x1 pixel i rezultujuca boja je zbir svih uticaja svetla i senki. Ovaj korak se moze raditi u veoma maloj rezoluciji 16x16 ili 32x32 pix.

Treci prolaz je refleksija ili refrakcija i radi se kao i prvi korak... Refleksija i refrakcija nema puno u realnom zivotu tako da ovaj korak ne bi bio veliko opterecenje.

RT je danas moguce raditi na GPU ali je API (OpenGL i D3D) los i trebalo bi napraviti neki API koji bi bio laksi za rad.

Problem RT-a je veliki broj ispitivanja i pretrazivanja sto nikako ne lezi danasnjim GPU-ovima. CPU bi to mogao da uradi ali nije dovoljno paarlelizovan. Kada bi svaki SP u G80 bio kao jedan x86 proc i kada bi se napravila virtuelizacija VRAM-a, onda bi se RT mogao veoma lako implementirati i bio bi dosta brz.

http://www.beyond3d.com/content/articles/94
http://forum.beyond3d.com/showthread.php?t=44850
 
Poslednja izmena:
U sustini RT je trenutno previse zahtevan u odnosu na sliku koju daje SL/Raster uz dodatne trikove. A zahtevnost bi samo rasla sa detaljima u sceni...
 
Znaci koliko ja razumem najbolje ce biti neki hibrid raytracinga i rasterizacije?
Ako je tako onda ce Intel mozda biti u prednosti sa Larrabee i Nehalemom?
 
Mislim da je tesko govoriti o prednosti koju ostvaruje hardversko resenje u softveru koji jos nije napisan 🙂

Sigurno da ce procesorska snaga u novim Intel proizvodima omoguciti realisticniju CG grafiku, ali ne verujem da ce to biti bas realtime RayTracing.
 
Poslednja izmena:
Potpuno sam zaboravio na KYRO...
http://en.wikipedia.org/wiki/PowerVR

Ovaj GPU je koristio deferred rendering i neku vrstu ray-tracinga.
Definitivno je pristup Kyrovih dizajnera (PowerVR) bio dalekovid, mada je s danasnjega spekta realizacija na nivou parne masine u odnosu na "nuklearne podmornice" od modernih GPU-ova.

Kyro je bio Tile Based Deferred Rendere zbog: "As the polygon generating program feeds triangles to the PowerVR driver it stores them in memory in triangle strip format. Unlike other architectures, polygon rendering is not performed until all polygon information has been collated for the current frame – hence rendering is deferred

A evo na najjednostavnije objasnjenje sta je Deferred Shading:

"The main idea behind deferred shading is that you initially fill a set of buffers with common data, such as diffuse texture, normals and various material properties. Then for the lighting you just render the light extents and fetch data from these buffers for the lighting computation. The main advantage of this technique is that it decouples lighting from the geometry. In regular forward rendering you have to resubmit all the geometry that's within the light radius to add another light. This might include changing a lot of states and shaders and issuing numerous draw calls. With deferred shading only a single call is neccesary, in fact, you can apply several lights with a single draw call. This makes it scale much better than forward rendering when the number of lights increases. On the downside, it typically consumes more memory, bandwidth and shader instructions than forward rendering."


ovo kaze cuveni Humus, a sve povodom njegovog najnovijeg demoa na temu Deferred Shadinga:

http://www.humus.ca/index.php?page=3D

Evo sta on kaze za ovaj mali, ali mocan demo:
"This demo takes deferred shading to the extreme. A particle system in generated entirely on the GPU and spews loads of particles in all directions, and every particle is a light source. Hence in this demo there are 1024 light sources active at once. Yet, the performance is in the order of hundreds of frames per second.

The geometry shader is used in this demo to compute the light bounding boxes and each visible light is drawn as a rectangle in clip-space. Note that the extents in z direction is computed as well. This allows the pixel shader to skip computations where the stored depth value is not in range. This eliminates a lot of unlit pixels.
"

Svima sa Vistom i HD2---, odnosno GF8--- karticama preporucujem da skinu i pogledaju ovaj demo!

Definitno se slazem da je resenje ka kome se tezi kako bi se podigao nivo real time kompjuterske grafike negde na pola puta, a kako stvari stoje Deferred Shading je jedna od mogucih stanica na tom putu.

ovo je takodje slikovit primer o pronalazenju "koncenzusa" zimedju dve suprotstavljene tehnologije:

http://www.hardspell.com/english/doc/showcont.asp?news_id=479

isto to, ali u pokretu:

http://www.youtube.com/watch?v=MPAExcS80NI
 
Odlican materijal.

Bilo bi zanimljivo kad bi se recimo u igrama koristio raytracing za refleksije i refrakcije (voda, staklo, metal, plastika, itd), a rasterizacija za sve ostalo.
 
Nazad
Vrh Dno